mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2025-02-25 13:21:05 +00:00
Merge branch 'maxskins-bump' into 'next'
Bump MAXSKINS to 128 + Clean up skin struct See merge request KartKrew/Kart-Public!82
This commit is contained in:
commit
af67c7abf5
15 changed files with 11 additions and 633 deletions
|
@ -32,13 +32,7 @@
|
||||||
// Extra abilities/settings for skins (combinable stuff)
|
// Extra abilities/settings for skins (combinable stuff)
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
SF_SUPER = 1, // Can turn super in singleplayer/co-op mode.
|
SF_HIRES = 1, // Draw the sprite 2x as small?
|
||||||
SF_SUPERANIMS = 1<<1, // If super, use the super sonic animations
|
|
||||||
SF_SUPERSPIN = 1<<2, // Should spin frames be played while super?
|
|
||||||
SF_HIRES = 1<<3, // Draw the sprite 2x as small?
|
|
||||||
SF_NOSKID = 1<<4, // No skid particles etc
|
|
||||||
SF_NOSPEEDADJUST = 1<<5, // Skin-specific version of disablespeedadjust
|
|
||||||
SF_RUNONWATER = 1<<6, // Run on top of water FOFs?
|
|
||||||
} skinflags_t;
|
} skinflags_t;
|
||||||
|
|
||||||
//Primary and secondary skin abilities
|
//Primary and secondary skin abilities
|
||||||
|
|
|
@ -3103,11 +3103,6 @@ static void readmaincfg(MYFILE *f)
|
||||||
if (creditscutscene > 128)
|
if (creditscutscene > 128)
|
||||||
creditscutscene = 128;
|
creditscutscene = 128;
|
||||||
}
|
}
|
||||||
else if (fastcmp(word, "DISABLESPEEDADJUST"))
|
|
||||||
{
|
|
||||||
DEH_WriteUndoline(word, va("%d", disableSpeedAdjust), UNDO_NONE);
|
|
||||||
disableSpeedAdjust = (value || word2[0] == 'T' || word2[0] == 'Y');
|
|
||||||
}
|
|
||||||
else if (fastcmp(word, "NUMDEMOS"))
|
else if (fastcmp(word, "NUMDEMOS"))
|
||||||
{
|
{
|
||||||
DEH_WriteUndoline(word, va("%d", numDemos), UNDO_NONE);
|
DEH_WriteUndoline(word, va("%d", numDemos), UNDO_NONE);
|
||||||
|
@ -8644,13 +8639,7 @@ struct {
|
||||||
{"RW_RAIL",RW_RAIL},
|
{"RW_RAIL",RW_RAIL},
|
||||||
|
|
||||||
// Character flags (skinflags_t)
|
// Character flags (skinflags_t)
|
||||||
{"SF_SUPER",SF_SUPER},
|
|
||||||
{"SF_SUPERANIMS",SF_SUPERANIMS},
|
|
||||||
{"SF_SUPERSPIN",SF_SUPERSPIN},
|
|
||||||
{"SF_HIRES",SF_HIRES},
|
{"SF_HIRES",SF_HIRES},
|
||||||
{"SF_NOSKID",SF_NOSKID},
|
|
||||||
{"SF_NOSPEEDADJUST",SF_NOSPEEDADJUST},
|
|
||||||
{"SF_RUNONWATER",SF_RUNONWATER},
|
|
||||||
|
|
||||||
// Character abilities!
|
// Character abilities!
|
||||||
// Primary
|
// Primary
|
||||||
|
|
|
@ -244,7 +244,7 @@ extern FILE *logstream;
|
||||||
// NOTE: it needs more than this to increase the number of players...
|
// NOTE: it needs more than this to increase the number of players...
|
||||||
|
|
||||||
#define MAXPLAYERS 16
|
#define MAXPLAYERS 16
|
||||||
#define MAXSKINS 64
|
#define MAXSKINS 128
|
||||||
#define PLAYERSMASK (MAXPLAYERS-1)
|
#define PLAYERSMASK (MAXPLAYERS-1)
|
||||||
#define MAXPLAYERNAME 21
|
#define MAXPLAYERNAME 21
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,6 @@ extern boolean modifiedgame;
|
||||||
extern boolean majormods;
|
extern boolean majormods;
|
||||||
extern UINT16 mainwads;
|
extern UINT16 mainwads;
|
||||||
extern boolean savemoddata; // This mod saves time/emblem data.
|
extern boolean savemoddata; // This mod saves time/emblem data.
|
||||||
extern boolean disableSpeedAdjust; // Don't alter the duration of player states if true
|
|
||||||
extern boolean imcontinuing; // Temporary flag while continuing
|
extern boolean imcontinuing; // Temporary flag while continuing
|
||||||
extern boolean metalrecording;
|
extern boolean metalrecording;
|
||||||
|
|
||||||
|
|
|
@ -92,7 +92,6 @@ boolean majormods = false; // Set if Lua/Gameplay SOC/replacement map has been a
|
||||||
boolean savemoddata = false;
|
boolean savemoddata = false;
|
||||||
UINT8 paused;
|
UINT8 paused;
|
||||||
UINT8 modeattacking = ATTACKING_NONE;
|
UINT8 modeattacking = ATTACKING_NONE;
|
||||||
boolean disableSpeedAdjust = true;
|
|
||||||
boolean imcontinuing = false;
|
boolean imcontinuing = false;
|
||||||
boolean runemeraldmanager = false;
|
boolean runemeraldmanager = false;
|
||||||
|
|
||||||
|
@ -5114,17 +5113,16 @@ void G_GhostTicker(void)
|
||||||
INT32 type = -1;
|
INT32 type = -1;
|
||||||
if (g->mo->skin)
|
if (g->mo->skin)
|
||||||
{
|
{
|
||||||
skin_t *skin = (skin_t *)g->mo->skin;
|
|
||||||
switch (ziptic & EZT_THOKMASK)
|
switch (ziptic & EZT_THOKMASK)
|
||||||
{
|
{
|
||||||
case EZT_THOK:
|
case EZT_THOK:
|
||||||
type = skin->thokitem < 0 ? (UINT32)mobjinfo[MT_PLAYER].painchance : (UINT32)skin->thokitem;
|
type = (UINT32)mobjinfo[MT_PLAYER].painchance;
|
||||||
break;
|
break;
|
||||||
case EZT_SPIN:
|
case EZT_SPIN:
|
||||||
type = skin->spinitem < 0 ? (UINT32)mobjinfo[MT_PLAYER].damage : (UINT32)skin->spinitem;
|
type = (UINT32)mobjinfo[MT_PLAYER].damage;
|
||||||
break;
|
break;
|
||||||
case EZT_REV:
|
case EZT_REV:
|
||||||
type = skin->revitem < 0 ? (UINT32)mobjinfo[MT_PLAYER].raisestate : (UINT32)skin->revitem;
|
type = (UINT32)mobjinfo[MT_PLAYER].raisestate;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -632,19 +632,6 @@ static int lib_pCheckSolidLava(lua_State *L)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int lib_pCanRunOnWater(lua_State *L)
|
|
||||||
{
|
|
||||||
player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER));
|
|
||||||
ffloor_t *rover = *((ffloor_t **)luaL_checkudata(L, 2, META_FFLOOR));
|
|
||||||
//HUDSAFE
|
|
||||||
if (!player)
|
|
||||||
return LUA_ErrInvalid(L, "player_t");
|
|
||||||
if (!rover)
|
|
||||||
return LUA_ErrInvalid(L, "ffloor_t");
|
|
||||||
lua_pushboolean(L, P_CanRunOnWater(player, rover));
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int lib_pSpawnShadowMobj(lua_State *L)
|
static int lib_pSpawnShadowMobj(lua_State *L)
|
||||||
{
|
{
|
||||||
mobj_t *caster = *((mobj_t **)luaL_checkudata(L, 1, META_MOBJ));
|
mobj_t *caster = *((mobj_t **)luaL_checkudata(L, 1, META_MOBJ));
|
||||||
|
@ -2627,7 +2614,6 @@ static luaL_Reg lib[] = {
|
||||||
{"P_InsideANonSolidFFloor",lib_pInsideANonSolidFFloor},
|
{"P_InsideANonSolidFFloor",lib_pInsideANonSolidFFloor},
|
||||||
{"P_CheckDeathPitCollide",lib_pCheckDeathPitCollide},
|
{"P_CheckDeathPitCollide",lib_pCheckDeathPitCollide},
|
||||||
{"P_CheckSolidLava",lib_pCheckSolidLava},
|
{"P_CheckSolidLava",lib_pCheckSolidLava},
|
||||||
{"P_CanRunOnWater",lib_pCanRunOnWater},
|
|
||||||
{"P_SpawnShadowMobj",lib_pSpawnShadowMobj},
|
{"P_SpawnShadowMobj",lib_pSpawnShadowMobj},
|
||||||
|
|
||||||
// p_user
|
// p_user
|
||||||
|
|
|
@ -30,24 +30,10 @@ enum skin {
|
||||||
skin_facerank,
|
skin_facerank,
|
||||||
skin_facewant,
|
skin_facewant,
|
||||||
skin_facemmap,
|
skin_facemmap,
|
||||||
skin_ability,
|
|
||||||
skin_ability2,
|
|
||||||
skin_thokitem,
|
|
||||||
skin_spinitem,
|
|
||||||
skin_revitem,
|
|
||||||
skin_actionspd,
|
|
||||||
skin_mindash,
|
|
||||||
skin_maxdash,
|
|
||||||
// SRB2kart
|
// SRB2kart
|
||||||
skin_kartspeed,
|
skin_kartspeed,
|
||||||
skin_kartweight,
|
skin_kartweight,
|
||||||
//
|
//
|
||||||
skin_normalspeed,
|
|
||||||
skin_runspeed,
|
|
||||||
skin_thrustfactor,
|
|
||||||
skin_accelstart,
|
|
||||||
skin_acceleration,
|
|
||||||
skin_jumpfactor,
|
|
||||||
skin_starttranscolor,
|
skin_starttranscolor,
|
||||||
skin_prefcolor,
|
skin_prefcolor,
|
||||||
skin_highresscale,
|
skin_highresscale,
|
||||||
|
@ -64,24 +50,10 @@ static const char *const skin_opt[] = {
|
||||||
"facerank",
|
"facerank",
|
||||||
"facewant",
|
"facewant",
|
||||||
"facemmap",
|
"facemmap",
|
||||||
"ability",
|
|
||||||
"ability2",
|
|
||||||
"thokitem",
|
|
||||||
"spinitem",
|
|
||||||
"revitem",
|
|
||||||
"actionspd",
|
|
||||||
"mindash",
|
|
||||||
"maxdash",
|
|
||||||
// SRB2kart
|
// SRB2kart
|
||||||
"kartspeed",
|
"kartspeed",
|
||||||
"kartweight",
|
"kartweight",
|
||||||
//
|
//
|
||||||
"normalspeed",
|
|
||||||
"runspeed",
|
|
||||||
"thrustfactor",
|
|
||||||
"accelstart",
|
|
||||||
"acceleration",
|
|
||||||
"jumpfactor",
|
|
||||||
"starttranscolor",
|
"starttranscolor",
|
||||||
"prefcolor",
|
"prefcolor",
|
||||||
"highresscale",
|
"highresscale",
|
||||||
|
@ -139,30 +111,6 @@ static int skin_get(lua_State *L)
|
||||||
break;
|
break;
|
||||||
lua_pushlstring(L, skin->facemmap, i);
|
lua_pushlstring(L, skin->facemmap, i);
|
||||||
break;
|
break;
|
||||||
case skin_ability:
|
|
||||||
lua_pushinteger(L, skin->ability);
|
|
||||||
break;
|
|
||||||
case skin_ability2:
|
|
||||||
lua_pushinteger(L, skin->ability2);
|
|
||||||
break;
|
|
||||||
case skin_thokitem:
|
|
||||||
lua_pushinteger(L, skin->thokitem);
|
|
||||||
break;
|
|
||||||
case skin_spinitem:
|
|
||||||
lua_pushinteger(L, skin->spinitem);
|
|
||||||
break;
|
|
||||||
case skin_revitem:
|
|
||||||
lua_pushinteger(L, skin->revitem);
|
|
||||||
break;
|
|
||||||
case skin_actionspd:
|
|
||||||
lua_pushfixed(L, skin->actionspd);
|
|
||||||
break;
|
|
||||||
case skin_mindash:
|
|
||||||
lua_pushfixed(L, skin->mindash);
|
|
||||||
break;
|
|
||||||
case skin_maxdash:
|
|
||||||
lua_pushfixed(L, skin->maxdash);
|
|
||||||
break;
|
|
||||||
// SRB2kart
|
// SRB2kart
|
||||||
case skin_kartspeed:
|
case skin_kartspeed:
|
||||||
lua_pushinteger(L, skin->kartspeed);
|
lua_pushinteger(L, skin->kartspeed);
|
||||||
|
@ -171,24 +119,6 @@ static int skin_get(lua_State *L)
|
||||||
lua_pushinteger(L, skin->kartweight);
|
lua_pushinteger(L, skin->kartweight);
|
||||||
break;
|
break;
|
||||||
//
|
//
|
||||||
case skin_normalspeed:
|
|
||||||
lua_pushfixed(L, skin->normalspeed);
|
|
||||||
break;
|
|
||||||
case skin_runspeed:
|
|
||||||
lua_pushfixed(L, skin->runspeed);
|
|
||||||
break;
|
|
||||||
case skin_thrustfactor:
|
|
||||||
lua_pushinteger(L, skin->thrustfactor);
|
|
||||||
break;
|
|
||||||
case skin_accelstart:
|
|
||||||
lua_pushinteger(L, skin->accelstart);
|
|
||||||
break;
|
|
||||||
case skin_acceleration:
|
|
||||||
lua_pushinteger(L, skin->acceleration);
|
|
||||||
break;
|
|
||||||
case skin_jumpfactor:
|
|
||||||
lua_pushfixed(L, skin->jumpfactor);
|
|
||||||
break;
|
|
||||||
case skin_starttranscolor:
|
case skin_starttranscolor:
|
||||||
lua_pushinteger(L, skin->starttranscolor);
|
lua_pushinteger(L, skin->starttranscolor);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -2961,66 +2961,6 @@ static void P_KillPlayer(player_t *player, mobj_t *source, INT32 damage)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
static inline void P_SuperDamage(player_t *player, mobj_t *inflictor, mobj_t *source, INT32 damage) // SRB2kart - unused.
|
|
||||||
{
|
|
||||||
fixed_t fallbackspeed;
|
|
||||||
angle_t ang;
|
|
||||||
|
|
||||||
P_ForceFeed(player, 40, 10, TICRATE, 40 + min(damage, 100)*2);
|
|
||||||
|
|
||||||
if (player->mo->eflags & MFE_VERTICALFLIP)
|
|
||||||
player->mo->z--;
|
|
||||||
else
|
|
||||||
player->mo->z++;
|
|
||||||
|
|
||||||
if (player->mo->eflags & MFE_UNDERWATER)
|
|
||||||
P_SetObjectMomZ(player->mo, FixedDiv(10511*FRACUNIT,2600*FRACUNIT), false);
|
|
||||||
else
|
|
||||||
P_SetObjectMomZ(player->mo, FixedDiv(69*FRACUNIT,10*FRACUNIT), false);
|
|
||||||
|
|
||||||
ang = R_PointToAngle2(inflictor->x, inflictor->y, player->mo->x, player->mo->y);
|
|
||||||
|
|
||||||
// explosion and rail rings send you farther back, making it more difficult
|
|
||||||
// to recover
|
|
||||||
if (inflictor->flags2 & MF2_SCATTER && source)
|
|
||||||
{
|
|
||||||
fixed_t dist = P_AproxDistance(P_AproxDistance(source->x-player->mo->x, source->y-player->mo->y), source->z-player->mo->z);
|
|
||||||
|
|
||||||
dist = FixedMul(128*FRACUNIT, inflictor->scale) - dist/4;
|
|
||||||
|
|
||||||
if (dist < FixedMul(4*FRACUNIT, inflictor->scale))
|
|
||||||
dist = FixedMul(4*FRACUNIT, inflictor->scale);
|
|
||||||
|
|
||||||
fallbackspeed = dist;
|
|
||||||
}
|
|
||||||
else if (inflictor->flags2 & MF2_EXPLOSION)
|
|
||||||
{
|
|
||||||
if (inflictor->flags2 & MF2_RAILRING)
|
|
||||||
fallbackspeed = FixedMul(28*FRACUNIT, inflictor->scale); // 7x
|
|
||||||
else
|
|
||||||
fallbackspeed = FixedMul(20*FRACUNIT, inflictor->scale); // 5x
|
|
||||||
}
|
|
||||||
else if (inflictor->flags2 & MF2_RAILRING)
|
|
||||||
fallbackspeed = FixedMul(16*FRACUNIT, inflictor->scale); // 4x
|
|
||||||
else
|
|
||||||
fallbackspeed = FixedMul(4*FRACUNIT, inflictor->scale); // the usual amount of force
|
|
||||||
|
|
||||||
P_InstaThrust(player->mo, ang, fallbackspeed);
|
|
||||||
|
|
||||||
// SRB2kart - This shouldn't be reachable, but this frame is invalid.
|
|
||||||
//if (player->charflags & SF_SUPERANIMS)
|
|
||||||
// P_SetPlayerMobjState(player->mo, S_PLAY_SUPERHIT);
|
|
||||||
//else
|
|
||||||
P_SetPlayerMobjState(player->mo, player->mo->info->painstate);
|
|
||||||
|
|
||||||
P_ResetPlayer(player);
|
|
||||||
|
|
||||||
if (player->timeshit != UINT8_MAX)
|
|
||||||
++player->timeshit;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
void P_RemoveShield(player_t *player)
|
void P_RemoveShield(player_t *player)
|
||||||
{
|
{
|
||||||
if (player->powers[pw_shield] & SH_FORCE)
|
if (player->powers[pw_shield] & SH_FORCE)
|
||||||
|
|
|
@ -274,8 +274,6 @@ boolean P_CameraThinker(player_t *player, camera_t *thiscam, boolean resetcalled
|
||||||
void P_Attract(mobj_t *source, mobj_t *enemy, boolean nightsgrab);
|
void P_Attract(mobj_t *source, mobj_t *enemy, boolean nightsgrab);
|
||||||
mobj_t *P_GetClosestAxis(mobj_t *source);
|
mobj_t *P_GetClosestAxis(mobj_t *source);
|
||||||
|
|
||||||
boolean P_CanRunOnWater(player_t *player, ffloor_t *rover);
|
|
||||||
|
|
||||||
void P_FlashPal(player_t *pl, UINT16 type, UINT16 duration);
|
void P_FlashPal(player_t *pl, UINT16 type, UINT16 duration);
|
||||||
#define PAL_WHITE 1
|
#define PAL_WHITE 1
|
||||||
#define PAL_MIXUP 2
|
#define PAL_MIXUP 2
|
||||||
|
|
|
@ -2114,7 +2114,7 @@ boolean P_CheckPosition(mobj_t *thing, fixed_t x, fixed_t y)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (thing->player && (P_CheckSolidLava(thing, rover) || P_CanRunOnWater(thing->player, rover)))
|
if (thing->player && P_CheckSolidLava(thing, rover))
|
||||||
;
|
;
|
||||||
else if (thing->type == MT_SKIM && (rover->flags & FF_SWIMMABLE))
|
else if (thing->type == MT_SKIM && (rover->flags & FF_SWIMMABLE))
|
||||||
;
|
;
|
||||||
|
|
|
@ -649,7 +649,7 @@ void P_LineOpening(line_t *linedef, mobj_t *mobj)
|
||||||
if (!(rover->flags & FF_EXISTS))
|
if (!(rover->flags & FF_EXISTS))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (mobj->player && (P_CheckSolidLava(mobj, rover) || P_CanRunOnWater(mobj->player, rover)))
|
if (mobj->player && P_CheckSolidLava(mobj, rover))
|
||||||
;
|
;
|
||||||
else if (!((rover->flags & FF_BLOCKPLAYER && mobj->player)
|
else if (!((rover->flags & FF_BLOCKPLAYER && mobj->player)
|
||||||
|| (rover->flags & FF_BLOCKOTHERS && !mobj->player)))
|
|| (rover->flags & FF_BLOCKOTHERS && !mobj->player)))
|
||||||
|
@ -693,7 +693,7 @@ void P_LineOpening(line_t *linedef, mobj_t *mobj)
|
||||||
if (!(rover->flags & FF_EXISTS))
|
if (!(rover->flags & FF_EXISTS))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (mobj->player && (P_CheckSolidLava(mobj, rover) || P_CanRunOnWater(mobj->player, rover)))
|
if (mobj->player && P_CheckSolidLava(mobj, rover))
|
||||||
;
|
;
|
||||||
else if (!((rover->flags & FF_BLOCKPLAYER && mobj->player)
|
else if (!((rover->flags & FF_BLOCKPLAYER && mobj->player)
|
||||||
|| (rover->flags & FF_BLOCKOTHERS && !mobj->player)))
|
|| (rover->flags & FF_BLOCKOTHERS && !mobj->player)))
|
||||||
|
|
120
src/p_mobj.c
120
src/p_mobj.c
|
@ -167,58 +167,8 @@ boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state)
|
||||||
I_Error("P_SetPlayerMobjState used for non-player mobj. Use P_SetMobjState instead!\n(Mobj type: %d, State: %d)", mobj->type, state);
|
I_Error("P_SetPlayerMobjState used for non-player mobj. Use P_SetMobjState instead!\n(Mobj type: %d, State: %d)", mobj->type, state);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Catch state changes for Super Sonic
|
|
||||||
/* // SRB2kart - don't need
|
|
||||||
if (player->powers[pw_super] && (player->charflags & SF_SUPERANIMS))
|
|
||||||
{
|
|
||||||
switch (state)
|
|
||||||
{
|
|
||||||
case S_PLAY_STND:
|
|
||||||
case S_PLAY_TAP1:
|
|
||||||
case S_PLAY_TAP2:
|
|
||||||
case S_PLAY_GASP:
|
|
||||||
P_SetPlayerMobjState(mobj, S_PLAY_SUPERSTAND);
|
|
||||||
return true;
|
|
||||||
case S_PLAY_FALL1:
|
|
||||||
case S_PLAY_SPRING:
|
|
||||||
case S_PLAY_RUN1:
|
|
||||||
case S_PLAY_RUN2:
|
|
||||||
case S_PLAY_RUN3:
|
|
||||||
case S_PLAY_RUN4:
|
|
||||||
P_SetPlayerMobjState(mobj, S_PLAY_SUPERWALK1);
|
|
||||||
return true;
|
|
||||||
case S_PLAY_FALL2:
|
|
||||||
case S_PLAY_RUN5:
|
|
||||||
case S_PLAY_RUN6:
|
|
||||||
case S_PLAY_RUN7:
|
|
||||||
case S_PLAY_RUN8:
|
|
||||||
P_SetPlayerMobjState(mobj, S_PLAY_SUPERWALK2);
|
|
||||||
return true;
|
|
||||||
case S_PLAY_SPD1:
|
|
||||||
case S_PLAY_SPD2:
|
|
||||||
P_SetPlayerMobjState(mobj, S_PLAY_SUPERFLY1);
|
|
||||||
return true;
|
|
||||||
case S_PLAY_SPD3:
|
|
||||||
case S_PLAY_SPD4:
|
|
||||||
P_SetPlayerMobjState(mobj, S_PLAY_SUPERFLY2);
|
|
||||||
return true;
|
|
||||||
case S_PLAY_TEETER1:
|
|
||||||
case S_PLAY_TEETER2:
|
|
||||||
P_SetPlayerMobjState(mobj, S_PLAY_SUPERTEETER);
|
|
||||||
return true;
|
|
||||||
case S_PLAY_ATK1:
|
|
||||||
case S_PLAY_ATK2:
|
|
||||||
case S_PLAY_ATK3:
|
|
||||||
case S_PLAY_ATK4:
|
|
||||||
if (!(player->charflags & SF_SUPERSPIN))
|
|
||||||
return true;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// You were in pain state after taking a hit, and you're moving out of pain state now?
|
// You were in pain state after taking a hit, and you're moving out of pain state now?
|
||||||
else */if (mobj->state == &states[mobj->info->painstate] && player->powers[pw_flashing] == K_GetKartFlashing(player) && state != mobj->info->painstate)
|
if (mobj->state == &states[mobj->info->painstate] && player->powers[pw_flashing] == K_GetKartFlashing(player) && state != mobj->info->painstate)
|
||||||
{
|
{
|
||||||
// Start flashing, since you've landed.
|
// Start flashing, since you've landed.
|
||||||
player->powers[pw_flashing] = K_GetKartFlashing(player)-1;
|
player->powers[pw_flashing] = K_GetKartFlashing(player)-1;
|
||||||
|
@ -260,51 +210,6 @@ boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state)
|
||||||
st = &states[state];
|
st = &states[state];
|
||||||
mobj->state = st;
|
mobj->state = st;
|
||||||
mobj->tics = st->tics;
|
mobj->tics = st->tics;
|
||||||
|
|
||||||
// Adjust the player's animation speed to match their velocity.
|
|
||||||
if (!(disableSpeedAdjust || player->charflags & SF_NOSPEEDADJUST))
|
|
||||||
{
|
|
||||||
fixed_t speed = FixedDiv(player->speed, FixedMul(mobj->scale, player->mo->movefactor)); // fixed_t speed = FixedDiv(player->speed, mobj->scale);
|
|
||||||
if (player->panim == PA_ROLL)
|
|
||||||
{
|
|
||||||
if (speed > 16<<FRACBITS)
|
|
||||||
mobj->tics = 1;
|
|
||||||
else
|
|
||||||
mobj->tics = 2;
|
|
||||||
}
|
|
||||||
else if (player->panim == PA_FALL)
|
|
||||||
{
|
|
||||||
speed = FixedDiv(abs(mobj->momz), mobj->scale);
|
|
||||||
if (speed < 10<<FRACBITS)
|
|
||||||
mobj->tics = 4;
|
|
||||||
else if (speed < 20<<FRACBITS)
|
|
||||||
mobj->tics = 3;
|
|
||||||
else if (speed < 30<<FRACBITS)
|
|
||||||
mobj->tics = 2;
|
|
||||||
else
|
|
||||||
mobj->tics = 1;
|
|
||||||
}
|
|
||||||
else if (P_IsObjectOnGround(mobj) || player->powers[pw_super]) // Only if on the ground or superflying.
|
|
||||||
{
|
|
||||||
if (player->panim == PA_WALK)
|
|
||||||
{
|
|
||||||
if (speed > 12<<FRACBITS)
|
|
||||||
mobj->tics = 2;
|
|
||||||
else if (speed > 6<<FRACBITS)
|
|
||||||
mobj->tics = 3;
|
|
||||||
else
|
|
||||||
mobj->tics = 4;
|
|
||||||
}
|
|
||||||
else if (player->panim == PA_RUN)
|
|
||||||
{
|
|
||||||
if (speed > 52<<FRACBITS)
|
|
||||||
mobj->tics = 1;
|
|
||||||
else
|
|
||||||
mobj->tics = 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mobj->sprite = st->sprite;
|
mobj->sprite = st->sprite;
|
||||||
mobj->frame = st->frame;
|
mobj->frame = st->frame;
|
||||||
mobj->anim_duration = (UINT16)st->var2; // only used if FF_ANIMATE is set
|
mobj->anim_duration = (UINT16)st->var2; // only used if FF_ANIMATE is set
|
||||||
|
@ -2102,7 +2007,7 @@ static void P_AdjustMobjFloorZ_FFloors(mobj_t *mo, sector_t *sector, UINT8 motyp
|
||||||
topheight = P_GetFOFTopZ(mo, sector, rover, mo->x, mo->y, NULL);
|
topheight = P_GetFOFTopZ(mo, sector, rover, mo->x, mo->y, NULL);
|
||||||
bottomheight = P_GetFOFBottomZ(mo, sector, rover, mo->x, mo->y, NULL);
|
bottomheight = P_GetFOFBottomZ(mo, sector, rover, mo->x, mo->y, NULL);
|
||||||
|
|
||||||
if (mo->player && (P_CheckSolidLava(mo, rover) || P_CanRunOnWater(mo->player, rover))) // only the player should be affected
|
if (mo->player && P_CheckSolidLava(mo, rover)) // only the player should be affected
|
||||||
;
|
;
|
||||||
else if (motype != 0 && rover->flags & FF_SWIMMABLE) // "scenery" only
|
else if (motype != 0 && rover->flags & FF_SWIMMABLE) // "scenery" only
|
||||||
continue;
|
continue;
|
||||||
|
@ -3225,27 +3130,6 @@ static boolean P_SceneryZMovement(mobj_t *mo)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// P_CanRunOnWater
|
|
||||||
//
|
|
||||||
// Returns true if player can waterrun on the 3D floor
|
|
||||||
//
|
|
||||||
boolean P_CanRunOnWater(player_t *player, ffloor_t *rover)
|
|
||||||
{
|
|
||||||
fixed_t topheight =
|
|
||||||
#ifdef ESLOPE
|
|
||||||
*rover->t_slope ? P_GetZAt(*rover->t_slope, player->mo->x, player->mo->y) :
|
|
||||||
#endif
|
|
||||||
*rover->topheight;
|
|
||||||
|
|
||||||
if (((player->charflags & SF_RUNONWATER) && player->mo->ceilingz-topheight >= player->mo->height)
|
|
||||||
&& (rover->flags & FF_SWIMMABLE) && !(player->pflags & PF_SPINNING) && player->speed > FixedMul(player->runspeed, player->mo->scale)
|
|
||||||
&& !(player->pflags & PF_SLIDING)
|
|
||||||
&& abs(player->mo->z - topheight) < FixedMul(30*FRACUNIT, player->mo->scale))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// P_MobjCheckWater
|
// P_MobjCheckWater
|
||||||
//
|
//
|
||||||
|
|
252
src/p_user.c
252
src/p_user.c
|
@ -3634,165 +3634,6 @@ static void P_DoFiring(player_t *player, ticcmd_t *cmd) // SRB2kart - unused.
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if 0
|
|
||||||
//
|
|
||||||
// P_DoSuperStuff()
|
|
||||||
//
|
|
||||||
// Handle related superform functionality.
|
|
||||||
//
|
|
||||||
static void P_DoSuperStuff(player_t *player)
|
|
||||||
{
|
|
||||||
mobj_t *spark;
|
|
||||||
ticcmd_t *cmd = &player->cmd;
|
|
||||||
//if (player->mo->state >= &states[S_PLAY_SUPERTRANS1] && player->mo->state <= &states[S_PLAY_SUPERTRANS9])
|
|
||||||
// return; // don't do anything right now, we're in the middle of transforming!
|
|
||||||
|
|
||||||
if (player->pflags & PF_NIGHTSMODE)
|
|
||||||
return; // NiGHTS Super doesn't mix with normal super
|
|
||||||
|
|
||||||
// Does player have all emeralds? If so, flag the "Ready For Super!"
|
|
||||||
/*if ((ALL7EMERALDS(emeralds) || ALL7EMERALDS(player->powers[pw_emeralds])) && player->health > 50)
|
|
||||||
player->pflags |= PF_SUPERREADY;
|
|
||||||
else
|
|
||||||
player->pflags &= ~PF_SUPERREADY;*/
|
|
||||||
|
|
||||||
if (player->powers[pw_super])
|
|
||||||
{
|
|
||||||
// If you're super and not Sonic, de-superize!
|
|
||||||
if (!((ALL7EMERALDS(emeralds)) && (player->charflags & SF_SUPER)) && !(ALL7EMERALDS(player->powers[pw_emeralds])))
|
|
||||||
{
|
|
||||||
player->powers[pw_super] = 0;
|
|
||||||
P_SetPlayerMobjState(player->mo, S_KART_STND1);
|
|
||||||
P_RestoreMusic(player);
|
|
||||||
P_SpawnShieldOrb(player);
|
|
||||||
|
|
||||||
// Restore color
|
|
||||||
if (player->powers[pw_shield] & SH_FIREFLOWER)
|
|
||||||
{
|
|
||||||
player->mo->color = SKINCOLOR_WHITE;
|
|
||||||
G_GhostAddColor(GHC_FIREFLOWER);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
player->mo->color = player->skincolor;
|
|
||||||
G_GhostAddColor(GHC_NORMAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gametype != GT_COOP)
|
|
||||||
{
|
|
||||||
HU_SetCEchoFlags(0);
|
|
||||||
HU_SetCEchoDuration(5);
|
|
||||||
HU_DoCEcho(va("%s\\is no longer super.\\\\\\\\", player_names[player-players]));
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deplete one ring every second while super
|
|
||||||
if ((leveltime % TICRATE == 0) && !(player->exiting))
|
|
||||||
{
|
|
||||||
player->health--;
|
|
||||||
player->mo->health--;
|
|
||||||
}
|
|
||||||
|
|
||||||
// future todo: a skin option for this, and possibly more colors
|
|
||||||
switch (player->skin)
|
|
||||||
{
|
|
||||||
case 1: /* Tails */ player->mo->color = SKINCOLOR_TSUPER1; break;
|
|
||||||
case 2: /* Knux */ player->mo->color = SKINCOLOR_KSUPER1; break;
|
|
||||||
default: /* everyone */ player->mo->color = SKINCOLOR_SUPER1; break;
|
|
||||||
}
|
|
||||||
player->mo->color += abs( ( (signed)( (unsigned)leveltime >> 1 ) % 9) - 4);
|
|
||||||
|
|
||||||
if ((cmd->forwardmove != 0 || cmd->sidemove != 0 || player->pflags & (PF_CARRIED|PF_ROPEHANG|PF_ITEMHANG|PF_MACESPIN))
|
|
||||||
&& !(leveltime % TICRATE) && (player->mo->momx || player->mo->momy))
|
|
||||||
{
|
|
||||||
spark = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_SUPERSPARK);
|
|
||||||
spark->destscale = player->mo->scale;
|
|
||||||
P_SetScale(spark, player->mo->scale);
|
|
||||||
}
|
|
||||||
|
|
||||||
G_GhostAddColor(GHC_SUPER);
|
|
||||||
|
|
||||||
// Ran out of rings while super!
|
|
||||||
if (player->health <= 1 || player->exiting)
|
|
||||||
{
|
|
||||||
player->powers[pw_emeralds] = 0; // lost the power stones
|
|
||||||
P_SpawnGhostMobj(player->mo);
|
|
||||||
|
|
||||||
player->powers[pw_super] = 0;
|
|
||||||
|
|
||||||
// Restore color
|
|
||||||
if (player->powers[pw_shield] & SH_FIREFLOWER)
|
|
||||||
{
|
|
||||||
player->mo->color = SKINCOLOR_WHITE;
|
|
||||||
G_GhostAddColor(GHC_FIREFLOWER);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
player->mo->color = player->skincolor;
|
|
||||||
G_GhostAddColor(GHC_NORMAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gametype != GT_COOP)
|
|
||||||
player->powers[pw_flashing] = K_GetKartFlashing(player)-1;
|
|
||||||
|
|
||||||
/*
|
|
||||||
if (player->mo->health > 0)
|
|
||||||
{
|
|
||||||
if ((player->pflags & PF_JUMPED) || (player->pflags & PF_SPINNING))
|
|
||||||
P_SetPlayerMobjState(player->mo, S_PLAY_ATK1);
|
|
||||||
else if (player->panim == PA_RUN)
|
|
||||||
P_SetPlayerMobjState(player->mo, S_PLAY_SPD1);
|
|
||||||
else if (player->panim == PA_WALK)
|
|
||||||
P_SetPlayerMobjState(player->mo, S_PLAY_RUN1);
|
|
||||||
else
|
|
||||||
P_SetPlayerMobjState(player->mo, S_PLAY_STND);
|
|
||||||
|
|
||||||
if (!player->exiting)
|
|
||||||
{
|
|
||||||
player->health = 1;
|
|
||||||
player->mo->health = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Inform the netgame that the champion has fallen in the heat of battle.
|
|
||||||
if (gametype != GT_COOP)
|
|
||||||
{
|
|
||||||
S_StartSound(NULL, sfx_s3k66); //let all players hear it.
|
|
||||||
HU_SetCEchoFlags(0);
|
|
||||||
HU_SetCEchoDuration(5);
|
|
||||||
HU_DoCEcho(va("%s\\is no longer super.\\\\\\\\", player_names[player-players]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Resume normal music if you're the console player
|
|
||||||
P_RestoreMusic(player);
|
|
||||||
|
|
||||||
// If you had a shield, restore its visual significance.
|
|
||||||
P_SpawnShieldOrb(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//
|
|
||||||
// P_SuperReady
|
|
||||||
//
|
|
||||||
// Returns true if player is ready to turn super, duh
|
|
||||||
//
|
|
||||||
/*boolean P_SuperReady(player_t *player)
|
|
||||||
{
|
|
||||||
if ((player->pflags & PF_SUPERREADY) && !player->powers[pw_super] && !player->powers[pw_tailsfly]
|
|
||||||
&& !(player->powers[pw_shield] & SH_NOSTACK)
|
|
||||||
&& !player->powers[pw_invulnerability]
|
|
||||||
&& !(maptol & TOL_NIGHTS) // don't turn 'regular super' in nights levels
|
|
||||||
&& player->pflags & PF_JUMPED
|
|
||||||
&& ((player->charflags & SF_SUPER) || ALL7EMERALDS(player->powers[pw_emeralds])))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// P_DoJump
|
// P_DoJump
|
||||||
//
|
//
|
||||||
|
@ -6382,99 +6223,6 @@ void P_ElementalFireTrail(player_t *player)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*static void P_SkidStuff(player_t *player)
|
|
||||||
{
|
|
||||||
fixed_t pmx = player->rmomx + player->cmomx;
|
|
||||||
fixed_t pmy = player->rmomy + player->cmomy;
|
|
||||||
|
|
||||||
// Knuckles glides into the dirt.
|
|
||||||
// SRB2kart - don't need
|
|
||||||
if (player->pflags & PF_GLIDING && player->skidtime)
|
|
||||||
{
|
|
||||||
// Fell off a ledge...
|
|
||||||
if (!onground)
|
|
||||||
{
|
|
||||||
player->skidtime = 0;
|
|
||||||
player->pflags &= ~(PF_GLIDING|PF_JUMPED);
|
|
||||||
P_SetPlayerMobjState(player->mo, S_PLAY_FALL1);
|
|
||||||
}
|
|
||||||
// Get up and brush yourself off, idiot.
|
|
||||||
else if (player->glidetime > 15)
|
|
||||||
{
|
|
||||||
P_ResetPlayer(player);
|
|
||||||
P_SetPlayerMobjState(player->mo, S_PLAY_STND);
|
|
||||||
player->mo->momx = player->cmomx;
|
|
||||||
player->mo->momy = player->cmomy;
|
|
||||||
}
|
|
||||||
// Didn't stop yet? Skid FOREVER!
|
|
||||||
else if (player->skidtime == 1)
|
|
||||||
player->skidtime = 3*TICRATE+1;
|
|
||||||
// Spawn a particle every 3 tics.
|
|
||||||
else if (!(player->skidtime % 3))
|
|
||||||
{
|
|
||||||
mobj_t *particle = P_SpawnMobj(player->mo->x + P_RandomRange(-player->mo->radius, player->mo->radius), player->mo->y + P_RandomRange(-player->mo->radius, player->mo->radius),
|
|
||||||
player->mo->z + (player->mo->eflags & MFE_VERTICALFLIP ? player->mo->height - mobjinfo[MT_PARTICLE].height : 0),
|
|
||||||
MT_PARTICLE);
|
|
||||||
particle->tics = 10;
|
|
||||||
|
|
||||||
particle->eflags |= player->mo->eflags & MFE_VERTICALFLIP;
|
|
||||||
P_SetScale(particle, player->mo->scale >> 2);
|
|
||||||
particle->destscale = player->mo->scale << 2;
|
|
||||||
particle->scalespeed = FixedMul(particle->scalespeed, player->mo->scale); // scale the scaling speed!
|
|
||||||
P_SetObjectMomZ(particle, FRACUNIT, false);
|
|
||||||
S_StartSound(player->mo, sfx_s3k7e); // the proper "Knuckles eats dirt" sfx.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Skidding!
|
|
||||||
elseif (onground && !(player->mo->eflags & MFE_GOOWATER) && !(player->pflags & (PF_JUMPED|PF_SPINNING|PF_SLIDING)) && !(player->charflags & SF_NOSKID))
|
|
||||||
{
|
|
||||||
if (player->skidtime)
|
|
||||||
{
|
|
||||||
// Spawn a particle every 3 tics.
|
|
||||||
if (!(player->skidtime % 3))
|
|
||||||
{
|
|
||||||
mobj_t *particle = P_SpawnMobj(player->mo->x, player->mo->y,
|
|
||||||
player->mo->z + (player->mo->eflags & MFE_VERTICALFLIP ? player->mo->height - mobjinfo[MT_PARTICLE].height : 0),
|
|
||||||
MT_PARTICLE);
|
|
||||||
particle->tics = 10;
|
|
||||||
|
|
||||||
particle->eflags |= player->mo->eflags & MFE_VERTICALFLIP;
|
|
||||||
P_SetScale(particle, player->mo->scale >> 2);
|
|
||||||
particle->destscale = player->mo->scale << 2;
|
|
||||||
particle->scalespeed = FixedMul(particle->scalespeed, player->mo->scale); // scale the scaling speed!
|
|
||||||
P_SetObjectMomZ(particle, FRACUNIT, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (P_AproxDistance(pmx, pmy) >= FixedMul(player->runspeed/2, player->mo->scale) // if you were moving faster than half your run speed last frame
|
|
||||||
&& (player->mo->momx != pmx || player->mo->momy != pmy) // and you are moving differently this frame
|
|
||||||
&& P_GetPlayerControlDirection(player) == 2) // and your controls are pointing in the opposite direction to your movement
|
|
||||||
{ // check for skidding
|
|
||||||
angle_t mang = R_PointToAngle2(0,0,pmx,pmy); // movement angle
|
|
||||||
angle_t pang = R_PointToAngle2(pmx,pmy,player->mo->momx,player->mo->momy); // push angle
|
|
||||||
angle_t dang = mang - pang; // delta angle
|
|
||||||
|
|
||||||
if (dang > ANGLE_180) // Make delta angle always positive, invert it if it's negative.
|
|
||||||
dang = InvAngle(dang);
|
|
||||||
|
|
||||||
// If your push angle is more than this close to a full 180 degrees, trigger a skid.
|
|
||||||
if (dang > ANGLE_157h)
|
|
||||||
{
|
|
||||||
player->skidtime = (player->mo->movefactor == FRACUNIT) ? TICRATE/2 : (FixedDiv(35<<(FRACBITS-1), FixedSqrt(player->mo->movefactor)))>>FRACBITS; //player->skidtime = TICRATE/2;
|
|
||||||
S_StartSound(player->mo, sfx_skid);
|
|
||||||
if (player->panim != PA_WALK)
|
|
||||||
P_SetPlayerMobjState(player->mo, S_KART_WALK2); // SRB2kart - was S_PLAY_RUN4
|
|
||||||
player->mo->tics = player->skidtime;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (player->skidtime) {
|
|
||||||
player->skidtime = 0;
|
|
||||||
S_StopSound(player->mo);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// P_MovePlayer
|
// P_MovePlayer
|
||||||
static void P_MovePlayer(player_t *player)
|
static void P_MovePlayer(player_t *player)
|
||||||
|
|
|
@ -2537,23 +2537,6 @@ static void Sk_SetDefaultValue(skin_t *skin)
|
||||||
skin->kartweight = 5;
|
skin->kartweight = 5;
|
||||||
//
|
//
|
||||||
|
|
||||||
skin->normalspeed = 36<<FRACBITS;
|
|
||||||
skin->runspeed = 28<<FRACBITS;
|
|
||||||
skin->thrustfactor = 5;
|
|
||||||
skin->accelstart = 96;
|
|
||||||
skin->acceleration = 40;
|
|
||||||
|
|
||||||
skin->ability = CA_NONE;
|
|
||||||
skin->ability2 = CA2_SPINDASH;
|
|
||||||
skin->jumpfactor = FRACUNIT;
|
|
||||||
skin->actionspd = 30<<FRACBITS;
|
|
||||||
skin->mindash = 15<<FRACBITS;
|
|
||||||
skin->maxdash = 90<<FRACBITS;
|
|
||||||
|
|
||||||
skin->thokitem = -1;
|
|
||||||
skin->spinitem = -1;
|
|
||||||
skin->revitem = -1;
|
|
||||||
|
|
||||||
skin->highresscale = FRACUNIT>>1;
|
skin->highresscale = FRACUNIT>>1;
|
||||||
|
|
||||||
for (i = 0; i < sfx_skinsoundslot0; i++)
|
for (i = 0; i < sfx_skinsoundslot0; i++)
|
||||||
|
@ -2587,7 +2570,7 @@ void R_InitSkins(void)
|
||||||
#ifdef SKINVALUES
|
#ifdef SKINVALUES
|
||||||
skin_cons_t[0].strvalue = skins[0].name;
|
skin_cons_t[0].strvalue = skins[0].name;
|
||||||
#endif
|
#endif
|
||||||
skin->flags = SF_SUPER|SF_SUPERANIMS|SF_SUPERSPIN;
|
skin->flags = 0;
|
||||||
strcpy(skin->realname, "Sonic");
|
strcpy(skin->realname, "Sonic");
|
||||||
strcpy(skin->hudname, "SONIC");
|
strcpy(skin->hudname, "SONIC");
|
||||||
|
|
||||||
|
@ -2596,20 +2579,11 @@ void R_InitSkins(void)
|
||||||
strncpy(skin->facemmap, "PLAYMMAP", 9);
|
strncpy(skin->facemmap, "PLAYMMAP", 9);
|
||||||
skin->prefcolor = SKINCOLOR_BLUE;
|
skin->prefcolor = SKINCOLOR_BLUE;
|
||||||
|
|
||||||
skin->ability = CA_THOK;
|
|
||||||
skin->actionspd = 60<<FRACBITS;
|
|
||||||
|
|
||||||
// SRB2kart
|
// SRB2kart
|
||||||
skin->kartspeed = 8;
|
skin->kartspeed = 8;
|
||||||
skin->kartweight = 2;
|
skin->kartweight = 2;
|
||||||
//
|
//
|
||||||
|
|
||||||
skin->normalspeed = 36<<FRACBITS;
|
|
||||||
skin->runspeed = 28<<FRACBITS;
|
|
||||||
skin->thrustfactor = 5;
|
|
||||||
skin->accelstart = 96;
|
|
||||||
skin->acceleration = 40;
|
|
||||||
|
|
||||||
skin->spritedef.numframes = sprites[SPR_PLAY].numframes;
|
skin->spritedef.numframes = sprites[SPR_PLAY].numframes;
|
||||||
skin->spritedef.spriteframes = sprites[SPR_PLAY].spriteframes;
|
skin->spritedef.spriteframes = sprites[SPR_PLAY].spriteframes;
|
||||||
ST_LoadFaceGraphics(skin->facerank, skin->facewant, skin->facemmap, 0);
|
ST_LoadFaceGraphics(skin->facerank, skin->facewant, skin->facemmap, 0);
|
||||||
|
@ -2673,31 +2647,12 @@ void SetPlayerSkinByNum(INT32 playernum, INT32 skinnum)
|
||||||
if (player->mo)
|
if (player->mo)
|
||||||
player->mo->skin = skin;
|
player->mo->skin = skin;
|
||||||
|
|
||||||
player->charability = (UINT8)skin->ability;
|
|
||||||
player->charability2 = (UINT8)skin->ability2;
|
|
||||||
|
|
||||||
player->charflags = (UINT32)skin->flags;
|
player->charflags = (UINT32)skin->flags;
|
||||||
|
|
||||||
player->thokitem = skin->thokitem < 0 ? (UINT32)mobjinfo[MT_PLAYER].painchance : (UINT32)skin->thokitem;
|
|
||||||
player->spinitem = skin->spinitem < 0 ? (UINT32)mobjinfo[MT_PLAYER].damage : (UINT32)skin->spinitem;
|
|
||||||
player->revitem = skin->revitem < 0 ? (mobjtype_t)mobjinfo[MT_PLAYER].raisestate : (UINT32)skin->revitem;
|
|
||||||
|
|
||||||
player->actionspd = skin->actionspd;
|
|
||||||
player->mindash = skin->mindash;
|
|
||||||
player->maxdash = skin->maxdash;
|
|
||||||
|
|
||||||
// SRB2kart
|
// SRB2kart
|
||||||
player->kartspeed = skin->kartspeed;
|
player->kartspeed = skin->kartspeed;
|
||||||
player->kartweight = skin->kartweight;
|
player->kartweight = skin->kartweight;
|
||||||
|
|
||||||
player->normalspeed = skin->normalspeed;
|
|
||||||
player->runspeed = skin->runspeed;
|
|
||||||
player->thrustfactor = skin->thrustfactor;
|
|
||||||
player->accelstart = skin->accelstart;
|
|
||||||
player->acceleration = skin->acceleration;
|
|
||||||
|
|
||||||
player->jumpfactor = skin->jumpfactor;
|
|
||||||
|
|
||||||
/*if (!(cv_debug || devparm) && !(netgame || multiplayer || demoplayback || modeattacking))
|
/*if (!(cv_debug || devparm) && !(netgame || multiplayer || demoplayback || modeattacking))
|
||||||
{
|
{
|
||||||
if (playernum == consoleplayer)
|
if (playernum == consoleplayer)
|
||||||
|
@ -2896,28 +2851,8 @@ void R_AddSkins(UINT16 wadnum)
|
||||||
#define FULLPROCESS(field) else if (!stricmp(stoken, #field)) skin->field = get_number(value);
|
#define FULLPROCESS(field) else if (!stricmp(stoken, #field)) skin->field = get_number(value);
|
||||||
// character type identification
|
// character type identification
|
||||||
FULLPROCESS(flags)
|
FULLPROCESS(flags)
|
||||||
//FULLPROCESS(ability)
|
|
||||||
//FULLPROCESS(ability2)
|
|
||||||
|
|
||||||
//FULLPROCESS(thokitem)
|
|
||||||
//FULLPROCESS(spinitem)
|
|
||||||
//FULLPROCESS(revitem)
|
|
||||||
#undef FULLPROCESS
|
#undef FULLPROCESS
|
||||||
|
|
||||||
#define GETSPEED(field) else if (!stricmp(stoken, #field)) skin->field = atoi(value)<<FRACBITS;
|
|
||||||
//GETSPEED(normalspeed)
|
|
||||||
GETSPEED(runspeed)
|
|
||||||
//GETSPEED(mindash)
|
|
||||||
//GETSPEED(maxdash)
|
|
||||||
//GETSPEED(actionspd)
|
|
||||||
#undef GETSPEED
|
|
||||||
|
|
||||||
/*#define GETINT(field) else if (!stricmp(stoken, #field)) skin->field = atoi(value);
|
|
||||||
GETINT(thrustfactor)
|
|
||||||
GETINT(accelstart)
|
|
||||||
GETINT(acceleration)
|
|
||||||
#undef GETINT*/
|
|
||||||
|
|
||||||
#define GETKARTSTAT(field) \
|
#define GETKARTSTAT(field) \
|
||||||
else if (!stricmp(stoken, #field)) \
|
else if (!stricmp(stoken, #field)) \
|
||||||
{ \
|
{ \
|
||||||
|
@ -2935,8 +2870,6 @@ void R_AddSkins(UINT16 wadnum)
|
||||||
|
|
||||||
else if (!stricmp(stoken, "prefcolor"))
|
else if (!stricmp(stoken, "prefcolor"))
|
||||||
skin->prefcolor = K_GetKartColorByName(value);
|
skin->prefcolor = K_GetKartColorByName(value);
|
||||||
//else if (!stricmp(stoken, "jumpfactor"))
|
|
||||||
//skin->jumpfactor = FLOAT_TO_FIXED(atof(value));
|
|
||||||
else if (!stricmp(stoken, "highresscale"))
|
else if (!stricmp(stoken, "highresscale"))
|
||||||
skin->highresscale = FLOAT_TO_FIXED(atof(value));
|
skin->highresscale = FLOAT_TO_FIXED(atof(value));
|
||||||
else
|
else
|
||||||
|
@ -3046,9 +2979,6 @@ next_token:
|
||||||
HWR_AddPlayerMD2(numskins);
|
HWR_AddPlayerMD2(numskins);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (skin->flags & SF_RUNONWATER) // this is literally the only way a skin can be a major mod... this might be a bit heavy handed
|
|
||||||
G_SetGameModified(multiplayer, true);
|
|
||||||
|
|
||||||
numskins++;
|
numskins++;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -83,29 +83,11 @@ typedef struct
|
||||||
char hudname[SKINNAMESIZE+1]; // HUD name to display (officially exactly 5 characters long)
|
char hudname[SKINNAMESIZE+1]; // HUD name to display (officially exactly 5 characters long)
|
||||||
char facerank[9], facewant[9], facemmap[9]; // Arbitrarily named patch lumps
|
char facerank[9], facewant[9], facemmap[9]; // Arbitrarily named patch lumps
|
||||||
|
|
||||||
UINT8 ability; // ability definition
|
|
||||||
UINT8 ability2; // secondary ability definition
|
|
||||||
INT32 thokitem;
|
|
||||||
INT32 spinitem;
|
|
||||||
INT32 revitem;
|
|
||||||
fixed_t actionspd;
|
|
||||||
fixed_t mindash;
|
|
||||||
fixed_t maxdash;
|
|
||||||
|
|
||||||
// SRB2kart
|
// SRB2kart
|
||||||
UINT8 kartspeed;
|
UINT8 kartspeed;
|
||||||
UINT8 kartweight;
|
UINT8 kartweight;
|
||||||
//
|
//
|
||||||
|
|
||||||
fixed_t normalspeed; // Normal ground
|
|
||||||
fixed_t runspeed; // Speed that you break into your run animation
|
|
||||||
|
|
||||||
UINT8 thrustfactor; // Thrust = thrustfactor * acceleration
|
|
||||||
UINT8 accelstart; // Acceleration if speed = 0
|
|
||||||
UINT8 acceleration; // Acceleration
|
|
||||||
|
|
||||||
fixed_t jumpfactor; // multiple of standard jump height
|
|
||||||
|
|
||||||
// Definable color translation table
|
// Definable color translation table
|
||||||
UINT8 starttranscolor;
|
UINT8 starttranscolor;
|
||||||
UINT8 prefcolor;
|
UINT8 prefcolor;
|
||||||
|
|
Loading…
Reference in a new issue