diff --git a/source/blood/src/bloodactor.h b/source/blood/src/bloodactor.h index 8b9e969e1..d4bc9f843 100644 --- a/source/blood/src/bloodactor.h +++ b/source/blood/src/bloodactor.h @@ -25,7 +25,11 @@ public: DBloodActor() :index(int(this - base())) { /*assert(index >= 0 && index < kMaxSprites);*/ } DBloodActor& operator=(const DBloodActor& other) = default; - bool hasX() { return sprite[index].extra > 0; } + void Clear() + { + dudeSlope = 0; + } + bool hasX() { return sprite[index].extra > 0; } spritetype& s() { return sprite[index]; } XSPRITE& x() { return xsprite[sprite[index].extra]; } // calling this does not validate the xsprite! SPRITEHIT& hit() { return gSpriteHit[sprite[index].extra]; } diff --git a/source/blood/src/loadsave.cpp b/source/blood/src/loadsave.cpp index 6b82566fc..48cfbc765 100644 --- a/source/blood/src/loadsave.cpp +++ b/source/blood/src/loadsave.cpp @@ -443,12 +443,11 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, DBloodActor& w, DB if (!def) { def = &nul; - if (arc.isReading()) w = {}; + if (arc.isReading()) w.Clear(); } if (arc.BeginObject(keyname)) { - // The rest is only relevant if the actor has an xsprite. if (w.s().extra > 0) {