gameexec.c: in VM_Move(), update actor[].{floor,ceiling}z for enemies.

Previously, that was the case only with DRONE and COMMANDER. This makes
non-falling enemies pass properly through TROR bunches.

git-svn-id: https://svn.eduke32.com/eduke32@4975 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
helixhorned 2015-02-08 18:48:31 +00:00
parent 7cc1067a3d
commit c18ae15dc5

View file

@ -788,18 +788,21 @@ dead:
} }
else if (vm.g_sp->picnum != ORGANTIC) else if (vm.g_sp->picnum != ORGANTIC)
{ {
// All other actors besides ORGANTIC don't update .floorz or int32_t l;
// .ceilingz here.
// In Duke3D, all other actors don't update .floorz or
// .ceilingz here. In EDuke32, they do.
if (vm.g_sp->zvel > 0) if (vm.g_sp->zvel > 0)
{ {
if (vm.g_sp->z > actor[vm.g_i].floorz) actor[vm.g_i].floorz = l = VM_GetFlorZOfSlope();
vm.g_sp->z = actor[vm.g_i].floorz; if (vm.g_sp->z > l)
vm.g_sp->z = l;
vm.g_sp->z += A_GetWaterZOffset(vm.g_i); vm.g_sp->z += A_GetWaterZOffset(vm.g_i);
} }
else if (vm.g_sp->zvel < 0) else if (vm.g_sp->zvel < 0)
{ {
const int32_t l = VM_GetCeilZOfSlope(); actor[vm.g_i].ceilingz = l = VM_GetCeilZOfSlope();
if (vm.g_sp->z < l+(66<<8)) if (vm.g_sp->z < l+(66<<8))
{ {
vm.g_sp->z = l+(66<<8); vm.g_sp->z = l+(66<<8);