mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-29 07:32:02 +00:00
Expose P_CheckSkyHit to Lua
This commit is contained in:
parent
d6d424f102
commit
7a7cee7ca5
3 changed files with 27 additions and 10 deletions
|
@ -1030,6 +1030,20 @@ static int lib_pRailThinker(lua_State *L)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int lib_pCheckSkyHit(lua_State *L)
|
||||||
|
{
|
||||||
|
mobj_t *mobj = *((mobj_t **)luaL_checkudata(L, 1, META_MOBJ));
|
||||||
|
line_t *line = *((line_t **)luaL_checkudata(L, 2, META_LINE));
|
||||||
|
//HUDSAFE
|
||||||
|
INLEVEL
|
||||||
|
if (!mobj)
|
||||||
|
return LUA_ErrInvalid(L, "mobj_t");
|
||||||
|
if (!line)
|
||||||
|
return LUA_ErrInvalid(L, "line_t");
|
||||||
|
lua_pushboolean(L, P_CheckSkyHit(mobj, line));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static int lib_pXYMovement(lua_State *L)
|
static int lib_pXYMovement(lua_State *L)
|
||||||
{
|
{
|
||||||
mobj_t *actor = *((mobj_t **)luaL_checkudata(L, 1, META_MOBJ));
|
mobj_t *actor = *((mobj_t **)luaL_checkudata(L, 1, META_MOBJ));
|
||||||
|
@ -4059,6 +4073,7 @@ static luaL_Reg lib[] = {
|
||||||
{"P_CreateFloorSpriteSlope",lib_pCreateFloorSpriteSlope},
|
{"P_CreateFloorSpriteSlope",lib_pCreateFloorSpriteSlope},
|
||||||
{"P_RemoveFloorSpriteSlope",lib_pRemoveFloorSpriteSlope},
|
{"P_RemoveFloorSpriteSlope",lib_pRemoveFloorSpriteSlope},
|
||||||
{"P_RailThinker",lib_pRailThinker},
|
{"P_RailThinker",lib_pRailThinker},
|
||||||
|
{"P_CheckSkyHit",lib_pCheckSkyHit},
|
||||||
{"P_XYMovement",lib_pXYMovement},
|
{"P_XYMovement",lib_pXYMovement},
|
||||||
{"P_RingXYMovement",lib_pRingXYMovement},
|
{"P_RingXYMovement",lib_pRingXYMovement},
|
||||||
{"P_SceneryXYMovement",lib_pSceneryXYMovement},
|
{"P_SceneryXYMovement",lib_pSceneryXYMovement},
|
||||||
|
|
|
@ -297,6 +297,7 @@ void P_RunOverlays(void);
|
||||||
void P_HandleMinecartSegments(mobj_t *mobj);
|
void P_HandleMinecartSegments(mobj_t *mobj);
|
||||||
void P_MobjThinker(mobj_t *mobj);
|
void P_MobjThinker(mobj_t *mobj);
|
||||||
boolean P_RailThinker(mobj_t *mobj);
|
boolean P_RailThinker(mobj_t *mobj);
|
||||||
|
boolean P_CheckSkyHit(mobj_t *mo, line_t *line);
|
||||||
void P_PushableThinker(mobj_t *mobj);
|
void P_PushableThinker(mobj_t *mobj);
|
||||||
void P_SceneryThinker(mobj_t *mobj);
|
void P_SceneryThinker(mobj_t *mobj);
|
||||||
|
|
||||||
|
|
21
src/p_mobj.c
21
src/p_mobj.c
|
@ -1753,14 +1753,15 @@ bustupdone:
|
||||||
//
|
//
|
||||||
// P_CheckSkyHit
|
// P_CheckSkyHit
|
||||||
//
|
//
|
||||||
static boolean P_CheckSkyHit(mobj_t *mo)
|
boolean P_CheckSkyHit(mobj_t *mo, line_t *line)
|
||||||
{
|
{
|
||||||
if (ceilingline && ceilingline->backsector
|
if (line && (line->special == 41 ||
|
||||||
&& ceilingline->backsector->ceilingpic == skyflatnum
|
(line->backsector
|
||||||
&& ceilingline->frontsector
|
&& line->backsector->ceilingpic == skyflatnum
|
||||||
&& ceilingline->frontsector->ceilingpic == skyflatnum
|
&& line->frontsector
|
||||||
&& (mo->z >= ceilingline->frontsector->ceilingheight
|
&& line->frontsector->ceilingpic == skyflatnum
|
||||||
|| mo->z >= ceilingline->backsector->ceilingheight))
|
&& (mo->z >= line->frontsector->ceilingheight
|
||||||
|
|| mo->z >= line->backsector->ceilingheight))))
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1867,7 +1868,7 @@ void P_XYMovement(mobj_t *mo)
|
||||||
mo->fuse += ((5 - mo->threshold) * TICRATE);
|
mo->fuse += ((5 - mo->threshold) * TICRATE);
|
||||||
|
|
||||||
// Check for hit against sky here
|
// Check for hit against sky here
|
||||||
if (P_CheckSkyHit(mo))
|
if (P_CheckSkyHit(mo, ceilingline))
|
||||||
{
|
{
|
||||||
// Hack to prevent missiles exploding
|
// Hack to prevent missiles exploding
|
||||||
// against the sky.
|
// against the sky.
|
||||||
|
@ -1887,7 +1888,7 @@ void P_XYMovement(mobj_t *mo)
|
||||||
mo->flags &= ~MF_STICKY; //Don't check again!
|
mo->flags &= ~MF_STICKY; //Don't check again!
|
||||||
|
|
||||||
// Check for hit against sky here
|
// Check for hit against sky here
|
||||||
if (P_CheckSkyHit(mo))
|
if (P_CheckSkyHit(mo, ceilingline))
|
||||||
{
|
{
|
||||||
// Hack to prevent missiles exploding
|
// Hack to prevent missiles exploding
|
||||||
// against the sky.
|
// against the sky.
|
||||||
|
@ -1946,7 +1947,7 @@ void P_XYMovement(mobj_t *mo)
|
||||||
else if (mo->flags & MF_MISSILE)
|
else if (mo->flags & MF_MISSILE)
|
||||||
{
|
{
|
||||||
// explode a missile
|
// explode a missile
|
||||||
if (P_CheckSkyHit(mo))
|
if (P_CheckSkyHit(mo, ceilingline))
|
||||||
{
|
{
|
||||||
// Hack to prevent missiles exploding
|
// Hack to prevent missiles exploding
|
||||||
// against the sky.
|
// against the sky.
|
||||||
|
|
Loading…
Reference in a new issue