Merge branch 'master' into profiles

This commit is contained in:
Sally Coolatta 2021-12-25 06:10:51 -05:00
commit 16730b02ef
9 changed files with 75 additions and 37 deletions

View file

@ -1061,7 +1061,7 @@ static void IdentifyVersion(void)
D_AddFile(startupiwads, va(pandf,srb2waddir,"textures.pk3")); D_AddFile(startupiwads, va(pandf,srb2waddir,"textures.pk3"));
D_AddFile(startupiwads, va(pandf,srb2waddir,"chars.pk3")); D_AddFile(startupiwads, va(pandf,srb2waddir,"chars.pk3"));
D_AddFile(startupiwads, va(pandf,srb2waddir,"maps.pk3")); D_AddFile(startupiwads, va(pandf,srb2waddir,"maps.pk3"));
D_AddFile(startupiwads, va(pandf,srb2waddir,"followers.pk3"));
#ifdef USE_PATCH_FILE #ifdef USE_PATCH_FILE
D_AddFile(startupiwads, va(pandf,srb2waddir,"patch.pk3")); D_AddFile(startupiwads, va(pandf,srb2waddir,"patch.pk3"));
@ -1307,6 +1307,7 @@ void D_SRB2Main(void)
mainwads++; W_VerifyFileMD5(mainwads, ASSET_HASH_TEXTURES_PK3); // textures.pk3 mainwads++; W_VerifyFileMD5(mainwads, ASSET_HASH_TEXTURES_PK3); // textures.pk3
mainwads++; W_VerifyFileMD5(mainwads, ASSET_HASH_CHARS_PK3); // chars.pk3 mainwads++; W_VerifyFileMD5(mainwads, ASSET_HASH_CHARS_PK3); // chars.pk3
mainwads++; W_VerifyFileMD5(mainwads, ASSET_HASH_MAPS_PK3); // maps.pk3 -- 4 - If you touch this, make sure to touch up the majormods stuff below. mainwads++; W_VerifyFileMD5(mainwads, ASSET_HASH_MAPS_PK3); // maps.pk3 -- 4 - If you touch this, make sure to touch up the majormods stuff below.
mainwads++; W_VerifyFileMd5(mainwads, ASSET_HASH_FOLLOWERS_PK3); // followers.pk3
#ifdef USE_PATCH_FILE #ifdef USE_PATCH_FILE
mainwads++; W_VerifyFileMD5(mainwads, ASSET_HASH_PATCH_PK3); // patch.pk3 mainwads++; W_VerifyFileMD5(mainwads, ASSET_HASH_PATCH_PK3); // patch.pk3
#endif #endif
@ -1315,7 +1316,7 @@ void D_SRB2Main(void)
mainwads++; // textures.pk3 mainwads++; // textures.pk3
mainwads++; // chars.pk3 mainwads++; // chars.pk3
mainwads++; // maps.pk3 mainwads++; // maps.pk3
mainwads++; // followers.pk3
#ifdef USE_PATCH_FILE #ifdef USE_PATCH_FILE
mainwads++; // patch.pk3 mainwads++; // patch.pk3
// TODO: DON'T FORGET TO REMOVE THIS ONCE WE DON'T NEED IT ANYMORE. // TODO: DON'T FORGET TO REMOVE THIS ONCE WE DON'T NEED IT ANYMORE.

View file

@ -459,7 +459,12 @@ INT32 CL_CheckFiles(void)
if (modifiedgame) if (modifiedgame)
{ {
CONS_Debug(DBG_NETPLAY, "game is modified; only doing basic checks\n"); CONS_Debug(DBG_NETPLAY, "game is modified; only doing basic checks\n");
for (i = 0, j = mainwads+1; i < fileneedednum || j < numwadfiles;) #ifdef DEVELOP
j = 0;
#else
j = mainwads + 1;
#endif
for (i = 0; i < fileneedednum || j < numwadfiles;)
{ {
if (j < numwadfiles && !wadfiles[j]->important) if (j < numwadfiles && !wadfiles[j]->important)
{ {

View file

@ -5466,6 +5466,7 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t
// SRB2kart // SRB2kart
"MT_RANDOMITEM", "MT_RANDOMITEM",
"MT_SPHEREBOX",
"MT_RANDOMITEMPOP", "MT_RANDOMITEMPOP",
"MT_FLOATINGITEM", "MT_FLOATINGITEM",
"MT_ITEMCAPSULE", "MT_ITEMCAPSULE",
@ -5806,6 +5807,8 @@ const char *const MOBJFLAG_LIST[] = {
"GRENADEBOUNCE", "GRENADEBOUNCE",
"RUNSPAWNFUNC", "RUNSPAWNFUNC",
"DONTENCOREMAP", "DONTENCOREMAP",
"PICKUPFROMBELOW",
"NOSQUISH",
NULL NULL
}; };

View file

@ -1969,7 +1969,7 @@ void K_SpawnDashDustRelease(player_t *player)
dust->momx = 3*player->mo->momx/5; dust->momx = 3*player->mo->momx/5;
dust->momy = 3*player->mo->momy/5; dust->momy = 3*player->mo->momy/5;
//dust->momz = 3*player->mo->momz/5; dust->momz = 3*P_GetMobjZMovement(player->mo)/5;
K_MatchGenericExtraFlags(dust, player->mo); K_MatchGenericExtraFlags(dust, player->mo);
} }
@ -1996,6 +1996,7 @@ void K_SpawnDriftBoostClip(player_t *player)
{ {
mobj_t *clip; mobj_t *clip;
fixed_t scale = 115*FRACUNIT/100; fixed_t scale = 115*FRACUNIT/100;
fixed_t momz = P_GetMobjZMovement(player->mo);
fixed_t z; fixed_t z;
if (( player->mo->eflags & MFE_VERTICALFLIP )) if (( player->mo->eflags & MFE_VERTICALFLIP ))
@ -2012,8 +2013,8 @@ void K_SpawnDriftBoostClip(player_t *player)
clip->fuse = 105; clip->fuse = 105;
clip->momz = 7 * P_MobjFlip(clip) * clip->scale; clip->momz = 7 * P_MobjFlip(clip) * clip->scale;
if (player->mo->momz > 0) if (momz > 0)
clip->momz += player->mo->momz; clip->momz += momz;
P_InstaThrust(clip, player->mo->angle + P_InstaThrust(clip, player->mo->angle +
P_RandomFlip(P_RandomRange(FRACUNIT/2, FRACUNIT)), P_RandomFlip(P_RandomRange(FRACUNIT/2, FRACUNIT)),
@ -2045,7 +2046,7 @@ void K_SpawnNormalSpeedLines(player_t *player)
fast->angle = K_MomentumAngle(player->mo); fast->angle = K_MomentumAngle(player->mo);
fast->momx = 3*player->mo->momx/4; fast->momx = 3*player->mo->momx/4;
fast->momy = 3*player->mo->momy/4; fast->momy = 3*player->mo->momy/4;
fast->momz = 3*player->mo->momz/4; fast->momz = 3*P_GetMobjZMovement(player->mo)/4;
K_MatchGenericExtraFlags(fast, player->mo); K_MatchGenericExtraFlags(fast, player->mo);
@ -2067,7 +2068,7 @@ void K_SpawnInvincibilitySpeedLines(mobj_t *mo)
fast->momx = 3*mo->momx/4; fast->momx = 3*mo->momx/4;
fast->momy = 3*mo->momy/4; fast->momy = 3*mo->momy/4;
fast->momz = 3*mo->momz/4; fast->momz = 3*P_GetMobjZMovement(mo)/4;
P_SetTarget(&fast->target, mo); P_SetTarget(&fast->target, mo);
fast->angle = K_MomentumAngle(mo); fast->angle = K_MomentumAngle(mo);
@ -4015,6 +4016,7 @@ void K_SpawnDriftElectricSparks(player_t *player)
P_SetObjectMomZ(spark, vspeed, false); P_SetObjectMomZ(spark, vspeed, false);
spark->momx += mo->momx; // copy player speed spark->momx += mo->momx; // copy player speed
spark->momy += mo->momy; spark->momy += mo->momy;
spark->momz += P_GetMobjZMovement(mo);
sparkangle += ANGLE_90; sparkangle += ANGLE_90;
} }
@ -4065,7 +4067,7 @@ static void K_SpawnDriftSparks(player_t *player)
spark->momx = player->mo->momx/2; spark->momx = player->mo->momx/2;
spark->momy = player->mo->momy/2; spark->momy = player->mo->momy/2;
//spark->momz = player->mo->momz/2; spark->momz = P_GetMobjZMovement(player->mo)/2;
spark->color = K_DriftSparkColor(player, player->driftcharge); spark->color = K_DriftSparkColor(player, player->driftcharge);
@ -4208,7 +4210,7 @@ static void K_SpawnAIZDust(player_t *player)
spark->momx = (6*player->mo->momx)/5; spark->momx = (6*player->mo->momx)/5;
spark->momy = (6*player->mo->momy)/5; spark->momy = (6*player->mo->momy)/5;
//spark->momz = player->mo->momz/2; spark->momz = P_GetMobjZMovement(player->mo);
K_MatchGenericExtraFlags(spark, player->mo); K_MatchGenericExtraFlags(spark, player->mo);
} }
@ -4366,7 +4368,7 @@ void K_SpawnWipeoutTrail(mobj_t *mo, boolean offroad)
{ {
dust->momx = mo->momx/2; dust->momx = mo->momx/2;
dust->momy = mo->momy/2; dust->momy = mo->momy/2;
dust->momz = mo->momz/2; dust->momz = P_GetMobjZMovement(mo)/2;
} }
} }
@ -4437,7 +4439,7 @@ void K_SpawnDraftDust(mobj_t *mo)
dust->momx = (4*mo->momx)/5; dust->momx = (4*mo->momx)/5;
dust->momy = (4*mo->momy)/5; dust->momy = (4*mo->momy)/5;
//dust->momz = (4*mo->momz)/5; dust->momz = (4*P_GetMobjZMovement(mo))/5;
P_Thrust(dust, dust->angle, 4*mo->scale); P_Thrust(dust, dust->angle, 4*mo->scale);
@ -4967,7 +4969,7 @@ static void K_FlameDashLeftoverSmoke(mobj_t *src)
smoke->momx = 3*src->momx/4; smoke->momx = 3*src->momx/4;
smoke->momy = 3*src->momy/4; smoke->momy = 3*src->momy/4;
smoke->momz = 3*src->momz/4; smoke->momz = 3*P_GetMobjZMovement(src)/4;
P_Thrust(smoke, src->angle + FixedAngle(P_RandomRange(135, 225)<<FRACBITS), P_RandomRange(0, 8) * src->scale); P_Thrust(smoke, src->angle + FixedAngle(P_RandomRange(135, 225)<<FRACBITS), P_RandomRange(0, 8) * src->scale);
smoke->momz += P_RandomRange(0, 4) * src->scale; smoke->momz += P_RandomRange(0, 4) * src->scale;
@ -6709,7 +6711,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
if (gametype == GT_RACE && player->rings <= 0) // spawn ring debt indicator if (gametype == GT_RACE && player->rings <= 0) // spawn ring debt indicator
{ {
mobj_t *debtflag = P_SpawnMobj(player->mo->x + player->mo->momx, player->mo->y + player->mo->momy, mobj_t *debtflag = P_SpawnMobj(player->mo->x + player->mo->momx, player->mo->y + player->mo->momy,
player->mo->z + player->mo->momz + player->mo->height + (24*player->mo->scale), MT_THOK); player->mo->z + P_GetMobjZMovement(player->mo) + player->mo->height + (24*player->mo->scale), MT_THOK);
P_SetMobjState(debtflag, S_RINGDEBT); P_SetMobjState(debtflag, S_RINGDEBT);
P_SetScale(debtflag, (debtflag->destscale = player->mo->scale)); P_SetScale(debtflag, (debtflag->destscale = player->mo->scale));
@ -6741,7 +6743,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
star->flags |= MF_NOGRAVITY; star->flags |= MF_NOGRAVITY;
star->momx = player->mo->momx / 2; star->momx = player->mo->momx / 2;
star->momy = player->mo->momy / 2; star->momy = player->mo->momy / 2;
star->momz = player->mo->momz / 2; star->momz = P_GetMobjZMovement(player->mo) / 2;
star->fuse = 12; star->fuse = 12;
star->scale = player->mo->scale; star->scale = player->mo->scale;
star->destscale = star->scale / 2; star->destscale = star->scale / 2;
@ -8317,7 +8319,7 @@ static void K_KartSpindashWind(mobj_t *parent)
wind->momx = 3 * parent->momx / 4; wind->momx = 3 * parent->momx / 4;
wind->momy = 3 * parent->momy / 4; wind->momy = 3 * parent->momy / 4;
wind->momz = 3 * parent->momz / 4; wind->momz = 3 * P_GetMobjZMovement(parent) / 4;
K_MatchGenericExtraFlags(wind, parent); K_MatchGenericExtraFlags(wind, parent);
} }

View file

@ -63,6 +63,8 @@ static void MasterServer_OnChange(void);
static void Advertise_OnChange(void); static void Advertise_OnChange(void);
static void RendezvousServer_OnChange(void);
static CV_PossibleValue_t masterserver_update_rate_cons_t[] = { static CV_PossibleValue_t masterserver_update_rate_cons_t[] = {
{2, "MIN"}, {2, "MIN"},
{60, "MAX"}, {60, "MAX"},
@ -70,7 +72,7 @@ static CV_PossibleValue_t masterserver_update_rate_cons_t[] = {
}; };
consvar_t cv_masterserver = CVAR_INIT ("masterserver", "https://ms.kartkrew.org/ms/api", CV_SAVE|CV_CALL, NULL, MasterServer_OnChange); consvar_t cv_masterserver = CVAR_INIT ("masterserver", "https://ms.kartkrew.org/ms/api", CV_SAVE|CV_CALL, NULL, MasterServer_OnChange);
consvar_t cv_rendezvousserver = CVAR_INIT ("rendezvousserver", "jart-dev.jameds.org", CV_SAVE, NULL, NULL); consvar_t cv_rendezvousserver = CVAR_INIT ("rendezvousserver", "relay.kartkrew.org", CV_SAVE|CV_CALL, NULL, RendezvousServer_OnChange);
consvar_t cv_servername = CVAR_INIT ("servername", "SRB2Kart server", CV_SAVE|CV_CALL|CV_NOINIT, NULL, Update_parameters); consvar_t cv_servername = CVAR_INIT ("servername", "SRB2Kart server", CV_SAVE|CV_CALL|CV_NOINIT, NULL, Update_parameters);
consvar_t cv_server_contact = CVAR_INIT ("server_contact", "", CV_SAVE|CV_CALL|CV_NOINIT, NULL, Update_parameters); consvar_t cv_server_contact = CVAR_INIT ("server_contact", "", CV_SAVE|CV_CALL|CV_NOINIT, NULL, Update_parameters);
@ -517,17 +519,6 @@ static void MasterServer_OnChange(void)
#ifdef MASTERSERVER #ifdef MASTERSERVER
UnregisterServer(); UnregisterServer();
/*
TODO: remove this for v2, it's just a hack
for those coming in with an old config.
*/
if (
! cv_masterserver.changed &&
strcmp(cv_masterserver.string, "ms.srb2.org:28900") == 0
){
CV_StealthSet(&cv_masterserver, cv_masterserver.defaultvalue);
}
Set_api(cv_masterserver.string); Set_api(cv_masterserver.string);
if (Online()) if (Online())
@ -565,3 +556,16 @@ Advertise_OnChange(void)
DRPC_UpdatePresence(); DRPC_UpdatePresence();
#endif #endif
} }
#ifdef DEVELOP
static void
RendezvousServer_OnChange (void)
{
consvar_t *cvar = &cv_rendezvousserver;
if (!strcmp(cvar->string, "jart-dev.jameds.org"))
CV_StealthSet(cvar, cvar->defaultvalue);
}
#else
#error "This was an indev thing, remove at release."
#endif

