mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-03-24 19:52:08 +00:00
Thundercoin shield complete.
This commit is contained in:
parent
0e73924ebb
commit
9b4c81ed0b
4 changed files with 57 additions and 3 deletions
|
@ -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
|
||||
|
|
30
src/info.c
30
src/info.c
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
18
src/p_user.c
18
src/p_user.c
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue