From 4c7b09235781ff25fa881940b66e26ad5d33e6ea Mon Sep 17 00:00:00 2001 From: Lee Salzman Date: Tue, 14 Oct 2008 21:54:03 +0000 Subject: [PATCH] don't let dead players slide git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@3023 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- source/src/entity.h | 4 ++-- source/src/physics.cpp | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/source/src/entity.h b/source/src/entity.h index f72d9d80..c3a48e60 100644 --- a/source/src/entity.h +++ b/source/src/entity.h @@ -127,8 +127,8 @@ struct physent onfloor = onladder = inwater = jumpnext = crouching = trycrouch = stuck = false; } - virtual void oncollision() {}; - virtual void onmoved(const vec &dist) {}; + virtual void oncollision() {} + virtual void onmoved(const vec &dist) {} }; struct dynent : physent // animated ent diff --git a/source/src/physics.cpp b/source/src/physics.cpp index 620befbb..93838792 100644 --- a/source/src/physics.cpp +++ b/source/src/physics.cpp @@ -468,7 +468,13 @@ void moveplayer(physent *pl, int moveres, bool local, int curtime) } pl->o == oo; } - if(pl->type==ENT_CAMERA) return; + if(pl->type==ENT_CAMERA || (pl->type==ENT_PLAYER && pl->state==CS_DEAD)) + { + pl->o.x -= f*d.x; + pl->o.y -= f*d.y; + pl->o.z -= f*d.z; + break; + } if(pl->type==ENT_PLAYER && hitplayer) { float dx = hitplayer->o.x-pl->o.x, dy = hitplayer->o.y-pl->o.y, mag = sqrtf(dx*dx+dy*dy);