From c450af73afa77fb3d00658c20573826877485885 Mon Sep 17 00:00:00 2001 From: MagicBot Date: Mon, 26 Oct 2026 04:34:35 -0400 Subject: [PATCH] Remove the SafeMode and INVIS-D overrides from SBStringHash The client hash (0x5547E0) has no overrides. Hashing the power id SafeMode must give the real power token for 4.8. Source types are now keyed by the effect's own token, which keeps the SafeModeA/B override in EffectsBase. Co-Authored-By: Claude Opus 5.5 --- src/engine/db/handlers/dbPowerHandler.java | 8 +++++++- src/engine/util/Hasher.java | 12 ------------ 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/engine/db/handlers/dbPowerHandler.java b/src/engine/db/handlers/dbPowerHandler.java index 5bed2cff..e4d59356 100644 --- a/src/engine/db/handlers/dbPowerHandler.java +++ b/src/engine/db/handlers/dbPowerHandler.java @@ -10,6 +10,7 @@ package engine.db.handlers; import engine.gameManager.DbManager; +import engine.gameManager.PowersManager; import engine.mbEnums; import engine.objects.Mob; import engine.powers.EffectsBase; @@ -34,10 +35,15 @@ public class dbPowerHandler extends dbHandlerBase { ResultSet rs = preparedStatement.executeQuery(); String IDString, source; + EffectsBase effectsBase; + int token; while (rs.next()) { IDString = rs.getString("IDString"); - int token = DbManager.hasher.SBStringHash(IDString); + + // The effect's own token: INVIS-D and SafeMode send the SafeModeB/A action tokens + effectsBase = PowersManager.getEffectByIDString(IDString); + token = (effectsBase != null) ? effectsBase.getToken() : DbManager.hasher.SBStringHash(IDString); source = rs.getString("source").replace("-", "").trim(); mbEnums.EffectSourceType effectSourceType = mbEnums.EffectSourceType.GetEffectSourceType(source); diff --git a/src/engine/util/Hasher.java b/src/engine/util/Hasher.java index ccb60c7c..be5ef51d 100644 --- a/src/engine/util/Hasher.java +++ b/src/engine/util/Hasher.java @@ -187,18 +187,6 @@ public class Hasher { int hash = 0; int shift = 0; - if (toHash.equals("SafeModeA")) - return -1661750486; - if (toHash.equals("SafeModeB")) - return -1661751254; - - if (toHash.equals("INVIS-D")) - return -1661751254; - - if (toHash.equals("SafeMode")) - return -1661750486; - - if ((hashArray.length != 8 && hashArray.length != 7) || hashArray[3] != 45) { hash = 0; shift = 0;