mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-18 10:31:42 +00:00
Merge branch 'master' into lua-action-userdata
This commit is contained in:
commit
15bd6b980d
10 changed files with 594 additions and 100 deletions
|
@ -4521,12 +4521,8 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
// Individual Team Rings
|
// Individual Team Rings
|
||||||
"S_TEAMRING",
|
"S_TEAMRING",
|
||||||
|
|
||||||
// Special Stage Token
|
|
||||||
"S_EMMY",
|
|
||||||
|
|
||||||
// Special Stage Token
|
// Special Stage Token
|
||||||
"S_TOKEN",
|
"S_TOKEN",
|
||||||
"S_MOVINGTOKEN",
|
|
||||||
|
|
||||||
// CTF Flags
|
// CTF Flags
|
||||||
"S_REDFLAG",
|
"S_REDFLAG",
|
||||||
|
@ -4677,6 +4673,15 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_SPIKED1",
|
"S_SPIKED1",
|
||||||
"S_SPIKED2",
|
"S_SPIKED2",
|
||||||
|
|
||||||
|
// Wall spikes
|
||||||
|
"S_WALLSPIKE1",
|
||||||
|
"S_WALLSPIKE2",
|
||||||
|
"S_WALLSPIKE3",
|
||||||
|
"S_WALLSPIKE4",
|
||||||
|
"S_WALLSPIKE5",
|
||||||
|
"S_WALLSPIKE6",
|
||||||
|
"S_WALLSPIKEBASE",
|
||||||
|
|
||||||
// Starpost
|
// Starpost
|
||||||
"S_STARPOST_IDLE",
|
"S_STARPOST_IDLE",
|
||||||
"S_STARPOST_FLASH",
|
"S_STARPOST_FLASH",
|
||||||
|
@ -4863,6 +4868,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_DEMONFIRE5",
|
"S_DEMONFIRE5",
|
||||||
"S_DEMONFIRE6",
|
"S_DEMONFIRE6",
|
||||||
|
|
||||||
|
// GFZ flowers
|
||||||
"S_GFZFLOWERA",
|
"S_GFZFLOWERA",
|
||||||
"S_GFZFLOWERB",
|
"S_GFZFLOWERB",
|
||||||
"S_GFZFLOWERC",
|
"S_GFZFLOWERC",
|
||||||
|
@ -4870,6 +4876,18 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_BERRYBUSH",
|
"S_BERRYBUSH",
|
||||||
"S_BUSH",
|
"S_BUSH",
|
||||||
|
|
||||||
|
// Trees (both GFZ and misc)
|
||||||
|
"S_GFZTREE",
|
||||||
|
"S_GFZBERRYTREE",
|
||||||
|
"S_GFZCHERRYTREE",
|
||||||
|
"S_CHECKERTREE",
|
||||||
|
"S_CHECKERSUNSETTREE",
|
||||||
|
"S_FHZTREE", // Frozen Hillside
|
||||||
|
"S_FHZPINKTREE",
|
||||||
|
"S_POLYGONTREE",
|
||||||
|
"S_BUSHTREE",
|
||||||
|
"S_BUSHREDTREE",
|
||||||
|
|
||||||
// THZ Plant
|
// THZ Plant
|
||||||
"S_THZFLOWERA",
|
"S_THZFLOWERA",
|
||||||
"S_THZFLOWERB",
|
"S_THZFLOWERB",
|
||||||
|
@ -6122,8 +6140,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
||||||
"MT_BLUEBALL", // Blue sphere replacement for special stages
|
"MT_BLUEBALL", // Blue sphere replacement for special stages
|
||||||
"MT_REDTEAMRING", //Rings collectable by red team.
|
"MT_REDTEAMRING", //Rings collectable by red team.
|
||||||
"MT_BLUETEAMRING", //Rings collectable by blue team.
|
"MT_BLUETEAMRING", //Rings collectable by blue team.
|
||||||
"MT_EMMY", // emerald token for special stage
|
"MT_TOKEN", // Special Stage Token
|
||||||
"MT_TOKEN", // Special Stage Token (uncollectible part)
|
|
||||||
"MT_REDFLAG", // Red CTF Flag
|
"MT_REDFLAG", // Red CTF Flag
|
||||||
"MT_BLUEFLAG", // Blue CTF Flag
|
"MT_BLUEFLAG", // Blue CTF Flag
|
||||||
"MT_EMBLEM",
|
"MT_EMBLEM",
|
||||||
|
@ -6157,6 +6174,8 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
||||||
"MT_SPECIALSPIKEBALL",
|
"MT_SPECIALSPIKEBALL",
|
||||||
"MT_SPINFIRE",
|
"MT_SPINFIRE",
|
||||||
"MT_SPIKE",
|
"MT_SPIKE",
|
||||||
|
"MT_WALLSPIKE",
|
||||||
|
"MT_WALLSPIKEBASE",
|
||||||
"MT_STARPOST",
|
"MT_STARPOST",
|
||||||
"MT_BIGMINE",
|
"MT_BIGMINE",
|
||||||
"MT_BIGAIRMINE",
|
"MT_BIGAIRMINE",
|
||||||
|
@ -6247,6 +6266,17 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
||||||
"MT_GFZFLOWER3",
|
"MT_GFZFLOWER3",
|
||||||
"MT_BERRYBUSH",
|
"MT_BERRYBUSH",
|
||||||
"MT_BUSH",
|
"MT_BUSH",
|
||||||
|
// Trees (both GFZ and misc)
|
||||||
|
"MT_GFZTREE",
|
||||||
|
"MT_GFZBERRYTREE",
|
||||||
|
"MT_GFZCHERRYTREE",
|
||||||
|
"MT_CHECKERTREE",
|
||||||
|
"MT_CHECKERSUNSETTREE",
|
||||||
|
"MT_FHZTREE", // Frozen Hillside
|
||||||
|
"MT_FHZPINKTREE",
|
||||||
|
"MT_POLYGONTREE",
|
||||||
|
"MT_BUSHTREE",
|
||||||
|
"MT_BUSHREDTREE",
|
||||||
|
|
||||||
// Techno Hill Scenery
|
// Techno Hill Scenery
|
||||||
"MT_THZFLOWER1",
|
"MT_THZFLOWER1",
|
||||||
|
|
|
@ -226,8 +226,7 @@ light_t *t_lspr[NUMSPRITES] =
|
||||||
// Collectible Items
|
// Collectible Items
|
||||||
&lspr[NOLIGHT], // SPR_RING
|
&lspr[NOLIGHT], // SPR_RING
|
||||||
&lspr[NOLIGHT], // SPR_TRNG
|
&lspr[NOLIGHT], // SPR_TRNG
|
||||||
&lspr[NOLIGHT], // SPR_EMMY
|
&lspr[NOLIGHT], // SPR_TOKE
|
||||||
&lspr[BLUEBALL_L], // SPR_TOKE
|
|
||||||
&lspr[REDBALL_L], // SPR_RFLG
|
&lspr[REDBALL_L], // SPR_RFLG
|
||||||
&lspr[BLUEBALL_L], // SPR_BFLG
|
&lspr[BLUEBALL_L], // SPR_BFLG
|
||||||
&lspr[NOLIGHT], // SPR_NWNG
|
&lspr[NOLIGHT], // SPR_NWNG
|
||||||
|
@ -243,6 +242,8 @@ light_t *t_lspr[NUMSPRITES] =
|
||||||
&lspr[NOLIGHT], // SPR_SPIK
|
&lspr[NOLIGHT], // SPR_SPIK
|
||||||
&lspr[NOLIGHT], // SPR_SFLM
|
&lspr[NOLIGHT], // SPR_SFLM
|
||||||
&lspr[NOLIGHT], // SPR_USPK
|
&lspr[NOLIGHT], // SPR_USPK
|
||||||
|
&lspr[NOLIGHT], // SPR_WSPK
|
||||||
|
&lspr[NOLIGHT], // SPR_WSPB
|
||||||
&lspr[NOLIGHT], // SPR_STPT
|
&lspr[NOLIGHT], // SPR_STPT
|
||||||
&lspr[NOLIGHT], // SPR_BMNE
|
&lspr[NOLIGHT], // SPR_BMNE
|
||||||
|
|
||||||
|
@ -293,6 +294,12 @@ light_t *t_lspr[NUMSPRITES] =
|
||||||
&lspr[NOLIGHT], // SPR_FWR4
|
&lspr[NOLIGHT], // SPR_FWR4
|
||||||
&lspr[NOLIGHT], // SPR_BUS1
|
&lspr[NOLIGHT], // SPR_BUS1
|
||||||
&lspr[NOLIGHT], // SPR_BUS2
|
&lspr[NOLIGHT], // SPR_BUS2
|
||||||
|
// Trees (both GFZ and misc)
|
||||||
|
&lspr[NOLIGHT], // SPR_TRE1
|
||||||
|
&lspr[NOLIGHT], // SPR_TRE2
|
||||||
|
&lspr[NOLIGHT], // SPR_TRE3
|
||||||
|
&lspr[NOLIGHT], // SPR_TRE4
|
||||||
|
&lspr[NOLIGHT], // SPR_TRE5
|
||||||
|
|
||||||
// Techno Hill Scenery
|
// Techno Hill Scenery
|
||||||
&lspr[NOLIGHT], // SPR_THZP
|
&lspr[NOLIGHT], // SPR_THZP
|
||||||
|
@ -334,6 +341,8 @@ light_t *t_lspr[NUMSPRITES] =
|
||||||
&lspr[NOLIGHT], // SPR_XMS1
|
&lspr[NOLIGHT], // SPR_XMS1
|
||||||
&lspr[NOLIGHT], // SPR_XMS2
|
&lspr[NOLIGHT], // SPR_XMS2
|
||||||
&lspr[NOLIGHT], // SPR_XMS3
|
&lspr[NOLIGHT], // SPR_XMS3
|
||||||
|
&lspr[NOLIGHT], // SPR_XMS4
|
||||||
|
&lspr[NOLIGHT], // SPR_XMS5
|
||||||
|
|
||||||
// Botanic Serenity Scenery
|
// Botanic Serenity Scenery
|
||||||
&lspr[NOLIGHT], // SPR_BSZ1
|
&lspr[NOLIGHT], // SPR_BSZ1
|
||||||
|
@ -345,13 +354,9 @@ light_t *t_lspr[NUMSPRITES] =
|
||||||
&lspr[NOLIGHT], // SPR_BSZ7
|
&lspr[NOLIGHT], // SPR_BSZ7
|
||||||
&lspr[NOLIGHT], // SPR_BSZ8
|
&lspr[NOLIGHT], // SPR_BSZ8
|
||||||
|
|
||||||
// Stalagmites
|
// Misc Scenery
|
||||||
&lspr[NOLIGHT], // SPR_STLG
|
&lspr[NOLIGHT], // SPR_STLG
|
||||||
|
|
||||||
// Disco Ball
|
|
||||||
&lspr[NOLIGHT], // SPR_DBAL
|
&lspr[NOLIGHT], // SPR_DBAL
|
||||||
|
|
||||||
// ATZ Red Crystal
|
|
||||||
&lspr[NOLIGHT], // SPR_RCRY
|
&lspr[NOLIGHT], // SPR_RCRY
|
||||||
|
|
||||||
// Powerup Indicators
|
// Powerup Indicators
|
||||||
|
@ -396,8 +401,11 @@ light_t *t_lspr[NUMSPRITES] =
|
||||||
&lspr[NOLIGHT], // SPR_SPRB Graue
|
&lspr[NOLIGHT], // SPR_SPRB Graue
|
||||||
&lspr[NOLIGHT], // SPR_YSPR
|
&lspr[NOLIGHT], // SPR_YSPR
|
||||||
&lspr[NOLIGHT], // SPR_RSPR
|
&lspr[NOLIGHT], // SPR_RSPR
|
||||||
|
&lspr[NOLIGHT], // SPR_SSWY
|
||||||
|
&lspr[NOLIGHT], // SPR_SSWR
|
||||||
|
&lspr[NOLIGHT], // SPR_SSWB
|
||||||
|
|
||||||
// Environmentals Effects
|
// Environmental Effects
|
||||||
&lspr[NOLIGHT], // SPR_RAIN
|
&lspr[NOLIGHT], // SPR_RAIN
|
||||||
&lspr[NOLIGHT], // SPR_SNO1
|
&lspr[NOLIGHT], // SPR_SNO1
|
||||||
&lspr[NOLIGHT], // SPR_SPLH
|
&lspr[NOLIGHT], // SPR_SPLH
|
||||||
|
@ -405,6 +413,8 @@ light_t *t_lspr[NUMSPRITES] =
|
||||||
&lspr[NOLIGHT], // SPR_SMOK
|
&lspr[NOLIGHT], // SPR_SMOK
|
||||||
&lspr[NOLIGHT], // SPR_BUBL
|
&lspr[NOLIGHT], // SPR_BUBL
|
||||||
&lspr[RINGLIGHT_L], // SPR_WZAP
|
&lspr[RINGLIGHT_L], // SPR_WZAP
|
||||||
|
&lspr[NOLIGHT], // SPR_DUST
|
||||||
|
&lspr[NOLIGHT], // SPR_FPRT
|
||||||
&lspr[SUPERSPARK_L], // SPR_TFOG
|
&lspr[SUPERSPARK_L], // SPR_TFOG
|
||||||
&lspr[NIGHTSLIGHT_L], // SPR_SEED // Sonic CD flower seed
|
&lspr[NIGHTSLIGHT_L], // SPR_SEED // Sonic CD flower seed
|
||||||
&lspr[NOLIGHT], // SPR_PRTL
|
&lspr[NOLIGHT], // SPR_PRTL
|
||||||
|
|
393
src/info.c
393
src/info.c
|
@ -114,7 +114,6 @@ char sprnames[NUMSPRITES + 1][5] =
|
||||||
// Collectible Items
|
// Collectible Items
|
||||||
"RING",
|
"RING",
|
||||||
"TRNG", // Team Rings
|
"TRNG", // Team Rings
|
||||||
"EMMY", // emerald test
|
|
||||||
"TOKE", // Special Stage Token
|
"TOKE", // Special Stage Token
|
||||||
"RFLG", // Red CTF Flag
|
"RFLG", // Red CTF Flag
|
||||||
"BFLG", // Blue CTF Flag
|
"BFLG", // Blue CTF Flag
|
||||||
|
@ -131,6 +130,8 @@ char sprnames[NUMSPRITES + 1][5] =
|
||||||
"SPIK", // Spike Ball
|
"SPIK", // Spike Ball
|
||||||
"SFLM", // Spin fire
|
"SFLM", // Spin fire
|
||||||
"USPK", // Floor spike
|
"USPK", // Floor spike
|
||||||
|
"WSPK", // Wall spike
|
||||||
|
"WSPB", // Wall spike base
|
||||||
"STPT", // Starpost
|
"STPT", // Starpost
|
||||||
"BMNE", // Big floating mine
|
"BMNE", // Big floating mine
|
||||||
|
|
||||||
|
@ -181,6 +182,12 @@ char sprnames[NUMSPRITES + 1][5] =
|
||||||
"FWR4",
|
"FWR4",
|
||||||
"BUS1", // GFZ Bush w/ berries
|
"BUS1", // GFZ Bush w/ berries
|
||||||
"BUS2", // GFZ Bush w/o berries
|
"BUS2", // GFZ Bush w/o berries
|
||||||
|
// Trees (both GFZ and misc)
|
||||||
|
"TRE1", // GFZ
|
||||||
|
"TRE2", // Checker
|
||||||
|
"TRE3", // Frozen Hillside
|
||||||
|
"TRE4", // Polygon
|
||||||
|
"TRE5", // Bush tree
|
||||||
|
|
||||||
// Techno Hill Scenery
|
// Techno Hill Scenery
|
||||||
"THZP", // Techno Hill Zone Plant
|
"THZP", // Techno Hill Zone Plant
|
||||||
|
@ -1409,14 +1416,10 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_GWLR, 2, 1, {NULL}, 0, 0, S_GRAVWELLRED}, // S_GRAVWELLRED3
|
{SPR_GWLR, 2, 1, {NULL}, 0, 0, S_GRAVWELLRED}, // S_GRAVWELLRED3
|
||||||
|
|
||||||
// Individual Team Rings (now with shield attracting action! =P)
|
// Individual Team Rings (now with shield attracting action! =P)
|
||||||
{SPR_TRNG, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 23, 1, S_TEAMRING}, // S_TEAMRING1
|
{SPR_TRNG, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 23, 1, S_TEAMRING}, // S_TEAMRING
|
||||||
|
|
||||||
// Special Stage Token
|
// Special Stage Token
|
||||||
{SPR_EMMY, FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 6, 2, S_EMMY}, // S_EMMY
|
{SPR_TOKE, FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 19, 1, S_TOKEN}, // S_TOKEN
|
||||||
|
|
||||||
// Special Stage Token
|
|
||||||
{SPR_TOKE, FF_TRANS50|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_TOKEN
|
|
||||||
{SPR_TOKE, FF_TRANS50|FF_FULLBRIGHT, 1, {A_CapeChase}, 0, 0, S_MOVINGTOKEN}, // S_MOVINGTOKEN
|
|
||||||
|
|
||||||
// CTF Flags
|
// CTF Flags
|
||||||
{SPR_RFLG, 0, -1, {NULL}, 0, 0, S_NULL}, // S_REDFLAG
|
{SPR_RFLG, 0, -1, {NULL}, 0, 0, S_NULL}, // S_REDFLAG
|
||||||
|
@ -1568,6 +1571,15 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_USPK, 1,-1, {NULL}, 0, 0, S_NULL}, // S_SPIKED1 -- Busted spike particles
|
{SPR_USPK, 1,-1, {NULL}, 0, 0, S_NULL}, // S_SPIKED1 -- Busted spike particles
|
||||||
{SPR_USPK, 2,-1, {NULL}, 0, 0, S_NULL}, // S_SPIKED2
|
{SPR_USPK, 2,-1, {NULL}, 0, 0, S_NULL}, // S_SPIKED2
|
||||||
|
|
||||||
|
// Wall Spike
|
||||||
|
{SPR_WSPK, 0|FF_PAPERSPRITE,-1, {A_SpikeRetract}, 1, 0, S_WALLSPIKE2}, // S_WALLSPIKE1 -- Fully extended
|
||||||
|
{SPR_WSPK, 1|FF_PAPERSPRITE, 2, {A_Pain}, 0, 0, S_WALLSPIKE3}, // S_WALLSPIKE2
|
||||||
|
{SPR_WSPK, 2|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_WALLSPIKE4}, // S_WALLSPIKE3
|
||||||
|
{SPR_WSPK, 3|FF_PAPERSPRITE,-1, {A_SpikeRetract}, 0, 0, S_WALLSPIKE5}, // S_WALLSPIKE4 -- Fully retracted
|
||||||
|
{SPR_WSPK, 2|FF_PAPERSPRITE, 2, {A_Pain}, 0, 0, S_WALLSPIKE6}, // S_WALLSPIKE5
|
||||||
|
{SPR_WSPK, 1|FF_PAPERSPRITE, 2, {NULL}, 0, 0, S_WALLSPIKE1}, // S_WALLSPIKE6
|
||||||
|
{SPR_WSPB, 0|FF_PAPERSPRITE,-1, {NULL}, 0, 0, S_NULL}, // S_WALLSPIKEBASE -- Base
|
||||||
|
|
||||||
// Starpost
|
// Starpost
|
||||||
{SPR_STPT, 0 , -1, {NULL}, 0, 0, S_NULL}, // S_STARPOST_IDLE
|
{SPR_STPT, 0 , -1, {NULL}, 0, 0, S_NULL}, // S_STARPOST_IDLE
|
||||||
{SPR_STPT, FF_ANIMATE|17, -1, {NULL}, 5, 1, S_NULL}, // S_STARPOST_FLASH
|
{SPR_STPT, FF_ANIMATE|17, -1, {NULL}, 5, 1, S_NULL}, // S_STARPOST_FLASH
|
||||||
|
@ -1761,6 +1773,18 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_BUS1, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BERRYBUSH
|
{SPR_BUS1, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BERRYBUSH
|
||||||
{SPR_BUS2, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BUSH
|
{SPR_BUS2, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BUSH
|
||||||
|
|
||||||
|
// Trees
|
||||||
|
{SPR_TRE1, 0, -1, {NULL}, 0, 0, S_NULL}, // S_GFZTREE
|
||||||
|
{SPR_TRE1, 1, -1, {NULL}, 0, 0, S_NULL}, // S_GFZBERRYTREE
|
||||||
|
{SPR_TRE1, 2, -1, {NULL}, 0, 0, S_NULL}, // S_GFZCHERRYTREE
|
||||||
|
{SPR_TRE2, 0, -1, {NULL}, 0, 0, S_NULL}, // S_CHECKERTREE
|
||||||
|
{SPR_TRE2, 1, -1, {NULL}, 0, 0, S_NULL}, // S_CHECKERSUNSETTREE
|
||||||
|
{SPR_TRE3, 0, -1, {NULL}, 0, 0, S_NULL}, // S_FHZTREE
|
||||||
|
{SPR_TRE3, 1, -1, {NULL}, 0, 0, S_NULL}, // S_FHZPINKTREE
|
||||||
|
{SPR_TRE4, 0, -1, {NULL}, 0, 0, S_NULL}, // S_POLYGONTREE
|
||||||
|
{SPR_TRE5, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BUSHTREE
|
||||||
|
{SPR_TRE5, 1, -1, {NULL}, 0, 0, S_NULL}, // S_BUSHREDTREE
|
||||||
|
|
||||||
{SPR_THZP, FF_ANIMATE, -1, {NULL}, 7, 4, S_NULL}, // S_THZFLOWERA
|
{SPR_THZP, FF_ANIMATE, -1, {NULL}, 7, 4, S_NULL}, // S_THZFLOWERA
|
||||||
{SPR_FWR5, FF_ANIMATE, -1, {NULL}, 19, 2, S_NULL}, // S_THZFLOWERB
|
{SPR_FWR5, FF_ANIMATE, -1, {NULL}, 19, 2, S_NULL}, // S_THZFLOWERB
|
||||||
|
|
||||||
|
@ -5162,9 +5186,9 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // MT_EMMY
|
{ // MT_TOKEN
|
||||||
312, // doomednum
|
312, // doomednum
|
||||||
S_EMMY, // spawnstate
|
S_TOKEN, // spawnstate
|
||||||
1000, // spawnhealth
|
1000, // spawnhealth
|
||||||
S_NULL, // seestate
|
S_NULL, // seestate
|
||||||
sfx_None, // seesound
|
sfx_None, // seesound
|
||||||
|
@ -5189,33 +5213,6 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // MT_TOKEN
|
|
||||||
-1, // doomednum
|
|
||||||
S_TOKEN, // spawnstate
|
|
||||||
1000, // spawnhealth
|
|
||||||
S_MOVINGTOKEN, // 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
|
|
||||||
8, // speed
|
|
||||||
8*FRACUNIT, // radius
|
|
||||||
16*FRACUNIT, // height
|
|
||||||
0, // display offset
|
|
||||||
100, // mass
|
|
||||||
0, // damage
|
|
||||||
sfx_None, // activesound
|
|
||||||
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOCLIP, // flags
|
|
||||||
S_NULL // raisestate
|
|
||||||
},
|
|
||||||
|
|
||||||
{ // MT_REDFLAG
|
{ // MT_REDFLAG
|
||||||
310, // doomednum
|
310, // doomednum
|
||||||
S_REDFLAG, // spawnstate
|
S_REDFLAG, // spawnstate
|
||||||
|
@ -5993,6 +5990,60 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ // MT_WALLSPIKE
|
||||||
|
522, // doomednum
|
||||||
|
S_WALLSPIKE1, // spawnstate
|
||||||
|
1000, // spawnhealth
|
||||||
|
S_NULL, // seestate
|
||||||
|
sfx_None, // seesound
|
||||||
|
8, // reactiontime
|
||||||
|
sfx_None, // attacksound
|
||||||
|
S_NULL, // painstate
|
||||||
|
0, // painchance
|
||||||
|
sfx_s3k64, // painsound
|
||||||
|
S_NULL, // meleestate
|
||||||
|
S_NULL, // missilestate
|
||||||
|
S_NULL, // deathstate
|
||||||
|
S_NULL, // xdeathstate
|
||||||
|
sfx_None, // deathsound
|
||||||
|
2*TICRATE, // speed
|
||||||
|
32*FRACUNIT, // radius
|
||||||
|
14*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
4, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_SCENERY|MF_NOCLIPHEIGHT|MF_PAPERCOLLISION, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
|
{ // MT_WALLSPIKEBASE
|
||||||
|
-1, // doomednum
|
||||||
|
S_WALLSPIKEBASE, // spawnstate
|
||||||
|
1000, // 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
|
||||||
|
7*FRACUNIT, // radius
|
||||||
|
14*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
4, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPTHING, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
{ // MT_STARPOST
|
{ // MT_STARPOST
|
||||||
502, // doomednum
|
502, // doomednum
|
||||||
S_STARPOST_IDLE, // spawnstate
|
S_STARPOST_IDLE, // spawnstate
|
||||||
|
@ -8045,6 +8096,276 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ // MT_GFZTREE
|
||||||
|
806, // doomednum
|
||||||
|
S_GFZTREE, // spawnstate
|
||||||
|
1000, // 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
|
||||||
|
20*FRACUNIT, // radius
|
||||||
|
128*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_SOLID|MF_SCENERY, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
|
{ // MT_GFZBERRYTREE
|
||||||
|
807, // doomednum
|
||||||
|
S_GFZBERRYTREE, // spawnstate
|
||||||
|
1000, // 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
|
||||||
|
20*FRACUNIT, // radius
|
||||||
|
128*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_SOLID|MF_SCENERY, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
|
{ // MT_GFZCHERRYTREE
|
||||||
|
808, // doomednum
|
||||||
|
S_GFZCHERRYTREE, // spawnstate
|
||||||
|
1000, // 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
|
||||||
|
20*FRACUNIT, // radius
|
||||||
|
128*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_SOLID|MF_SCENERY, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
|
{ // MT_CHECKERTREE
|
||||||
|
810, // doomednum
|
||||||
|
S_CHECKERTREE, // spawnstate
|
||||||
|
1000, // 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
|
||||||
|
20*FRACUNIT, // radius
|
||||||
|
200*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_NOTHINK|MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
|
{ // MT_CHECKERSUNSETTREE
|
||||||
|
811, // doomednum
|
||||||
|
S_CHECKERSUNSETTREE, // spawnstate
|
||||||
|
1000, // 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
|
||||||
|
20*FRACUNIT, // radius
|
||||||
|
200*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_NOTHINK|MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
|
{ // MT_FHZTREE
|
||||||
|
812, // doomednum
|
||||||
|
S_FHZTREE, // spawnstate
|
||||||
|
1000, // 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
|
||||||
|
20*FRACUNIT, // radius
|
||||||
|
200*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_NOTHINK|MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
|
{ // MT_FHZPINKTREE
|
||||||
|
813, // doomednum
|
||||||
|
S_FHZPINKTREE, // spawnstate
|
||||||
|
1000, // 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
|
||||||
|
20*FRACUNIT, // radius
|
||||||
|
200*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_NOTHINK|MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
|
{ // MT_POLYGONTREE
|
||||||
|
814, // doomednum
|
||||||
|
S_POLYGONTREE, // spawnstate
|
||||||
|
1000, // 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
|
||||||
|
20*FRACUNIT, // radius
|
||||||
|
200*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_NOTHINK|MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
|
{ // MT_BUSHTREE
|
||||||
|
815, // doomednum
|
||||||
|
S_BUSHTREE, // spawnstate
|
||||||
|
1000, // 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
|
||||||
|
20*FRACUNIT, // radius
|
||||||
|
200*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_NOTHINK|MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
|
{ // MT_BUSHREDTREE
|
||||||
|
816, // doomednum
|
||||||
|
S_BUSHREDTREE, // spawnstate
|
||||||
|
1000, // 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
|
||||||
|
20*FRACUNIT, // radius
|
||||||
|
200*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_NOTHINK|MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
{ // MT_THZFLOWER1
|
{ // MT_THZFLOWER1
|
||||||
900, // doomednum
|
900, // doomednum
|
||||||
S_THZFLOWERA, // spawnstate
|
S_THZFLOWERA, // spawnstate
|
||||||
|
|
51
src/info.h
51
src/info.h
|
@ -320,7 +320,6 @@ typedef enum sprite
|
||||||
// Collectible Items
|
// Collectible Items
|
||||||
SPR_RING,
|
SPR_RING,
|
||||||
SPR_TRNG, // Team Rings
|
SPR_TRNG, // Team Rings
|
||||||
SPR_EMMY, // emerald test
|
|
||||||
SPR_TOKE, // Special Stage Token
|
SPR_TOKE, // Special Stage Token
|
||||||
SPR_RFLG, // Red CTF Flag
|
SPR_RFLG, // Red CTF Flag
|
||||||
SPR_BFLG, // Blue CTF Flag
|
SPR_BFLG, // Blue CTF Flag
|
||||||
|
@ -337,6 +336,8 @@ typedef enum sprite
|
||||||
SPR_SPIK, // Spike Ball
|
SPR_SPIK, // Spike Ball
|
||||||
SPR_SFLM, // Spin fire
|
SPR_SFLM, // Spin fire
|
||||||
SPR_USPK, // Floor spike
|
SPR_USPK, // Floor spike
|
||||||
|
SPR_WSPK, // Wall spike
|
||||||
|
SPR_WSPB, // Wall spike base
|
||||||
SPR_STPT, // Starpost
|
SPR_STPT, // Starpost
|
||||||
SPR_BMNE, // Big floating mine
|
SPR_BMNE, // Big floating mine
|
||||||
|
|
||||||
|
@ -387,6 +388,12 @@ typedef enum sprite
|
||||||
SPR_FWR4,
|
SPR_FWR4,
|
||||||
SPR_BUS1, // GFZ Bush w/ berries
|
SPR_BUS1, // GFZ Bush w/ berries
|
||||||
SPR_BUS2, // GFZ Bush w/o berries
|
SPR_BUS2, // GFZ Bush w/o berries
|
||||||
|
// Trees (both GFZ and misc)
|
||||||
|
SPR_TRE1, // GFZ
|
||||||
|
SPR_TRE2, // Checker
|
||||||
|
SPR_TRE3, // Frozen Hillside
|
||||||
|
SPR_TRE4, // Polygon
|
||||||
|
SPR_TRE5, // Bush tree
|
||||||
|
|
||||||
// Techno Hill Scenery
|
// Techno Hill Scenery
|
||||||
SPR_THZP, // THZ1 Flower
|
SPR_THZP, // THZ1 Flower
|
||||||
|
@ -1617,12 +1624,8 @@ typedef enum state
|
||||||
// Individual Team Rings
|
// Individual Team Rings
|
||||||
S_TEAMRING,
|
S_TEAMRING,
|
||||||
|
|
||||||
// Special Stage Token
|
|
||||||
S_EMMY,
|
|
||||||
|
|
||||||
// Special Stage Token
|
// Special Stage Token
|
||||||
S_TOKEN,
|
S_TOKEN,
|
||||||
S_MOVINGTOKEN,
|
|
||||||
|
|
||||||
// CTF Flags
|
// CTF Flags
|
||||||
S_REDFLAG,
|
S_REDFLAG,
|
||||||
|
@ -1773,6 +1776,15 @@ typedef enum state
|
||||||
S_SPIKED1,
|
S_SPIKED1,
|
||||||
S_SPIKED2,
|
S_SPIKED2,
|
||||||
|
|
||||||
|
// Wall spikes
|
||||||
|
S_WALLSPIKE1,
|
||||||
|
S_WALLSPIKE2,
|
||||||
|
S_WALLSPIKE3,
|
||||||
|
S_WALLSPIKE4,
|
||||||
|
S_WALLSPIKE5,
|
||||||
|
S_WALLSPIKE6,
|
||||||
|
S_WALLSPIKEBASE,
|
||||||
|
|
||||||
// Starpost
|
// Starpost
|
||||||
S_STARPOST_IDLE,
|
S_STARPOST_IDLE,
|
||||||
S_STARPOST_FLASH,
|
S_STARPOST_FLASH,
|
||||||
|
@ -1961,6 +1973,7 @@ typedef enum state
|
||||||
S_DEMONFIRE5,
|
S_DEMONFIRE5,
|
||||||
S_DEMONFIRE6,
|
S_DEMONFIRE6,
|
||||||
|
|
||||||
|
// GFZ flowers
|
||||||
S_GFZFLOWERA,
|
S_GFZFLOWERA,
|
||||||
S_GFZFLOWERB,
|
S_GFZFLOWERB,
|
||||||
S_GFZFLOWERC,
|
S_GFZFLOWERC,
|
||||||
|
@ -1968,6 +1981,18 @@ typedef enum state
|
||||||
S_BERRYBUSH,
|
S_BERRYBUSH,
|
||||||
S_BUSH,
|
S_BUSH,
|
||||||
|
|
||||||
|
// Trees (both GFZ and misc)
|
||||||
|
S_GFZTREE,
|
||||||
|
S_GFZBERRYTREE,
|
||||||
|
S_GFZCHERRYTREE,
|
||||||
|
S_CHECKERTREE,
|
||||||
|
S_CHECKERSUNSETTREE,
|
||||||
|
S_FHZTREE, // Frozen Hillside
|
||||||
|
S_FHZPINKTREE,
|
||||||
|
S_POLYGONTREE,
|
||||||
|
S_BUSHTREE,
|
||||||
|
S_BUSHREDTREE,
|
||||||
|
|
||||||
// THZ Plant
|
// THZ Plant
|
||||||
S_THZFLOWERA,
|
S_THZFLOWERA,
|
||||||
S_THZFLOWERB,
|
S_THZFLOWERB,
|
||||||
|
@ -3239,8 +3264,7 @@ typedef enum mobj_type
|
||||||
MT_BLUEBALL, // Blue sphere replacement for special stages
|
MT_BLUEBALL, // Blue sphere replacement for special stages
|
||||||
MT_REDTEAMRING, //Rings collectable by red team.
|
MT_REDTEAMRING, //Rings collectable by red team.
|
||||||
MT_BLUETEAMRING, //Rings collectable by blue team.
|
MT_BLUETEAMRING, //Rings collectable by blue team.
|
||||||
MT_EMMY, // emerald token for special stage
|
MT_TOKEN, // Special Stage token for special stage
|
||||||
MT_TOKEN, // Special Stage Token (uncollectible part)
|
|
||||||
MT_REDFLAG, // Red CTF Flag
|
MT_REDFLAG, // Red CTF Flag
|
||||||
MT_BLUEFLAG, // Blue CTF Flag
|
MT_BLUEFLAG, // Blue CTF Flag
|
||||||
MT_EMBLEM,
|
MT_EMBLEM,
|
||||||
|
@ -3274,6 +3298,8 @@ typedef enum mobj_type
|
||||||
MT_SPECIALSPIKEBALL,
|
MT_SPECIALSPIKEBALL,
|
||||||
MT_SPINFIRE,
|
MT_SPINFIRE,
|
||||||
MT_SPIKE,
|
MT_SPIKE,
|
||||||
|
MT_WALLSPIKE,
|
||||||
|
MT_WALLSPIKEBASE,
|
||||||
MT_STARPOST,
|
MT_STARPOST,
|
||||||
MT_BIGMINE,
|
MT_BIGMINE,
|
||||||
MT_BIGAIRMINE,
|
MT_BIGAIRMINE,
|
||||||
|
@ -3364,6 +3390,17 @@ typedef enum mobj_type
|
||||||
MT_GFZFLOWER3,
|
MT_GFZFLOWER3,
|
||||||
MT_BERRYBUSH,
|
MT_BERRYBUSH,
|
||||||
MT_BUSH,
|
MT_BUSH,
|
||||||
|
// Trees (both GFZ and misc)
|
||||||
|
MT_GFZTREE,
|
||||||
|
MT_GFZBERRYTREE,
|
||||||
|
MT_GFZCHERRYTREE,
|
||||||
|
MT_CHECKERTREE,
|
||||||
|
MT_CHECKERSUNSETTREE,
|
||||||
|
MT_FHZTREE, // Frozen Hillside
|
||||||
|
MT_FHZPINKTREE,
|
||||||
|
MT_POLYGONTREE,
|
||||||
|
MT_BUSHTREE,
|
||||||
|
MT_BUSHREDTREE,
|
||||||
|
|
||||||
// Techno Hill Scenery
|
// Techno Hill Scenery
|
||||||
MT_THZFLOWER1,
|
MT_THZFLOWER1,
|
||||||
|
|
|
@ -2061,6 +2061,33 @@ void T_NoEnemiesSector(levelspecthink_t *nobaddies)
|
||||||
P_RemoveThinker(&nobaddies->thinker);
|
P_RemoveThinker(&nobaddies->thinker);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// P_IsObjectOnRealGround
|
||||||
|
//
|
||||||
|
// Helper function for T_EachTimeThinker
|
||||||
|
// Like P_IsObjectOnGroundIn, except ONLY THE REAL GROUND IS CONSIDERED, NOT FOFS
|
||||||
|
// I'll consider whether to make this a more globally accessible function or whatever in future
|
||||||
|
// -- Monster Iestyn
|
||||||
|
//
|
||||||
|
static boolean P_IsObjectOnRealGround(mobj_t *mo, sector_t *sec)
|
||||||
|
{
|
||||||
|
// Is the object in reverse gravity?
|
||||||
|
if (mo->eflags & MFE_VERTICALFLIP)
|
||||||
|
{
|
||||||
|
// Detect if the player is on the ceiling.
|
||||||
|
if (mo->z+mo->height >= P_GetSpecialTopZ(mo, sec, sec))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// Nope!
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Detect if the player is on the floor.
|
||||||
|
if (mo->z <= P_GetSpecialBottomZ(mo, sec, sec))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// P_HavePlayersEnteredArea
|
// P_HavePlayersEnteredArea
|
||||||
//
|
//
|
||||||
|
@ -2264,7 +2291,7 @@ void T_EachTimeThinker(levelspecthink_t *eachtime)
|
||||||
|| P_PlayerTouchingSectorSpecial(&players[i], 2, (GETSECSPECIAL(sec->special, 2))) == sec))
|
|| P_PlayerTouchingSectorSpecial(&players[i], 2, (GETSECSPECIAL(sec->special, 2))) == sec))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (floortouch == true && P_IsObjectOnGroundIn(players[i].mo, sec))
|
if (floortouch == true && P_IsObjectOnRealGround(players[i].mo, sec))
|
||||||
{
|
{
|
||||||
if (i & 1)
|
if (i & 1)
|
||||||
eachtime->var2s[i/2] |= 1;
|
eachtime->var2s[i/2] |= 1;
|
||||||
|
@ -3283,14 +3310,6 @@ INT32 EV_MarioBlock(ffloor_t *rover, sector_t *sector, mobj_t *puncher)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (thing->type == MT_EMMY && thing->spawnpoint && (thing->spawnpoint->options & MTF_OBJECTSPECIAL))
|
|
||||||
{
|
|
||||||
mobj_t *tokenobj = P_SpawnMobj(sector->soundorg.x, sector->soundorg.y, topheight, MT_TOKEN);
|
|
||||||
P_SetTarget(&thing->tracer, tokenobj);
|
|
||||||
P_SetTarget(&tokenobj->target, thing);
|
|
||||||
P_SetMobjState(tokenobj, mobjinfo[MT_TOKEN].seestate);
|
|
||||||
}
|
|
||||||
|
|
||||||
// "Powerup rise" sound
|
// "Powerup rise" sound
|
||||||
S_StartSound(puncher, sfx_mario9); // Puncher is "close enough"
|
S_StartSound(puncher, sfx_mario9); // Puncher is "close enough"
|
||||||
}
|
}
|
||||||
|
|
|
@ -570,7 +570,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
|
||||||
// Gameplay related collectibles //
|
// Gameplay related collectibles //
|
||||||
// ***************************** //
|
// ***************************** //
|
||||||
// Special Stage Token
|
// Special Stage Token
|
||||||
case MT_EMMY:
|
case MT_TOKEN:
|
||||||
if (player->bot)
|
if (player->bot)
|
||||||
return;
|
return;
|
||||||
tokenlist += special->health;
|
tokenlist += special->health;
|
||||||
|
@ -589,9 +589,6 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
token++;
|
token++;
|
||||||
|
|
||||||
if (special->tracer) // token BG
|
|
||||||
P_RemoveMobj(special->tracer);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Emerald Hunt
|
// Emerald Hunt
|
||||||
|
|
39
src/p_map.c
39
src/p_map.c
|
@ -959,6 +959,45 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
||||||
P_DamageMobj(tmthing, thing, thing, 1, 0);
|
P_DamageMobj(tmthing, thing, thing, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tmthing->type == MT_WALLSPIKE && tmthing->flags & MF_SOLID && thing->player) // wall spike impales player
|
||||||
|
{
|
||||||
|
fixed_t bottomz, topz;
|
||||||
|
bottomz = tmthing->z;
|
||||||
|
topz = tmthing->z + tmthing->height;
|
||||||
|
if (tmthing->eflags & MFE_VERTICALFLIP)
|
||||||
|
bottomz -= FixedMul(FRACUNIT, tmthing->scale);
|
||||||
|
else
|
||||||
|
topz += FixedMul(FRACUNIT, tmthing->scale);
|
||||||
|
|
||||||
|
if (thing->z + thing->height > bottomz // above bottom
|
||||||
|
&& thing->z < topz) // below top
|
||||||
|
{ // don't check angle, the player was clearly in the way in this case
|
||||||
|
P_DamageMobj(thing, tmthing, tmthing, 1, DMG_SPIKE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (thing->type == MT_WALLSPIKE && thing->flags & MF_SOLID && tmthing->player)
|
||||||
|
{
|
||||||
|
fixed_t bottomz, topz;
|
||||||
|
bottomz = thing->z;
|
||||||
|
topz = thing->z + thing->height;
|
||||||
|
if (thing->eflags & MFE_VERTICALFLIP)
|
||||||
|
bottomz -= FixedMul(FRACUNIT, thing->scale);
|
||||||
|
else
|
||||||
|
topz += FixedMul(FRACUNIT, thing->scale);
|
||||||
|
|
||||||
|
if (tmthing->z + tmthing->height > bottomz // above bottom
|
||||||
|
&& tmthing->z < topz // below top
|
||||||
|
&& !P_MobjWasRemoved(thing->tracer)) // this probably wouldn't work if we didn't have a tracer
|
||||||
|
{ // use base as a reference point to determine what angle you touched the spike at
|
||||||
|
angle_t touchangle = R_PointToAngle2(thing->tracer->x, thing->tracer->y, tmthing->x, tmthing->y);
|
||||||
|
angle_t diffangle = thing->angle - touchangle;
|
||||||
|
if (diffangle > ANGLE_180)
|
||||||
|
diffangle = InvAngle(diffangle);
|
||||||
|
if (diffangle <= ANGLE_22h) // if you touched it at this close an angle, you get poked!
|
||||||
|
P_DamageMobj(tmthing, thing, thing, 1, DMG_SPIKE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (thing->flags & MF_PUSHABLE)
|
if (thing->flags & MF_PUSHABLE)
|
||||||
{
|
{
|
||||||
if (tmthing->type == MT_FAN || tmthing->type == MT_STEAM)
|
if (tmthing->type == MT_FAN || tmthing->type == MT_STEAM)
|
||||||
|
|
85
src/p_mobj.c
85
src/p_mobj.c
|
@ -7373,6 +7373,23 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
}
|
}
|
||||||
else switch (mobj->type)
|
else switch (mobj->type)
|
||||||
{
|
{
|
||||||
|
case MT_WALLSPIKEBASE:
|
||||||
|
if (!mobj->target) {
|
||||||
|
P_RemoveMobj(mobj);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mobj->frame = (mobj->frame & ~FF_FRAMEMASK)|(mobj->target->frame & FF_FRAMEMASK);
|
||||||
|
if (mobj->angle != mobj->target->angle + ANGLE_90) // reposition if not the correct angle
|
||||||
|
{
|
||||||
|
mobj_t *target = mobj->target; // shortcut
|
||||||
|
const fixed_t baseradius = target->radius/2 - FixedMul(FRACUNIT, target->scale);
|
||||||
|
P_UnsetThingPosition(mobj);
|
||||||
|
mobj->x = target->x - P_ReturnThrustX(target, target->angle, baseradius);
|
||||||
|
mobj->y = target->y - P_ReturnThrustY(target, target->angle, baseradius);
|
||||||
|
P_SetThingPosition(mobj);
|
||||||
|
mobj->angle = target->angle + ANGLE_90;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case MT_FALLINGROCK:
|
case MT_FALLINGROCK:
|
||||||
// Despawn rocks here in case zmovement code can't do so (blame slopes)
|
// Despawn rocks here in case zmovement code can't do so (blame slopes)
|
||||||
if (!mobj->momx && !mobj->momy && !mobj->momz
|
if (!mobj->momx && !mobj->momy && !mobj->momz
|
||||||
|
@ -8066,6 +8083,10 @@ for (i = ((mobj->flags2 & MF2_STRONGBOX) ? strongboxamt : weakboxamt); i; --i) s
|
||||||
if (mobj->spawnpoint)
|
if (mobj->spawnpoint)
|
||||||
mobj->fuse += mobj->spawnpoint->angle;
|
mobj->fuse += mobj->spawnpoint->angle;
|
||||||
break;
|
break;
|
||||||
|
case MT_WALLSPIKE:
|
||||||
|
P_SetMobjState(mobj, mobj->state->nextstate);
|
||||||
|
mobj->fuse = mobj->info->speed;
|
||||||
|
break;
|
||||||
case MT_NIGHTSCORE:
|
case MT_NIGHTSCORE:
|
||||||
P_RemoveMobj(mobj);
|
P_RemoveMobj(mobj);
|
||||||
return;
|
return;
|
||||||
|
@ -8457,9 +8478,13 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
|
||||||
// Collision helper can be stood on but not pushed
|
// Collision helper can be stood on but not pushed
|
||||||
mobj->flags2 |= MF2_STANDONME;
|
mobj->flags2 |= MF2_STANDONME;
|
||||||
break;
|
break;
|
||||||
|
case MT_WALLSPIKE:
|
||||||
case MT_SPIKE:
|
case MT_SPIKE:
|
||||||
mobj->flags2 |= MF2_STANDONME;
|
mobj->flags2 |= MF2_STANDONME;
|
||||||
break;
|
break;
|
||||||
|
case MT_GFZTREE:
|
||||||
|
case MT_GFZBERRYTREE:
|
||||||
|
case MT_GFZCHERRYTREE:
|
||||||
case MT_LAMPPOST1:
|
case MT_LAMPPOST1:
|
||||||
case MT_LAMPPOST2:
|
case MT_LAMPPOST2:
|
||||||
mobj->flags2 |= MF2_STANDONME;
|
mobj->flags2 |= MF2_STANDONME;
|
||||||
|
@ -9478,7 +9503,7 @@ void P_SpawnMapThing(mapthing_t *mthing)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (metalrecording) // Metal Sonic can't use these things.
|
if (metalrecording) // Metal Sonic can't use these things.
|
||||||
if (mobjinfo[i].flags & (MF_ENEMY|MF_BOSS) || i == MT_EMMY || i == MT_STARPOST)
|
if (mobjinfo[i].flags & (MF_ENEMY|MF_BOSS) || i == MT_TOKEN || i == MT_STARPOST)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (i >= MT_EMERALD1 && i <= MT_EMERALD7) // Pickupable Emeralds
|
if (i >= MT_EMERALD1 && i <= MT_EMERALD7) // Pickupable Emeralds
|
||||||
|
@ -9592,7 +9617,7 @@ void P_SpawnMapThing(mapthing_t *mthing)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Emerald Tokens -->> Score Tokens
|
// Emerald Tokens -->> Score Tokens
|
||||||
else if (i == MT_EMMY)
|
else if (i == MT_TOKEN)
|
||||||
return; /// \todo
|
return; /// \todo
|
||||||
|
|
||||||
// 1UPs -->> Score TVs
|
// 1UPs -->> Score TVs
|
||||||
|
@ -9620,7 +9645,7 @@ void P_SpawnMapThing(mapthing_t *mthing)
|
||||||
// They're likely facets of the level's design and therefore required to progress.
|
// They're likely facets of the level's design and therefore required to progress.
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i == MT_EMMY && (gametype != GT_COOP || ultimatemode || tokenbits == 30 || tokenlist & (1 << tokenbits++)))
|
if (i == MT_TOKEN && (gametype != GT_COOP || ultimatemode || tokenbits == 30 || tokenlist & (1 << tokenbits++)))
|
||||||
return; // you already got this token, or there are too many, or the gametype's not right
|
return; // you already got this token, or there are too many, or the gametype's not right
|
||||||
|
|
||||||
// Objectplace landing point
|
// Objectplace landing point
|
||||||
|
@ -9639,7 +9664,7 @@ void P_SpawnMapThing(mapthing_t *mthing)
|
||||||
ss->sector->floorheight) + ((mthing->options >> ZSHIFT) << FRACBITS);
|
ss->sector->floorheight) + ((mthing->options >> ZSHIFT) << FRACBITS);
|
||||||
else if (i == MT_AXIS || i == MT_AXISTRANSFER || i == MT_AXISTRANSFERLINE)
|
else if (i == MT_AXIS || i == MT_AXISTRANSFER || i == MT_AXISTRANSFERLINE)
|
||||||
z = ONFLOORZ;
|
z = ONFLOORZ;
|
||||||
else if (i == MT_SPECIALSPIKEBALL || P_WeaponOrPanel(i) || i == MT_EMERALDSPAWN || i == MT_EMMY)
|
else if (i == MT_SPECIALSPIKEBALL || P_WeaponOrPanel(i) || i == MT_EMERALDSPAWN || i == MT_TOKEN)
|
||||||
{
|
{
|
||||||
if (mthing->options & MTF_OBJECTFLIP)
|
if (mthing->options & MTF_OBJECTFLIP)
|
||||||
{
|
{
|
||||||
|
@ -10038,28 +10063,10 @@ ML_NOCLIMB : Direction not controllable
|
||||||
mobj->radius = (mthing->angle & 16383)*FRACUNIT;
|
mobj->radius = (mthing->angle & 16383)*FRACUNIT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (i == MT_EMMY)
|
else if (i == MT_TOKEN)
|
||||||
{
|
{
|
||||||
if (mthing->options & MTF_OBJECTSPECIAL) // Mario Block version
|
if (mthing->options & MTF_OBJECTSPECIAL) // Mario Block version
|
||||||
mobj->flags &= ~(MF_NOGRAVITY|MF_NOCLIPHEIGHT);
|
mobj->flags &= ~(MF_NOGRAVITY|MF_NOCLIPHEIGHT);
|
||||||
else
|
|
||||||
{
|
|
||||||
fixed_t zheight = mobj->z;
|
|
||||||
mobj_t *tokenobj;
|
|
||||||
|
|
||||||
if (mthing->options & MTF_OBJECTFLIP)
|
|
||||||
zheight += mobj->height-FixedMul(mobjinfo[MT_TOKEN].height, mobj->scale); // align with emmy properly!
|
|
||||||
|
|
||||||
tokenobj = P_SpawnMobj(x, y, zheight, MT_TOKEN);
|
|
||||||
P_SetTarget(&mobj->tracer, tokenobj);
|
|
||||||
tokenobj->destscale = mobj->scale;
|
|
||||||
P_SetScale(tokenobj, mobj->scale);
|
|
||||||
if (mthing->options & MTF_OBJECTFLIP) // flip token to match emmy
|
|
||||||
{
|
|
||||||
tokenobj->eflags |= MFE_VERTICALFLIP;
|
|
||||||
tokenobj->flags2 |= MF2_OBJECTFLIP;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// We advanced tokenbits earlier due to the return check.
|
// We advanced tokenbits earlier due to the return check.
|
||||||
// Subtract 1 here for the correct value.
|
// Subtract 1 here for the correct value.
|
||||||
|
@ -10119,6 +10126,38 @@ ML_NOCLIMB : Direction not controllable
|
||||||
P_SetThingPosition(mobj);
|
P_SetThingPosition(mobj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (i == MT_WALLSPIKE)
|
||||||
|
{
|
||||||
|
// Pop up spikes!
|
||||||
|
if (mthing->options & MTF_OBJECTSPECIAL)
|
||||||
|
{
|
||||||
|
mobj->flags &= ~MF_SCENERY;
|
||||||
|
mobj->fuse = mobj->info->speed;
|
||||||
|
}
|
||||||
|
// Use per-thing collision for spikes if the deaf flag is checked.
|
||||||
|
if (mthing->options & MTF_AMBUSH && !metalrecording)
|
||||||
|
{
|
||||||
|
P_UnsetThingPosition(mobj);
|
||||||
|
mobj->flags &= ~(MF_NOBLOCKMAP|MF_NOCLIPHEIGHT);
|
||||||
|
mobj->flags |= MF_SOLID;
|
||||||
|
P_SetThingPosition(mobj);
|
||||||
|
}
|
||||||
|
|
||||||
|
// spawn base
|
||||||
|
{
|
||||||
|
const angle_t mobjangle = FixedAngle(mthing->angle*FRACUNIT); // the mobj's own angle hasn't been set quite yet so...
|
||||||
|
const fixed_t baseradius = mobj->radius/2 - FixedMul(FRACUNIT, mobj->scale);
|
||||||
|
mobj_t *base = P_SpawnMobj(
|
||||||
|
mobj->x - P_ReturnThrustX(mobj, mobjangle, baseradius),
|
||||||
|
mobj->y - P_ReturnThrustY(mobj, mobjangle, baseradius),
|
||||||
|
mobj->z, MT_WALLSPIKEBASE);
|
||||||
|
base->angle = mobjangle + ANGLE_90;
|
||||||
|
base->destscale = mobj->destscale;
|
||||||
|
P_SetScale(base, mobj->scale);
|
||||||
|
P_SetTarget(&base->target, mobj);
|
||||||
|
P_SetTarget(&mobj->tracer, base);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//count 10 ring boxes into the number of rings equation too.
|
//count 10 ring boxes into the number of rings equation too.
|
||||||
if (i == MT_RING_BOX)
|
if (i == MT_RING_BOX)
|
||||||
|
|
|
@ -1749,7 +1749,7 @@ boolean P_RunTriggerLinedef(line_t *triggerline, mobj_t *actor, sector_t *caller
|
||||||
case 305: // continuous
|
case 305: // continuous
|
||||||
case 306: // each time
|
case 306: // each time
|
||||||
case 307: // once
|
case 307: // once
|
||||||
if (!(actor && actor->player && actor->player->charability != dist/10))
|
if (!(actor && actor->player && actor->player->charability == dist/10))
|
||||||
return false;
|
return false;
|
||||||
break;
|
break;
|
||||||
case 309: // continuous
|
case 309: // continuous
|
||||||
|
|
14
src/p_user.c
14
src/p_user.c
|
@ -1267,11 +1267,12 @@ boolean P_IsObjectOnGroundIn(mobj_t *mo, sector_t *sec)
|
||||||
if (!(rover->flags & FF_EXISTS))
|
if (!(rover->flags & FF_EXISTS))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// If the FOF is configured to let players through, continue.
|
// If the FOF is configured to let the object through, continue.
|
||||||
if (!(rover->flags & FF_BLOCKPLAYER) && (rover->flags & FF_BLOCKOTHERS))
|
if (!((rover->flags & FF_BLOCKPLAYER && mo->player)
|
||||||
|
|| (rover->flags & FF_BLOCKOTHERS && !mo->player)))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// If the the platform is intangile from below, continue.
|
// If the the platform is intangible from below, continue.
|
||||||
if (rover->flags & FF_PLATFORM)
|
if (rover->flags & FF_PLATFORM)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -1300,11 +1301,12 @@ boolean P_IsObjectOnGroundIn(mobj_t *mo, sector_t *sec)
|
||||||
if (!(rover->flags & FF_EXISTS))
|
if (!(rover->flags & FF_EXISTS))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// If the FOF is configured to let players through, continue.
|
// If the FOF is configured to let the object through, continue.
|
||||||
if (!(rover->flags & FF_BLOCKPLAYER) && (rover->flags & FF_BLOCKOTHERS))
|
if (!((rover->flags & FF_BLOCKPLAYER && mo->player)
|
||||||
|
|| (rover->flags & FF_BLOCKOTHERS && !mo->player)))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// If the the platform is intangile from above, continue.
|
// If the the platform is intangible from above, continue.
|
||||||
if (rover->flags & FF_REVERSEPLATFORM)
|
if (rover->flags & FF_REVERSEPLATFORM)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue