Air Drop Dust

This commit is contained in:
NepDisk 2025-10-26 19:16:16 -04:00
parent d6be6a4663
commit 5a372a3318
6 changed files with 55 additions and 2 deletions

View file

@ -94,7 +94,7 @@
#define ASSET_HASH_TEXTURES_KART 0xb4211b2f32b6a291
#define ASSET_HASH_CHARS_KART 0x1e68a3e01aa5c68b
#define ASSET_HASH_MAPS_KART 0x38558ed00da41ce9
#define ASSET_HASH_MAIN_PK3 0xcab6ffcea6c8aa3c
#define ASSET_HASH_MAIN_PK3 0xef2fc6f4dcbca626
#define ASSET_HASH_MAPPATCH_PK3 0x7d1f6b96dd119296
#define ASSET_HASH_BONUSCHARS_KART 0x60e6f13d822a7461
#ifdef USE_PATCH_FILE

View file

@ -949,6 +949,9 @@ const char *blancredits[] = {
"\"WumboSpasm\"",
"\"Miguelius256\"",
"",
"\1New Misc Art",
"\"scizor300\"",
"",
"\1Map Patches",
"\"Sonic1983\" (PB)",
"\"SinosTH\" (PB)",

View file

@ -848,6 +848,8 @@ _(FOLLOWERBUBBLE_BACK)
_(WATERTRAIL)
_(WATERTRAILUNDERLAY)
_(AIRDROPDUST)
_(PAPERITEMSPOT)
_(LOOPENDPOINT)

View file

@ -640,6 +640,8 @@ _(CHEZ) // follower: cheese
_(BSSS) // Stacking effect
_(BKAD) // Airdrop Dust
_(TRCK)
// First person view sprites; this is a sprite so that it can be replaced by a specialized MD2 draw later

View file

@ -3582,6 +3582,9 @@ _(EGOORB)
_(WATERTRAILS)
_(WATERTRAILSUNDERLAY)
_(AIRDROPDUST1)
_(AIRDROPDUST2)
_(SLIPSPARK1)
_(SLIPSPARK2)
_(SLIPSPARK3)

View file

@ -1404,7 +1404,7 @@ static void K_SpawnStackingEffect(player_t *player)
mobj_t *booststack = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_BOOSTSTACK);
booststack->flags2 |= MF2_DONTSYNC; // No desyncs pls!
P_SetTarget(&booststack->target, player->mo);
P_SetScale(booststack, FixedMul(FRACUNIT + FixedMul(2*FRACUNIT - FRACUNIT, FixedDiv(min(player->numboosts,4)*FRACUNIT, 4*FRACUNIT)), mapobjectscale));
P_SetScale(booststack, FixedMul(FRACUNIT + FixedMul(2*FRACUNIT - FRACUNIT, FixedDiv(min(player->numboosts,6)*FRACUNIT, 4*FRACUNIT)), mapobjectscale));
booststack->angle = player->mo->angle + ANGLE_90;
booststack->color = player->mo->color;
@ -6810,6 +6810,48 @@ void K_AwardScaledPlayerRings(player_t *player, SINT8 mode)
K_AwardPlayerRings(player, awardamount, (mode == ASR_SUPERRING) ? true : false);
}
static void K_SpawnAirdropTrail(player_t *player)
{
fixed_t newx, newy;
fixed_t tx, ty, tz;
mobj_t *dust;
angle_t travelangle;
INT32 i, j;
I_Assert(player != NULL);
I_Assert(player->mo != NULL);
I_Assert(!P_MobjWasRemoved(player->mo));
if (player->drift != 0)
travelangle = player->mo->angle;
else
travelangle = K_MomentumAngle(player->mo);
for (j = 0; j < CLAMP(player->airdroptime, 0, 3); j++)
{
for (i = 0; i < 2; i++)
{
tx = P_ReturnThrustX(player->mo, travelangle, FixedMul((-12*FRACUNIT)*(j), player->mo->scale));
ty = P_ReturnThrustY(player->mo, travelangle, FixedMul((-12*FRACUNIT)*(j), player->mo->scale));
tz = player->mo->momz * j;
newx = player->mo->x + P_ReturnThrustX(player->mo, travelangle + ((i&1) ? -1 : 1)*ANGLE_135, FixedMul(24*FRACUNIT, player->mo->scale)) + tx;
newy = player->mo->y + P_ReturnThrustY(player->mo, travelangle + ((i&1) ? -1 : 1)*ANGLE_135, FixedMul(24*FRACUNIT, player->mo->scale)) + ty;
dust = P_SpawnMobj(newx, newy, player->mo->z-(tz/4), MT_AIRDROPDUST);
P_SetTarget(&dust->target, player->mo);
dust->angle = travelangle;
dust->fuse = 2*TICRATE;
dust->destscale = player->mo->scale;
P_SetScale(dust, player->mo->scale);
K_FlipFromObject(dust, player->mo);
dust->momx = 8;
}
}
}
static void K_SpawnFallLines(player_t *player, boolean ringdrop)
{
fixed_t rand_x;
@ -6900,6 +6942,7 @@ static void K_AirDrop(player_t *player, ticcmd_t *cmd)
}
K_SpawnFallLines(player, player->ringdrop);
K_SpawnAirdropTrail(player);
player->mo->momz -= FixedMul(gravity, mapobjectscale)*P_MobjFlip(player->mo);
}
}