mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Lots of little fixes
Gameplay seems to work (besides the addplayer & client config stuff), but visuals (mostly sprites, but a little bit of HUD) are really messed up
This commit is contained in:
parent
5e13555727
commit
a251c3909b
18 changed files with 250 additions and 92 deletions
|
|
@ -605,7 +605,6 @@ static inline void resynch_write_player(resynch_pak *rsp, const size_t i)
|
|||
for (j = 0; j < NUMKARTSTUFF; ++j)
|
||||
rsp->kartstuff[j] = LONG(players[i].kartstuff[j]);
|
||||
|
||||
rsp->frameangle = (angle_t)LONG(players[i].frameangle);
|
||||
rsp->airtime = (tic_t)LONG(players[i].airtime);
|
||||
|
||||
// respawnvars_t
|
||||
|
|
@ -751,7 +750,6 @@ static void resynch_read_player(resynch_pak *rsp)
|
|||
for (j = 0; j < NUMKARTSTUFF; ++j)
|
||||
players[i].kartstuff[j] = LONG(rsp->kartstuff[j]);
|
||||
|
||||
players[i].frameangle = (angle_t)LONG(rsp->frameangle);
|
||||
players[i].airtime = (tic_t)LONG(rsp->airtime);
|
||||
|
||||
// respawnvars_t
|
||||
|
|
|
|||
|
|
@ -281,7 +281,6 @@ typedef struct
|
|||
|
||||
// SRB2kart
|
||||
INT32 kartstuff[NUMKARTSTUFF];
|
||||
angle_t frameangle;
|
||||
tic_t airtime;
|
||||
|
||||
// respawnvars_t
|
||||
|
|
|
|||
|
|
@ -1795,7 +1795,7 @@ void D_SendPlayerConfig(void)
|
|||
for (i = 0; i <= splitscreen; i++)
|
||||
{
|
||||
UINT8 buf[4];
|
||||
UINT8 *buf_p = buf;
|
||||
UINT8 *p = buf;
|
||||
|
||||
SendNameAndColor(i);
|
||||
SendWeaponPref(i);
|
||||
|
|
@ -1803,17 +1803,17 @@ void D_SendPlayerConfig(void)
|
|||
if (i > 0)
|
||||
{
|
||||
// Splitscreen players have invalid powerlevel
|
||||
WRITEUINT16(buf_p, 0);
|
||||
WRITEUINT16(buf_p, 0);
|
||||
WRITEUINT16(p, 0);
|
||||
WRITEUINT16(p, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Send it over
|
||||
WRITEUINT16(buf_p, vspowerlevel[PWRLV_RACE]);
|
||||
WRITEUINT16(buf_p, vspowerlevel[PWRLV_BATTLE]);
|
||||
WRITEUINT16(p, vspowerlevel[PWRLV_RACE]);
|
||||
WRITEUINT16(p, vspowerlevel[PWRLV_BATTLE]);
|
||||
}
|
||||
|
||||
SendNetXCmdForPlayer(i, XD_POWERLEVEL, buf, 4);
|
||||
SendNetXCmdForPlayer(i, XD_POWERLEVEL, buf, p-buf);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -505,7 +505,6 @@ typedef struct player_s
|
|||
// SRB2kart stuff
|
||||
INT32 kartstuff[NUMKARTSTUFF];
|
||||
INT32 karthud[NUMKARTHUD];
|
||||
angle_t frameangle; // for the player add the ability to have the sprite only face other angles
|
||||
INT16 lturn_max[MAXPREDICTTICS]; // What's the expected turn value for full-left for a number of frames back (to account for netgame latency)?
|
||||
INT16 rturn_max[MAXPREDICTTICS]; // Ditto but for full-right
|
||||
UINT32 distancetofinish;
|
||||
|
|
|
|||
|
|
@ -11531,12 +11531,10 @@ struct {
|
|||
{"V_90TRANS",V_90TRANS},
|
||||
{"V_HUDTRANSHALF",V_HUDTRANSHALF},
|
||||
{"V_HUDTRANS",V_HUDTRANS},
|
||||
{"V_AUTOFADEOUT",V_AUTOFADEOUT},
|
||||
{"V_RETURN8",V_RETURN8},
|
||||
{"V_OFFSET",V_OFFSET},
|
||||
{"V_ALLOWLOWERCASE",V_ALLOWLOWERCASE},
|
||||
{"V_FLIP",V_FLIP},
|
||||
{"V_CENTERNAMETAG",V_CENTERNAMETAG},
|
||||
{"V_SNAPTOTOP",V_SNAPTOTOP},
|
||||
{"V_SNAPTOBOTTOM",V_SNAPTOBOTTOM},
|
||||
{"V_SNAPTOLEFT",V_SNAPTOLEFT},
|
||||
|
|
|
|||
|
|
@ -1440,7 +1440,7 @@ void G_PreviewRewind(tic_t previewtime)
|
|||
#undef TWEEN
|
||||
P_SetThingPosition(players[i].mo);
|
||||
|
||||
players[i].frameangle = info->playerinfo[i].player.frameangle + FixedMul((INT32) (next_info->playerinfo[i].player.frameangle - info->playerinfo[i].player.frameangle), tweenvalue);
|
||||
players[i].drawangle = info->playerinfo[i].player.drawangle + FixedMul((INT32) (next_info->playerinfo[i].player.drawangle - info->playerinfo[i].player.drawangle), tweenvalue);
|
||||
|
||||
players[i].mo->sprite = info->playerinfo[i].mobj.sprite;
|
||||
players[i].mo->frame = info->playerinfo[i].mobj.frame;
|
||||
|
|
|
|||
12
src/g_game.c
12
src/g_game.c
|
|
@ -881,7 +881,7 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
|
|||
|
||||
player_t *player = &players[g_localplayers[forplayer]];
|
||||
camera_t *thiscam = &camera[forplayer];
|
||||
angle_t *lang = &localangle[forplayer];
|
||||
angle_t *myangle = &localangle[forplayer];
|
||||
INT32 *laim = &localaiming[forplayer];
|
||||
INT32 *th = &turnheld[forplayer];
|
||||
INT32 *kbl = &keyboard_look[forplayer];
|
||||
|
|
@ -1147,17 +1147,11 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
|
|||
|
||||
cmd->angleturn *= realtics;
|
||||
|
||||
*lang += (cmd->angleturn<<16);
|
||||
|
||||
cmd->angleturn = (INT16)(*lang >> 16);
|
||||
cmd->latency = modeattacking ? 0 : (leveltime & 0xFF); // Send leveltime when this tic was generated to the server for control lag calculations
|
||||
|
||||
if (!hu_stopped)
|
||||
{
|
||||
*lang += (cmd->angleturn<<16);
|
||||
*myangle += (cmd->angleturn<<16);
|
||||
}
|
||||
|
||||
cmd->angleturn = (INT16)(*lang >> 16);
|
||||
cmd->latency = modeattacking ? 0 : (leveltime & 0xFF); // Send leveltime when this tic was generated to the server for control lag calculations
|
||||
|
||||
/* Lua: Allow this hook to overwrite ticcmd.
|
||||
|
|
@ -4544,7 +4538,7 @@ char *G_BuildMapTitle(INT32 mapnum)
|
|||
|
||||
sprintf(title, "%s", mapheaderinfo[mapnum-1]->lvlttl);
|
||||
if (zonetext) sprintf(title + strlen(title), " %s", zonetext);
|
||||
if (actnum) sprintf(title + strlen(title), " %d", actnum);
|
||||
if (actnum > 0) sprintf(title + strlen(title), " %d", actnum);
|
||||
}
|
||||
|
||||
return title;
|
||||
|
|
|
|||
|
|
@ -1823,7 +1823,6 @@ static void HU_DrawCEcho(void)
|
|||
INT32 pnumlines = 0;
|
||||
|
||||
UINT32 realflags = cechoflags|V_SPLITSCREEN; // requested as part of splitscreen's stuff
|
||||
INT32 realalpha = (INT32)((cechoflags & V_ALPHAMASK) >> V_ALPHASHIFT);
|
||||
|
||||
char *line;
|
||||
char *echoptr;
|
||||
|
|
@ -1843,15 +1842,6 @@ static void HU_DrawCEcho(void)
|
|||
return;
|
||||
}
|
||||
|
||||
// Automatic fadeout
|
||||
if (realflags & V_AUTOFADEOUT)
|
||||
{
|
||||
UINT32 tempalpha = (UINT32)max((INT32)(10 - cechotimer), realalpha);
|
||||
|
||||
realflags &= ~V_ALPHASHIFT;
|
||||
realflags |= (tempalpha << V_ALPHASHIFT);
|
||||
}
|
||||
|
||||
strcpy(temp, cechotext);
|
||||
echoptr = &temp[0];
|
||||
|
||||
|
|
|
|||
227
src/info.c
227
src/info.c
|
|
@ -519,25 +519,216 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
"GWLR",
|
||||
|
||||
//SRB2kart Sprites (sort later)
|
||||
"RNDM","RPOP","SGNS","FAST","DSHR","BOST","BOSM","KFRE","KINV","KINF",
|
||||
"WIPD","DRIF","BDRF","DUST","DRWS","RSHE","FITM","BANA","ORBN","JAWZ","SSMN",
|
||||
"KRBM","BHOG","BHBM","SPBM","THNS","BUBS","BWVE",
|
||||
"FLMS","FLMD","FLMP","FLML","FLMF",
|
||||
"SINK","SITR",
|
||||
"KBLN","DEZL","POKE","AUDI","DECO","DOOD","SNES","GBAS","SPRS","BUZB",
|
||||
"CHOM","SACO","CRAB","BRNG","BUMP","FLEN","CLAS","PSHW","ISTA",
|
||||
"ISTB","ARRO","ITEM","ITMO","ITMI","ITMN","WANT","PBOM","HIT1","HIT2",
|
||||
"HIT3","RETI","AIDU","KSPK","LZI1","LZI2","KLIT","FZSM","FZBM","FPRT",
|
||||
"SBUS","MARB","FUFO","RUST","BLON","VAPE","HTZA","HTZB","SGVA","SGVB",
|
||||
"SGVC","PGTR","PGF1","PGF2","PGF3","PGBH","DPLR","SPTL","ENM1","GARU",
|
||||
"MARR","REAP","JITB","CDMO","CDBU","DPIN","PPLR","DPPT","AATR","COCO",
|
||||
"BDST","FROG","CBRA","HOLE","BBRA","EGFG","SMKP","MTYM","THWP","SNOB",
|
||||
"ICEB","ECND","DOCH","DUCK","GTRE","CHES","CHIM","DRGN","LZMN","PGSS",
|
||||
"ZTCH","MKMA","MKMP","RTCH","BOWL","BOWH","BRRL","BRRR","HRSE","TOAH",
|
||||
"BFRT","OFRT","RFRT","PFRT","ASPK","HBST","HBSO","HBSF","WBLZ","WBLN",
|
||||
"RNDM", // Random Item Box
|
||||
"RPOP", // Random Item Box Pop
|
||||
"SGNS", // Signpost sparkle
|
||||
"FAST", // Speed boost trail
|
||||
"DSHR", // Speed boost dust release
|
||||
"BOST", // Sneaker booster flame
|
||||
"BOSM", // Sneaker booster smoke
|
||||
"KFRE", // Sneaker fire trail
|
||||
"KINV", // Invincibility sparkle trail
|
||||
"KINF", // Invincibility flash
|
||||
"WIPD", // Wipeout dust trail
|
||||
"DRIF", // Drift Sparks
|
||||
"BDRF", // Brake drift sparks
|
||||
"DRWS", // Drift dust sparks
|
||||
|
||||
"FWRK","MXCL","RGSP","DRAF","GRES","OTFG","DBOS","EGOO","WTRL",
|
||||
"FBUB","GCHA","CHEZ","VIEW","DBCL","DBNC","DBST",
|
||||
// Kart Items
|
||||
"RSHE", // Rocket sneaker
|
||||
"FITM", // Eggman Monitor
|
||||
"BANA", // Banana Peel
|
||||
"ORBN", // Orbinaut
|
||||
"JAWZ", // Jawz
|
||||
"SSMN", // SS Mine
|
||||
"KRBM", // SS Mine BOOM
|
||||
"BHOG", // Ballhog
|
||||
"BHBM", // Ballhog BOOM
|
||||
"SPBM", // Self-Propelled Bomb
|
||||
"THNS", // Thunder Shield
|
||||
"BUBS", // Bubble Shield (not Bubs)
|
||||
"BWVE", // Bubble Shield waves
|
||||
"FLMS", // Flame Shield
|
||||
"FLMD", // Flame Shield dash
|
||||
"FLMP", // Flame Shield paper sprites
|
||||
"FLML", // Flame Shield speed lines
|
||||
"FLMF", // Flame Shield flash
|
||||
"SINK", // Kitchen Sink
|
||||
"SITR", // Kitchen Sink Trail
|
||||
"KBLN", // Battle Mode Bumper
|
||||
|
||||
"DEZL", // DEZ Laser respawn
|
||||
|
||||
// Additional Kart Objects
|
||||
"POKE", // Pokey
|
||||
"AUDI", // Audience members
|
||||
"DECO", // Old 1.0 Kart Decoratives + New misc ones
|
||||
"DOOD", // All the old D00Dkart objects
|
||||
"SNES", // Sprites for SNES remake maps
|
||||
"GBAS", // Sprites for GBA remake maps
|
||||
"SPRS", // Sapphire Coast Spring Shell
|
||||
"BUZB", // Sapphire Coast Buzz Mk3
|
||||
"CHOM", // Sapphire Coast Chomper
|
||||
"SACO", // Sapphire Coast Fauna
|
||||
"CRAB", // Crystal Abyss mobs
|
||||
"BRNG", // Chaotix Big Ring
|
||||
|
||||
"BUMP", // Player/shell bump
|
||||
"FLEN", // Shell hit graphics stuff
|
||||
"CLAS", // items clash
|
||||
"PSHW", // thrown indicator
|
||||
"ISTA", // instashield layer A
|
||||
"ISTB", // instashield layer B
|
||||
|
||||
"ARRO", // player arrows
|
||||
"ITEM",
|
||||
"ITMO",
|
||||
"ITMI",
|
||||
"ITMN",
|
||||
"WANT",
|
||||
|
||||
"PBOM", // player bomb
|
||||
|
||||
"HIT1", // battle points
|
||||
"HIT2", // battle points
|
||||
"HIT3", // battle points
|
||||
|
||||
"RETI", // player reticule
|
||||
|
||||
"AIDU",
|
||||
|
||||
"KSPK", // Spark radius for the lightning shield
|
||||
"LZI1", // Lightning that falls on the player for lightning shield
|
||||
"LZI2", // ditto
|
||||
"KLIT", // You have a twisted mind. But this actually is for the diagonal lightning.
|
||||
|
||||
"FZSM", // F-Zero NO CONTEST explosion
|
||||
"FZBM",
|
||||
|
||||
// Various plants
|
||||
"SBUS",
|
||||
|
||||
"MARB", // Marble Zone sprites
|
||||
"FUFO", // CD Special Stage UFO (don't ask me why it begins with an F)
|
||||
|
||||
"RUST", // Rusty Rig sprites
|
||||
|
||||
"VAPE", // Volcanic Valley
|
||||
|
||||
// Hill Top Zone
|
||||
"HTZA",
|
||||
"HTZB",
|
||||
|
||||
// Ports of gardens
|
||||
"SGVA",
|
||||
"SGVB",
|
||||
"SGVC",
|
||||
"PGTR",
|
||||
"PGF1",
|
||||
"PGF2",
|
||||
"PGF3",
|
||||
"PGBH",
|
||||
"DPLR",
|
||||
|
||||
// Midnight Channel stuff:
|
||||
"SPTL", // Spotlight
|
||||
"ENM1", // Shadows (Roaming and static)
|
||||
"GARU", // Wind attack roaming shadows use.
|
||||
"MARR", // Mayonaka Arrow
|
||||
|
||||
//Mementos stuff:
|
||||
"REAP",
|
||||
|
||||
"JITB", // Jack In The Box
|
||||
|
||||
// Color Drive stuff:
|
||||
"CDMO",
|
||||
"CDBU",
|
||||
|
||||
// Daytona Speedway
|
||||
"DPIN",
|
||||
|
||||
// Egg Zeppelin
|
||||
"PPLR",
|
||||
|
||||
// Desert Palace
|
||||
"DPPT",
|
||||
|
||||
// Aurora Atoll
|
||||
"AATR",
|
||||
"COCO",
|
||||
|
||||
// Barren Badlands
|
||||
"BDST",
|
||||
"FROG",
|
||||
"CBRA",
|
||||
"HOLE",
|
||||
"BBRA",
|
||||
|
||||
// Eerie Grove
|
||||
"EGFG",
|
||||
|
||||
// SMK ports
|
||||
"SMKP",
|
||||
"MTYM",
|
||||
"THWP",
|
||||
"SNOB",
|
||||
"ICEB",
|
||||
|
||||
// Ezo's maps - many single-use sprites!
|
||||
"ECND",
|
||||
"DOCH",
|
||||
"DUCK",
|
||||
"GTRE",
|
||||
"CHES",
|
||||
"CHIM",
|
||||
"DRGN",
|
||||
"LZMN",
|
||||
"PGSS",
|
||||
"ZTCH",
|
||||
"MKMA",
|
||||
"MKMP",
|
||||
"RTCH",
|
||||
"BOWL",
|
||||
"BOWH",
|
||||
"BRRL",
|
||||
"BRRR",
|
||||
"HRSE",
|
||||
"TOAH",
|
||||
"BFRT",
|
||||
"OFRT",
|
||||
"RFRT",
|
||||
"PFRT",
|
||||
"ASPK",
|
||||
"HBST",
|
||||
"HBSO",
|
||||
"HBSF",
|
||||
"WBLZ",
|
||||
"WBLN",
|
||||
|
||||
"FWRK",
|
||||
"MXCL",
|
||||
"RGSP",
|
||||
"DRAF",
|
||||
"GRES",
|
||||
|
||||
"OTFG",
|
||||
|
||||
"DBOS", // Drift boost flame
|
||||
|
||||
"EGOO",
|
||||
|
||||
"WTRL", // Water Trail
|
||||
|
||||
"GCHA", // follower: generic chao
|
||||
"CHEZ", // follower: cheese
|
||||
|
||||
// First person view sprites; this is a sprite so that it can be replaced by a specialized MD2 draw later
|
||||
"VIEW",
|
||||
|
||||
"DBCL", // Drift boost clip
|
||||
"DBNC", // Drift boost clip's sparks
|
||||
"DBST", // Drift boost plume
|
||||
};
|
||||
|
||||
char spr2names[NUMPLAYERSPRITES][5] =
|
||||
|
|
|
|||
|
|
@ -3442,7 +3442,7 @@ static void K_drawKartFirstPerson(void)
|
|||
if (stplyr->mo)
|
||||
{
|
||||
UINT8 driftcolor = K_DriftSparkColor(stplyr, stplyr->kartstuff[k_driftcharge]);
|
||||
const angle_t ang = R_PointToAngle2(0, 0, stplyr->rmomx, stplyr->rmomy) - stplyr->frameangle;
|
||||
const angle_t ang = R_PointToAngle2(0, 0, stplyr->rmomx, stplyr->rmomy) - stplyr->drawangle;
|
||||
// yes, the following is correct. no, you do not need to swap the x and y.
|
||||
fixed_t xoffs = -P_ReturnThrustY(stplyr->mo, ang, (BASEVIDWIDTH<<(FRACBITS-2))/2);
|
||||
fixed_t yoffs = -(P_ReturnThrustX(stplyr->mo, ang, 4*FRACUNIT) - 4*FRACUNIT);
|
||||
|
|
@ -3453,7 +3453,7 @@ static void K_drawKartFirstPerson(void)
|
|||
xoffs -= (tn)*scale;
|
||||
xoffs -= (dr)*scale;
|
||||
|
||||
if (stplyr->frameangle == stplyr->mo->angle)
|
||||
if (stplyr->drawangle == stplyr->mo->angle)
|
||||
{
|
||||
const fixed_t mag = FixedDiv(stplyr->speed, 10*stplyr->mo->scale);
|
||||
|
||||
|
|
|
|||
10
src/k_kart.c
10
src/k_kart.c
|
|
@ -3434,7 +3434,7 @@ void K_SpawnWipeoutTrail(mobj_t *mo, boolean translucent)
|
|||
I_Assert(!P_MobjWasRemoved(mo));
|
||||
|
||||
if (mo->player)
|
||||
aoff = (mo->player->frameangle + ANGLE_180);
|
||||
aoff = (mo->player->drawangle + ANGLE_180);
|
||||
else
|
||||
aoff = (mo->angle + ANGLE_180);
|
||||
|
||||
|
|
@ -3483,7 +3483,7 @@ void K_SpawnDraftDust(mobj_t *mo)
|
|||
{
|
||||
UINT8 leniency = (3*TICRATE)/4 + ((mo->player->kartweight-1) * (TICRATE/4));
|
||||
|
||||
ang = mo->player->frameangle;
|
||||
ang = mo->player->drawangle;
|
||||
|
||||
if (mo->player->kartstuff[k_drift] != 0)
|
||||
{
|
||||
|
|
@ -3559,7 +3559,7 @@ void K_DriftDustHandling(mobj_t *spawner)
|
|||
{
|
||||
if (spawner->player->pflags & PF_WPNDOWN)
|
||||
{
|
||||
anglediff = abs((signed)(spawner->angle - spawner->player->frameangle));
|
||||
anglediff = abs((signed)(spawner->angle - spawner->player->drawangle));
|
||||
if (leveltime % 6 == 0)
|
||||
S_StartSound(spawner, sfx_screec); // repeated here because it doesn't always happen to be within the range when this is the case
|
||||
}
|
||||
|
|
@ -5001,7 +5001,7 @@ static void K_MoveHeldObjects(player_t *player)
|
|||
|
||||
#if 1
|
||||
{
|
||||
angle_t input = player->frameangle - cur->angle;
|
||||
angle_t input = player->drawangle - cur->angle;
|
||||
boolean invert = (input > ANGLE_180);
|
||||
if (invert)
|
||||
input = InvAngle(input);
|
||||
|
|
@ -5013,7 +5013,7 @@ static void K_MoveHeldObjects(player_t *player)
|
|||
cur->angle = cur->angle + input;
|
||||
}
|
||||
#else
|
||||
cur->angle = player->frameangle;
|
||||
cur->angle = player->drawangle;
|
||||
#endif
|
||||
|
||||
angoffset = ANGLE_90 + (ANGLE_180 * num);
|
||||
|
|
|
|||
|
|
@ -334,7 +334,7 @@ static void K_MovePlayerToRespawnPoint(player_t *player)
|
|||
}
|
||||
|
||||
// Set angle, regardless of if we're done or not
|
||||
player->frameangle = R_PointToAngle2(
|
||||
player->drawangle = R_PointToAngle2(
|
||||
player->mo->x, player->mo->y,
|
||||
dest.x, dest.y
|
||||
);
|
||||
|
|
@ -383,7 +383,7 @@ static void K_MovePlayerToRespawnPoint(player_t *player)
|
|||
);
|
||||
|
||||
// Move toward the respawn point
|
||||
player->frameangle = stepha;
|
||||
player->drawangle = stepha;
|
||||
|
||||
step.x = FixedMul(FixedMul(FINECOSINE(stepha >> ANGLETOFINESHIFT), stepamt), FINECOSINE(stepva >> ANGLETOFINESHIFT));
|
||||
step.y = FixedMul(FixedMul(FINESINE(stepha >> ANGLETOFINESHIFT), stepamt), FINECOSINE(stepva >> ANGLETOFINESHIFT));
|
||||
|
|
|
|||
|
|
@ -213,8 +213,6 @@ static int player_get(lua_State *L)
|
|||
LUA_PushUserdata(L, plr->powers, META_POWERS);
|
||||
else if (fastcmp(field,"kartstuff"))
|
||||
LUA_PushUserdata(L, plr->kartstuff, META_KARTSTUFF);
|
||||
else if (fastcmp(field,"frameangle"))
|
||||
lua_pushangle(L, plr->frameangle);
|
||||
else if (fastcmp(field,"airtime"))
|
||||
lua_pushinteger(L, plr->airtime);
|
||||
else if (fastcmp(field,"pflags"))
|
||||
|
|
@ -499,8 +497,6 @@ static int player_set(lua_State *L)
|
|||
// SRB2kart
|
||||
else if (fastcmp(field,"kartstuff"))
|
||||
return NOSET;
|
||||
else if (fastcmp(field,"frameangle"))
|
||||
plr->frameangle = luaL_checkangle(L, 3);
|
||||
else if (fastcmp(field,"airtime"))
|
||||
plr->airtime = (tic_t)luaL_checkinteger(L, 3);
|
||||
else if (fastcmp(field,"kartspeed"))
|
||||
|
|
|
|||
|
|
@ -1177,7 +1177,7 @@ void Command_ObjectPlace_f(void)
|
|||
|
||||
if (!COM_CheckParm("-silent"))
|
||||
{
|
||||
HU_SetCEchoFlags(V_RETURN8|V_MONOSPACE|V_AUTOFADEOUT);
|
||||
HU_SetCEchoFlags(V_RETURN8|V_MONOSPACE);
|
||||
HU_SetCEchoDuration(10);
|
||||
HU_DoCEcho(va(M_GetText(
|
||||
"\\\\\\\\\\\\\\\\\\\\\\\\\x82"
|
||||
|
|
|
|||
|
|
@ -253,7 +253,6 @@ static void P_NetArchivePlayers(void)
|
|||
WRITEINT16(save_p, players[i].rturn_max[j]);
|
||||
}
|
||||
|
||||
WRITEANGLE(save_p, players[i].frameangle);
|
||||
WRITEUINT32(save_p, players[i].distancetofinish);
|
||||
WRITEUINT32(save_p, K_GetWaypointHeapIndex(players[i].nextwaypoint));
|
||||
WRITEUINT32(save_p, players[i].airtime);
|
||||
|
|
@ -447,7 +446,6 @@ static void P_NetUnArchivePlayers(void)
|
|||
players[i].rturn_max[j] = READINT16(save_p);
|
||||
}
|
||||
|
||||
players[i].frameangle = READANGLE(save_p);
|
||||
players[i].distancetofinish = READUINT32(save_p);
|
||||
players[i].nextwaypoint = (waypoint_t *)(size_t)READUINT32(save_p);
|
||||
players[i].airtime = READUINT32(save_p);
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
#include "p_polyobj.h"
|
||||
#include "p_slopes.h"
|
||||
#include "hu_stuff.h"
|
||||
#include "v_video.h" // V_AUTOFADEOUT|V_ALLOWLOWERCASE
|
||||
#include "v_video.h" // V_ALLOWLOWERCASE
|
||||
#include "m_misc.h"
|
||||
#include "m_cond.h" //unlock triggers
|
||||
#include "lua_hook.h" // LUAh_LinedefExecute
|
||||
|
|
|
|||
22
src/p_user.c
22
src/p_user.c
|
|
@ -2183,7 +2183,7 @@ void P_MovePlayer(player_t *player)
|
|||
else if (player->pflags & PF_SLIDING)
|
||||
{
|
||||
P_SetPlayerMobjState(player->mo, S_KART_SPINOUT);
|
||||
player->frameangle -= ANGLE_22h;
|
||||
player->drawangle -= ANGLE_22h;
|
||||
}
|
||||
else if (player->kartstuff[k_spinouttimer] > 0)
|
||||
{
|
||||
|
|
@ -2191,19 +2191,19 @@ void P_MovePlayer(player_t *player)
|
|||
|
||||
P_SetPlayerMobjState(player->mo, S_KART_SPINOUT);
|
||||
|
||||
if (speed == 1 && abs((signed)(player->mo->angle - player->frameangle)) < ANGLE_22h)
|
||||
player->frameangle = player->mo->angle; // Face forward at the end of the animation
|
||||
if (speed == 1 && abs((signed)(player->mo->angle - player->drawangle)) < ANGLE_22h)
|
||||
player->drawangle = player->mo->angle; // Face forward at the end of the animation
|
||||
else
|
||||
player->frameangle -= (ANGLE_11hh * speed);
|
||||
player->drawangle -= (ANGLE_11hh * speed);
|
||||
}
|
||||
else if (player->powers[pw_nocontrol] && player->pflags & PF_WPNDOWN)
|
||||
{
|
||||
P_SetPlayerMobjState(player->mo, S_KART_SPINOUT);
|
||||
|
||||
if (((player->powers[pw_nocontrol] + 5) % 20) < 10)
|
||||
player->frameangle += ANGLE_11hh;
|
||||
player->drawangle += ANGLE_11hh;
|
||||
else
|
||||
player->frameangle -= ANGLE_11hh;
|
||||
player->drawangle -= ANGLE_11hh;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -2211,16 +2211,16 @@ void P_MovePlayer(player_t *player)
|
|||
|
||||
if (player->kartstuff[k_pogospring])
|
||||
{
|
||||
player->frameangle += ANGLE_22h;
|
||||
player->drawangle += ANGLE_22h;
|
||||
}
|
||||
else
|
||||
{
|
||||
player->frameangle = player->mo->angle;
|
||||
player->drawangle = player->mo->angle;
|
||||
|
||||
if (player->kartstuff[k_drift] != 0)
|
||||
{
|
||||
INT32 a = (ANGLE_45 / 5) * player->kartstuff[k_drift];
|
||||
player->frameangle += a;
|
||||
player->drawangle += a;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2497,7 +2497,7 @@ static void P_DoZoomTube(player_t *player)
|
|||
}
|
||||
|
||||
P_SetPlayerMobjState(player->mo, S_KART_SPINOUT);
|
||||
player->frameangle -= ANGLE_22h;
|
||||
player->drawangle -= ANGLE_22h;
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
|
@ -4147,7 +4147,7 @@ static void P_HandleFollower(player_t *player)
|
|||
if (player->kartstuff[k_spinouttimer] || player->mo->state == &states[S_KART_SPINOUT] || player->mo->health <= 0)
|
||||
{
|
||||
player->follower->movecount = 0; // cancel hit confirm.
|
||||
player->follower->angle = player->frameangle; // spin out
|
||||
player->follower->angle = player->drawangle; // spin out
|
||||
if (player->follower->extravalue1 != 2)
|
||||
{
|
||||
player->follower->extravalue1 = 2;
|
||||
|
|
|
|||
23
src/r_main.c
23
src/r_main.c
|
|
@ -1118,25 +1118,20 @@ void R_SetupFrame(player_t *player)
|
|||
{
|
||||
camera_t *thiscam = &camera[0];
|
||||
boolean chasecam = false;
|
||||
UINT8 i = 0;
|
||||
UINT8 i;
|
||||
|
||||
if (r_splitscreen)
|
||||
for (i = 0; i <= r_splitscreen; i++)
|
||||
{
|
||||
for (i = 1; i <= r_splitscreen; i++)
|
||||
if (player == &players[displayplayers[i]])
|
||||
{
|
||||
if (player == &players[displayplayers[i]])
|
||||
{
|
||||
thiscam = &camera[i];
|
||||
chasecam = (cv_chasecam[i].value != 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (i > r_splitscreen)
|
||||
{
|
||||
i = 0;
|
||||
thiscam = &camera[i];
|
||||
chasecam = (cv_chasecam[i].value != 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (i > r_splitscreen)
|
||||
return; // shouldn't be possible, but just in case
|
||||
|
||||
if (player->playerstate == PST_DEAD || gamestate == GS_TITLESCREEN || tutorialmode)
|
||||
chasecam = true; // force chasecam on
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue