Merge tag 'a'

This commit is contained in:
Christoph Oelckers 2016-02-03 01:02:13 +01:00
commit 37578f85b3

View file

@ -4183,16 +4183,26 @@ bool DLevelScript::DoCheckActorTexture(int tid, AActor *activator, int string, b
if (floor) if (floor)
{ {
fixed_t z = actor->Z();
// Looking through planes from top to bottom // Looking through planes from top to bottom
for (i = 0; i < numff; ++i) for (i = 0; i < numff; ++i)
{ {
F3DFloor *ff = sec->e->XFloor.ffloors[i]; F3DFloor *ff = sec->e->XFloor.ffloors[i];
if (!(ff->flags & FF_EXISTS))
continue;
if ((ff->flags & (FF_EXISTS | FF_SOLID)) == (FF_EXISTS | FF_SOLID) && if (ff->flags & FF_SOLID &&
actor->Z() >= ff->top.plane->ZatPoint(actor)) secpic.isNull() &&
{ // This floor is beneath our feet. z >= ff->top.plane->ZatPoint(actor))
{ // This is the highest solid floor beneath our feet
secpic = *ff->top.texture; secpic = *ff->top.texture;
break; }
else if (!(ff->flags & FF_SOLID) &&
tex == TexMan[*ff->top.texture] &&
z <= ff->top.plane->ZatPoint(actor) &&
z >= ff->bottom.plane->ZatPoint(actor))
{ // Having your feet within a liquid counts as being "on" it
return true;
} }
} }
if (i == numff) if (i == numff)
@ -4208,11 +4218,21 @@ bool DLevelScript::DoCheckActorTexture(int tid, AActor *activator, int string, b
{ {
F3DFloor *ff = sec->e->XFloor.ffloors[i]; F3DFloor *ff = sec->e->XFloor.ffloors[i];
if ((ff->flags & (FF_EXISTS | FF_SOLID)) == (FF_EXISTS | FF_SOLID) && if (!(ff->flags & FF_EXISTS))
continue;
if (ff->flags & FF_SOLID &&
secpic.isNull() &&
z <= ff->bottom.plane->ZatPoint(actor)) z <= ff->bottom.plane->ZatPoint(actor))
{ // This floor is above our eyes. { // This is the lowest solid ceiling above our eyes
secpic = *ff->bottom.texture; secpic = *ff->top.texture;
break; }
else if (!(ff->flags & FF_SOLID) &&
tex == TexMan[*ff->bottom.texture] &&
z <= ff->top.plane->ZatPoint(actor) &&
z >= ff->bottom.plane->ZatPoint(actor))
{ // Having your eyes within a liquid counts as being "under" it
return true;
} }
} }
if (i < 0) if (i < 0)