mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-01-18 07:22:28 +00:00
Sonic 3 shields implemented at a basic visual/functional level - no abilities yet.
This commit is contained in:
parent
6e47a07a04
commit
3aa9d2a1b1
10 changed files with 779 additions and 62 deletions
|
@ -186,12 +186,12 @@ typedef enum
|
|||
SH_ATTRACT,
|
||||
SH_ELEMENTAL,
|
||||
SH_BOMB,
|
||||
// Stupid useless unimplimented Sonic 3 shields
|
||||
SH_BUBBLEWRAP,
|
||||
SH_THUNDERCOIN,
|
||||
SH_FLAMEAURA,
|
||||
// Pity shield: the world's most basic shield ever, given to players who suck at Match
|
||||
SH_PITY,
|
||||
// Sonic 3 shields
|
||||
SH_FLAMEAURA,
|
||||
SH_BUBBLEWRAP,
|
||||
SH_THUNDERCOIN,
|
||||
// The fireflower used to be stackable with other shields. Not anymore.
|
||||
SH_FIREFLOWER,
|
||||
// The force shield uses the lower 8 bits to count how many extra hits are left.
|
||||
|
|
104
src/dehacked.c
104
src/dehacked.c
|
@ -1687,6 +1687,9 @@ static actionpointer_t actionpointers[] =
|
|||
{{A_WaterShield}, "A_WATERSHIELD"},
|
||||
{{A_ForceShield}, "A_FORCESHIELD"},
|
||||
{{A_PityShield}, "A_PITYSHIELD"},
|
||||
{{A_FlameShield}, "A_FLAMESHIELD"},
|
||||
{{A_BubbleShield}, "A_BUBBLESHIELD"},
|
||||
{{A_ThunderShield}, "A_THUNDERSHIELD"},
|
||||
{{A_GravityBox}, "A_GRAVITYBOX"},
|
||||
{{A_ScoreRise}, "A_SCORERISE"},
|
||||
{{A_ParticleSpawn}, "A_PARTICLESPAWN"},
|
||||
|
@ -4908,6 +4911,9 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_RECYCLER_BOX",
|
||||
"S_SCORE1K_BOX",
|
||||
"S_SCORE10K_BOX",
|
||||
"S_FLAMEAURA_BOX",
|
||||
"S_BUBBLEWRAP_BOX",
|
||||
"S_THUNDERCOIN_BOX",
|
||||
|
||||
// Gold Repeat Monitor States (one per box)
|
||||
"S_PITY_GOLDBOX",
|
||||
|
@ -4920,6 +4926,9 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_INVULN_GOLDBOX",
|
||||
"S_EGGMAN_GOLDBOX",
|
||||
"S_GRAVITY_GOLDBOX",
|
||||
"S_FLAMEAURA_GOLDBOX",
|
||||
"S_BUBBLEWRAP_GOLDBOX",
|
||||
"S_THUNDERCOIN_GOLDBOX",
|
||||
|
||||
// Team Ring Boxes (these are special)
|
||||
"S_RING_REDBOX1",
|
||||
|
@ -4981,6 +4990,15 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_SCORE10K_ICON1",
|
||||
"S_SCORE10K_ICON2",
|
||||
|
||||
"S_FLAMEAURA_ICON1",
|
||||
"S_FLAMEAURA_ICON2",
|
||||
|
||||
"S_BUBBLEWRAP_ICON1",
|
||||
"S_BUBBLEWRAP_ICON2",
|
||||
|
||||
"S_THUNDERCOIN_ICON1",
|
||||
"S_THUNDERCOIN_ICON2",
|
||||
|
||||
"S_ROCKET",
|
||||
|
||||
"S_LASER",
|
||||
|
@ -5409,6 +5427,68 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_PITY9",
|
||||
"S_PITY10",
|
||||
|
||||
"S_FIRS1",
|
||||
"S_FIRS2",
|
||||
"S_FIRS3",
|
||||
"S_FIRS4",
|
||||
"S_FIRS5",
|
||||
"S_FIRS6",
|
||||
"S_FIRS7",
|
||||
"S_FIRS8",
|
||||
"S_FIRS9",
|
||||
|
||||
"S_FIRSB1",
|
||||
"S_FIRSB2",
|
||||
"S_FIRSB3",
|
||||
"S_FIRSB4",
|
||||
"S_FIRSB5",
|
||||
"S_FIRSB6",
|
||||
"S_FIRSB7",
|
||||
"S_FIRSB8",
|
||||
"S_FIRSB9",
|
||||
|
||||
"S_BUBS1",
|
||||
"S_BUBS2",
|
||||
"S_BUBS3",
|
||||
"S_BUBS4",
|
||||
"S_BUBS5",
|
||||
"S_BUBS6",
|
||||
"S_BUBS7",
|
||||
"S_BUBS8",
|
||||
"S_BUBS9",
|
||||
|
||||
"S_BUBSB1",
|
||||
"S_BUBSB2",
|
||||
|
||||
"S_ZAPS1",
|
||||
"S_ZAPS2",
|
||||
"S_ZAPS3",
|
||||
"S_ZAPS4",
|
||||
"S_ZAPS5",
|
||||
"S_ZAPS6",
|
||||
"S_ZAPS7",
|
||||
"S_ZAPS8",
|
||||
"S_ZAPS9",
|
||||
"S_ZAPS10",
|
||||
"S_ZAPS11",
|
||||
"S_ZAPS12",
|
||||
"S_ZAPS13", // blank frame
|
||||
"S_ZAPS14",
|
||||
"S_ZAPS15",
|
||||
"S_ZAPS16",
|
||||
|
||||
"S_ZAPSB1", // blank frame
|
||||
"S_ZAPSB2",
|
||||
"S_ZAPSB3",
|
||||
"S_ZAPSB4",
|
||||
"S_ZAPSB5",
|
||||
"S_ZAPSB6",
|
||||
"S_ZAPSB7",
|
||||
"S_ZAPSB8",
|
||||
"S_ZAPSB9",
|
||||
"S_ZAPSB10",
|
||||
"S_ZAPSB11", // blank frame
|
||||
|
||||
// Invincibility Sparkles
|
||||
"S_IVSP",
|
||||
|
||||
|
@ -6231,6 +6311,9 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
|||
"MT_RECYCLER_BOX",
|
||||
"MT_SCORE1K_BOX",
|
||||
"MT_SCORE10K_BOX",
|
||||
"MT_FLAMEAURA_BOX",
|
||||
"MT_BUBBLEWRAP_BOX",
|
||||
"MT_THUNDERCOIN_BOX",
|
||||
|
||||
// Monitor boxes -- repeating (big) boxes
|
||||
"MT_PITY_GOLDBOX",
|
||||
|
@ -6243,6 +6326,9 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
|||
"MT_INVULN_GOLDBOX",
|
||||
"MT_EGGMAN_GOLDBOX",
|
||||
"MT_GRAVITY_GOLDBOX",
|
||||
"MT_FLAMEAURA_GOLDBOX",
|
||||
"MT_BUBBLEWRAP_GOLDBOX",
|
||||
"MT_THUNDERCOIN_GOLDBOX",
|
||||
|
||||
// Monitor boxes -- special
|
||||
"MT_RING_REDBOX",
|
||||
|
@ -6265,6 +6351,9 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
|||
"MT_RECYCLER_ICON",
|
||||
"MT_SCORE1K_ICON",
|
||||
"MT_SCORE10K_ICON",
|
||||
"MT_FLAMEAURA_ICON",
|
||||
"MT_BUBBLEWRAP_ICON",
|
||||
"MT_THUNDERCOIN_ICON",
|
||||
|
||||
// Projectiles
|
||||
"MT_ROCKET",
|
||||
|
@ -6417,12 +6506,15 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
|||
"MT_EGGSTATUE2",
|
||||
|
||||
// Powerup Indicators
|
||||
"MT_GREENORB", // Elemental shield mobj
|
||||
"MT_YELLOWORB", // Attract shield mobj
|
||||
"MT_BLUEORB", // Force shield mobj
|
||||
"MT_BLACKORB", // Armageddon shield mobj
|
||||
"MT_WHITEORB", // Whirlwind shield mobj
|
||||
"MT_PITYORB", // Pity shield mobj
|
||||
"MT_ELEMENTAL_ORB", // Elemental shield mobj
|
||||
"MT_ATTRACT_ORB", // Attract shield mobj
|
||||
"MT_FORCE_ORB", // Force shield mobj
|
||||
"MT_BOMB_ORB", // Armageddon shield mobj
|
||||
"MT_JUMP_ORB", // Whirlwind shield mobj
|
||||
"MT_PITY_ORB", // Pity shield mobj
|
||||
"MT_FLAMEAURA_ORB", // Flame shield mobj
|
||||
"MT_BUBBLEWRAP_ORB", // Bubble shield mobj
|
||||
"MT_THUNDERCOIN_ORB", // Thunder shield mobj
|
||||
"MT_IVSP", // invincibility sparkles
|
||||
"MT_SUPERSPARK", // Super Sonic Spark
|
||||
|
||||
|
|
|
@ -271,6 +271,9 @@ light_t *t_lspr[NUMSPRITES] =
|
|||
&lspr[NOLIGHT], // SPR_TVRC
|
||||
&lspr[NOLIGHT], // SPR_TV1K
|
||||
&lspr[NOLIGHT], // SPR_TVTK
|
||||
&lspr[NOLIGHT], // SPR_TVFL
|
||||
&lspr[NOLIGHT], // SPR_TVBB
|
||||
&lspr[NOLIGHT], // SPR_TVZP
|
||||
|
||||
// Projectiles
|
||||
&lspr[NOLIGHT], // SPR_MISL
|
||||
|
@ -359,6 +362,9 @@ light_t *t_lspr[NUMSPRITES] =
|
|||
&lspr[NOLIGHT], // SPR_ELEM
|
||||
&lspr[NOLIGHT], // SPR_FORC
|
||||
&lspr[NOLIGHT], // SPR_PITY
|
||||
&lspr[NOLIGHT], // SPR_FIRS
|
||||
&lspr[NOLIGHT], // SPR_BUBS
|
||||
&lspr[NOLIGHT], // SPR_ZAPS
|
||||
&lspr[INVINCIBLE_L], // SPR_IVSP
|
||||
&lspr[SUPERSPARK_L], // SPR_SSPK
|
||||
|
||||
|
|
433
src/info.c
433
src/info.c
|
@ -159,6 +159,9 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
"TVRC", // ReCycler
|
||||
"TV1K", // 1,000 points (1 K)
|
||||
"TVTK", // 10,000 points (Ten K)
|
||||
"TVFL", // FLame shield
|
||||
"TVBB", // BuBble shield
|
||||
"TVZP", // Thunder shield (ZaP)
|
||||
|
||||
// Projectiles
|
||||
"MISL",
|
||||
|
@ -243,6 +246,9 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
"ELEM", // Elemental Shield Orb and Fire
|
||||
"FORC", // Force Shield Orb
|
||||
"PITY", // Pity Shield Orb
|
||||
"FIRS", // Flame Shield Orb
|
||||
"BUBS", // Bubble Shield Orb
|
||||
"ZAPS", // Thunder Shield Orb
|
||||
"IVSP", // invincibility sparkles
|
||||
"SSPK", // Super Sonic Spark
|
||||
|
||||
|
@ -1623,6 +1629,9 @@ state_t states[NUMSTATES] =
|
|||
{SPR_TVRC, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_RECYCLER_BOX
|
||||
{SPR_TV1K, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_SCORE1K_BOX
|
||||
{SPR_TVTK, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_SCORE10K_BOX
|
||||
{SPR_TVFL, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_FLAMEAURA_BOX
|
||||
{SPR_TVBB, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_BUBBLEWRAP_BOX
|
||||
{SPR_TVZP, 0, 2, {NULL}, 0, 0, S_BOX_FLICKER}, // S_THUNDERCOIN_BOX
|
||||
|
||||
// Gold Repeat Monitor States (one per box)
|
||||
{SPR_TVPI, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_PITY_GOLDBOX
|
||||
|
@ -1635,6 +1644,9 @@ state_t states[NUMSTATES] =
|
|||
{SPR_TVIV, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_INVULN_GOLDBOX
|
||||
{SPR_TVEG, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_EGGMAN_GOLDBOX
|
||||
{SPR_TVGV, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_GRAVITY_GOLDBOX
|
||||
{SPR_TVFL, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_FLAMEAURA_GOLDBOX
|
||||
{SPR_TVBB, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_BUBBLEWRAP_GOLDBOX
|
||||
{SPR_TVZP, 1, 2, {A_GoldMonitorSparkle}, 0, 0, S_GOLDBOX_FLICKER}, // S_THUNDERCOIN_GOLDBOX
|
||||
|
||||
// Team Ring Boxes (these are special)
|
||||
{SPR_TRRI, 0, 2, {NULL}, 0, 0, S_RING_REDBOX2}, // S_RING_REDBOX1
|
||||
|
@ -1696,6 +1708,15 @@ state_t states[NUMSTATES] =
|
|||
{SPR_TVTK, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_SCORE10K_ICON2}, // S_SCORE10K_ICON1
|
||||
{SPR_TVTK, 2, 18, {A_AwardScore}, 0, 0, S_NULL}, // S_SCORE10K_ICON2
|
||||
|
||||
{SPR_TVFL, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_FLAMEAURA_ICON2}, // S_FLAMEAURA_ICON1
|
||||
{SPR_TVFL, 2, 18, {A_FlameShield}, 0, 0, S_NULL}, // S_FLAMEAURA_ICON2
|
||||
|
||||
{SPR_TVBB, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_BUBBLEWRAP_ICON2}, // S_BUBBLEWRAP_ICON1
|
||||
{SPR_TVBB, 2, 18, {A_BubbleShield}, 0, 0, S_NULL}, // S_BUBBLERWAP_ICON2
|
||||
|
||||
{SPR_TVZP, FF_ANIMATE|2, 18, {NULL}, 3, 4, S_THUNDERCOIN_ICON2}, // S_THUNDERCOIN_ICON1
|
||||
{SPR_TVZP, 2, 18, {A_ThunderShield}, 0, 0, S_NULL}, // S_THUNDERCOIN_ICON2
|
||||
|
||||
// ---
|
||||
|
||||
{SPR_MISL, FF_FULLBRIGHT, 1, {A_SmokeTrailer}, MT_SMOKE, 0, S_ROCKET}, // S_ROCKET
|
||||
|
@ -2134,6 +2155,68 @@ state_t states[NUMSTATES] =
|
|||
{SPR_PITY, FF_TRANS20 , 1, {NULL}, 0, 0, S_PITY10}, // S_PITY9
|
||||
{SPR_PITY, FF_TRANS20|5, 1, {NULL}, 0, 0, S_PITY1 }, // S_PITY10
|
||||
|
||||
{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40 , 2, {NULL}, 0, 0, S_FIRS2}, // S_FIRS1
|
||||
{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|1, 2, {NULL}, 0, 0, S_FIRS3}, // S_FIRS2
|
||||
{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|2, 2, {NULL}, 0, 0, S_FIRS4}, // S_FIRS3
|
||||
{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|3, 2, {NULL}, 0, 0, S_FIRS5}, // S_FIRS4
|
||||
{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|4, 2, {NULL}, 0, 0, S_FIRS6}, // S_FIRS5
|
||||
{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|5, 2, {NULL}, 0, 0, S_FIRS7}, // S_FIRS6
|
||||
{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|6, 2, {NULL}, 0, 0, S_FIRS8}, // S_FIRS7
|
||||
{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|7, 2, {NULL}, 0, 0, S_FIRS9}, // S_FIRS8
|
||||
{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|8, 2, {NULL}, 0, 0, S_FIRS1}, // S_FIRS9
|
||||
|
||||
{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40| 9, 2, {NULL}, 0, 0, S_FIRSB2}, // S_FIRSB1
|
||||
{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|10, 2, {NULL}, 0, 0, S_FIRSB3}, // S_FIRSB2
|
||||
{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|11, 2, {NULL}, 0, 0, S_FIRSB4}, // S_FIRSB3
|
||||
{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|12, 2, {NULL}, 0, 0, S_FIRSB5}, // S_FIRSB4
|
||||
{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|13, 2, {NULL}, 0, 0, S_FIRSB6}, // S_FIRSB5
|
||||
{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|14, 2, {NULL}, 0, 0, S_FIRSB7}, // S_FIRSB6
|
||||
{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|15, 2, {NULL}, 0, 0, S_FIRSB8}, // S_FIRSB7
|
||||
{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|16, 2, {NULL}, 0, 0, S_FIRSB9}, // S_FIRSB8
|
||||
{SPR_FIRS, FF_FULLBRIGHT|FF_TRANS40|17, 2, {NULL}, 0, 0, S_FIRSB1}, // S_FIRSB9
|
||||
|
||||
{SPR_BUBS, FF_TRANS30| 2, 2, {NULL}, 0, 0, S_BUBS2}, // S_BUBS1
|
||||
{SPR_BUBS, FF_TRANS30| 3, 2, {NULL}, 0, 0, S_BUBS3}, // S_BUBS2
|
||||
{SPR_BUBS, FF_TRANS30| 4, 2, {NULL}, 0, 0, S_BUBS4}, // S_BUBS3
|
||||
{SPR_BUBS, FF_TRANS30| 5, 2, {NULL}, 0, 0, S_BUBS5}, // S_BUBS4
|
||||
{SPR_BUBS, FF_TRANS30| 6, 2, {NULL}, 0, 0, S_BUBS6}, // S_BUBS5
|
||||
{SPR_BUBS, FF_TRANS30| 7, 2, {NULL}, 0, 0, S_BUBS7}, // S_BUBS6
|
||||
{SPR_BUBS, FF_TRANS30| 8, 2, {NULL}, 0, 0, S_BUBS8}, // S_BUBS7
|
||||
{SPR_BUBS, FF_TRANS30| 9, 2, {NULL}, 0, 0, S_BUBS9}, // S_BUBS8
|
||||
{SPR_BUBS, FF_TRANS30|10, 2, {NULL}, 0, 0, S_BUBS1}, // S_BUBS9
|
||||
|
||||
{SPR_BUBS, FF_TRANS30 , 2, {NULL}, 0, 0, S_BUBSB2}, // S_BUBSB1
|
||||
{SPR_BUBS, FF_TRANS30|1, 2, {NULL}, 0, 0, S_BUBSB1}, // S_BUBSB2
|
||||
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20 , 2, {NULL}, 0, 0, S_ZAPS2 }, // S_ZAPS1
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 1, 2, {NULL}, 0, 0, S_ZAPS3 }, // S_ZAPS2
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 2, 2, {NULL}, 0, 0, S_ZAPS4 }, // S_ZAPS3
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 3, 2, {NULL}, 0, 0, S_ZAPS5 }, // S_ZAPS4
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 4, 2, {NULL}, 0, 0, S_ZAPS6 }, // S_ZAPS5
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 5, 2, {NULL}, 0, 0, S_ZAPS7 }, // S_ZAPS6
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 6, 2, {NULL}, 0, 0, S_ZAPS8 }, // S_ZAPS7
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 7, 2, {NULL}, 0, 0, S_ZAPS9 }, // S_ZAPS8
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 8, 2, {NULL}, 0, 0, S_ZAPS10}, // S_ZAPS9
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 9, 2, {NULL}, 0, 0, S_ZAPS11}, // S_ZAPS10
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|10, 2, {NULL}, 0, 0, S_ZAPS12}, // S_ZAPS11
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|11, 2, {NULL}, 0, 0, S_ZAPS13}, // S_ZAPS12
|
||||
{SPR_NULL, 0, 9*2, {NULL}, 0, 0, S_ZAPS14}, // S_ZAPS13
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 9, 2, {NULL}, 0, 0, S_ZAPS15}, // S_ZAPS14
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|10, 2, {NULL}, 0, 0, S_ZAPS16}, // S_ZAPS15
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20|11, 2, {NULL}, 0, 0, S_ZAPS1 }, // S_ZAPS16
|
||||
|
||||
{SPR_NULL, 0, 12*2, {NULL}, 0, 0, S_ZAPSB2 }, // S_ZAPSB1
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 8, 2, {NULL}, 0, 0, S_ZAPSB3 }, // S_ZAPSB2
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 7, 2, {NULL}, 0, 0, S_ZAPSB4 }, // S_ZAPSB3
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 6, 2, {NULL}, 0, 0, S_ZAPSB5 }, // S_ZAPSB4
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 5, 2, {NULL}, 0, 0, S_ZAPSB6 }, // S_ZAPSB5
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 4, 2, {NULL}, 0, 0, S_ZAPSB7 }, // S_ZAPSB6
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 3, 2, {NULL}, 0, 0, S_ZAPSB8 }, // S_ZAPSB7
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 2, 2, {NULL}, 0, 0, S_ZAPSB9 }, // S_ZAPSB8
|
||||
{SPR_ZAPS, FF_FULLBRIGHT|FF_TRANS20| 1, 2, {NULL}, 0, 0, S_ZAPSB10}, // S_ZAPSB9
|
||||
{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
|
||||
|
||||
// Invincibility Sparkles
|
||||
{SPR_IVSP, FF_ANIMATE, 32, {NULL}, 31, 1, S_NULL}, // S_IVSP
|
||||
|
||||
|
@ -6429,6 +6512,87 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_FLAMEAURA_BOX
|
||||
420, // doomednum
|
||||
S_FLAMEAURA_BOX, // spawnstate
|
||||
1, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
8, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_FLAMEAURA_BOX, // painstate
|
||||
0, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_BOX_POP1, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_pop, // deathsound
|
||||
1, // speed
|
||||
16*FRACUNIT, // radius
|
||||
32*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
MT_FLAMEAURA_ICON, // damage
|
||||
sfx_None, // activesound
|
||||
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_BUBBLEWRAP_BOX
|
||||
421, // doomednum
|
||||
S_BUBBLEWRAP_BOX, // spawnstate
|
||||
1, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
8, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_BUBBLEWRAP_BOX, // painstate
|
||||
0, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_BOX_POP1, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_pop, // deathsound
|
||||
1, // speed
|
||||
16*FRACUNIT, // radius
|
||||
32*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
MT_BUBBLEWRAP_ICON, // damage
|
||||
sfx_None, // activesound
|
||||
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_THUNDERCOIN_BOX
|
||||
422, // doomednum
|
||||
S_THUNDERCOIN_BOX, // spawnstate
|
||||
1, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
8, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_THUNDERCOIN_BOX, // painstate
|
||||
0, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_BOX_POP1, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_pop, // deathsound
|
||||
1, // speed
|
||||
16*FRACUNIT, // radius
|
||||
32*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
MT_THUNDERCOIN_ICON, // damage
|
||||
sfx_None, // activesound
|
||||
MF_SOLID|MF_SHOOTABLE|MF_MONITOR, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_PITY_GOLDBOX
|
||||
431, // doomednum
|
||||
S_PITY_GOLDBOX, // spawnstate
|
||||
|
@ -6699,6 +6863,87 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_FLAMEAURA_GOLDBOX
|
||||
450, // doomednum
|
||||
S_FLAMEAURA_GOLDBOX, // spawnstate
|
||||
1, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
8, // reactiontime
|
||||
sfx_monton, // attacksound
|
||||
S_FLAMEAURA_GOLDBOX, // painstate
|
||||
0, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_GOLDBOX_OFF1, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_pop, // deathsound
|
||||
0, // speed
|
||||
16*FRACUNIT, // radius
|
||||
36*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
MT_FLAMEAURA_ICON, // damage
|
||||
sfx_None, // activesound
|
||||
MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_BUBBLEWRAP_GOLDBOX
|
||||
451, // doomednum
|
||||
S_BUBBLEWRAP_GOLDBOX, // spawnstate
|
||||
1, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
8, // reactiontime
|
||||
sfx_monton, // attacksound
|
||||
S_BUBBLEWRAP_GOLDBOX, // painstate
|
||||
0, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_GOLDBOX_OFF1, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_pop, // deathsound
|
||||
0, // speed
|
||||
16*FRACUNIT, // radius
|
||||
36*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
MT_BUBBLEWRAP_ICON, // damage
|
||||
sfx_None, // activesound
|
||||
MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_THUNDERCOIN_GOLDBOX
|
||||
452, // doomednum
|
||||
S_THUNDERCOIN_GOLDBOX, // spawnstate
|
||||
1, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
8, // reactiontime
|
||||
sfx_monton, // attacksound
|
||||
S_THUNDERCOIN_GOLDBOX, // painstate
|
||||
0, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_GOLDBOX_OFF1, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_pop, // deathsound
|
||||
0, // speed
|
||||
16*FRACUNIT, // radius
|
||||
36*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
MT_THUNDERCOIN_ICON, // damage
|
||||
sfx_None, // activesound
|
||||
MF_SOLID|MF_SHOOTABLE|MF_MONITOR|MF_GRENADEBOUNCE, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_RING_REDBOX
|
||||
414, // doomednum
|
||||
S_RING_REDBOX1, // spawnstate
|
||||
|
@ -7185,6 +7430,87 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_FLAMEAURA_ICON
|
||||
-1, // doomednum
|
||||
S_FLAMEAURA_ICON1, // spawnstate
|
||||
1, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_shield, // 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
|
||||
2*FRACUNIT, // speed
|
||||
8*FRACUNIT, // radius
|
||||
14*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
62*FRACUNIT, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_BUBBLEWRAP_ICON
|
||||
-1, // doomednum
|
||||
S_BUBBLEWRAP_ICON1, // spawnstate
|
||||
1, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_shield, // 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
|
||||
2*FRACUNIT, // speed
|
||||
8*FRACUNIT, // radius
|
||||
14*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
62*FRACUNIT, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_THUNDERCOIN_ICON
|
||||
-1, // doomednum
|
||||
S_THUNDERCOIN_ICON1, // spawnstate
|
||||
1, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_shield, // 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
|
||||
2*FRACUNIT, // speed
|
||||
8*FRACUNIT, // radius
|
||||
14*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
62*FRACUNIT, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY|MF_NOGRAVITY|MF_BOXICON, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_ROCKET
|
||||
-1, // doomednum
|
||||
S_ROCKET, // spawnstate
|
||||
|
@ -10428,7 +10754,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_GREENORB
|
||||
{ // MT_ELEMENTAL_ORB
|
||||
-1, // doomednum
|
||||
S_ELEM1, // spawnstate
|
||||
1000, // spawnhealth
|
||||
|
@ -10447,7 +10773,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
SH_ELEMENTAL, // speed
|
||||
64*FRACUNIT, // radius
|
||||
64*FRACUNIT, // height
|
||||
1, // display offset
|
||||
2, // display offset
|
||||
16, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
|
@ -10455,7 +10781,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_YELLOWORB
|
||||
{ // MT_ATTRACT_ORB
|
||||
-1, // doomednum
|
||||
S_MAGN1, // spawnstate
|
||||
1000, // spawnhealth
|
||||
|
@ -10474,7 +10800,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
SH_ATTRACT, // speed
|
||||
64*FRACUNIT, // radius
|
||||
64*FRACUNIT, // height
|
||||
1, // display offset
|
||||
2, // display offset
|
||||
16, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
|
@ -10482,7 +10808,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_BLUEORB
|
||||
{ // MT_FORCE_ORB
|
||||
-1, // doomednum
|
||||
S_FORC1, // spawnstate
|
||||
1000, // spawnhealth
|
||||
|
@ -10501,7 +10827,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
SH_FORCE, // speed
|
||||
64*FRACUNIT, // radius
|
||||
64*FRACUNIT, // height
|
||||
1, // display offset
|
||||
2, // display offset
|
||||
16, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
|
@ -10509,7 +10835,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_BLACKORB
|
||||
{ // MT_BOMB_ORB
|
||||
-1, // doomednum
|
||||
S_ARMA1, // spawnstate
|
||||
1000, // spawnhealth
|
||||
|
@ -10528,7 +10854,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
SH_BOMB, // speed
|
||||
64*FRACUNIT, // radius
|
||||
64*FRACUNIT, // height
|
||||
1, // display offset
|
||||
2, // display offset
|
||||
16, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
|
@ -10536,7 +10862,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_WHITEORB
|
||||
{ // MT_JUMP_ORB
|
||||
-1, // doomednum
|
||||
S_WIND1, // spawnstate
|
||||
1000, // spawnhealth
|
||||
|
@ -10555,7 +10881,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
SH_JUMP, // speed
|
||||
64*FRACUNIT, // radius
|
||||
64*FRACUNIT, // height
|
||||
1, // display offset
|
||||
2, // display offset
|
||||
16, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
|
@ -10563,7 +10889,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_PITYORB
|
||||
{ // MT_PITY_ORB
|
||||
-1, // doomednum
|
||||
S_PITY1, // spawnstate
|
||||
1000, // spawnhealth
|
||||
|
@ -10582,7 +10908,88 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
SH_PITY, // speed
|
||||
64*FRACUNIT, // radius
|
||||
64*FRACUNIT, // height
|
||||
1, // display offset
|
||||
2, // display offset
|
||||
16, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_FLAMEAURA_ORB
|
||||
-1, // doomednum
|
||||
S_FIRSB1, // spawnstate
|
||||
1000, // spawnhealth
|
||||
S_FIRS1, // seestate
|
||||
sfx_None, // seesound
|
||||
8, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
SKINCOLOR_NONE, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_NULL, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_None, // deathsound
|
||||
SH_FLAMEAURA, // speed
|
||||
64*FRACUNIT, // radius
|
||||
64*FRACUNIT, // height
|
||||
-2, // display offset
|
||||
16, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_BUBBLEWRAP_ORB
|
||||
-1, // doomednum
|
||||
S_BUBSB1, // spawnstate
|
||||
1000, // spawnhealth
|
||||
S_BUBS1, // seestate
|
||||
sfx_None, // seesound
|
||||
8, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
SKINCOLOR_NONE, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_NULL, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_None, // deathsound
|
||||
SH_BUBBLEWRAP, // speed
|
||||
64*FRACUNIT, // radius
|
||||
64*FRACUNIT, // height
|
||||
-2, // display offset
|
||||
16, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_THUNDERCOIN_ORB
|
||||
-1, // doomednum
|
||||
S_ZAPSB1, // spawnstate
|
||||
1000, // spawnhealth
|
||||
S_ZAPS1, // seestate
|
||||
sfx_None, // seesound
|
||||
8, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
SKINCOLOR_NONE, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_NULL, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_None, // deathsound
|
||||
SH_THUNDERCOIN, // speed
|
||||
64*FRACUNIT, // radius
|
||||
64*FRACUNIT, // height
|
||||
-2, // display offset
|
||||
16, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
|
@ -10609,7 +11016,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
8, // speed
|
||||
64*FRACUNIT, // radius
|
||||
64*FRACUNIT, // height
|
||||
2, // display offset
|
||||
3, // display offset
|
||||
16, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
|
|
110
src/info.h
110
src/info.h
|
@ -56,6 +56,9 @@ void A_BombShield(); // Obtained Bomb Shield
|
|||
void A_WaterShield(); // Obtained Water Shield
|
||||
void A_ForceShield(); // Obtained Force Shield
|
||||
void A_PityShield(); // Obtained Pity Shield. We're... sorry.
|
||||
void A_FlameShield(); // Obtained Flame Shield
|
||||
void A_BubbleShield(); // Obtained Bubble Shield
|
||||
void A_ThunderShield(); // Obtained Thunder Shield
|
||||
void A_GravityBox();
|
||||
void A_ScoreRise(); // Rise the score logo
|
||||
void A_ParticleSpawn();
|
||||
|
@ -351,6 +354,9 @@ typedef enum sprite
|
|||
SPR_TVRC, // ReCycler
|
||||
SPR_TV1K, // 1,000 points (1 K)
|
||||
SPR_TVTK, // 10,000 points (Ten K)
|
||||
SPR_TVFL, // FLame shield
|
||||
SPR_TVBB, // BuBble shield
|
||||
SPR_TVZP, // Thunder shield (ZaP)
|
||||
|
||||
// Projectiles
|
||||
SPR_MISL,
|
||||
|
@ -435,6 +441,9 @@ typedef enum sprite
|
|||
SPR_ELEM, // Elemental Shield Orb and Fire
|
||||
SPR_FORC, // Force Shield Orb
|
||||
SPR_PITY, // Pity Shield Orb
|
||||
SPR_FIRS, // Flame Shield Orb
|
||||
SPR_BUBS, // Bubble Shield Orb
|
||||
SPR_ZAPS, // Thunder Shield Orb
|
||||
SPR_IVSP, // invincibility sparkles
|
||||
SPR_SSPK, // Super Sonic Spark
|
||||
|
||||
|
@ -1814,6 +1823,9 @@ typedef enum state
|
|||
S_RECYCLER_BOX,
|
||||
S_SCORE1K_BOX,
|
||||
S_SCORE10K_BOX,
|
||||
S_FLAMEAURA_BOX,
|
||||
S_BUBBLEWRAP_BOX,
|
||||
S_THUNDERCOIN_BOX,
|
||||
|
||||
// Gold Repeat Monitor States (one per box)
|
||||
S_PITY_GOLDBOX,
|
||||
|
@ -1826,6 +1838,9 @@ typedef enum state
|
|||
S_INVULN_GOLDBOX,
|
||||
S_EGGMAN_GOLDBOX,
|
||||
S_GRAVITY_GOLDBOX,
|
||||
S_FLAMEAURA_GOLDBOX,
|
||||
S_BUBBLEWRAP_GOLDBOX,
|
||||
S_THUNDERCOIN_GOLDBOX,
|
||||
|
||||
// Team Ring Boxes (these are special)
|
||||
S_RING_REDBOX1,
|
||||
|
@ -1887,6 +1902,15 @@ typedef enum state
|
|||
S_SCORE10K_ICON1,
|
||||
S_SCORE10K_ICON2,
|
||||
|
||||
S_FLAMEAURA_ICON1,
|
||||
S_FLAMEAURA_ICON2,
|
||||
|
||||
S_BUBBLEWRAP_ICON1,
|
||||
S_BUBBLEWRAP_ICON2,
|
||||
|
||||
S_THUNDERCOIN_ICON1,
|
||||
S_THUNDERCOIN_ICON2,
|
||||
|
||||
// ---
|
||||
|
||||
S_ROCKET,
|
||||
|
@ -2317,6 +2341,68 @@ typedef enum state
|
|||
S_PITY9,
|
||||
S_PITY10,
|
||||
|
||||
S_FIRS1,
|
||||
S_FIRS2,
|
||||
S_FIRS3,
|
||||
S_FIRS4,
|
||||
S_FIRS5,
|
||||
S_FIRS6,
|
||||
S_FIRS7,
|
||||
S_FIRS8,
|
||||
S_FIRS9,
|
||||
|
||||
S_FIRSB1,
|
||||
S_FIRSB2,
|
||||
S_FIRSB3,
|
||||
S_FIRSB4,
|
||||
S_FIRSB5,
|
||||
S_FIRSB6,
|
||||
S_FIRSB7,
|
||||
S_FIRSB8,
|
||||
S_FIRSB9,
|
||||
|
||||
S_BUBS1,
|
||||
S_BUBS2,
|
||||
S_BUBS3,
|
||||
S_BUBS4,
|
||||
S_BUBS5,
|
||||
S_BUBS6,
|
||||
S_BUBS7,
|
||||
S_BUBS8,
|
||||
S_BUBS9,
|
||||
|
||||
S_BUBSB1,
|
||||
S_BUBSB2,
|
||||
|
||||
S_ZAPS1,
|
||||
S_ZAPS2,
|
||||
S_ZAPS3,
|
||||
S_ZAPS4,
|
||||
S_ZAPS5,
|
||||
S_ZAPS6,
|
||||
S_ZAPS7,
|
||||
S_ZAPS8,
|
||||
S_ZAPS9,
|
||||
S_ZAPS10,
|
||||
S_ZAPS11,
|
||||
S_ZAPS12,
|
||||
S_ZAPS13, // blank frame
|
||||
S_ZAPS14,
|
||||
S_ZAPS15,
|
||||
S_ZAPS16,
|
||||
|
||||
S_ZAPSB1, // blank frame
|
||||
S_ZAPSB2,
|
||||
S_ZAPSB3,
|
||||
S_ZAPSB4,
|
||||
S_ZAPSB5,
|
||||
S_ZAPSB6,
|
||||
S_ZAPSB7,
|
||||
S_ZAPSB8,
|
||||
S_ZAPSB9,
|
||||
S_ZAPSB10,
|
||||
S_ZAPSB11, // blank frame
|
||||
|
||||
// Invincibility Sparkles
|
||||
S_IVSP,
|
||||
|
||||
|
@ -3158,6 +3244,9 @@ typedef enum mobj_type
|
|||
MT_RECYCLER_BOX,
|
||||
MT_SCORE1K_BOX,
|
||||
MT_SCORE10K_BOX,
|
||||
MT_FLAMEAURA_BOX,
|
||||
MT_BUBBLEWRAP_BOX,
|
||||
MT_THUNDERCOIN_BOX,
|
||||
|
||||
// Monitor boxes -- repeating (big) boxes
|
||||
MT_PITY_GOLDBOX,
|
||||
|
@ -3170,6 +3259,9 @@ typedef enum mobj_type
|
|||
MT_INVULN_GOLDBOX,
|
||||
MT_EGGMAN_GOLDBOX,
|
||||
MT_GRAVITY_GOLDBOX,
|
||||
MT_FLAMEAURA_GOLDBOX,
|
||||
MT_BUBBLEWRAP_GOLDBOX,
|
||||
MT_THUNDERCOIN_GOLDBOX,
|
||||
|
||||
// Monitor boxes -- special
|
||||
MT_RING_REDBOX,
|
||||
|
@ -3192,6 +3284,9 @@ typedef enum mobj_type
|
|||
MT_RECYCLER_ICON,
|
||||
MT_SCORE1K_ICON,
|
||||
MT_SCORE10K_ICON,
|
||||
MT_FLAMEAURA_ICON,
|
||||
MT_BUBBLEWRAP_ICON,
|
||||
MT_THUNDERCOIN_ICON,
|
||||
|
||||
// Projectiles
|
||||
MT_ROCKET,
|
||||
|
@ -3344,12 +3439,15 @@ typedef enum mobj_type
|
|||
MT_EGGSTATUE2,
|
||||
|
||||
// Powerup Indicators
|
||||
MT_GREENORB, // Elemental shield mobj
|
||||
MT_YELLOWORB, // Attract shield mobj
|
||||
MT_BLUEORB, // Force shield mobj
|
||||
MT_BLACKORB, // Armageddon shield mobj
|
||||
MT_WHITEORB, // Whirlwind shield mobj
|
||||
MT_PITYORB, // Pity shield mobj
|
||||
MT_ELEMENTAL_ORB, // Elemental shield mobj
|
||||
MT_ATTRACT_ORB, // Attract shield mobj
|
||||
MT_FORCE_ORB, // Force shield mobj
|
||||
MT_BOMB_ORB, // Armageddon shield mobj
|
||||
MT_JUMP_ORB, // Whirlwind shield mobj
|
||||
MT_PITY_ORB, // Pity shield mobj
|
||||
MT_FLAMEAURA_ORB, // Flame shield mobj
|
||||
MT_BUBBLEWRAP_ORB, // Bubble shield mobj
|
||||
MT_THUNDERCOIN_ORB, // Thunder shield mobj
|
||||
MT_IVSP, // invincibility sparkles
|
||||
MT_SUPERSPARK, // Super Sonic Spark
|
||||
|
||||
|
|
|
@ -104,6 +104,9 @@ void A_BombShield(mobj_t *actor);
|
|||
void A_WaterShield(mobj_t *actor);
|
||||
void A_ForceShield(mobj_t *actor);
|
||||
void A_PityShield(mobj_t *actor);
|
||||
void A_FlameShield(mobj_t *actor);
|
||||
void A_BubbleShield(mobj_t *actor);
|
||||
void A_ThunderShield(mobj_t *actor);
|
||||
void A_GravityBox(mobj_t *actor);
|
||||
void A_ScoreRise(mobj_t *actor);
|
||||
void A_ParticleSpawn(mobj_t *actor);
|
||||
|
@ -3435,6 +3438,93 @@ void A_PityShield(mobj_t *actor)
|
|||
S_StartSound(player->mo, sfx_itemup);
|
||||
}
|
||||
|
||||
// Function: A_FlameShield
|
||||
//
|
||||
// Description: Awards the player a flame shield.
|
||||
//
|
||||
// var1 = unused
|
||||
// var2 = unused
|
||||
//
|
||||
void A_FlameShield(mobj_t *actor)
|
||||
{
|
||||
player_t *player;
|
||||
|
||||
#ifdef HAVE_BLUA
|
||||
if (LUA_CallAction("A_FlameShield", actor))
|
||||
return;
|
||||
#endif
|
||||
if (!actor->target || !actor->target->player)
|
||||
{
|
||||
CONS_Debug(DBG_GAMELOGIC, "Powerup has no target.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
player = actor->target->player;
|
||||
|
||||
if (P_SwitchShield(player, SH_FLAMEAURA))
|
||||
S_StartSound(player->mo, actor->info->seesound);
|
||||
else
|
||||
S_StartSound(player->mo, sfx_itemup);
|
||||
}
|
||||
|
||||
// Function: A_BubbleShield
|
||||
//
|
||||
// Description: Awards the player a bubble shield.
|
||||
//
|
||||
// var1 = unused
|
||||
// var2 = unused
|
||||
//
|
||||
void A_BubbleShield(mobj_t *actor)
|
||||
{
|
||||
player_t *player;
|
||||
|
||||
#ifdef HAVE_BLUA
|
||||
if (LUA_CallAction("A_BubbleShield", actor))
|
||||
return;
|
||||
#endif
|
||||
if (!actor->target || !actor->target->player)
|
||||
{
|
||||
CONS_Debug(DBG_GAMELOGIC, "Powerup has no target.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
player = actor->target->player;
|
||||
|
||||
if (P_SwitchShield(player, SH_BUBBLEWRAP))
|
||||
S_StartSound(player->mo, actor->info->seesound);
|
||||
else
|
||||
S_StartSound(player->mo, sfx_itemup);
|
||||
}
|
||||
|
||||
// Function: A_ThunderShield
|
||||
//
|
||||
// Description: Awards the player a thunder shield.
|
||||
//
|
||||
// var1 = unused
|
||||
// var2 = unused
|
||||
//
|
||||
void A_ThunderShield(mobj_t *actor)
|
||||
{
|
||||
player_t *player;
|
||||
|
||||
#ifdef HAVE_BLUA
|
||||
if (LUA_CallAction("A_ThunderShield", actor))
|
||||
return;
|
||||
#endif
|
||||
if (!actor->target || !actor->target->player)
|
||||
{
|
||||
CONS_Debug(DBG_GAMELOGIC, "Powerup has no target.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
player = actor->target->player;
|
||||
|
||||
if (P_SwitchShield(player, SH_THUNDERCOIN))
|
||||
S_StartSound(player->mo, actor->info->seesound);
|
||||
else
|
||||
S_StartSound(player->mo, sfx_itemup);
|
||||
}
|
||||
|
||||
|
||||
// Function: A_GravityBox
|
||||
//
|
||||
|
|
|
@ -1748,12 +1748,15 @@ static mobj_t *SearchMarioNode(msecnode_t *node)
|
|||
case MT_GHOST:
|
||||
case MT_OVERLAY:
|
||||
case MT_EMERALDSPAWN:
|
||||
case MT_GREENORB:
|
||||
case MT_YELLOWORB:
|
||||
case MT_BLUEORB:
|
||||
case MT_BLACKORB:
|
||||
case MT_WHITEORB:
|
||||
case MT_PITYORB:
|
||||
case MT_ELEMENTAL_ORB:
|
||||
case MT_ATTRACT_ORB:
|
||||
case MT_FORCE_ORB:
|
||||
case MT_BOMB_ORB:
|
||||
case MT_JUMP_ORB:
|
||||
case MT_PITY_ORB:
|
||||
case MT_FLAMEAURA_ORB:
|
||||
case MT_BUBBLEWRAP_ORB:
|
||||
case MT_THUNDERCOIN_ORB:
|
||||
case MT_IVSP:
|
||||
case MT_SUPERSPARK:
|
||||
case MT_RAIN:
|
||||
|
|
17
src/p_mobj.c
17
src/p_mobj.c
|
@ -6764,7 +6764,7 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
}
|
||||
else
|
||||
P_AddOverlay(mobj);
|
||||
if ((mobj->target->type == MT_GREENORB)
|
||||
if ((mobj->target->type == MT_ELEMENTAL_ORB)
|
||||
&& (mobj->target->target)
|
||||
&& (mobj->target->target->player)
|
||||
&& ((mobj->target->target->player->powers[pw_shield] & SH_NOSTACK) == SH_ELEMENTAL)
|
||||
|
@ -6775,15 +6775,18 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
mobj->tics++;
|
||||
}
|
||||
break;
|
||||
case MT_BLACKORB:
|
||||
case MT_WHITEORB:
|
||||
case MT_GREENORB:
|
||||
case MT_BLUEORB:
|
||||
case MT_PITYORB:
|
||||
case MT_BOMB_ORB:
|
||||
case MT_JUMP_ORB:
|
||||
case MT_ELEMENTAL_ORB:
|
||||
case MT_FORCE_ORB:
|
||||
case MT_PITY_ORB:
|
||||
case MT_FLAMEAURA_ORB:
|
||||
case MT_BUBBLEWRAP_ORB:
|
||||
case MT_THUNDERCOIN_ORB:
|
||||
if (!P_AddShield(mobj))
|
||||
return;
|
||||
break;
|
||||
case MT_YELLOWORB:
|
||||
case MT_ATTRACT_ORB:
|
||||
if (!P_AddShield(mobj))
|
||||
return;
|
||||
if ((mobj->target)
|
||||
|
|
21
src/p_user.c
21
src/p_user.c
|
@ -1348,23 +1348,32 @@ void P_SpawnShieldOrb(player_t *player)
|
|||
#endif
|
||||
|
||||
if (player->powers[pw_shield] & SH_FORCE)
|
||||
orbtype = MT_BLUEORB;
|
||||
orbtype = MT_FORCE_ORB;
|
||||
else switch (player->powers[pw_shield] & SH_NOSTACK)
|
||||
{
|
||||
case SH_JUMP:
|
||||
orbtype = MT_WHITEORB;
|
||||
orbtype = MT_JUMP_ORB;
|
||||
break;
|
||||
case SH_ATTRACT:
|
||||
orbtype = MT_YELLOWORB;
|
||||
orbtype = MT_ATTRACT_ORB;
|
||||
break;
|
||||
case SH_ELEMENTAL:
|
||||
orbtype = MT_GREENORB;
|
||||
orbtype = MT_ELEMENTAL_ORB;
|
||||
break;
|
||||
case SH_BOMB:
|
||||
orbtype = MT_BLACKORB;
|
||||
orbtype = MT_BOMB_ORB;
|
||||
break;
|
||||
case SH_PITY:
|
||||
orbtype = MT_PITYORB;
|
||||
orbtype = MT_PITY_ORB;
|
||||
break;
|
||||
case SH_FLAMEAURA:
|
||||
orbtype = MT_FLAMEAURA_ORB;
|
||||
break;
|
||||
case SH_BUBBLEWRAP:
|
||||
orbtype = MT_BUBBLEWRAP_ORB;
|
||||
break;
|
||||
case SH_THUNDERCOIN:
|
||||
orbtype = MT_THUNDERCOIN_ORB;
|
||||
break;
|
||||
case SH_FIREFLOWER:
|
||||
if (!(player->powers[pw_super] || (mariomode && player->powers[pw_invulnerability])))
|
||||
|
|
|
@ -99,6 +99,9 @@ static patch_t *ringshield;
|
|||
static patch_t *watershield;
|
||||
static patch_t *bombshield;
|
||||
static patch_t *pityshield;
|
||||
static patch_t *flameshield;
|
||||
static patch_t *bubbleshield;
|
||||
static patch_t *thundershield;
|
||||
static patch_t *invincibility;
|
||||
static patch_t *sneakers;
|
||||
static patch_t *gravboots;
|
||||
|
@ -288,15 +291,18 @@ void ST_LoadGraphics(void)
|
|||
scatterring = W_CachePatchName("SCATIND", PU_HUDGFX);
|
||||
grenadering = W_CachePatchName("GRENIND", PU_HUDGFX);
|
||||
railring = W_CachePatchName("RAILIND", PU_HUDGFX);
|
||||
jumpshield = W_CachePatchName("WHTVB0", PU_HUDGFX);
|
||||
forceshield = W_CachePatchName("BLTVB0", PU_HUDGFX);
|
||||
ringshield = W_CachePatchName("YLTVB0", PU_HUDGFX);
|
||||
watershield = W_CachePatchName("ELTVB0", PU_HUDGFX);
|
||||
bombshield = W_CachePatchName("BKTVB0", PU_HUDGFX);
|
||||
pityshield = W_CachePatchName("GRTVB0", PU_HUDGFX);
|
||||
invincibility = W_CachePatchName("PINVB0", PU_HUDGFX);
|
||||
sneakers = W_CachePatchName("SHTVB0", PU_HUDGFX);
|
||||
gravboots = W_CachePatchName("GBTVB0", PU_HUDGFX);
|
||||
jumpshield = W_CachePatchName("TVWWC0", PU_HUDGFX);
|
||||
forceshield = W_CachePatchName("TVFOC0", PU_HUDGFX);
|
||||
ringshield = W_CachePatchName("TVATC0", PU_HUDGFX);
|
||||
watershield = W_CachePatchName("TVELC0", PU_HUDGFX);
|
||||
bombshield = W_CachePatchName("TVARC0", PU_HUDGFX);
|
||||
pityshield = W_CachePatchName("TVPIC0", PU_HUDGFX);
|
||||
flameshield = W_CachePatchName("TVFLC0", PU_HUDGFX);
|
||||
bubbleshield = W_CachePatchName("TVBBC0", PU_HUDGFX);
|
||||
thundershield = W_CachePatchName("TVZPC0", PU_HUDGFX);
|
||||
invincibility = W_CachePatchName("TVIVC0", PU_HUDGFX);
|
||||
sneakers = W_CachePatchName("TVSSC0", PU_HUDGFX);
|
||||
gravboots = W_CachePatchName("TVGVC0", PU_HUDGFX);
|
||||
|
||||
tagico = W_CachePatchName("TAGICO", PU_HUDGFX);
|
||||
rflagico = W_CachePatchName("RFLAGICO", PU_HUDGFX);
|
||||
|
@ -805,11 +811,14 @@ static void ST_drawFirstPersonHUD(void)
|
|||
}
|
||||
else switch (player->powers[pw_shield] & SH_NOSTACK)
|
||||
{
|
||||
case SH_JUMP: p = jumpshield; break;
|
||||
case SH_ELEMENTAL: p = watershield; break;
|
||||
case SH_BOMB: p = bombshield; break;
|
||||
case SH_ATTRACT: p = ringshield; break;
|
||||
case SH_PITY: p = pityshield; break;
|
||||
case SH_JUMP: p = jumpshield; break;
|
||||
case SH_ELEMENTAL: p = watershield; break;
|
||||
case SH_BOMB: p = bombshield; break;
|
||||
case SH_ATTRACT: p = ringshield; break;
|
||||
case SH_PITY: p = pityshield; break;
|
||||
case SH_FLAMEAURA: p = flameshield; break;
|
||||
case SH_BUBBLEWRAP: p = bubbleshield; break;
|
||||
case SH_THUNDERCOIN: p = thundershield; break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue