mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-15 01:01:33 +00:00
* Castlebot Facestabbers.
* Facestabber statues, of both the suspicious and non-suspicious kind. * New object type for the end of grabbable chains. * I moved my compilation .bat file to my Releases folder, so it should .gitignore .bat's. * Random extra stuff.
This commit is contained in:
parent
dbcd259bd6
commit
cb86ed7721
9 changed files with 11846 additions and 11424 deletions
1
bin/Mingw/Release/.gitignore
vendored
1
bin/Mingw/Release/.gitignore
vendored
|
@ -1,3 +1,4 @@
|
||||||
*.exe
|
*.exe
|
||||||
*.mo
|
*.mo
|
||||||
r_opengl.dll
|
r_opengl.dll
|
||||||
|
*.bat
|
||||||
|
|
|
@ -1628,6 +1628,10 @@ static actionpointer_t actionpointers[] =
|
||||||
{{A_Look}, "A_LOOK"},
|
{{A_Look}, "A_LOOK"},
|
||||||
{{A_Chase}, "A_CHASE"},
|
{{A_Chase}, "A_CHASE"},
|
||||||
{{A_FaceStabChase}, "A_FACESTABCHASE"},
|
{{A_FaceStabChase}, "A_FACESTABCHASE"},
|
||||||
|
{{A_FaceStabRev}, "A_FACESTABREV"},
|
||||||
|
{{A_FaceStabHurl}, "A_FACESTABHURL"},
|
||||||
|
{{A_FaceStabMiss}, "A_FACESTABMISS"},
|
||||||
|
{{A_StatueBurst}, "A_STATUEBURST"},
|
||||||
{{A_FaceTarget}, "A_FACETARGET"},
|
{{A_FaceTarget}, "A_FACETARGET"},
|
||||||
{{A_FaceTracer}, "A_FACETRACER"},
|
{{A_FaceTracer}, "A_FACETRACER"},
|
||||||
{{A_Scream}, "A_SCREAM"},
|
{{A_Scream}, "A_SCREAM"},
|
||||||
|
@ -3774,6 +3778,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_FACESTABBER_DIE1",
|
"S_FACESTABBER_DIE1",
|
||||||
"S_FACESTABBER_DIE2",
|
"S_FACESTABBER_DIE2",
|
||||||
"S_FACESTABBER_DIE3",
|
"S_FACESTABBER_DIE3",
|
||||||
|
"S_FACESTABBERSPEAR",
|
||||||
|
|
||||||
// Egg Guard
|
// Egg Guard
|
||||||
"S_EGGGUARD_STND",
|
"S_EGGGUARD_STND",
|
||||||
|
@ -4830,6 +4835,8 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_BIGMACECHAIN",
|
"S_BIGMACECHAIN",
|
||||||
"S_SMALLMACE",
|
"S_SMALLMACE",
|
||||||
"S_BIGMACE",
|
"S_BIGMACE",
|
||||||
|
"S_SMALLGRABCHAIN",
|
||||||
|
"S_BIGGRABCHAIN",
|
||||||
|
|
||||||
// Yellow spring on a ball
|
// Yellow spring on a ball
|
||||||
"S_YELLOWSPRINGBALL",
|
"S_YELLOWSPRINGBALL",
|
||||||
|
@ -4894,6 +4901,10 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_WAVINGFLAG",
|
"S_WAVINGFLAG",
|
||||||
"S_WAVINGFLAGSEG",
|
"S_WAVINGFLAGSEG",
|
||||||
"S_CRAWLASTATUE",
|
"S_CRAWLASTATUE",
|
||||||
|
"S_FACESTABBERSTATUE",
|
||||||
|
"S_SUSPICIOUSFACESTABBERSTATUE_WAIT",
|
||||||
|
"S_SUSPICIOUSFACESTABBERSTATUE_BURST1",
|
||||||
|
"S_SUSPICIOUSFACESTABBERSTATUE_BURST2",
|
||||||
|
|
||||||
// Big Tumbleweed
|
// Big Tumbleweed
|
||||||
"S_BIGTUMBLEWEED",
|
"S_BIGTUMBLEWEED",
|
||||||
|
@ -6235,7 +6246,8 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
||||||
"MT_POINTY", // Pointy
|
"MT_POINTY", // Pointy
|
||||||
"MT_POINTYBALL", // Pointy Ball
|
"MT_POINTYBALL", // Pointy Ball
|
||||||
"MT_ROBOHOOD", // Robo-Hood
|
"MT_ROBOHOOD", // Robo-Hood
|
||||||
"MT_FACESTABBER", // CastleBot FaceStabber
|
"MT_FACESTABBER", // Castlebot Facestabber
|
||||||
|
"MT_FACESTABBERSPEAR", // Castlebot Facestabber spear aura
|
||||||
"MT_EGGGUARD", // Egg Guard
|
"MT_EGGGUARD", // Egg Guard
|
||||||
"MT_EGGSHIELD", // Egg Guard's shield
|
"MT_EGGSHIELD", // Egg Guard's shield
|
||||||
"MT_GSNAPPER", // Green Snapper
|
"MT_GSNAPPER", // Green Snapper
|
||||||
|
@ -6491,6 +6503,8 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
||||||
"MT_BIGMACECHAIN", // Big Mace Chain
|
"MT_BIGMACECHAIN", // Big Mace Chain
|
||||||
"MT_SMALLMACE", // Small Mace
|
"MT_SMALLMACE", // Small Mace
|
||||||
"MT_BIGMACE", // Big Mace
|
"MT_BIGMACE", // Big Mace
|
||||||
|
"MT_SMALLGRABCHAIN", // Small Grab Chain
|
||||||
|
"MT_BIGGRABCHAIN", // Big Grab Chain
|
||||||
"MT_YELLOWSPRINGBALL", // Yellow spring on a ball
|
"MT_YELLOWSPRINGBALL", // Yellow spring on a ball
|
||||||
"MT_REDSPRINGBALL", // Red spring on a ball
|
"MT_REDSPRINGBALL", // Red spring on a ball
|
||||||
"MT_SMALLFIREBAR", // Small Firebar
|
"MT_SMALLFIREBAR", // Small Firebar
|
||||||
|
@ -6508,6 +6522,8 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
||||||
"MT_WAVINGFLAG", // Waving flag
|
"MT_WAVINGFLAG", // Waving flag
|
||||||
"MT_WAVINGFLAGSEG", // Waving flag segment
|
"MT_WAVINGFLAGSEG", // Waving flag segment
|
||||||
"MT_CRAWLASTATUE", // Crawla statue
|
"MT_CRAWLASTATUE", // Crawla statue
|
||||||
|
"MT_FACESTABBERSTATUE", // Facestabber statue
|
||||||
|
"MT_SUSPICIOUSFACESTABBERSTATUE", // :eggthinking:
|
||||||
|
|
||||||
// Arid Canyon Scenery
|
// Arid Canyon Scenery
|
||||||
"MT_BIGTUMBLEWEED",
|
"MT_BIGTUMBLEWEED",
|
||||||
|
|
|
@ -168,6 +168,7 @@ light_t *t_lspr[NUMSPRITES] =
|
||||||
&lspr[NOLIGHT], // SPR_PNTY
|
&lspr[NOLIGHT], // SPR_PNTY
|
||||||
&lspr[NOLIGHT], // SPR_ARCH
|
&lspr[NOLIGHT], // SPR_ARCH
|
||||||
&lspr[NOLIGHT], // SPR_CBFS
|
&lspr[NOLIGHT], // SPR_CBFS
|
||||||
|
&lspr[JETLIGHT_L], // SPR_STAB
|
||||||
&lspr[NOLIGHT], // SPR_SPSH
|
&lspr[NOLIGHT], // SPR_SPSH
|
||||||
&lspr[NOLIGHT], // SPR_ESHI
|
&lspr[NOLIGHT], // SPR_ESHI
|
||||||
&lspr[NOLIGHT], // SPR_GSNP
|
&lspr[NOLIGHT], // SPR_GSNP
|
||||||
|
@ -332,6 +333,7 @@ light_t *t_lspr[NUMSPRITES] =
|
||||||
&lspr[REDBALL_L], // SPR_CTRC
|
&lspr[REDBALL_L], // SPR_CTRC
|
||||||
&lspr[NOLIGHT], // SPR_CFLG
|
&lspr[NOLIGHT], // SPR_CFLG
|
||||||
&lspr[NOLIGHT], // SPR_CSTA
|
&lspr[NOLIGHT], // SPR_CSTA
|
||||||
|
&lspr[NOLIGHT], // SPR_CBBS
|
||||||
|
|
||||||
// Arid Canyon Scenery
|
// Arid Canyon Scenery
|
||||||
&lspr[NOLIGHT], // SPR_BTBL
|
&lspr[NOLIGHT], // SPR_BTBL
|
||||||
|
|
210
src/info.c
210
src/info.c
|
@ -56,6 +56,7 @@ char sprnames[NUMSPRITES + 1][5] =
|
||||||
"PNTY", // Pointy
|
"PNTY", // Pointy
|
||||||
"ARCH", // Robo-Hood
|
"ARCH", // Robo-Hood
|
||||||
"CBFS", // Castlebot Facestabber
|
"CBFS", // Castlebot Facestabber
|
||||||
|
"STAB", // Castlebot Facestabber spear aura
|
||||||
"SPSH", // Egg Guard
|
"SPSH", // Egg Guard
|
||||||
"ESHI", // Egg Guard's shield
|
"ESHI", // Egg Guard's shield
|
||||||
"GSNP", // Green Snapper
|
"GSNP", // Green Snapper
|
||||||
|
@ -226,6 +227,7 @@ char sprnames[NUMSPRITES + 1][5] =
|
||||||
"CTRC", // Fire torch
|
"CTRC", // Fire torch
|
||||||
"CFLG", // Waving flag/segment
|
"CFLG", // Waving flag/segment
|
||||||
"CSTA", // Crawla statue
|
"CSTA", // Crawla statue
|
||||||
|
"CBBS", // Facestabber statue
|
||||||
|
|
||||||
// Arid Canyon Scenery
|
// Arid Canyon Scenery
|
||||||
"BTBL", // Big tumbleweed
|
"BTBL", // Big tumbleweed
|
||||||
|
@ -986,22 +988,24 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_ARCH, 1, 1, {A_HoodThink}, 0, 0, S_ROBOHOOD_JUMP2}, // S_ROBOHOOD_JUMP2
|
{SPR_ARCH, 1, 1, {A_HoodThink}, 0, 0, S_ROBOHOOD_JUMP2}, // S_ROBOHOOD_JUMP2
|
||||||
{SPR_ARCH, 0, 1, {A_HoodThink}, 0, 0, S_ROBOHOOD_FALL}, // S_ROBOHOOD_FALL
|
{SPR_ARCH, 0, 1, {A_HoodThink}, 0, 0, S_ROBOHOOD_FALL}, // S_ROBOHOOD_FALL
|
||||||
|
|
||||||
// CastleBot FaceStabber
|
// Castlebot Facestabber
|
||||||
{SPR_CBFS, 0, 1, {A_FaceStabChase}, 0, 0, S_FACESTABBER_STND2}, // S_FACESTABBER_STND1
|
{SPR_CBFS, 0, 1, {A_Chase}, 0, 0, S_FACESTABBER_STND2}, // S_FACESTABBER_STND1
|
||||||
{SPR_CBFS, 1, 1, {A_FaceStabChase}, 0, 0, S_FACESTABBER_STND3}, // S_FACESTABBER_STND2
|
{SPR_CBFS, 1, 1, {A_Chase}, 0, 0, S_FACESTABBER_STND3}, // S_FACESTABBER_STND2
|
||||||
{SPR_CBFS, 2, 1, {A_FaceStabChase}, 0, 0, S_FACESTABBER_STND4}, // S_FACESTABBER_STND3
|
{SPR_CBFS, 2, 1, {A_Chase}, 0, 0, S_FACESTABBER_STND4}, // S_FACESTABBER_STND3
|
||||||
{SPR_CBFS, 3, 1, {A_FaceStabChase}, 0, 0, S_FACESTABBER_STND5}, // S_FACESTABBER_STND4
|
{SPR_CBFS, 3, 1, {A_Chase}, 0, 0, S_FACESTABBER_STND5}, // S_FACESTABBER_STND4
|
||||||
{SPR_CBFS, 4, 1, {A_FaceStabChase}, 0, 0, S_FACESTABBER_STND6}, // S_FACESTABBER_STND5
|
{SPR_CBFS, 4, 1, {A_Chase}, 0, 0, S_FACESTABBER_STND6}, // S_FACESTABBER_STND5
|
||||||
{SPR_CBFS, 5, 1, {A_FaceStabChase}, 0, 0, S_FACESTABBER_STND1}, // S_FACESTABBER_STND6
|
{SPR_CBFS, 5, 1, {A_Chase}, 0, 0, S_FACESTABBER_STND1}, // S_FACESTABBER_STND6
|
||||||
{SPR_CBFS, 6, 14, {A_PlayActiveSound}, 0, 0, S_FACESTABBER_CHARGE2}, // S_FACESTABBER_CHARGE1
|
{SPR_CBFS, 0, 1, {A_FaceStabRev}, 20, S_FACESTABBER_CHARGE2, S_FACESTABBER_CHARGE1}, // S_FACESTABBER_CHARGE1
|
||||||
{SPR_CBFS, 6, 0, {A_PlayAttackSound}, 0, 0, S_FACESTABBER_CHARGE3}, // S_FACESTABBER_CHARGE2
|
{SPR_CBFS, 0, 0, {A_FaceTarget}, 0, 0, S_FACESTABBER_CHARGE3}, // S_FACESTABBER_CHARGE2
|
||||||
{SPR_CBFS, 6, 0, {A_FaceTarget}, 0, 0, S_FACESTABBER_CHARGE4}, // S_FACESTABBER_CHARGE3
|
{SPR_CBFS, 7, 1, {A_FaceStabHurl}, 6, S_FACESTABBER_CHARGE4, S_FACESTABBER_CHARGE3}, // S_FACESTABBER_CHARGE3
|
||||||
{SPR_CBFS, 7, 35, {A_Thrust}, 20, 1, S_FACESTABBER_STND1}, // S_FACESTABBER_CHARGE4
|
{SPR_CBFS, 7, 1, {A_FaceStabMiss}, 0, S_FACESTABBER_STND1, S_FACESTABBER_CHARGE4}, // S_FACESTABBER_CHARGE4
|
||||||
{SPR_CBFS, 0, 35, {A_Pain}, 0, 0, S_FACESTABBER_STND1}, // S_FACESTABBER_PAIN
|
{SPR_CBFS, 0, 35, {A_Pain}, 0, 0, S_FACESTABBER_STND1}, // S_FACESTABBER_PAIN
|
||||||
{SPR_CBFS, 0, 2, {A_BossScream}, 1, MT_SONIC3KBOSSEXPLODE, S_FACESTABBER_DIE2}, // S_FACESTABBER_DIE1
|
{SPR_CBFS, 0, 2, {A_BossScream}, 1, MT_SONIC3KBOSSEXPLODE, S_FACESTABBER_DIE2}, // S_FACESTABBER_DIE1
|
||||||
{SPR_NULL, 0, 2, {A_BossScream}, 1, MT_SONIC3KBOSSEXPLODE, S_FACESTABBER_DIE3}, // S_FACESTABBER_DIE2
|
{SPR_NULL, 0, 2, {A_BossScream}, 1, MT_SONIC3KBOSSEXPLODE, S_FACESTABBER_DIE3}, // S_FACESTABBER_DIE2
|
||||||
{SPR_NULL, 0, 0, {A_Repeat}, 7, S_FACESTABBER_DIE1, S_XPLD_FLICKY}, // S_FACESTABBER_DIE3
|
{SPR_NULL, 0, 0, {A_Repeat}, 7, S_FACESTABBER_DIE1, S_XPLD_FLICKY}, // S_FACESTABBER_DIE3
|
||||||
|
|
||||||
|
{SPR_STAB, FF_PAPERSPRITE|FF_TRANS50|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_FACESTABBERSPEAR
|
||||||
|
|
||||||
// Egg Guard
|
// Egg Guard
|
||||||
{SPR_SPSH, 0, 1, {A_Look}, 0, 0, S_EGGGUARD_STND}, // S_EGGGUARD_STND
|
{SPR_SPSH, 0, 1, {A_Look}, 0, 0, S_EGGGUARD_STND}, // S_EGGGUARD_STND
|
||||||
{SPR_SPSH, 1, 3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK2}, // S_EGGGUARD_WALK1
|
{SPR_SPSH, 1, 3, {A_GuardChase}, 0, 0, S_EGGGUARD_WALK2}, // S_EGGGUARD_WALK1
|
||||||
|
@ -1016,7 +1020,6 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_SPSH, 10, 1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN4}, // S_EGGGUARD_RUN3
|
{SPR_SPSH, 10, 1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN4}, // S_EGGGUARD_RUN3
|
||||||
{SPR_SPSH, 11, 1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN1}, // S_EGGGUARD_RUN4
|
{SPR_SPSH, 11, 1, {A_GuardChase}, 0, 0, S_EGGGUARD_RUN1}, // S_EGGGUARD_RUN4
|
||||||
|
|
||||||
// Egg Shield for Egg Guard
|
|
||||||
{SPR_ESHI, 0, 8, {A_EggShield}, 0, 0, S_EGGSHIELD}, // S_EGGSHIELD
|
{SPR_ESHI, 0, 8, {A_EggShield}, 0, 0, S_EGGSHIELD}, // S_EGGSHIELD
|
||||||
|
|
||||||
// Green Snapper
|
// Green Snapper
|
||||||
|
@ -1435,12 +1438,12 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_RCKT, 2 + FF_FULLBRIGHT, 6, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (6<<16), 32 + (16<<16), S_CYBRAKDEMONMISSILE_EXPLODE3}, // S_CYBRAKDEMONMISSILE_EXPLODE2
|
{SPR_RCKT, 2 + FF_FULLBRIGHT, 6, {A_NapalmScatter}, MT_CYBRAKDEMON_NAPALM_FLAMES + (6<<16), 32 + (16<<16), S_CYBRAKDEMONMISSILE_EXPLODE3}, // S_CYBRAKDEMONMISSILE_EXPLODE2
|
||||||
{SPR_RCKT, 3 + FF_FULLBRIGHT, 4, {NULL}, 0, 0, S_NULL}, // S_CYBRAKDEMONMISSILE_EXPLODE3
|
{SPR_RCKT, 3 + FF_FULLBRIGHT, 4, {NULL}, 0, 0, S_NULL}, // S_CYBRAKDEMONMISSILE_EXPLODE3
|
||||||
|
|
||||||
{SPR_FLME, FF_TRANS20|FF_FULLBRIGHT , 15, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY2}, // S_CYBRAKDEMONFLAMESHOT_FLY1
|
{SPR_FLME, FF_FULLBRIGHT , 15, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY2}, // S_CYBRAKDEMONFLAMESHOT_FLY1
|
||||||
{SPR_FLME, FF_TRANS20|FF_FULLBRIGHT|1, 15, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY3}, // S_CYBRAKDEMONFLAMESHOT_FLY2
|
{SPR_FLME, FF_FULLBRIGHT|1, 15, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY3}, // S_CYBRAKDEMONFLAMESHOT_FLY2
|
||||||
{SPR_FLME, FF_TRANS20|FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY3}, // S_CYBRAKDEMONFLAMESHOT_FLY3
|
{SPR_FLME, FF_FULLBRIGHT|2, -1, {NULL}, 0, 0, S_CYBRAKDEMONFLAMESHOT_FLY3}, // S_CYBRAKDEMONFLAMESHOT_FLY3
|
||||||
{SPR_FLME, FF_TRANS20|FF_FULLBRIGHT|2, 0, {A_SpawnObjectRelative}, 0, MT_CYBRAKDEMON_FLAMEREST, S_NULL}, // S_CYBRAKDEMONFLAMESHOT_DIE
|
{SPR_FLME, FF_FULLBRIGHT|2, 0, {A_SpawnObjectRelative}, 0, MT_CYBRAKDEMON_FLAMEREST, S_NULL}, // S_CYBRAKDEMONFLAMESHOT_DIE
|
||||||
|
|
||||||
{SPR_FLAM, FF_TRANS20|FF_FULLBRIGHT|5, 3, {A_SetFuse}, 10*TICRATE, 0, S_FLAMEREST}, // S_CYBRAKDEMONFLAMEREST
|
{SPR_FLAM, FF_FULLBRIGHT, 0, {A_SetFuse}, 10*TICRATE, 0, S_FLAMEREST}, // S_CYBRAKDEMONFLAMEREST
|
||||||
|
|
||||||
{SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_INIT2}, // S_CYBRAKDEMONELECTRICBARRIER_INIT1
|
{SPR_ELEC, 0 + FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_CYBRAKDEMONELECTRICBARRIER_INIT2}, // S_CYBRAKDEMONELECTRICBARRIER_INIT1
|
||||||
{SPR_ELEC, 0 + FF_FULLBRIGHT, 0, {A_RemoteAction}, -1, S_CYBRAKDEMON_INVINCIBLERIZE, S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND}, // S_CYBRAKDEMONELECTRICBARRIER_INIT2
|
{SPR_ELEC, 0 + FF_FULLBRIGHT, 0, {A_RemoteAction}, -1, S_CYBRAKDEMON_INVINCIBLERIZE, S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND}, // S_CYBRAKDEMONELECTRICBARRIER_INIT2
|
||||||
|
@ -2054,10 +2057,12 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_NULL, 0, -1, {A_SlingAppear}, 0, 0, S_NULL}, // S_SLING2
|
{SPR_NULL, 0, -1, {A_SlingAppear}, 0, 0, S_NULL}, // S_SLING2
|
||||||
|
|
||||||
// CEZ maces and chains
|
// CEZ maces and chains
|
||||||
{SPR_SMCH, 0, -1, {NULL}, 0, 0, S_SMALLMACECHAIN}, // S_SMALLMACECHAIN
|
{SPR_SMCH, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SMALLMACECHAIN
|
||||||
{SPR_BMCH, 0, -1, {NULL}, 0, 0, S_BIGMACECHAIN}, // S_BIGMACECHAIN
|
{SPR_BMCH, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BIGMACECHAIN
|
||||||
{SPR_SMCE, 0, -1, {NULL}, 0, 0, S_SMALLMACE}, // S_SMALLMACE
|
{SPR_SMCE, 0, -1, {NULL}, 0, 0, S_NULL}, // S_SMALLMACE
|
||||||
{SPR_BMCE, 0, -1, {NULL}, 0, 0, S_BIGMACE}, // S_BIGMACE
|
{SPR_BMCE, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BIGMACE
|
||||||
|
{SPR_SMCH, 1, -1, {NULL}, 0, 0, S_NULL}, // S_SMALLGRABCHAIN
|
||||||
|
{SPR_BMCH, 1, -1, {NULL}, 0, 0, S_NULL}, // S_BIGGRABCHAIN
|
||||||
|
|
||||||
// Yellow spring on a ball
|
// Yellow spring on a ball
|
||||||
{SPR_YSPB, 0, -1, {NULL}, 0, 0, S_NULL}, // S_YELLOWSPRINGBALL
|
{SPR_YSPB, 0, -1, {NULL}, 0, 0, S_NULL}, // S_YELLOWSPRINGBALL
|
||||||
|
@ -2130,6 +2135,12 @@ state_t states[NUMSTATES] =
|
||||||
|
|
||||||
{SPR_CSTA, 0, -1, {NULL}, 0, 0, S_NULL}, // S_CRAWLASTATUE
|
{SPR_CSTA, 0, -1, {NULL}, 0, 0, S_NULL}, // S_CRAWLASTATUE
|
||||||
|
|
||||||
|
{SPR_CBBS, 0, -1, {NULL}, 0, 0, S_NULL}, // S_FACESTABBERSTATUE
|
||||||
|
|
||||||
|
{SPR_CBBS, 0, 5, {A_Look}, 768*FRACUNIT, 0, S_SUSPICIOUSFACESTABBERSTATUE_WAIT}, // S_SUSPICIOUSFACESTABBERSTATUE_WAIT
|
||||||
|
{SPR_CBBS, 0, 23, {NULL}, 0, 0, S_SUSPICIOUSFACESTABBERSTATUE_BURST2}, // S_SUSPICIOUSFACESTABBERSTATUE_BURST1
|
||||||
|
{SPR_NULL, 0, 40, {A_StatueBurst}, 0, S_FACESTABBER_CHARGE2, S_NULL}, // S_SUSPICIOUSFACESTABBERSTATUE_BURST2
|
||||||
|
|
||||||
// Big Tumbleweed
|
// Big Tumbleweed
|
||||||
{SPR_BTBL, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BIGTUMBLEWEED
|
{SPR_BTBL, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BIGTUMBLEWEED
|
||||||
{SPR_BTBL, 0, 5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL2}, // S_BIGTUMBLEWEED_ROLL1
|
{SPR_BTBL, 0, 5, {NULL}, 0, 0, S_BIGTUMBLEWEED_ROLL2}, // S_BIGTUMBLEWEED_ROLL1
|
||||||
|
@ -2162,9 +2173,9 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_NULL, 0, 2*TICRATE, {NULL}, 0, 0, S_FLAMEJETSTART}, // S_FLAMEJETSTND
|
{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, 3*TICRATE, {A_ToggleFlameJet}, 0, 0, S_FLAMEJETSTOP}, // S_FLAMEJETSTART
|
||||||
{SPR_NULL, 0, 1, {A_ToggleFlameJet}, 0, 0, S_FLAMEJETSTND}, // S_FLAMEJETSTOP
|
{SPR_NULL, 0, 1, {A_ToggleFlameJet}, 0, 0, S_FLAMEJETSTND}, // S_FLAMEJETSTOP
|
||||||
{SPR_FLME, FF_FULLBRIGHT|FF_TRANS50 , 4, {NULL}, 0, 0, S_FLAMEJETFLAME2}, // S_FLAMEJETFLAME1
|
{SPR_FLME, FF_FULLBRIGHT , 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|1, 5, {NULL}, 0, 0, S_FLAMEJETFLAME3}, // S_FLAMEJETFLAME2
|
||||||
{SPR_FLME, FF_FULLBRIGHT|FF_TRANS70|2, 11, {NULL}, 0, 0, S_NULL}, // S_FLAMEJETFLAME3
|
{SPR_FLME, FF_FULLBRIGHT|2, 11, {NULL}, 0, 0, S_NULL}, // S_FLAMEJETFLAME3
|
||||||
|
|
||||||
// Spinning flame jets
|
// Spinning flame jets
|
||||||
// A: Counter-clockwise
|
// A: Counter-clockwise
|
||||||
|
@ -4237,24 +4248,51 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
2, // spawnhealth
|
2, // spawnhealth
|
||||||
S_FACESTABBER_STND1, // seestate
|
S_FACESTABBER_STND1, // seestate
|
||||||
sfx_None, // seesound
|
sfx_None, // seesound
|
||||||
35, // reactiontime
|
70, // reactiontime
|
||||||
sfx_None, // attacksound
|
sfx_zoom, // attacksound
|
||||||
S_FACESTABBER_PAIN, // painstate
|
S_FACESTABBER_PAIN, // painstate
|
||||||
0, // painchance
|
0, // painchance
|
||||||
sfx_dmpain, // painsound
|
sfx_dmpain, // painsound
|
||||||
S_FACESTABBER_CHARGE1, // meleestate
|
S_FACESTABBER_CHARGE1, // meleestate
|
||||||
S_NULL, // missilestate
|
S_FACESTABBER_CHARGE1, // missilestate
|
||||||
S_FACESTABBER_DIE1, // deathstate
|
S_FACESTABBER_DIE1, // deathstate
|
||||||
S_NULL, // xdeathstate
|
S_NULL, // xdeathstate
|
||||||
sfx_cybdth, // deathsound
|
sfx_cybdth, // deathsound
|
||||||
3, // speed
|
3, // speed
|
||||||
32*FRACUNIT, // radius
|
36*FRACUNIT, // radius
|
||||||
64*FRACUNIT, // height
|
72*FRACUNIT, // height
|
||||||
0, // display offset
|
0, // display offset
|
||||||
100, // mass
|
100, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
|
sfx_s3kc5s, // activesound
|
||||||
|
MF_ENEMY|MF_SPECIAL|MF_SHOOTABLE|MF_SLIDEME, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
|
{ // MT_FACESTABBERSPEAR
|
||||||
|
-1, // doomednum
|
||||||
|
S_FACESTABBERSPEAR, // spawnstate
|
||||||
|
1, // spawnhealth
|
||||||
|
S_NULL, // seestate
|
||||||
|
sfx_None, // seesound
|
||||||
|
35, // 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
|
||||||
|
36*FRACUNIT, // radius
|
||||||
|
72*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
DMG_SPIKE, // mass
|
||||||
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_ENEMY|MF_SPECIAL|MF_SHOOTABLE, // flags
|
MF_PAIN|MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -9865,7 +9903,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SCENERY|MF_SPECIAL|MF_NOGRAVITY, // flags
|
MF_SCENERY|MF_NOGRAVITY, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -9892,7 +9930,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_SCENERY|MF_SPECIAL|MF_NOGRAVITY, // flags
|
MF_SCENERY|MF_NOGRAVITY, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -9950,6 +9988,60 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ // MT_SMALLGRABCHAIN
|
||||||
|
-1, // doomednum
|
||||||
|
S_SMALLGRABCHAIN, // 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
|
||||||
|
24*FRACUNIT, // speed
|
||||||
|
17*FRACUNIT, // radius
|
||||||
|
34*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
1, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_SCENERY|MF_SPECIAL|MF_NOGRAVITY, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
|
{ // MT_BIGGRABCHAIN
|
||||||
|
-1, // doomednum
|
||||||
|
S_BIGGRABCHAIN, // 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
|
||||||
|
48*FRACUNIT, // speed
|
||||||
|
34*FRACUNIT, // radius
|
||||||
|
68*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
1, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_SCENERY|MF_SPECIAL|MF_NOGRAVITY, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
{ // MT_YELLOWSPRINGBALL
|
{ // MT_YELLOWSPRINGBALL
|
||||||
-1, // doomednum
|
-1, // doomednum
|
||||||
S_YELLOWSPRINGBALL, // spawnstate
|
S_YELLOWSPRINGBALL, // spawnstate
|
||||||
|
@ -10409,6 +10501,60 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ // MT_FACESTABBERSTATUE
|
||||||
|
1331, // doomednum
|
||||||
|
S_FACESTABBERSTATUE, // 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
|
||||||
|
36*FRACUNIT, // radius
|
||||||
|
72*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_SLIDEME|MF_SOLID|MF_PUSHABLE, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
|
{ // MT_SUSPICIOUSFACESTABBERSTATUE
|
||||||
|
1332, // doomednum
|
||||||
|
S_SUSPICIOUSFACESTABBERSTATUE_WAIT, // spawnstate
|
||||||
|
1000, // spawnhealth
|
||||||
|
S_SUSPICIOUSFACESTABBERSTATUE_BURST1, // seestate
|
||||||
|
sfx_s3k6f, // 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
|
||||||
|
36*FRACUNIT, // radius
|
||||||
|
72*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_SLIDEME|MF_SOLID|MF_PUSHABLE, // flags
|
||||||
|
MT_FACESTABBER // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
{ // MT_BIGTUMBLEWEED
|
{ // MT_BIGTUMBLEWEED
|
||||||
1200, // doomednum
|
1200, // doomednum
|
||||||
S_BIGTUMBLEWEED,// spawnstate
|
S_BIGTUMBLEWEED,// spawnstate
|
||||||
|
|
20
src/info.h
20
src/info.h
|
@ -34,6 +34,10 @@ void A_GoldMonitorSparkle();
|
||||||
void A_Look();
|
void A_Look();
|
||||||
void A_Chase();
|
void A_Chase();
|
||||||
void A_FaceStabChase();
|
void A_FaceStabChase();
|
||||||
|
void A_FaceStabRev();
|
||||||
|
void A_FaceStabHurl();
|
||||||
|
void A_FaceStabMiss();
|
||||||
|
void A_StatueBurst();
|
||||||
void A_FaceTarget();
|
void A_FaceTarget();
|
||||||
void A_FaceTracer();
|
void A_FaceTracer();
|
||||||
void A_Scream();
|
void A_Scream();
|
||||||
|
@ -269,6 +273,7 @@ typedef enum sprite
|
||||||
SPR_PNTY, // Pointy
|
SPR_PNTY, // Pointy
|
||||||
SPR_ARCH, // Robo-Hood
|
SPR_ARCH, // Robo-Hood
|
||||||
SPR_CBFS, // Castlebot Facestabber
|
SPR_CBFS, // Castlebot Facestabber
|
||||||
|
SPR_STAB, // Castlebot Facestabber spear aura
|
||||||
SPR_SPSH, // Egg Guard
|
SPR_SPSH, // Egg Guard
|
||||||
SPR_ESHI, // Egg Guard's shield
|
SPR_ESHI, // Egg Guard's shield
|
||||||
SPR_GSNP, // Green Snapper
|
SPR_GSNP, // Green Snapper
|
||||||
|
@ -439,6 +444,7 @@ typedef enum sprite
|
||||||
SPR_CTRC, // Fire torch
|
SPR_CTRC, // Fire torch
|
||||||
SPR_CFLG, // Waving flag/segment
|
SPR_CFLG, // Waving flag/segment
|
||||||
SPR_CSTA, // Crawla statue
|
SPR_CSTA, // Crawla statue
|
||||||
|
SPR_CBBS, // Facestabber statue
|
||||||
|
|
||||||
// Arid Canyon Scenery
|
// Arid Canyon Scenery
|
||||||
SPR_BTBL, // Big tumbleweed
|
SPR_BTBL, // Big tumbleweed
|
||||||
|
@ -1107,7 +1113,7 @@ typedef enum state
|
||||||
S_ROBOHOOD_JUMP2,
|
S_ROBOHOOD_JUMP2,
|
||||||
S_ROBOHOOD_FALL,
|
S_ROBOHOOD_FALL,
|
||||||
|
|
||||||
// CastleBot FaceStabber
|
// Castlebot Facestabber
|
||||||
S_FACESTABBER_STND1,
|
S_FACESTABBER_STND1,
|
||||||
S_FACESTABBER_STND2,
|
S_FACESTABBER_STND2,
|
||||||
S_FACESTABBER_STND3,
|
S_FACESTABBER_STND3,
|
||||||
|
@ -1122,6 +1128,7 @@ typedef enum state
|
||||||
S_FACESTABBER_DIE1,
|
S_FACESTABBER_DIE1,
|
||||||
S_FACESTABBER_DIE2,
|
S_FACESTABBER_DIE2,
|
||||||
S_FACESTABBER_DIE3,
|
S_FACESTABBER_DIE3,
|
||||||
|
S_FACESTABBERSPEAR,
|
||||||
|
|
||||||
// Egg Guard
|
// Egg Guard
|
||||||
S_EGGGUARD_STND,
|
S_EGGGUARD_STND,
|
||||||
|
@ -2180,6 +2187,8 @@ typedef enum state
|
||||||
S_BIGMACECHAIN,
|
S_BIGMACECHAIN,
|
||||||
S_SMALLMACE,
|
S_SMALLMACE,
|
||||||
S_BIGMACE,
|
S_BIGMACE,
|
||||||
|
S_SMALLGRABCHAIN,
|
||||||
|
S_BIGGRABCHAIN,
|
||||||
|
|
||||||
// Yellow spring on a ball
|
// Yellow spring on a ball
|
||||||
S_YELLOWSPRINGBALL,
|
S_YELLOWSPRINGBALL,
|
||||||
|
@ -2244,6 +2253,10 @@ typedef enum state
|
||||||
S_WAVINGFLAG,
|
S_WAVINGFLAG,
|
||||||
S_WAVINGFLAGSEG,
|
S_WAVINGFLAGSEG,
|
||||||
S_CRAWLASTATUE,
|
S_CRAWLASTATUE,
|
||||||
|
S_FACESTABBERSTATUE,
|
||||||
|
S_SUSPICIOUSFACESTABBERSTATUE_WAIT,
|
||||||
|
S_SUSPICIOUSFACESTABBERSTATUE_BURST1,
|
||||||
|
S_SUSPICIOUSFACESTABBERSTATUE_BURST2,
|
||||||
|
|
||||||
// Big Tumbleweed
|
// Big Tumbleweed
|
||||||
S_BIGTUMBLEWEED,
|
S_BIGTUMBLEWEED,
|
||||||
|
@ -3606,6 +3619,7 @@ typedef enum mobj_type
|
||||||
MT_POINTYBALL, // Pointy Ball
|
MT_POINTYBALL, // Pointy Ball
|
||||||
MT_ROBOHOOD, // Robo-Hood
|
MT_ROBOHOOD, // Robo-Hood
|
||||||
MT_FACESTABBER, // Castlebot Facestabber
|
MT_FACESTABBER, // Castlebot Facestabber
|
||||||
|
MT_FACESTABBERSPEAR, // Castlebot Facestabber spear aura
|
||||||
MT_EGGGUARD, // Egg Guard
|
MT_EGGGUARD, // Egg Guard
|
||||||
MT_EGGSHIELD, // Egg Guard's shield
|
MT_EGGSHIELD, // Egg Guard's shield
|
||||||
MT_GSNAPPER, // Green Snapper
|
MT_GSNAPPER, // Green Snapper
|
||||||
|
@ -3861,6 +3875,8 @@ typedef enum mobj_type
|
||||||
MT_BIGMACECHAIN, // Big Mace Chain
|
MT_BIGMACECHAIN, // Big Mace Chain
|
||||||
MT_SMALLMACE, // Small Mace
|
MT_SMALLMACE, // Small Mace
|
||||||
MT_BIGMACE, // Big Mace
|
MT_BIGMACE, // Big Mace
|
||||||
|
MT_SMALLGRABCHAIN, // Small Grab Chain
|
||||||
|
MT_BIGGRABCHAIN, // Big Grab Chain
|
||||||
MT_YELLOWSPRINGBALL, // Yellow spring on a ball
|
MT_YELLOWSPRINGBALL, // Yellow spring on a ball
|
||||||
MT_REDSPRINGBALL, // Red spring on a ball
|
MT_REDSPRINGBALL, // Red spring on a ball
|
||||||
MT_SMALLFIREBAR, // Small Firebar
|
MT_SMALLFIREBAR, // Small Firebar
|
||||||
|
@ -3878,6 +3894,8 @@ typedef enum mobj_type
|
||||||
MT_WAVINGFLAG, // Waving flag
|
MT_WAVINGFLAG, // Waving flag
|
||||||
MT_WAVINGFLAGSEG, // Waving flag segment
|
MT_WAVINGFLAGSEG, // Waving flag segment
|
||||||
MT_CRAWLASTATUE, // Crawla statue
|
MT_CRAWLASTATUE, // Crawla statue
|
||||||
|
MT_FACESTABBERSTATUE, // Facestabber statue
|
||||||
|
MT_SUSPICIOUSFACESTABBERSTATUE, // :eggthinking:
|
||||||
|
|
||||||
// Arid Canyon Scenery
|
// Arid Canyon Scenery
|
||||||
MT_BIGTUMBLEWEED,
|
MT_BIGTUMBLEWEED,
|
||||||
|
|
273
src/p_enemy.c
273
src/p_enemy.c
|
@ -55,6 +55,10 @@ void A_Fall(mobj_t *actor);
|
||||||
void A_Look(mobj_t *actor);
|
void A_Look(mobj_t *actor);
|
||||||
void A_Chase(mobj_t *actor);
|
void A_Chase(mobj_t *actor);
|
||||||
void A_FaceStabChase(mobj_t *actor);
|
void A_FaceStabChase(mobj_t *actor);
|
||||||
|
void A_FaceStabRev(mobj_t *actor);
|
||||||
|
void A_FaceStabHurl(mobj_t *actor);
|
||||||
|
void A_FaceStabMiss(mobj_t *actor);
|
||||||
|
void A_StatueBurst(mobj_t *actor);
|
||||||
void A_JetJawRoam(mobj_t *actor);
|
void A_JetJawRoam(mobj_t *actor);
|
||||||
void A_JetJawChomp(mobj_t *actor);
|
void A_JetJawChomp(mobj_t *actor);
|
||||||
void A_PointyThink(mobj_t *actor);
|
void A_PointyThink(mobj_t *actor);
|
||||||
|
@ -1040,7 +1044,7 @@ nomissile:
|
||||||
|
|
||||||
// Function: A_FaceStabChase
|
// Function: A_FaceStabChase
|
||||||
//
|
//
|
||||||
// Description: A_Chase for CastleBot FaceStabber.
|
// Description: Unused variant of A_Chase for Castlebot Facestabber.
|
||||||
//
|
//
|
||||||
// var1 = unused
|
// var1 = unused
|
||||||
// var2 = unused
|
// var2 = unused
|
||||||
|
@ -1128,6 +1132,241 @@ nomissile:
|
||||||
P_NewChaseDir(actor);
|
P_NewChaseDir(actor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void P_SharpDust(mobj_t *actor, mobjtype_t type, angle_t ang)
|
||||||
|
{
|
||||||
|
mobj_t *dust;
|
||||||
|
|
||||||
|
if (!type || !P_IsObjectOnGround(actor))
|
||||||
|
return;
|
||||||
|
|
||||||
|
dust = P_SpawnMobjFromMobj(actor,
|
||||||
|
-P_ReturnThrustX(actor, ang, 16<<FRACBITS),
|
||||||
|
-P_ReturnThrustY(actor, ang, 16<<FRACBITS),
|
||||||
|
0, type);
|
||||||
|
P_SetObjectMomZ(dust, P_RandomRange(1, 4)<<FRACBITS, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void P_FaceStabFlume(mobj_t *actor)
|
||||||
|
{
|
||||||
|
mobj_t *flume;
|
||||||
|
if (leveltime & 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
flume = P_SpawnMobjFromMobj(actor,
|
||||||
|
-P_ReturnThrustX(actor, actor->angle, actor->radius),
|
||||||
|
-P_ReturnThrustY(actor, actor->angle, actor->radius),
|
||||||
|
actor->height/3,
|
||||||
|
MT_PARTICLE);
|
||||||
|
flume->destscale = actor->scale*3;
|
||||||
|
P_SetScale(flume, flume->destscale);
|
||||||
|
P_SetTarget(&flume->target, actor);
|
||||||
|
flume->sprite = SPR_JETF;
|
||||||
|
flume->frame = FF_FULLBRIGHT;
|
||||||
|
flume->tics = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function: A_FaceStabRev
|
||||||
|
//
|
||||||
|
// Description: Facestabber rev action
|
||||||
|
//
|
||||||
|
// var1 = effective duration
|
||||||
|
// var2 = effective nextstate
|
||||||
|
//
|
||||||
|
void A_FaceStabRev(mobj_t *actor)
|
||||||
|
{
|
||||||
|
INT32 locvar1 = var1;
|
||||||
|
INT32 locvar2 = var2;
|
||||||
|
|
||||||
|
#ifdef HAVE_BLUA
|
||||||
|
if (LUA_CallAction("A_FaceStabRev", actor))
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (!actor->target)
|
||||||
|
{
|
||||||
|
P_SetMobjState(actor, actor->info->spawnstate);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (actor->hnext)
|
||||||
|
P_SetTarget(&actor->hnext, NULL);
|
||||||
|
actor->extravalue1 = 0;
|
||||||
|
|
||||||
|
if (!actor->reactiontime)
|
||||||
|
{
|
||||||
|
actor->reactiontime = locvar1;
|
||||||
|
S_StartSound(actor, actor->info->activesound);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ((--actor->reactiontime) == 0)
|
||||||
|
{
|
||||||
|
S_StartSound(actor, actor->info->attacksound);
|
||||||
|
P_SetMobjState(actor, locvar2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
P_TryMove(actor, actor->x - P_ReturnThrustX(actor, actor->angle, 2<<FRACBITS), actor->y - P_ReturnThrustY(actor, actor->angle, 2<<FRACBITS), false);
|
||||||
|
P_FaceStabFlume(actor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function: A_FaceStabHurl
|
||||||
|
//
|
||||||
|
// Description: Facestabber hurl action
|
||||||
|
//
|
||||||
|
// var1 = homing strength (recommended strength between 0-8)
|
||||||
|
// var2 = effective nextstate
|
||||||
|
//
|
||||||
|
void A_FaceStabHurl(mobj_t *actor)
|
||||||
|
{
|
||||||
|
INT32 locvar1 = var1;
|
||||||
|
INT32 locvar2 = var2;
|
||||||
|
|
||||||
|
#ifdef HAVE_BLUA
|
||||||
|
if (LUA_CallAction("A_FaceStabHurl", actor))
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (actor->target)
|
||||||
|
{
|
||||||
|
angle_t visang = R_PointToAngle2(actor->x, actor->y, actor->target->x, actor->target->y);
|
||||||
|
// Calculate new direction.
|
||||||
|
angle_t dirang = actor->angle;
|
||||||
|
angle_t diffang = visang - dirang;
|
||||||
|
|
||||||
|
if (locvar1) // Allow homing?
|
||||||
|
{
|
||||||
|
if (diffang > ANGLE_180)
|
||||||
|
{
|
||||||
|
angle_t workang = locvar1*(InvAngle(diffang)>>5);
|
||||||
|
diffang += InvAngle(workang);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
diffang += (locvar1*(diffang>>5));
|
||||||
|
}
|
||||||
|
diffang += ANGLE_45;
|
||||||
|
|
||||||
|
// Check the sight cone.
|
||||||
|
if (diffang < ANGLE_90)
|
||||||
|
{
|
||||||
|
actor->angle = dirang;
|
||||||
|
if (++actor->extravalue2 < 4)
|
||||||
|
actor->extravalue2 = 4;
|
||||||
|
else if (actor->extravalue2 > 26)
|
||||||
|
actor->extravalue2 = 26;
|
||||||
|
|
||||||
|
if (P_TryMove(actor,
|
||||||
|
actor->x + P_ReturnThrustX(actor, dirang, actor->extravalue2<<FRACBITS),
|
||||||
|
actor->y + P_ReturnThrustY(actor, dirang, actor->extravalue2<<FRACBITS),
|
||||||
|
false))
|
||||||
|
{
|
||||||
|
// Do the spear damage.
|
||||||
|
#define NUMSTEPS 3
|
||||||
|
#define NUMGRADS 5
|
||||||
|
#define MAXVAL (NUMSTEPS*NUMGRADS)
|
||||||
|
SINT8 step = ++actor->extravalue1;
|
||||||
|
fixed_t basesize = FRACUNIT/MAXVAL;
|
||||||
|
mobj_t *hwork = actor;
|
||||||
|
INT32 dist = 113;
|
||||||
|
fixed_t xo = P_ReturnThrustX(actor, actor->angle, dist*basesize);
|
||||||
|
fixed_t yo = P_ReturnThrustY(actor, actor->angle, dist*basesize);
|
||||||
|
while (step > 0)
|
||||||
|
{
|
||||||
|
if (!hwork->hnext)
|
||||||
|
P_SetTarget(&hwork->hnext, P_SpawnMobjFromMobj(actor, 0, 0, 0, MT_FACESTABBERSPEAR));
|
||||||
|
hwork = hwork->hnext;
|
||||||
|
hwork->angle = actor->angle + ANGLE_90;
|
||||||
|
hwork->destscale = FixedSqrt(basesize*step);
|
||||||
|
hwork->fuse = 2;
|
||||||
|
P_TeleportMove(hwork, actor->x + xo*(15-step), actor->y + yo*(15-step), actor->z + (actor->height - hwork->height)/2 + (P_MobjFlip(actor)*(8<<FRACBITS)));
|
||||||
|
step -= NUMGRADS;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((step % 5) == 0)
|
||||||
|
P_SharpDust(actor, MT_SPINDUST, actor->angle);
|
||||||
|
|
||||||
|
if (actor->extravalue1 >= MAXVAL)
|
||||||
|
actor->extravalue1 -= NUMGRADS;
|
||||||
|
|
||||||
|
P_FaceStabFlume(actor);
|
||||||
|
return;
|
||||||
|
#undef MAXVAL
|
||||||
|
#undef NUMGRADS
|
||||||
|
#undef NUMSTEPS
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
P_SetMobjState(actor, locvar2);
|
||||||
|
actor->reactiontime = actor->info->reactiontime;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function: A_FaceStabMiss
|
||||||
|
//
|
||||||
|
// Description: Facestabber miss action
|
||||||
|
//
|
||||||
|
// var1 = unused
|
||||||
|
// var2 = effective nextstate
|
||||||
|
//
|
||||||
|
void A_FaceStabMiss(mobj_t *actor)
|
||||||
|
{
|
||||||
|
//INT32 locvar1 = var1;
|
||||||
|
INT32 locvar2 = var2;
|
||||||
|
|
||||||
|
#ifdef HAVE_BLUA
|
||||||
|
if (LUA_CallAction("A_FaceStabMiss", actor))
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (++actor->extravalue1 >= 3)
|
||||||
|
{
|
||||||
|
actor->extravalue2 -= 2;
|
||||||
|
actor->extravalue1 = 0;
|
||||||
|
S_StartSound(actor, sfx_s3k47);
|
||||||
|
P_SharpDust(actor, MT_SPINDUST, actor->angle);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (actor->extravalue2 <= 0 || !P_TryMove(actor,
|
||||||
|
actor->x + P_ReturnThrustX(actor, actor->angle, actor->extravalue2<<FRACBITS),
|
||||||
|
actor->y + P_ReturnThrustY(actor, actor->angle, actor->extravalue2<<FRACBITS),
|
||||||
|
false))
|
||||||
|
{
|
||||||
|
actor->extravalue2 = 0;
|
||||||
|
P_SetMobjState(actor, locvar2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function: A_StatueBurst
|
||||||
|
//
|
||||||
|
// Description: For suspicious statues only...
|
||||||
|
//
|
||||||
|
// var1 = unused
|
||||||
|
// var2 = effective nextstate for created object
|
||||||
|
//
|
||||||
|
void A_StatueBurst(mobj_t *actor)
|
||||||
|
{
|
||||||
|
//INT32 locvar1 = var1;
|
||||||
|
INT32 locvar2 = var2;
|
||||||
|
mobj_t *new;
|
||||||
|
|
||||||
|
#ifdef HAVE_BLUA
|
||||||
|
if (LUA_CallAction("A_StatueBurst", actor))
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (!(new = P_SpawnMobjFromMobj(actor, 0, 0, 0, (mobjtype_t)actor->info->raisestate)))
|
||||||
|
return;
|
||||||
|
|
||||||
|
new->angle = actor->angle;
|
||||||
|
new->target = actor->target;
|
||||||
|
if (locvar2)
|
||||||
|
P_SetMobjState(new, (statenum_t)locvar2);
|
||||||
|
S_StopSound(actor);
|
||||||
|
S_StartSound(actor, sfx_s3k96);
|
||||||
|
}
|
||||||
|
|
||||||
// Function: A_JetJawRoam
|
// Function: A_JetJawRoam
|
||||||
//
|
//
|
||||||
// Description: Roaming routine for JetJaw
|
// Description: Roaming routine for JetJaw
|
||||||
|
@ -1591,16 +1830,7 @@ void A_SharpSpin(mobj_t *actor)
|
||||||
P_SetMobjState(actor, actor->info->meleestate);
|
P_SetMobjState(actor, actor->info->meleestate);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!locvar1 || !P_IsObjectOnGround(actor))
|
P_SharpDust(actor, locvar1, oldang);
|
||||||
return;
|
|
||||||
|
|
||||||
{
|
|
||||||
mobj_t *dust = P_SpawnMobjFromMobj(actor,
|
|
||||||
-P_ReturnThrustX(actor, oldang, 16<<FRACBITS),
|
|
||||||
-P_ReturnThrustY(actor, oldang, 16<<FRACBITS),
|
|
||||||
0, locvar1);
|
|
||||||
P_SetObjectMomZ(dust, P_RandomRange(1, 4)<<FRACBITS, false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Function: A_SharpDecel
|
// Function: A_SharpDecel
|
||||||
|
@ -5216,10 +5446,8 @@ void A_RockSpawn(mobj_t *actor)
|
||||||
//
|
//
|
||||||
void A_SlingAppear(mobj_t *actor)
|
void A_SlingAppear(mobj_t *actor)
|
||||||
{
|
{
|
||||||
boolean firsttime = true;
|
|
||||||
UINT8 mlength = 4;
|
UINT8 mlength = 4;
|
||||||
mobj_t *spawnee;
|
mobj_t *spawnee, *hprev;
|
||||||
mobj_t *hprev = actor;
|
|
||||||
#ifdef HAVE_BLUA
|
#ifdef HAVE_BLUA
|
||||||
if (LUA_CallAction("A_SlingAppear", actor))
|
if (LUA_CallAction("A_SlingAppear", actor))
|
||||||
return;
|
return;
|
||||||
|
@ -5234,10 +5462,18 @@ void A_SlingAppear(mobj_t *actor)
|
||||||
actor->movefactor = actor->threshold;
|
actor->movefactor = actor->threshold;
|
||||||
actor->friction = 128;
|
actor->friction = 128;
|
||||||
|
|
||||||
|
hprev = P_SpawnMobj(actor->x, actor->y, actor->z, MT_SMALLGRABCHAIN);
|
||||||
|
P_SetTarget(&hprev->tracer, actor);
|
||||||
|
P_SetTarget(&hprev->hprev, actor);
|
||||||
|
P_SetTarget(&actor->hnext, hprev);
|
||||||
|
hprev->flags |= MF_NOCLIP|MF_NOCLIPHEIGHT;
|
||||||
|
hprev->movecount = mlength;
|
||||||
|
|
||||||
|
mlength--;
|
||||||
|
|
||||||
while (mlength > 0)
|
while (mlength > 0)
|
||||||
{
|
{
|
||||||
spawnee = P_SpawnMobj(actor->x, actor->y, actor->z, MT_SMALLMACECHAIN);
|
spawnee = P_SpawnMobj(actor->x, actor->y, actor->z, MT_SMALLMACECHAIN);
|
||||||
|
|
||||||
P_SetTarget(&spawnee->tracer, actor);
|
P_SetTarget(&spawnee->tracer, actor);
|
||||||
P_SetTarget(&spawnee->hprev, hprev);
|
P_SetTarget(&spawnee->hprev, hprev);
|
||||||
P_SetTarget(&hprev->hnext, spawnee);
|
P_SetTarget(&hprev->hnext, spawnee);
|
||||||
|
@ -5246,13 +5482,6 @@ void A_SlingAppear(mobj_t *actor)
|
||||||
spawnee->flags |= MF_NOCLIP|MF_NOCLIPHEIGHT;
|
spawnee->flags |= MF_NOCLIP|MF_NOCLIPHEIGHT;
|
||||||
spawnee->movecount = mlength;
|
spawnee->movecount = mlength;
|
||||||
|
|
||||||
if (firsttime)
|
|
||||||
{
|
|
||||||
// This is the outermost link in the chain
|
|
||||||
spawnee->flags2 |= MF2_AMBUSH;
|
|
||||||
firsttime = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
mlength--;
|
mlength--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1461,10 +1461,9 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
|
||||||
P_SetMobjState(special, special->info->seestate);
|
P_SetMobjState(special, special->info->seestate);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
case MT_SMALLMACECHAIN:
|
case MT_SMALLGRABCHAIN:
|
||||||
case MT_BIGMACECHAIN:
|
case MT_BIGGRABCHAIN:
|
||||||
// Is this the last link in the chain?
|
if (P_MobjFlip(toucher)*toucher->momz > 0
|
||||||
if (toucher->momz > 0 || !(special->flags2 & MF2_AMBUSH)
|
|
||||||
|| (player->powers[pw_carry]))
|
|| (player->powers[pw_carry]))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
49
src/p_mobj.c
49
src/p_mobj.c
|
@ -6324,7 +6324,7 @@ void P_MaceRotate(mobj_t *center, INT32 baserot, INT32 baseprevrot)
|
||||||
mobj->y += pos_sideways[1];
|
mobj->y += pos_sideways[1];
|
||||||
|
|
||||||
// Cut the height to align the link with the axis.
|
// Cut the height to align the link with the axis.
|
||||||
if (mobj->type == MT_SMALLMACECHAIN || mobj->type == MT_BIGMACECHAIN)
|
if (mobj->type == MT_SMALLMACECHAIN || mobj->type == MT_BIGMACECHAIN || mobj->type == MT_SMALLGRABCHAIN || mobj->type == MT_BIGGRABCHAIN)
|
||||||
zstore -= P_MobjFlip(mobj)*mobj->height/4;
|
zstore -= P_MobjFlip(mobj)*mobj->height/4;
|
||||||
else
|
else
|
||||||
zstore -= P_MobjFlip(mobj)*mobj->height/2;
|
zstore -= P_MobjFlip(mobj)*mobj->height/2;
|
||||||
|
@ -9953,7 +9953,7 @@ void P_SpawnMapThing(mapthing_t *mthing)
|
||||||
fixed_t mlength, mmaxlength, mlengthset, mspeed, mphase, myaw, mpitch, mminlength, mnumspokes, mpinch, mroll, mnumnospokes, mwidth, mwidthset, mmin, msound, radiusfactor, widthfactor;
|
fixed_t mlength, mmaxlength, mlengthset, mspeed, mphase, myaw, mpitch, mminlength, mnumspokes, mpinch, mroll, mnumnospokes, mwidth, mwidthset, mmin, msound, radiusfactor, widthfactor;
|
||||||
angle_t mspokeangle;
|
angle_t mspokeangle;
|
||||||
mobjtype_t chainlink, macetype, firsttype, linktype;
|
mobjtype_t chainlink, macetype, firsttype, linktype;
|
||||||
boolean mdosound, mdocenter;
|
boolean mdosound, mdocenter, mchainlike;
|
||||||
mobj_t *spawnee = NULL, *hprev = mobj;
|
mobj_t *spawnee = NULL, *hprev = mobj;
|
||||||
mobjflag_t mflagsapply;
|
mobjflag_t mflagsapply;
|
||||||
mobjflag2_t mflags2apply;
|
mobjflag2_t mflags2apply;
|
||||||
|
@ -10059,6 +10059,19 @@ ML_EFFECT4 : Don't clip inside the ground
|
||||||
else
|
else
|
||||||
chainlink = MT_NULL;
|
chainlink = MT_NULL;
|
||||||
break;
|
break;
|
||||||
|
case MT_CHAINPOINT:
|
||||||
|
if (mthing->options & MTF_AMBUSH)
|
||||||
|
{
|
||||||
|
macetype = MT_BIGGRABCHAIN;
|
||||||
|
chainlink = MT_BIGMACECHAIN;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
macetype = MT_SMALLGRABCHAIN;
|
||||||
|
chainlink = MT_SMALLMACECHAIN;
|
||||||
|
}
|
||||||
|
mchainlike = true;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
if (mthing->options & MTF_AMBUSH)
|
if (mthing->options & MTF_AMBUSH)
|
||||||
{
|
{
|
||||||
|
@ -10076,17 +10089,15 @@ ML_EFFECT4 : Don't clip inside the ground
|
||||||
if (!macetype && !chainlink)
|
if (!macetype && !chainlink)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (mobj->type != MT_CHAINPOINT)
|
if (mobj->type == MT_CHAINPOINT)
|
||||||
{
|
|
||||||
firsttype = macetype;
|
|
||||||
mlength++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
if (!mlength)
|
if (!mlength)
|
||||||
break;
|
break;
|
||||||
firsttype = chainlink;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
mlength++;
|
||||||
|
|
||||||
|
firsttype = macetype;
|
||||||
|
|
||||||
// Adjustable direction
|
// Adjustable direction
|
||||||
if (lines[line].flags & ML_NOCLIMB)
|
if (lines[line].flags & ML_NOCLIMB)
|
||||||
|
@ -10110,13 +10121,15 @@ ML_EFFECT4 : Don't clip inside the ground
|
||||||
else
|
else
|
||||||
radiusfactor = (((linktype = chainlink) == MT_NULL) ? 2 : 1);
|
radiusfactor = (((linktype = chainlink) == MT_NULL) ? 2 : 1);
|
||||||
|
|
||||||
widthfactor = ((firsttype == chainlink) ? 1 : 2);
|
if (!mchainlike)
|
||||||
|
mchainlike = (firsttype == chainlink);
|
||||||
|
widthfactor = (mchainlike ? 1 : 2);
|
||||||
|
|
||||||
mflagsapply = ((lines[line].flags & ML_EFFECT4) ? 0 : (MF_NOCLIP|MF_NOCLIPHEIGHT));
|
mflagsapply = ((lines[line].flags & ML_EFFECT4) ? 0 : (MF_NOCLIP|MF_NOCLIPHEIGHT));
|
||||||
mflags2apply = ((mthing->options & MTF_OBJECTFLIP) ? MF2_OBJECTFLIP : 0);
|
mflags2apply = ((mthing->options & MTF_OBJECTFLIP) ? MF2_OBJECTFLIP : 0);
|
||||||
meflagsapply = ((mthing->options & MTF_OBJECTFLIP) ? MFE_VERTICALFLIP : 0);
|
meflagsapply = ((mthing->options & MTF_OBJECTFLIP) ? MFE_VERTICALFLIP : 0);
|
||||||
|
|
||||||
msound = ((firsttype == chainlink) ? 0 : (mwidth & 1));
|
msound = (mchainlike ? 0 : (mwidth & 1));
|
||||||
|
|
||||||
// Quick and easy preparatory variable setting
|
// Quick and easy preparatory variable setting
|
||||||
mphase = (FixedAngle(mphase*FRACUNIT)>>ANGLETOFINESHIFT);
|
mphase = (FixedAngle(mphase*FRACUNIT)>>ANGLETOFINESHIFT);
|
||||||
|
@ -10155,7 +10168,8 @@ ML_EFFECT4 : Don't clip inside the ground
|
||||||
if (mobj->type != MT_CHAINMACEPOINT)
|
if (mobj->type != MT_CHAINMACEPOINT)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
firsttype = linktype = chainlink;
|
linktype = chainlink;
|
||||||
|
firsttype = ((mthing->options & MTF_AMBUSH) ? MT_BIGGRABCHAIN : MT_SMALLGRABCHAIN);
|
||||||
mmaxlength = 1 + (mlength - 1)*radiusfactor;
|
mmaxlength = 1 + (mlength - 1)*radiusfactor;
|
||||||
radiusfactor = widthfactor = 1;
|
radiusfactor = widthfactor = 1;
|
||||||
}
|
}
|
||||||
|
@ -10170,10 +10184,7 @@ ML_EFFECT4 : Don't clip inside the ground
|
||||||
radiusfactor = 2;
|
radiusfactor = 2;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
|
||||||
linktype = chainlink;
|
|
||||||
radiusfactor = (((linktype = chainlink) == MT_NULL) ? 2 : 1);
|
radiusfactor = (((linktype = chainlink) == MT_NULL) ? 2 : 1);
|
||||||
}
|
|
||||||
|
|
||||||
firsttype = macetype;
|
firsttype = macetype;
|
||||||
widthfactor = 2;
|
widthfactor = 2;
|
||||||
|
@ -10185,8 +10196,8 @@ ML_EFFECT4 : Don't clip inside the ground
|
||||||
mwidthset = mwidth;
|
mwidthset = mwidth;
|
||||||
mlengthset = mminlength;
|
mlengthset = mminlength;
|
||||||
|
|
||||||
if (mdocenter) // Innermost mace/link
|
if (mdocenter) // Innermost link
|
||||||
makemace(macetype, 0, 0);
|
makemace(linktype, 0, 0);
|
||||||
|
|
||||||
// Out from the center...
|
// Out from the center...
|
||||||
if (linktype)
|
if (linktype)
|
||||||
|
@ -10240,8 +10251,8 @@ ML_EFFECT4 : Don't clip inside the ground
|
||||||
while (mlengthset > mminlength)
|
while (mlengthset > mminlength)
|
||||||
makemace(linktype, radiusfactor*(mlengthset--), 0);
|
makemace(linktype, radiusfactor*(mlengthset--), 0);
|
||||||
|
|
||||||
if (mdocenter) // Innermost mace/link
|
if (mdocenter) // Innermost link
|
||||||
makemace(macetype, 0, 0);
|
makemace(linktype, 0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -439,8 +439,8 @@ sfxinfo_t S_sfx[NUMSFX] =
|
||||||
{"s3kc3l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Levitation"}, // ditto
|
{"s3kc3l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Levitation"}, // ditto
|
||||||
{"s3kc4s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Firing laser"},
|
{"s3kc4s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Firing laser"},
|
||||||
{"s3kc4l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Firing laser"}, // ditto
|
{"s3kc4l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Firing laser"}, // ditto
|
||||||
{"s3kc5s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""},
|
{"s3kc5s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Revving up"},
|
||||||
{"s3kc5l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // ditto
|
{"s3kc5l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Revving up"}, // ditto
|
||||||
{"s3kc6s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Orbiting"},
|
{"s3kc6s", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Orbiting"},
|
||||||
{"s3kc6l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Orbiting"}, // ditto
|
{"s3kc6l", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Orbiting"}, // ditto
|
||||||
{"s3kc7", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Aiming"},
|
{"s3kc7", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Aiming"},
|
||||||
|
|
Loading…
Reference in a new issue