wip ring sparkles

This commit is contained in:
TehRealSalt 2019-04-12 23:29:32 -04:00
parent b5645a81b9
commit 6733a485cf
5 changed files with 118 additions and 5 deletions

View file

@ -7165,6 +7165,21 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_OPAQUESMOKE5",
"S_RINGDEBT",
"S_RINGSPARKS1",
"S_RINGSPARKS2",
"S_RINGSPARKS3",
"S_RINGSPARKS4",
"S_RINGSPARKS5",
"S_RINGSPARKS6",
"S_RINGSPARKS7",
"S_RINGSPARKS8",
"S_RINGSPARKS9",
"S_RINGSPARKS10",
"S_RINGSPARKS11",
"S_RINGSPARKS12",
"S_RINGSPARKS13",
"S_RINGSPARKS14",
"S_RINGSPARKS15",
#ifdef SEENAMES
"S_NAMECHECK",
@ -7952,6 +7967,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
"MT_LIONMAN",
"MT_KARMAFIREWORK",
"MT_RINGSPARKS",
#ifdef SEENAMES
"MT_NAMECHECK",

View file

@ -69,7 +69,7 @@ char sprnames[NUMSPRITES + 1][5] =
"CNDL","DOCH","DUCK","GTRE","CHES","CHIM","DRGN","LZMN","PGSS","ZTCH",
"MKMA","MKMP","RTCH","BOWL","BOWH","BRRL","BRRR","HRSE","TOAH","BFRT",
"OFRT","RFRT","PFRT","ASPK","HBST","HBSO","HBSF","WBLZ","WBLN","FWRK",
"MXCL","XMS4","XMS5","VIEW"
"MXCL","RGSP","XMS4","XMS5","VIEW"
};
// Doesn't work with g++, needs actionf_p1 (don't modify this comment)
@ -3415,6 +3415,22 @@ state_t states[NUMSTATES] =
{SPR_MXCL, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_RINGDEBT
{SPR_RGSP, FF_PAPERSPRITE|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_RINGSPARKS2}, // S_RINGSPARKS1
{SPR_RGSP, FF_PAPERSPRITE|FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_RINGSPARKS3}, // S_RINGSPARKS2
{SPR_RGSP, FF_PAPERSPRITE|FF_FULLBRIGHT|2, 1, {NULL}, 0, 0, S_RINGSPARKS4}, // S_RINGSPARKS3
{SPR_RGSP, FF_PAPERSPRITE|FF_FULLBRIGHT|3, 1, {NULL}, 0, 0, S_RINGSPARKS5}, // S_RINGSPARKS4
{SPR_RGSP, FF_PAPERSPRITE|FF_FULLBRIGHT|4, 1, {NULL}, 0, 0, S_RINGSPARKS6}, // S_RINGSPARKS5
{SPR_RGSP, FF_PAPERSPRITE|FF_FULLBRIGHT|5, 1, {NULL}, 0, 0, S_RINGSPARKS7}, // S_RINGSPARKS6
{SPR_RGSP, FF_PAPERSPRITE|FF_FULLBRIGHT|6, 1, {NULL}, 0, 0, S_RINGSPARKS8}, // S_RINGSPARKS7
{SPR_RGSP, FF_PAPERSPRITE|FF_FULLBRIGHT|7, 1, {NULL}, 0, 0, S_RINGSPARKS9}, // S_RINGSPARKS8
{SPR_RGSP, FF_PAPERSPRITE|FF_FULLBRIGHT|8, 1, {NULL}, 0, 0, S_RINGSPARKS10}, // S_RINGSPARKS9
{SPR_RGSP, FF_PAPERSPRITE|FF_FULLBRIGHT|9, 1, {NULL}, 0, 0, S_RINGSPARKS11}, // S_RINGSPARKS10
{SPR_RGSP, FF_PAPERSPRITE|FF_FULLBRIGHT|10, 1, {NULL}, 0, 0, S_RINGSPARKS12}, // S_RINGSPARKS11
{SPR_RGSP, FF_PAPERSPRITE|FF_FULLBRIGHT|11, 1, {NULL}, 0, 0, S_RINGSPARKS13}, // S_RINGSPARKS12
{SPR_RGSP, FF_PAPERSPRITE|FF_FULLBRIGHT|12, 1, {NULL}, 0, 0, S_RINGSPARKS14}, // S_RINGSPARKS13
{SPR_RGSP, FF_PAPERSPRITE|FF_FULLBRIGHT|13, 1, {NULL}, 0, 0, S_RINGSPARKS15}, // S_RINGSPARKS14
{SPR_RGSP, FF_PAPERSPRITE|FF_FULLBRIGHT|14, 1, {NULL}, 0, 0, S_NULL}, // S_RINGSPARKS15
#ifdef SEENAMES
{SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL}, // S_NAMECHECK
#endif
@ -5461,7 +5477,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_SPRK1, // deathstate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_itemup, // deathsound
38*FRACUNIT, // speed
@ -20073,6 +20089,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate
},
{ // MT_RINGSPARKS
-1, // doomednum
S_RINGSPARKS1, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // 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
0, // speed
8<<FRACBITS, // radius
16<<FRACBITS, // height
1, // display offset
100, // mass
0, // damage
sfx_None, // activesound
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags
S_NULL // raisestate
},
// ============================================================================================================================//
#ifdef SEENAMES

