summaryrefslogtreecommitdiff
path: root/src/strife/p_mobj.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/strife/p_mobj.c')
-rw-r--r--src/strife/p_mobj.c33
1 files changed, 31 insertions, 2 deletions
diff --git a/src/strife/p_mobj.c b/src/strife/p_mobj.c
index 891e453f..954bb819 100644
--- a/src/strife/p_mobj.c
+++ b/src/strife/p_mobj.c
@@ -452,15 +452,22 @@ void P_MobjThinker (mobj_t* mobj)
// momentum movement
if (mobj->momx
|| mobj->momy
- || (mobj->flags&MF_SKULLFLY) )
+ /*|| (mobj->flags&MF_SKULLFLY)*/ ) // villsa [STRIFE] unused
{
P_XYMovement (mobj);
// FIXME: decent NOP/NULL/Nil function pointer please.
if (mobj->thinker.function.acv == (actionf_v) (-1))
return; // mobj was removed
+
+ // villsa [STRIFE]
+ if(P_GetTerrainType(mobj) == FLOOR_SOLID)
+ mobj->flags &= ~MF_FEETCLIPPED;
+ else
+ mobj->flags |= MF_FEETCLIPPED;
+
}
- if ( (mobj->z != mobj->floorz)
+ if ( (mobj->z != mobj->floorz && !(mobj->flags & MF_NOGRAVITY)) // villsa [STRIFE]
|| mobj->momz )
{
P_ZMovement (mobj);
@@ -468,6 +475,16 @@ void P_MobjThinker (mobj_t* mobj)
// FIXME: decent NOP/NULL/Nil function pointer please.
if (mobj->thinker.function.acv == (actionf_v) (-1))
return; // mobj was removed
+
+ // villsa [STRIFE]
+ if(P_GetTerrainType(mobj) == FLOOR_SOLID)
+ mobj->flags &= ~MF_FEETCLIPPED;
+ else
+ {
+ S_StartSound(mobj, sfx_wsplsh);
+ mobj->flags |= MF_FEETCLIPPED;
+ }
+
}
@@ -555,7 +572,19 @@ P_SpawnMobj
mobj->ceilingz = mobj->subsector->sector->ceilingheight;
if (z == ONFLOORZ)
+ {
mobj->z = mobj->floorz;
+
+ if(mobj->type == MT_TREE7)
+ {
+ mobj->type = mobj->type;
+ }
+
+ // villsa [STRIFE]
+ if(P_GetTerrainType(mobj) != FLOOR_SOLID)
+ mobj->flags |= MF_FEETCLIPPED;
+
+ }
else if (z == ONCEILINGZ)
mobj->z = mobj->ceilingz - mobj->info->height;
else