- WH: fixed bad return value from movesprite function and incorrect owner handling

This commit is contained in:
Christoph Oelckers 2021-11-27 19:58:41 +01:00
parent 7e632ec382
commit 6e40aa2d10
2 changed files with 13 additions and 7 deletions

View file

@ -22,14 +22,15 @@ public:
void SetOwner(DWHActor* own)
{
s().owner = own ? own->s().index : -1;
s().owner = own ? own->GetSpriteIndex() : -1;
}
DWHActor* GetOwner()
{
if (s().owner >= 4096) return nullptr; // player index hackery
if (s().owner == -1 || s().owner == MAXSPRITES - 1) return nullptr;
return base() + s().owner;
auto owner = s().owner;
if (owner >= 4096) return nullptr; // player index hackery
if (owner == -1 || owner == MAXSPRITES - 1) return nullptr;
return base() + owner;
}
void SetPlayerOwner(int num)

View file

@ -1785,11 +1785,16 @@ Collision movesprite(DWHActor* actor, int dx, int dy, int dz, int ceildist, int
int daz = spr.z + zoffs + dz;
if ((daz <= zr_ceilz) || (daz > zr_florz)) {
if (retval != 0)
return Collision(retval);
return coll.setSector(dasectnum);
{
coll.setFromEngine(retval);
return coll;
}
coll.setSector(dasectnum);
return coll;
}
spr.z = (daz - zoffs);
return Collision(retval);
coll.setFromEngine(retval);
return coll;
}
void trowajavlin(DWHActor* actor) {