From 7ef76e7f498aa22e23d03326f6a197cc07e2b148 Mon Sep 17 00:00:00 2001 From: fba Date: Sat, 14 Jan 2023 15:22:51 +0100 Subject: [PATCH 1/3] Refactor change VOB location fix --- .../Gamesave/fix051_StonehengeCryptChest.d | 28 +++++++++---------- src/Ninja/G1CP/Content/Misc/world.d | 14 ++++++++++ 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/Ninja/G1CP/Content/Fixes/Gamesave/fix051_StonehengeCryptChest.d b/src/Ninja/G1CP/Content/Fixes/Gamesave/fix051_StonehengeCryptChest.d index 89c2a2cd..dd6178e5 100644 --- a/src/Ninja/G1CP/Content/Fixes/Gamesave/fix051_StonehengeCryptChest.d +++ b/src/Ninja/G1CP/Content/Fixes/Gamesave/fix051_StonehengeCryptChest.d @@ -1,29 +1,29 @@ /* * #51 Chest in stonehenge crypt behind wall */ + +/* + * Make the positions available to the functions below + */ +const float G1CP_051_StonehengeCryptChest_OriginalPos[3] = {-35498.5625, 2331.01416, -13830.9131}; +const float G1CP_051_StonehengeCryptChest_CorrectedPos[3] = {-35311.8100, 2281.0100, -14096.8200}; + +/* + * Apply the fix + */ func int G1CP_051_StonehengeCryptChest() { - var int vobPtr; vobPtr = G1CP_FindVobByPosF(-35498.5625, 2331.01416, -13830.9131, Hlp_Is_oCMobContainer); - if (vobPtr) { - G1CP_MoveVobToPosF(vobPtr, -35311.8100, 2281.0100, -14096.8200); - return TRUE; - }; - return FALSE; + return G1CP_ChangeVobLocation(G1CP_051_StonehengeCryptChest_OriginalPos, G1CP_051_StonehengeCryptChest_CorrectedPos, + Hlp_Is_oCMobContainer); }; /* * This function reverts the changes */ func int G1CP_051_StonehengeCryptChestRevert() { - // Only revert if it was applied by the G1CP if (!G1CP_IsFixApplied(51)) { return FALSE; }; - // Search the VOB again - var int vobPtr; vobPtr = G1CP_FindVobByPosF(-35311.8100, 2281.0100, -14096.8200, Hlp_Is_oCMobContainer); - if (vobPtr) { - G1CP_MoveVobToPosF(vobPtr, -35498.5625, 2331.01416, -13830.9131); - return TRUE; - }; - return FALSE; + return G1CP_ChangeVobLocation(G1CP_051_StonehengeCryptChest_CorrectedPos, G1CP_051_StonehengeCryptChest_OriginalPos, + Hlp_Is_oCMobContainer); }; diff --git a/src/Ninja/G1CP/Content/Misc/world.d b/src/Ninja/G1CP/Content/Misc/world.d index 28d4fbab..cd9f2a83 100644 --- a/src/Ninja/G1CP/Content/Misc/world.d +++ b/src/Ninja/G1CP/Content/Misc/world.d @@ -257,3 +257,17 @@ func int G1CP_GetWorldTime() { return hour * 100 + min; }; + +/* + * Find VOB in the world by its exact position and move it to another position. Returns true on success. + */ +func int G1CP_ChangeVobLocation(var float originalPos, var float correctedPos, var int callback) { + var int vobPtr; vobPtr = G1CP_FindVobByPosPtr(_@(originalPos), callback); + + if (!vobPtr) { + return FALSE; + }; + + G1CP_MoveVobToPosPtr(vobPtr, _@(correctedPos)); + return TRUE; +} From a1a6d87efb90a90631fca99eecb2f16c9ddee19c Mon Sep 17 00:00:00 2001 From: fba Date: Sat, 14 Jan 2023 22:16:15 +0100 Subject: [PATCH 2/3] Refactor fix of #57 --- .../Fixes/Gamesave/fix057_CastleWallTexture.d | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/Ninja/G1CP/Content/Fixes/Gamesave/fix057_CastleWallTexture.d b/src/Ninja/G1CP/Content/Fixes/Gamesave/fix057_CastleWallTexture.d index 574c38df..75054dac 100644 --- a/src/Ninja/G1CP/Content/Fixes/Gamesave/fix057_CastleWallTexture.d +++ b/src/Ninja/G1CP/Content/Fixes/Gamesave/fix057_CastleWallTexture.d @@ -1,14 +1,12 @@ /* * #57 Misplaced texture near Gravo */ -func int G1CP_057_CastleWallTexture() { - var int vobPtr; vobPtr = G1CP_FindVobByPosF(-5893.91455, -664.270386, 78.9339142, G1CP_057_CastleWallTextureCheck); - if (vobPtr) { - G1CP_MoveVobToPosF(vobPtr, -5902.01807, -664.270386, 82.8507462); - return TRUE; - }; - return FALSE; -}; + +/* + * Make the positions available to the functions below + */ +const float G1CP_057_CastleWallTexture_OriginalPos[3] = {-5893.91455, -664.270386, 78.9339142}; +const float G1CP_057_CastleWallTexture_CorrectedPos[3] = {-5902.01807, -664.270386, 82.8507462}; /* * Callback function to check the found VOBs: Check if the VOB's visual is a decal @@ -19,20 +17,22 @@ func int G1CP_057_CastleWallTextureCheck(var int vobPtr) { return (MEM_GetClassDef(vob.visual) == zCDecal_classDef); }; +/* + * Apply the fix + */ +func int G1CP_057_CastleWallTexture() { + return G1CP_ChangeVobLocation(G1CP_057_CastleWallTexture_OriginalPos, G1CP_057_CastleWallTexture_CorrectedPos, + G1CP_057_CastleWallTextureCheck); +}; + /* * This function reverts the changes */ func int G1CP_057_CastleWallTextureRevert() { - // Only revert if it was applied by the G1CP if (!G1CP_IsFixApplied(57)) { return FALSE; }; - // Find the VOB again - var int vobPtr; vobPtr = G1CP_FindVobByPosF(-5902.01807, -664.270386, 82.8507462, G1CP_057_CastleWallTextureCheck); - if (vobPtr) { - G1CP_MoveVobToPosF(vobPtr, -5893.91455, -664.270386, 78.9339142); - return TRUE; - }; - return FALSE; + return G1CP_ChangeVobLocation(G1CP_057_CastleWallTexture_CorrectedPos, G1CP_057_CastleWallTexture_OriginalPos, + G1CP_057_CastleWallTextureCheck); }; From fe34e40d63794290fbcdec642d34bad8b56552df Mon Sep 17 00:00:00 2001 From: Fabian B Date: Thu, 21 Mar 2024 13:43:43 +0100 Subject: [PATCH 3/3] Fix syntax error --- src/Ninja/G1CP/Content/Misc/world.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ninja/G1CP/Content/Misc/world.d b/src/Ninja/G1CP/Content/Misc/world.d index cd9f2a83..3cff4e75 100644 --- a/src/Ninja/G1CP/Content/Misc/world.d +++ b/src/Ninja/G1CP/Content/Misc/world.d @@ -270,4 +270,4 @@ func int G1CP_ChangeVobLocation(var float originalPos, var float correctedPos, v G1CP_MoveVobToPosPtr(vobPtr, _@(correctedPos)); return TRUE; -} +};