experimental attraction shield EMP attack option

AoE attack can put opponent items on a cooldown
This commit is contained in:
minenice55 2026-04-27 22:45:28 -04:00
parent 9d7d74467f
commit 7b1df12ed0
5 changed files with 15 additions and 1 deletions

View file

@ -720,6 +720,7 @@ consvar_t cv_kartattraction_assistpower = CVAR_INIT ("kartattraction_assistpower
// Attraction Shield damage toggles
static CV_PossibleValue_t kartattractiondmg_cons_t[] = {{0, "None"}, {DMG_WIPEOUT, "Wipe-out"}, {DMG_FLIPOVER, "Flip-over"}, {DMG_EXPLODE, "Explode"}, {0, NULL}};
consvar_t cv_kartattraction_aoedmg = CVAR_INIT ("kartattraction_aoedmg", "None", CV_NETVAR|CV_CHEAT|CV_GUARD, kartattractiondmg_cons_t, NULL);
consvar_t cv_kartattraction_aoeemp = CVAR_INIT ("kartattraction_aoeemp", "0", CV_NETVAR|CV_CHEAT|CV_GUARD, CV_Unsigned, NULL);
// "Arrow Bullet": above a certain speed threshold, an aura in the shape of the Shrink arrow
// covers you, signaling protection from (most) items and players.

View file

@ -236,6 +236,7 @@ extern consvar_t cv_kartflame_fastfuel;
extern consvar_t cv_kartflame_offroadburn;
extern consvar_t cv_kartattraction_assistpower;
extern consvar_t cv_kartattraction_aoedmg;
extern consvar_t cv_kartattraction_aoeemp;
extern consvar_t cv_kartaltshrink_arrowbullet;
extern consvar_t cv_kartaltshrink_arrowbulletthres;

View file

@ -697,11 +697,13 @@ static inline BlockItReturn_t PIT_AttractionShieldAttack(mobj_t *thing)
return BMIT_ABORT;
}
#if 0
if (thing->player && (ATTRACTIONAOEDAMAGE == 0 || (!attractionhipower)))
{
// Don't damage players
return BMIT_CONTINUE;
}
#endif
if (thing == lightningSource)
{
@ -746,7 +748,15 @@ static inline BlockItReturn_t PIT_AttractionShieldAttack(mobj_t *thing)
if (thing->player)
{
P_DamageMobj(thing, lightningSource, lightningSource, 1, ATTRACTIONAOEDAMAGE|DMG_CANTHURTSELF);
if (ATTRACTIONAOEDAMAGE && attractionhipower)
{
P_DamageMobj(thing, lightningSource, lightningSource, 1, ATTRACTIONAOEDAMAGE|DMG_CANTHURTSELF);
}
if (ATTRACTIONAOEEMP && attractionhipower && thing != lightningSource)
{
//todo: filter out teammates
K_SetPlayerItemCooldown(thing->player, TICRATE * ATTRACTIONAOEEMP, false);
}
}
else
{

View file

@ -456,6 +456,7 @@ void K_RegisterKartStuff(void)
CV_RegisterVar(&cv_kartflame_offroadburn);
CV_RegisterVar(&cv_kartattraction_assistpower);
CV_RegisterVar(&cv_kartattraction_aoedmg);
CV_RegisterVar(&cv_kartattraction_aoeemp);
CV_RegisterVar(&cv_kartaltshrink_arrowbullet);
CV_RegisterVar(&cv_kartaltshrink_arrowbulletthres);

View file

@ -139,6 +139,7 @@ extern vector3_t clusterpoint, clusterdtf;
#define FLAMEHANDLEBOOST CV_Get(&cv_kartstacking_flame_handleboost)
#define FLAMESTACKABLE CV_Get(&cv_kartstacking_flame_stackable)
#define ATTRACTIONAOEEMP CV_Get(&cv_kartattraction_aoeemp)
#define ATTRACTIONAOEDAMAGE CV_Get(&cv_kartattraction_aoedmg)
#define ATTRACTIONSPEEDHIMIN CV_Get(&cv_kartstacking_attraction_speedboost_himin)
#define ATTRACTIONSPEEDHIMAX CV_Get(&cv_kartstacking_attraction_speedboost_himax)