View file

@ -530,5 +530,6 @@ fixed_t P_ScaleFromMap(fixed_t n, fixed_t scale);
fixed_t P_GetMobjHead(const mobj_t *); fixed_t P_GetMobjHead(const mobj_t *);
fixed_t P_GetMobjFeet(const mobj_t *); fixed_t P_GetMobjFeet(const mobj_t *);
fixed_t P_GetMobjGround(const mobj_t *); fixed_t P_GetMobjGround(const mobj_t *);
fixed_t P_GetMobjZMovement(mobj_t *mo);
#endif // __P_LOCAL__ #endif // __P_LOCAL__

View file

@ -3574,7 +3574,8 @@ static void P_CheckFloatbobPlatforms(mobj_t *mobj)
static void P_SquishThink(mobj_t *mobj) static void P_SquishThink(mobj_t *mobj)
{ {
if (!(mobj->eflags & MFE_SLOPELAUNCHED)) if (!(mobj->flags & MF_NOSQUISH) &&
!(mobj->eflags & MFE_SLOPELAUNCHED))
{ {
K_Squish(mobj); K_Squish(mobj);
} }
@ -7401,7 +7402,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
fast->angle = mobj->angle; fast->angle = mobj->angle;
fast->momx = 3*mobj->target->momx/4; fast->momx = 3*mobj->target->momx/4;
fast->momy = 3*mobj->target->momy/4; fast->momy = 3*mobj->target->momy/4;
fast->momz = 3*mobj->target->momz/4; fast->momz = 3*P_GetMobjZMovement(mobj->target)/4;
K_MatchGenericExtraFlags(fast, mobj); K_MatchGenericExtraFlags(fast, mobj);
P_SetMobjState(fast, S_FLAMESHIELDLINE1 + i); P_SetMobjState(fast, S_FLAMESHIELDLINE1 + i);
@ -13164,3 +13165,25 @@ fixed_t P_GetMobjGround(const mobj_t *mobj)
{ {
return P_IsObjectFlipped(mobj) ? mobj->ceilingz : mobj->floorz; return P_IsObjectFlipped(mobj) ? mobj->ceilingz : mobj->floorz;
} }
//
// P_GetMobjZMovement
// Returns the Z momentum of the object, accounting for slopes if the object is grounded
//
fixed_t P_GetMobjZMovement(mobj_t *mo)
{
pslope_t *slope = mo->standingslope;
angle_t angDiff;
fixed_t speed;
if (!P_IsObjectOnGround(mo))
return mo->momz;
if (!slope)
return 0;
angDiff = R_PointToAngle2(0, 0, mo->momx, mo->momy) - slope->xydirection;
speed = FixedHypot(mo->momx, mo->momy);
return P_ReturnThrustY(mo, slope->zangle, P_ReturnThrustX(mo, angDiff, speed));
}

View file

@ -159,6 +159,8 @@ typedef enum
MF_DONTENCOREMAP = 1<<28, MF_DONTENCOREMAP = 1<<28,
// Hitbox extends just as far below as above. // Hitbox extends just as far below as above.
MF_PICKUPFROMBELOW = 1<<29, MF_PICKUPFROMBELOW = 1<<29,
// Disable momentum-based squash and stretch.
MF_NOSQUISH = 1<<30,
// free: to and including 1<<31 // free: to and including 1<<31
} mobjflag_t; } mobjflag_t;

