Merge branch 'flair' of git@git.magicalgirl.moe:KartKrew/Kart.git

This commit is contained in:
Sryder 2018-02-24 22:38:28 +00:00
commit 631b96883a
7 changed files with 54 additions and 6 deletions

View File

@ -7017,6 +7017,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
"MT_BOMBEXPLOSIONSOUND",
"MT_SMOLDERING", // New explosion
"MT_BOOMEXPLODE",
"MT_BOOMPARTICLE",
"MT_BLUELIGHTNING", // Lightning stuff

View File

@ -15056,6 +15056,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate
},
{ // MT_BOOMEXPLODE
-1, // doomednum
S_SLOWBOOM1, // spawnstate
1, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
0, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
1, // speed
16*FRACUNIT, // radius
32*FRACUNIT, // height
0, // display offset
0, // mass
0, // damage
sfx_None, // activesound
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_BOUNCE|MF_SCENERY, // flags
S_NULL // raisestate
},
{ // MT_BOOMPARTICLE
-1, // doomednum
S_INVISIBLE, // spawnstate

View File

@ -3999,6 +3999,7 @@ typedef enum mobj_type
MT_BOMBEXPLOSIONSOUND,
MT_SMOLDERING, // New explosion
MT_BOOMEXPLODE,
MT_BOOMPARTICLE,
MT_BLUELIGHTNING, // Lightning stuff

View File

@ -1712,7 +1712,7 @@ void K_SpawnKartExplosion(fixed_t x, fixed_t y, fixed_t z, fixed_t radius, INT32
}
// Spawns the purely visual explosion
void K_SpawnBobombExplosion(mobj_t *source)
void K_SpawnBobombExplosion(mobj_t *source, UINT8 color)
{
INT32 i, radius, height;
mobj_t *smoldering = P_SpawnMobj(source->x, source->y, source->z, MT_SMOLDERING);
@ -1724,6 +1724,9 @@ void K_SpawnBobombExplosion(mobj_t *source)
radius = source->radius>>FRACBITS;
height = source->height>>FRACBITS;
if (!color)
color = SKINCOLOR_RED;
for (i = 0; i < 32; i++)
{
dust = P_SpawnMobj(source->x, source->y, source->z, MT_SMOKE);
@ -1734,15 +1737,15 @@ void K_SpawnBobombExplosion(mobj_t *source)
truc = P_SpawnMobj(source->x + P_RandomRange(-radius, radius)*FRACUNIT,
source->y + P_RandomRange(-radius, radius)*FRACUNIT,
source->z + P_RandomRange(0, height)*FRACUNIT, MT_BOSSEXPLODE);
source->z + P_RandomRange(0, height)*FRACUNIT, MT_BOOMEXPLODE);
truc->scale = source->scale*2;
truc->destscale = source->scale*6;
P_SetMobjState(truc, S_SLOWBOOM1);
speed = FixedMul(10*FRACUNIT, source->scale)>>FRACBITS;
truc->momx = P_RandomRange(-speed, speed)*FRACUNIT;
truc->momy = P_RandomRange(-speed, speed)*FRACUNIT;
speed = FixedMul(20*FRACUNIT, source->scale)>>FRACBITS;
truc->momz = P_RandomRange(-speed, speed)*FRACUNIT;
truc->color = color;
}
for (i = 0; i < 16; i++)
@ -1769,6 +1772,7 @@ void K_SpawnBobombExplosion(mobj_t *source)
if (P_RandomChance(FRACUNIT/2))
truc->momz = -truc->momz;
truc->tics = TICRATE*2;
truc->color = color;
}
}

View File

@ -28,7 +28,7 @@ void K_SquishPlayer(player_t *player, mobj_t *source);
void K_ExplodePlayer(player_t *player, mobj_t *source);
void K_StealBalloon(player_t *player, player_t *victim, boolean force);
void K_SpawnKartExplosion(fixed_t x, fixed_t y, fixed_t z, fixed_t radius, INT32 number, mobjtype_t type, angle_t rotangle, boolean spawncenter, boolean ghostit, mobj_t *source);
void K_SpawnBobombExplosion(mobj_t *source);
void K_SpawnBobombExplosion(mobj_t *source, UINT8 color);
void K_SpawnDriftTrail(player_t *player);
void K_DoMushroom(player_t *player, boolean doPFlag, boolean startboost);
void K_DoBouncePad(mobj_t *mo, fixed_t vertispeed);

View File

@ -8270,7 +8270,10 @@ void A_BobombExplode(mobj_t *actor)
for (d = 0; d < 16; d++)
K_SpawnKartExplosion(actor->x, actor->y, actor->z, actor->info->painchance + 32*FRACUNIT, 32, type, d*(ANGLE_45/4), true, false, actor->target); // 32 <-> 64
K_SpawnBobombExplosion(actor);
if (actor->target->player)
K_SpawnBobombExplosion(actor, actor->target->player->skincolor);
else
K_SpawnBobombExplosion(actor, SKINCOLOR_RED);
P_SpawnMobj(actor->x, actor->y, actor->z, MT_BOMBEXPLOSIONSOUND);

View File

@ -3039,11 +3039,22 @@ static boolean P_SceneryZMovement(mobj_t *mo)
switch (mo->type)
{
case MT_BOOMEXPLODE:
case MT_BOOMPARTICLE:
if ((mo->flags & MF_BOUNCE) && (mo->z <= mo->floorz || mo->z+mo->height >= mo->ceilingz))
{
// set standingslope
P_TryMove(mo, mo->x, mo->y, true);
mo->momz = -mo->momz;
mo->z += mo->momz;
#ifdef ESLOPE
if (mo->standingslope)
{
if (mo->flags & MF_NOCLIPHEIGHT)
mo->standingslope = NULL;
else if (!P_IsObjectOnGround(mo))
P_SlopeLaunch(mo);
}
#endif
S_StartSound(mo, mo->info->activesound);
}
break;
@ -6728,6 +6739,7 @@ void P_MobjThinker(mobj_t *mobj)
P_SetMobjState(smoke, S_QUICKBOOM1);
smoke->scale = mobj->scale/2;
smoke->destscale = mobj->scale;
smoke->color = mobj->color;
}
else
{