mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-12-26 18:02:30 +00:00
Visual proximity mine radius
This commit is contained in:
parent
53cb1cb45d
commit
cff8d740b1
5 changed files with 123 additions and 4 deletions
|
|
@ -1561,6 +1561,8 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
|
|||
"S_MAGICIANBOXTOP",
|
||||
"S_MAGICIANBOXBOTTOM",
|
||||
|
||||
"S_MINERADIUS",
|
||||
|
||||
"S_WAVEDASH",
|
||||
|
||||
"S_INSTAWHIP",
|
||||
|
|
@ -3549,6 +3551,7 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t
|
|||
"MT_MONITOR_PART",
|
||||
"MT_MONITOR_SHARD",
|
||||
"MT_MAGICIANBOX",
|
||||
"MT_MINERADIUS",
|
||||
"MT_WAVEDASH",
|
||||
|
||||
"MT_INSTAWHIP",
|
||||
|
|
|
|||
33
src/info.c
33
src/info.c
|
|
@ -317,6 +317,10 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
"MGBX", // Heavy Magician transform box
|
||||
"MGBT", // Heavy Magician transform box top
|
||||
"MGBB", // Heavy Magician transform box bottom
|
||||
"SSMA", // Mine radius
|
||||
"SSMB",
|
||||
"SSMC",
|
||||
"SSMD",
|
||||
"MSHD", // Item Monitor Big Shard
|
||||
"IMDB", // Item Monitor Small Shard (Debris)
|
||||
"MTWK", // Item Monitor Glass Twinkle
|
||||
|
|
@ -2138,6 +2142,8 @@ state_t states[NUMSTATES] =
|
|||
{SPR_MGBT, FF_FLOORSPRITE|0, -1, {NULL}, 0, 0, S_NULL}, // S_MAGICIANBOX_TOP
|
||||
{SPR_MGBB, FF_FLOORSPRITE|0, -1, {NULL}, 0, 0, S_NULL}, // S_MAGICIANBOX_BOTTOM
|
||||
|
||||
{SPR_SSMA, FF_PAPERSPRITE|FF_ANIMATE|FF_ADD, -1, {NULL}, 59, 1, S_NULL}, // S_MINERADIUS
|
||||
|
||||
{SPR_SLPT, FF_PAPERSPRITE|0, -1, {NULL}, 0, 0, S_NULL}, // S_WAVEDASH
|
||||
|
||||
{SPR_IWHP, FF_FLOORSPRITE|FF_ANIMATE|0, -1, {NULL}, 6, 2, S_NULL}, // S_INSTAWHIP
|
||||
|
|
@ -13541,6 +13547,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_MINERADIUS
|
||||
-1, // doomednum
|
||||
S_MINERADIUS, // spawnstate
|
||||
1000, // 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
|
||||
0, // speed
|
||||
0*FRACUNIT, // radius
|
||||
0*FRACUNIT, // height
|
||||
1, // display offset
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPTHING|MF_NOCLIPHEIGHT|MF_DONTENCOREMAP, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_WAVEDASH
|
||||
-1, // doomednum
|
||||
S_WAVEDASH, // spawnstate
|
||||
|
|
|
|||
|
|
@ -858,6 +858,10 @@ typedef enum sprite
|
|||
SPR_MGBX, // Heavy Magician transform box
|
||||
SPR_MGBT, // Heavy Magician transform box top
|
||||
SPR_MGBB, // Heavy Magician transform box bottom
|
||||
SPR_SSMA, // Mine radius
|
||||
SPR_SSMB,
|
||||
SPR_SSMC,
|
||||
SPR_SSMD,
|
||||
SPR_MSHD, // Item Monitor Big Shard
|
||||
SPR_IMDB, // Item Monitor Small Shard (Debris)
|
||||
SPR_MTWK, // Item Monitor Glass Twinkle
|
||||
|
|
@ -2607,6 +2611,8 @@ typedef enum state
|
|||
S_MAGICIANBOX_TOP,
|
||||
S_MAGICIANBOX_BOTTOM,
|
||||
|
||||
S_MINERADIUS,
|
||||
|
||||
S_WAVEDASH,
|
||||
|
||||
S_INSTAWHIP,
|
||||
|
|
@ -4622,6 +4628,7 @@ typedef enum mobj_type
|
|||
MT_MONITOR_PART,
|
||||
MT_MONITOR_SHARD,
|
||||
MT_MAGICIANBOX,
|
||||
MT_MINERADIUS,
|
||||
MT_WAVEDASH,
|
||||
|
||||
MT_INSTAWHIP,
|
||||
|
|
|
|||
|
|
@ -269,11 +269,17 @@ static inline BlockItReturn_t PIT_SSMineSearch(mobj_t *thing)
|
|||
return BMIT_CONTINUE;
|
||||
}
|
||||
|
||||
if (thing == grenade->target) // Don't blow up at your owner instantly.
|
||||
return BMIT_CONTINUE;
|
||||
extern consvar_t cv_debugpickmeup;
|
||||
|
||||
if (!cv_debugpickmeup.value)
|
||||
{
|
||||
if (thing == grenade->target) // Don't blow up at your owner instantly.
|
||||
return BMIT_CONTINUE;
|
||||
|
||||
if (grenade->target->player && thing->player && G_SameTeam(grenade->target->player, thing->player))
|
||||
return BMIT_CONTINUE;
|
||||
}
|
||||
|
||||
if (grenade->target->player && thing->player && G_SameTeam(grenade->target->player, thing->player))
|
||||
return BMIT_CONTINUE;
|
||||
|
||||
if (PIT_SSMineChecks(thing) == true)
|
||||
return BMIT_CONTINUE;
|
||||
|
|
|
|||
70
src/p_mobj.c
70
src/p_mobj.c
|
|
@ -7469,6 +7469,38 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
|
|||
mobj->momx = mobj->momy = 0;
|
||||
S_StartSound(mobj, mobj->info->activesound);
|
||||
P_SetMobjState(mobj, S_SSMINE_DEPLOY1);
|
||||
|
||||
spritenum_t parts[4] = {SPR_SSMA, SPR_SSMB, SPR_SSMC, SPR_SSMD};
|
||||
|
||||
#define RADIUSCOPIES 6
|
||||
|
||||
UINT8 lowlight = 191;
|
||||
UINT8 highlight = 255;
|
||||
UINT8 lightpercopy = (highlight - lowlight) / RADIUSCOPIES;
|
||||
|
||||
angle_t increment = ANG1*10;
|
||||
|
||||
for (UINT8 i = 0; i < 4; i++)
|
||||
{
|
||||
for (UINT8 j = 0; j < RADIUSCOPIES; j++)
|
||||
{
|
||||
mobj_t *radius = P_SpawnMobjFromMobj(mobj, 0, 0, 0, MT_MINERADIUS);
|
||||
radius->angle -= j*increment;
|
||||
P_SetTarget(&radius->target, mobj);
|
||||
|
||||
P_InstaScale(radius, mobj->scale/4);
|
||||
radius->destscale = mobj->scale * 6; // Matches SSMINE_DEPLOY8 radius, will scale down when thinking after
|
||||
radius->scalespeed = mobj->scale;
|
||||
|
||||
radius->sprite = parts[i];
|
||||
|
||||
radius->renderflags |= RF_ABSOLUTELIGHTLEVEL;
|
||||
radius->lightlevel = highlight - (lightpercopy * j);
|
||||
radius->renderflags |= (cv_reducevfx.value) ? RF_TRANS90 : RF_TRANS50;
|
||||
}
|
||||
}
|
||||
|
||||
#undef RADIUSCOPIES
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -8397,6 +8429,44 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case MT_MINERADIUS:
|
||||
{
|
||||
if (!mobj->target || P_MobjWasRemoved(mobj->target))
|
||||
{
|
||||
P_RemoveMobj(mobj);
|
||||
return false;
|
||||
}
|
||||
|
||||
statenum_t stateindex = mobj->target->state - states;
|
||||
|
||||
mobj->x = mobj->target->x;
|
||||
mobj->y = mobj->target->y;
|
||||
mobj->z = mobj->target->z + mobj->target->height/4;
|
||||
|
||||
K_MatchGenericExtraFlags(mobj, mobj->target);
|
||||
|
||||
mobj->color = mobj->target->color;
|
||||
mobj->colorized = true;
|
||||
mobj->angle += ANG1*5;
|
||||
|
||||
if (stateindex == S_SSMINE_DEPLOY8)
|
||||
{
|
||||
mobj->renderflags &= ~(RF_TRANSMASK);
|
||||
if (cv_reducevfx.value)
|
||||
mobj->renderflags |= RF_TRANS80;
|
||||
}
|
||||
|
||||
if (stateindex == S_SSMINE_DEPLOY9) // Horseshit, see SSMineSearch
|
||||
{
|
||||
mobj->destscale = mobj->target->scale*4;
|
||||
}
|
||||
|
||||
|
||||
// mobj_t *ghost = P_SpawnGhostMobj(mobj);
|
||||
// ghost->fuse = 12;
|
||||
|
||||
break;
|
||||
}
|
||||
case MT_SIDETRICK:
|
||||
{
|
||||
fixed_t destx, desty;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue