mirror of
https://github.com/LostArtefacts/TRX.git
synced 2025-04-28 12:47:58 +03:00
game-strings: improve object naming layout
This commit is contained in:
parent
4184b9a688
commit
f7a21610ad
23 changed files with 1444 additions and 1402 deletions
|
@ -1,8 +1,6 @@
|
|||
{
|
||||
// NOTE: bad changes to this file may result in crashes.
|
||||
// Lines starting with double slashes are comments and are ignored.
|
||||
// Refer to https://github.com/LostArtefacts/TRX/blob/stable/docs/tr1/GAMEFLOW.md
|
||||
// for usage.
|
||||
// For usage, refer to the documentation here:
|
||||
// https://github.com/LostArtefacts/TRX/blob/stable/docs/GAME_STRINGS.md
|
||||
|
||||
"levels": [
|
||||
// Level 0: Lara's Home
|
||||
|
@ -13,16 +11,16 @@
|
|||
|
||||
// Level 2: City of Vilcabamba
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Silver Key",
|
||||
"INV_ITEM_PUZZLE_1": "Gold Idol"
|
||||
"objects": {
|
||||
"key_1": {"name": "Silver Key"},
|
||||
"puzzle_1": {"name": "Gold Idol"},
|
||||
},
|
||||
},
|
||||
|
||||
// Level 3: Lost Valley
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_PUZZLE_1": "Machine Cog"
|
||||
"objects": {
|
||||
"puzzle_1": {"name": "Machine Cog"},
|
||||
},
|
||||
},
|
||||
|
||||
|
@ -31,78 +29,78 @@
|
|||
|
||||
// Level 5: St. Francis' Folly
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Neptune Key",
|
||||
"INV_ITEM_KEY_2": "Atlas Key",
|
||||
"INV_ITEM_KEY_3": "Damocles Key",
|
||||
"INV_ITEM_KEY_4": "Thor Key"
|
||||
"objects": {
|
||||
"key_1": {"name": "Neptune Key"},
|
||||
"key_2": {"name": "Atlas Key"},
|
||||
"key_3": {"name": "Damocles Key"},
|
||||
"key_4": {"name": "Thor Key"},
|
||||
},
|
||||
},
|
||||
|
||||
// Level 6: Colosseum
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Rusty Key"
|
||||
"objects": {
|
||||
"key_1": {"name": "Rusty Key"},
|
||||
},
|
||||
},
|
||||
|
||||
// Level 7: Palace Midas
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_PUZZLE_1": "Gold Bar"
|
||||
"objects": {
|
||||
"puzzle_1": {"name": "Gold Bar"},
|
||||
},
|
||||
},
|
||||
|
||||
// Level 8: The Cistern
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Gold Key",
|
||||
"INV_ITEM_KEY_2": "Silver Key",
|
||||
"INV_ITEM_KEY_3": "Rusty Key"
|
||||
"objects": {
|
||||
"key_1": {"name": "Gold Key"},
|
||||
"key_2": {"name": "Silver Key"},
|
||||
"key_3": {"name": "Rusty Key"},
|
||||
},
|
||||
},
|
||||
|
||||
// Level 9: Tomb of Tihocan
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Gold Key",
|
||||
"INV_ITEM_KEY_2": "Rusty Key",
|
||||
"INV_ITEM_KEY_3": "Rusty Key"
|
||||
"objects": {
|
||||
"key_1": {"name": "Gold Key"},
|
||||
"key_2": {"name": "Rusty Key"},
|
||||
"key_3": {"name": "Rusty Key"},
|
||||
},
|
||||
},
|
||||
|
||||
// Level 10: City of Khamoon
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Sapphire Key"
|
||||
"objects": {
|
||||
"key_1": {"name": "Sapphire Key"},
|
||||
},
|
||||
},
|
||||
|
||||
// Level 11: Obelisk of Khamoon
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Sapphire Key",
|
||||
"INV_ITEM_PUZZLE_1": "Eye of Horus",
|
||||
"INV_ITEM_PUZZLE_2": "Scarab",
|
||||
"INV_ITEM_PUZZLE_3": "Seal of Anubis",
|
||||
"INV_ITEM_PUZZLE_4": "Ankh"
|
||||
"objects": {
|
||||
"key_1": {"name": "Sapphire Key"},
|
||||
"puzzle_1": {"name": "Eye of Horus"},
|
||||
"puzzle_2": {"name": "Scarab"},
|
||||
"puzzle_3": {"name": "Seal of Anubis"},
|
||||
"puzzle_4": {"name": "Ankh"},
|
||||
},
|
||||
},
|
||||
|
||||
// Level 12: Sanctuary of the Scion
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Gold Key",
|
||||
"INV_ITEM_PUZZLE_1": "Ankh",
|
||||
"INV_ITEM_PUZZLE_2": "Scarab"
|
||||
"objects": {
|
||||
"key_1": {"name": "Gold Key"},
|
||||
"puzzle_1": {"name": "Ankh"},
|
||||
"puzzle_2": {"name": "Scarab"},
|
||||
},
|
||||
},
|
||||
|
||||
// Level 13: Natla's Mines
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_PUZZLE_1": "Fuse",
|
||||
"INV_ITEM_PUZZLE_2": "Pyramid Key"
|
||||
"objects": {
|
||||
"puzzle_1": {"name": "Fuse"},
|
||||
"puzzle_2": {"name": "Pyramid Key"},
|
||||
},
|
||||
},
|
||||
|
||||
|
@ -131,143 +129,172 @@
|
|||
{},
|
||||
],
|
||||
|
||||
"object_names": {
|
||||
"O_LARA": "Lara",
|
||||
"O_PISTOL_ANIM": "Pistols Animation",
|
||||
"O_SHOTGUN_ANIM": "Shotgun Animation",
|
||||
"O_MAGNUM_ANIM": "Magnums Animation",
|
||||
"O_UZI_ANIM": "Uzis Animation",
|
||||
"O_LARA_EXTRA": "Lara's Extra Animation",
|
||||
"O_BACON_LARA": "Bacon Lara",
|
||||
"O_WOLF": "Wolf",
|
||||
"O_BEAR": "Bear",
|
||||
"O_BAT": "Bat",
|
||||
"O_CROCODILE": "Crocodile",
|
||||
"O_ALLIGATOR": "Alligator",
|
||||
"O_LION": "Lion",
|
||||
"O_LIONESS": "Lioness",
|
||||
"O_PUMA": "Puma",
|
||||
"O_APE": "Ape",
|
||||
"O_RAT": "Rat",
|
||||
"O_VOLE": "Vole",
|
||||
"O_TREX": "T-Rex",
|
||||
"O_RAPTOR": "Raptor",
|
||||
"O_WARRIOR_1": "Mutant 1",
|
||||
"O_WARRIOR_2": "Mutant 2",
|
||||
"O_WARRIOR_3": "Mutant 3",
|
||||
"O_CENTAUR": "Centaur",
|
||||
"O_MUMMY": "Mummy",
|
||||
"O_DINO_WARRIOR": "Dino Mutant",
|
||||
"O_FISH": "Mutant Fish",
|
||||
"O_LARSON": "Larson",
|
||||
"O_PIERRE": "Pierre",
|
||||
"O_SKATEBOARD": "Skateboard",
|
||||
"O_SKATEKID": "Skate Kid",
|
||||
"O_COWBOY": "Cowboy",
|
||||
"O_BALDY": "Baldy",
|
||||
"O_NATLA": "Natla",
|
||||
"O_TORSO": "Torso",
|
||||
"O_FALLING_BLOCK": "Falling Block",
|
||||
"O_PENDULUM": "Pendulum",
|
||||
"O_SPIKES": "Spikes",
|
||||
"O_ROLLING_BALL": "Boulder",
|
||||
"O_DART": "Dart",
|
||||
"O_DART_EMITTER": "Dart Emitter",
|
||||
"O_DRAWBRIDGE": "Drawbridge",
|
||||
"O_TEETH_TRAP": "Teeth Trap",
|
||||
"O_DAMOCLES_SWORD": "Damocles Sword",
|
||||
"O_THORS_HANDLE": "Thor's Hammer Handle",
|
||||
"O_THORS_HEAD": "Thor's Hammer",
|
||||
"O_LIGHTNING_EMITTER": "Lightning Emitter",
|
||||
"O_MOVING_BAR": "Moving Bar",
|
||||
"O_MOVABLE_BLOCK_1": "Push Block 1",
|
||||
"O_MOVABLE_BLOCK_2": "Push Block 2",
|
||||
"O_MOVABLE_BLOCK_3": "Push Block 3",
|
||||
"O_MOVABLE_BLOCK_4": "Push Block 4",
|
||||
"O_SLIDING_PILLAR": "Sliding Pillar",
|
||||
"O_FALLING_CEILING_1": "Falling Ceiling 1",
|
||||
"O_FALLING_CEILING_2": "Falling Ceiling 2",
|
||||
"O_SWITCH_TYPE_1": "Switch 1",
|
||||
"O_SWITCH_TYPE_2": "Switch 2",
|
||||
"O_DOOR_TYPE_1": "Door 1",
|
||||
"O_DOOR_TYPE_2": "Door 2",
|
||||
"O_DOOR_TYPE_3": "Door 3",
|
||||
"O_DOOR_TYPE_4": "Door 4",
|
||||
"O_DOOR_TYPE_5": "Door 5",
|
||||
"O_DOOR_TYPE_6": "Door 6",
|
||||
"O_DOOR_TYPE_7": "Door 7",
|
||||
"O_DOOR_TYPE_8": "Door 8",
|
||||
"O_TRAPDOOR_1": "Trapdoor 1",
|
||||
"O_TRAPDOOR_2": "Trapdoor 2",
|
||||
"O_BIGTRAPDOOR": "Big Trapdoor",
|
||||
"O_BRIDGE_FLAT": "Bridge Flat",
|
||||
"O_BRIDGE_TILT_1": "Bridge Tilt 1",
|
||||
"O_BRIDGE_TILT_2": "Bridge Tilt 2",
|
||||
"O_COG_1": "Cog 1",
|
||||
"O_COG_2": "Cog 2",
|
||||
"O_COG_3": "Cog 3",
|
||||
"O_PLAYER_1": "Cutscene Actor 1",
|
||||
"O_PLAYER_2": "Cutscene Actor 2",
|
||||
"O_PLAYER_3": "Cutscene Actor 3",
|
||||
"O_PLAYER_4": "Cutscene Actor 4",
|
||||
"O_MAP_CLOSED": "Map Closed",
|
||||
"O_SAVEGAME_ITEM": "Savegame Crystal",
|
||||
"O_GAMMA_OPTION": "Gamma",
|
||||
"O_PUZZLE_HOLE_1": "Puzzle Hole 1 (Empty)",
|
||||
"O_PUZZLE_HOLE_2": "Puzzle Hole 2 (Empty)",
|
||||
"O_PUZZLE_HOLE_3": "Puzzle Hole 3 (Empty)",
|
||||
"O_PUZZLE_HOLE_4": "Puzzle Hole 4 (Empty)",
|
||||
"O_PUZZLE_DONE_1": "Puzzle Hole 1 (Done)",
|
||||
"O_PUZZLE_DONE_2": "Puzzle Hole 2 (Done)",
|
||||
"O_PUZZLE_DONE_3": "Puzzle Hole 3 (Done)",
|
||||
"O_PUZZLE_DONE_4": "Puzzle Hole 4 (Done)",
|
||||
"O_MIDAS_TOUCH": "Midas Hand",
|
||||
"O_KEY_HOLE_1": "Keyhole 1",
|
||||
"O_KEY_HOLE_2": "Keyhole 1",
|
||||
"O_KEY_HOLE_3": "Keyhole 1",
|
||||
"O_KEY_HOLE_4": "Keyhole 1",
|
||||
"O_SCION_HOLDER": "Scion Holder",
|
||||
"O_EXPLOSION_1": "Explosion 1",
|
||||
"O_EXPLOSION_2": "Explosion 2",
|
||||
"O_SPLASH_1": "Splash 1",
|
||||
"O_SPLASH_2": "Splash 2",
|
||||
"O_BUBBLES_1": "Bubbles 1",
|
||||
"O_BUBBLES_2": "Bubbles 2",
|
||||
"O_BUBBLE_EMITTER": "Bubbles Emitter",
|
||||
"O_BLOOD_1": "Blood 1",
|
||||
"O_BLOOD_2": "Blood 2",
|
||||
"O_DART_EFFECT": "Dart Effect",
|
||||
"O_STATUE": "Statue",
|
||||
"O_PORTACABIN": "Portable Cabin",
|
||||
"O_PODS": "Pod",
|
||||
"O_RICOCHET_1": "Ricochet",
|
||||
"O_TWINKLE": "Sparkles",
|
||||
"O_GUN_FLASH": "Gun Flash",
|
||||
"O_DUST": "Dust",
|
||||
"O_BODY_PART": "Body Part",
|
||||
"O_CAMERA_TARGET": "Camera Target",
|
||||
"O_WATERFALL": "Waterfall Mist",
|
||||
"O_MISSILE_1": "Missile 1",
|
||||
"O_MISSILE_2": "Missile 2",
|
||||
"O_MISSILE_3": "Missile 3",
|
||||
"O_MISSILE_4": "Missile 4",
|
||||
"O_MISSILE_5": "Missile 5",
|
||||
"O_EMBER": "Ember",
|
||||
"O_EMBER_EMITTER": "Ember Emitter",
|
||||
"O_FLAME": "Flame",
|
||||
"O_FLAME_EMITTER": "Flame Emitter",
|
||||
"O_LAVA_WEDGE": "Lava Wedge",
|
||||
"O_BIG_POD": "Big Pod",
|
||||
"O_BOAT": "Boat",
|
||||
"O_EARTHQUAKE": "Earthquake",
|
||||
"O_SKYBOX": "Skybox",
|
||||
"O_PICKUP_AID": "Pickup Aid",
|
||||
"O_TEMP_7": "Temp 7",
|
||||
"O_TEMP_8": "Temp 8",
|
||||
"O_TEMP_9": "Temp 9",
|
||||
"O_TEMP_10": "Temp 10",
|
||||
"O_HAIR": "Lara's Braid",
|
||||
"O_ALPHABET": "Alphabet",
|
||||
"objects": {
|
||||
"small_medipack": {"name": "Small Medi Pack"},
|
||||
"large_medipack": {"name": "Large Medi Pack"},
|
||||
"pistols": {"name": "Pistols"},
|
||||
"shotgun": {"name": "Shotgun"},
|
||||
"magnums": {"name": "Magnums"},
|
||||
"uzis": {"name": "Uzis"},
|
||||
"pistol_ammo": {"name": "Pistol Clips"},
|
||||
"shotgun_ammo": {"name": "Shotgun Shells"},
|
||||
"magnums_ammo": {"name": "Magnum Clips"},
|
||||
"uzis_ammo": {"name": "Uzi Clips"},
|
||||
"grenade": {"name": "Grenade"},
|
||||
"key_1": {"name": "Key 1"},
|
||||
"key_2": {"name": "Key 2"},
|
||||
"key_3": {"name": "Key 3"},
|
||||
"key_4": {"name": "Key 4"},
|
||||
"puzzle_1": {"name": "Puzzle Item 1"},
|
||||
"puzzle_2": {"name": "Puzzle Item 2"},
|
||||
"puzzle_3": {"name": "Puzzle Item 3"},
|
||||
"puzzle_4": {"name": "Puzzle Item 4"},
|
||||
"pickup_1": {"name": "Pickup Item 1"},
|
||||
"pickup_2": {"name": "Pickup Item 2"},
|
||||
"lead_bar": {"name": "Lead Bar"},
|
||||
"scion": {"name": "Scion"},
|
||||
"compass": {"name": "Compass"},
|
||||
"passport": {"name": "Game"},
|
||||
"photo": {"name": "Lara's Home"},
|
||||
"graphics": {"name": "Detail Levels"},
|
||||
"controls": {"name": "Controls"},
|
||||
"sound": {"name": "Sound"},
|
||||
"gamma": {"name": "Gamma"},
|
||||
"map": {"name": "Map"},
|
||||
"lara": {"name": "Lara"},
|
||||
"pistol_anim": {"name": "Pistols Animation"},
|
||||
"shotgun_anim": {"name": "Shotgun Animation"},
|
||||
"magnum_anim": {"name": "Magnums Animation"},
|
||||
"uzi_anim": {"name": "Uzis Animation"},
|
||||
"lara_extra": {"name": "Lara's Extra Animation"},
|
||||
"bacon_lara": {"name": "Bacon Lara"},
|
||||
"wolf": {"name": "Wolf"},
|
||||
"bear": {"name": "Bear"},
|
||||
"bat": {"name": "Bat"},
|
||||
"crocodile": {"name": "Crocodile"},
|
||||
"alligator": {"name": "Alligator"},
|
||||
"lion": {"name": "Lion"},
|
||||
"lioness": {"name": "Lioness"},
|
||||
"puma": {"name": "Puma"},
|
||||
"ape": {"name": "Ape"},
|
||||
"rat": {"name": "Rat"},
|
||||
"vole": {"name": "Vole"},
|
||||
"trex": {"name": "T-Rex"},
|
||||
"raptor": {"name": "Raptor"},
|
||||
"mutant_1": {"name": "Mutant 1"},
|
||||
"mutant_2": {"name": "Mutant 2"},
|
||||
"mutant_3": {"name": "Mutant 3"},
|
||||
"centaur": {"name": "Centaur"},
|
||||
"mummy": {"name": "Mummy"},
|
||||
"dino_mutant": {"name": "Dino Mutant"},
|
||||
"fish_mutant": {"name": "Mutant Fish"},
|
||||
"larson": {"name": "Larson"},
|
||||
"pierre": {"name": "Pierre"},
|
||||
"skateboard": {"name": "Skateboard"},
|
||||
"skate_kid": {"name": "Skate Kid"},
|
||||
"cowboy": {"name": "Cowboy"},
|
||||
"baldy": {"name": "Baldy"},
|
||||
"natla": {"name": "Natla"},
|
||||
"torso": {"name": "Torso"},
|
||||
"falling_block": {"name": "Falling Block"},
|
||||
"pendulum": {"name": "Pendulum"},
|
||||
"spikes": {"name": "Spikes"},
|
||||
"rolling_ball": {"name": "Boulder"},
|
||||
"dart": {"name": "Dart"},
|
||||
"dart_emitter": {"name": "Dart Emitter"},
|
||||
"drawbridge": {"name": "Drawbridge"},
|
||||
"teeth_trap": {"name": "Teeth Trap"},
|
||||
"damocles_sword": {"name": "Damocles Sword"},
|
||||
"thors_handle": {"name": "Thor's Hammer Handle"},
|
||||
"thors_head": {"name": "Thor's Hammer"},
|
||||
"lightning_emitter": {"name": "Lightning Emitter"},
|
||||
"moving_bar": {"name": "Moving Bar"},
|
||||
"movable_block_1": {"name": "Push Block 1"},
|
||||
"movable_block_2": {"name": "Push Block 2"},
|
||||
"movable_block_3": {"name": "Push Block 3"},
|
||||
"movable_block_4": {"name": "Push Block 4"},
|
||||
"sliding_pillar": {"name": "Sliding Pillar"},
|
||||
"falling_ceiling_1": {"name": "Falling Ceiling 1"},
|
||||
"falling_ceiling_2": {"name": "Falling Ceiling 2"},
|
||||
"switch_1": {"name": "Switch 1"},
|
||||
"switch_2": {"name": "Switch 2"},
|
||||
"door_1": {"name": "Door 1"},
|
||||
"door_2": {"name": "Door 2"},
|
||||
"door_3": {"name": "Door 3"},
|
||||
"door_4": {"name": "Door 4"},
|
||||
"door_5": {"name": "Door 5"},
|
||||
"door_6": {"name": "Door 6"},
|
||||
"door_7": {"name": "Door 7"},
|
||||
"door_8": {"name": "Door 8"},
|
||||
"trapdoor_1": {"name": "Trapdoor 1"},
|
||||
"trapdoor_2": {"name": "Trapdoor 2"},
|
||||
"big_trapdoor": {"name": "Big Trapdoor"},
|
||||
"bridge_flat": {"name": "Bridge Flat"},
|
||||
"bridge_tilt_1": {"name": "Bridge Tilt 1"},
|
||||
"bridge_tilt_2": {"name": "Bridge Tilt 2"},
|
||||
"cog_1": {"name": "Cog 1"},
|
||||
"cog_2": {"name": "Cog 2"},
|
||||
"cog_3": {"name": "Cog 3"},
|
||||
"player_1": {"name": "Cutscene Actor 1"},
|
||||
"player_2": {"name": "Cutscene Actor 2"},
|
||||
"player_3": {"name": "Cutscene Actor 3"},
|
||||
"player_4": {"name": "Cutscene Actor 4"},
|
||||
"save_crystal": {"name": "Savegame Crystal"},
|
||||
"puzzle_hole_1": {"name": "Puzzle Hole 1 (Empty)"},
|
||||
"puzzle_hole_2": {"name": "Puzzle Hole 2 (Empty)"},
|
||||
"puzzle_hole_3": {"name": "Puzzle Hole 3 (Empty)"},
|
||||
"puzzle_hole_4": {"name": "Puzzle Hole 4 (Empty)"},
|
||||
"puzzle_done_1": {"name": "Puzzle Hole 1 (Done)"},
|
||||
"puzzle_done_2": {"name": "Puzzle Hole 2 (Done)"},
|
||||
"puzzle_done_3": {"name": "Puzzle Hole 3 (Done)"},
|
||||
"puzzle_done_4": {"name": "Puzzle Hole 4 (Done)"},
|
||||
"midas_touch": {"name": "Midas Hand"},
|
||||
"key_hole_1": {"name": "Keyhole 1"},
|
||||
"key_hole_2": {"name": "Keyhole 1"},
|
||||
"key_hole_3": {"name": "Keyhole 1"},
|
||||
"key_hole_4": {"name": "Keyhole 1"},
|
||||
"scion_holder": {"name": "Scion Holder"},
|
||||
"explosion_1": {"name": "Explosion 1"},
|
||||
"explosion_2": {"name": "Explosion 2"},
|
||||
"splash_1": {"name": "Splash 1"},
|
||||
"splash_2": {"name": "Splash 2"},
|
||||
"bubbles_1": {"name": "Bubbles 1"},
|
||||
"bubbles_2": {"name": "Bubbles 2"},
|
||||
"bubble_emitter": {"name": "Bubbles Emitter"},
|
||||
"blood_1": {"name": "Blood 1"},
|
||||
"blood_2": {"name": "Blood 2"},
|
||||
"dart_effect": {"name": "Dart Effect"},
|
||||
"statue": {"name": "Statue"},
|
||||
"portacabin": {"name": "Portable Cabin"},
|
||||
"pods": {"name": "Pod"},
|
||||
"ricochet_1": {"name": "Ricochet"},
|
||||
"twinkle": {"name": "Sparkles"},
|
||||
"gun_flash": {"name": "Gun Flash"},
|
||||
"dust": {"name": "Dust"},
|
||||
"body_part": {"name": "Body Part"},
|
||||
"camera_target": {"name": "Camera Target"},
|
||||
"waterfall": {"name": "Waterfall Mist"},
|
||||
"missile_1": {"name": "Missile 1"},
|
||||
"missile_2": {"name": "Missile 2"},
|
||||
"missile_3": {"name": "Missile 3"},
|
||||
"missile_4": {"name": "Missile 4"},
|
||||
"missile_5": {"name": "Missile 5"},
|
||||
"ember": {"name": "Ember"},
|
||||
"ember_emitter": {"name": "Ember Emitter"},
|
||||
"flame": {"name": "Flame"},
|
||||
"flame_emitter": {"name": "Flame Emitter"},
|
||||
"lava_wedge": {"name": "Lava Wedge"},
|
||||
"big_pod": {"name": "Big Pod"},
|
||||
"boat": {"name": "Boat"},
|
||||
"earthquake": {"name": "Earthquake"},
|
||||
"skybox": {"name": "Skybox"},
|
||||
"pickup_aid": {"name": "Pickup Aid"},
|
||||
"temp_7": {"name": "Temp 7"},
|
||||
"temp_8": {"name": "Temp 8"},
|
||||
"temp_9": {"name": "Temp 9"},
|
||||
"temp_10": {"name": "Temp 10"},
|
||||
"hair": {"name": "Lara's Braid"},
|
||||
"alphabet": {"name": "Alphabet"},
|
||||
},
|
||||
|
||||
"game_strings": {
|
||||
|
@ -304,35 +331,6 @@
|
|||
"HEADING_INVENTORY": "INVENTORY",
|
||||
"HEADING_ITEMS": "ITEMS",
|
||||
"HEADING_OPTION": "OPTION",
|
||||
"INV_ITEM_COMPASS": "Compass",
|
||||
"INV_ITEM_CONTROLS": "Controls",
|
||||
"INV_ITEM_DETAILS": "Detail Levels",
|
||||
"INV_ITEM_GAME": "Game",
|
||||
"INV_ITEM_GRENADE": "Grenade",
|
||||
"INV_ITEM_KEY_1": "Key",
|
||||
"INV_ITEM_KEY_2": "Key",
|
||||
"INV_ITEM_KEY_3": "Key",
|
||||
"INV_ITEM_KEY_4": "Key",
|
||||
"INV_ITEM_LARAS_HOME": "Lara's Home",
|
||||
"INV_ITEM_LARGE_MEDIPACK": "Large Medi Pack",
|
||||
"INV_ITEM_LEADBAR": "Lead Bar",
|
||||
"INV_ITEM_MAGNUM": "Magnums",
|
||||
"INV_ITEM_MAGNUM_AMMO": "Magnum Clips",
|
||||
"INV_ITEM_PICKUP_1": "Pickup",
|
||||
"INV_ITEM_PICKUP_2": "Pickup",
|
||||
"INV_ITEM_PISTOLS": "Pistols",
|
||||
"INV_ITEM_PISTOL_AMMO": "Pistol Clips",
|
||||
"INV_ITEM_PUZZLE_1": "Puzzle",
|
||||
"INV_ITEM_PUZZLE_2": "Puzzle",
|
||||
"INV_ITEM_PUZZLE_3": "Puzzle",
|
||||
"INV_ITEM_PUZZLE_4": "Puzzle",
|
||||
"INV_ITEM_SCION": "Scion",
|
||||
"INV_ITEM_SHOTGUN": "Shotgun",
|
||||
"INV_ITEM_SHOTGUN_AMMO": "Shotgun Shells",
|
||||
"INV_ITEM_SMALL_MEDIPACK": "Small Medi Pack",
|
||||
"INV_ITEM_SOUND": "Sound",
|
||||
"INV_ITEM_UZI": "Uzis",
|
||||
"INV_ITEM_UZI_AMMO": "Uzi Clips",
|
||||
"ITEM_EXAMINE_ROLE": "\\{button empty} %s: Examine",
|
||||
"ITEM_USE_ROLE": "\\{button empty} %s: Use",
|
||||
"KEYMAP_ACTION": "Action",
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
"levels": [
|
||||
// Level 2: City of Vilcabamba
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Silver Key",
|
||||
"INV_ITEM_PUZZLE_1": "Gold Idol"
|
||||
"objects": {
|
||||
"key_1": {"name": "Silver Key"},
|
||||
"puzzle_1": {"name": "Gold Idol"},
|
||||
},
|
||||
},
|
||||
|
||||
|
|
|
@ -2,15 +2,15 @@
|
|||
"levels": [
|
||||
// Level 0: Return to Egypt
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Gold Key",
|
||||
"objects": {
|
||||
"key_1": {"name": "Gold Key"},
|
||||
},
|
||||
},
|
||||
|
||||
// Level 1: Temple of the Cat
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Ornate Key",
|
||||
"objects": {
|
||||
"key_1": {"name": "Ornate Key"},
|
||||
},
|
||||
},
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
// NOTE: bad changes to this file may result in crashes.
|
||||
// Lines starting with double slashes are comments and are ignored.
|
||||
// For usage, refer to the documentation here:
|
||||
// https://github.com/LostArtefacts/TRX/blob/stable/docs/GAME_STRINGS.md
|
||||
|
||||
"levels": [
|
||||
// 0. Lara's Home
|
||||
|
@ -8,53 +8,53 @@
|
|||
|
||||
// 1. The Great Wall
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Guardhouse Key",
|
||||
"INV_ITEM_KEY_2": "Rusty Key",
|
||||
"objects": {
|
||||
"key_1": {"name": "Guardhouse Key"},
|
||||
"key_2": {"name": "Rusty Key"},
|
||||
},
|
||||
},
|
||||
|
||||
// 2. Venice
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Boathouse Key",
|
||||
"INV_ITEM_KEY_2": "Steel Key",
|
||||
"INV_ITEM_KEY_3": "Iron Key",
|
||||
"objects": {
|
||||
"key_1": {"name": "Boathouse Key"},
|
||||
"key_2": {"name": "Steel Key"},
|
||||
"key_3": {"name": "Iron Key"},
|
||||
},
|
||||
},
|
||||
|
||||
// 3. Bartoli's Hideout
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Library Key",
|
||||
"INV_ITEM_KEY_2": "Detonator Key",
|
||||
"objects": {
|
||||
"key_1": {"name": "Library Key"},
|
||||
"key_2": {"name": "Detonator Key"},
|
||||
},
|
||||
},
|
||||
|
||||
// 4. Opera House
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Ornate Key",
|
||||
"INV_ITEM_PUZZLE_1": "Relay Box",
|
||||
"INV_ITEM_PUZZLE_2": "Circuit Board",
|
||||
"objects": {
|
||||
"key_1": {"name": "Ornate Key"},
|
||||
"puzzle_1": {"name": "Relay Box"},
|
||||
"puzzle_2": {"name": "Circuit Board"},
|
||||
},
|
||||
},
|
||||
|
||||
// 5. Offshore Rig
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Red Pass Card",
|
||||
"INV_ITEM_KEY_2": "Yellow Pass Card",
|
||||
"INV_ITEM_KEY_3": "Green Pass Card",
|
||||
"objects": {
|
||||
"key_1": {"name": "Red Pass Card"},
|
||||
"key_2": {"name": "Yellow Pass Card"},
|
||||
"key_3": {"name": "Green Pass Card"},
|
||||
},
|
||||
},
|
||||
|
||||
// 6. Diving Area
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Red Pass Card",
|
||||
"INV_ITEM_KEY_4": "Blue Pass Card",
|
||||
"INV_ITEM_PUZZLE_1": "Machine Chip",
|
||||
"objects": {
|
||||
"key_1": {"name": "Red Pass Card"},
|
||||
"key_4": {"name": "Blue Pass Card"},
|
||||
"puzzle_1": {"name": "Machine Chip"},
|
||||
},
|
||||
},
|
||||
|
||||
|
@ -63,347 +63,373 @@
|
|||
|
||||
// 8. Wreck of the Maria Doria
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Rest Room Key",
|
||||
"INV_ITEM_KEY_2": "Rusty Key",
|
||||
"INV_ITEM_KEY_3": "Cabin Key",
|
||||
"INV_ITEM_PUZZLE_1": "Circuit Breaker",
|
||||
"objects": {
|
||||
"key_1": {"name": "Rest Room Key"},
|
||||
"key_2": {"name": "Rusty Key"},
|
||||
"key_3": {"name": "Cabin Key"},
|
||||
"puzzle_1": {"name": "Circuit Breaker"},
|
||||
},
|
||||
},
|
||||
|
||||
// 9. Living Quarters
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Theatre Key",
|
||||
"INV_ITEM_KEY_2": "Rusty Key",
|
||||
"objects": {
|
||||
"key_1": {"name": "Theatre Key"},
|
||||
"key_2": {"name": "Rusty Key"},
|
||||
},
|
||||
},
|
||||
|
||||
// 10. The Deck
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_2": "Stern Key",
|
||||
"INV_ITEM_KEY_3": "Storage Key",
|
||||
"INV_ITEM_KEY_4": "Cabin Key",
|
||||
"INV_ITEM_PUZZLE_4": "The Seraph",
|
||||
"objects": {
|
||||
"key_2": {"name": "Stern Key"},
|
||||
"key_3": {"name": "Storage Key"},
|
||||
"key_4": {"name": "Cabin Key"},
|
||||
"puzzle_4": {"name": "The Seraph"},
|
||||
},
|
||||
},
|
||||
|
||||
// 11. Tibetan Foothills
|
||||
{
|
||||
"object_names": {
|
||||
"O_TIGER": "Snow Leopard",
|
||||
},
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Drawbridge Key",
|
||||
"INV_ITEM_KEY_2": "Hut Key",
|
||||
"INV_ITEM_PUZZLE_4": "The Seraph",
|
||||
"objects": {
|
||||
"tiger": {"name": "Snow Leopard"},
|
||||
"key_1": {"name": "Drawbridge Key"},
|
||||
"key_2": {"name": "Hut Key"},
|
||||
"puzzle_4": {"name": "The Seraph"},
|
||||
},
|
||||
},
|
||||
|
||||
// 12. Barkhang Monastery
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Strongroom Key",
|
||||
"INV_ITEM_KEY_2": "Trapdoor Key",
|
||||
"INV_ITEM_KEY_3": "Rooftops Key",
|
||||
"INV_ITEM_KEY_4": "Main Hall Key",
|
||||
"INV_ITEM_PUZZLE_1": "Prayer Wheels",
|
||||
"INV_ITEM_PUZZLE_2": "Gemstones",
|
||||
"INV_ITEM_PUZZLE_4": "The Seraph",
|
||||
"objects": {
|
||||
"key_1": {"name": "Strongroom Key"},
|
||||
"key_2": {"name": "Trapdoor Key"},
|
||||
"key_3": {"name": "Rooftops Key"},
|
||||
"key_4": {"name": "Main Hall Key"},
|
||||
"puzzle_1": {"name": "Prayer Wheels"},
|
||||
"puzzle_2": {"name": "Gemstones"},
|
||||
"puzzle_4": {"name": "The Seraph"},
|
||||
},
|
||||
},
|
||||
|
||||
// 13. Catacombs of the Talion
|
||||
{
|
||||
"object_names": {
|
||||
"O_TIGER": "Snow Leopard",
|
||||
},
|
||||
"game_strings": {
|
||||
"INV_ITEM_PICKUP_1": "Gong Hammer",
|
||||
"INV_ITEM_PUZZLE_1": "Tibetan Mask",
|
||||
"objects": {
|
||||
"tiger": {"name": "Snow Leopard"},
|
||||
"pickup_1": {"name": "Gong Hammer"},
|
||||
"puzzle_1": {"name": "Tibetan Mask"},
|
||||
},
|
||||
},
|
||||
|
||||
// 14. Ice Palace
|
||||
{
|
||||
"object_names": {
|
||||
"O_TIGER": "Snow Leopard",
|
||||
},
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_2": "Gong Hammer",
|
||||
"INV_ITEM_PICKUP_2": "Talion",
|
||||
"INV_ITEM_PUZZLE_1": "Tibetan Mask",
|
||||
"objects": {
|
||||
"tiger": {"name": "Snow Leopard"},
|
||||
"key_2": {"name": "Gong Hammer"},
|
||||
"pickup_2": {"name": "Talion"},
|
||||
"puzzle_1": {"name": "Tibetan Mask"},
|
||||
},
|
||||
},
|
||||
|
||||
// 15. Temple of Xian
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_2": "Gold Key",
|
||||
"INV_ITEM_KEY_3": "Silver Key",
|
||||
"INV_ITEM_KEY_4": "Main Chamber Key",
|
||||
"INV_ITEM_PUZZLE_1": "The Dragon Seal",
|
||||
"objects": {
|
||||
"key_2": {"name": "Gold Key"},
|
||||
"key_3": {"name": "Silver Key"},
|
||||
"key_4": {"name": "Main Chamber Key"},
|
||||
"puzzle_1": {"name": "The Dragon Seal"},
|
||||
},
|
||||
},
|
||||
|
||||
// 16. Floating Islands
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_PUZZLE_1": "Mystic Plaque",
|
||||
"INV_ITEM_PUZZLE_2": "Mystic Plaque",
|
||||
"objects": {
|
||||
"puzzle_1": {"name": "Mystic Plaque"},
|
||||
"puzzle_2": {"name": "Mystic Plaque"},
|
||||
},
|
||||
},
|
||||
|
||||
// 17. The Dragon's Lair
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_PUZZLE_1": "Mystic Plaque",
|
||||
"INV_ITEM_PUZZLE_2": "Dagger of Xian",
|
||||
"objects": {
|
||||
"puzzle_1": {"name": "Mystic Plaque"},
|
||||
"puzzle_2": {"name": "Dagger of Xian"},
|
||||
},
|
||||
},
|
||||
|
||||
// 18. Home Sweet Home
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Gun Cupboard Key",
|
||||
"INV_ITEM_PUZZLE_1": "Dagger of Xian",
|
||||
"objects": {
|
||||
"key_1": {"name": "Gun Cupboard Key"},
|
||||
"puzzle_1": {"name": "Dagger of Xian"},
|
||||
},
|
||||
},
|
||||
|
||||
// 19. Demo 1
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Boathouse Key",
|
||||
"INV_ITEM_KEY_2": "Steel Key",
|
||||
"INV_ITEM_KEY_3": "Iron Key",
|
||||
"objects": {
|
||||
"key_1": {"name": "Boathouse Key"},
|
||||
"key_2": {"name": "Steel Key"},
|
||||
"key_3": {"name": "Iron Key"},
|
||||
},
|
||||
},
|
||||
|
||||
// 20. Demo 2
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Rest Room Key",
|
||||
"INV_ITEM_KEY_2": "Rusty Key",
|
||||
"INV_ITEM_KEY_3": "Cabin Key",
|
||||
"INV_ITEM_PUZZLE_1": "Circuit Breaker",
|
||||
"objects": {
|
||||
"key_1": {"name": "Rest Room Key"},
|
||||
"key_2": {"name": "Rusty Key"},
|
||||
"key_3": {"name": "Cabin Key"},
|
||||
"puzzle_1": {"name": "Circuit Breaker"},
|
||||
},
|
||||
},
|
||||
|
||||
// 21. Demo 3
|
||||
{
|
||||
"game_strings": {
|
||||
"INV_ITEM_KEY_1": "Drawbridge Key",
|
||||
"INV_ITEM_KEY_2": "Hut Key",
|
||||
"INV_ITEM_PUZZLE_4": "The Seraph",
|
||||
"objects": {
|
||||
"key_1": {"name": "Drawbridge Key"},
|
||||
"key_2": {"name": "Hut Key"},
|
||||
"puzzle_4": {"name": "The Seraph"},
|
||||
},
|
||||
},
|
||||
],
|
||||
|
||||
"object_names": {
|
||||
"O_LARA": "Lara",
|
||||
"O_LARA_PISTOLS": "Pistols Animation",
|
||||
"O_LARA_HAIR": "Braid",
|
||||
"O_LARA_SHOTGUN": "Shotgun Animation",
|
||||
"O_LARA_MAGNUMS": "Magnums Animation",
|
||||
"O_LARA_UZIS": "Uzis Animation",
|
||||
"O_LARA_M16": "M16 Animation",
|
||||
"O_LARA_GRENADE": "Grenade Launcher Animation",
|
||||
"O_LARA_HARPOON": "Harpoon Animation",
|
||||
"O_LARA_FLARE": "Flare Animation",
|
||||
"O_LARA_SKIDOO": "Snowmobile Animation",
|
||||
"O_LARA_BOAT": "Boat Animation",
|
||||
"O_LARA_EXTRA": "Lara's Extra Animation",
|
||||
"O_SKIDOO_FAST": "Red Snowmobile",
|
||||
"O_BOAT": "Boat",
|
||||
"O_DOG": "Dog",
|
||||
"O_CULT_1": "Masked Goon 1",
|
||||
"O_CULT_1A": "Masked Goon 2",
|
||||
"O_CULT_1B": "Masked Goon 3",
|
||||
"O_CULT_2": "Knife Thrower",
|
||||
"O_CULT_3": "Shotgun Goon",
|
||||
"O_MOUSE": "Rat",
|
||||
"O_DRAGON_FRONT": "Dragon Front",
|
||||
"O_DRAGON_BACK": "Dragon Back",
|
||||
"O_GONDOLA": "Gondola",
|
||||
"O_SHARK": "Shark",
|
||||
"O_EEL": "Eel",
|
||||
"O_BIG_EEL": "Big Eel",
|
||||
"O_BARRACUDA": "Barracuda",
|
||||
"O_DIVER": "Scuba Diver",
|
||||
"O_WORKER_1": "Gunman Goon 1",
|
||||
"O_WORKER_2": "Gunman Goon 2",
|
||||
"O_WORKER_3": "Stick Wielding Goon 1",
|
||||
"O_WORKER_4": "Stick Wielding Goon 2",
|
||||
"O_WORKER_5": "Flamethrower Goon",
|
||||
"O_JELLY": "Jellyfish",
|
||||
"O_SPIDER": "Spider",
|
||||
"O_BIG_SPIDER": "Giant Spider",
|
||||
"O_CROW": "Crow",
|
||||
"O_TIGER": "Tiger",
|
||||
"O_BARTOLI": "Marco Bartoli",
|
||||
"O_XIAN_SPEARMAN": "Xian Spearman",
|
||||
"O_XIAN_SPEARMAN_STATUE": "Xian Spearman Statue",
|
||||
"O_XIAN_KNIGHT": "Xian Knight",
|
||||
"O_XIAN_KNIGHT_STATUE": "Xian Knight",
|
||||
"O_YETI": "Yeti",
|
||||
"O_BIRD_GUARDIAN": "Bird Monster",
|
||||
"O_EAGLE": "Eagle",
|
||||
"O_BANDIT_1": "Mercenary 1",
|
||||
"O_BANDIT_2": "Mercenary 2",
|
||||
"O_BANDIT_2B": "Mercenary 3",
|
||||
"O_SKIDOO_ARMED": "Black Snowmobile",
|
||||
"O_SKIDOO_DRIVER": "Black Snowmobile Driver",
|
||||
"O_MONK_1": "Monk 1",
|
||||
"O_MONK_2": "Monk 2",
|
||||
"O_FALLING_BLOCK_1": "Falling Block 1",
|
||||
"O_FALLING_BLOCK_2": "Falling Block 2",
|
||||
"O_FALLING_BLOCK_3": "Loose Boards",
|
||||
"O_PENDULUM_1": "Sandbag",
|
||||
"O_SPIKES": "Spikes",
|
||||
"O_ROLLING_BALL_1": "Boulder 1",
|
||||
"O_DART": "Disc",
|
||||
"O_DART_EMITTER": "Disc Emitter",
|
||||
"O_DRAWBRIDGE": "Drawbridge",
|
||||
"O_TEETH_TRAP": "Teeth Trap",
|
||||
"O_LIFT": "Lift",
|
||||
"O_GENERAL": "Minisub",
|
||||
"O_MOVABLE_BLOCK_1": "Push Block 1",
|
||||
"O_MOVABLE_BLOCK_2": "Push Block 2",
|
||||
"O_MOVABLE_BLOCK_3": "Push Block 3",
|
||||
"O_MOVABLE_BLOCK_4": "Push Block 4",
|
||||
"O_BIG_BOWL": "Lava Bowl",
|
||||
"O_WINDOW_1": "Breakable Window 1",
|
||||
"O_WINDOW_2": "Breakable Window 2",
|
||||
"O_WINDOW_3": "Breakable Window 3",
|
||||
"O_WINDOW_4": "Breakable Window 4",
|
||||
"O_PROPELLER_1": "Airplane Propeller",
|
||||
"O_POWER_SAW": "Power Saw",
|
||||
"O_HOOK": "Hook",
|
||||
"O_FALLING_CEILING": "Falling Ceiling",
|
||||
"O_SPINNING_BLADE": "Spinning Blade",
|
||||
"O_BLADE": "Wall-mounted Blade",
|
||||
"O_KILLER_STATUE": "Statue with Sword",
|
||||
"O_ROLLING_BALL_2": "Boulder 2",
|
||||
"O_ICICLE": "Icicles",
|
||||
"O_SPIKE_WALL": "Spike Wall",
|
||||
"O_SPRINGBOARD": "Springboard",
|
||||
"O_CEILING_SPIKES": "Spiky Ceiling",
|
||||
"O_BELL": "Bell",
|
||||
"O_WATER_SPRITE": "Boat Wake",
|
||||
"O_SNOW_SPRITE": "Snowmobile Wale",
|
||||
"O_SKIDOO_TRACK": "Snowmobile Track",
|
||||
"O_SWITCH_TYPE_AIRLOCK": "Airlock Switch",
|
||||
"O_SWITCH_TYPE_SMALL": "Small Switch",
|
||||
"O_PROPELLER_2": "Underwater Propeller",
|
||||
"O_PROPELLER_3": "Air Fan",
|
||||
"O_PENDULUM_2": "Swinging Box",
|
||||
"O_MESH_SWAP_1": "Mesh Swap 1",
|
||||
"O_MESH_SWAP_2": "Mesh Swap 2",
|
||||
"O_LARA_SWAP": "Lara Mesh Swap",
|
||||
"O_TEXT_BOX": "UI Frame",
|
||||
"O_ROLLING_BALL_3": "Boulder 3",
|
||||
"O_ZIPLINE_HANDLE": "Zipline Handle",
|
||||
"O_SWITCH_TYPE_BUTTON": "Switch Button",
|
||||
"O_SWITCH_TYPE_NORMAL": "Lever/Switch",
|
||||
"O_SWITCH_TYPE_UW": "Underwater Lever/Switch",
|
||||
"O_DOOR_TYPE_1": "Door 1",
|
||||
"O_DOOR_TYPE_2": "Door 2",
|
||||
"O_DOOR_TYPE_3": "Door 3",
|
||||
"O_DOOR_TYPE_4": "Door 4",
|
||||
"O_DOOR_TYPE_5": "Door 5",
|
||||
"O_DOOR_TYPE_6": "Door 6",
|
||||
"O_DOOR_TYPE_7": "Door 7",
|
||||
"O_DOOR_TYPE_8": "Door 8",
|
||||
"O_TRAPDOOR_TYPE_1": "Trapdoor 1",
|
||||
"O_TRAPDOOR_TYPE_2": "Trapdoor 2",
|
||||
"O_TRAPDOOR_TYPE_3": "Trapdoor 3",
|
||||
"O_BRIDGE_FLAT": "Bridge Flat",
|
||||
"O_BRIDGE_TILT_1": "Bridge Tilt 1",
|
||||
"O_BRIDGE_TILT_2": "Bridge Tilt 2",
|
||||
"O_PLAYER_1": "Cutscene Actor 1",
|
||||
"O_PLAYER_2": "Cutscene Actor 2",
|
||||
"O_PLAYER_3": "Cutscene Actor 3",
|
||||
"O_PLAYER_4": "Cutscene Actor 4",
|
||||
"O_PLAYER_5": "Cutscene Actor 5",
|
||||
"O_PLAYER_6": "Cutscene Actor 6",
|
||||
"O_PLAYER_7": "Cutscene Actor 7",
|
||||
"O_PLAYER_8": "Cutscene Actor 8",
|
||||
"O_PLAYER_9": "Cutscene Actor 9",
|
||||
"O_PLAYER_10": "Cutscene Actor 10",
|
||||
"O_FLARES_ITEM": "Flares Box",
|
||||
"O_GAMMA_OPTION": "Gamma Option",
|
||||
"O_PUZZLE_HOLE_1": "Puzzle Hole 1 (Empty)",
|
||||
"O_PUZZLE_HOLE_2": "Puzzle Hole 2 (Empty)",
|
||||
"O_PUZZLE_HOLE_3": "Puzzle Hole 3 (Empty)",
|
||||
"O_PUZZLE_HOLE_4": "Puzzle Hole 4 (Empty)",
|
||||
"O_PUZZLE_DONE_1": "Puzzle Hole 1 (Done)",
|
||||
"O_PUZZLE_DONE_2": "Puzzle Hole 2 (Done)",
|
||||
"O_PUZZLE_DONE_3": "Puzzle Hole 3 (Done)",
|
||||
"O_PUZZLE_DONE_4": "Puzzle Hole 4 (Done)",
|
||||
"O_SECRET_1": "Secret 1",
|
||||
"O_SECRET_2": "Secret 2",
|
||||
"O_SECRET_3": "Secret 3",
|
||||
"O_KEY_HOLE_1": "Keyhole 1",
|
||||
"O_KEY_HOLE_2": "Keyhole 2",
|
||||
"O_KEY_HOLE_3": "Keyhole 3",
|
||||
"O_KEY_HOLE_4": "Keyhole 4",
|
||||
"O_SPHERE_OF_DOOM_1": "Dragon Explosion 1",
|
||||
"O_SPHERE_OF_DOOM_2": "Dragon Explosion 2",
|
||||
"O_SPHERE_OF_DOOM_3": "Dragon Explosion 3",
|
||||
"O_ALARM_SOUND": "Alarm",
|
||||
"O_BIRD_TWEETER_1": "Dripping Water",
|
||||
"O_DINO": "T-Rex",
|
||||
"O_BIRD_TWEETER_2": "Singing Birds",
|
||||
"O_CLOCK_CHIMES": "Bartoli Hideout clock",
|
||||
"O_DRAGON_BONES_1": "Placeholder",
|
||||
"O_DRAGON_BONES_2": "Dragon Bones Front",
|
||||
"O_DRAGON_BONES_3": "Dragon Bones Back",
|
||||
"O_HOT_LIQUID": "Extra Fire",
|
||||
"O_BOAT_BITS": "Boat Bits",
|
||||
"O_MINE": "Aquatic Mine",
|
||||
"O_INV_BACKGROUND": "Menu Background",
|
||||
"O_FX_RESERVED": "Gray disk",
|
||||
"O_GONG_BONGER": "Gong Stick",
|
||||
"O_DETONATOR_1": "Gong",
|
||||
"O_DETONATOR_2": "Detonator Box",
|
||||
"O_COPTER": "Helicopter",
|
||||
"O_EXPLOSION": "Explosion",
|
||||
"O_SPLASH": "Water Ripples",
|
||||
"O_BUBBLE": "Bubble",
|
||||
"O_BUBBLE_EMITTER": "Bubbles Emitter",
|
||||
"O_BLOOD": "Blood",
|
||||
"O_DART_EFFECT": "Dart Effect",
|
||||
"O_FLARE_FIRE": "Flare sparks",
|
||||
"O_GLOW": "Glow",
|
||||
"O_GLOW_RESERVED": "Map Glow",
|
||||
"O_RICOCHET": "Ricochet",
|
||||
"O_TWINKLE": "Sparkles",
|
||||
"O_GUN_FLASH": "Gun Flash",
|
||||
"O_M16_FLASH": "M16 Flash",
|
||||
"O_BODY_PART": "Body Part",
|
||||
"O_CAMERA_TARGET": "Camera Target",
|
||||
"O_WATERFALL": "Waterfall Mist",
|
||||
"O_MISSILE_HARPOON": "Missile Harpoon",
|
||||
"O_MISSILE_FLAME": "Missile Flame",
|
||||
"O_MISSILE_KNIFE": "Missile Knife",
|
||||
"O_GRENADE": "Grenade",
|
||||
"O_HARPOON_BOLT": "Harpoon Bolt",
|
||||
"O_EMBER": "Ember",
|
||||
"O_EMBER_EMITTER": "Ember Emitter",
|
||||
"O_FLAME": "Flame",
|
||||
"O_FLAME_EMITTER": "Flame Emitter",
|
||||
"O_SKYBOX": "Skybox",
|
||||
"O_ALPHABET": "Alphabet",
|
||||
"O_DYING_MONK": "Dying monk",
|
||||
"O_DING_DONG": "Doorbell",
|
||||
"O_LARA_ALARM": "Alarm Bell",
|
||||
"O_MINI_COPTER": "Helicopter 2",
|
||||
"O_WINSTON": "Winston",
|
||||
"O_ASSAULT_DIGITS": "Assault Digits",
|
||||
"O_FINAL_LEVEL_COUNTER": "Final Level Counter",
|
||||
"O_CUT_SHOTGUN": "Shotgun Shower Animation",
|
||||
"O_EARTHQUAKE": "Earthquake",
|
||||
"objects": {
|
||||
"small_medipack": {"name": "Small Medipack"},
|
||||
"large_medipack": {"name": "Large Medipack"},
|
||||
"flare": {"name": "Flare"},
|
||||
"flares_box": {"name": "Flares Box"},
|
||||
"secret_1": {"name": "Secret 1"},
|
||||
"secret_2": {"name": "Secret 2"},
|
||||
"secret_3": {"name": "Secret 3"},
|
||||
"pistols": {"name": "Pistols"},
|
||||
"shotgun": {"name": "Shotgun"},
|
||||
"magnums": {"name": "Automatic Pistols"},
|
||||
"uzis": {"name": "Uzis"},
|
||||
"harpoon_gun": {"name": "Harpoon Gun"},
|
||||
"m16": {"name": "M16"},
|
||||
"grenade_launcher": {"name": "Grenade Launcher"},
|
||||
"pistols_ammo": {"name": "Pistol Clips"},
|
||||
"shotgun_ammo": {"name": "Shotgun Shells"},
|
||||
"magnums_ammo": {"name": "Automatic Pistol Clips"},
|
||||
"uzis_ammo": {"name": "Uzi Clips"},
|
||||
"harpoon_gun_ammo": {"name": "Harpoons"},
|
||||
"m16_ammo": {"name": "M16 Clips"},
|
||||
"grenade_launcher_ammo": {"name": "Grenades"},
|
||||
"key_1": {"name": "Key 1"},
|
||||
"key_2": {"name": "Key 2"},
|
||||
"key_3": {"name": "Key 3"},
|
||||
"key_4": {"name": "Key 4"},
|
||||
"puzzle_1": {"name": "Puzzle Item 1"},
|
||||
"puzzle_2": {"name": "Puzzle Item 2"},
|
||||
"puzzle_3": {"name": "Puzzle Item 3"},
|
||||
"puzzle_4": {"name": "Puzzle Item 4"},
|
||||
"pickup_1": {"name": "Pickup Item 1"},
|
||||
"pickup_2": {"name": "Pickup Item 2"},
|
||||
"compass": {"name": "Statistics"},
|
||||
"passport": {"name": "Game"},
|
||||
"photo": {"name": "Lara's Home"},
|
||||
"graphics": {"name": "Detail Levels"},
|
||||
"controls": {"name": "Controls"},
|
||||
"sound": {"name": "Sound"},
|
||||
"lara": {"name": "Lara"},
|
||||
"lara_pistols": {"name": "Pistols Animation"},
|
||||
"lara_hair": {"name": "Braid"},
|
||||
"lara_shotgun": {"name": "Shotgun Animation"},
|
||||
"lara_magnums": {"name": "Magnums Animation"},
|
||||
"lara_uzis": {"name": "Uzis Animation"},
|
||||
"lara_m16": {"name": "M16 Animation"},
|
||||
"lara_grenade": {"name": "Grenade Launcher Animation"},
|
||||
"lara_harpoon": {"name": "Harpoon Animation"},
|
||||
"lara_flare": {"name": "Flare Animation"},
|
||||
"lara_skidoo": {"name": "Snowmobile Animation"},
|
||||
"lara_boat": {"name": "Boat Animation"},
|
||||
"lara_extra": {"name": "Lara's Extra Animation"},
|
||||
"skidoo_fast": {"name": "Red Snowmobile"},
|
||||
"boat": {"name": "Boat"},
|
||||
"dog": {"name": "Dog"},
|
||||
"cult_1": {"name": "Masked Goon 1"},
|
||||
"cult_1a": {"name": "Masked Goon 2"},
|
||||
"cult_1b": {"name": "Masked Goon 3"},
|
||||
"cult_2": {"name": "Knife Thrower"},
|
||||
"cult_3": {"name": "Shotgun Goon"},
|
||||
"mouse": {"name": "Rat"},
|
||||
"dragon_front": {"name": "Dragon Front"},
|
||||
"dragon_back": {"name": "Dragon Back"},
|
||||
"gondola": {"name": "Gondola"},
|
||||
"shark": {"name": "Shark"},
|
||||
"eel": {"name": "Eel"},
|
||||
"big_eel": {"name": "Big Eel"},
|
||||
"barracuda": {"name": "Barracuda"},
|
||||
"diver": {"name": "Scuba Diver"},
|
||||
"worker_1": {"name": "Gunman Goon 1"},
|
||||
"worker_2": {"name": "Gunman Goon 2"},
|
||||
"worker_3": {"name": "Stick Wielding Goon 1"},
|
||||
"worker_4": {"name": "Stick Wielding Goon 2"},
|
||||
"worker_5": {"name": "Flamethrower Goon"},
|
||||
"jelly": {"name": "Jellyfish"},
|
||||
"spider": {"name": "Spider"},
|
||||
"big_spider": {"name": "Giant Spider"},
|
||||
"crow": {"name": "Crow"},
|
||||
"tiger": {"name": "Tiger"},
|
||||
"bartoli": {"name": "Marco Bartoli"},
|
||||
"xian_spearman": {"name": "Xian Spearman"},
|
||||
"xian_spearman_statue": {"name": "Xian Spearman Statue"},
|
||||
"xian_knight": {"name": "Xian Knight"},
|
||||
"xian_knight_statue": {"name": "Xian Knight"},
|
||||
"yeti": {"name": "Yeti"},
|
||||
"bird_guardian": {"name": "Bird Monster"},
|
||||
"eagle": {"name": "Eagle"},
|
||||
"bandit_1": {"name": "Mercenary 1"},
|
||||
"bandit_2": {"name": "Mercenary 2"},
|
||||
"bandit_2b": {"name": "Mercenary 3"},
|
||||
"skidoo_armed": {"name": "Black Snowmobile"},
|
||||
"skidoo_driver": {"name": "Black Snowmobile Driver"},
|
||||
"monk_1": {"name": "Monk 1"},
|
||||
"monk_2": {"name": "Monk 2"},
|
||||
"falling_block_1": {"name": "Falling Block 1"},
|
||||
"falling_block_2": {"name": "Falling Block 2"},
|
||||
"falling_block_3": {"name": "Loose Boards"},
|
||||
"pendulum_1": {"name": "Sandbag"},
|
||||
"spikes": {"name": "Spikes"},
|
||||
"rolling_ball_1": {"name": "Boulder 1"},
|
||||
"dart": {"name": "Disc"},
|
||||
"dart_emitter": {"name": "Disc Emitter"},
|
||||
"drawbridge": {"name": "Drawbridge"},
|
||||
"teeth_trap": {"name": "Teeth Trap"},
|
||||
"lift": {"name": "Lift"},
|
||||
"general": {"name": "Minisub"},
|
||||
"movable_block_1": {"name": "Push Block 1"},
|
||||
"movable_block_2": {"name": "Push Block 2"},
|
||||
"movable_block_3": {"name": "Push Block 3"},
|
||||
"movable_block_4": {"name": "Push Block 4"},
|
||||
"big_bowl": {"name": "Lava Bowl"},
|
||||
"window_1": {"name": "Breakable Window 1"},
|
||||
"window_2": {"name": "Breakable Window 2"},
|
||||
"window_3": {"name": "Breakable Window 3"},
|
||||
"window_4": {"name": "Breakable Window 4"},
|
||||
"propeller_1": {"name": "Airplane Propeller"},
|
||||
"power_saw": {"name": "Power Saw"},
|
||||
"hook": {"name": "Hook"},
|
||||
"falling_ceiling": {"name": "Falling Ceiling"},
|
||||
"spinning_blade": {"name": "Spinning Blade"},
|
||||
"blade": {"name": "Wall-mounted Blade"},
|
||||
"killer_statue": {"name": "Statue with Sword"},
|
||||
"rolling_ball_2": {"name": "Boulder 2"},
|
||||
"icicle": {"name": "Icicles"},
|
||||
"spike_wall": {"name": "Spike Wall"},
|
||||
"springboard": {"name": "Springboard"},
|
||||
"ceiling_spikes": {"name": "Spiky Ceiling"},
|
||||
"bell": {"name": "Bell"},
|
||||
"water_sprite": {"name": "Boat Wake"},
|
||||
"snow_sprite": {"name": "Snowmobile Wale"},
|
||||
"skidoo_track": {"name": "Snowmobile Track"},
|
||||
"switch_type_airlock": {"name": "Airlock Switch"},
|
||||
"switch_type_small": {"name": "Small Switch"},
|
||||
"propeller_2": {"name": "Underwater Propeller"},
|
||||
"propeller_3": {"name": "Air Fan"},
|
||||
"pendulum_2": {"name": "Swinging Box"},
|
||||
"mesh_swap_1": {"name": "Mesh Swap 1"},
|
||||
"mesh_swap_2": {"name": "Mesh Swap 2"},
|
||||
"lara_swap": {"name": "Lara Mesh Swap"},
|
||||
"text_box": {"name": "UI Frame"},
|
||||
"rolling_ball_3": {"name": "Boulder 3"},
|
||||
"zipline_handle": {"name": "Zipline Handle"},
|
||||
"switch_type_button": {"name": "Switch Button"},
|
||||
"switch_type_normal": {"name": "Lever/Switch"},
|
||||
"switch_type_uw": {"name": "Underwater Lever/Switch"},
|
||||
"door_type_1": {"name": "Door 1"},
|
||||
"door_type_2": {"name": "Door 2"},
|
||||
"door_type_3": {"name": "Door 3"},
|
||||
"door_type_4": {"name": "Door 4"},
|
||||
"door_type_5": {"name": "Door 5"},
|
||||
"door_type_6": {"name": "Door 6"},
|
||||
"door_type_7": {"name": "Door 7"},
|
||||
"door_type_8": {"name": "Door 8"},
|
||||
"trapdoor_type_1": {"name": "Trapdoor 1"},
|
||||
"trapdoor_type_2": {"name": "Trapdoor 2"},
|
||||
"trapdoor_type_3": {"name": "Trapdoor 3"},
|
||||
"bridge_flat": {"name": "Bridge Flat"},
|
||||
"bridge_tilt_1": {"name": "Bridge Tilt 1"},
|
||||
"bridge_tilt_2": {"name": "Bridge Tilt 2"},
|
||||
"player_1": {"name": "Cutscene Actor 1"},
|
||||
"player_2": {"name": "Cutscene Actor 2"},
|
||||
"player_3": {"name": "Cutscene Actor 3"},
|
||||
"player_4": {"name": "Cutscene Actor 4"},
|
||||
"player_5": {"name": "Cutscene Actor 5"},
|
||||
"player_6": {"name": "Cutscene Actor 6"},
|
||||
"player_7": {"name": "Cutscene Actor 7"},
|
||||
"player_8": {"name": "Cutscene Actor 8"},
|
||||
"player_9": {"name": "Cutscene Actor 9"},
|
||||
"player_10": {"name": "Cutscene Actor 10"},
|
||||
"key_hole_1": {"name": "Keyhole 1"},
|
||||
"key_hole_2": {"name": "Keyhole 2"},
|
||||
"key_hole_3": {"name": "Keyhole 3"},
|
||||
"key_hole_4": {"name": "Keyhole 4"},
|
||||
"puzzle_hole_1": {"name": "Puzzle Hole 1 (Empty)"},
|
||||
"puzzle_hole_2": {"name": "Puzzle Hole 2 (Empty)"},
|
||||
"puzzle_hole_3": {"name": "Puzzle Hole 3 (Empty)"},
|
||||
"puzzle_hole_4": {"name": "Puzzle Hole 4 (Empty)"},
|
||||
"puzzle_done_1": {"name": "Puzzle Hole 1 (Done)"},
|
||||
"puzzle_done_2": {"name": "Puzzle Hole 2 (Done)"},
|
||||
"puzzle_done_3": {"name": "Puzzle Hole 3 (Done)"},
|
||||
"puzzle_done_4": {"name": "Puzzle Hole 4 (Done)"},
|
||||
"sphere_of_doom_1": {"name": "Dragon Explosion 1"},
|
||||
"sphere_of_doom_2": {"name": "Dragon Explosion 2"},
|
||||
"sphere_of_doom_3": {"name": "Dragon Explosion 3"},
|
||||
"alarm_sound": {"name": "Alarm"},
|
||||
"bird_tweeter_1": {"name": "Dripping Water"},
|
||||
"dino": {"name": "T-Rex"},
|
||||
"bird_tweeter_2": {"name": "Singing Birds"},
|
||||
"clock_chimes": {"name": "Bartoli Hideout clock"},
|
||||
"dragon_bones_1": {"name": "Placeholder"},
|
||||
"dragon_bones_2": {"name": "Dragon Bones Front"},
|
||||
"dragon_bones_3": {"name": "Dragon Bones Back"},
|
||||
"hot_liquid": {"name": "Extra Fire"},
|
||||
"boat_bits": {"name": "Boat Bits"},
|
||||
"mine": {"name": "Aquatic Mine"},
|
||||
"inv_background": {"name": "Menu Background"},
|
||||
"fx_reserved": {"name": "Gray disk"},
|
||||
"gong_bonger": {"name": "Gong Stick"},
|
||||
"detonator_1": {"name": "Gong"},
|
||||
"detonator_2": {"name": "Detonator Box"},
|
||||
"copter": {"name": "Helicopter"},
|
||||
"explosion": {"name": "Explosion"},
|
||||
"splash": {"name": "Water Ripples"},
|
||||
"bubble": {"name": "Bubble"},
|
||||
"bubble_emitter": {"name": "Bubbles Emitter"},
|
||||
"blood": {"name": "Blood"},
|
||||
"dart_effect": {"name": "Dart Effect"},
|
||||
"flare_fire": {"name": "Flare sparks"},
|
||||
"glow": {"name": "Glow"},
|
||||
"glow_reserved": {"name": "Map Glow"},
|
||||
"ricochet": {"name": "Ricochet"},
|
||||
"twinkle": {"name": "Sparkles"},
|
||||
"gun_flash": {"name": "Gun Flash"},
|
||||
"m16_flash": {"name": "M16 Flash"},
|
||||
"body_part": {"name": "Body Part"},
|
||||
"camera_target": {"name": "Camera Target"},
|
||||
"waterfall": {"name": "Waterfall Mist"},
|
||||
"missile_harpoon": {"name": "Missile Harpoon"},
|
||||
"missile_flame": {"name": "Missile Flame"},
|
||||
"missile_knife": {"name": "Missile Knife"},
|
||||
"grenade": {"name": "Grenade"},
|
||||
"harpoon_bolt": {"name": "Harpoon Bolt"},
|
||||
"ember": {"name": "Ember"},
|
||||
"ember_emitter": {"name": "Ember Emitter"},
|
||||
"flame": {"name": "Flame"},
|
||||
"flame_emitter": {"name": "Flame Emitter"},
|
||||
"skybox": {"name": "Skybox"},
|
||||
"alphabet": {"name": "Alphabet"},
|
||||
"dying_monk": {"name": "Dying monk"},
|
||||
"ding_dong": {"name": "Doorbell"},
|
||||
"lara_alarm": {"name": "Alarm Bell"},
|
||||
"mini_copter": {"name": "Helicopter 2"},
|
||||
"winston": {"name": "Winston"},
|
||||
"assault_digits": {"name": "Assault Digits"},
|
||||
"final_level_counter": {"name": "Final Level Counter"},
|
||||
"cut_shotgun": {"name": "Shotgun Shower Animation"},
|
||||
"earthquake": {"name": "Earthquake"},
|
||||
},
|
||||
|
||||
"game_strings": {
|
||||
|
@ -418,39 +444,6 @@
|
|||
"HEADING_INVENTORY": "INVENTORY",
|
||||
"HEADING_ITEMS": "ITEMS",
|
||||
"HEADING_OPTION": "OPTION",
|
||||
"INV_ITEM_CONTROLS": "Controls",
|
||||
"INV_ITEM_DETAILS": "Detail Levels",
|
||||
"INV_ITEM_FLARE": "Flare",
|
||||
"INV_ITEM_GAME": "Game",
|
||||
"INV_ITEM_GRENADE": "Grenade Launcher",
|
||||
"INV_ITEM_GRENADE_AMMO": "Grenades",
|
||||
"INV_ITEM_HARPOON": "Harpoon Gun",
|
||||
"INV_ITEM_HARPOON_AMMO": "Harpoons",
|
||||
"INV_ITEM_KEY_1": "Key",
|
||||
"INV_ITEM_KEY_2": "Key",
|
||||
"INV_ITEM_KEY_3": "Key",
|
||||
"INV_ITEM_KEY_4": "Key",
|
||||
"INV_ITEM_LARAS_HOME": "Lara's Home",
|
||||
"INV_ITEM_LARGE_MEDIPACK": "Large Medi Pack",
|
||||
"INV_ITEM_M16": "M16",
|
||||
"INV_ITEM_M16_AMMO": "M16 Clips",
|
||||
"INV_ITEM_MAGNUMS": "Automatic Pistols",
|
||||
"INV_ITEM_MAGNUM_AMMO": "Automatic Pistol Clips",
|
||||
"INV_ITEM_PICKUP_1": "Pickup",
|
||||
"INV_ITEM_PICKUP_2": "Pickup",
|
||||
"INV_ITEM_PISTOLS": "Pistols",
|
||||
"INV_ITEM_PISTOL_AMMO": "Pistol Clips",
|
||||
"INV_ITEM_PUZZLE_1": "Puzzle",
|
||||
"INV_ITEM_PUZZLE_2": "Puzzle",
|
||||
"INV_ITEM_PUZZLE_3": "Puzzle",
|
||||
"INV_ITEM_PUZZLE_4": "Puzzle",
|
||||
"INV_ITEM_SHOTGUN": "Shotgun",
|
||||
"INV_ITEM_SHOTGUN_AMMO": "Shotgun Shells",
|
||||
"INV_ITEM_SMALL_MEDIPACK": "Small Medi Pack",
|
||||
"INV_ITEM_SOUND": "Sound",
|
||||
"INV_ITEM_STOPWATCH": "Statistics",
|
||||
"INV_ITEM_UZIS": "Uzis",
|
||||
"INV_ITEM_UZI_AMMO": "Uzi Clips",
|
||||
"KEYMAP_ACTION": "Action",
|
||||
"KEYMAP_BACK": "Back",
|
||||
"KEYMAP_CAMERA_BACK": "Camera Back",
|
||||
|
|
172
docs/GAME_STRINGS.md
Normal file
172
docs/GAME_STRINGS.md
Normal file
|
@ -0,0 +1,172 @@
|
|||
# TRX Game Strings Configuration
|
||||
|
||||
This document describes how to use the game strings. Game strings let users
|
||||
translate the game and change the built-in object names for the purpose of
|
||||
building custom levels. The configuration includes definitions for game levels,
|
||||
objects, and all UI elements, and is structured in a JSON5 format which
|
||||
permits comments.
|
||||
|
||||
## General structure
|
||||
|
||||
The document is organized as follows:
|
||||
|
||||
```json5
|
||||
{
|
||||
"levels": {
|
||||
{
|
||||
"objects": {
|
||||
"key_1": {
|
||||
"name": "Silver Key",
|
||||
"description": "This shows when the player examines key1 in the inventory.",
|
||||
},
|
||||
"puzzle_1": {
|
||||
"name": "Gold Idol",
|
||||
"description": "You can use \n to make new lines and \f to make new pages.",
|
||||
},
|
||||
"key_2": {
|
||||
"name": "Rusty Key",
|
||||
},
|
||||
// etc
|
||||
},
|
||||
"game_strings": {
|
||||
"STATS_TIME_TAKEN": "...",
|
||||
// etc
|
||||
},
|
||||
},
|
||||
// etc
|
||||
},
|
||||
"objects": {
|
||||
"lara": {"name": "Lara"},
|
||||
// etc
|
||||
},
|
||||
"game_strings": {
|
||||
"STATS_TIME_TAKEN": "...",
|
||||
// etc
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
<table>
|
||||
<tr valign="top" align="left">
|
||||
<th>Property</th>
|
||||
<th>Type</th>
|
||||
<th>Required</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<code>levels</code>
|
||||
</td>
|
||||
<td>Object array</td>
|
||||
<td>No</td>
|
||||
<td>
|
||||
This is where overrides for individual level details are defined. If a
|
||||
level doesn't override a string through its <code>objects</code> or
|
||||
<code>game_strings</code>, it'll be looked up in the global scope next.
|
||||
If the global scope doesn't define it either, it'll default to an
|
||||
internal default value shipped with the engine.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<code>objects</code>
|
||||
</td>
|
||||
<td>Object array</td>
|
||||
<td>No</td>
|
||||
<td>
|
||||
Object-related strings.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<code>game_strings</code>
|
||||
</td>
|
||||
<td>String-to-string map</td>
|
||||
<td>No</td>
|
||||
<td>
|
||||
General game/UI strings.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<code>name</code>
|
||||
</td>
|
||||
<td>String</td>
|
||||
<td>No</td>
|
||||
<td colspan="2">
|
||||
Allows to rename any object, including key items and pickups.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<code>description</code>
|
||||
</td>
|
||||
<td>String</td>
|
||||
<td>No</td>
|
||||
<td colspan="2">
|
||||
Allows longer text descriptions to be defined for key and puzzle items.
|
||||
Players can examine items in the inventory when this text has been
|
||||
defined. Use <code>\n</code> in the text to create new lines; you can also
|
||||
use <code>\f</code> to force a page break. Long text will be automatically
|
||||
wrapped and paginated as necessary. If an empty string is defined, the UI
|
||||
will not be shown and the inventory item simply focused instead.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Common Object IDs and names
|
||||
|
||||
| JSON key | Object ID (TR1) | Object ID (TR2) |
|
||||
|------------|-----------------|-----------------|
|
||||
| `key_1` | 129 and 133 | 193 and 197 |
|
||||
| `key_2` | 130 and 134 | 194 and 198 |
|
||||
| `key_3` | 131 and 135 | 195 and 199 |
|
||||
| `key_4` | 132 and 136 | 196 and 200 |
|
||||
| `pickup_1` | 141 and 148 | 205 and 207 |
|
||||
| `pickup_2` | 142 and 149 | 206 and 208 |
|
||||
| `puzzle_1` | 110 and 114 | 174 and 178 |
|
||||
| `puzzle_2` | 111 and 115 | 175 and 179 |
|
||||
| `puzzle_3` | 112 and 116 | 176 and 180 |
|
||||
| `puzzle_4` | 113 and 117 | 177 and 181 |
|
||||
| `secret_1` | - | 190 |
|
||||
| `secret_2` | - | 191 |
|
||||
| `secret_3` | - | 192 |
|
||||
|
||||
> [!NOTE]
|
||||
> Nearly all pickup items exist in two forms, as early games differentiate
|
||||
> between a sprite displayed on the ground and a 3D object depicted in the
|
||||
> inventory ring. Secrets are a notable exception, as they never appear in the
|
||||
> inventory ring in the original game. For convenience, both forms are defined
|
||||
> using a single key.
|
||||
|
||||
## Usage Guidelines
|
||||
- Levels are zero-indexed and match the order with the game flow file.
|
||||
- It doesn't make sense to ship a custom level with all of the strings defined.
|
||||
Actually, your file should be as small as possible - the game will fall back to the
|
||||
built-in defaults for you! For example - the following document is perfectly fine:
|
||||
```json5
|
||||
{
|
||||
"levels": [
|
||||
{
|
||||
"objects": {
|
||||
{"name": "key_1": "Gold Key"},
|
||||
},
|
||||
},
|
||||
]
|
||||
}
|
||||
```
|
||||
- Sometimes it makes sense to rename not just puzzle items and keys, but also
|
||||
other objects, such as enemies. A great example of this is TR2 object
|
||||
#⁠39 - usually it's a tiger, but in the snow levels it becomes a snow
|
||||
leopard.
|
||||
- TRX gives a name to all objects. Even when the player cannot normally see
|
||||
names of objects other than pickups and special inventory ring items, these
|
||||
are used in console commands such as `/tp` and `/give` – for example, `/tp
|
||||
tiger` should teleport Lara to the object #⁠39.
|
||||
- For a full list of object IDs for a particular engine, please refer to the
|
||||
game strings files shipped with relevant TRX builds.
|
|
@ -42,11 +42,6 @@ various pieces of global behaviour.
|
|||
// etc
|
||||
}
|
||||
],
|
||||
"strings": {
|
||||
"HEADING_INVENTORY": "INVENTORY",
|
||||
"HEADING_GAME_OVER": "GAME OVER",
|
||||
// etc
|
||||
},
|
||||
```
|
||||
</details>
|
||||
|
||||
|
@ -193,17 +188,6 @@ various pieces of global behaviour.
|
|||
<code>savegame_fmt_legacy</code>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<code>strings</code>
|
||||
</td>
|
||||
<td>String-to-string map</td>
|
||||
<td>Yes</td>
|
||||
<td>
|
||||
All language used in the game is defined here. Edit the right-hand values
|
||||
only.
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<a name="water-color"></a>
|
||||
|
@ -259,16 +243,6 @@ Following are each of the properties available within a level.
|
|||
{"type": "start_game"},
|
||||
// etc
|
||||
],
|
||||
"strings": {
|
||||
"key1": "Silver Key",
|
||||
"puzzle2": "Machine Cog",
|
||||
// etc
|
||||
},
|
||||
"examine": {
|
||||
"key1": "This shows when the player examines key1 in the inventory.",
|
||||
"puzzle2": "You can use \n to make new lines and \f to make new pages.",
|
||||
// etc
|
||||
},
|
||||
},
|
||||
```
|
||||
</details>
|
||||
|
@ -313,22 +287,6 @@ Following are each of the properties available within a level.
|
|||
for details.
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<code>examine</code>
|
||||
</td>
|
||||
<td>String-to-string map</td>
|
||||
<td>No</td>
|
||||
<td colspan="2">
|
||||
Allows longer text descriptions to be defined for key and puzzle items,
|
||||
over and above the names defined in <code>strings</code> (see below).
|
||||
Players can examine items in the inventory when this text has been
|
||||
defined. Use <code>\n</code> in the text to create new lines; you can also
|
||||
use <code>\f</code> to force a page break. Long text will be automatically
|
||||
wrapped and paginated as necessary. If an empty string is defined, the UI
|
||||
will not be shown and the inventory item simply focussed instead.
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<code>file</code>
|
||||
|
@ -401,86 +359,6 @@ Following are each of the properties available within a level.
|
|||
<a href="#sequences">Sequences</a> for full details.
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td rowspan="12">
|
||||
<code>strings</code>
|
||||
</td>
|
||||
<td rowspan="12">String-to-string map</td>
|
||||
<td rowspan="12">No</td>
|
||||
<td colspan="2">
|
||||
Key and puzzle item names. The possible types are as follows. If this map
|
||||
is missing, or is missing an item's name, the game will use a suitable
|
||||
default value.
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<strong>String ID</strong>
|
||||
</td>
|
||||
<td>
|
||||
<strong>Description</strong>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<code>key1</code>
|
||||
</td>
|
||||
<td>Describes pickup object ID 129 in the inventory top-ring.</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<code>key2</code>
|
||||
</td>
|
||||
<td>Describes pickup object ID 130 in the inventory top-ring.</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<code>key3</code>
|
||||
</td>
|
||||
<td>Describes pickup object ID 131 in the inventory top-ring.</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<code>key4</code>
|
||||
</td>
|
||||
<td>Describes pickup object ID 132 in the inventory top-ring.</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<code>pickup1</code>
|
||||
</td>
|
||||
<td>Describes pickup object ID 141 in the inventory top-ring.</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<code>pickup2</code>
|
||||
</td>
|
||||
<td>Describes pickup object ID 142 in the inventory top-ring.</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<code>puzzle1</code>
|
||||
</td>
|
||||
<td>Describes pickup object ID 110 in the inventory top-ring.</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<code>puzzle2</code>
|
||||
</td>
|
||||
<td>Describes pickup object ID 111 in the inventory top-ring.</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<code>puzzle3</code>
|
||||
</td>
|
||||
<td>Describes pickup object ID 112 in the inventory top-ring.</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<code>puzzle4</code>
|
||||
</td>
|
||||
<td>Describes pickup object ID 113 in the inventory top-ring.</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>
|
||||
<code>title</code>
|
||||
|
@ -935,7 +813,6 @@ game will exit to title.
|
|||
{"type": "level_stats", "level_id": 1},
|
||||
{"type": "exit_to_level", "level_id": 2},
|
||||
],
|
||||
"strings": {},
|
||||
},
|
||||
|
||||
{
|
||||
|
@ -950,7 +827,6 @@ game will exit to title.
|
|||
{"type": "level_stats", "level_id": 2},
|
||||
{"type": "exit_to_level", "level_id": 3},
|
||||
],
|
||||
"strings": {},
|
||||
},
|
||||
|
||||
{
|
||||
|
@ -971,7 +847,6 @@ game will exit to title.
|
|||
{"type": "total_stats", "picture_path": "data/install.pcx"},
|
||||
{"type": "exit_to_level", "level_id": 4},
|
||||
],
|
||||
"strings": {},
|
||||
},
|
||||
|
||||
{
|
||||
|
@ -986,7 +861,6 @@ game will exit to title.
|
|||
{"type": "stop_game"},
|
||||
{"type": "exit_to_cine", "level_id": 6},
|
||||
],
|
||||
"strings": {},
|
||||
},
|
||||
|
||||
{
|
||||
|
@ -1003,7 +877,6 @@ game will exit to title.
|
|||
{"type": "total_stats", "picture_path": "data/install.pcx"},
|
||||
{"type": "exit_to_title"},
|
||||
],
|
||||
"strings": {},
|
||||
},
|
||||
|
||||
{
|
||||
|
@ -1021,7 +894,6 @@ game will exit to title.
|
|||
{"type": "level_stats", "level_id": 4},
|
||||
{"type": "exit_to_level", "level_id": 5},
|
||||
],
|
||||
"strings": {},
|
||||
},
|
||||
```
|
||||
</details>
|
||||
|
@ -1066,10 +938,6 @@ the engine's overall item limit).
|
|||
{"type": "level_stats", "level_id": 1},
|
||||
{"type": "exit_to_level", "level_id": 2},
|
||||
],
|
||||
"strings": {
|
||||
"key1": "Silver Key",
|
||||
"puzzle2": "Machine Cog",
|
||||
},
|
||||
},
|
||||
```
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
#if TR_VERSION == 1
|
||||
#include "aliases_tr1.def"
|
||||
#elif TR_VERSION == 2
|
||||
#include "aliases_tr2.def"
|
||||
#endif
|
|
@ -1,56 +0,0 @@
|
|||
OBJ_ALIAS_DEFINE(O_PISTOL_ITEM, GS_ID(INV_ITEM_PISTOLS))
|
||||
OBJ_ALIAS_DEFINE(O_PISTOL_OPTION, GS_ID(INV_ITEM_PISTOLS))
|
||||
OBJ_ALIAS_DEFINE(O_SHOTGUN_ITEM, GS_ID(INV_ITEM_SHOTGUN))
|
||||
OBJ_ALIAS_DEFINE(O_SHOTGUN_OPTION, GS_ID(INV_ITEM_SHOTGUN))
|
||||
OBJ_ALIAS_DEFINE(O_MAGNUM_ITEM, GS_ID(INV_ITEM_MAGNUM))
|
||||
OBJ_ALIAS_DEFINE(O_MAGNUM_OPTION, GS_ID(INV_ITEM_MAGNUM))
|
||||
OBJ_ALIAS_DEFINE(O_UZI_ITEM, GS_ID(INV_ITEM_UZI))
|
||||
OBJ_ALIAS_DEFINE(O_UZI_OPTION, GS_ID(INV_ITEM_UZI))
|
||||
OBJ_ALIAS_DEFINE(O_PISTOL_AMMO_ITEM, GS_ID(INV_ITEM_PISTOL_AMMO))
|
||||
OBJ_ALIAS_DEFINE(O_PISTOL_AMMO_OPTION, GS_ID(INV_ITEM_PISTOL_AMMO))
|
||||
OBJ_ALIAS_DEFINE(O_SG_AMMO_ITEM, GS_ID(INV_ITEM_SHOTGUN_AMMO))
|
||||
OBJ_ALIAS_DEFINE(O_SG_AMMO_OPTION, GS_ID(INV_ITEM_SHOTGUN_AMMO))
|
||||
OBJ_ALIAS_DEFINE(O_MAG_AMMO_ITEM, GS_ID(INV_ITEM_MAGNUM_AMMO))
|
||||
OBJ_ALIAS_DEFINE(O_MAG_AMMO_OPTION, GS_ID(INV_ITEM_MAGNUM_AMMO))
|
||||
OBJ_ALIAS_DEFINE(O_UZI_AMMO_ITEM, GS_ID(INV_ITEM_UZI_AMMO))
|
||||
OBJ_ALIAS_DEFINE(O_UZI_AMMO_OPTION, GS_ID(INV_ITEM_UZI_AMMO))
|
||||
OBJ_ALIAS_DEFINE(O_EXPLOSIVE_ITEM, GS_ID(INV_ITEM_GRENADE))
|
||||
OBJ_ALIAS_DEFINE(O_EXPLOSIVE_OPTION, GS_ID(INV_ITEM_GRENADE))
|
||||
OBJ_ALIAS_DEFINE(O_MEDI_ITEM, GS_ID(INV_ITEM_SMALL_MEDIPACK))
|
||||
OBJ_ALIAS_DEFINE(O_MEDI_OPTION, GS_ID(INV_ITEM_SMALL_MEDIPACK))
|
||||
OBJ_ALIAS_DEFINE(O_BIGMEDI_ITEM, GS_ID(INV_ITEM_LARGE_MEDIPACK))
|
||||
OBJ_ALIAS_DEFINE(O_BIGMEDI_OPTION, GS_ID(INV_ITEM_LARGE_MEDIPACK))
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_ITEM_1, GS_ID(INV_ITEM_PUZZLE_1))
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_OPTION_1, GS_ID(INV_ITEM_PUZZLE_1))
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_ITEM_2, GS_ID(INV_ITEM_PUZZLE_2))
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_OPTION_2, GS_ID(INV_ITEM_PUZZLE_2))
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_ITEM_3, GS_ID(INV_ITEM_PUZZLE_3))
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_OPTION_3, GS_ID(INV_ITEM_PUZZLE_3))
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_ITEM_4, GS_ID(INV_ITEM_PUZZLE_4))
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_OPTION_4, GS_ID(INV_ITEM_PUZZLE_4))
|
||||
OBJ_ALIAS_DEFINE(O_KEY_ITEM_1, GS_ID(INV_ITEM_KEY_1))
|
||||
OBJ_ALIAS_DEFINE(O_KEY_OPTION_1, GS_ID(INV_ITEM_KEY_1))
|
||||
OBJ_ALIAS_DEFINE(O_KEY_ITEM_2, GS_ID(INV_ITEM_KEY_2))
|
||||
OBJ_ALIAS_DEFINE(O_KEY_OPTION_2, GS_ID(INV_ITEM_KEY_2))
|
||||
OBJ_ALIAS_DEFINE(O_KEY_ITEM_3, GS_ID(INV_ITEM_KEY_3))
|
||||
OBJ_ALIAS_DEFINE(O_KEY_OPTION_3, GS_ID(INV_ITEM_KEY_3))
|
||||
OBJ_ALIAS_DEFINE(O_KEY_ITEM_4, GS_ID(INV_ITEM_KEY_4))
|
||||
OBJ_ALIAS_DEFINE(O_KEY_OPTION_4, GS_ID(INV_ITEM_KEY_4))
|
||||
OBJ_ALIAS_DEFINE(O_PICKUP_ITEM_1, GS_ID(INV_ITEM_PICKUP_1))
|
||||
OBJ_ALIAS_DEFINE(O_PICKUP_OPTION_1, GS_ID(INV_ITEM_PICKUP_1))
|
||||
OBJ_ALIAS_DEFINE(O_PICKUP_ITEM_2, GS_ID(INV_ITEM_PICKUP_2))
|
||||
OBJ_ALIAS_DEFINE(O_PICKUP_OPTION_2, GS_ID(INV_ITEM_PICKUP_2))
|
||||
OBJ_ALIAS_DEFINE(O_LEADBAR_ITEM, GS_ID(INV_ITEM_LEADBAR))
|
||||
OBJ_ALIAS_DEFINE(O_LEADBAR_OPTION, GS_ID(INV_ITEM_LEADBAR))
|
||||
OBJ_ALIAS_DEFINE(O_SCION_ITEM_1, GS_ID(INV_ITEM_SCION))
|
||||
OBJ_ALIAS_DEFINE(O_SCION_ITEM_2, GS_ID(INV_ITEM_SCION))
|
||||
OBJ_ALIAS_DEFINE(O_SCION_ITEM_3, GS_ID(INV_ITEM_SCION))
|
||||
OBJ_ALIAS_DEFINE(O_SCION_ITEM_4, GS_ID(INV_ITEM_SCION))
|
||||
OBJ_ALIAS_DEFINE(O_SCION_OPTION, GS_ID(INV_ITEM_SCION))
|
||||
OBJ_ALIAS_DEFINE(O_COMPASS_OPTION, GS_ID(INV_ITEM_COMPASS))
|
||||
OBJ_ALIAS_DEFINE(O_PASSPORT_OPTION, GS_ID(INV_ITEM_GAME))
|
||||
OBJ_ALIAS_DEFINE(O_PASSPORT_CLOSED, GS_ID(INV_ITEM_GAME))
|
||||
OBJ_ALIAS_DEFINE(O_DETAIL_OPTION, GS_ID(INV_ITEM_DETAILS))
|
||||
OBJ_ALIAS_DEFINE(O_SOUND_OPTION, GS_ID(INV_ITEM_SOUND))
|
||||
OBJ_ALIAS_DEFINE(O_CONTROL_OPTION, GS_ID(INV_ITEM_CONTROLS))
|
||||
OBJ_ALIAS_DEFINE(O_PHOTO_OPTION, GS_ID(INV_ITEM_LARAS_HOME))
|
|
@ -1,62 +0,0 @@
|
|||
OBJ_ALIAS_DEFINE(O_COMPASS_OPTION, GS_ID(INV_ITEM_STOPWATCH))
|
||||
OBJ_ALIAS_DEFINE(O_COMPASS_ITEM, GS_ID(INV_ITEM_STOPWATCH))
|
||||
OBJ_ALIAS_DEFINE(O_PISTOL_ITEM, GS_ID(INV_ITEM_PISTOLS))
|
||||
OBJ_ALIAS_DEFINE(O_PISTOL_OPTION, GS_ID(INV_ITEM_PISTOLS))
|
||||
OBJ_ALIAS_DEFINE(O_FLARE_ITEM, GS_ID(INV_ITEM_FLARE))
|
||||
OBJ_ALIAS_DEFINE(O_FLARES_OPTION, GS_ID(INV_ITEM_FLARE))
|
||||
OBJ_ALIAS_DEFINE(O_SHOTGUN_ITEM, GS_ID(INV_ITEM_SHOTGUN))
|
||||
OBJ_ALIAS_DEFINE(O_SHOTGUN_OPTION, GS_ID(INV_ITEM_SHOTGUN))
|
||||
OBJ_ALIAS_DEFINE(O_MAGNUM_ITEM, GS_ID(INV_ITEM_MAGNUMS))
|
||||
OBJ_ALIAS_DEFINE(O_MAGNUM_OPTION, GS_ID(INV_ITEM_MAGNUMS))
|
||||
OBJ_ALIAS_DEFINE(O_UZI_ITEM, GS_ID(INV_ITEM_UZIS))
|
||||
OBJ_ALIAS_DEFINE(O_UZI_OPTION, GS_ID(INV_ITEM_UZIS))
|
||||
OBJ_ALIAS_DEFINE(O_HARPOON_ITEM, GS_ID(INV_ITEM_HARPOON))
|
||||
OBJ_ALIAS_DEFINE(O_HARPOON_OPTION, GS_ID(INV_ITEM_HARPOON))
|
||||
OBJ_ALIAS_DEFINE(O_M16_ITEM, GS_ID(INV_ITEM_M16))
|
||||
OBJ_ALIAS_DEFINE(O_M16_OPTION, GS_ID(INV_ITEM_M16))
|
||||
OBJ_ALIAS_DEFINE(O_GRENADE_ITEM, GS_ID(INV_ITEM_GRENADE))
|
||||
OBJ_ALIAS_DEFINE(O_GRENADE_OPTION, GS_ID(INV_ITEM_GRENADE))
|
||||
OBJ_ALIAS_DEFINE(O_PISTOL_AMMO_ITEM, GS_ID(INV_ITEM_PISTOL_AMMO))
|
||||
OBJ_ALIAS_DEFINE(O_PISTOL_AMMO_OPTION, GS_ID(INV_ITEM_PISTOL_AMMO))
|
||||
OBJ_ALIAS_DEFINE(O_SHOTGUN_AMMO_ITEM, GS_ID(INV_ITEM_SHOTGUN_AMMO))
|
||||
OBJ_ALIAS_DEFINE(O_SHOTGUN_AMMO_OPTION, GS_ID(INV_ITEM_SHOTGUN_AMMO))
|
||||
OBJ_ALIAS_DEFINE(O_MAGNUM_AMMO_ITEM, GS_ID(INV_ITEM_MAGNUM_AMMO))
|
||||
OBJ_ALIAS_DEFINE(O_MAGNUM_AMMO_OPTION, GS_ID(INV_ITEM_MAGNUM_AMMO))
|
||||
OBJ_ALIAS_DEFINE(O_UZI_AMMO_ITEM, GS_ID(INV_ITEM_UZI_AMMO))
|
||||
OBJ_ALIAS_DEFINE(O_UZI_AMMO_OPTION, GS_ID(INV_ITEM_UZI_AMMO))
|
||||
OBJ_ALIAS_DEFINE(O_HARPOON_AMMO_ITEM, GS_ID(INV_ITEM_HARPOON_AMMO))
|
||||
OBJ_ALIAS_DEFINE(O_HARPOON_AMMO_OPTION, GS_ID(INV_ITEM_HARPOON_AMMO))
|
||||
OBJ_ALIAS_DEFINE(O_M16_AMMO_ITEM, GS_ID(INV_ITEM_M16_AMMO))
|
||||
OBJ_ALIAS_DEFINE(O_M16_AMMO_OPTION, GS_ID(INV_ITEM_M16_AMMO))
|
||||
OBJ_ALIAS_DEFINE(O_GRENADE_AMMO_ITEM, GS_ID(INV_ITEM_GRENADE_AMMO))
|
||||
OBJ_ALIAS_DEFINE(O_GRENADE_AMMO_OPTION, GS_ID(INV_ITEM_GRENADE_AMMO))
|
||||
OBJ_ALIAS_DEFINE(O_SMALL_MEDIPACK_ITEM, GS_ID(INV_ITEM_SMALL_MEDIPACK))
|
||||
OBJ_ALIAS_DEFINE(O_SMALL_MEDIPACK_OPTION, GS_ID(INV_ITEM_SMALL_MEDIPACK))
|
||||
OBJ_ALIAS_DEFINE(O_LARGE_MEDIPACK_ITEM, GS_ID(INV_ITEM_LARGE_MEDIPACK))
|
||||
OBJ_ALIAS_DEFINE(O_LARGE_MEDIPACK_OPTION, GS_ID(INV_ITEM_LARGE_MEDIPACK))
|
||||
OBJ_ALIAS_DEFINE(O_PICKUP_ITEM_1, GS_ID(INV_ITEM_PICKUP_1))
|
||||
OBJ_ALIAS_DEFINE(O_PICKUP_OPTION_1, GS_ID(INV_ITEM_PICKUP_1))
|
||||
OBJ_ALIAS_DEFINE(O_PICKUP_ITEM_2, GS_ID(INV_ITEM_PICKUP_2))
|
||||
OBJ_ALIAS_DEFINE(O_PICKUP_OPTION_2, GS_ID(INV_ITEM_PICKUP_2))
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_ITEM_1, GS_ID(INV_ITEM_PUZZLE_1))
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_OPTION_1, GS_ID(INV_ITEM_PUZZLE_1))
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_ITEM_2, GS_ID(INV_ITEM_PUZZLE_2))
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_OPTION_2, GS_ID(INV_ITEM_PUZZLE_2))
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_ITEM_3, GS_ID(INV_ITEM_PUZZLE_3))
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_OPTION_3, GS_ID(INV_ITEM_PUZZLE_3))
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_ITEM_4, GS_ID(INV_ITEM_PUZZLE_4))
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_OPTION_4, GS_ID(INV_ITEM_PUZZLE_4))
|
||||
OBJ_ALIAS_DEFINE(O_KEY_ITEM_1, GS_ID(INV_ITEM_KEY_1))
|
||||
OBJ_ALIAS_DEFINE(O_KEY_OPTION_1, GS_ID(INV_ITEM_KEY_1))
|
||||
OBJ_ALIAS_DEFINE(O_KEY_ITEM_2, GS_ID(INV_ITEM_KEY_2))
|
||||
OBJ_ALIAS_DEFINE(O_KEY_OPTION_2, GS_ID(INV_ITEM_KEY_2))
|
||||
OBJ_ALIAS_DEFINE(O_KEY_ITEM_3, GS_ID(INV_ITEM_KEY_3))
|
||||
OBJ_ALIAS_DEFINE(O_KEY_OPTION_3, GS_ID(INV_ITEM_KEY_3))
|
||||
OBJ_ALIAS_DEFINE(O_KEY_ITEM_4, GS_ID(INV_ITEM_KEY_4))
|
||||
OBJ_ALIAS_DEFINE(O_KEY_OPTION_4, GS_ID(INV_ITEM_KEY_4))
|
||||
OBJ_ALIAS_DEFINE(O_PASSPORT_OPTION, GS_ID(INV_ITEM_GAME))
|
||||
OBJ_ALIAS_DEFINE(O_PASSPORT_CLOSED, GS_ID(INV_ITEM_GAME))
|
||||
OBJ_ALIAS_DEFINE(O_DETAIL_OPTION, GS_ID(INV_ITEM_DETAILS))
|
||||
OBJ_ALIAS_DEFINE(O_SOUND_OPTION, GS_ID(INV_ITEM_SOUND))
|
||||
OBJ_ALIAS_DEFINE(O_CONTROL_OPTION, GS_ID(INV_ITEM_CONTROLS))
|
||||
OBJ_ALIAS_DEFINE(O_PHOTO_OPTION, GS_ID(INV_ITEM_LARAS_HOME))
|
|
@ -8,6 +8,7 @@
|
|||
#include "memory.h"
|
||||
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
|
||||
typedef void (*M_LOAD_STRING_FUNC)(const char *, const char *);
|
||||
|
||||
|
@ -15,168 +16,116 @@ GS_FILE g_GST_File = {};
|
|||
|
||||
static struct {
|
||||
GAME_OBJECT_ID object_id;
|
||||
GAME_STRING_ID game_string_id;
|
||||
} m_ObjectAliases[] = {
|
||||
#define OBJ_ALIAS_DEFINE(object_id_, game_string_id_) \
|
||||
{ .object_id = object_id_, .game_string_id = game_string_id_ },
|
||||
#include "./aliases.def"
|
||||
const char *key_name;
|
||||
} m_ObjectKeyNames[] = {
|
||||
#define OBJ_ALIAS_DEFINE(object_id_, source_object_id_)
|
||||
#define OBJ_NAME_DEFINE(object_id_, key_name_, default_name) \
|
||||
{ .object_id = object_id_, .key_name = key_name_ },
|
||||
#include "game/objects/names.def"
|
||||
#undef OBJ_ALIAS_DEFINE
|
||||
#undef OBJ_NAME_DEFINE
|
||||
{ .object_id = NO_OBJECT },
|
||||
};
|
||||
|
||||
static void M_GameStringTableEntry_Free(GS_TABLE_ENTRY *entry);
|
||||
static void M_GameStringTable_Free(GS_TABLE *gs_table);
|
||||
static void M_GameStringFile_Free(GS_FILE *gs_file);
|
||||
static void M_ApplyGameString(const char *key, const char *value);
|
||||
static void M_ApplyObjectName(const char *key, const char *value);
|
||||
static void M_ApplyObjectDescription(const char *key, const char *value);
|
||||
static void M_ApplyEntries(
|
||||
const GS_TABLE_ENTRY *const entries, M_LOAD_STRING_FUNC load_func);
|
||||
static void M_ApplyStrings(
|
||||
const GS_TABLE_ENTRY *global_entries, const GS_TABLE_ENTRY *level_entries,
|
||||
M_LOAD_STRING_FUNC load_func);
|
||||
static void M_ApplyGameStrings(const GS_FILE *gs_table, int32_t level_num);
|
||||
static void M_ApplyObjectNames(const GS_FILE *gs_table, int32_t level_num);
|
||||
static void M_ApplyObjectDescriptions(
|
||||
const GS_FILE *gs_table, int32_t level_num);
|
||||
static struct {
|
||||
GAME_OBJECT_ID target_object_id;
|
||||
GAME_OBJECT_ID source_object_id;
|
||||
} m_ObjectAliases[] = {
|
||||
#define OBJ_ALIAS_DEFINE(target_object_id_, source_object_id_) \
|
||||
{ .target_object_id = target_object_id_, \
|
||||
.source_object_id = source_object_id_ },
|
||||
#define OBJ_NAME_DEFINE(object_id_, key_name_, default_name)
|
||||
#include "game/objects/names.def"
|
||||
#undef OBJ_ALIAS_DEFINE
|
||||
#undef OBJ_NAME_DEFINE
|
||||
{ .target_object_id = NO_OBJECT },
|
||||
};
|
||||
|
||||
static void M_GameStringTableEntry_Free(GS_TABLE_ENTRY *const entry)
|
||||
static GAME_OBJECT_ID M_GetObjectID(const char *const key);
|
||||
static void M_Apply(const GS_TABLE *table);
|
||||
|
||||
static GAME_OBJECT_ID M_GetObjectID(const char *const key)
|
||||
{
|
||||
if (entry == NULL) {
|
||||
return;
|
||||
for (int32_t i = 0; m_ObjectKeyNames[i].object_id != NO_OBJECT; i++) {
|
||||
if (strcmp(m_ObjectKeyNames[i].key_name, key) == 0) {
|
||||
return m_ObjectKeyNames[i].object_id;
|
||||
}
|
||||
}
|
||||
GS_TABLE_ENTRY *cur = entry;
|
||||
while (cur->key != NULL) {
|
||||
Memory_FreePointer(&cur->key);
|
||||
Memory_FreePointer(&cur->value);
|
||||
cur++;
|
||||
}
|
||||
Memory_Free(entry);
|
||||
return NO_OBJECT;
|
||||
}
|
||||
|
||||
static void M_GameStringTable_Free(GS_TABLE *const gs_table)
|
||||
static void M_DoObjectAliases(void)
|
||||
{
|
||||
M_GameStringTableEntry_Free(gs_table->object_names);
|
||||
gs_table->object_names = NULL;
|
||||
M_GameStringTableEntry_Free(gs_table->object_descriptions);
|
||||
gs_table->object_descriptions = NULL;
|
||||
M_GameStringTableEntry_Free(gs_table->game_strings);
|
||||
gs_table->game_strings = NULL;
|
||||
}
|
||||
|
||||
static void M_GameStringFile_Free(GS_FILE *const gs_file)
|
||||
{
|
||||
M_GameStringTable_Free(&gs_file->global);
|
||||
for (int32_t i = 0; i < gs_file->level_count; i++) {
|
||||
M_GameStringTable_Free(&gs_file->levels[i]);
|
||||
}
|
||||
Memory_FreePointer(&gs_file->levels);
|
||||
gs_file->level_count = 0;
|
||||
}
|
||||
|
||||
static void M_ApplyGameString(const char *const key, const char *const value)
|
||||
{
|
||||
if (!GameString_IsKnown(key)) {
|
||||
LOG_ERROR("Invalid game string key: %s", key);
|
||||
} else if (value == NULL) {
|
||||
LOG_ERROR("Invalid game string value: %s", key);
|
||||
} else {
|
||||
GameString_Define(key, value);
|
||||
}
|
||||
}
|
||||
|
||||
static void M_ApplyObjectName(const char *const key, const char *const value)
|
||||
{
|
||||
const GAME_OBJECT_ID object_id =
|
||||
ENUM_MAP_GET(GAME_OBJECT_ID, key, NO_OBJECT);
|
||||
if (object_id == NO_OBJECT) {
|
||||
LOG_ERROR("Invalid object id: %s", key);
|
||||
} else {
|
||||
Object_SetName(object_id, value);
|
||||
}
|
||||
}
|
||||
|
||||
static void M_ApplyObjectDescription(
|
||||
const char *const key, const char *const value)
|
||||
{
|
||||
const GAME_OBJECT_ID object_id =
|
||||
ENUM_MAP_GET(GAME_OBJECT_ID, key, NO_OBJECT);
|
||||
if (object_id == NO_OBJECT) {
|
||||
LOG_ERROR("Invalid object id: %s", key);
|
||||
} else {
|
||||
Object_SetDescription(object_id, value);
|
||||
}
|
||||
}
|
||||
|
||||
static void M_ApplyEntries(
|
||||
const GS_TABLE_ENTRY *entries, const M_LOAD_STRING_FUNC load_func)
|
||||
{
|
||||
while (entries != NULL && entries->key != NULL) {
|
||||
load_func(entries->key, entries->value);
|
||||
entries++;
|
||||
}
|
||||
}
|
||||
|
||||
static void M_ApplyStrings(
|
||||
const GS_TABLE_ENTRY *const global_entries,
|
||||
const GS_TABLE_ENTRY *const level_entries,
|
||||
const M_LOAD_STRING_FUNC load_func)
|
||||
{
|
||||
M_ApplyEntries(global_entries, load_func);
|
||||
if (level_entries != NULL) {
|
||||
M_ApplyEntries(level_entries, load_func);
|
||||
}
|
||||
}
|
||||
|
||||
static void M_ApplyGameStrings(
|
||||
const GS_FILE *const gs_file, const int32_t level_num)
|
||||
{
|
||||
ASSERT(level_num >= -1 && level_num < gs_file->level_count);
|
||||
M_ApplyStrings(
|
||||
gs_file->global.game_strings,
|
||||
level_num != -1 ? gs_file->levels[level_num].game_strings : NULL,
|
||||
M_ApplyGameString);
|
||||
}
|
||||
|
||||
static void M_ApplyObjectNames(
|
||||
const GS_FILE *const gs_file, const int32_t level_num)
|
||||
{
|
||||
ASSERT(level_num >= -1 && level_num < gs_file->level_count);
|
||||
M_ApplyStrings(
|
||||
gs_file->global.object_names,
|
||||
level_num != -1 ? gs_file->levels[level_num].object_names : NULL,
|
||||
M_ApplyObjectName);
|
||||
}
|
||||
|
||||
static void M_ApplyObjectDescriptions(
|
||||
const GS_FILE *const gs_file, const int32_t level_num)
|
||||
{
|
||||
ASSERT(level_num >= -1 && level_num < gs_file->level_count);
|
||||
M_ApplyStrings(
|
||||
gs_file->global.object_descriptions,
|
||||
level_num != -1 ? gs_file->levels[level_num].object_descriptions : NULL,
|
||||
M_ApplyObjectDescription);
|
||||
}
|
||||
|
||||
void GameStringTable_Apply(const int32_t level_num)
|
||||
{
|
||||
Object_ResetNames();
|
||||
|
||||
const GS_FILE *const gs_file = &g_GST_File;
|
||||
M_ApplyObjectNames(gs_file, level_num);
|
||||
M_ApplyObjectDescriptions(gs_file, level_num);
|
||||
M_ApplyGameStrings(gs_file, level_num);
|
||||
|
||||
for (int32_t i = 0; m_ObjectAliases[i].object_id != NO_OBJECT; i++) {
|
||||
const char *const new_name =
|
||||
GameString_Get(m_ObjectAliases[i].game_string_id);
|
||||
if (new_name != NULL) {
|
||||
Object_SetName(m_ObjectAliases[i].object_id, new_name);
|
||||
for (int32_t i = 0; m_ObjectAliases[i].target_object_id != NO_OBJECT; i++) {
|
||||
const GAME_OBJECT_ID target_object_id =
|
||||
m_ObjectAliases[i].target_object_id;
|
||||
const GAME_OBJECT_ID source_object_id =
|
||||
m_ObjectAliases[i].source_object_id;
|
||||
Object_SetName(target_object_id, Object_GetName(source_object_id));
|
||||
const char *const description = Object_GetDescription(source_object_id);
|
||||
if (description != NULL) {
|
||||
Object_SetDescription(target_object_id, description);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void M_Apply(const GS_TABLE *const table)
|
||||
{
|
||||
{
|
||||
const GS_GAME_STRING_ENTRY *cur = table->game_strings;
|
||||
while (cur != NULL && cur->key != NULL) {
|
||||
if (!GameString_IsKnown(cur->key)) {
|
||||
LOG_ERROR("Invalid game string key: %s", cur->key);
|
||||
} else if (cur->value == NULL) {
|
||||
LOG_ERROR("Invalid game string value: %s", cur->key);
|
||||
} else {
|
||||
GameString_Define(cur->key, cur->value);
|
||||
}
|
||||
cur++;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
const GS_OBJECT_ENTRY *cur = table->objects;
|
||||
while (cur != NULL && cur->key != NULL) {
|
||||
const GAME_OBJECT_ID object_id = M_GetObjectID(cur->key);
|
||||
if (object_id == NO_OBJECT) {
|
||||
LOG_ERROR("Invalid object id: %s", cur->key);
|
||||
} else {
|
||||
if (cur->name == NULL) {
|
||||
LOG_ERROR("Invalid object name: %s", cur->key);
|
||||
} else {
|
||||
Object_SetName(object_id, cur->name);
|
||||
}
|
||||
if (cur->description != NULL) {
|
||||
Object_SetDescription(object_id, cur->description);
|
||||
}
|
||||
}
|
||||
cur++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void GameStringTable_Apply(const int32_t level_num)
|
||||
{
|
||||
const GS_FILE *const gs_file = &g_GST_File;
|
||||
|
||||
if (level_num < -1 || level_num >= gs_file->level_count) {
|
||||
LOG_WARNING(
|
||||
"Trying to apply unavailable strings for level %d", level_num);
|
||||
return;
|
||||
}
|
||||
|
||||
LOG_DEBUG("loading file %d", level_num);
|
||||
Object_ResetNames();
|
||||
M_Apply(&gs_file->global);
|
||||
if (level_num != -1) {
|
||||
M_Apply(&gs_file->levels[level_num]);
|
||||
}
|
||||
M_DoObjectAliases();
|
||||
}
|
||||
|
||||
void GameStringTable_Shutdown(void)
|
||||
{
|
||||
M_GameStringFile_Free(&g_GST_File);
|
||||
GS_File_Free(&g_GST_File);
|
||||
}
|
||||
|
|
47
src/libtrx/game/game_string_table/priv.c
Normal file
47
src/libtrx/game/game_string_table/priv.c
Normal file
|
@ -0,0 +1,47 @@
|
|||
#include "game/game_string_table/priv.h"
|
||||
|
||||
#include "memory.h"
|
||||
|
||||
void GS_Table_Free(GS_TABLE *const gs_table)
|
||||
{
|
||||
if (gs_table == NULL) {
|
||||
return;
|
||||
}
|
||||
if (gs_table->objects != NULL) {
|
||||
GS_OBJECT_ENTRY *cur = gs_table->objects;
|
||||
while (cur->key != NULL) {
|
||||
Memory_FreePointer(&cur->key);
|
||||
Memory_FreePointer(&cur->name);
|
||||
Memory_FreePointer(&cur->description);
|
||||
cur++;
|
||||
}
|
||||
Memory_Free(gs_table->objects);
|
||||
gs_table->objects = NULL;
|
||||
}
|
||||
|
||||
if (gs_table->game_strings != NULL) {
|
||||
GS_GAME_STRING_ENTRY *cur = gs_table->game_strings;
|
||||
while (cur->key != NULL) {
|
||||
Memory_FreePointer(&cur->key);
|
||||
Memory_FreePointer(&cur->value);
|
||||
cur++;
|
||||
}
|
||||
Memory_Free(gs_table->game_strings);
|
||||
gs_table->game_strings = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void GS_File_Free(GS_FILE *const gs_file)
|
||||
{
|
||||
if (gs_file == NULL) {
|
||||
return;
|
||||
}
|
||||
GS_Table_Free(&gs_file->global);
|
||||
if (gs_file->levels != NULL) {
|
||||
for (int32_t i = 0; i < gs_file->level_count; i++) {
|
||||
GS_Table_Free(&gs_file->levels[i]);
|
||||
}
|
||||
}
|
||||
Memory_FreePointer(&gs_file->levels);
|
||||
gs_file->level_count = 0;
|
||||
}
|
|
@ -4,13 +4,18 @@
|
|||
|
||||
typedef struct {
|
||||
const char *key;
|
||||
const char *value;
|
||||
} GS_TABLE_ENTRY;
|
||||
const char *name;
|
||||
const char *description;
|
||||
} GS_OBJECT_ENTRY;
|
||||
|
||||
typedef struct {
|
||||
GS_TABLE_ENTRY *object_names;
|
||||
GS_TABLE_ENTRY *object_descriptions;
|
||||
GS_TABLE_ENTRY *game_strings;
|
||||
const char *key;
|
||||
const char *value;
|
||||
} GS_GAME_STRING_ENTRY;
|
||||
|
||||
typedef struct {
|
||||
GS_OBJECT_ENTRY *objects;
|
||||
GS_GAME_STRING_ENTRY *game_strings;
|
||||
} GS_TABLE;
|
||||
|
||||
typedef struct {
|
||||
|
@ -20,3 +25,6 @@ typedef struct {
|
|||
} GS_FILE;
|
||||
|
||||
extern GS_FILE g_GST_File;
|
||||
|
||||
void GS_Table_Free(GS_TABLE *gs_table);
|
||||
void GS_File_Free(GS_FILE *gs_file);
|
||||
|
|
|
@ -1,47 +1,89 @@
|
|||
|
||||
#include "filesystem.h"
|
||||
#include "game/game_string_table.h"
|
||||
#include "game/game_string_table/priv.h"
|
||||
#include "game/gameflow.h"
|
||||
#include "json.h"
|
||||
#include "log.h"
|
||||
#include "memory.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
static bool M_LoadTableFromJSON(
|
||||
JSON_OBJECT *root_obj, const char *key, GS_TABLE_ENTRY **dest);
|
||||
static bool M_LoadTableFromJSON(JSON_OBJECT *root_obj, GS_TABLE *out_table);
|
||||
static bool M_LoadLevelsFromJSON(JSON_OBJECT *obj, GS_FILE *gs_file);
|
||||
|
||||
static bool M_LoadTableFromJSON(
|
||||
JSON_OBJECT *const root_obj, const char *const key, GS_TABLE_ENTRY **dest)
|
||||
JSON_OBJECT *const root_obj, GS_TABLE *const out_table)
|
||||
{
|
||||
const JSON_OBJECT *const strings_obj = JSON_ObjectGetObject(root_obj, key);
|
||||
if (strings_obj == NULL) {
|
||||
// key is missing - rely on default strings
|
||||
return true;
|
||||
}
|
||||
bool result = true;
|
||||
|
||||
*dest = Memory_Alloc(sizeof(GS_TABLE_ENTRY) * (strings_obj->length + 1));
|
||||
// Load objects
|
||||
JSON_OBJECT *const jobjs = JSON_ObjectGetObject(root_obj, "objects");
|
||||
if (jobjs != NULL) {
|
||||
const size_t object_count = jobjs->length;
|
||||
out_table->objects =
|
||||
Memory_Alloc(sizeof(GS_OBJECT_ENTRY) * (object_count + 1));
|
||||
|
||||
GS_TABLE_ENTRY *cur = *dest;
|
||||
JSON_OBJECT_ELEMENT *strings_elem = strings_obj->start;
|
||||
for (size_t i = 0; i < strings_obj->length;
|
||||
i++, strings_elem = strings_elem->next) {
|
||||
const char *const key = strings_elem->name->string;
|
||||
const char *const value = JSON_ObjectGetString(strings_obj, key, NULL);
|
||||
if (value == NULL) {
|
||||
LOG_ERROR("invalid string key %s", strings_elem->name->string);
|
||||
return NULL;
|
||||
JSON_OBJECT_ELEMENT *jobj_elem = jobjs->start;
|
||||
for (size_t i = 0; i < object_count; i++, jobj_elem = jobj_elem->next) {
|
||||
JSON_OBJECT *const jobj_obj = JSON_ValueAsObject(jobj_elem->value);
|
||||
|
||||
const char *const key = jobj_elem->name->string;
|
||||
const char *const name =
|
||||
JSON_ObjectGetString(jobj_obj, "name", JSON_INVALID_STRING);
|
||||
const char *const description = JSON_ObjectGetString(
|
||||
jobj_obj, "description", JSON_INVALID_STRING);
|
||||
|
||||
if (key == JSON_INVALID_STRING) {
|
||||
LOG_WARNING(
|
||||
"Invalid game string object entry %d: missing key.", i);
|
||||
} else if (name == JSON_INVALID_STRING) {
|
||||
LOG_WARNING(
|
||||
"Invalid game string object entry %s: missing value.", key);
|
||||
} else {
|
||||
GS_OBJECT_ENTRY *const object_entry = &out_table->objects[i];
|
||||
object_entry->key = Memory_DupStr(key);
|
||||
object_entry->name = Memory_DupStr(name);
|
||||
object_entry->description = description != JSON_INVALID_STRING
|
||||
? Memory_DupStr(description)
|
||||
: NULL;
|
||||
}
|
||||
}
|
||||
cur->key = Memory_DupStr(key);
|
||||
cur->value = Memory_DupStr(value);
|
||||
cur++;
|
||||
}
|
||||
|
||||
cur->key = NULL;
|
||||
cur->value = NULL;
|
||||
return true;
|
||||
// Load game_strings
|
||||
JSON_OBJECT *const jgs_obj = JSON_ObjectGetObject(root_obj, "game_strings");
|
||||
if (jgs_obj != NULL) {
|
||||
const size_t gs_count = jgs_obj->length;
|
||||
out_table->game_strings =
|
||||
Memory_Alloc(sizeof(GS_GAME_STRING_ENTRY) * (gs_count + 1));
|
||||
|
||||
JSON_OBJECT_ELEMENT *jgs_elem = jgs_obj->start;
|
||||
for (size_t i = 0; i < gs_count; i++, jgs_elem = jgs_elem->next) {
|
||||
JSON_OBJECT *const jgs_obj = JSON_ValueAsObject(jgs_elem->value);
|
||||
|
||||
const char *const key = jgs_elem->name->string;
|
||||
const char *const value =
|
||||
JSON_ValueGetString(jgs_elem->value, JSON_INVALID_STRING);
|
||||
|
||||
if (key == JSON_INVALID_STRING) {
|
||||
LOG_WARNING("Invalid game string entry %d: missing key.", i);
|
||||
} else if (value == JSON_INVALID_STRING) {
|
||||
LOG_WARNING("Invalid game string entry %d: missing value.", i);
|
||||
} else {
|
||||
GS_GAME_STRING_ENTRY *const gs_entry =
|
||||
&out_table->game_strings[i];
|
||||
gs_entry->key = Memory_DupStr(key);
|
||||
gs_entry->value = Memory_DupStr(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
end:
|
||||
if (!result) {
|
||||
if (out_table != NULL) {
|
||||
GS_Table_Free(out_table);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
static bool M_LoadLevelsFromJSON(JSON_OBJECT *const obj, GS_FILE *const gs_file)
|
||||
|
@ -55,22 +97,12 @@ static bool M_LoadLevelsFromJSON(JSON_OBJECT *const obj, GS_FILE *const gs_file)
|
|||
goto end;
|
||||
}
|
||||
|
||||
int32_t level_count = jlvl_arr->length;
|
||||
if (level_count != GameFlow_GetLevelCount()) {
|
||||
LOG_ERROR(
|
||||
"'levels' must have exactly %d levels, as we still rely on legacy "
|
||||
"tombpc.dat",
|
||||
GameFlow_GetLevelCount());
|
||||
result = false;
|
||||
goto end;
|
||||
}
|
||||
|
||||
gs_file->level_count = level_count;
|
||||
gs_file->levels = Memory_Alloc(sizeof(GS_TABLE) * level_count);
|
||||
gs_file->level_count = jlvl_arr->length;
|
||||
gs_file->levels = Memory_Alloc(sizeof(GS_TABLE) * jlvl_arr->length);
|
||||
|
||||
JSON_ARRAY_ELEMENT *jlvl_elem = jlvl_arr->start;
|
||||
for (size_t i = 0; i < jlvl_arr->length; i++, jlvl_elem = jlvl_elem->next) {
|
||||
GS_TABLE *const level = &gs_file->levels[i];
|
||||
GS_TABLE *const level_table = &gs_file->levels[i];
|
||||
|
||||
JSON_OBJECT *const jlvl_obj = JSON_ValueAsObject(jlvl_elem->value);
|
||||
if (jlvl_obj == NULL) {
|
||||
|
@ -79,12 +111,7 @@ static bool M_LoadLevelsFromJSON(JSON_OBJECT *const obj, GS_FILE *const gs_file)
|
|||
goto end;
|
||||
}
|
||||
|
||||
result &=
|
||||
M_LoadTableFromJSON(jlvl_obj, "object_names", &level->object_names);
|
||||
result &= M_LoadTableFromJSON(
|
||||
jlvl_obj, "object_descriptions", &level->object_descriptions);
|
||||
result &=
|
||||
M_LoadTableFromJSON(jlvl_obj, "game_strings", &level->game_strings);
|
||||
result &= M_LoadTableFromJSON(jlvl_obj, level_table);
|
||||
}
|
||||
|
||||
end:
|
||||
|
@ -120,12 +147,7 @@ bool GameStringTable_LoadFromFile(const char *const path)
|
|||
|
||||
GS_FILE *const gs_file = &g_GST_File;
|
||||
JSON_OBJECT *root_obj = JSON_ValueAsObject(root);
|
||||
result &= M_LoadTableFromJSON(
|
||||
root_obj, "object_names", &gs_file->global.object_names);
|
||||
result &= M_LoadTableFromJSON(
|
||||
root_obj, "object_descriptions", &gs_file->global.object_descriptions);
|
||||
result &= M_LoadTableFromJSON(
|
||||
root_obj, "game_strings", &gs_file->global.game_strings);
|
||||
result &= M_LoadTableFromJSON(root_obj, &gs_file->global);
|
||||
result &= M_LoadLevelsFromJSON(root_obj, gs_file);
|
||||
|
||||
end:
|
||||
|
|
|
@ -58,8 +58,20 @@ void Object_ResetNames(void)
|
|||
{
|
||||
M_ClearNames();
|
||||
|
||||
#define OBJ_NAME_DEFINE(object_id, name) Object_SetName(object_id, name);
|
||||
// first set up the names
|
||||
#define OBJ_ALIAS_DEFINE(target_object_id, source_object_id)
|
||||
#define OBJ_NAME_DEFINE(object_id, key, name) Object_SetName(object_id, name);
|
||||
#include "game/objects/names.def"
|
||||
#undef OBJ_NAME_DEFINE
|
||||
#undef OBJ_ALIAS_DEFINE
|
||||
|
||||
// then do the aliases
|
||||
#define OBJ_ALIAS_DEFINE(target_object_id, source_object_id) \
|
||||
Object_SetName(target_object_id, Object_GetName(source_object_id));
|
||||
#define OBJ_NAME_DEFINE(object_id, key, name)
|
||||
#include "game/objects/names.def"
|
||||
#undef OBJ_NAME_DEFINE
|
||||
#undef OBJ_ALIAS_DEFINE
|
||||
}
|
||||
|
||||
GAME_OBJECT_ID *Object_IdsFromName(
|
||||
|
|
|
@ -109,23 +109,6 @@ GS_DEFINE(MISC_EXIT, "Exit")
|
|||
GS_DEFINE(STATS_BASIC_FMT, "%d")
|
||||
GS_DEFINE(STATS_DETAIL_FMT, "%d of %d")
|
||||
GS_DEFINE(STATS_FINAL_STATISTICS, "Final Statistics")
|
||||
GS_DEFINE(INV_ITEM_GAME, "Game")
|
||||
GS_DEFINE(INV_ITEM_PUZZLE_1, "Puzzle")
|
||||
GS_DEFINE(INV_ITEM_PUZZLE_2, "Puzzle")
|
||||
GS_DEFINE(INV_ITEM_PUZZLE_3, "Puzzle")
|
||||
GS_DEFINE(INV_ITEM_PUZZLE_4, "Puzzle")
|
||||
GS_DEFINE(INV_ITEM_KEY_1, "Key")
|
||||
GS_DEFINE(INV_ITEM_KEY_2, "Key")
|
||||
GS_DEFINE(INV_ITEM_KEY_3, "Key")
|
||||
GS_DEFINE(INV_ITEM_KEY_4, "Key")
|
||||
GS_DEFINE(INV_ITEM_PICKUP_1, "Pickup")
|
||||
GS_DEFINE(INV_ITEM_PICKUP_2, "Pickup")
|
||||
GS_DEFINE(INV_ITEM_LARAS_HOME, "Lara's Home")
|
||||
GS_DEFINE(INV_ITEM_SMALL_MEDIPACK, "Small Medi Pack")
|
||||
GS_DEFINE(INV_ITEM_LARGE_MEDIPACK, "Large Medi Pack")
|
||||
GS_DEFINE(INV_ITEM_DETAILS, "Detail Levels")
|
||||
GS_DEFINE(INV_ITEM_SOUND, "Sound")
|
||||
GS_DEFINE(INV_ITEM_CONTROLS, "Controls")
|
||||
GS_DEFINE(PASSPORT_SELECT_LEVEL, "Select Level")
|
||||
GS_DEFINE(PASSPORT_LOAD_GAME, "Load Game")
|
||||
GS_DEFINE(PASSPORT_SAVE_GAME, "Save Game")
|
||||
|
|
|
@ -1,136 +1,198 @@
|
|||
OBJ_NAME_DEFINE(O_LARA, "Lara")
|
||||
OBJ_NAME_DEFINE(O_PISTOL_ANIM, "Pistols Animation")
|
||||
OBJ_NAME_DEFINE(O_SHOTGUN_ANIM, "Shotgun Animation")
|
||||
OBJ_NAME_DEFINE(O_MAGNUM_ANIM, "Magnums Animation")
|
||||
OBJ_NAME_DEFINE(O_UZI_ANIM, "Uzis Animation")
|
||||
OBJ_NAME_DEFINE(O_LARA_EXTRA, "Lara's Extra Animation")
|
||||
OBJ_NAME_DEFINE(O_BACON_LARA, "Bacon Lara")
|
||||
OBJ_NAME_DEFINE(O_WOLF, "Wolf")
|
||||
OBJ_NAME_DEFINE(O_BEAR, "Bear")
|
||||
OBJ_NAME_DEFINE(O_BAT, "Bat")
|
||||
OBJ_NAME_DEFINE(O_CROCODILE, "Crocodile")
|
||||
OBJ_NAME_DEFINE(O_ALLIGATOR, "Alligator")
|
||||
OBJ_NAME_DEFINE(O_LION, "Lion")
|
||||
OBJ_NAME_DEFINE(O_LIONESS, "Lioness")
|
||||
OBJ_NAME_DEFINE(O_PUMA, "Puma")
|
||||
OBJ_NAME_DEFINE(O_APE, "Ape")
|
||||
OBJ_NAME_DEFINE(O_RAT, "Rat")
|
||||
OBJ_NAME_DEFINE(O_VOLE, "Vole")
|
||||
OBJ_NAME_DEFINE(O_TREX, "T-Rex")
|
||||
OBJ_NAME_DEFINE(O_RAPTOR, "Raptor")
|
||||
OBJ_NAME_DEFINE(O_WARRIOR_1, "Mutant 1")
|
||||
OBJ_NAME_DEFINE(O_WARRIOR_2, "Mutant 2")
|
||||
OBJ_NAME_DEFINE(O_WARRIOR_3, "Mutant 3")
|
||||
OBJ_NAME_DEFINE(O_CENTAUR, "Centaur")
|
||||
OBJ_NAME_DEFINE(O_MUMMY, "Mummy")
|
||||
OBJ_NAME_DEFINE(O_DINO_WARRIOR, "Dino Mutant")
|
||||
OBJ_NAME_DEFINE(O_FISH, "Mutant Fish")
|
||||
OBJ_NAME_DEFINE(O_LARSON, "Larson")
|
||||
OBJ_NAME_DEFINE(O_PIERRE, "Pierre")
|
||||
OBJ_NAME_DEFINE(O_SKATEBOARD, "Skateboard")
|
||||
OBJ_NAME_DEFINE(O_SKATEKID, "Skate Kid")
|
||||
OBJ_NAME_DEFINE(O_COWBOY, "Cowboy")
|
||||
OBJ_NAME_DEFINE(O_BALDY, "Baldy")
|
||||
OBJ_NAME_DEFINE(O_NATLA, "Natla")
|
||||
OBJ_NAME_DEFINE(O_TORSO, "Torso")
|
||||
OBJ_NAME_DEFINE(O_FALLING_BLOCK, "Falling Block")
|
||||
OBJ_NAME_DEFINE(O_PENDULUM, "Pendulum")
|
||||
OBJ_NAME_DEFINE(O_SPIKES, "Spikes")
|
||||
OBJ_NAME_DEFINE(O_ROLLING_BALL, "Boulder")
|
||||
OBJ_NAME_DEFINE(O_DART, "Dart")
|
||||
OBJ_NAME_DEFINE(O_DART_EMITTER, "Dart Emitter")
|
||||
OBJ_NAME_DEFINE(O_DRAWBRIDGE, "Drawbridge")
|
||||
OBJ_NAME_DEFINE(O_TEETH_TRAP, "Teeth Trap")
|
||||
OBJ_NAME_DEFINE(O_DAMOCLES_SWORD, "Damocles Sword")
|
||||
OBJ_NAME_DEFINE(O_THORS_HANDLE, "Thor's Hammer Handle")
|
||||
OBJ_NAME_DEFINE(O_THORS_HEAD, "Thor's Hammer")
|
||||
OBJ_NAME_DEFINE(O_LIGHTNING_EMITTER, "Lightning Emitter")
|
||||
OBJ_NAME_DEFINE(O_MOVING_BAR, "Moving Bar")
|
||||
OBJ_NAME_DEFINE(O_MOVABLE_BLOCK_1, "Push Block 1")
|
||||
OBJ_NAME_DEFINE(O_MOVABLE_BLOCK_2, "Push Block 2")
|
||||
OBJ_NAME_DEFINE(O_MOVABLE_BLOCK_3, "Push Block 3")
|
||||
OBJ_NAME_DEFINE(O_MOVABLE_BLOCK_4, "Push Block 4")
|
||||
OBJ_NAME_DEFINE(O_SLIDING_PILLAR, "Sliding Pillar")
|
||||
OBJ_NAME_DEFINE(O_FALLING_CEILING_1, "Falling Ceiling 1")
|
||||
OBJ_NAME_DEFINE(O_FALLING_CEILING_2, "Falling Ceiling 2")
|
||||
OBJ_NAME_DEFINE(O_SWITCH_TYPE_1, "Switch 1")
|
||||
OBJ_NAME_DEFINE(O_SWITCH_TYPE_2, "Switch 2")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_1, "Door 1")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_2, "Door 2")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_3, "Door 3")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_4, "Door 4")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_5, "Door 5")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_6, "Door 6")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_7, "Door 7")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_8, "Door 8")
|
||||
OBJ_NAME_DEFINE(O_TRAPDOOR_1, "Trapdoor 1")
|
||||
OBJ_NAME_DEFINE(O_TRAPDOOR_2, "Trapdoor 2")
|
||||
OBJ_NAME_DEFINE(O_BIGTRAPDOOR, "Big Trapdoor")
|
||||
OBJ_NAME_DEFINE(O_BRIDGE_FLAT, "Bridge Flat")
|
||||
OBJ_NAME_DEFINE(O_BRIDGE_TILT_1, "Bridge Tilt 1")
|
||||
OBJ_NAME_DEFINE(O_BRIDGE_TILT_2, "Bridge Tilt 2")
|
||||
OBJ_NAME_DEFINE(O_COG_1, "Cog 1")
|
||||
OBJ_NAME_DEFINE(O_COG_2, "Cog 2")
|
||||
OBJ_NAME_DEFINE(O_COG_3, "Cog 3")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_1, "Cutscene Actor 1")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_2, "Cutscene Actor 2")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_3, "Cutscene Actor 3")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_4, "Cutscene Actor 4")
|
||||
OBJ_NAME_DEFINE(O_MAP_CLOSED, "Map Closed")
|
||||
OBJ_NAME_DEFINE(O_SAVEGAME_ITEM, "Savegame Crystal")
|
||||
OBJ_NAME_DEFINE(O_GAMMA_OPTION, "Gamma")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_HOLE_1, "Puzzle Hole 1 (Empty)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_HOLE_2, "Puzzle Hole 2 (Empty)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_HOLE_3, "Puzzle Hole 3 (Empty)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_HOLE_4, "Puzzle Hole 4 (Empty)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_DONE_1, "Puzzle Hole 1 (Done)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_DONE_2, "Puzzle Hole 2 (Done)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_DONE_3, "Puzzle Hole 3 (Done)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_DONE_4, "Puzzle Hole 4 (Done)")
|
||||
OBJ_NAME_DEFINE(O_MIDAS_TOUCH, "Midas Hand")
|
||||
OBJ_NAME_DEFINE(O_KEY_HOLE_1, "Keyhole 1")
|
||||
OBJ_NAME_DEFINE(O_KEY_HOLE_2, "Keyhole 1")
|
||||
OBJ_NAME_DEFINE(O_KEY_HOLE_3, "Keyhole 1")
|
||||
OBJ_NAME_DEFINE(O_KEY_HOLE_4, "Keyhole 1")
|
||||
OBJ_NAME_DEFINE(O_SCION_HOLDER, "Scion Holder")
|
||||
OBJ_NAME_DEFINE(O_EXPLOSION_1, "Explosion 1")
|
||||
OBJ_NAME_DEFINE(O_EXPLOSION_2, "Explosion 2")
|
||||
OBJ_NAME_DEFINE(O_SPLASH_1, "Splash 1")
|
||||
OBJ_NAME_DEFINE(O_SPLASH_2, "Splash 2")
|
||||
OBJ_NAME_DEFINE(O_BUBBLES_1, "Bubbles 1")
|
||||
OBJ_NAME_DEFINE(O_BUBBLES_2, "Bubbles 2")
|
||||
OBJ_NAME_DEFINE(O_BUBBLE_EMITTER, "Bubbles Emitter")
|
||||
OBJ_NAME_DEFINE(O_BLOOD_1, "Blood 1")
|
||||
OBJ_NAME_DEFINE(O_BLOOD_2, "Blood 2")
|
||||
OBJ_NAME_DEFINE(O_DART_EFFECT, "Dart Effect")
|
||||
OBJ_NAME_DEFINE(O_STATUE, "Statue")
|
||||
OBJ_NAME_DEFINE(O_PORTACABIN, "Portable Cabin")
|
||||
OBJ_NAME_DEFINE(O_PODS, "Pod")
|
||||
OBJ_NAME_DEFINE(O_RICOCHET_1, "Ricochet")
|
||||
OBJ_NAME_DEFINE(O_TWINKLE, "Sparkles")
|
||||
OBJ_NAME_DEFINE(O_GUN_FLASH, "Gun Flash")
|
||||
OBJ_NAME_DEFINE(O_DUST, "Dust")
|
||||
OBJ_NAME_DEFINE(O_BODY_PART, "Body Part")
|
||||
OBJ_NAME_DEFINE(O_CAMERA_TARGET, "Camera Target")
|
||||
OBJ_NAME_DEFINE(O_WATERFALL, "Waterfall Mist")
|
||||
OBJ_NAME_DEFINE(O_MISSILE_1, "Missile 1")
|
||||
OBJ_NAME_DEFINE(O_MISSILE_2, "Missile 2")
|
||||
OBJ_NAME_DEFINE(O_MISSILE_3, "Missile 3")
|
||||
OBJ_NAME_DEFINE(O_MISSILE_4, "Missile 4")
|
||||
OBJ_NAME_DEFINE(O_MISSILE_5, "Missile 5")
|
||||
OBJ_NAME_DEFINE(O_EMBER, "Ember")
|
||||
OBJ_NAME_DEFINE(O_EMBER_EMITTER, "Ember Emitter")
|
||||
OBJ_NAME_DEFINE(O_FLAME, "Flame")
|
||||
OBJ_NAME_DEFINE(O_FLAME_EMITTER, "Flame Emitter")
|
||||
OBJ_NAME_DEFINE(O_LAVA_WEDGE, "Lava Wedge")
|
||||
OBJ_NAME_DEFINE(O_BIG_POD, "Big Pod")
|
||||
OBJ_NAME_DEFINE(O_BOAT, "Boat")
|
||||
OBJ_NAME_DEFINE(O_EARTHQUAKE, "Earthquake")
|
||||
OBJ_NAME_DEFINE(O_SKYBOX, "Skybox")
|
||||
OBJ_NAME_DEFINE(O_PICKUP_AID, "Pickup Aid")
|
||||
OBJ_NAME_DEFINE(O_TEMP_7, "Temp 7")
|
||||
OBJ_NAME_DEFINE(O_TEMP_8, "Temp 8")
|
||||
OBJ_NAME_DEFINE(O_TEMP_9, "Temp 9")
|
||||
OBJ_NAME_DEFINE(O_TEMP_10, "Temp 10")
|
||||
OBJ_NAME_DEFINE(O_HAIR, "Lara's Braid")
|
||||
OBJ_NAME_DEFINE(O_ALPHABET, "Alphabet")
|
||||
// pickups on the ground
|
||||
OBJ_NAME_DEFINE(O_MEDI_ITEM, "small_medipack", "Small Medi Pack")
|
||||
OBJ_NAME_DEFINE(O_BIGMEDI_ITEM, "large_medipack", "Large Medi Pack")
|
||||
OBJ_NAME_DEFINE(O_PISTOL_ITEM, "pistols", "Pistols")
|
||||
OBJ_NAME_DEFINE(O_SHOTGUN_ITEM, "shotgun", "Shotgun")
|
||||
OBJ_NAME_DEFINE(O_MAGNUM_ITEM, "magnums", "Magnums")
|
||||
OBJ_NAME_DEFINE(O_UZI_ITEM, "uzis", "Uzis")
|
||||
OBJ_NAME_DEFINE(O_PISTOL_AMMO_ITEM, "pistol_ammo", "Pistol Clips")
|
||||
OBJ_NAME_DEFINE(O_SG_AMMO_ITEM, "shotgun_ammo", "Shotgun Shells")
|
||||
OBJ_NAME_DEFINE(O_MAG_AMMO_ITEM, "magnums_ammo", "Magnum Clips")
|
||||
OBJ_NAME_DEFINE(O_UZI_AMMO_ITEM, "uzis_ammo", "Uzi Clips")
|
||||
OBJ_NAME_DEFINE(O_EXPLOSIVE_ITEM, "grenade", "Grenade")
|
||||
OBJ_NAME_DEFINE(O_KEY_ITEM_1, "key_1", "Key 1")
|
||||
OBJ_NAME_DEFINE(O_KEY_ITEM_2, "key_2", "Key 2")
|
||||
OBJ_NAME_DEFINE(O_KEY_ITEM_3, "key_3", "Key 3")
|
||||
OBJ_NAME_DEFINE(O_KEY_ITEM_4, "key_4", "Key 4")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_ITEM_1, "puzzle_1", "Puzzle Item 1")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_ITEM_2, "puzzle_2", "Puzzle Item 2")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_ITEM_3, "puzzle_3", "Puzzle Item 3")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_ITEM_4, "puzzle_4", "Puzzle Item 4")
|
||||
OBJ_NAME_DEFINE(O_PICKUP_ITEM_1, "pickup_1", "Pickup Item 1")
|
||||
OBJ_NAME_DEFINE(O_PICKUP_ITEM_2, "pickup_2", "Pickup Item 2")
|
||||
OBJ_NAME_DEFINE(O_LEADBAR_ITEM, "lead_bar", "Lead Bar")
|
||||
OBJ_NAME_DEFINE(O_SCION_ITEM_1, "scion", "Scion")
|
||||
OBJ_ALIAS_DEFINE(O_SCION_ITEM_2, O_SCION_ITEM_1)
|
||||
OBJ_ALIAS_DEFINE(O_SCION_ITEM_3, O_SCION_ITEM_1)
|
||||
OBJ_ALIAS_DEFINE(O_SCION_ITEM_4, O_SCION_ITEM_1)
|
||||
|
||||
// inventory ring
|
||||
OBJ_NAME_DEFINE(O_COMPASS_OPTION, "compass", "Compass")
|
||||
OBJ_NAME_DEFINE(O_PASSPORT_OPTION, "passport", "Game")
|
||||
OBJ_NAME_DEFINE(O_PHOTO_OPTION, "photo", "Lara's Home")
|
||||
OBJ_NAME_DEFINE(O_DETAIL_OPTION, "graphics", "Detail Levels")
|
||||
OBJ_NAME_DEFINE(O_CONTROL_OPTION, "controls", "Controls")
|
||||
OBJ_NAME_DEFINE(O_SOUND_OPTION, "sound", "Sound")
|
||||
OBJ_NAME_DEFINE(O_GAMMA_OPTION, "gamma", "Gamma")
|
||||
OBJ_NAME_DEFINE(O_MAP_CLOSED, "map", "Map")
|
||||
|
||||
OBJ_ALIAS_DEFINE(O_PISTOL_OPTION, O_PISTOL_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_PISTOL_AMMO_OPTION, O_PISTOL_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_SHOTGUN_OPTION, O_SHOTGUN_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_MAGNUM_OPTION, O_MAGNUM_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_UZI_OPTION, O_UZI_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_SG_AMMO_OPTION, O_SG_AMMO_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_MAG_AMMO_OPTION, O_MAG_AMMO_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_UZI_AMMO_OPTION, O_UZI_AMMO_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_EXPLOSIVE_OPTION, O_EXPLOSIVE_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_MEDI_OPTION, O_MEDI_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_BIGMEDI_OPTION, O_BIGMEDI_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_OPTION_1, O_PUZZLE_ITEM_1)
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_OPTION_2, O_PUZZLE_ITEM_2)
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_OPTION_3, O_PUZZLE_ITEM_3)
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_OPTION_4, O_PUZZLE_ITEM_4)
|
||||
OBJ_ALIAS_DEFINE(O_KEY_OPTION_1, O_KEY_ITEM_1)
|
||||
OBJ_ALIAS_DEFINE(O_KEY_OPTION_2, O_KEY_ITEM_2)
|
||||
OBJ_ALIAS_DEFINE(O_KEY_OPTION_3, O_KEY_ITEM_3)
|
||||
OBJ_ALIAS_DEFINE(O_KEY_OPTION_4, O_KEY_ITEM_4)
|
||||
OBJ_ALIAS_DEFINE(O_PICKUP_OPTION_1, O_PICKUP_ITEM_1)
|
||||
OBJ_ALIAS_DEFINE(O_PICKUP_OPTION_2, O_PICKUP_ITEM_2)
|
||||
OBJ_ALIAS_DEFINE(O_LEADBAR_OPTION, O_LEADBAR_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_SCION_OPTION, O_SCION_ITEM_1)
|
||||
OBJ_ALIAS_DEFINE(O_PASSPORT_CLOSED, O_PASSPORT_OPTION)
|
||||
|
||||
// general objects
|
||||
OBJ_NAME_DEFINE(O_LARA, "lara", "Lara")
|
||||
OBJ_NAME_DEFINE(O_PISTOL_ANIM, "pistol_anim", "Pistols Animation")
|
||||
OBJ_NAME_DEFINE(O_SHOTGUN_ANIM, "shotgun_anim", "Shotgun Animation")
|
||||
OBJ_NAME_DEFINE(O_MAGNUM_ANIM, "magnum_anim", "Magnums Animation")
|
||||
OBJ_NAME_DEFINE(O_UZI_ANIM, "uzi_anim", "Uzis Animation")
|
||||
OBJ_NAME_DEFINE(O_LARA_EXTRA, "lara_extra", "Lara's Extra Animation")
|
||||
OBJ_NAME_DEFINE(O_BACON_LARA, "bacon_lara", "Bacon Lara")
|
||||
OBJ_NAME_DEFINE(O_WOLF, "wolf", "Wolf")
|
||||
OBJ_NAME_DEFINE(O_BEAR, "bear", "Bear")
|
||||
OBJ_NAME_DEFINE(O_BAT, "bat", "Bat")
|
||||
OBJ_NAME_DEFINE(O_CROCODILE, "crocodile", "Crocodile")
|
||||
OBJ_NAME_DEFINE(O_ALLIGATOR, "alligator", "Alligator")
|
||||
OBJ_NAME_DEFINE(O_LION, "lion", "Lion")
|
||||
OBJ_NAME_DEFINE(O_LIONESS, "lioness", "Lioness")
|
||||
OBJ_NAME_DEFINE(O_PUMA, "puma", "Puma")
|
||||
OBJ_NAME_DEFINE(O_APE, "ape", "Ape")
|
||||
OBJ_NAME_DEFINE(O_RAT, "rat", "Rat")
|
||||
OBJ_NAME_DEFINE(O_VOLE, "vole", "Vole")
|
||||
OBJ_NAME_DEFINE(O_TREX, "trex", "T-Rex")
|
||||
OBJ_NAME_DEFINE(O_RAPTOR, "raptor", "Raptor")
|
||||
OBJ_NAME_DEFINE(O_WARRIOR_1, "mutant_1", "Mutant 1")
|
||||
OBJ_NAME_DEFINE(O_WARRIOR_2, "mutant_2", "Mutant 2")
|
||||
OBJ_NAME_DEFINE(O_WARRIOR_3, "mutant_3", "Mutant 3")
|
||||
OBJ_NAME_DEFINE(O_CENTAUR, "centaur", "Centaur")
|
||||
OBJ_NAME_DEFINE(O_MUMMY, "mummy", "Mummy")
|
||||
OBJ_NAME_DEFINE(O_DINO_WARRIOR, "dino_mutant", "Dino Mutant")
|
||||
OBJ_NAME_DEFINE(O_FISH, "fish_mutant", "Mutant Fish")
|
||||
OBJ_NAME_DEFINE(O_LARSON, "larson", "Larson")
|
||||
OBJ_NAME_DEFINE(O_PIERRE, "pierre", "Pierre")
|
||||
OBJ_NAME_DEFINE(O_SKATEBOARD, "skateboard", "Skateboard")
|
||||
OBJ_NAME_DEFINE(O_SKATEKID, "skate_kid", "Skate Kid")
|
||||
OBJ_NAME_DEFINE(O_COWBOY, "cowboy", "Cowboy")
|
||||
OBJ_NAME_DEFINE(O_BALDY, "baldy", "Baldy")
|
||||
OBJ_NAME_DEFINE(O_NATLA, "natla", "Natla")
|
||||
OBJ_NAME_DEFINE(O_TORSO, "torso", "Torso")
|
||||
OBJ_NAME_DEFINE(O_FALLING_BLOCK, "falling_block", "Falling Block")
|
||||
OBJ_NAME_DEFINE(O_PENDULUM, "pendulum", "Pendulum")
|
||||
OBJ_NAME_DEFINE(O_SPIKES, "spikes", "Spikes")
|
||||
OBJ_NAME_DEFINE(O_ROLLING_BALL, "rolling_ball", "Boulder")
|
||||
OBJ_NAME_DEFINE(O_DART, "dart", "Dart")
|
||||
OBJ_NAME_DEFINE(O_DART_EMITTER, "dart_emitter", "Dart Emitter")
|
||||
OBJ_NAME_DEFINE(O_DRAWBRIDGE, "drawbridge", "Drawbridge")
|
||||
OBJ_NAME_DEFINE(O_TEETH_TRAP, "teeth_trap", "Teeth Trap")
|
||||
OBJ_NAME_DEFINE(O_DAMOCLES_SWORD, "damocles_sword", "Damocles Sword")
|
||||
OBJ_NAME_DEFINE(O_THORS_HANDLE, "thors_handle", "Thor's Hammer Handle")
|
||||
OBJ_NAME_DEFINE(O_THORS_HEAD, "thors_head", "Thor's Hammer")
|
||||
OBJ_NAME_DEFINE(O_LIGHTNING_EMITTER, "lightning_emitter", "Lightning Emitter")
|
||||
OBJ_NAME_DEFINE(O_MOVING_BAR, "moving_bar", "Moving Bar")
|
||||
OBJ_NAME_DEFINE(O_MOVABLE_BLOCK_1, "movable_block_1", "Push Block 1")
|
||||
OBJ_NAME_DEFINE(O_MOVABLE_BLOCK_2, "movable_block_2", "Push Block 2")
|
||||
OBJ_NAME_DEFINE(O_MOVABLE_BLOCK_3, "movable_block_3", "Push Block 3")
|
||||
OBJ_NAME_DEFINE(O_MOVABLE_BLOCK_4, "movable_block_4", "Push Block 4")
|
||||
OBJ_NAME_DEFINE(O_SLIDING_PILLAR, "sliding_pillar", "Sliding Pillar")
|
||||
OBJ_NAME_DEFINE(O_FALLING_CEILING_1, "falling_ceiling_1", "Falling Ceiling 1")
|
||||
OBJ_NAME_DEFINE(O_FALLING_CEILING_2, "falling_ceiling_2", "Falling Ceiling 2")
|
||||
OBJ_NAME_DEFINE(O_SWITCH_TYPE_1, "switch_1", "Switch 1")
|
||||
OBJ_NAME_DEFINE(O_SWITCH_TYPE_2, "switch_2", "Switch 2")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_1, "door_1", "Door 1")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_2, "door_2", "Door 2")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_3, "door_3", "Door 3")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_4, "door_4", "Door 4")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_5, "door_5", "Door 5")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_6, "door_6", "Door 6")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_7, "door_7", "Door 7")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_8, "door_8", "Door 8")
|
||||
OBJ_NAME_DEFINE(O_TRAPDOOR_1, "trapdoor_1", "Trapdoor 1")
|
||||
OBJ_NAME_DEFINE(O_TRAPDOOR_2, "trapdoor_2", "Trapdoor 2")
|
||||
OBJ_NAME_DEFINE(O_BIGTRAPDOOR, "big_trapdoor", "Big Trapdoor")
|
||||
OBJ_NAME_DEFINE(O_BRIDGE_FLAT, "bridge_flat", "Bridge Flat")
|
||||
OBJ_NAME_DEFINE(O_BRIDGE_TILT_1, "bridge_tilt_1", "Bridge Tilt 1")
|
||||
OBJ_NAME_DEFINE(O_BRIDGE_TILT_2, "bridge_tilt_2", "Bridge Tilt 2")
|
||||
OBJ_NAME_DEFINE(O_COG_1, "cog_1", "Cog 1")
|
||||
OBJ_NAME_DEFINE(O_COG_2, "cog_2", "Cog 2")
|
||||
OBJ_NAME_DEFINE(O_COG_3, "cog_3", "Cog 3")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_1, "player_1", "Cutscene Actor 1")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_2, "player_2", "Cutscene Actor 2")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_3, "player_3", "Cutscene Actor 3")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_4, "player_4", "Cutscene Actor 4")
|
||||
OBJ_NAME_DEFINE(O_SAVEGAME_ITEM, "save_crystal", "Savegame Crystal")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_HOLE_1, "puzzle_hole_1", "Puzzle Hole 1 (Empty)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_HOLE_2, "puzzle_hole_2", "Puzzle Hole 2 (Empty)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_HOLE_3, "puzzle_hole_3", "Puzzle Hole 3 (Empty)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_HOLE_4, "puzzle_hole_4", "Puzzle Hole 4 (Empty)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_DONE_1, "puzzle_done_1", "Puzzle Hole 1 (Done)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_DONE_2, "puzzle_done_2", "Puzzle Hole 2 (Done)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_DONE_3, "puzzle_done_3", "Puzzle Hole 3 (Done)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_DONE_4, "puzzle_done_4", "Puzzle Hole 4 (Done)")
|
||||
OBJ_NAME_DEFINE(O_MIDAS_TOUCH, "midas_touch", "Midas Hand")
|
||||
OBJ_NAME_DEFINE(O_KEY_HOLE_1, "key_hole_1", "Keyhole 1")
|
||||
OBJ_NAME_DEFINE(O_KEY_HOLE_2, "key_hole_2", "Keyhole 1")
|
||||
OBJ_NAME_DEFINE(O_KEY_HOLE_3, "key_hole_3", "Keyhole 1")
|
||||
OBJ_NAME_DEFINE(O_KEY_HOLE_4, "key_hole_4", "Keyhole 1")
|
||||
OBJ_NAME_DEFINE(O_SCION_HOLDER, "scion_holder", "Scion Holder")
|
||||
OBJ_NAME_DEFINE(O_EXPLOSION_1, "explosion_1", "Explosion 1")
|
||||
OBJ_NAME_DEFINE(O_EXPLOSION_2, "explosion_2", "Explosion 2")
|
||||
OBJ_NAME_DEFINE(O_SPLASH_1, "splash_1", "Splash 1")
|
||||
OBJ_NAME_DEFINE(O_SPLASH_2, "splash_2", "Splash 2")
|
||||
OBJ_NAME_DEFINE(O_BUBBLES_1, "bubbles_1", "Bubbles 1")
|
||||
OBJ_NAME_DEFINE(O_BUBBLES_2, "bubbles_2", "Bubbles 2")
|
||||
OBJ_NAME_DEFINE(O_BUBBLE_EMITTER, "bubble_emitter", "Bubbles Emitter")
|
||||
OBJ_NAME_DEFINE(O_BLOOD_1, "blood_1", "Blood 1")
|
||||
OBJ_NAME_DEFINE(O_BLOOD_2, "blood_2", "Blood 2")
|
||||
OBJ_NAME_DEFINE(O_DART_EFFECT, "dart_effect", "Dart Effect")
|
||||
OBJ_NAME_DEFINE(O_STATUE, "statue", "Statue")
|
||||
OBJ_NAME_DEFINE(O_PORTACABIN, "portacabin", "Portable Cabin")
|
||||
OBJ_NAME_DEFINE(O_PODS, "pods", "Pod")
|
||||
OBJ_NAME_DEFINE(O_RICOCHET_1, "ricochet_1", "Ricochet")
|
||||
OBJ_NAME_DEFINE(O_TWINKLE, "twinkle", "Sparkles")
|
||||
OBJ_NAME_DEFINE(O_GUN_FLASH, "gun_flash", "Gun Flash")
|
||||
OBJ_NAME_DEFINE(O_DUST, "dust", "Dust")
|
||||
OBJ_NAME_DEFINE(O_BODY_PART, "body_part", "Body Part")
|
||||
OBJ_NAME_DEFINE(O_CAMERA_TARGET, "camera_target", "Camera Target")
|
||||
OBJ_NAME_DEFINE(O_WATERFALL, "waterfall", "Waterfall Mist")
|
||||
OBJ_NAME_DEFINE(O_MISSILE_1, "missile_1", "Missile 1")
|
||||
OBJ_NAME_DEFINE(O_MISSILE_2, "missile_2", "Missile 2")
|
||||
OBJ_NAME_DEFINE(O_MISSILE_3, "missile_3", "Missile 3")
|
||||
OBJ_NAME_DEFINE(O_MISSILE_4, "missile_4", "Missile 4")
|
||||
OBJ_NAME_DEFINE(O_MISSILE_5, "missile_5", "Missile 5")
|
||||
OBJ_NAME_DEFINE(O_EMBER, "ember", "Ember")
|
||||
OBJ_NAME_DEFINE(O_EMBER_EMITTER, "ember_emitter", "Ember Emitter")
|
||||
OBJ_NAME_DEFINE(O_FLAME, "flame", "Flame")
|
||||
OBJ_NAME_DEFINE(O_FLAME_EMITTER, "flame_emitter", "Flame Emitter")
|
||||
OBJ_NAME_DEFINE(O_LAVA_WEDGE, "lava_wedge", "Lava Wedge")
|
||||
OBJ_NAME_DEFINE(O_BIG_POD, "big_pod", "Big Pod")
|
||||
OBJ_NAME_DEFINE(O_BOAT, "boat", "Boat")
|
||||
OBJ_NAME_DEFINE(O_EARTHQUAKE, "earthquake", "Earthquake")
|
||||
OBJ_NAME_DEFINE(O_SKYBOX, "skybox", "Skybox")
|
||||
OBJ_NAME_DEFINE(O_PICKUP_AID, "pickup_aid", "Pickup Aid")
|
||||
OBJ_NAME_DEFINE(O_TEMP_7, "temp_7", "Temp 7")
|
||||
OBJ_NAME_DEFINE(O_TEMP_8, "temp_8", "Temp 8")
|
||||
OBJ_NAME_DEFINE(O_TEMP_9, "temp_9", "Temp 9")
|
||||
OBJ_NAME_DEFINE(O_TEMP_10, "temp_10", "Temp 10")
|
||||
OBJ_NAME_DEFINE(O_HAIR, "hair", "Lara's Braid")
|
||||
OBJ_NAME_DEFINE(O_ALPHABET, "alphabet", "Alphabet")
|
||||
|
|
|
@ -1,203 +1,270 @@
|
|||
OBJ_NAME_DEFINE(O_LARA, "Lara")
|
||||
OBJ_NAME_DEFINE(O_LARA_PISTOLS, "Pistols Animation")
|
||||
OBJ_NAME_DEFINE(O_LARA_HAIR, "Braid")
|
||||
OBJ_NAME_DEFINE(O_LARA_SHOTGUN, "Shotgun Animation")
|
||||
OBJ_NAME_DEFINE(O_LARA_MAGNUMS, "Magnums Animation")
|
||||
OBJ_NAME_DEFINE(O_LARA_UZIS, "Uzis Animation")
|
||||
OBJ_NAME_DEFINE(O_LARA_M16, "M16 Animation")
|
||||
OBJ_NAME_DEFINE(O_LARA_GRENADE, "Grenade Launcher Animation")
|
||||
OBJ_NAME_DEFINE(O_LARA_HARPOON, "Harpoon Animation")
|
||||
OBJ_NAME_DEFINE(O_LARA_FLARE, "Flare Animation")
|
||||
OBJ_NAME_DEFINE(O_LARA_SKIDOO, "Snowmobile Animation")
|
||||
OBJ_NAME_DEFINE(O_LARA_BOAT, "Boat Animation")
|
||||
OBJ_NAME_DEFINE(O_LARA_EXTRA, "Lara's Extra Animation")
|
||||
OBJ_NAME_DEFINE(O_SKIDOO_FAST, "Red Snowmobile")
|
||||
OBJ_NAME_DEFINE(O_BOAT, "Boat")
|
||||
OBJ_NAME_DEFINE(O_DOG, "Dog")
|
||||
OBJ_NAME_DEFINE(O_CULT_1, "Masked Goon 1")
|
||||
OBJ_NAME_DEFINE(O_CULT_1A, "Masked Goon 2")
|
||||
OBJ_NAME_DEFINE(O_CULT_1B, "Masked Goon 3")
|
||||
OBJ_NAME_DEFINE(O_CULT_2, "Knife Thrower")
|
||||
OBJ_NAME_DEFINE(O_CULT_3, "Shotgun Goon")
|
||||
OBJ_NAME_DEFINE(O_MOUSE, "Rat")
|
||||
OBJ_NAME_DEFINE(O_DRAGON_FRONT, "Dragon Front")
|
||||
OBJ_NAME_DEFINE(O_DRAGON_BACK, "Dragon Back")
|
||||
OBJ_NAME_DEFINE(O_GONDOLA, "Gondola")
|
||||
OBJ_NAME_DEFINE(O_SHARK, "Shark")
|
||||
OBJ_NAME_DEFINE(O_EEL, "Eel")
|
||||
OBJ_NAME_DEFINE(O_BIG_EEL, "Big Eel")
|
||||
OBJ_NAME_DEFINE(O_BARRACUDA, "Barracuda")
|
||||
OBJ_NAME_DEFINE(O_DIVER, "Scuba Diver")
|
||||
OBJ_NAME_DEFINE(O_WORKER_1, "Gunman Goon 1")
|
||||
OBJ_NAME_DEFINE(O_WORKER_2, "Gunman Goon 2")
|
||||
OBJ_NAME_DEFINE(O_WORKER_3, "Stick Wielding Goon 1")
|
||||
OBJ_NAME_DEFINE(O_WORKER_4, "Stick Wielding Goon 2")
|
||||
OBJ_NAME_DEFINE(O_WORKER_5, "Flamethrower Goon")
|
||||
OBJ_NAME_DEFINE(O_JELLY, "Jellyfish")
|
||||
OBJ_NAME_DEFINE(O_SPIDER, "Spider")
|
||||
OBJ_NAME_DEFINE(O_BIG_SPIDER, "Giant Spider")
|
||||
OBJ_NAME_DEFINE(O_CROW, "Crow")
|
||||
OBJ_NAME_DEFINE(O_TIGER, "Tiger")
|
||||
OBJ_NAME_DEFINE(O_BARTOLI, "Marco Bartoli")
|
||||
OBJ_NAME_DEFINE(O_XIAN_SPEARMAN, "Xian Spearman")
|
||||
OBJ_NAME_DEFINE(O_XIAN_SPEARMAN_STATUE, "Xian Spearman Statue")
|
||||
OBJ_NAME_DEFINE(O_XIAN_KNIGHT, "Xian Knight")
|
||||
OBJ_NAME_DEFINE(O_XIAN_KNIGHT_STATUE, "Xian Knight")
|
||||
OBJ_NAME_DEFINE(O_YETI, "Yeti")
|
||||
OBJ_NAME_DEFINE(O_BIRD_GUARDIAN, "Bird Monster")
|
||||
OBJ_NAME_DEFINE(O_EAGLE, "Eagle")
|
||||
OBJ_NAME_DEFINE(O_BANDIT_1, "Mercenary 1")
|
||||
OBJ_NAME_DEFINE(O_BANDIT_2, "Mercenary 2")
|
||||
OBJ_NAME_DEFINE(O_BANDIT_2B, "Mercenary 3")
|
||||
OBJ_NAME_DEFINE(O_SKIDOO_ARMED, "Black Snowmobile")
|
||||
OBJ_NAME_DEFINE(O_SKIDOO_DRIVER, "Black Snowmobile Driver")
|
||||
OBJ_NAME_DEFINE(O_MONK_1, "Monk 1")
|
||||
OBJ_NAME_DEFINE(O_MONK_2, "Monk 2")
|
||||
OBJ_NAME_DEFINE(O_FALLING_BLOCK_1, "Falling Block 1")
|
||||
OBJ_NAME_DEFINE(O_FALLING_BLOCK_2, "Falling Block 2")
|
||||
OBJ_NAME_DEFINE(O_FALLING_BLOCK_3, "Loose Boards")
|
||||
OBJ_NAME_DEFINE(O_PENDULUM_1, "Sandbag")
|
||||
OBJ_NAME_DEFINE(O_SPIKES, "Spikes")
|
||||
OBJ_NAME_DEFINE(O_ROLLING_BALL_1, "Boulder 1")
|
||||
OBJ_NAME_DEFINE(O_DART, "Disc")
|
||||
OBJ_NAME_DEFINE(O_DART_EMITTER, "Disc Emitter")
|
||||
OBJ_NAME_DEFINE(O_DRAWBRIDGE, "Drawbridge")
|
||||
OBJ_NAME_DEFINE(O_TEETH_TRAP, "Teeth Trap")
|
||||
OBJ_NAME_DEFINE(O_LIFT, "Lift")
|
||||
OBJ_NAME_DEFINE(O_GENERAL, "Minisub")
|
||||
OBJ_NAME_DEFINE(O_MOVABLE_BLOCK_1, "Push Block 1")
|
||||
OBJ_NAME_DEFINE(O_MOVABLE_BLOCK_2, "Push Block 2")
|
||||
OBJ_NAME_DEFINE(O_MOVABLE_BLOCK_3, "Push Block 3")
|
||||
OBJ_NAME_DEFINE(O_MOVABLE_BLOCK_4, "Push Block 4")
|
||||
OBJ_NAME_DEFINE(O_BIG_BOWL, "Lava Bowl")
|
||||
OBJ_NAME_DEFINE(O_WINDOW_1, "Breakable Window 1")
|
||||
OBJ_NAME_DEFINE(O_WINDOW_2, "Breakable Window 2")
|
||||
OBJ_NAME_DEFINE(O_WINDOW_3, "Breakable Window 3")
|
||||
OBJ_NAME_DEFINE(O_WINDOW_4, "Breakable Window 4")
|
||||
OBJ_NAME_DEFINE(O_PROPELLER_1, "Airplane Propeller")
|
||||
OBJ_NAME_DEFINE(O_POWER_SAW, "Power Saw")
|
||||
OBJ_NAME_DEFINE(O_HOOK, "Hook")
|
||||
OBJ_NAME_DEFINE(O_FALLING_CEILING, "Falling Ceiling")
|
||||
OBJ_NAME_DEFINE(O_SPINNING_BLADE, "Spinning Blade")
|
||||
OBJ_NAME_DEFINE(O_BLADE, "Wall-mounted Blade")
|
||||
OBJ_NAME_DEFINE(O_KILLER_STATUE, "Statue with Sword")
|
||||
OBJ_NAME_DEFINE(O_ROLLING_BALL_2, "Boulder 2")
|
||||
OBJ_NAME_DEFINE(O_ICICLE, "Icicles")
|
||||
OBJ_NAME_DEFINE(O_SPIKE_WALL, "Spike Wall")
|
||||
OBJ_NAME_DEFINE(O_SPRINGBOARD, "Springboard")
|
||||
OBJ_NAME_DEFINE(O_CEILING_SPIKES, "Spiky Ceiling")
|
||||
OBJ_NAME_DEFINE(O_BELL, "Bell")
|
||||
OBJ_NAME_DEFINE(O_WATER_SPRITE, "Boat Wake")
|
||||
OBJ_NAME_DEFINE(O_SNOW_SPRITE, "Snowmobile Wale")
|
||||
OBJ_NAME_DEFINE(O_SKIDOO_TRACK, "Snowmobile Track")
|
||||
OBJ_NAME_DEFINE(O_SWITCH_TYPE_AIRLOCK, "Airlock Switch")
|
||||
OBJ_NAME_DEFINE(O_SWITCH_TYPE_SMALL, "Small Switch")
|
||||
OBJ_NAME_DEFINE(O_PROPELLER_2, "Underwater Propeller")
|
||||
OBJ_NAME_DEFINE(O_PROPELLER_3, "Air Fan")
|
||||
OBJ_NAME_DEFINE(O_PENDULUM_2, "Swinging Box")
|
||||
OBJ_NAME_DEFINE(O_MESH_SWAP_1, "Mesh Swap 1")
|
||||
OBJ_NAME_DEFINE(O_MESH_SWAP_2, "Mesh Swap 2")
|
||||
OBJ_NAME_DEFINE(O_LARA_SWAP, "Lara Mesh Swap")
|
||||
OBJ_NAME_DEFINE(O_TEXT_BOX, "UI Frame")
|
||||
OBJ_NAME_DEFINE(O_ROLLING_BALL_3, "Boulder 3")
|
||||
OBJ_NAME_DEFINE(O_ZIPLINE_HANDLE, "Zipline Handle")
|
||||
OBJ_NAME_DEFINE(O_SWITCH_TYPE_BUTTON, "Switch Button")
|
||||
OBJ_NAME_DEFINE(O_SWITCH_TYPE_NORMAL, "Lever/Switch")
|
||||
OBJ_NAME_DEFINE(O_SWITCH_TYPE_UW, "Underwater Lever/Switch")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_1, "Door 1")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_2, "Door 2")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_3, "Door 3")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_4, "Door 4")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_5, "Door 5")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_6, "Door 6")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_7, "Door 7")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_8, "Door 8")
|
||||
OBJ_NAME_DEFINE(O_TRAPDOOR_TYPE_1, "Trapdoor 1")
|
||||
OBJ_NAME_DEFINE(O_TRAPDOOR_TYPE_2, "Trapdoor 2")
|
||||
OBJ_NAME_DEFINE(O_TRAPDOOR_TYPE_3, "Trapdoor 3")
|
||||
OBJ_NAME_DEFINE(O_BRIDGE_FLAT, "Bridge Flat")
|
||||
OBJ_NAME_DEFINE(O_BRIDGE_TILT_1, "Bridge Tilt 1")
|
||||
OBJ_NAME_DEFINE(O_BRIDGE_TILT_2, "Bridge Tilt 2")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_1, "Cutscene Actor 1")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_2, "Cutscene Actor 2")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_3, "Cutscene Actor 3")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_4, "Cutscene Actor 4")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_5, "Cutscene Actor 5")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_6, "Cutscene Actor 6")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_7, "Cutscene Actor 7")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_8, "Cutscene Actor 8")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_9, "Cutscene Actor 9")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_10, "Cutscene Actor 10")
|
||||
OBJ_NAME_DEFINE(O_FLARES_ITEM, "Flares Box")
|
||||
OBJ_NAME_DEFINE(O_GAMMA_OPTION, "Gamma Option")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_HOLE_1, "Puzzle Hole 1 (Empty)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_HOLE_2, "Puzzle Hole 2 (Empty)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_HOLE_3, "Puzzle Hole 3 (Empty)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_HOLE_4, "Puzzle Hole 4 (Empty)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_DONE_1, "Puzzle Hole 1 (Done)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_DONE_2, "Puzzle Hole 2 (Done)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_DONE_3, "Puzzle Hole 3 (Done)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_DONE_4, "Puzzle Hole 4 (Done)")
|
||||
OBJ_NAME_DEFINE(O_SECRET_1, "Secret 1")
|
||||
OBJ_NAME_DEFINE(O_SECRET_2, "Secret 2")
|
||||
OBJ_NAME_DEFINE(O_SECRET_3, "Secret 3")
|
||||
OBJ_NAME_DEFINE(O_KEY_HOLE_1, "Keyhole 1")
|
||||
OBJ_NAME_DEFINE(O_KEY_HOLE_2, "Keyhole 2")
|
||||
OBJ_NAME_DEFINE(O_KEY_HOLE_3, "Keyhole 3")
|
||||
OBJ_NAME_DEFINE(O_KEY_HOLE_4, "Keyhole 4")
|
||||
OBJ_NAME_DEFINE(O_SPHERE_OF_DOOM_1, "Dragon Explosion 1")
|
||||
OBJ_NAME_DEFINE(O_SPHERE_OF_DOOM_2, "Dragon Explosion 2")
|
||||
OBJ_NAME_DEFINE(O_SPHERE_OF_DOOM_3, "Dragon Explosion 3")
|
||||
OBJ_NAME_DEFINE(O_ALARM_SOUND, "Alarm")
|
||||
OBJ_NAME_DEFINE(O_BIRD_TWEETER_1, "Dripping Water")
|
||||
OBJ_NAME_DEFINE(O_DINO, "T-Rex")
|
||||
OBJ_NAME_DEFINE(O_BIRD_TWEETER_2, "Singing Birds")
|
||||
OBJ_NAME_DEFINE(O_CLOCK_CHIMES, "Bartoli Hideout clock")
|
||||
OBJ_NAME_DEFINE(O_DRAGON_BONES_1, "Placeholder")
|
||||
OBJ_NAME_DEFINE(O_DRAGON_BONES_2, "Dragon Bones Front")
|
||||
OBJ_NAME_DEFINE(O_DRAGON_BONES_3, "Dragon Bones Back")
|
||||
OBJ_NAME_DEFINE(O_HOT_LIQUID, "Extra Fire")
|
||||
OBJ_NAME_DEFINE(O_BOAT_BITS, "Boat Bits")
|
||||
OBJ_NAME_DEFINE(O_MINE, "Aquatic Mine")
|
||||
OBJ_NAME_DEFINE(O_INV_BACKGROUND, "Menu Background")
|
||||
OBJ_NAME_DEFINE(O_FX_RESERVED, "Gray disk")
|
||||
OBJ_NAME_DEFINE(O_GONG_BONGER, "Gong Stick")
|
||||
OBJ_NAME_DEFINE(O_DETONATOR_1, "Gong")
|
||||
OBJ_NAME_DEFINE(O_DETONATOR_2, "Detonator Box")
|
||||
OBJ_NAME_DEFINE(O_COPTER, "Helicopter")
|
||||
OBJ_NAME_DEFINE(O_EXPLOSION, "Explosion")
|
||||
OBJ_NAME_DEFINE(O_SPLASH, "Water Ripples")
|
||||
OBJ_NAME_DEFINE(O_BUBBLE, "Bubble")
|
||||
OBJ_NAME_DEFINE(O_BUBBLE_EMITTER, "Bubbles Emitter")
|
||||
OBJ_NAME_DEFINE(O_BLOOD, "Blood")
|
||||
OBJ_NAME_DEFINE(O_DART_EFFECT, "Dart Effect")
|
||||
OBJ_NAME_DEFINE(O_FLARE_FIRE, "Flare sparks")
|
||||
OBJ_NAME_DEFINE(O_GLOW, "Glow")
|
||||
OBJ_NAME_DEFINE(O_GLOW_RESERVED, "Map Glow")
|
||||
OBJ_NAME_DEFINE(O_RICOCHET, "Ricochet")
|
||||
OBJ_NAME_DEFINE(O_TWINKLE, "Sparkles")
|
||||
OBJ_NAME_DEFINE(O_GUN_FLASH, "Gun Flash")
|
||||
OBJ_NAME_DEFINE(O_M16_FLASH, "M16 Flash")
|
||||
OBJ_NAME_DEFINE(O_BODY_PART, "Body Part")
|
||||
OBJ_NAME_DEFINE(O_CAMERA_TARGET, "Camera Target")
|
||||
OBJ_NAME_DEFINE(O_WATERFALL, "Waterfall Mist")
|
||||
OBJ_NAME_DEFINE(O_MISSILE_HARPOON, "Missile Harpoon")
|
||||
OBJ_NAME_DEFINE(O_MISSILE_FLAME, "Missile Flame")
|
||||
OBJ_NAME_DEFINE(O_MISSILE_KNIFE, "Missile Knife")
|
||||
OBJ_NAME_DEFINE(O_GRENADE, "Grenade")
|
||||
OBJ_NAME_DEFINE(O_HARPOON_BOLT, "Harpoon Bolt")
|
||||
OBJ_NAME_DEFINE(O_EMBER, "Ember")
|
||||
OBJ_NAME_DEFINE(O_EMBER_EMITTER, "Ember Emitter")
|
||||
OBJ_NAME_DEFINE(O_FLAME, "Flame")
|
||||
OBJ_NAME_DEFINE(O_FLAME_EMITTER, "Flame Emitter")
|
||||
OBJ_NAME_DEFINE(O_SKYBOX, "Skybox")
|
||||
OBJ_NAME_DEFINE(O_ALPHABET, "Alphabet")
|
||||
OBJ_NAME_DEFINE(O_DYING_MONK, "Dying monk")
|
||||
OBJ_NAME_DEFINE(O_DING_DONG, "Doorbell")
|
||||
OBJ_NAME_DEFINE(O_LARA_ALARM, "Alarm Bell")
|
||||
OBJ_NAME_DEFINE(O_MINI_COPTER, "Helicopter 2")
|
||||
OBJ_NAME_DEFINE(O_WINSTON, "Winston")
|
||||
OBJ_NAME_DEFINE(O_ASSAULT_DIGITS, "Assault Digits")
|
||||
OBJ_NAME_DEFINE(O_FINAL_LEVEL_COUNTER, "Final Level Counter")
|
||||
OBJ_NAME_DEFINE(O_CUT_SHOTGUN, "Shotgun Shower Animation")
|
||||
OBJ_NAME_DEFINE(O_EARTHQUAKE, "Earthquake")
|
||||
// pickups on the ground
|
||||
OBJ_NAME_DEFINE(O_SMALL_MEDIPACK_ITEM, "small_medipack", "Small Medipack")
|
||||
OBJ_NAME_DEFINE(O_LARGE_MEDIPACK_ITEM, "large_medipack", "Large Medipack")
|
||||
OBJ_NAME_DEFINE(O_FLARE_ITEM, "flare", "Flare")
|
||||
OBJ_NAME_DEFINE(O_FLARES_ITEM, "flares_box", "Flares Box")
|
||||
OBJ_NAME_DEFINE(O_SECRET_1, "secret_1", "Secret 1")
|
||||
OBJ_NAME_DEFINE(O_SECRET_2, "secret_2", "Secret 2")
|
||||
OBJ_NAME_DEFINE(O_SECRET_3, "secret_3", "Secret 3")
|
||||
OBJ_NAME_DEFINE(O_PISTOL_ITEM, "pistols", "Pistols")
|
||||
OBJ_NAME_DEFINE(O_SHOTGUN_ITEM, "shotgun", "Shotgun")
|
||||
OBJ_NAME_DEFINE(O_MAGNUM_ITEM, "magnums", "Automatic Pistols")
|
||||
OBJ_NAME_DEFINE(O_UZI_ITEM, "uzis", "Uzis")
|
||||
OBJ_NAME_DEFINE(O_HARPOON_ITEM, "harpoon_gun", "Harpoon Gun")
|
||||
OBJ_NAME_DEFINE(O_M16_ITEM, "m16", "M16")
|
||||
OBJ_NAME_DEFINE(O_GRENADE_ITEM, "grenade_launcher", "Grenade Launcher")
|
||||
OBJ_NAME_DEFINE(O_PISTOL_AMMO_ITEM, "pistols_ammo", "Pistol Clips")
|
||||
OBJ_NAME_DEFINE(O_SHOTGUN_AMMO_ITEM, "shotgun_ammo", "Shotgun Shells")
|
||||
OBJ_NAME_DEFINE(O_MAGNUM_AMMO_ITEM, "magnums_ammo", "Automatic Pistol Clips")
|
||||
OBJ_NAME_DEFINE(O_UZI_AMMO_ITEM, "uzis_ammo", "Uzi Clips")
|
||||
OBJ_NAME_DEFINE(O_HARPOON_AMMO_ITEM, "harpoon_gun_ammo", "Harpoons")
|
||||
OBJ_NAME_DEFINE(O_M16_AMMO_ITEM, "m16_ammo", "M16 Clips")
|
||||
OBJ_NAME_DEFINE(O_GRENADE_AMMO_ITEM, "grenade_launcher_ammo", "Grenades")
|
||||
OBJ_NAME_DEFINE(O_KEY_ITEM_1, "key_1", "Key 1")
|
||||
OBJ_NAME_DEFINE(O_KEY_ITEM_2, "key_2", "Key 2")
|
||||
OBJ_NAME_DEFINE(O_KEY_ITEM_3, "key_3", "Key 3")
|
||||
OBJ_NAME_DEFINE(O_KEY_ITEM_4, "key_4", "Key 4")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_ITEM_1, "puzzle_1", "Puzzle Item 1")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_ITEM_2, "puzzle_2", "Puzzle Item 2")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_ITEM_3, "puzzle_3", "Puzzle Item 3")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_ITEM_4, "puzzle_4", "Puzzle Item 4")
|
||||
OBJ_NAME_DEFINE(O_PICKUP_ITEM_1, "pickup_1", "Pickup Item 1")
|
||||
OBJ_NAME_DEFINE(O_PICKUP_ITEM_2, "pickup_2", "Pickup Item 2")
|
||||
|
||||
// inventory ring
|
||||
OBJ_ALIAS_DEFINE(O_COMPASS_OPTION, O_COMPASS_ITEM)
|
||||
OBJ_NAME_DEFINE(O_COMPASS_ITEM, "compass", "Statistics")
|
||||
OBJ_NAME_DEFINE(O_PASSPORT_OPTION, "passport", "Game")
|
||||
OBJ_NAME_DEFINE(O_PHOTO_OPTION, "photo", "Lara's Home")
|
||||
OBJ_NAME_DEFINE(O_DETAIL_OPTION, "graphics", "Detail Levels")
|
||||
OBJ_NAME_DEFINE(O_CONTROL_OPTION, "controls", "Controls")
|
||||
OBJ_NAME_DEFINE(O_SOUND_OPTION, "sound", "Sound")
|
||||
|
||||
OBJ_ALIAS_DEFINE(O_SMALL_MEDIPACK_OPTION, O_SMALL_MEDIPACK_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_LARGE_MEDIPACK_OPTION, O_LARGE_MEDIPACK_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_FLARES_OPTION, O_FLARE_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_PISTOL_OPTION, O_PISTOL_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_PISTOL_AMMO_OPTION, O_PISTOL_AMMO_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_SHOTGUN_OPTION, O_SHOTGUN_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_MAGNUM_OPTION, O_MAGNUM_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_UZI_OPTION, O_UZI_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_HARPOON_OPTION, O_HARPOON_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_M16_OPTION, O_M16_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_GRENADE_OPTION, O_GRENADE_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_SHOTGUN_AMMO_OPTION, O_SHOTGUN_AMMO_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_MAGNUM_AMMO_OPTION, O_MAGNUM_AMMO_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_UZI_AMMO_OPTION, O_UZI_AMMO_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_HARPOON_AMMO_OPTION, O_HARPOON_AMMO_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_M16_AMMO_OPTION, O_M16_AMMO_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_GRENADE_AMMO_OPTION, O_GRENADE_AMMO_ITEM)
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_OPTION_1, O_PUZZLE_ITEM_1)
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_OPTION_2, O_PUZZLE_ITEM_2)
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_OPTION_3, O_PUZZLE_ITEM_3)
|
||||
OBJ_ALIAS_DEFINE(O_PUZZLE_OPTION_4, O_PUZZLE_ITEM_4)
|
||||
OBJ_ALIAS_DEFINE(O_KEY_OPTION_1, O_KEY_ITEM_1)
|
||||
OBJ_ALIAS_DEFINE(O_KEY_OPTION_2, O_KEY_ITEM_2)
|
||||
OBJ_ALIAS_DEFINE(O_KEY_OPTION_3, O_KEY_ITEM_3)
|
||||
OBJ_ALIAS_DEFINE(O_KEY_OPTION_4, O_KEY_ITEM_4)
|
||||
OBJ_ALIAS_DEFINE(O_PICKUP_OPTION_1, O_PICKUP_ITEM_1)
|
||||
OBJ_ALIAS_DEFINE(O_PICKUP_OPTION_2, O_PICKUP_ITEM_2)
|
||||
OBJ_ALIAS_DEFINE(O_PASSPORT_CLOSED, O_PASSPORT_OPTION)
|
||||
|
||||
// general objects
|
||||
OBJ_NAME_DEFINE(O_LARA, "lara", "Lara")
|
||||
OBJ_NAME_DEFINE(O_LARA_PISTOLS, "lara_pistols", "Pistols Animation")
|
||||
OBJ_NAME_DEFINE(O_LARA_HAIR, "lara_hair", "Braid")
|
||||
OBJ_NAME_DEFINE(O_LARA_SHOTGUN, "lara_shotgun", "Shotgun Animation")
|
||||
OBJ_NAME_DEFINE(O_LARA_MAGNUMS, "lara_magnums", "Magnums Animation")
|
||||
OBJ_NAME_DEFINE(O_LARA_UZIS, "lara_uzis", "Uzis Animation")
|
||||
OBJ_NAME_DEFINE(O_LARA_M16, "lara_m16", "M16 Animation")
|
||||
OBJ_NAME_DEFINE(O_LARA_GRENADE, "lara_grenade", "Grenade Launcher Animation")
|
||||
OBJ_NAME_DEFINE(O_LARA_HARPOON, "lara_harpoon", "Harpoon Animation")
|
||||
OBJ_NAME_DEFINE(O_LARA_FLARE, "lara_flare", "Flare Animation")
|
||||
OBJ_NAME_DEFINE(O_LARA_SKIDOO, "lara_skidoo", "Snowmobile Animation")
|
||||
OBJ_NAME_DEFINE(O_LARA_BOAT, "lara_boat", "Boat Animation")
|
||||
OBJ_NAME_DEFINE(O_LARA_EXTRA, "lara_extra", "Lara's Extra Animation")
|
||||
OBJ_NAME_DEFINE(O_SKIDOO_FAST, "skidoo_fast", "Red Snowmobile")
|
||||
OBJ_NAME_DEFINE(O_BOAT, "boat", "Boat")
|
||||
OBJ_NAME_DEFINE(O_DOG, "dog", "Dog")
|
||||
OBJ_NAME_DEFINE(O_CULT_1, "cult_1", "Masked Goon 1")
|
||||
OBJ_NAME_DEFINE(O_CULT_1A, "cult_1a", "Masked Goon 2")
|
||||
OBJ_NAME_DEFINE(O_CULT_1B, "cult_1b", "Masked Goon 3")
|
||||
OBJ_NAME_DEFINE(O_CULT_2, "cult_2", "Knife Thrower")
|
||||
OBJ_NAME_DEFINE(O_CULT_3, "cult_3", "Shotgun Goon")
|
||||
OBJ_NAME_DEFINE(O_MOUSE, "mouse", "Rat")
|
||||
OBJ_NAME_DEFINE(O_DRAGON_FRONT, "dragon_front", "Dragon Front")
|
||||
OBJ_NAME_DEFINE(O_DRAGON_BACK, "dragon_back", "Dragon Back")
|
||||
OBJ_NAME_DEFINE(O_GONDOLA, "gondola", "Gondola")
|
||||
OBJ_NAME_DEFINE(O_SHARK, "shark", "Shark")
|
||||
OBJ_NAME_DEFINE(O_EEL, "eel", "Eel")
|
||||
OBJ_NAME_DEFINE(O_BIG_EEL, "big_eel", "Big Eel")
|
||||
OBJ_NAME_DEFINE(O_BARRACUDA, "barracuda", "Barracuda")
|
||||
OBJ_NAME_DEFINE(O_DIVER, "diver", "Scuba Diver")
|
||||
OBJ_NAME_DEFINE(O_WORKER_1, "worker_1", "Gunman Goon 1")
|
||||
OBJ_NAME_DEFINE(O_WORKER_2, "worker_2", "Gunman Goon 2")
|
||||
OBJ_NAME_DEFINE(O_WORKER_3, "worker_3", "Stick Wielding Goon 1")
|
||||
OBJ_NAME_DEFINE(O_WORKER_4, "worker_4", "Stick Wielding Goon 2")
|
||||
OBJ_NAME_DEFINE(O_WORKER_5, "worker_5", "Flamethrower Goon")
|
||||
OBJ_NAME_DEFINE(O_JELLY, "jelly", "Jellyfish")
|
||||
OBJ_NAME_DEFINE(O_SPIDER, "spider", "Spider")
|
||||
OBJ_NAME_DEFINE(O_BIG_SPIDER, "big_spider", "Giant Spider")
|
||||
OBJ_NAME_DEFINE(O_CROW, "crow", "Crow")
|
||||
OBJ_NAME_DEFINE(O_TIGER, "tiger", "Tiger")
|
||||
OBJ_NAME_DEFINE(O_BARTOLI, "bartoli", "Marco Bartoli")
|
||||
OBJ_NAME_DEFINE(O_XIAN_SPEARMAN, "xian_spearman", "Xian Spearman")
|
||||
OBJ_NAME_DEFINE(O_XIAN_SPEARMAN_STATUE, "xian_spearman_statue", "Xian Spearman Statue")
|
||||
OBJ_NAME_DEFINE(O_XIAN_KNIGHT, "xian_knight", "Xian Knight")
|
||||
OBJ_NAME_DEFINE(O_XIAN_KNIGHT_STATUE, "xian_knight_statue", "Xian Knight")
|
||||
OBJ_NAME_DEFINE(O_YETI, "yeti", "Yeti")
|
||||
OBJ_NAME_DEFINE(O_BIRD_GUARDIAN, "bird_guardian", "Bird Monster")
|
||||
OBJ_NAME_DEFINE(O_EAGLE, "eagle", "Eagle")
|
||||
OBJ_NAME_DEFINE(O_BANDIT_1, "bandit_1", "Mercenary 1")
|
||||
OBJ_NAME_DEFINE(O_BANDIT_2, "bandit_2", "Mercenary 2")
|
||||
OBJ_NAME_DEFINE(O_BANDIT_2B, "bandit_2b", "Mercenary 3")
|
||||
OBJ_NAME_DEFINE(O_SKIDOO_ARMED, "skidoo_armed", "Black Snowmobile")
|
||||
OBJ_NAME_DEFINE(O_SKIDOO_DRIVER, "skidoo_driver", "Black Snowmobile Driver")
|
||||
OBJ_NAME_DEFINE(O_MONK_1, "monk_1", "Monk 1")
|
||||
OBJ_NAME_DEFINE(O_MONK_2, "monk_2", "Monk 2")
|
||||
OBJ_NAME_DEFINE(O_FALLING_BLOCK_1, "falling_block_1", "Falling Block 1")
|
||||
OBJ_NAME_DEFINE(O_FALLING_BLOCK_2, "falling_block_2", "Falling Block 2")
|
||||
OBJ_NAME_DEFINE(O_FALLING_BLOCK_3, "falling_block_3", "Loose Boards")
|
||||
OBJ_NAME_DEFINE(O_PENDULUM_1, "pendulum_1", "Sandbag")
|
||||
OBJ_NAME_DEFINE(O_SPIKES, "spikes", "Spikes")
|
||||
OBJ_NAME_DEFINE(O_ROLLING_BALL_1, "rolling_ball_1", "Boulder 1")
|
||||
OBJ_NAME_DEFINE(O_DART, "dart", "Disc")
|
||||
OBJ_NAME_DEFINE(O_DART_EMITTER, "dart_emitter", "Disc Emitter")
|
||||
OBJ_NAME_DEFINE(O_DRAWBRIDGE, "drawbridge", "Drawbridge")
|
||||
OBJ_NAME_DEFINE(O_TEETH_TRAP, "teeth_trap", "Teeth Trap")
|
||||
OBJ_NAME_DEFINE(O_LIFT, "lift", "Lift")
|
||||
OBJ_NAME_DEFINE(O_GENERAL, "general", "Minisub")
|
||||
OBJ_NAME_DEFINE(O_MOVABLE_BLOCK_1, "movable_block_1", "Push Block 1")
|
||||
OBJ_NAME_DEFINE(O_MOVABLE_BLOCK_2, "movable_block_2", "Push Block 2")
|
||||
OBJ_NAME_DEFINE(O_MOVABLE_BLOCK_3, "movable_block_3", "Push Block 3")
|
||||
OBJ_NAME_DEFINE(O_MOVABLE_BLOCK_4, "movable_block_4", "Push Block 4")
|
||||
OBJ_NAME_DEFINE(O_BIG_BOWL, "big_bowl", "Lava Bowl")
|
||||
OBJ_NAME_DEFINE(O_WINDOW_1, "window_1", "Breakable Window 1")
|
||||
OBJ_NAME_DEFINE(O_WINDOW_2, "window_2", "Breakable Window 2")
|
||||
OBJ_NAME_DEFINE(O_WINDOW_3, "window_3", "Breakable Window 3")
|
||||
OBJ_NAME_DEFINE(O_WINDOW_4, "window_4", "Breakable Window 4")
|
||||
OBJ_NAME_DEFINE(O_PROPELLER_1, "propeller_1", "Airplane Propeller")
|
||||
OBJ_NAME_DEFINE(O_POWER_SAW, "power_saw", "Power Saw")
|
||||
OBJ_NAME_DEFINE(O_HOOK, "hook", "Hook")
|
||||
OBJ_NAME_DEFINE(O_FALLING_CEILING, "falling_ceiling", "Falling Ceiling")
|
||||
OBJ_NAME_DEFINE(O_SPINNING_BLADE, "spinning_blade", "Spinning Blade")
|
||||
OBJ_NAME_DEFINE(O_BLADE, "blade", "Wall-mounted Blade")
|
||||
OBJ_NAME_DEFINE(O_KILLER_STATUE, "killer_statue", "Statue with Sword")
|
||||
OBJ_NAME_DEFINE(O_ROLLING_BALL_2, "rolling_ball_2", "Boulder 2")
|
||||
OBJ_NAME_DEFINE(O_ICICLE, "icicle", "Icicles")
|
||||
OBJ_NAME_DEFINE(O_SPIKE_WALL, "spike_wall", "Spike Wall")
|
||||
OBJ_NAME_DEFINE(O_SPRINGBOARD, "springboard", "Springboard")
|
||||
OBJ_NAME_DEFINE(O_CEILING_SPIKES, "ceiling_spikes", "Spiky Ceiling")
|
||||
OBJ_NAME_DEFINE(O_BELL, "bell", "Bell")
|
||||
OBJ_NAME_DEFINE(O_WATER_SPRITE, "water_sprite", "Boat Wake")
|
||||
OBJ_NAME_DEFINE(O_SNOW_SPRITE, "snow_sprite", "Snowmobile Wale")
|
||||
OBJ_NAME_DEFINE(O_SKIDOO_TRACK, "skidoo_track", "Snowmobile Track")
|
||||
OBJ_NAME_DEFINE(O_SWITCH_TYPE_AIRLOCK, "switch_type_airlock", "Airlock Switch")
|
||||
OBJ_NAME_DEFINE(O_SWITCH_TYPE_SMALL, "switch_type_small", "Small Switch")
|
||||
OBJ_NAME_DEFINE(O_PROPELLER_2, "propeller_2", "Underwater Propeller")
|
||||
OBJ_NAME_DEFINE(O_PROPELLER_3, "propeller_3", "Air Fan")
|
||||
OBJ_NAME_DEFINE(O_PENDULUM_2, "pendulum_2", "Swinging Box")
|
||||
OBJ_NAME_DEFINE(O_MESH_SWAP_1, "mesh_swap_1", "Mesh Swap 1")
|
||||
OBJ_NAME_DEFINE(O_MESH_SWAP_2, "mesh_swap_2", "Mesh Swap 2")
|
||||
OBJ_NAME_DEFINE(O_LARA_SWAP, "lara_swap", "Lara Mesh Swap")
|
||||
OBJ_NAME_DEFINE(O_TEXT_BOX, "text_box", "UI Frame")
|
||||
OBJ_NAME_DEFINE(O_ROLLING_BALL_3, "rolling_ball_3", "Boulder 3")
|
||||
OBJ_NAME_DEFINE(O_ZIPLINE_HANDLE, "zipline_handle", "Zipline Handle")
|
||||
OBJ_NAME_DEFINE(O_SWITCH_TYPE_BUTTON, "switch_type_button", "Switch Button")
|
||||
OBJ_NAME_DEFINE(O_SWITCH_TYPE_NORMAL, "switch_type_normal", "Lever/Switch")
|
||||
OBJ_NAME_DEFINE(O_SWITCH_TYPE_UW, "switch_type_uw", "Underwater Lever/Switch")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_1, "door_type_1", "Door 1")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_2, "door_type_2", "Door 2")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_3, "door_type_3", "Door 3")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_4, "door_type_4", "Door 4")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_5, "door_type_5", "Door 5")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_6, "door_type_6", "Door 6")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_7, "door_type_7", "Door 7")
|
||||
OBJ_NAME_DEFINE(O_DOOR_TYPE_8, "door_type_8", "Door 8")
|
||||
OBJ_NAME_DEFINE(O_TRAPDOOR_TYPE_1, "trapdoor_type_1", "Trapdoor 1")
|
||||
OBJ_NAME_DEFINE(O_TRAPDOOR_TYPE_2, "trapdoor_type_2", "Trapdoor 2")
|
||||
OBJ_NAME_DEFINE(O_TRAPDOOR_TYPE_3, "trapdoor_type_3", "Trapdoor 3")
|
||||
OBJ_NAME_DEFINE(O_BRIDGE_FLAT, "bridge_flat", "Bridge Flat")
|
||||
OBJ_NAME_DEFINE(O_BRIDGE_TILT_1, "bridge_tilt_1", "Bridge Tilt 1")
|
||||
OBJ_NAME_DEFINE(O_BRIDGE_TILT_2, "bridge_tilt_2", "Bridge Tilt 2")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_1, "player_1", "Cutscene Actor 1")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_2, "player_2", "Cutscene Actor 2")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_3, "player_3", "Cutscene Actor 3")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_4, "player_4", "Cutscene Actor 4")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_5, "player_5", "Cutscene Actor 5")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_6, "player_6", "Cutscene Actor 6")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_7, "player_7", "Cutscene Actor 7")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_8, "player_8", "Cutscene Actor 8")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_9, "player_9", "Cutscene Actor 9")
|
||||
OBJ_NAME_DEFINE(O_PLAYER_10, "player_10", "Cutscene Actor 10")
|
||||
OBJ_NAME_DEFINE(O_KEY_HOLE_1, "key_hole_1", "Keyhole 1")
|
||||
OBJ_NAME_DEFINE(O_KEY_HOLE_2, "key_hole_2", "Keyhole 2")
|
||||
OBJ_NAME_DEFINE(O_KEY_HOLE_3, "key_hole_3", "Keyhole 3")
|
||||
OBJ_NAME_DEFINE(O_KEY_HOLE_4, "key_hole_4", "Keyhole 4")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_HOLE_1, "puzzle_hole_1", "Puzzle Hole 1 (Empty)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_HOLE_2, "puzzle_hole_2", "Puzzle Hole 2 (Empty)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_HOLE_3, "puzzle_hole_3", "Puzzle Hole 3 (Empty)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_HOLE_4, "puzzle_hole_4", "Puzzle Hole 4 (Empty)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_DONE_1, "puzzle_done_1", "Puzzle Hole 1 (Done)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_DONE_2, "puzzle_done_2", "Puzzle Hole 2 (Done)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_DONE_3, "puzzle_done_3", "Puzzle Hole 3 (Done)")
|
||||
OBJ_NAME_DEFINE(O_PUZZLE_DONE_4, "puzzle_done_4", "Puzzle Hole 4 (Done)")
|
||||
OBJ_NAME_DEFINE(O_SPHERE_OF_DOOM_1, "sphere_of_doom_1", "Dragon Explosion 1")
|
||||
OBJ_NAME_DEFINE(O_SPHERE_OF_DOOM_2, "sphere_of_doom_2", "Dragon Explosion 2")
|
||||
OBJ_NAME_DEFINE(O_SPHERE_OF_DOOM_3, "sphere_of_doom_3", "Dragon Explosion 3")
|
||||
OBJ_NAME_DEFINE(O_ALARM_SOUND, "alarm_sound", "Alarm")
|
||||
OBJ_NAME_DEFINE(O_BIRD_TWEETER_1, "bird_tweeter_1", "Dripping Water")
|
||||
OBJ_NAME_DEFINE(O_DINO, "dino", "T-Rex")
|
||||
OBJ_NAME_DEFINE(O_BIRD_TWEETER_2, "bird_tweeter_2", "Singing Birds")
|
||||
OBJ_NAME_DEFINE(O_CLOCK_CHIMES, "clock_chimes", "Bartoli Hideout clock")
|
||||
OBJ_NAME_DEFINE(O_DRAGON_BONES_1, "dragon_bones_1", "Placeholder")
|
||||
OBJ_NAME_DEFINE(O_DRAGON_BONES_2, "dragon_bones_2", "Dragon Bones Front")
|
||||
OBJ_NAME_DEFINE(O_DRAGON_BONES_3, "dragon_bones_3", "Dragon Bones Back")
|
||||
OBJ_NAME_DEFINE(O_HOT_LIQUID, "hot_liquid", "Extra Fire")
|
||||
OBJ_NAME_DEFINE(O_BOAT_BITS, "boat_bits", "Boat Bits")
|
||||
OBJ_NAME_DEFINE(O_MINE, "mine", "Aquatic Mine")
|
||||
OBJ_NAME_DEFINE(O_INV_BACKGROUND, "inv_background", "Menu Background")
|
||||
OBJ_NAME_DEFINE(O_FX_RESERVED, "fx_reserved", "Gray disk")
|
||||
OBJ_NAME_DEFINE(O_GONG_BONGER, "gong_bonger", "Gong Stick")
|
||||
OBJ_NAME_DEFINE(O_DETONATOR_1, "detonator_1", "Gong")
|
||||
OBJ_NAME_DEFINE(O_DETONATOR_2, "detonator_2", "Detonator Box")
|
||||
OBJ_NAME_DEFINE(O_COPTER, "copter", "Helicopter")
|
||||
OBJ_NAME_DEFINE(O_EXPLOSION, "explosion", "Explosion")
|
||||
OBJ_NAME_DEFINE(O_SPLASH, "splash", "Water Ripples")
|
||||
OBJ_NAME_DEFINE(O_BUBBLE, "bubble", "Bubble")
|
||||
OBJ_NAME_DEFINE(O_BUBBLE_EMITTER, "bubble_emitter", "Bubbles Emitter")
|
||||
OBJ_NAME_DEFINE(O_BLOOD, "blood", "Blood")
|
||||
OBJ_NAME_DEFINE(O_DART_EFFECT, "dart_effect", "Dart Effect")
|
||||
OBJ_NAME_DEFINE(O_FLARE_FIRE, "flare_fire", "Flare sparks")
|
||||
OBJ_NAME_DEFINE(O_GLOW, "glow", "Glow")
|
||||
OBJ_NAME_DEFINE(O_GLOW_RESERVED, "glow_reserved", "Map Glow")
|
||||
OBJ_NAME_DEFINE(O_RICOCHET, "ricochet", "Ricochet")
|
||||
OBJ_NAME_DEFINE(O_TWINKLE, "twinkle", "Sparkles")
|
||||
OBJ_NAME_DEFINE(O_GUN_FLASH, "gun_flash", "Gun Flash")
|
||||
OBJ_NAME_DEFINE(O_M16_FLASH, "m16_flash", "M16 Flash")
|
||||
OBJ_NAME_DEFINE(O_BODY_PART, "body_part", "Body Part")
|
||||
OBJ_NAME_DEFINE(O_CAMERA_TARGET, "camera_target", "Camera Target")
|
||||
OBJ_NAME_DEFINE(O_WATERFALL, "waterfall", "Waterfall Mist")
|
||||
OBJ_NAME_DEFINE(O_MISSILE_HARPOON, "missile_harpoon", "Missile Harpoon")
|
||||
OBJ_NAME_DEFINE(O_MISSILE_FLAME, "missile_flame", "Missile Flame")
|
||||
OBJ_NAME_DEFINE(O_MISSILE_KNIFE, "missile_knife", "Missile Knife")
|
||||
OBJ_NAME_DEFINE(O_GRENADE, "grenade", "Grenade")
|
||||
OBJ_NAME_DEFINE(O_HARPOON_BOLT, "harpoon_bolt", "Harpoon Bolt")
|
||||
OBJ_NAME_DEFINE(O_EMBER, "ember", "Ember")
|
||||
OBJ_NAME_DEFINE(O_EMBER_EMITTER, "ember_emitter", "Ember Emitter")
|
||||
OBJ_NAME_DEFINE(O_FLAME, "flame", "Flame")
|
||||
OBJ_NAME_DEFINE(O_FLAME_EMITTER, "flame_emitter", "Flame Emitter")
|
||||
OBJ_NAME_DEFINE(O_SKYBOX, "skybox", "Skybox")
|
||||
OBJ_NAME_DEFINE(O_ALPHABET, "alphabet", "Alphabet")
|
||||
OBJ_NAME_DEFINE(O_DYING_MONK, "dying_monk", "Dying monk")
|
||||
OBJ_NAME_DEFINE(O_DING_DONG, "ding_dong", "Doorbell")
|
||||
OBJ_NAME_DEFINE(O_LARA_ALARM, "lara_alarm", "Alarm Bell")
|
||||
OBJ_NAME_DEFINE(O_MINI_COPTER, "mini_copter", "Helicopter 2")
|
||||
OBJ_NAME_DEFINE(O_WINSTON, "winston", "Winston")
|
||||
OBJ_NAME_DEFINE(O_ASSAULT_DIGITS, "assault_digits", "Assault Digits")
|
||||
OBJ_NAME_DEFINE(O_FINAL_LEVEL_COUNTER, "final_level_counter", "Final Level Counter")
|
||||
OBJ_NAME_DEFINE(O_CUT_SHOTGUN, "cut_shotgun", "Shotgun Shower Animation")
|
||||
OBJ_NAME_DEFINE(O_EARTHQUAKE, "earthquake", "Earthquake")
|
||||
|
|
|
@ -111,6 +111,7 @@ sources = [
|
|||
'game/game.c',
|
||||
'game/game_string.c',
|
||||
'game/game_string_table/common.c',
|
||||
'game/game_string_table/priv.c',
|
||||
'game/game_string_table/reader.c',
|
||||
'game/gamebuf.c',
|
||||
'game/input/backends/controller.c',
|
||||
|
|
|
@ -47,18 +47,6 @@ GS_DEFINE(STATS_DEATHS, "DEATHS")
|
|||
GS_DEFINE(STATS_TIME_TAKEN, "TIME TAKEN")
|
||||
GS_DEFINE(STATS_BONUS_STATISTICS, "Bonus Statistics")
|
||||
GS_DEFINE(MISC_EMPTY_SLOT_FMT, "- EMPTY SLOT %d -")
|
||||
GS_DEFINE(INV_ITEM_LEADBAR, "Lead Bar")
|
||||
GS_DEFINE(INV_ITEM_SCION, "Scion")
|
||||
GS_DEFINE(INV_ITEM_PISTOLS, "Pistols")
|
||||
GS_DEFINE(INV_ITEM_SHOTGUN, "Shotgun")
|
||||
GS_DEFINE(INV_ITEM_MAGNUM, "Magnums")
|
||||
GS_DEFINE(INV_ITEM_UZI, "Uzis")
|
||||
GS_DEFINE(INV_ITEM_GRENADE, "Grenade")
|
||||
GS_DEFINE(INV_ITEM_PISTOL_AMMO, "Pistol Clips")
|
||||
GS_DEFINE(INV_ITEM_SHOTGUN_AMMO, "Shotgun Shells")
|
||||
GS_DEFINE(INV_ITEM_MAGNUM_AMMO, "Magnum Clips")
|
||||
GS_DEFINE(INV_ITEM_UZI_AMMO, "Uzi Clips")
|
||||
GS_DEFINE(INV_ITEM_COMPASS, "Compass")
|
||||
GS_DEFINE(OSD_FLY_MODE_ON, "Fly mode enabled")
|
||||
GS_DEFINE(OSD_FLY_MODE_OFF, "Fly mode disabled")
|
||||
GS_DEFINE(OSD_GIVE_ITEM_ALL_KEYS, "Surprise! Every key item Lara needs is now in her backpack.")
|
||||
|
|
|
@ -131,11 +131,8 @@ void Shell_Init(
|
|||
Shell_ExitSystemFmt("Unable to load gameflow file: %s", game_flow_path);
|
||||
return;
|
||||
}
|
||||
if (!GameStringTable_LoadFromFile(game_strings_path)) {
|
||||
Shell_ExitSystemFmt(
|
||||
"Unable to load game strings: %s", game_strings_path);
|
||||
return;
|
||||
}
|
||||
GameStringTable_LoadFromFile(game_strings_path);
|
||||
|
||||
Savegame_Init();
|
||||
Savegame_ScanSavedGames();
|
||||
Savegame_HighlightNewestSlot();
|
||||
|
|
|
@ -26,22 +26,6 @@ GS_DEFINE(STATS_DISTANCE_TRAVELLED, "Distance Travelled")
|
|||
GS_DEFINE(STATS_ASSAULT_TITLE, "BEST TIMES")
|
||||
GS_DEFINE(STATS_ASSAULT_NO_TIMES_SET, "No Times Set")
|
||||
GS_DEFINE(STATS_ASSAULT_FINISH, "Finish")
|
||||
GS_DEFINE(INV_ITEM_STOPWATCH, "Statistics")
|
||||
GS_DEFINE(INV_ITEM_PISTOLS, "Pistols")
|
||||
GS_DEFINE(INV_ITEM_SHOTGUN, "Shotgun")
|
||||
GS_DEFINE(INV_ITEM_MAGNUMS, "Automatic Pistols")
|
||||
GS_DEFINE(INV_ITEM_UZIS, "Uzis")
|
||||
GS_DEFINE(INV_ITEM_HARPOON, "Harpoon Gun")
|
||||
GS_DEFINE(INV_ITEM_M16, "M16")
|
||||
GS_DEFINE(INV_ITEM_GRENADE, "Grenade Launcher")
|
||||
GS_DEFINE(INV_ITEM_FLARE, "Flare")
|
||||
GS_DEFINE(INV_ITEM_PISTOL_AMMO, "Pistol Clips")
|
||||
GS_DEFINE(INV_ITEM_SHOTGUN_AMMO, "Shotgun Shells")
|
||||
GS_DEFINE(INV_ITEM_MAGNUM_AMMO, "Automatic Pistol Clips")
|
||||
GS_DEFINE(INV_ITEM_UZI_AMMO, "Uzi Clips")
|
||||
GS_DEFINE(INV_ITEM_HARPOON_AMMO, "Harpoons")
|
||||
GS_DEFINE(INV_ITEM_M16_AMMO, "M16 Clips")
|
||||
GS_DEFINE(INV_ITEM_GRENADE_AMMO, "Grenades")
|
||||
GS_DEFINE(PASSPORT_EXIT_DEMO, "Exit Demo")
|
||||
GS_DEFINE(MISC_NONE, "None")
|
||||
GS_DEFINE(MISC_EMPTY_SLOT, "- EMPTY SLOT -")
|
||||
|
|
|
@ -374,11 +374,7 @@ void Shell_Main(void)
|
|||
Shell_ExitSystem("Could not load the new script file.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!GameStringTable_LoadFromFile(m_CurrentGameStringsPath)) {
|
||||
Shell_ExitSystem("Could not load game strings.");
|
||||
return;
|
||||
}
|
||||
GameStringTable_LoadFromFile(m_CurrentGameStringsPath);
|
||||
|
||||
InitialiseStartInfo();
|
||||
S_FrontEndCheck();
|
||||
|
|
|
@ -6,6 +6,18 @@ from pathlib import Path
|
|||
from shared.paths import PROJECT_PATHS, SHARED_INCLUDE_DIR
|
||||
|
||||
|
||||
def get_objects_map(paths: list[Path]) -> dict[str, str]:
|
||||
result: dict[str, str] = {}
|
||||
for path in paths:
|
||||
for line in path.read_text().splitlines():
|
||||
if match := re.match(
|
||||
r'^OBJ_NAME_DEFINE\((\w+),\s*"([^"]+)",\s*"([^"]+)"\)$',
|
||||
line.strip(),
|
||||
):
|
||||
result[match.group(2)] = match.group(3)
|
||||
return result
|
||||
|
||||
|
||||
def get_strings_map(paths: list[Path]) -> dict[str, str]:
|
||||
result: dict[str, str] = {}
|
||||
for path in paths:
|
||||
|
@ -22,11 +34,15 @@ def postprocess_game_strings(
|
|||
object_names_map: dict[str, str],
|
||||
game_strings_map: dict[str, str],
|
||||
) -> str:
|
||||
max_key_length = (
|
||||
max(len(json.dumps(key)) for key in object_names_map.keys()) + 2
|
||||
)
|
||||
indent = " " * 8
|
||||
content = re.sub(
|
||||
r'^( "object_names": {)[\S\s]*?^( })',
|
||||
' "object_names": {\n'
|
||||
r'^( "objects": {)[\S\s]*?^( })',
|
||||
' "objects": {\n'
|
||||
+ "\n".join(
|
||||
f" {json.dumps(key)}: {json.dumps(value)},"
|
||||
f"{indent}{f'{json.dumps(key)}: '.ljust(max_key_length)}{json.dumps({'name': value})},"
|
||||
for key, value in object_names_map.items()
|
||||
)
|
||||
+ "\n }",
|
||||
|
@ -55,9 +71,11 @@ def process(game: int) -> None:
|
|||
PROJECT_PATHS[game].src_dir / "game/game_string.def",
|
||||
SHARED_INCLUDE_DIR / "game/game_string.def",
|
||||
]
|
||||
OBJECT_NAMES_DEF_PATH = SHARED_INCLUDE_DIR / f"game/objects/names_tr{game}.def"
|
||||
OBJECT_NAMES_DEF_PATH = (
|
||||
SHARED_INCLUDE_DIR / f"game/objects/names_tr{game}.def"
|
||||
)
|
||||
|
||||
object_names_map = get_strings_map([OBJECT_NAMES_DEF_PATH])
|
||||
object_names_map = get_objects_map([OBJECT_NAMES_DEF_PATH])
|
||||
game_strings_map = get_strings_map(GAME_STRING_DEF_PATHS)
|
||||
assert object_names_map
|
||||
assert game_strings_map
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue