* ALMOST SORTA IMPLEMENTED A NON-HACKY SPINNING FLAMEJET. For some reason, they wanna step down onto the platform - and I've been figuring this out for too long to see what's causing that tonight.

* Hardcoded a bunch of stuff from patch.dta. All works fine, but still more to do.
This commit is contained in:
toasterbabe 2017-01-21 01:09:39 +00:00
parent 45d373a2a2
commit 399a6c1d47
7 changed files with 282 additions and 236 deletions

View File

@ -4398,6 +4398,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_GOOP1",
"S_GOOP2",
"S_GOOP3",
"S_GOOPTRAIL",
// Boss 3
"S_EGGMOBILE3_STND",
@ -4974,7 +4975,9 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
// Starpost
"S_STARPOST_IDLE",
"S_STARPOST_FLASH",
"S_STARPOST_STARTSPIN",
"S_STARPOST_SPIN",
"S_STARPOST_ENDSPIN",
// Big floating mine
"S_BIGMINE1",
@ -5156,21 +5159,15 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_DEMONFIRE6",
"S_GFZFLOWERA",
"S_GFZFLOWERA2",
"S_GFZFLOWERB1",
"S_GFZFLOWERB2",
"S_GFZFLOWERC1",
"S_GFZFLOWERB",
"S_GFZFLOWERC",
"S_BERRYBUSH",
"S_BUSH",
// THZ Plant
"S_THZPLANT1",
"S_THZPLANT2",
"S_THZPLANT3",
"S_THZPLANT4",
"S_THZFLOWERA",
"S_THZFLOWERB",
// THZ Alarm
"S_ALARM1",
@ -5276,28 +5273,8 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
// Spinning flame jets
"S_FJSPINAXISA1", // Counter-clockwise
"S_FJSPINAXISA2",
"S_FJSPINAXISA3",
"S_FJSPINAXISA4",
"S_FJSPINAXISA5",
"S_FJSPINAXISA6",
"S_FJSPINAXISA7",
"S_FJSPINAXISA8",
"S_FJSPINAXISA9",
"S_FJSPINHELPERA1",
"S_FJSPINHELPERA2",
"S_FJSPINHELPERA3",
"S_FJSPINAXISB1", // Clockwise
"S_FJSPINAXISB2",
"S_FJSPINAXISB3",
"S_FJSPINAXISB4",
"S_FJSPINAXISB5",
"S_FJSPINAXISB6",
"S_FJSPINAXISB7",
"S_FJSPINAXISB8",
"S_FJSPINAXISB9",
"S_FJSPINHELPERB1",
"S_FJSPINHELPERB2",
"S_FJSPINHELPERB3",
// Blade's flame
"S_FLAMEJETFLAMEB1",
@ -5400,8 +5377,10 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_BSZVINE_ORANGE",
"S_BSZSHRUB",
"S_BSZCLOVER",
"S_BSZFISH",
"S_BSZSUNFLOWER",
"S_ALOLAN_EGGSECUTOR_NECK",
"S_ALOLAN_EGGSECUTOR_HEAD",
"S_EGGSECUTOR_NECK",
"S_EGGSECUTOR_HEAD",
"S_DBALL1",
"S_DBALL2",
@ -6124,16 +6103,17 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_SHELL2",
"S_SHELL3",
"S_SHELL4",
"S_PUMA1",
"S_PUMA2",
"S_PUMA3",
"S_PUMA4",
"S_PUMA5",
"S_PUMA6",
"S_HAMMER1",
"S_HAMMER2",
"S_HAMMER3",
"S_HAMMER4",
"S_PUMA_UP1",
"S_PUMA_UP2",
"S_PUMA_UP3",
"S_PUMA_DOWN1",
"S_PUMA_DOWN2",
"S_PUMA_DOWN3",
"S_PUMATRAIL1",
"S_PUMATRAIL2",
"S_PUMATRAIL3",
"S_PUMATRAIL4",
"S_HAMMER",
"S_KOOPA1",
"S_KOOPA2",
"S_KOOPAFLAME1",
@ -6386,6 +6366,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
"MT_BOSSTANK2",
"MT_BOSSSPIGOT",
"MT_GOOP",
"MT_GOOPTRAIL",
// Boss 3
"MT_EGGMOBILE3",
@ -6555,7 +6536,8 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
"MT_BUSH",
// Techno Hill Scenery
"MT_THZPLANT", // THZ Plant
"MT_THZFLOWER1",
"MT_THZFLOWER2",
"MT_ALARM",
// Deep Sea Scenery
@ -6597,9 +6579,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
"MT_FLAMEJETFLAME",
"MT_FJSPINAXISA", // Counter-clockwise
"MT_FJSPINHELPERA",
"MT_FJSPINAXISB", // Clockwise
"MT_FJSPINHELPERB",
"MT_FLAMEJETFLAMEB", // Blade's flame
@ -6676,8 +6656,10 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
"MT_BSZVINE_ORANGE",
"MT_BSZSHRUB",
"MT_BSZCLOVER",
"MT_BSZFISH",
"MT_BSZSUNFLOWER",
"MT_ALOLAN_EGGSECUTOR_NECK",
"MT_ALOLAN_EGGSECUTOR_HEAD",
"MT_EGGSECUTOR_NECK",
"MT_EGGSECUTOR_HEAD",
// Misc scenery
"MT_DBALL",
@ -6783,6 +6765,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
"MT_FIREBALL",
"MT_SHELL",
"MT_PUMA",
"MT_PUMATRAIL",
"MT_HAMMER",
"MT_KOOPA",
"MT_KOOPAFLAME",

View File

@ -296,6 +296,7 @@ light_t *t_lspr[NUMSPRITES] =
// Techno Hill Scenery
&lspr[NOLIGHT], // SPR_THZP
&lspr[NOLIGHT], // SPR_FWR5
&lspr[REDBALL_L], // SPR_ALRM
// Deep Sea Scenery

View File

@ -184,6 +184,7 @@ char sprnames[NUMSPRITES + 1][5] =
// Techno Hill Scenery
"THZP", // Techno Hill Zone Plant
"FWR5", // Another one
"ALRM", // THZ2 Alarm
// Deep Sea Scenery
@ -990,9 +991,10 @@ state_t states[NUMSTATES] =
{SPR_SPNK, 0, 35, {NULL}, 0, 0, S_NULL}, // S_BOSSSPIGOT
// Boss 2 Goop
{SPR_GOOP, 0, 2, {NULL}, 0, 0, S_GOOP2}, // S_GOOP1
{SPR_GOOP, 1, 2, {NULL}, 0, 0, S_GOOP1}, // S_GOOP2
{SPR_GOOP, 2,-1, {NULL}, 0, 0, S_NULL}, // S_GOOP3
{SPR_GOOP, 0, 2, {A_SpawnObjectRelative}, 0, MT_GOOPTRAIL, S_GOOP2}, // S_GOOP1
{SPR_GOOP, 1, 2, {A_SpawnObjectRelative}, 0, MT_GOOPTRAIL, S_GOOP1}, // S_GOOP2
{SPR_GOOP, 2, -1, {NULL}, 0, 0, S_NULL}, // S_GOOP3
{SPR_GOOP, FF_ANIMATE|3, 11, {NULL}, 2, 6, S_NULL}, // S_GOOPTRAIL
// Boss 3
{SPR_EGGO, 0, 1, {NULL}, 0, 0, S_EGGMOBILE3_STND}, // S_EGGMOBILE3_STND
@ -1570,9 +1572,11 @@ state_t states[NUMSTATES] =
{SPR_USPK, 2,-1, {NULL}, 0, 0, S_NULL}, // S_SPIKED2
// Starpost
{SPR_STPT, 0 , -1, {NULL}, 0, 0, S_NULL}, // S_STARPOST_IDLE
{SPR_STPT, FF_ANIMATE , -1, {NULL}, 1, 2, S_NULL}, // S_STARPOST_FLASH
{SPR_STPT, FF_ANIMATE|2, 31, {NULL}, 15, 1, S_STARPOST_FLASH}, // S_STARPOST_SPIN
{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|13, 2, {NULL}, 1, 1, S_STARPOST_SPIN}, // S_STARPOST_STARTSPIN
{SPR_STPT, FF_ANIMATE|1 , 23, {NULL}, 11, 1, S_STARPOST_ENDSPIN}, // S_STARPOST_SPIN
{SPR_STPT, FF_ANIMATE|15, 2, {NULL}, 1, 1, S_STARPOST_FLASH}, // S_STARPOST_ENDSPIN
// Big floating mine
{SPR_BMNE, 0, 5, {NULL}, 0, 0, S_BIGMINE2}, // S_BIGMINE1
@ -1753,21 +1757,15 @@ state_t states[NUMSTATES] =
{SPR_CFIR, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_DEMONFIRE1}, // S_DEMONFIRE6
// GFZ Flower
{SPR_FWR1, 0, 14, {NULL}, 0, 0, S_GFZFLOWERA2}, // S_GFZFLOWERA
{SPR_FWR1, 1, 14, {NULL}, 0, 0, S_GFZFLOWERA}, // S_GFZFLOWERA2
{SPR_FWR2, 0, 7, {NULL}, 0, 0, S_GFZFLOWERB2}, // S_GFZFLOWERB1
{SPR_FWR2, 1, 7, {NULL}, 0, 0, S_GFZFLOWERB1}, // S_GFZFLOWERB1
{SPR_FWR3, 0, -1, {NULL}, 0, 0, S_NULL}, // S_GFZFLOWERC1
{SPR_FWR1, FF_ANIMATE, -1, {NULL}, 7, 3, S_NULL}, // S_GFZFLOWERA
{SPR_FWR2, FF_ANIMATE, -1, {NULL}, 19, 3, S_NULL}, // S_GFZFLOWERB
{SPR_FWR3, FF_ANIMATE, -1, {NULL}, 11, 4, S_NULL}, // S_GFZFLOWERC
{SPR_BUS1, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BERRYBUSH
{SPR_BUS2, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BUSH
{SPR_THZP, 0, 4, {NULL}, 0, 0, S_THZPLANT2}, // S_THZPLANT1
{SPR_THZP, 1, 4, {NULL}, 0, 0, S_THZPLANT3}, // S_THZPLANT1
{SPR_THZP, 2, 4, {NULL}, 0, 0, S_THZPLANT4}, // S_THZPLANT1
{SPR_THZP, 3, 4, {NULL}, 0, 0, S_THZPLANT1}, // S_THZPLANT1
{SPR_THZP, FF_ANIMATE, -1, {NULL}, 7, 4, S_NULL}, // S_THZFLOWERA
{SPR_FWR5, FF_ANIMATE, -1, {NULL}, 19, 2, S_NULL}, // S_THZFLOWERB
// THZ Alarm
{SPR_ALRM, FF_FULLBRIGHT, 35, {A_Scream}, 0, 0, S_ALARM1}, // S_ALARM1
@ -1867,40 +1865,18 @@ state_t states[NUMSTATES] =
{SPR_NULL, 0, 2*TICRATE, {NULL}, 0, 0, S_FLAMEJETSTART}, // S_FLAMEJETSTND
{SPR_NULL, 0, 3*TICRATE, {A_ToggleFlameJet}, 0, 0, S_FLAMEJETSTOP}, // S_FLAMEJETSTART
{SPR_NULL, 0, 1, {A_ToggleFlameJet}, 0, 0, S_FLAMEJETSTND}, // S_FLAMEJETSTOP
{SPR_FLME, FF_TRANS50 , 4, {NULL}, 0, 0, S_FLAMEJETFLAME2}, // S_FLAMEJETFLAME1
{SPR_FLME, FF_TRANS60|1, 5, {NULL}, 0, 0, S_FLAMEJETFLAME3}, // S_FLAMEJETFLAME2
{SPR_FLME, FF_TRANS70|2, 11, {NULL}, 0, 0, S_NULL}, // S_FLAMEJETFLAME3
{SPR_FLME, FF_FULLBRIGHT|FF_TRANS50 , 4, {NULL}, 0, 0, S_FLAMEJETFLAME2}, // S_FLAMEJETFLAME1
{SPR_FLME, FF_FULLBRIGHT|FF_TRANS60|1, 5, {NULL}, 0, 0, S_FLAMEJETFLAME3}, // S_FLAMEJETFLAME2
{SPR_FLME, FF_FULLBRIGHT|FF_TRANS70|2, 11, {NULL}, 0, 0, S_NULL}, // S_FLAMEJETFLAME3
// Spinning flame jets
// A: Counter-clockwise
{SPR_NULL, 0, 1, {NULL}, 0, 0, S_FJSPINAXISA2}, // S_FJSPINAXISA1
{SPR_NULL, 0, 1, {A_Thrust}, 10, 1, S_FJSPINAXISA3}, // S_FJSPINAXISA2
{SPR_NULL, 0, 0, {A_Thrust}, 0, 1, S_FJSPINAXISA4}, // S_FJSPINAXISA3
{SPR_NULL, 0, 0, {A_SpawnObjectRelative}, 0, MT_FJSPINHELPERA, S_FJSPINAXISA5}, // S_FJSPINAXISA4
{SPR_NULL, 0, 2, {A_FindTarget}, MT_FJSPINHELPERA, 0, S_FJSPINAXISA6}, // S_FJSPINAXISA5
{SPR_NULL, 0, 1, {A_Thrust}, -10, 1, S_FJSPINAXISA7}, // S_FJSPINAXISA6
{SPR_NULL, 0, 1, {A_Thrust}, 0, 1, S_FJSPINAXISA8}, // S_FJSPINAXISA7
{SPR_NULL, 0, 0, {A_FireShot}, MT_FLAMEJETFLAMEB, -64, S_FJSPINAXISA9}, // S_FJSPINAXISA8
{SPR_NULL, 0, 3, {A_ChangeAngleRelative}, 6, 6, S_FJSPINAXISA8}, // S_FJSPINAXISA9
{SPR_NULL, 0, 1, {NULL}, 0, 0, S_FJSPINHELPERA2}, // S_FJSPINHELPERA1
{SPR_NULL, 0, 0, {A_FindTarget}, MT_FJSPINAXISA, 0, S_FJSPINHELPERA3}, // S_FJSPINHELPERA2
{SPR_NULL, 0, 1, {A_CapeChase}, 0, (64<<16), S_FJSPINHELPERA3}, // S_FJSPINHELPERA3
{SPR_NULL, 0, 1, {A_TrapShot}, MT_FLAMEJETFLAMEB, -16*FRACUNIT, S_FJSPINAXISA2}, // S_FJSPINAXISA1
{SPR_NULL, 0, 2, {A_ChangeAngleRelative}, 6, 6, S_FJSPINAXISA1}, // S_FJSPINAXISA2
// B: Clockwise
{SPR_NULL, 0, 1, {NULL}, 0, 0, S_FJSPINAXISB2}, // S_FJSPINAXISB1
{SPR_NULL, 0, 1, {A_Thrust}, 10, 1, S_FJSPINAXISB3}, // S_FJSPINAXISB2
{SPR_NULL, 0, 0, {A_Thrust}, 0, 1, S_FJSPINAXISB4}, // S_FJSPINAXISB3
{SPR_NULL, 0, 0, {A_SpawnObjectRelative}, 0, MT_FJSPINHELPERB, S_FJSPINAXISB5}, // S_FJSPINAXISB4
{SPR_NULL, 0, 2, {A_FindTarget}, MT_FJSPINHELPERB, 0, S_FJSPINAXISB6}, // S_FJSPINAXISB5
{SPR_NULL, 0, 1, {A_Thrust}, -10, 1, S_FJSPINAXISB7}, // S_FJSPINAXISB6
{SPR_NULL, 0, 1, {A_Thrust}, 0, 1, S_FJSPINAXISB8}, // S_FJSPINAXISB7
{SPR_NULL, 0, 0, {A_FireShot}, MT_FLAMEJETFLAMEB, -64, S_FJSPINAXISB9}, // S_FJSPINAXISB8
{SPR_NULL, 0, 3, {A_ChangeAngleRelative}, -6, -6, S_FJSPINAXISB8}, // S_FJSPINAXISB9
{SPR_NULL, 0, 1, {NULL}, 0, 0, S_FJSPINHELPERB2}, // S_FJSPINHELPERB1
{SPR_NULL, 0, 0, {A_FindTarget}, MT_FJSPINAXISB, 0, S_FJSPINHELPERB3}, // S_FJSPINHELPERB2
{SPR_NULL, 0, 1, {A_CapeChase}, 0, (64<<16), S_FJSPINHELPERB3}, // S_FJSPINHELPERB3
{SPR_NULL, 0, 1, {A_TrapShot}, MT_FLAMEJETFLAMEB, -16*FRACUNIT, S_FJSPINAXISB2}, // S_FJSPINAXISB1
{SPR_NULL, 0, 2, {A_ChangeAngleRelative}, -6, -6, S_FJSPINAXISB1}, // S_FJSPINAXISB2
// Blade's flame
{SPR_DFLM, FF_FULLBRIGHT|FF_TRANS40|1, 1, {A_MoveRelative}, 0, 5, S_FLAMEJETFLAMEB2}, // S_FLAMEJETFLAMEB1
@ -2006,8 +1982,10 @@ state_t states[NUMSTATES] =
{SPR_BSZ7, 5, -1, {NULL}, 0, 0, S_NULL}, // S_BSZVINE_ORANGE
{SPR_BSZ8, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BSZSHRUB
{SPR_BSZ8, 1, -1, {NULL}, 0, 0, S_NULL}, // S_BSZCLOVER
{SPR_BSZ8, 2, -1, {NULL}, 0, 0, S_NULL}, // S_BSZFISH
{SPR_BSZ8, 3, -1, {NULL}, 0, 0, S_NULL}, // S_BSZSUNFLOWER
{SPR_BSZ8, 2, -1, {NULL}, 0, 0, S_NULL}, // S_ALOLAN_EGGSECUTOR_NECK
{SPR_BSZ8, 3, -1, {NULL}, 0, 0, S_NULL}, // S_ALOLAN_EGGSECUTOR_HEAD
{SPR_BSZ8, 4, -1, {NULL}, 0, 0, S_NULL}, // S_EGGSECUTOR_NECK
{SPR_BSZ8, 5, -1, {NULL}, 0, 0, S_NULL}, // S_EGGSECUTOR_HEAD
// Disco ball
{SPR_DBAL, FF_FULLBRIGHT, 5, {NULL}, 0, 0, S_DBALL2}, // S_DBALL1
@ -2762,25 +2740,27 @@ state_t states[NUMSTATES] =
{SPR_FBLL, FF_FULLBRIGHT|6, 3, {NULL}, 0, 0, S_NULL}, // S_FIREBALLEXP3
// Turtle Shell
{SPR_SHLL, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SHELL
{SPR_SHLL, 0, 2, {NULL}, 0, 0, S_SHELL2}, // S_SHELL1
{SPR_SHLL, 1, 2, {NULL}, 0, 0, S_SHELL3}, // S_SHELL2
{SPR_SHLL, 2, 2, {NULL}, 0, 0, S_SHELL4}, // S_SHELL3
{SPR_SHLL, 3, 2, {NULL}, 0, 0, S_SHELL1}, // S_SHELL4
{SPR_SHLL, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SHELL
{SPR_SHLL, 0, 2, {NULL}, 0, 0, S_SHELL2}, // S_SHELL1
{SPR_SHLL, 1, 2, {NULL}, 0, 0, S_SHELL3}, // S_SHELL2
{SPR_SHLL, 2, 2, {NULL}, 0, 0, S_SHELL4}, // S_SHELL3
{SPR_SHLL, 3, 2, {NULL}, 0, 0, S_SHELL1}, // S_SHELL4
// Puma (Mario fireball)
{SPR_PUMA, FF_FULLBRIGHT, 3, {A_FishJump}, 0, 0, S_PUMA2}, // S_PUMA1
{SPR_PUMA, FF_FULLBRIGHT|1, 3, {A_FishJump}, 0, 0, S_PUMA3}, // S_PUMA2
{SPR_PUMA, FF_FULLBRIGHT|2, 3, {A_FishJump}, 0, 0, S_PUMA1}, // S_PUMA3
{SPR_PUMA, FF_FULLBRIGHT|3, 3, {A_FishJump}, 0, 0, S_PUMA5}, // S_PUMA4
{SPR_PUMA, FF_FULLBRIGHT|4, 3, {A_FishJump}, 0, 0, S_PUMA6}, // S_PUMA5
{SPR_PUMA, FF_FULLBRIGHT|5, 3, {A_FishJump}, 0, 0, S_PUMA4}, // S_PUMA6
{SPR_PUMA, FF_FULLBRIGHT , 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_UP2}, // S_PUMA_UP1
{SPR_PUMA, FF_FULLBRIGHT|1, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_UP3}, // S_PUMA_UP2
{SPR_PUMA, FF_FULLBRIGHT|2, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_UP1}, // S_PUMA_UP3
{SPR_PUMA, FF_FULLBRIGHT|3, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_DOWN2}, // S_PUMA_DOWN1
{SPR_PUMA, FF_FULLBRIGHT|4, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_DOWN3}, // S_PUMA_DOWN2
{SPR_PUMA, FF_FULLBRIGHT|5, 2, {A_FishJump}, 0, MT_PUMATRAIL, S_PUMA_DOWN1}, // S_PUMA_DOWN3
{SPR_PUMA, FF_FULLBRIGHT|FF_TRANS20|6, 4, {NULL}, 0, 0, S_PUMATRAIL2}, // S_PUMATRAIL1
{SPR_PUMA, FF_FULLBRIGHT|FF_TRANS40|6, 5, {A_SetScale}, FRACUNIT, 1, S_PUMATRAIL3}, // S_PUMATRAIL2
{SPR_PUMA, FF_FULLBRIGHT|FF_TRANS50|7, 4, {NULL}, 0, 0, S_PUMATRAIL4}, // S_PUMATRAIL3
{SPR_PUMA, FF_FULLBRIGHT|FF_TRANS60|8, 3, {NULL}, 0, 0, S_NULL}, // S_PUMATRAIL4
// Hammer
{SPR_HAMM, 0, 3, {NULL}, 0, 0, S_HAMMER2}, // S_HAMMER1
{SPR_HAMM, 1, 3, {NULL}, 0, 0, S_HAMMER3}, // S_HAMMER2
{SPR_HAMM, 2, 3, {NULL}, 0, 0, S_HAMMER4}, // S_HAMMER3
{SPR_HAMM, 3, 3, {NULL}, 0, 0, S_HAMMER1}, // S_HAMMER4
{SPR_HAMM, FF_ANIMATE, -1, {NULL}, 4, 3, S_NULL}, // S_HAMMER
// Koopa
{SPR_KOOP, 0, -1, {NULL}, 0, 0, S_NULL}, // S_KOOPA1
@ -3195,8 +3175,8 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL, // xdeathstate
sfx_pop, // deathsound
4*FRACUNIT, // speed
20*FRACUNIT, // radius
24*FRACUNIT, // height
28*FRACUNIT, // radius
40*FRACUNIT, // height
0, // display offset
100, // mass
0, // damage
@ -3222,8 +3202,8 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL, // xdeathstate
sfx_pop, // deathsound
8*FRACUNIT, // speed
20*FRACUNIT, // radius
24*FRACUNIT, // height
28*FRACUNIT, // radius
40*FRACUNIT, // height
0, // display offset
100, // mass
0, // damage
@ -4339,6 +4319,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate
},
{ // MT_GOOPTRAIL
-1, // doomednum
S_GOOPTRAIL, // 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
3, // speed
4*FRACUNIT, // radius
4*FRACUNIT, // height
0, // display offset
4, // mass
0, // damage
sfx_None, // activesound
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY, // flags
S_NULL // raisestate
},
{ // MT_EGGMOBILE3
202, // doomednum
S_EGGMOBILE3_STND, // spawnstate
@ -5989,7 +5996,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_STARPOST_SPIN, // painstate
S_STARPOST_STARTSPIN, // painstate
0, // painchance
sfx_strpst, // painsound
S_NULL, // meleestate
@ -5999,7 +6006,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
sfx_None, // deathsound
8, // speed
64*FRACUNIT, // radius
80*FRACUNIT, // height
128*FRACUNIT, // height
0, // display offset
4, // mass
0, // damage
@ -7927,7 +7934,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
{ // MT_GFZFLOWER2
801, // doomednum
S_GFZFLOWERB1, // spawnstate
S_GFZFLOWERB, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
@ -7954,7 +7961,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
{ // MT_GFZFLOWER3
802, // doomednum
S_GFZFLOWERC1, // spawnstate
S_GFZFLOWERC, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
@ -7975,7 +7982,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
0, // damage
sfx_None, // activesound
MF_NOTHINK|MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY, // flags
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY, // flags
S_NULL // raisestate
},
@ -8033,9 +8040,36 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate
},
{ // MT_THZPLANT
{ // MT_THZFLOWER1
900, // doomednum
S_THZPLANT1, // spawnstate
S_THZFLOWERA, // 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
8, // speed
8*FRACUNIT, // radius
32*FRACUNIT, // height
0, // display offset
16, // mass
0, // damage
sfx_None, // activesound
MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY, // flags
S_NULL // raisestate
},
{ // MT_THZFLOWER2
902, // doomednum
S_THZFLOWERB, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
@ -8924,33 +8958,6 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate
},
{ // MT_FJSPINHELPERA
-1, // doomednum
S_FJSPINHELPERA1,// 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
10*FRACUNIT, // speed
16*FRACUNIT, // radius
1*FRACUNIT, // height
0, // display offset
100, // mass
1, // damage
sfx_None, // activesound
MF_NOCLIP|MF_NOCLIPTHING|MF_NOGRAVITY|MF_NOSECTOR, // flags
S_NULL // raisestate
},
{ // MT_FJSPINAXISB
3576, // doomednum
S_FJSPINAXISB1, // spawnstate
@ -8978,33 +8985,6 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate
},
{ // MT_FJSPINHELPERB
-1, // doomednum
S_FJSPINHELPERB1,// 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
10*FRACUNIT, // speed
16*FRACUNIT, // radius
1*FRACUNIT, // height
0, // display offset
100, // mass
1, // damage
sfx_None, // activesound
MF_NOCLIP|MF_NOCLIPTHING|MF_NOGRAVITY|MF_NOSECTOR, // flags
S_NULL // raisestate
},
{ // MT_FLAMEJETFLAMEB
-1, // doomednum
S_FLAMEJETFLAMEB1, // spawnstate
@ -10709,9 +10689,9 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate
},
{ // MT_BSZFISH
{ // MT_ALOLAN_EGGSECUTOR_NECK
1472, // doomednum
S_BSZFISH, // spawnstate
S_ALOLAN_EGGSECUTOR_NECK, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
@ -10736,9 +10716,63 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate
},
{ // MT_BSZSUNFLOWER
{ // MT_ALOLAN_EGGSECUTOR_HEAD
1473, // doomednum
S_BSZSUNFLOWER, // spawnstate
S_ALOLAN_EGGSECUTOR_HEAD, // 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
16*FRACUNIT, // radius
32*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_EGGSECUTOR_NECK
1474, // doomednum
S_EGGSECUTOR_NECK, // 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
16*FRACUNIT, // radius
32*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_EGGSECUTOR_HEAD
1475, // doomednum
S_EGGSECUTOR_HEAD, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
@ -13098,19 +13132,19 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
{ // MT_PUMA
1805, // doomednum
S_PUMA1, // spawnstate
S_PUMA_UP1, // spawnstate
1000, // spawnhealth
S_PUMA1, // seestate
S_PUMA_UP1, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_PUMA4, // meleestate
S_PUMA_DOWN1, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_PUMA6, // xdeathstate
S_PUMA_DOWN3, // xdeathstate
sfx_None, // deathsound
0, // speed
8*FRACUNIT, // radius
@ -13119,12 +13153,40 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
100, // mass
0, // damage
sfx_None, // activesound
MF_PAIN|MF_FIRE, // flags
MF_PAIN|MF_FIRE, // flags
S_NULL // raisestate
},
{ // MT_PUMATRAIL
-1, // doomednum
S_PUMATRAIL1, // 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
2*FRACUNIT, // radius
4*FRACUNIT, // height
0, // display offset
100, // mass
0, // damage
sfx_None, // activesound
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY, // flags
S_NULL // raisestate
},
{ // MT_HAMMER
-1, // doomednum
S_HAMMER1, // spawnstate
S_HAMMER, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound

View File

@ -388,7 +388,8 @@ typedef enum sprite
SPR_BUS2, // GFZ Bush w/o berries
// Techno Hill Scenery
SPR_THZP, // Techno Hill Zone Plant
SPR_THZP, // THZ1 Flower
SPR_FWR5, // Another flower
SPR_ALRM, // THZ2 Alarm
// Deep Sea Scenery
@ -1200,6 +1201,7 @@ typedef enum state
S_GOOP1,
S_GOOP2,
S_GOOP3,
S_GOOPTRAIL,
// Boss 3
S_EGGMOBILE3_STND,
@ -1776,7 +1778,9 @@ typedef enum state
// Starpost
S_STARPOST_IDLE,
S_STARPOST_FLASH,
S_STARPOST_STARTSPIN,
S_STARPOST_SPIN,
S_STARPOST_ENDSPIN,
// Big floating mine
S_BIGMINE1,
@ -1960,21 +1964,15 @@ typedef enum state
S_DEMONFIRE6,
S_GFZFLOWERA,
S_GFZFLOWERA2,
S_GFZFLOWERB1,
S_GFZFLOWERB2,
S_GFZFLOWERC1,
S_GFZFLOWERB,
S_GFZFLOWERC,
S_BERRYBUSH,
S_BUSH,
// THZ Plant
S_THZPLANT1,
S_THZPLANT2,
S_THZPLANT3,
S_THZPLANT4,
S_THZFLOWERA,
S_THZFLOWERB,
// THZ Alarm
S_ALARM1,
@ -2080,28 +2078,8 @@ typedef enum state
// Spinning flame jets
S_FJSPINAXISA1, // Counter-clockwise
S_FJSPINAXISA2,
S_FJSPINAXISA3,
S_FJSPINAXISA4,
S_FJSPINAXISA5,
S_FJSPINAXISA6,
S_FJSPINAXISA7,
S_FJSPINAXISA8,
S_FJSPINAXISA9,
S_FJSPINHELPERA1,
S_FJSPINHELPERA2,
S_FJSPINHELPERA3,
S_FJSPINAXISB1, // Clockwise
S_FJSPINAXISB2,
S_FJSPINAXISB3,
S_FJSPINAXISB4,
S_FJSPINAXISB5,
S_FJSPINAXISB6,
S_FJSPINAXISB7,
S_FJSPINAXISB8,
S_FJSPINAXISB9,
S_FJSPINHELPERB1,
S_FJSPINHELPERB2,
S_FJSPINHELPERB3,
// Blade's flame
S_FLAMEJETFLAMEB1,
@ -2204,8 +2182,10 @@ typedef enum state
S_BSZVINE_ORANGE,
S_BSZSHRUB,
S_BSZCLOVER,
S_BSZFISH,
S_BSZSUNFLOWER,
S_ALOLAN_EGGSECUTOR_NECK,
S_ALOLAN_EGGSECUTOR_HEAD,
S_EGGSECUTOR_NECK,
S_EGGSECUTOR_HEAD,
S_DBALL1,
S_DBALL2,
@ -2928,16 +2908,17 @@ typedef enum state
S_SHELL2,
S_SHELL3,
S_SHELL4,
S_PUMA1,
S_PUMA2,
S_PUMA3,
S_PUMA4,
S_PUMA5,
S_PUMA6,
S_HAMMER1,
S_HAMMER2,
S_HAMMER3,
S_HAMMER4,
S_PUMA_UP1,
S_PUMA_UP2,
S_PUMA_UP3,
S_PUMA_DOWN1,
S_PUMA_DOWN2,
S_PUMA_DOWN3,
S_PUMATRAIL1,
S_PUMATRAIL2,
S_PUMATRAIL3,
S_PUMATRAIL4,
S_HAMMER,
S_KOOPA1,
S_KOOPA2,
S_KOOPAFLAME1,
@ -3209,6 +3190,7 @@ typedef enum mobj_type
MT_BOSSTANK2,
MT_BOSSSPIGOT,
MT_GOOP,
MT_GOOPTRAIL,
// Boss 3
MT_EGGMOBILE3,
@ -3378,7 +3360,8 @@ typedef enum mobj_type
MT_BUSH,
// Techno Hill Scenery
MT_THZPLANT, // THZ Plant
MT_THZFLOWER1,
MT_THZFLOWER2,
MT_ALARM,
// Deep Sea Scenery
@ -3420,9 +3403,7 @@ typedef enum mobj_type
MT_FLAMEJETFLAME,
MT_FJSPINAXISA, // Counter-clockwise
MT_FJSPINHELPERA,
MT_FJSPINAXISB, // Clockwise
MT_FJSPINHELPERB,
MT_FLAMEJETFLAMEB, // Blade's flame
@ -3499,8 +3480,10 @@ typedef enum mobj_type
MT_BSZVINE_ORANGE,
MT_BSZSHRUB,
MT_BSZCLOVER,
MT_BSZFISH,
MT_BSZSUNFLOWER,
MT_ALOLAN_EGGSECUTOR_NECK,
MT_ALOLAN_EGGSECUTOR_HEAD,
MT_EGGSECUTOR_NECK,
MT_EGGSECUTOR_HEAD,
// Misc scenery
MT_DBALL,
@ -3606,6 +3589,7 @@ typedef enum mobj_type
MT_FIREBALL,
MT_SHELL,
MT_PUMA,
MT_PUMATRAIL,
MT_HAMMER,
MT_KOOPA,
MT_KOOPAFLAME,

View File

@ -3882,11 +3882,18 @@ void A_DropMine(mobj_t *actor)
void A_FishJump(mobj_t *actor)
{
INT32 locvar1 = var1;
INT32 locvar2 = var2;
#ifdef HAVE_BLUA
if (LUA_CallAction("A_FishJump", actor))
return;
#endif
if (locvar2)
{
fixed_t rad = actor->radius>>FRACBITS;
P_SpawnMobjFromMobj(actor, P_RandomRange(rad, -rad)<<FRACBITS, P_RandomRange(rad, -rad)<<FRACBITS, 0, (mobjtype_t)locvar2);
}
if ((actor->z <= actor->floorz) || (actor->z <= actor->watertop - FixedMul((64 << FRACBITS), actor->scale)))
{
fixed_t jumpval;
@ -9660,8 +9667,9 @@ void A_TrapShot(mobj_t *actor)
if (actor->eflags & MFE_VERTICALFLIP)
missile->flags2 |= MF2_OBJECTFLIP;
missile->destscale = actor->destscale;
P_SetScale(missile, missile->destscale);
missile->destscale = actor->scale;
P_SetScale(missile, actor->scale);
if (missile->info->seesound)
S_StartSound(actor, missile->info->seesound);
@ -9674,6 +9682,8 @@ void A_TrapShot(mobj_t *actor)
missile->momx = FixedMul(FINECOSINE(vertang>>ANGLETOFINESHIFT), FixedMul(FINECOSINE(missile->angle>>ANGLETOFINESHIFT), speed));
missile->momy = FixedMul(FINECOSINE(vertang>>ANGLETOFINESHIFT), FixedMul(FINESINE(missile->angle>>ANGLETOFINESHIFT), speed));
missile->momz = FixedMul(FINESINE(vertang>>ANGLETOFINESHIFT), speed);
P_CheckMissileSpawn(missile);
}
// Function: A_VileTarget

View File

@ -6720,7 +6720,7 @@ void P_MobjThinker(mobj_t *mobj)
}
}
if (mobj->type == MT_GHOST && mobj->fuse > 0 // Not guaranteed to be MF_SCENERY or not MF_SCENERY!
if ((mobj->type == MT_GHOST || mobj->type == MT_THOK) && mobj->fuse > 0 // Not guaranteed to be MF_SCENERY or not MF_SCENERY!
&& (signed)(mobj->frame >> FF_TRANSSHIFT) < (NUMTRANSMAPS-1) - mobj->fuse / 2)
// fade out when nearing the end of fuse...
mobj->frame = (mobj->frame & ~FF_TRANSMASK) | (((NUMTRANSMAPS-1) - mobj->fuse / 2) << FF_TRANSSHIFT);

View File

@ -1624,6 +1624,12 @@ void P_SpawnSpinMobj(player_t *player, mobjtype_t type)
// scale
P_SetScale(mobj, player->mo->scale);
mobj->destscale = player->mo->scale;
if (type == MT_THOK) // spintrail-specific modification for MT_THOK
{
mobj->frame = FF_TRANS70;
mobj->fuse = mobj->tics;
}
}
P_SetTarget(&mobj->target, player->mo); // the one thing P_SpawnGhostMobj doesn't do