WIP: Separate Overdrive shield

This commit is contained in:
Antonio Martinez 2024-07-23 17:32:10 -07:00
parent 4d202fbd67
commit ed1dde5788
6 changed files with 27 additions and 14 deletions

View file

@ -1030,10 +1030,11 @@ struct player_t
UINT8 ringboxaward; // Where did we stop?
UINT8 amps;
UINT8 ampsounds;
UINT8 amppickup;
UINT8 ampspending;
UINT16 overdrive;
UINT16 overshield;
fixed_t overdrivepower;
UINT8 itemflags; // holds IF_ flags (see itemflags_t)

View file

@ -4019,7 +4019,7 @@ void K_AwardPlayerAmps(player_t *player, UINT8 amps)
else
player->amps = getamped;
player->ampsounds = 1;
player->amppickup = 1;
player->ampspending--;
if (oldamps/AMPLEVEL != player->amps/AMPLEVEL)
@ -4079,6 +4079,7 @@ boolean K_Overdrive(player_t *player)
S_StartSound(player->mo, sfx_cdfm13);
player->overdrive += (player->amps)*6;
player->overshield += (player->amps)*2;
player->overdrivepower = FRACUNIT;
player->amps = 0;
@ -9085,6 +9086,11 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
player->overdrive--;
}
if (player->overshield > 0 && onground == true)
{
player->overshield--;
}
if (player->wavedashboost == 0 || player->wavedashpower > FRACUNIT)
{
player->wavedashpower = FRACUNIT; // Safety
@ -9136,7 +9142,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
K_DoIngameRespawn(player);
}
if (player->ampsounds && (leveltime%2))
if (player->amppickup && (leveltime%2))
{
if (P_IsDisplayPlayer(player))
{
@ -9147,7 +9153,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
{
S_StartSoundAtVolume(NULL, sfx_mbs43, 127);
}
player->ampsounds--;
player->amppickup--;
}

View file

@ -282,8 +282,8 @@ static int player_get(lua_State *L)
lua_pushinteger(L, plr->ringboxaward);
else if (fastcmp(field,"amps"))
lua_pushinteger(L, plr->amps);
else if (fastcmp(field,"ampsounds"))
lua_pushinteger(L, plr->ampsounds);
else if (fastcmp(field,"amppickup"))
lua_pushinteger(L, plr->amppickup);
else if (fastcmp(field,"ampspending"))
lua_pushinteger(L, plr->ampspending);
else if (fastcmp(field,"itemflags"))
@ -366,6 +366,8 @@ static int player_get(lua_State *L)
lua_pushinteger(L, plr->wavedashboost);
else if (fastcmp(field,"overdrive"))
lua_pushinteger(L, plr->overdrive);
else if (fastcmp(field,"overshield"))
lua_pushinteger(L, plr->overshield);
else if (fastcmp(field,"wavedashpower"))
lua_pushinteger(L, plr->wavedashpower);
else if (fastcmp(field,"overdrivepower"))
@ -854,8 +856,8 @@ static int player_set(lua_State *L)
plr->ringboxaward = luaL_checkinteger(L, 3);
else if (fastcmp(field,"amps"))
plr->amps = luaL_checkinteger(L, 3);
else if (fastcmp(field,"ampsounds"))
plr->ampsounds = luaL_checkinteger(L, 3);
else if (fastcmp(field,"amppickup"))
plr->amppickup = luaL_checkinteger(L, 3);
else if (fastcmp(field,"ampspending"))
plr->ampspending = luaL_checkinteger(L, 3);
else if (fastcmp(field,"itemflags"))
@ -936,6 +938,8 @@ static int player_set(lua_State *L)
plr->wavedashboost = luaL_checkinteger(L, 3);
else if (fastcmp(field,"overdrive"))
plr->overdrive = luaL_checkinteger(L, 3);
else if (fastcmp(field,"overshield"))
plr->overshield = luaL_checkinteger(L, 3);
else if (fastcmp(field,"wavedashpower"))
plr->wavedashpower = luaL_checkinteger(L, 3);
else if (fastcmp(field,"overdrivepower"))

View file

@ -82,7 +82,7 @@ void Obj_AmpsThink (mobj_t *amps)
amps->momy += FixedMul(FINESINE(vang>>ANGLETOFINESHIFT), FixedMul(FINESINE(hang>>ANGLETOFINESHIFT), speed));
amps->momz += FixedMul(FINECOSINE(vang>>ANGLETOFINESHIFT), speed);
if (dist < (120 * amps->scale) && amps->extravalue2 && !player->ampsounds)
if (dist < (120 * amps->scale) && amps->extravalue2 && !player->amppickup)
{
K_AwardPlayerAmps(player, 2);
P_RemoveMobj(amps);
@ -116,12 +116,12 @@ void Obj_AmpRingThink (mobj_t *amps)
amps->angle = amps->target->angle + (ANG15/2 * leveltime);
amps->renderflags |= RF_ADD|RF_PAPERSPRITE|RF_FULLBRIGHT;
if (player->overdrive)
if (player->overshield)
amps->renderflags &= ~RF_DONTDRAW;
else
amps->renderflags |= RF_DONTDRAW;
if (player->overdrive < 35 && player->overdrive % 2)
if (player->overshield < 35 && player->overshield % 2)
amps->renderflags |= RF_DONTDRAW;
}
}

View file

@ -3006,7 +3006,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
sfx = sfx_s3k3a;
clash = true;
}
else if (player->overdrive &&
else if (player->overshield &&
(type != DMG_EXPLODE || inflictor->type != MT_SPBEXPLOSION || !inflictor->movefactor))
{
clash = true;

View file

@ -582,6 +582,7 @@ static void P_NetArchivePlayers(savebuffer_t *save)
WRITEUINT8(save->p, players[i].wavedashdelay);
WRITEUINT16(save->p, players[i].wavedashboost);
WRITEUINT16(save->p, players[i].overdrive);
WRITEUINT16(save->p, players[i].overshield);
WRITEFIXED(save->p, players[i].wavedashpower);
WRITEFIXED(save->p, players[i].overdrivepower);
WRITEUINT16(save->p, players[i].speedpunt);
@ -630,7 +631,7 @@ static void P_NetArchivePlayers(savebuffer_t *save)
WRITEUINT8(save->p, players[i].ringboxaward);
WRITEUINT8(save->p, players[i].amps);
WRITEUINT8(save->p, players[i].ampsounds);
WRITEUINT8(save->p, players[i].amppickup);
WRITEUINT8(save->p, players[i].ampspending);
WRITEUINT8(save->p, players[i].itemflags);
@ -1192,6 +1193,7 @@ static void P_NetUnArchivePlayers(savebuffer_t *save)
players[i].wavedashdelay = READUINT8(save->p);
players[i].wavedashboost = READUINT16(save->p);
players[i].overdrive = READUINT16(save->p);
players[i].overshield = READUINT16(save->p);
players[i].wavedashpower = READFIXED(save->p);
players[i].overdrivepower = READFIXED(save->p);
players[i].speedpunt = READUINT16(save->p);
@ -1240,7 +1242,7 @@ static void P_NetUnArchivePlayers(savebuffer_t *save)
players[i].ringboxaward = READUINT8(save->p);
players[i].amps =READUINT8(save->p);
players[i].ampsounds =READUINT8(save->p);
players[i].amppickup =READUINT8(save->p);
players[i].ampspending =READUINT8(save->p);
players[i].itemflags = READUINT8(save->p);