Thundercoin shield complete.

This commit is contained in:
toasterbabe 2016-10-17 23:22:04 +01:00
parent 0e73924ebb
commit 9b4c81ed0b
4 changed files with 57 additions and 3 deletions

View file

@ -5497,6 +5497,9 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_ZAPSB10",
"S_ZAPSB11", // blank frame
// Thunder spark
"S_THUNDERCOIN_SPARK",
// Invincibility Sparkles
"S_IVSP",
@ -6523,7 +6526,8 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
"MT_FLAMEAURA_ORB", // Flame shield mobj
"MT_BUBBLEWRAP_ORB", // Bubble shield mobj
"MT_THUNDERCOIN_ORB", // Thunder shield mobj
"MT_IVSP", // invincibility sparkles
"MT_THUNDERCOIN_SPARK", // Thunder spark
"MT_IVSP", // Invincibility sparkles
"MT_SUPERSPARK", // Super Sonic Spark
// Freed Animals

View file

@ -2227,6 +2227,9 @@ state_t states[NUMSTATES] =
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20 , 2, {NULL}, 0, 0, S_ZAPSB11}, // S_ZAPSB10
{SPR_NULL, 0, 15*2, {NULL}, 0, 0, S_ZAPSB2 }, // S_ZAPSB11
// Thunder spark
{SPR_SSPK, FF_ANIMATE, 18, {NULL}, 1, 2, S_NULL}, // S_THUNDERCOIN_SPARK
// Invincibility Sparkles
{SPR_IVSP, FF_ANIMATE, 32, {NULL}, 31, 1, S_NULL}, // S_IVSP
@ -11007,6 +11010,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_ZAPS14 // raisestate
},
{ // MT_THUNDERCOIN_SPARK
-1, // doomednum
S_THUNDERCOIN_SPARK, // spawnstate
1, // 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
4*FRACUNIT, // radius
4*FRACUNIT, // height
0, // display offset
100, // mass
0, // damage
sfx_None, // activesound
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
S_NULL // raisestate
},
{ // MT_IVSP
-1, // doomednum
S_IVSP, // spawnstate

View file

@ -2411,6 +2411,9 @@ typedef enum state
S_ZAPSB10,
S_ZAPSB11, // blank frame
//Thunder spark
S_THUNDERCOIN_SPARK,
// Invincibility Sparkles
S_IVSP,
@ -3456,7 +3459,8 @@ typedef enum mobj_type
MT_FLAMEAURA_ORB, // Flame shield mobj
MT_BUBBLEWRAP_ORB, // Bubble shield mobj
MT_THUNDERCOIN_ORB, // Thunder shield mobj
MT_IVSP, // invincibility sparkles
MT_THUNDERCOIN_SPARK, // Thunder spark
MT_IVSP, // Invincibility sparkles
MT_SUPERSPARK, // Super Sonic Spark
// Freed Animals

View file

@ -3941,6 +3941,20 @@ void P_DoJumpShield(player_t *player)
player->pflags &= ~PF_SPINNING;
if (electric)
{
mobj_t *spark;
INT32 i;
#define numangles 6
#define limitangle (360/numangles)
angle_t travelangle = player->mo->angle + P_RandomRange(-limitangle, limitangle)*ANG1;
for (i = 0; i < numangles; i++)
{
spark = P_SpawnMobjFromMobj(player->mo, 0, 0, 0, MT_THUNDERCOIN_SPARK);
P_InstaThrust(spark, travelangle + i*(ANGLE_MAX/numangles), FixedMul(4*FRACUNIT, spark->scale));
if (i % 2)
P_SetObjectMomZ(spark, -4*FRACUNIT, false);
}
#undef limitangle
#undef numangles
S_StartSound(player->mo, sfx_s3k45);
}
else
@ -6304,8 +6318,9 @@ void P_ElementalFire(player_t *player, boolean cropcircle)
if (cropcircle)
{
travelangle = player->mo->angle + P_RandomRange(-ANGLE_45, ANGLE_45);
#define numangles 8
#define limitangle (180/numangles)
travelangle = player->mo->angle + P_RandomRange(-limitangle, limitangle)*ANG1;
for (i = 0; i < numangles; i++)
{
flame = P_SpawnMobj(player->mo->x, player->mo->y, ground, MT_SPINFIRE);
@ -6319,6 +6334,7 @@ void P_ElementalFire(player_t *player, boolean cropcircle)
P_InstaThrust(flame, flame->angle, FixedMul(3*FRACUNIT, flame->scale));
P_SetObjectMomZ(flame, 3*FRACUNIT, false);
}
#undef limitangle
#undef numangles
}
else