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 ringboxaward; // Where did we stop?
UINT8 amps; UINT8 amps;
UINT8 ampsounds; UINT8 amppickup;
UINT8 ampspending; UINT8 ampspending;
UINT16 overdrive; UINT16 overdrive;
UINT16 overshield;
fixed_t overdrivepower; fixed_t overdrivepower;
UINT8 itemflags; // holds IF_ flags (see itemflags_t) UINT8 itemflags; // holds IF_ flags (see itemflags_t)

View file

@ -4019,7 +4019,7 @@ void K_AwardPlayerAmps(player_t *player, UINT8 amps)
else else
player->amps = getamped; player->amps = getamped;
player->ampsounds = 1; player->amppickup = 1;
player->ampspending--; player->ampspending--;
if (oldamps/AMPLEVEL != player->amps/AMPLEVEL) if (oldamps/AMPLEVEL != player->amps/AMPLEVEL)
@ -4079,6 +4079,7 @@ boolean K_Overdrive(player_t *player)
S_StartSound(player->mo, sfx_cdfm13); S_StartSound(player->mo, sfx_cdfm13);
player->overdrive += (player->amps)*6; player->overdrive += (player->amps)*6;
player->overshield += (player->amps)*2;
player->overdrivepower = FRACUNIT; player->overdrivepower = FRACUNIT;
player->amps = 0; player->amps = 0;
@ -9085,6 +9086,11 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
player->overdrive--; player->overdrive--;
} }
if (player->overshield > 0 && onground == true)
{
player->overshield--;
}
if (player->wavedashboost == 0 || player->wavedashpower > FRACUNIT) if (player->wavedashboost == 0 || player->wavedashpower > FRACUNIT)
{ {
player->wavedashpower = FRACUNIT; // Safety player->wavedashpower = FRACUNIT; // Safety
@ -9136,7 +9142,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
K_DoIngameRespawn(player); K_DoIngameRespawn(player);
} }
if (player->ampsounds && (leveltime%2)) if (player->amppickup && (leveltime%2))
{ {
if (P_IsDisplayPlayer(player)) if (P_IsDisplayPlayer(player))
{ {
@ -9147,7 +9153,7 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
{ {
S_StartSoundAtVolume(NULL, sfx_mbs43, 127); 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); lua_pushinteger(L, plr->ringboxaward);
else if (fastcmp(field,"amps")) else if (fastcmp(field,"amps"))
lua_pushinteger(L, plr->amps); lua_pushinteger(L, plr->amps);
else if (fastcmp(field,"ampsounds")) else if (fastcmp(field,"amppickup"))
lua_pushinteger(L, plr->ampsounds); lua_pushinteger(L, plr->amppickup);
else if (fastcmp(field,"ampspending")) else if (fastcmp(field,"ampspending"))
lua_pushinteger(L, plr->ampspending); lua_pushinteger(L, plr->ampspending);
else if (fastcmp(field,"itemflags")) else if (fastcmp(field,"itemflags"))
@ -366,6 +366,8 @@ static int player_get(lua_State *L)
lua_pushinteger(L, plr->wavedashboost); lua_pushinteger(L, plr->wavedashboost);
else if (fastcmp(field,"overdrive")) else if (fastcmp(field,"overdrive"))
lua_pushinteger(L, plr->overdrive); lua_pushinteger(L, plr->overdrive);
else if (fastcmp(field,"overshield"))
lua_pushinteger(L, plr->overshield);
else if (fastcmp(field,"wavedashpower")) else if (fastcmp(field,"wavedashpower"))
lua_pushinteger(L, plr->wavedashpower); lua_pushinteger(L, plr->wavedashpower);
else if (fastcmp(field,"overdrivepower")) else if (fastcmp(field,"overdrivepower"))
@ -854,8 +856,8 @@ static int player_set(lua_State *L)
plr->ringboxaward = luaL_checkinteger(L, 3); plr->ringboxaward = luaL_checkinteger(L, 3);
else if (fastcmp(field,"amps")) else if (fastcmp(field,"amps"))
plr->amps = luaL_checkinteger(L, 3); plr->amps = luaL_checkinteger(L, 3);
else if (fastcmp(field,"ampsounds")) else if (fastcmp(field,"amppickup"))
plr->ampsounds = luaL_checkinteger(L, 3); plr->amppickup = luaL_checkinteger(L, 3);
else if (fastcmp(field,"ampspending")) else if (fastcmp(field,"ampspending"))
plr->ampspending = luaL_checkinteger(L, 3); plr->ampspending = luaL_checkinteger(L, 3);
else if (fastcmp(field,"itemflags")) else if (fastcmp(field,"itemflags"))
@ -936,6 +938,8 @@ static int player_set(lua_State *L)
plr->wavedashboost = luaL_checkinteger(L, 3); plr->wavedashboost = luaL_checkinteger(L, 3);
else if (fastcmp(field,"overdrive")) else if (fastcmp(field,"overdrive"))
plr->overdrive = luaL_checkinteger(L, 3); plr->overdrive = luaL_checkinteger(L, 3);
else if (fastcmp(field,"overshield"))
plr->overshield = luaL_checkinteger(L, 3);
else if (fastcmp(field,"wavedashpower")) else if (fastcmp(field,"wavedashpower"))
plr->wavedashpower = luaL_checkinteger(L, 3); plr->wavedashpower = luaL_checkinteger(L, 3);
else if (fastcmp(field,"overdrivepower")) 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->momy += FixedMul(FINESINE(vang>>ANGLETOFINESHIFT), FixedMul(FINESINE(hang>>ANGLETOFINESHIFT), speed));
amps->momz += FixedMul(FINECOSINE(vang>>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); K_AwardPlayerAmps(player, 2);
P_RemoveMobj(amps); P_RemoveMobj(amps);
@ -116,12 +116,12 @@ void Obj_AmpRingThink (mobj_t *amps)
amps->angle = amps->target->angle + (ANG15/2 * leveltime); amps->angle = amps->target->angle + (ANG15/2 * leveltime);
amps->renderflags |= RF_ADD|RF_PAPERSPRITE|RF_FULLBRIGHT; amps->renderflags |= RF_ADD|RF_PAPERSPRITE|RF_FULLBRIGHT;
if (player->overdrive) if (player->overshield)
amps->renderflags &= ~RF_DONTDRAW; amps->renderflags &= ~RF_DONTDRAW;
else else
amps->renderflags |= RF_DONTDRAW; amps->renderflags |= RF_DONTDRAW;
if (player->overdrive < 35 && player->overdrive % 2) if (player->overshield < 35 && player->overshield % 2)
amps->renderflags |= RF_DONTDRAW; 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; sfx = sfx_s3k3a;
clash = true; clash = true;
} }
else if (player->overdrive && else if (player->overshield &&
(type != DMG_EXPLODE || inflictor->type != MT_SPBEXPLOSION || !inflictor->movefactor)) (type != DMG_EXPLODE || inflictor->type != MT_SPBEXPLOSION || !inflictor->movefactor))
{ {
clash = true; clash = true;

View file

@ -582,6 +582,7 @@ static void P_NetArchivePlayers(savebuffer_t *save)
WRITEUINT8(save->p, players[i].wavedashdelay); WRITEUINT8(save->p, players[i].wavedashdelay);
WRITEUINT16(save->p, players[i].wavedashboost); WRITEUINT16(save->p, players[i].wavedashboost);
WRITEUINT16(save->p, players[i].overdrive); WRITEUINT16(save->p, players[i].overdrive);
WRITEUINT16(save->p, players[i].overshield);
WRITEFIXED(save->p, players[i].wavedashpower); WRITEFIXED(save->p, players[i].wavedashpower);
WRITEFIXED(save->p, players[i].overdrivepower); WRITEFIXED(save->p, players[i].overdrivepower);
WRITEUINT16(save->p, players[i].speedpunt); 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].ringboxaward);
WRITEUINT8(save->p, players[i].amps); 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].ampspending);
WRITEUINT8(save->p, players[i].itemflags); 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].wavedashdelay = READUINT8(save->p);
players[i].wavedashboost = READUINT16(save->p); players[i].wavedashboost = READUINT16(save->p);
players[i].overdrive = READUINT16(save->p); players[i].overdrive = READUINT16(save->p);
players[i].overshield = READUINT16(save->p);
players[i].wavedashpower = READFIXED(save->p); players[i].wavedashpower = READFIXED(save->p);
players[i].overdrivepower = READFIXED(save->p); players[i].overdrivepower = READFIXED(save->p);
players[i].speedpunt = READUINT16(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].ringboxaward = READUINT8(save->p);
players[i].amps =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].ampspending =READUINT8(save->p);
players[i].itemflags = READUINT8(save->p); players[i].itemflags = READUINT8(save->p);