diff --git a/src/info.c b/src/info.c index 7fa31f055..df8646606 100644 --- a/src/info.c +++ b/src/info.c @@ -5294,7 +5294,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 100, // mass 0, // damage sfx_None, // activesound - MF_SPECIAL|MF_SHOOTABLE|MF_ENEMY|MF_NOGRAVITY|MF_BOUNCE|MF_RUNSPAWNFUNC, // flags + MF_SPECIAL|MF_SHOOTABLE|MF_ENEMY|MF_NOGRAVITY|MF_SLIDEME|MF_RUNSPAWNFUNC, // flags S_NULL // raisestate }, diff --git a/src/p_mobj.c b/src/p_mobj.c index 48d67d69c..6376bd2a6 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -9206,10 +9206,11 @@ static void P_DragonbomberThink(mobj_t *mobj) mobj->angle += DRAGONTURNSPEED; else { + boolean flip = mobj->spawnpoint->options & MTF_OBJECTFLIP; fixed_t vspeed = FixedMul(mobj->info->speed >> 3, mobj->scale); fixed_t x = mobj->spawnpoint->x << FRACBITS; fixed_t y = mobj->spawnpoint->y << FRACBITS; - fixed_t z = mobj->spawnpoint->z << FRACBITS; + fixed_t z = (flip ? P_GetSectorCeilingZAt : P_GetSectorFloorZAt)(R_PointInSubsector(x, y)->sector, x, y) + (flip ? -1 : 1)*(mobj->spawnpoint->z << FRACBITS); angle_t diff = R_PointToAngle2(mobj->x, mobj->y, x, y) - mobj->angle; if (diff > ANGLE_180) mobj->angle -= DRAGONTURNSPEED;