View file

@ -284,14 +284,13 @@ boolean R_AddSingleSpriteDef(const char *sprname, spritedef_t *spritedef, UINT16
// store sprite info in lookup tables // store sprite info in lookup tables
//FIXME : numspritelumps do not duplicate sprite replacements //FIXME : numspritelumps do not duplicate sprite replacements
W_ReadLumpHeaderPwad(wadnum, l, &patch, PNG_HEADER_SIZE, 0);
#ifndef NO_PNG_LUMPS #ifndef NO_PNG_LUMPS
{ {
UINT8 header[PNG_HEADER_SIZE];
size_t len = W_LumpLengthPwad(wadnum, l); size_t len = W_LumpLengthPwad(wadnum, l);
W_ReadLumpHeaderPwad(wadnum, l, header, sizeof header, 0); if (Picture_IsLumpPNG((UINT8*)&patch, len))
if (Picture_IsLumpPNG(header, len))
{ {
UINT8 *png = W_CacheLumpNumPwad(wadnum, l, PU_STATIC); UINT8 *png = W_CacheLumpNumPwad(wadnum, l, PU_STATIC);
Picture_PNGDimensions((UINT8 *)png, &width, &height, &topoffset, &leftoffset, len); Picture_PNGDimensions((UINT8 *)png, &width, &height, &topoffset, &leftoffset, len);
@ -303,7 +302,6 @@ boolean R_AddSingleSpriteDef(const char *sprname, spritedef_t *spritedef, UINT16
if (!isPNG) if (!isPNG)
#endif #endif
{ {
W_ReadLumpHeaderPwad(wadnum, l, &patch, sizeof(INT16) * 4, 0);
width = (INT32)(SHORT(patch.width)); width = (INT32)(SHORT(patch.width));
height = (INT32)(SHORT(patch.height)); height = (INT32)(SHORT(patch.height));
topoffset = (INT16)(SHORT(patch.topoffset)); topoffset = (INT16)(SHORT(patch.topoffset));
@ -2100,8 +2098,7 @@ static void R_ProjectSprite(mobj_t *thing)
// //
// determine the colormap (lightlevel & special effects) // determine the colormap (lightlevel & special effects)
// //
if (vis->cut & SC_FULLBRIGHT if (vis->cut & SC_FULLBRIGHT)
&& (!vis->extra_colormap || !(vis->extra_colormap->flags & CMF_FADEFULLBRIGHTSPRITES)))
{ {
// full bright: goggles // full bright: goggles
vis->colormap = colormaps; vis->colormap = colormaps;