mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-02-24 14:31:02 +00:00
Better tripwire leniency vfx
This commit is contained in:
parent
d3a4a6ca81
commit
b9e3bdff94
11 changed files with 185 additions and 100 deletions
|
|
@ -260,6 +260,8 @@ typedef enum
|
|||
#define TUMBLEBOUNCES 3
|
||||
#define TUMBLEGRAVITY (4*FRACUNIT)
|
||||
|
||||
#define TRIPWIRETIME (TICRATE)
|
||||
|
||||
//}
|
||||
|
||||
// for kickstartaccel
|
||||
|
|
|
|||
|
|
@ -3805,6 +3805,22 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
|
|||
"S_BATTLEBUMPER_EXBLAST9",
|
||||
"S_BATTLEBUMPER_EXBLAST10",
|
||||
|
||||
// Tripwire
|
||||
"S_TRIPWIREBOOST_TOP1",
|
||||
"S_TRIPWIREBOOST_TOP2",
|
||||
"S_TRIPWIREBOOST_TOP3",
|
||||
"S_TRIPWIREBOOST_TOP4",
|
||||
"S_TRIPWIREBOOST_TOP5",
|
||||
"S_TRIPWIREBOOST_TOP6",
|
||||
"S_TRIPWIREBOOST_TOP7",
|
||||
"S_TRIPWIREBOOST_BOTTOM1",
|
||||
"S_TRIPWIREBOOST_BOTTOM2",
|
||||
"S_TRIPWIREBOOST_BOTTOM3",
|
||||
"S_TRIPWIREBOOST_BOTTOM4",
|
||||
"S_TRIPWIREBOOST_BOTTOM5",
|
||||
"S_TRIPWIREBOOST_BOTTOM6",
|
||||
"S_TRIPWIREBOOST_BOTTOM7",
|
||||
|
||||
// DEZ respawn laser
|
||||
"S_DEZLASER",
|
||||
"S_DEZLASER_TRAIL1",
|
||||
|
|
@ -5338,6 +5354,8 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t
|
|||
"MT_BATTLEBUMPER_DEBRIS",
|
||||
"MT_BATTLEBUMPER_BLAST",
|
||||
|
||||
"MT_TRIPWIREBOOST",
|
||||
|
||||
"MT_DEZLASER",
|
||||
|
||||
"MT_WAYPOINT",
|
||||
|
|
|
|||
|
|
@ -5129,7 +5129,7 @@ static void HWR_ProjectSprite(mobj_t *thing)
|
|||
R_InterpolateMobjState(thing, FRACUNIT, &interp);
|
||||
}
|
||||
|
||||
dispoffset = thing->info->dispoffset;
|
||||
dispoffset = thing->dispoffset;
|
||||
|
||||
// hitlag vibrating (todo: interp somehow?)
|
||||
if (thing->hitlag > 0 && (thing->eflags & MFE_DAMAGEHITLAG))
|
||||
|
|
|
|||
45
src/info.c
45
src/info.c
|
|
@ -580,7 +580,7 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
"BEXS", // Battle Bumper Explosion: Shell
|
||||
"BDEB", // Battle Bumper Explosion: Debris
|
||||
"BEXB", // Battle Bumper Explosion: Blast
|
||||
|
||||
"TWBT", // Tripwire Boost
|
||||
"DEZL", // DEZ Laser respawn
|
||||
|
||||
// Additional Kart Objects
|
||||
|
|
@ -4361,6 +4361,22 @@ state_t states[NUMSTATES] =
|
|||
{SPR_BEXB, FF_FULLBRIGHT|FF_PAPERSPRITE|FF_TRANS80, 2, {NULL}, 0, 0, S_BATTLEBUMPER_EXBLAST10}, // S_BATTLEBUMPER_EXBLAST9
|
||||
{SPR_BEXB, FF_FULLBRIGHT|FF_PAPERSPRITE|FF_TRANS90, 2, {NULL}, 0, 0, S_NULL}, // S_BATTLEBUMPER_EXBLAST10
|
||||
|
||||
{SPR_TWBT, FF_FULLBRIGHT|FF_ADD, 2, {NULL}, 0, 0, S_TRIPWIREBOOST_TOP2}, // S_TRIPWIREBOOST_TOP1
|
||||
{SPR_TWBT, FF_FULLBRIGHT|FF_ADD|1, 2, {NULL}, 0, 0, S_TRIPWIREBOOST_TOP3}, // S_TRIPWIREBOOST_TOP2
|
||||
{SPR_TWBT, FF_FULLBRIGHT|FF_ADD|2, 2, {NULL}, 0, 0, S_TRIPWIREBOOST_TOP4}, // S_TRIPWIREBOOST_TOP3
|
||||
{SPR_TWBT, FF_FULLBRIGHT|FF_ADD|3, 2, {NULL}, 0, 0, S_TRIPWIREBOOST_TOP5}, // S_TRIPWIREBOOST_TOP4
|
||||
{SPR_TWBT, FF_FULLBRIGHT|FF_ADD|4, 2, {NULL}, 0, 0, S_TRIPWIREBOOST_TOP6}, // S_TRIPWIREBOOST_TOP5
|
||||
{SPR_TWBT, FF_FULLBRIGHT|FF_ADD|5, 2, {NULL}, 0, 0, S_TRIPWIREBOOST_TOP7}, // S_TRIPWIREBOOST_TOP6
|
||||
{SPR_TWBT, FF_FULLBRIGHT|FF_ADD|6, 2, {NULL}, 0, 0, S_TRIPWIREBOOST_TOP1}, // S_TRIPWIREBOOST_TOP7
|
||||
|
||||
{SPR_TWBT, FF_FULLBRIGHT|FF_ADD|FF_VERTICALFLIP|FF_HORIZONTALFLIP, 2, {NULL}, 0, 0, S_TRIPWIREBOOST_BOTTOM2}, // S_TRIPWIREBOOST_BOTTOM1
|
||||
{SPR_TWBT, FF_FULLBRIGHT|FF_ADD|FF_VERTICALFLIP|FF_HORIZONTALFLIP|1, 2, {NULL}, 0, 0, S_TRIPWIREBOOST_BOTTOM3}, // S_TRIPWIREBOOST_BOTTOM2
|
||||
{SPR_TWBT, FF_FULLBRIGHT|FF_ADD|FF_VERTICALFLIP|FF_HORIZONTALFLIP|2, 2, {NULL}, 0, 0, S_TRIPWIREBOOST_BOTTOM4}, // S_TRIPWIREBOOST_BOTTOM3
|
||||
{SPR_TWBT, FF_FULLBRIGHT|FF_ADD|FF_VERTICALFLIP|FF_HORIZONTALFLIP|3, 2, {NULL}, 0, 0, S_TRIPWIREBOOST_BOTTOM5}, // S_TRIPWIREBOOST_BOTTOM4
|
||||
{SPR_TWBT, FF_FULLBRIGHT|FF_ADD|FF_VERTICALFLIP|FF_HORIZONTALFLIP|4, 2, {NULL}, 0, 0, S_TRIPWIREBOOST_BOTTOM6}, // S_TRIPWIREBOOST_BOTTOM5
|
||||
{SPR_TWBT, FF_FULLBRIGHT|FF_ADD|FF_VERTICALFLIP|FF_HORIZONTALFLIP|5, 2, {NULL}, 0, 0, S_TRIPWIREBOOST_BOTTOM7}, // S_TRIPWIREBOOST_BOTTOM6
|
||||
{SPR_TWBT, FF_FULLBRIGHT|FF_ADD|FF_VERTICALFLIP|FF_HORIZONTALFLIP|6, 2, {NULL}, 0, 0, S_TRIPWIREBOOST_BOTTOM1}, // S_TRIPWIREBOOST_BOTTOM7
|
||||
|
||||
{SPR_DEZL, FF_FULLBRIGHT|FF_PAPERSPRITE, 8, {NULL}, 0, 0, S_NULL}, // S_DEZLASER
|
||||
{SPR_DEZL, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_DEZLASER_TRAIL2}, // S_DEZLASER_TRAIL1
|
||||
{SPR_DEZL, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_DEZLASER_TRAIL3}, // S_DEZLASER_TRAIL2
|
||||
|
|
@ -24164,6 +24180,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_TRIPWIREBOOST
|
||||
-1, // doomednum
|
||||
S_TRIPWIREBOOST_TOP1, // spawnstate
|
||||
1000, // spawnhealth
|
||||
S_TRIPWIREBOOST_BOTTOM1, // seestate
|
||||
sfx_None, // seesound
|
||||
8, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
0, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_NULL, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_None, // deathsound
|
||||
0, // speed
|
||||
8*FRACUNIT, // radius
|
||||
16*FRACUNIT, // height
|
||||
1, // display offset
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_NOCLIPTHING|MF_DONTENCOREMAP, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_DEZLASER
|
||||
-1, // doomednum
|
||||
S_DEZLASER, // spawnstate
|
||||
|
|
|
|||
19
src/info.h
19
src/info.h
|
|
@ -1126,7 +1126,7 @@ typedef enum sprite
|
|||
SPR_BEXS, // Battle Bumper Explosion: Shell
|
||||
SPR_BDEB, // Battle Bumper Explosion: Debris
|
||||
SPR_BEXB, // Battle Bumper Explosion: Blast
|
||||
|
||||
SPR_TWBT, // Tripwire Boost
|
||||
SPR_DEZL, // DEZ Laser respawn
|
||||
|
||||
// Additional Kart Objects
|
||||
|
|
@ -4794,6 +4794,21 @@ typedef enum state
|
|||
S_BATTLEBUMPER_EXBLAST9,
|
||||
S_BATTLEBUMPER_EXBLAST10,
|
||||
|
||||
S_TRIPWIREBOOST_TOP1,
|
||||
S_TRIPWIREBOOST_TOP2,
|
||||
S_TRIPWIREBOOST_TOP3,
|
||||
S_TRIPWIREBOOST_TOP4,
|
||||
S_TRIPWIREBOOST_TOP5,
|
||||
S_TRIPWIREBOOST_TOP6,
|
||||
S_TRIPWIREBOOST_TOP7,
|
||||
S_TRIPWIREBOOST_BOTTOM1,
|
||||
S_TRIPWIREBOOST_BOTTOM2,
|
||||
S_TRIPWIREBOOST_BOTTOM3,
|
||||
S_TRIPWIREBOOST_BOTTOM4,
|
||||
S_TRIPWIREBOOST_BOTTOM5,
|
||||
S_TRIPWIREBOOST_BOTTOM6,
|
||||
S_TRIPWIREBOOST_BOTTOM7,
|
||||
|
||||
// DEZ Laser respawn
|
||||
S_DEZLASER,
|
||||
S_DEZLASER_TRAIL1,
|
||||
|
|
@ -6364,6 +6379,8 @@ typedef enum mobj_type
|
|||
MT_BATTLEBUMPER_DEBRIS,
|
||||
MT_BATTLEBUMPER_BLAST,
|
||||
|
||||
MT_TRIPWIREBOOST,
|
||||
|
||||
MT_DEZLASER,
|
||||
|
||||
MT_WAYPOINT,
|
||||
|
|
|
|||
132
src/k_kart.c
132
src/k_kart.c
|
|
@ -4939,90 +4939,6 @@ void K_DriftDustHandling(mobj_t *spawner)
|
|||
}
|
||||
}
|
||||
|
||||
static void K_SpawnTripwireVFX(mobj_t *mo)
|
||||
{
|
||||
tic_t t = leveltime;
|
||||
angle_t ang, aoff;
|
||||
SINT8 sign = 1;
|
||||
boolean altColor = false;
|
||||
mobj_t *dust;
|
||||
boolean drifting = false;
|
||||
UINT8 i;
|
||||
|
||||
I_Assert(mo != NULL);
|
||||
I_Assert(!P_MobjWasRemoved(mo));
|
||||
|
||||
if (!P_IsObjectOnGround(mo))
|
||||
return;
|
||||
|
||||
if (mo->player)
|
||||
{
|
||||
ang = mo->player->drawangle;
|
||||
|
||||
if (mo->player->drift != 0)
|
||||
{
|
||||
drifting = true;
|
||||
ang += (mo->player->drift * ((ANGLE_270 + ANGLE_22h) / 5)); // -112.5 doesn't work. I fucking HATE SRB2 angles
|
||||
if (mo->player->drift < 0)
|
||||
sign = 1;
|
||||
else
|
||||
sign = -1;
|
||||
}
|
||||
}
|
||||
else
|
||||
ang = mo->angle;
|
||||
|
||||
if (drifting == false)
|
||||
{
|
||||
i = (t & 1);
|
||||
|
||||
if (i & 1)
|
||||
sign = -1;
|
||||
else
|
||||
sign = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (t & 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
t /= 2;
|
||||
i = (t & 1);
|
||||
}
|
||||
|
||||
aoff = (ang + ANGLE_180) + (ANGLE_45 * sign);
|
||||
|
||||
dust = P_SpawnMobj(mo->x + FixedMul(24*mo->scale, FINECOSINE(aoff>>ANGLETOFINESHIFT)),
|
||||
mo->y + FixedMul(24*mo->scale, FINESINE(aoff>>ANGLETOFINESHIFT)),
|
||||
mo->z, MT_DRIFTDUST);
|
||||
|
||||
P_SetTarget(&dust->target, mo);
|
||||
P_InitAngle(dust, ang - (ANGLE_90 * sign)); // point completely perpendicular from the player
|
||||
P_SetScale(dust, mo->scale);
|
||||
dust->destscale = mo->scale * 6;
|
||||
dust->scalespeed = mo->scale/12;
|
||||
K_FlipFromObject(dust, mo);
|
||||
|
||||
altColor = (sign > 0);
|
||||
|
||||
if ((t / 2) & 1)
|
||||
{
|
||||
dust->tics++; // "randomize" animation
|
||||
altColor = !altColor;
|
||||
}
|
||||
|
||||
dust->colorized = true;
|
||||
dust->color = altColor ? SKINCOLOR_BLOSSOM : SKINCOLOR_JAWZ;
|
||||
|
||||
dust->momx = (4*mo->momx)/5;
|
||||
dust->momy = (4*mo->momy)/5;
|
||||
dust->momz = (4*P_GetMobjZMovement(mo))/5;
|
||||
|
||||
P_Thrust(dust, dust->angle, 4*mo->scale);
|
||||
}
|
||||
|
||||
void K_Squish(mobj_t *mo)
|
||||
{
|
||||
const fixed_t maxstretch = 4*FRACUNIT;
|
||||
|
|
@ -7289,6 +7205,43 @@ static void K_LookForRings(mobj_t *pmo)
|
|||
P_BlockThingsIterator(bx, by, PIT_AttractingRings);
|
||||
}
|
||||
|
||||
static void K_UpdateTripwire(player_t *player)
|
||||
{
|
||||
fixed_t speedThreshold = K_GetKartSpeed(player, false) *3/4;
|
||||
boolean goodSpeed = (player->speed >= speedThreshold);
|
||||
|
||||
if (player->tripwireLeniency > 0)
|
||||
{
|
||||
player->tripwireLeniency--;
|
||||
}
|
||||
|
||||
if (goodSpeed == false && player->tripwireLeniency > 0)
|
||||
{
|
||||
// Decrease at double speed when your speed is bad.
|
||||
player->tripwireLeniency--;
|
||||
}
|
||||
|
||||
if (K_TripwirePassConditions(player) == true)
|
||||
{
|
||||
if (player->tripwireLeniency == 0)
|
||||
{
|
||||
mobj_t *front = P_SpawnMobjFromMobj(player->mo, 0, 0, 0, MT_TRIPWIREBOOST);
|
||||
mobj_t *back = P_SpawnMobjFromMobj(player->mo, 0, 0, 0, MT_TRIPWIREBOOST);
|
||||
|
||||
P_SetTarget(&front->target, player->mo);
|
||||
P_SetTarget(&back->target, player->mo);
|
||||
|
||||
front->dispoffset = 1;
|
||||
|
||||
back->dispoffset = -1;
|
||||
back->extravalue1 = 1;
|
||||
P_SetMobjState(back, S_TRIPWIREBOOST_BOTTOM1);
|
||||
}
|
||||
|
||||
player->tripwireLeniency = max(player->tripwireLeniency, TRIPWIRETIME);
|
||||
}
|
||||
}
|
||||
|
||||
/** \brief Decreases various kart timers and powers per frame. Called in P_PlayerThink in p_user.c
|
||||
|
||||
\param player player object passed from P_PlayerThink
|
||||
|
|
@ -7644,16 +7597,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
|||
K_HandleTumbleBounce(player);
|
||||
}
|
||||
|
||||
if (player->tripwireLeniency > 0)
|
||||
{
|
||||
player->tripwireLeniency--;
|
||||
K_SpawnTripwireVFX(player->mo);
|
||||
}
|
||||
|
||||
if (K_TripwirePassConditions(player) == true)
|
||||
{
|
||||
player->tripwireLeniency = max(player->tripwireLeniency, TICRATE);
|
||||
}
|
||||
K_UpdateTripwire(player);
|
||||
|
||||
K_KartPlayerHUDUpdate(player);
|
||||
|
||||
|
|
|
|||
|
|
@ -99,7 +99,8 @@ enum mobj_e {
|
|||
mobj_sprxoff,
|
||||
mobj_spryoff,
|
||||
mobj_sprzoff,
|
||||
mobj_hitlag
|
||||
mobj_hitlag,
|
||||
mobj_dispoffset
|
||||
};
|
||||
|
||||
static const char *const mobj_opt[] = {
|
||||
|
|
@ -180,6 +181,7 @@ static const char *const mobj_opt[] = {
|
|||
"spryoff",
|
||||
"sprzoff",
|
||||
"hitlag",
|
||||
"dispoffset",
|
||||
NULL};
|
||||
|
||||
#define UNIMPLEMENTED luaL_error(L, LUA_QL("mobj_t") " field " LUA_QS " is not implemented for Lua and cannot be accessed.", mobj_opt[field])
|
||||
|
|
@ -458,6 +460,9 @@ static int mobj_get(lua_State *L)
|
|||
case mobj_hitlag:
|
||||
lua_pushinteger(L, mo->hitlag);
|
||||
break;
|
||||
case mobj_dispoffset:
|
||||
lua_pushinteger(L, mo->dispoffset);
|
||||
break;
|
||||
default: // extra custom variables in Lua memory
|
||||
lua_getfield(L, LUA_REGISTRYINDEX, LREG_EXTVARS);
|
||||
I_Assert(lua_istable(L, -1));
|
||||
|
|
@ -830,6 +835,9 @@ static int mobj_set(lua_State *L)
|
|||
case mobj_hitlag:
|
||||
mo->hitlag = luaL_checkinteger(L, 3);
|
||||
break;
|
||||
case mobj_dispoffset:
|
||||
mo->dispoffset = luaL_checkinteger(L, 3);
|
||||
break;
|
||||
default:
|
||||
lua_getfield(L, LUA_REGISTRYINDEX, LREG_EXTVARS);
|
||||
I_Assert(lua_istable(L, -1));
|
||||
|
|
|
|||
41
src/p_mobj.c
41
src/p_mobj.c
|
|
@ -7163,6 +7163,47 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
|
|||
}
|
||||
}
|
||||
break;
|
||||
case MT_TRIPWIREBOOST:
|
||||
if (!mobj->target || !mobj->target->health
|
||||
|| !mobj->target->player || !mobj->target->player->tripwireLeniency)
|
||||
{
|
||||
P_RemoveMobj(mobj);
|
||||
return false;
|
||||
}
|
||||
|
||||
mobj->angle = K_MomentumAngle(mobj->target);
|
||||
P_MoveOrigin(mobj, mobj->target->x, mobj->target->y, mobj->target->z + (mobj->target->height >> 1));
|
||||
mobj->target->destscale = mobj->target->scale;
|
||||
P_SetScale(mobj, mobj->target->scale);
|
||||
|
||||
if (mobj->extravalue1)
|
||||
{
|
||||
mobj->angle += ANGLE_180;
|
||||
}
|
||||
|
||||
{
|
||||
UINT8 trans = ((mobj->target->player->tripwireLeniency + 1) * (NUMTRANSMAPS+1)) / TRIPWIRETIME;
|
||||
|
||||
if (trans > NUMTRANSMAPS)
|
||||
trans = NUMTRANSMAPS;
|
||||
|
||||
trans = NUMTRANSMAPS - trans;
|
||||
|
||||
if (trans >= NUMTRANSMAPS)
|
||||
{
|
||||
mobj->renderflags |= RF_DONTDRAW;
|
||||
}
|
||||
else
|
||||
{
|
||||
mobj->renderflags &= ~(RF_TRANSMASK);
|
||||
|
||||
if (trans != 0)
|
||||
{
|
||||
mobj->renderflags |= (trans << RF_TRANSSHIFT);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MT_BOOSTFLAME:
|
||||
if (!mobj->target || !mobj->target->health)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -408,6 +408,8 @@ typedef struct mobj_s
|
|||
struct terrain_s *terrain; // Terrain definition of the floor this object last hit. NULL when in the air.
|
||||
INT32 hitlag; // Sal-style hit lag, straight from Captain Fetch's jowls
|
||||
|
||||
INT32 dispoffset;
|
||||
|
||||
// WARNING: New fields must be added separately to savegame and Lua.
|
||||
} mobj_t;
|
||||
|
||||
|
|
|
|||
|
|
@ -1600,7 +1600,7 @@ typedef enum
|
|||
MD2_SPRITEXOFFSET = 1<<20,
|
||||
MD2_SPRITEYOFFSET = 1<<21,
|
||||
MD2_FLOORSPRITESLOPE = 1<<22,
|
||||
// 1<<23 was taken out, maybe reuse later
|
||||
MD2_DISPOFFSET = 1<<23,
|
||||
MD2_HITLAG = 1<<24,
|
||||
MD2_WAYPOINTCAP = 1<<25,
|
||||
MD2_KITEMCAP = 1<<26,
|
||||
|
|
@ -1841,6 +1841,8 @@ static void SaveMobjThinker(const thinker_t *th, const UINT8 type)
|
|||
}
|
||||
if (mobj->hitlag)
|
||||
diff2 |= MD2_HITLAG;
|
||||
if (mobj->dispoffset)
|
||||
diff2 |= MD2_DISPOFFSET;
|
||||
if (mobj == waypointcap)
|
||||
diff2 |= MD2_WAYPOINTCAP;
|
||||
if (mobj == kitemcap)
|
||||
|
|
@ -2049,6 +2051,10 @@ static void SaveMobjThinker(const thinker_t *th, const UINT8 type)
|
|||
{
|
||||
WRITEINT32(save_p, mobj->hitlag);
|
||||
}
|
||||
if (diff2 & MD2_DISPOFFSET)
|
||||
{
|
||||
WRITEINT32(save_p, mobj->dispoffset);
|
||||
}
|
||||
if (diff2 & MD2_LASTMOMZ)
|
||||
{
|
||||
WRITEINT32(save_p, mobj->lastmomz);
|
||||
|
|
@ -3154,6 +3160,10 @@ static thinker_t* LoadMobjThinker(actionf_p1 thinker)
|
|||
{
|
||||
mobj->hitlag = READINT32(save_p);
|
||||
}
|
||||
if (diff2 & MD2_DISPOFFSET)
|
||||
{
|
||||
mobj->dispoffset = READINT32(save_p);
|
||||
}
|
||||
if (diff2 & MD2_LASTMOMZ)
|
||||
{
|
||||
mobj->lastmomz = READINT32(save_p);
|
||||
|
|
|
|||
|
|
@ -1503,7 +1503,7 @@ static void R_ProjectSprite(mobj_t *thing)
|
|||
fixed_t paperoffset = 0, paperdistance = 0;
|
||||
angle_t centerangle = 0;
|
||||
|
||||
INT32 dispoffset = thing->info->dispoffset;
|
||||
INT32 dispoffset = thing->dispoffset;
|
||||
|
||||
//SoM: 3/17/2000
|
||||
fixed_t gz = 0, gzt = 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue