diff --git a/Source/loadsave.cpp b/Source/loadsave.cpp index 10639ac11..7bdb1f456 100644 --- a/Source/loadsave.cpp +++ b/Source/loadsave.cpp @@ -1545,7 +1545,30 @@ void SaveObject(SaveHelper &file, const Object &object) file.WriteLE(object._oDoorFlag ? 1 : 0); file.WriteLE(object._olid); file.WriteLE(object._oRndSeed); - file.WriteLE(object._oVar1); + + /* Make dynamic light sources unseen when saving level data for level change */ + int32_t var1 = object._oVar1; + switch (object._otype) { + case OBJ_L1LIGHT: + case OBJ_SKFIRE: + case OBJ_CANDLE1: + case OBJ_CANDLE2: + case OBJ_BOOKCANDLE: + case OBJ_STORYCANDLE: + case OBJ_L5CANDLE: + case OBJ_TORCHL: + case OBJ_TORCHR: + case OBJ_TORCHL2: + case OBJ_TORCHR2: + case OBJ_BCROSS: + case OBJ_TBCROSS: + if (var1 != -1) + var1 = 0; + break; + default: + break; + } + file.WriteLE(var1); file.WriteLE(object._oVar2); file.WriteLE(object._oVar3); file.WriteLE(object._oVar4); @@ -2506,26 +2529,7 @@ void SaveLevel(SaveWriter &saveWriter) for (int objectId : AvailableObjects) file.WriteLE(objectId); for (int i = 0; i < ActiveObjectCount; i++) { - /* make dynamic light sources unseen when saving level data for level change */ - Object &object = Objects[ActiveObjects[i]]; - switch (object._otype) { - case OBJ_L1LIGHT: - case OBJ_SKFIRE: - case OBJ_CANDLE1: - case OBJ_CANDLE2: - case OBJ_BOOKCANDLE: - case OBJ_STORYCANDLE: - case OBJ_TORCHL: - case OBJ_TORCHR: - case OBJ_TORCHL2: - case OBJ_TORCHR2: - case OBJ_BCROSS: - case OBJ_TBCROSS: - if (object._oVar1 != -1) - object._oVar1 = 0; - break; - } - SaveObject(file, object); + SaveObject(file, Objects[ActiveObjects[i]]); } }