Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
## [Unreleased](https://github.com/LostArtefacts/TR-Rando/compare/V1.10.2...master) - xxxx-xx-xx
- added support for TR1X 4.14 (now the minimum version supported) (#803)
- added support for TR1X 4.15 (now the minimum version supported) (#803)
- added support for TR2X (#821)
- added support for The Golden Mask in TR2X and playing in combined mode (see Level Sequencing options) (#59)
- added Spanish translations for TR1 (#800)
Expand Down
Binary file modified Deps/TRGE.Coord.dll
Binary file not shown.
Binary file modified Deps/TRGE.Core.dll
Binary file not shown.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<img alt="TR Rando" src="Resources/randomizerlogo.png"/>
</p>

TR Rando is a randomizer tool for the classic Tomb Raider series (TR 1-3 and Unfinished Business) and Tomb Raider I-III Remastered. It allows you to change many aspects of the
TR Rando is a randomizer tool for the classic Tomb Raider series (TR 1-3, Unfinished Business and The Golden Mask) and Tomb Raider I-III Remastered. It allows you to change many aspects of the
original levels, such as item pickups, secrets, enemies, Lara's appearance, level order, text...[and so much more](#features).

## Installation
Expand Down
1 change: 0 additions & 1 deletion TRLevelControl/Helpers/TR1TypeUtilities.cs
Original file line number Diff line number Diff line change
Expand Up @@ -526,7 +526,6 @@ public static bool CanSharePickupSpace(TR1Type type)
|| IsKeyholeType(type)
|| IsSlotType(type)
|| IsEnemyType(type)
|| IsBridge(type)
|| IsTrapdoor(type)
|| IsDoorType(type)
|| IsPushblockType(type)
Expand Down
1 change: 0 additions & 1 deletion TRLevelControl/Helpers/TR2TypeUtilities.cs
Original file line number Diff line number Diff line change
Expand Up @@ -908,7 +908,6 @@ public static bool CanSharePickupSpace(TR2Type type, bool remastered)
|| IsUnrenderedType(type)
|| IsVehicleType(type)
|| IsBreakableWindowType(type)
|| IsBridgeType(type)
|| type == TR2Type.Lara
|| type == TR2Type.Drawbridge
|| type == TR2Type.FallingBlock
Expand Down
10 changes: 1 addition & 9 deletions TRRandomizerCore/Randomizers/TR1/Classic/TR1OutfitRandomizer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ public class TR1OutfitRandomizer : BaseTR1Randomizer
{
private static readonly string _gymOutfitHash = "6523d69dbf1f0ab671f5f877afe6ff35";
private static readonly string _mauledOutfitHash = "ab52e600b2f4fa7edfd3e9a32d1a5582";
private static readonly Version _minBraidCutsceneVersion = new(2, 13, 0);
private static readonly TR1SFX[] _barefootSfxIDs = new TR1SFX[] { TR1SFX.LaraFeet, TR1SFX.LaraLand };
private static readonly double _mauledLaraChance = (double)1 / 3;
private static readonly double _partialGymChance = (double)1 / 3;
Expand Down Expand Up @@ -454,20 +453,13 @@ private void AmendBackpack(TR1CombinedLevel level)
}
}

private bool CutsceneSupportsBraid(TR1CombinedLevel parentLevel)
private static bool CutsceneSupportsBraid(TR1CombinedLevel parentLevel)
{
if (!parentLevel.HasCutScene || parentLevel.Is(TR1LevelNames.MINES))
{
return false;
}

// Not supported before 2.13, so don't make any changes to Lara here.
Version tr1xVersion = _outer.ScriptEditor.Edition.ExeVersion;
if (tr1xVersion == null || tr1xVersion < _minBraidCutsceneVersion)
{
return false;
}

if (parentLevel.Is(TR1LevelNames.ATLANTIS))
{
// Lara's head may be Natla's or Pierre's, so only support the braid if
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,8 @@ internal void ApplyRandomization()
{
TR2EnemyAllocator.DisguiseType(level.Name, level.Data.Models, importedCollection.BirdMonsterGuiser, TR2Type.BirdMonster);
TR2EnemyAllocator.DisguiseType(level.Name, level.PDPData, importedCollection.BirdMonsterGuiser, TR2Type.BirdMonster);
level.MapData[importedCollection.BirdMonsterGuiser] = _birdMonsterTypes.RandomItem(_outer._generator);
level.MapData[TR2TypeUtilities.TranslateAlias(importedCollection.BirdMonsterGuiser)]
= _birdMonsterTypes.RandomItem(_outer._generator);
enemies.BirdMonsterGuiser = importedCollection.BirdMonsterGuiser;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,61 @@
"272": 181
}
},
{
"Comments": "Fix a hole in the wall in room 2.",
"EMType": 23,
"Modifications": [
{
"RoomNumber": 2,
"FaceIndex": 2,
"VertexChanges": {
"0": {
"Y": -256
}
}
},
{
"RoomNumber": 2,
"FaceIndex": 1,
"VertexChanges": {
"2": {
"X": 1024,
"Y": -256
}
}
}
]
},
{
"EMType": 26,
"Triangles": {
"2": [
{
"Type": 3,
"Vertices": [
4,
152,
153
],
"Texture": 16
}
]
}
},
{
"EMType": 23,
"Modifications": [
{
"RoomNumber": 2,
"FaceIndex": 1,
"VertexChanges": {
"2": {
"X": -1024
}
}
}
]
},
{
"Comments": "Add wind to outside rooms.",
"EMType": 121,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,15 @@
"BackgroundIndex": 15
}
]
},
"Landmarks.Rylael": {
"0": [
{
"RoomNumber": 5,
"RectangleIndices": [ 21 ],
"BackgroundIndex": 30
}
]
}
},

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"VariantMap": {
"Default": [
"0, 0, 64, 64"
]
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,25 @@
}
]
},
{
"Comments": "Ensure slot 118 triggers the doors in the unflipped state.",
"EMType": 61,
"EntityLocation": 118,
"Trigger": {
"TrigType": 3,
"Mask": 31,
"SwitchOrKeyRef": 118,
"Actions": [
{
"Parameter": 117
},
{
"Parameter": 116
}
]
},
"Replace": true
},
{
"Comments": "Add a ladder as a return path from room 8.",
"EMType": 26,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2586,9 +2586,9 @@
"EMType": 44,
"EntityIndex": 2,
"TargetLocation": {
"X": 36842,
"X": 36352,
"Y": -512,
"Z": 48100,
"Z": 47616,
"Angle": -16384
}
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -559,7 +559,7 @@
"Quest for the Seraph",
"Iceberg Wins",
"Big Air Pocket",
"[ then ]"
"Up then down"
],
"KeyItems": {
"Key2": [
Expand Down
4 changes: 2 additions & 2 deletions TRRandomizerView/TRRandomizerView.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
<SelfContained>false</SelfContained>
<ApplicationIcon>Resources\rando.ico</ApplicationIcon>

<Version>1.10.2</Version>
<Version>1.11.0</Version>
<Product>Tomb Raider Randomizer</Product>
<Copyright>Copyright © Tomb Raider Community 2024</Copyright>
<Copyright>Copyright © Tomb Raider Community 2025</Copyright>
</PropertyGroup>
<ItemGroup>
<None Remove="Resources\arrows.png" />
Expand Down
8 changes: 3 additions & 5 deletions USING.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,12 @@ Following is a brief video explanation of the setup, but be sure to read each of
Before you launch the randomizer for the first time, you should carry out a few steps as follows.
***
> ### TR1
> You must use [TR1X](https://github.com/LostArtefacts/TR1X) to be able to randomize Tomb Raider 1. Follow the installation guide on the TR1X GitHub page, or you can also refer to [this video](https://www.youtube.com/watch?v=WfyHin4Hpgs) for guidance. Note that if using the TR1X installer, the default directory where your game will be located is your Documents folder as opposed to the base game folder.
> You must use [TR1X](https://github.com/LostArtefacts/TRX) to be able to randomize Tomb Raider 1. Follow the installation guide on the TR1X GitHub page, or you can also refer to [this video](https://www.youtube.com/watch?v=WfyHin4Hpgs) for guidance. Note that if using the TR1X installer, the default directory where your game will be located is your Documents folder as opposed to the base game folder.
>
> You must also ensure that you have the Unfinished Business levels files in your installation. These are available when using the TR1X installer, and we recommend that you choose the set that contains music triggers. The level files are also available to download manually from https://lostartefacts.dev/aux/tr1x/trub-music.zip - you can then simply extract the files into your TR1X data folder.
***
> ### TR2
> Use the [Version Swapper](https://github.com/TombRunners/tr2-version-swapper) or install and configure [TR2Main](https://github.com/Arsunt/TR2Main).
>
> _This step is entirely optional based on your own preference of gameplay._
> You must use [TR2X](https://github.com/LostArtefacts/TRX) to be able to randomize Tomb Raider 2. Follow the installation guide on the TR2X GitHub page. Note that if using the TR2X installer, the default directory where your game will be located is your Documents folder as opposed to the base game folder.
***
> ### TR3
> Use the [Version Swapper](https://github.com/TombRunners/tr3-version-swapper) or install and configure [tomb3](https://github.com/Trxyebeep/tomb3). Using tomb3 is recommended to enable all features in the randomizer, plus to enjoy all of the benefits of the improved game. See https://github.com/Trxyebeep/tomb3/blob/master/USING.md for detailed installation steps.
Expand Down Expand Up @@ -131,7 +129,7 @@ You may see the following error message when you try to launch the randomizer -

If however the randomizer doesn't launch, but you don't see the above error, you can install the runtime manually using the link below.

- https://aka.ms/dotnet/6.0/windowsdesktop-runtime-win-x64.exe
- https://aka.ms/dotnet/8.0/windowsdesktop-runtime-win-x64.exe

### General issues
If you encounter error messages during randomization, the most likely cause is unclean data files. In this case, you should follow these steps.
Expand Down