diff --git a/CHANGELOG.md b/CHANGELOG.md
index b4adbbb1b..8d7256e1e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
-## [Unreleased](https://github.com/LostArtefacts/TR-Rando/compare/V1.8.3...master) - xxxx-xx-xx
+## [Unreleased](https://github.com/LostArtefacts/TR-Rando/compare/V1.8.4...master) - xxxx-xx-xx
+
+## [V1.8.4](https://github.com/LostArtefacts/TR-Rando/compare/V1.8.3...V1.8.4) - 2024-02-12
- fixed item locking logic so that secrets that rely on specific enemies will always be obtainable (#570)
+- fixed a crash at the end of Diving Area if a skidoo driver is replaced by a pickup (#604)
+- fixed the submarine in the Diving Area cutscene using Lara's meshes (#605)
+- fixed some awkwardly placed enemies in TR2, which could either block puzzle slots/keyholes or otherwise prove difficult to kill (#606)
+- fixed pickup item lighting in TR2 (#607)
+- fixed a secret in Temple of Xian that requires a glitch but was marked as glitchless (#608)
+- fixed an item location in Wreck of the Maria Doria that required forced flame damage (#609)
## [V1.8.3](https://github.com/LostArtefacts/TR-Rando/compare/V1.8.2...V1.8.3) - 2024-01-21
- fixed incorrect items sometimes being allocated as secret rewards in Thames Wharf (#597)
diff --git a/TRLevelControl/Model/TR2/Enums/TR2Type.cs b/TRLevelControl/Model/TR2/Enums/TR2Type.cs
index f11ef7412..11bd4f7f3 100644
--- a/TRLevelControl/Model/TR2/Enums/TR2Type.cs
+++ b/TRLevelControl/Model/TR2/Enums/TR2Type.cs
@@ -106,9 +106,9 @@ public enum TR2Type
UnderwaterPropeller = 94,
AirFan = 95,
SwingingBoxOrBall = 96,
- MeshSwap1 = 97,
- MeshSwap2 = 98,
- MeshSwap3 = 99,
+ CutsceneActor1 = 97,
+ CutsceneActor2 = 98,
+ CutsceneActor3 = 99,
UIFrame_H = 100,
RollingStorageDrums = 101,
ZiplineHandle = 102,
@@ -132,16 +132,16 @@ public enum TR2Type
JadeSecret_M_H = 120,
SilverSecret_M_H = 121,
LaraHomePhoto_M_H = 122,
- CutsceneActor1 = 123,
- CutsceneActor2 = 124,
- CutsceneActor3 = 125,
- CutsceneActor4 = 126,
- CutsceneActor5 = 127,
- CutsceneActor6 = 128,
- CutsceneActor7 = 129,
- CutsceneActor8 = 130,
- CutsceneActor9 = 131,
- CutsceneActor10 = 132,
+ CutsceneActor4 = 123,
+ CutsceneActor5 = 124,
+ CutsceneActor6 = 125,
+ CutsceneActor7 = 126,
+ CutsceneActor8 = 127,
+ CutsceneActor9 = 128,
+ CutsceneActor10 = 129,
+ CutsceneActor11 = 130,
+ Unknown1 = 131,
+ Unknown2 = 132,
PassportClosed_M_H = 133,
Map_M_U = 134,
Pistols_S_P = 135,
diff --git a/TRRandomizerCore/Randomizers/TR2/TR2ItemRandomizer.cs b/TRRandomizerCore/Randomizers/TR2/TR2ItemRandomizer.cs
index cbba0da64..7f9aadb43 100644
--- a/TRRandomizerCore/Randomizers/TR2/TR2ItemRandomizer.cs
+++ b/TRRandomizerCore/Randomizers/TR2/TR2ItemRandomizer.cs
@@ -213,6 +213,7 @@ public void RandomizeItemLocations(TR2CombinedLevel level)
}
_picker.RandomizePickupLocation(entity);
+ entity.Intensity1 = entity.Intensity2 = -1;
}
}
@@ -245,6 +246,7 @@ private void RandomizeKeyItems(TR2CombinedLevel level)
_picker.RandomizeKeyItemLocation(
entity, LocationUtilities.HasPickupTriger(entity, i, level.Data, floorData),
level.Script.OriginalSequence, level.Data.Rooms[entity.Room].Info);
+ entity.Intensity1 = entity.Intensity2 = -1;
}
}
diff --git a/TRRandomizerCore/Resources/TR2/Environment/DECK.TR2-Environment.json b/TRRandomizerCore/Resources/TR2/Environment/DECK.TR2-Environment.json
index 44e2148c1..f1b2ddd13 100644
--- a/TRRandomizerCore/Resources/TR2/Environment/DECK.TR2-Environment.json
+++ b/TRRandomizerCore/Resources/TR2/Environment/DECK.TR2-Environment.json
@@ -1056,6 +1056,27 @@
}
}
]
+ },
+ {
+ "Condition": {
+ "Comments": "If enemy 103's type has been randomized, move him outside for some breathing space.",
+ "ConditionType": 0,
+ "EntityIndex": 103,
+ "EntityType": 32
+ },
+ "OnFalse": [
+ {
+ "EMType": 44,
+ "EntityIndex": 103,
+ "TargetLocation": {
+ "X": 43520,
+ "Y": -10240,
+ "Z": 69120,
+ "Room": 114,
+ "Angle": 16384
+ }
+ }
+ ]
}
],
"ConditionalOneOf": [],
diff --git a/TRRandomizerCore/Resources/TR2/Environment/KEEL.TR2-Environment.json b/TRRandomizerCore/Resources/TR2/Environment/KEEL.TR2-Environment.json
index dcf4a8e53..9d5c8bde9 100644
--- a/TRRandomizerCore/Resources/TR2/Environment/KEEL.TR2-Environment.json
+++ b/TRRandomizerCore/Resources/TR2/Environment/KEEL.TR2-Environment.json
@@ -1894,6 +1894,47 @@
"NewDoorType": 111
}
]
+ },
+ {
+ "Condition": {
+ "Comments": "If enemy 46 is a t-rex or chicken, drain the nearby pool and put him there.",
+ "ConditionType": 0,
+ "Or": [
+ {
+ "ConditionType": 0,
+ "EntityIndex": 46,
+ "EntityType": 46
+ }
+ ],
+ "EntityIndex": 46,
+ "EntityType": 214
+ },
+ "OnTrue": [
+ {
+ "EMType": 3,
+ "RoomNumbers": [
+ 85,
+ 94
+ ],
+ "WaterTextures": [
+ 1730,
+ 1764,
+ 1769,
+ 1770
+ ]
+ },
+ {
+ "EMType": 44,
+ "EntityIndex": 46,
+ "TargetLocation": {
+ "X": 58880,
+ "Y": 4480,
+ "Z": 33280,
+ "Room": 94,
+ "Angle": -16384
+ }
+ }
+ ]
}
],
"ConditionalOneOf": [],
diff --git a/TRRandomizerCore/Resources/TR2/Environment/PLATFORM.TR2-Environment.json b/TRRandomizerCore/Resources/TR2/Environment/PLATFORM.TR2-Environment.json
index ab50110f0..fb3401204 100644
--- a/TRRandomizerCore/Resources/TR2/Environment/PLATFORM.TR2-Environment.json
+++ b/TRRandomizerCore/Resources/TR2/Environment/PLATFORM.TR2-Environment.json
@@ -2597,6 +2597,34 @@
}
}
]
+ },
+ {
+ "Condition": {
+ "Comments": "If enemy 59 is an eel, rotate it to avoid blocking puzzle slots.",
+ "ConditionType": 0,
+ "Or": [
+ {
+ "ConditionType": 0,
+ "EntityIndex": 59,
+ "EntityType": 26
+ }
+ ],
+ "EntityIndex": 59,
+ "EntityType": 27
+ },
+ "OnTrue": [
+ {
+ "EMType": 44,
+ "EntityIndex": 59,
+ "TargetLocation": {
+ "X": 59904,
+ "Y": -3584,
+ "Z": 75264,
+ "Room": 30,
+ "Angle": -32768
+ }
+ }
+ ]
}
],
"ConditionalOneOf": [],
diff --git a/TRRandomizerCore/Resources/TR2/Environment/RIG.TR2-Environment.json b/TRRandomizerCore/Resources/TR2/Environment/RIG.TR2-Environment.json
index a0ca40ed6..2a1eb596e 100644
--- a/TRRandomizerCore/Resources/TR2/Environment/RIG.TR2-Environment.json
+++ b/TRRandomizerCore/Resources/TR2/Environment/RIG.TR2-Environment.json
@@ -1494,13 +1494,13 @@
"Condition": {
"Comments": "If neither rooms 2 nor 96 contain a secret, drain the plane area.",
"ConditionType": 1,
- "RoomIndex": 2,
"Or": [
{
"ConditionType": 1,
"RoomIndex": 96
}
- ]
+ ],
+ "RoomIndex": 2
},
"OnFalse": {
"Leader": [
diff --git a/TRRandomizerCore/Resources/TR2/Locations/invalid_item_locations.json b/TRRandomizerCore/Resources/TR2/Locations/invalid_item_locations.json
index a81438390..edda11e7c 100644
--- a/TRRandomizerCore/Resources/TR2/Locations/invalid_item_locations.json
+++ b/TRRandomizerCore/Resources/TR2/Locations/invalid_item_locations.json
@@ -1715,6 +1715,12 @@
"Z": 91648,
"Room": 68
},
+ {
+ "X": 52736,
+ "Y": -4096,
+ "Z": 35328,
+ "Room": 21
+ },
{
"X": 67072,
"Y": 4352,
diff --git a/TRRandomizerCore/Resources/TR2/Locations/locations.json b/TRRandomizerCore/Resources/TR2/Locations/locations.json
index c2ab8b396..bf69c00d9 100644
--- a/TRRandomizerCore/Resources/TR2/Locations/locations.json
+++ b/TRRandomizerCore/Resources/TR2/Locations/locations.json
@@ -6465,7 +6465,8 @@
"Y": -5632,
"Z": 69633,
"Room": 92,
- "Difficulty": "Hard"
+ "Difficulty": "Hard",
+ "RequiresGlitch": true
},
{
"X": 33718,
diff --git a/TRRandomizerCore/Resources/TR2/Restrictions/enemy_restrictions_default.json b/TRRandomizerCore/Resources/TR2/Restrictions/enemy_restrictions_default.json
index 166b1178b..a31b4205c 100644
--- a/TRRandomizerCore/Resources/TR2/Restrictions/enemy_restrictions_default.json
+++ b/TRRandomizerCore/Resources/TR2/Restrictions/enemy_restrictions_default.json
@@ -36,16 +36,6 @@
102
]
},
- "PLATFORM.TR2": {
- "52": [
- 17,
- 29,
- 31,
- 46,
- 65,
- 77
- ]
- },
"UNWATER.TR2": {
"52": [
20,
diff --git a/TRRandomizerCore/Resources/TR2/Restrictions/enemy_restrictions_technical.json b/TRRandomizerCore/Resources/TR2/Restrictions/enemy_restrictions_technical.json
index b89f6fb9b..c9369b88c 100644
--- a/TRRandomizerCore/Resources/TR2/Restrictions/enemy_restrictions_technical.json
+++ b/TRRandomizerCore/Resources/TR2/Restrictions/enemy_restrictions_technical.json
@@ -31,6 +31,13 @@
"PLATFORM.TR2": {
"40": [
83
+ ],
+ "52": [
+ 17,
+ 29,
+ 31,
+ 46,
+ 65
]
},
"UNWATER.TR2": {
diff --git a/TRRandomizerView/TRRandomizerView.csproj b/TRRandomizerView/TRRandomizerView.csproj
index 134c4a844..14afae90e 100644
--- a/TRRandomizerView/TRRandomizerView.csproj
+++ b/TRRandomizerView/TRRandomizerView.csproj
@@ -20,7 +20,7 @@
false
Resources\rando.ico
- 1.8.3
+ 1.8.4
Tomb Raider Randomizer
Copyright © Tomb Raider Community 2023