View file

@ -776,6 +776,7 @@ typedef enum sprite
SPR_FWRK,
SPR_MXCL,
SPR_RGSP,
// Xmas-specific sprites that don't fit aboxe
SPR_XMS4,
@ -4072,6 +4073,21 @@ typedef enum state
S_OPAQUESMOKE5,
S_RINGDEBT,
S_RINGSPARKS1,
S_RINGSPARKS2,
S_RINGSPARKS3,
S_RINGSPARKS4,
S_RINGSPARKS5,
S_RINGSPARKS6,
S_RINGSPARKS7,
S_RINGSPARKS8,
S_RINGSPARKS9,
S_RINGSPARKS10,
S_RINGSPARKS11,
S_RINGSPARKS12,
S_RINGSPARKS13,
S_RINGSPARKS14,
S_RINGSPARKS15,
#ifdef SEENAMES
S_NAMECHECK,
@ -4876,6 +4892,7 @@ typedef enum mobj_type
MT_LIONMAN,
MT_KARMAFIREWORK,
MT_RINGSPARKS,
#ifdef SEENAMES
MT_NAMECHECK,

View file

@ -3582,12 +3582,18 @@ void A_AttractChase(mobj_t *actor)
if (actor->extravalue1 >= 21)
{
UINT8 i;
// Base add is 3 tics for 9,9, adds 1.5 tics for each point closer to the 1,1 end
actor->target->player->kartstuff[k_ringboost] += ((3*RINGBOOSTPWR)/2) + 3;
S_StartSound(actor->target, sfx_s1b5);
actor->momx = (3*actor->target->momx)/4;
actor->momy = (3*actor->target->momy)/4;
actor->momz = (3*actor->target->momz)/4;
// ring sparkle effect
for (i = 0; i < 4; i++)
{
mobj_t *sparkle = P_SpawnMobj(actor->target->x, actor->target->y, actor->target->z, MT_RINGSPARKS);
P_SetTarget(&sparkle->target, actor->target);
sparkle->extravalue1 = i;
}
P_KillMobj(actor, actor->target, actor->target);
return;
}

View file

@ -8285,6 +8285,37 @@ void P_MobjThinker(mobj_t *mobj)
K_MatchGenericExtraFlags(mobj, mobj->target);
P_TeleportMove(mobj, mobj->target->x, mobj->target->y, mobj->target->z + (mobj->target->height/2) + mobj->movefactor);
break;
case MT_RINGSPARKS:
if (!mobj->target || P_MobjWasRemoved(mobj->target))
{
P_RemoveMobj(mobj);
return;
}
K_MatchGenericExtraFlags(mobj, mobj->target);
mobj->angle = mobj->target->angle;
switch (mobj->extravalue1)
{
case 0:
default:
mobj->angle += ANGLE_90;
break;
case 1:
mobj->angle -= ANGLE_90;
break;
case 2:
mobj->angle += ANGLE_45;
break;
case 3:
mobj->angle -= ANGLE_45;
break;
}
P_TeleportMove(mobj, mobj->target->x + FINECOSINE(mobj->angle >> ANGLETOFINESHIFT),
mobj->target->y + FINESINE(mobj->angle >> ANGLETOFINESHIFT),
mobj->target->z + mobj->target->height);
break;
case MT_THUNDERSHIELD:
{
fixed_t destx, desty;