implement the egg brick proper
This commit is contained in:
parent
d738ad5957
commit
dd1022b18c
8 changed files with 34 additions and 4 deletions
|
|
@ -93,7 +93,7 @@
|
|||
#define ASSET_HASH_TEXTURES_KART 0xb4211b2f32b6a291
|
||||
#define ASSET_HASH_CHARS_KART 0x1e68a3e01aa5c68b
|
||||
#define ASSET_HASH_MAPS_KART 0x38558ed00da41ce9
|
||||
#define ASSET_HASH_MAIN_PK3 0xc3e04c64e2048a84
|
||||
#define ASSET_HASH_MAIN_PK3 0x87b47ede26ba6c0d
|
||||
#define ASSET_HASH_MAPPATCH_PK3 0xbbc2c6a7a685da3a
|
||||
#define ASSET_HASH_BONUSCHARS_KART 0x60e6f13d822a7461
|
||||
#ifdef USE_PATCH_FILE
|
||||
|
|
|
|||
|
|
@ -673,6 +673,7 @@ struct player_t
|
|||
SINT8 throwdir; // Held dir of controls; 1 = forward, 0 = none, -1 = backward (was "player->heldDir")
|
||||
|
||||
UINT8 sadtimer; // How long you've been sad
|
||||
UINT8 bricktimer; // How long you've been brick'ed up
|
||||
|
||||
// player's ring count
|
||||
SINT8 rings;
|
||||
|
|
|
|||
|
|
@ -19,3 +19,4 @@ _(SUPERRING)
|
|||
_(LANDMINE)
|
||||
_(BUBBLESHIELD)
|
||||
_(FLAMESHIELD)
|
||||
_(EGGBRICK)
|
||||
|
|
|
|||
|
|
@ -1415,6 +1415,13 @@ static void K_drawKartItem(void)
|
|||
|
||||
itembar = FixedDiv(stplyr->bubblehealth, MAXBUBBLEHEALTH);
|
||||
}
|
||||
else if (stplyr->bricktimer > 0)
|
||||
{
|
||||
if (leveltime & 2)
|
||||
localpatch = K_GetCachedItemPatch(KITEM_EGGBRICK, tiny, 0);
|
||||
else
|
||||
localpatch = kp_nodraw;
|
||||
}
|
||||
else if (stplyr->sadtimer > 0)
|
||||
{
|
||||
if (leveltime & 2)
|
||||
|
|
|
|||
|
|
@ -2580,6 +2580,15 @@ void K_PlayerItemThink(player_t *player, boolean onground)
|
|||
K_BotResetItemConfirm(player, false);
|
||||
}
|
||||
break;
|
||||
case KITEM_EGGBRICK:
|
||||
if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO
|
||||
&& !player->bricktimer)
|
||||
{
|
||||
player->bricktimer = stealtime;
|
||||
player->itemamount--;
|
||||
K_BotResetItemConfirm(player, false);
|
||||
}
|
||||
break;
|
||||
case MAXKARTITEMS: // aka KITEM_SAD
|
||||
if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO
|
||||
&& !player->sadtimer)
|
||||
|
|
@ -2651,7 +2660,7 @@ void K_DoEggMineStrip(mobj_t *tmo, mobj_t *inflictor, mobj_t *source)
|
|||
(void)source;
|
||||
if (inflictor && (inflictor->type == MT_LANDMINE || inflictor->type == MT_EGGMINE))
|
||||
{
|
||||
if (tmo->player)
|
||||
if (tmo->player && P_CanPickupItem(tmo->player, PICKUPITEM_EGGMAN))
|
||||
{
|
||||
S_StartSound(tmo, sfx_bewar3);
|
||||
K_DropItems(tmo->player);
|
||||
|
|
@ -2663,11 +2672,11 @@ void K_DoEggMineStrip(mobj_t *tmo, mobj_t *inflictor, mobj_t *source)
|
|||
|
||||
if (cv_karteggmine_slotbrick.value)
|
||||
{
|
||||
tmo->player->itemtype = MAXKARTITEMS; // aka KITEM_SAD
|
||||
tmo->player->itemtype = KITEM_EGGBRICK;
|
||||
tmo->player->itemamount = 1;
|
||||
|
||||
if (itemlistactive)
|
||||
K_AddItemRollToList((INT32)(tmo->player - players), MAXKARTITEMS, 1);
|
||||
K_AddItemRollToList((INT32)(tmo->player - players), KITEM_EGGBRICK, 1);
|
||||
|
||||
tmo->player->itemblink = TICRATE;
|
||||
tmo->player->itemblinkmode = KITEMBLINK_MASHED;
|
||||
|
|
|
|||
|
|
@ -7598,6 +7598,9 @@ void K_KartPlayerThink(player_t *player, ticcmd_t *cmd)
|
|||
if (player->sadtimer)
|
||||
player->sadtimer--;
|
||||
|
||||
if (player->bricktimer)
|
||||
player->bricktimer--;
|
||||
|
||||
if (player->stealingtimer)
|
||||
player->stealingtimer--;
|
||||
|
||||
|
|
@ -10833,6 +10836,7 @@ void K_StripItems(player_t *player)
|
|||
player->flametimer = 0;
|
||||
|
||||
player->sadtimer = 0;
|
||||
player->bricktimer = 0;
|
||||
|
||||
K_UpdateHnextList(player, true);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -378,6 +378,7 @@ static int lib_lenLocalplayers(lua_State *L)
|
|||
X(itemusecooldownmax) \
|
||||
X(throwdir) \
|
||||
X(sadtimer) \
|
||||
X(bricktimer) \
|
||||
X(rings) \
|
||||
X(ringmin) \
|
||||
X(ringmax) \
|
||||
|
|
@ -794,6 +795,9 @@ static int player_get(lua_State *L)
|
|||
case player_sadtimer:
|
||||
lua_pushinteger(L, plr->sadtimer);
|
||||
break;
|
||||
case player_bricktimer:
|
||||
lua_pushinteger(L, plr->bricktimer);
|
||||
break;
|
||||
case player_rings:
|
||||
lua_pushinteger(L, plr->rings);
|
||||
break;
|
||||
|
|
@ -1578,6 +1582,9 @@ static int player_set(lua_State *L)
|
|||
case player_sadtimer:
|
||||
plr->sadtimer = luaL_checkinteger(L, 3);
|
||||
break;
|
||||
case player_bricktimer:
|
||||
plr->bricktimer = luaL_checkinteger(L, 3);
|
||||
break;
|
||||
case player_rings:
|
||||
plr->rings = luaL_checkinteger(L, 3);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -698,6 +698,7 @@ static void P_NetSyncPlayers(savebuffer_t *save)
|
|||
SYNC(players[i].throwdir);
|
||||
|
||||
SYNC(players[i].sadtimer);
|
||||
SYNC(players[i].bricktimer);
|
||||
|
||||
SYNC(players[i].rings);
|
||||
SYNC(players[i].ringmin);
|
||||
|
|
|
|||
Loading…
Reference in a new issue