Move itemblink and itemblinkmode to player_t to restore hyudoro behaviour
This commit is contained in:
parent
1e47df835a
commit
42ddaa5b1f
7 changed files with 49 additions and 39 deletions
|
|
@ -228,9 +228,6 @@ typedef enum
|
|||
typedef enum
|
||||
{
|
||||
// Unsynced, HUD or clientsided effects
|
||||
// Item box
|
||||
khud_itemblink, // Item flashing after roulette, serves as a mashing indicator
|
||||
khud_itemblinkmode, // Type of flashing: 0 = white (normal), 1 = red (mashing), 2 = rainbow (enhanced items)
|
||||
|
||||
// Rings
|
||||
khud_ringlock, // Ring lock
|
||||
|
|
@ -590,6 +587,8 @@ struct player_t
|
|||
UINT8 tripwireReboundDelay; // When failing Tripwire, brieftly lock out speed-based tripwire pass (anti-cheese)
|
||||
|
||||
UINT16 itemroulette; // Used for the roulette when deciding what item to give you (was "pw_kartitem")
|
||||
UINT16 itemblink; // Item flashing after roulette, serves as a mashing indicator. Also prevents item from being stolen.
|
||||
UINT16 itemblinkmode; // Type of flashing: 0 = white (normal), 1 = red (mashing), 2 = rainbow (enhanced items)
|
||||
UINT8 roulettetype; // Used for the roulette, for deciding type (0 = normal, 1 = better, 2 = eggman mark)
|
||||
|
||||
// Item held stuff
|
||||
|
|
|
|||
|
|
@ -554,8 +554,6 @@ const char *const KARTSTUFF_LIST[] = {
|
|||
};
|
||||
|
||||
const char *const KARTHUD_LIST[] = {
|
||||
"ITEMBLINK",
|
||||
"ITEMBLINKMODE",
|
||||
|
||||
"RINGFRAME",
|
||||
"RINGTICS",
|
||||
|
|
|
|||
|
|
@ -1017,11 +1017,11 @@ static void K_drawKartItem(void)
|
|||
localpatch = kp_nodraw;
|
||||
}
|
||||
|
||||
if (stplyr->karthud[khud_itemblink] && (leveltime & 1))
|
||||
if (stplyr->itemblink && (leveltime & 1))
|
||||
{
|
||||
colormode = TC_BLINK;
|
||||
|
||||
switch (stplyr->karthud[khud_itemblinkmode])
|
||||
switch (stplyr->itemblinkmode)
|
||||
{
|
||||
case 2:
|
||||
localcolor = K_RainbowColor(leveltime);
|
||||
|
|
|
|||
53
src/k_kart.c
53
src/k_kart.c
|
|
@ -1478,8 +1478,8 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
|
|||
if (player->roulettetype == 2)
|
||||
{
|
||||
player->eggmanexplode = 4*TICRATE;
|
||||
//player->karthud[khud_itemblink] = TICRATE;
|
||||
//player->karthud[khud_itemblinkmode] = 1;
|
||||
//player->itemblink = TICRATE;
|
||||
//player->itemblinkmode = 1;
|
||||
player->itemroulette = 0;
|
||||
player->roulettetype = 0;
|
||||
if (P_IsDisplayPlayer(player) && !demo.freecam)
|
||||
|
|
@ -1493,8 +1493,8 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
|
|||
{
|
||||
K_KartGetItemResult(player, cv_kartdebugitem.value);
|
||||
player->itemamount = cv_kartdebugamount.value;
|
||||
player->karthud[khud_itemblink] = TICRATE;
|
||||
player->karthud[khud_itemblinkmode] = 2;
|
||||
player->itemblink = TICRATE;
|
||||
player->itemblinkmode = 2;
|
||||
player->itemroulette = 0;
|
||||
player->roulettetype = 0;
|
||||
if (P_IsDisplayPlayer(player) && !demo.freecam)
|
||||
|
|
@ -1509,8 +1509,8 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
|
|||
SINT8 itemroll = P_RandomRange(KITEM_SNEAKER, NUMKARTITEMS - 1);
|
||||
|
||||
K_KartGetItemResult(player, itemroll);
|
||||
player->karthud[khud_itemblink] = TICRATE;
|
||||
player->karthud[khud_itemblinkmode] = 0;
|
||||
player->itemblink = TICRATE;
|
||||
player->itemblinkmode = 0;
|
||||
player->itemroulette = 0;
|
||||
player->roulettetype = 0;
|
||||
if (P_IsDisplayPlayer(player))
|
||||
|
|
@ -1527,7 +1527,7 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
|
|||
if (mashed && ((K_RingsActive() == true) && (modeattacking || cv_superring.value))) // ANY mashed value? You get rings.
|
||||
{
|
||||
K_KartGetItemResult(player, KITEM_SUPERRING);
|
||||
player->karthud[khud_itemblinkmode] = 1;
|
||||
player->itemblinkmode = 1;
|
||||
if (P_IsDisplayPlayer(player))
|
||||
S_StartSound(NULL, sfx_itrolm);
|
||||
}
|
||||
|
|
@ -1537,7 +1537,7 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
|
|||
K_KartGetItemResult(player, KITEM_SNEAKER);
|
||||
else // Default to sad if nothing's enabled...
|
||||
K_KartGetItemResult(player, KITEM_SAD);
|
||||
player->karthud[khud_itemblinkmode] = 0;
|
||||
player->itemblinkmode = 0;
|
||||
if (P_IsDisplayPlayer(player))
|
||||
S_StartSound(NULL, sfx_itrolf);
|
||||
}
|
||||
|
|
@ -1547,20 +1547,20 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
|
|||
if (mashed && (bossinfo.boss || cv_banana.value) && !itembreaker) // ANY mashed value? You get a banana.
|
||||
{
|
||||
K_KartGetItemResult(player, KITEM_BANANA);
|
||||
player->karthud[khud_itemblinkmode] = 1;
|
||||
player->itemblinkmode = 1;
|
||||
if (P_IsDisplayPlayer(player))
|
||||
S_StartSound(NULL, sfx_itrolm);
|
||||
}
|
||||
else if (bossinfo.boss)
|
||||
{
|
||||
K_KartGetItemResult(player, KITEM_ORBINAUT);
|
||||
player->karthud[khud_itemblinkmode] = 0;
|
||||
player->itemblinkmode = 0;
|
||||
if (P_IsDisplayPlayer(player))
|
||||
S_StartSound(NULL, sfx_itrolf);
|
||||
}
|
||||
}
|
||||
|
||||
player->karthud[khud_itemblink] = TICRATE;
|
||||
player->itemblink = TICRATE;
|
||||
player->itemroulette = 0;
|
||||
player->roulettetype = 0;
|
||||
return;
|
||||
|
|
@ -1574,8 +1574,8 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
|
|||
if (P_RandomChance((debtamount*FRACUNIT)/20))
|
||||
{
|
||||
K_KartGetItemResult(player, KITEM_SUPERRING);
|
||||
player->karthud[khud_itemblink] = TICRATE;
|
||||
player->karthud[khud_itemblinkmode] = 1;
|
||||
player->itemblink = TICRATE;
|
||||
player->itemblinkmode = 1;
|
||||
player->itemroulette = 0;
|
||||
player->roulettetype = 0;
|
||||
if (P_IsDisplayPlayer(player))
|
||||
|
|
@ -1593,8 +1593,8 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
|
|||
&& cv_selfpropelledbomb.value)
|
||||
{
|
||||
K_KartGetItemResult(player, KITEM_SPB);
|
||||
player->karthud[khud_itemblink] = TICRATE;
|
||||
player->karthud[khud_itemblinkmode] = 2;
|
||||
player->itemblink = TICRATE;
|
||||
player->itemblinkmode = 2;
|
||||
player->itemroulette = 0;
|
||||
player->roulettetype = 0;
|
||||
if (P_IsDisplayPlayer(player))
|
||||
|
|
@ -1618,8 +1618,8 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
|
|||
if (useodds == 69)
|
||||
{
|
||||
K_KartGetItemResult(player, KITEM_SPB);
|
||||
player->karthud[khud_itemblink] = TICRATE;
|
||||
player->karthud[khud_itemblinkmode] = 2;
|
||||
player->itemblink = TICRATE;
|
||||
player->itemblinkmode = 2;
|
||||
player->itemroulette = 0;
|
||||
player->roulettetype = 0;
|
||||
if (P_IsDisplayPlayer(player))
|
||||
|
|
@ -1662,8 +1662,8 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
|
|||
if (P_IsDisplayPlayer(player) && !demo.freecam)
|
||||
S_StartSound(NULL, ((player->roulettetype == 1) ? sfx_itrolk : (mashed ? sfx_itrolm : sfx_itrolf)));
|
||||
|
||||
player->karthud[khud_itemblink] = TICRATE;
|
||||
player->karthud[khud_itemblinkmode] = ((player->roulettetype == 1) ? 2 : (mashed ? 1 : 0));
|
||||
player->itemblink = TICRATE;
|
||||
player->itemblinkmode = ((player->roulettetype == 1) ? 2 : (mashed ? 1 : 0));
|
||||
|
||||
player->itemroulette = 0; // Since we're done, clear the roulette number
|
||||
player->roulettetype = 0; // This too
|
||||
|
|
@ -5072,7 +5072,8 @@ static void K_DoHyudoroSteal(player_t *player)
|
|||
// Has an item
|
||||
&& (players[i].itemtype
|
||||
&& players[i].itemamount
|
||||
&& !(players[i].itemflags & IF_ITEMOUT)))
|
||||
&& !(players[i].itemflags & IF_ITEMOUT)
|
||||
&& !players[i].itemblink))
|
||||
{
|
||||
playerswappable[numplayers] = i;
|
||||
numplayers++;
|
||||
|
|
@ -6619,12 +6620,6 @@ void K_KartPlayerHUDUpdate(player_t *player)
|
|||
if (player->karthud[khud_tauntvoices])
|
||||
player->karthud[khud_tauntvoices]--;
|
||||
|
||||
if (player->karthud[khud_itemblink] && player->karthud[khud_itemblink]-- <= 0)
|
||||
{
|
||||
player->karthud[khud_itemblinkmode] = 0;
|
||||
player->karthud[khud_itemblink] = 0;
|
||||
}
|
||||
|
||||
if (gametype == GT_RACE)
|
||||
{
|
||||
|
||||
|
|
@ -7246,6 +7241,12 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
|||
if (player->tiregrease > 0)
|
||||
player->tiregrease--;;
|
||||
|
||||
if (player->itemblink && player->itemblink-- <= 0)
|
||||
{
|
||||
player->itemblinkmode = 0;
|
||||
player->itemblink = 0;
|
||||
}
|
||||
|
||||
K_UpdateTripwire(player);
|
||||
|
||||
K_KartPlayerHUDUpdate(player);
|
||||
|
|
|
|||
|
|
@ -310,6 +310,10 @@ static int player_get(lua_State *L)
|
|||
lua_pushinteger(L, plr->tripwireReboundDelay);
|
||||
else if (fastcmp(field,"itemroulette"))
|
||||
lua_pushinteger(L, plr->itemroulette);
|
||||
else if (fastcmp(field,"itemblink"))
|
||||
lua_pushinteger(L, plr->itemblink);
|
||||
else if (fastcmp(field,"itemblinkmode"))
|
||||
lua_pushinteger(L, plr->itemblinkmode);
|
||||
else if (fastcmp(field,"roulettetype"))
|
||||
lua_pushinteger(L, plr->roulettetype);
|
||||
else if (fastcmp(field,"itemtype"))
|
||||
|
|
@ -725,6 +729,10 @@ static int player_set(lua_State *L)
|
|||
plr->tripwireReboundDelay = luaL_checkinteger(L, 3);
|
||||
else if (fastcmp(field,"itemroulette"))
|
||||
plr->itemroulette = luaL_checkinteger(L, 3);
|
||||
else if (fastcmp(field,"itemblink"))
|
||||
plr->itemblink = luaL_checkinteger(L, 3);
|
||||
else if (fastcmp(field,"itemblinkmode"))
|
||||
plr->itemblinkmode = luaL_checkinteger(L, 3);
|
||||
else if (fastcmp(field,"roulettetype"))
|
||||
plr->roulettetype = luaL_checkinteger(L, 3);
|
||||
else if (fastcmp(field,"itemtype"))
|
||||
|
|
@ -1274,10 +1282,10 @@ static int kartstuff_get(lua_State *L)
|
|||
|
||||
// v1.0.2+ vars
|
||||
case k_itemblink:
|
||||
lua_pushinteger(L, plr->karthud[khud_itemblink]);
|
||||
lua_pushinteger(L, plr->itemblink);
|
||||
return 1;
|
||||
case k_itemblinkmode:
|
||||
lua_pushinteger(L, plr->karthud[khud_itemblinkmode]);
|
||||
lua_pushinteger(L, plr->itemblinkmode);
|
||||
return 1;
|
||||
case k_getsparks:
|
||||
lua_pushinteger(L, (plr->pflags & PF_GETSPARKS));
|
||||
|
|
@ -1537,10 +1545,10 @@ static int kartstuff_set(lua_State *L)
|
|||
|
||||
// v1.0.2+ vars
|
||||
case k_itemblink:
|
||||
plr->karthud[khud_itemblink] = i;
|
||||
plr->itemblink = i;
|
||||
break;
|
||||
case k_itemblinkmode:
|
||||
plr->karthud[khud_itemblinkmode] = i;
|
||||
plr->itemblinkmode = i;
|
||||
break;
|
||||
case k_getsparks:
|
||||
if (i > 0)
|
||||
|
|
|
|||
|
|
@ -1708,8 +1708,8 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
|
|||
else
|
||||
player->itemamount = max(1, target->movecount);
|
||||
}
|
||||
player->karthud[khud_itemblink] = TICRATE;
|
||||
player->karthud[khud_itemblinkmode] = 0;
|
||||
player->itemblink = TICRATE;
|
||||
player->itemblinkmode = 0;
|
||||
player->itemroulette = 0;
|
||||
player->roulettetype = 0;
|
||||
if (P_IsDisplayPlayer(player))
|
||||
|
|
|
|||
|
|
@ -285,6 +285,8 @@ static void P_NetArchivePlayers(savebuffer_t *save)
|
|||
WRITEUINT8(save->p, players[i].tripwireReboundDelay);
|
||||
|
||||
WRITEUINT16(save->p, players[i].itemroulette);
|
||||
WRITEUINT16(save->p, players[i].itemblink);
|
||||
WRITEUINT16(save->p, players[i].itemblinkmode);
|
||||
WRITEUINT8(save->p, players[i].roulettetype);
|
||||
|
||||
WRITESINT8(save->p, players[i].itemtype);
|
||||
|
|
@ -594,6 +596,8 @@ static void P_NetUnArchivePlayers(savebuffer_t *save)
|
|||
players[i].tripwireReboundDelay = READUINT8(save->p);
|
||||
|
||||
players[i].itemroulette = READUINT16(save->p);
|
||||
players[i].itemblink = READUINT16(save->p);
|
||||
players[i].itemblinkmode = READUINT16(save->p);
|
||||
players[i].roulettetype = READUINT8(save->p);
|
||||
|
||||
players[i].itemtype = READSINT8(save->p);
|
||||
|
|
|
|||
Loading…
Reference in a new issue