diff --git a/src/d_player.h b/src/d_player.h index 56e39028b..c35c490f4 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -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) diff --git a/src/k_kart.c b/src/k_kart.c index c29f658f1..4de45a660 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -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--; } diff --git a/src/lua_playerlib.c b/src/lua_playerlib.c index dc0ac7ef7..8e1eb5fe0 100644 --- a/src/lua_playerlib.c +++ b/src/lua_playerlib.c @@ -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")) diff --git a/src/objects/amps.c b/src/objects/amps.c index 646cd89e8..dab90aba2 100644 --- a/src/objects/amps.c +++ b/src/objects/amps.c @@ -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; } } diff --git a/src/p_inter.c b/src/p_inter.c index dc30a26ca..4245f50fb 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -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; diff --git a/src/p_saveg.c b/src/p_saveg.c index fa37caba1..504987b1a 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -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);