Since I had to do a clean build to get this up to date (the state list was updated), I decided to redo all the boss explosion animations to be way more aesthetically pleasing.
Basically, think "Sonic 3". https://cdn.discordapp.com/attachments/371082353990303745/610233312765673493/srb20047.gif
This commit is contained in:
parent
c7bbefb3f8
commit
9ae750d09c
|
@ -4622,16 +4622,6 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_EGGMOBILE_DIE2",
|
"S_EGGMOBILE_DIE2",
|
||||||
"S_EGGMOBILE_DIE3",
|
"S_EGGMOBILE_DIE3",
|
||||||
"S_EGGMOBILE_DIE4",
|
"S_EGGMOBILE_DIE4",
|
||||||
"S_EGGMOBILE_DIE5",
|
|
||||||
"S_EGGMOBILE_DIE6",
|
|
||||||
"S_EGGMOBILE_DIE7",
|
|
||||||
"S_EGGMOBILE_DIE8",
|
|
||||||
"S_EGGMOBILE_DIE9",
|
|
||||||
"S_EGGMOBILE_DIE10",
|
|
||||||
"S_EGGMOBILE_DIE11",
|
|
||||||
"S_EGGMOBILE_DIE12",
|
|
||||||
"S_EGGMOBILE_DIE13",
|
|
||||||
"S_EGGMOBILE_DIE14",
|
|
||||||
"S_EGGMOBILE_FLEE1",
|
"S_EGGMOBILE_FLEE1",
|
||||||
"S_EGGMOBILE_FLEE2",
|
"S_EGGMOBILE_FLEE2",
|
||||||
"S_EGGMOBILE_BALL",
|
"S_EGGMOBILE_BALL",
|
||||||
|
@ -4652,16 +4642,6 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_EGGMOBILE2_DIE2",
|
"S_EGGMOBILE2_DIE2",
|
||||||
"S_EGGMOBILE2_DIE3",
|
"S_EGGMOBILE2_DIE3",
|
||||||
"S_EGGMOBILE2_DIE4",
|
"S_EGGMOBILE2_DIE4",
|
||||||
"S_EGGMOBILE2_DIE5",
|
|
||||||
"S_EGGMOBILE2_DIE6",
|
|
||||||
"S_EGGMOBILE2_DIE7",
|
|
||||||
"S_EGGMOBILE2_DIE8",
|
|
||||||
"S_EGGMOBILE2_DIE9",
|
|
||||||
"S_EGGMOBILE2_DIE10",
|
|
||||||
"S_EGGMOBILE2_DIE11",
|
|
||||||
"S_EGGMOBILE2_DIE12",
|
|
||||||
"S_EGGMOBILE2_DIE13",
|
|
||||||
"S_EGGMOBILE2_DIE14",
|
|
||||||
"S_EGGMOBILE2_FLEE1",
|
"S_EGGMOBILE2_FLEE1",
|
||||||
"S_EGGMOBILE2_FLEE2",
|
"S_EGGMOBILE2_FLEE2",
|
||||||
|
|
||||||
|
@ -4711,16 +4691,6 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_EGGMOBILE3_DIE2",
|
"S_EGGMOBILE3_DIE2",
|
||||||
"S_EGGMOBILE3_DIE3",
|
"S_EGGMOBILE3_DIE3",
|
||||||
"S_EGGMOBILE3_DIE4",
|
"S_EGGMOBILE3_DIE4",
|
||||||
"S_EGGMOBILE3_DIE5",
|
|
||||||
"S_EGGMOBILE3_DIE6",
|
|
||||||
"S_EGGMOBILE3_DIE7",
|
|
||||||
"S_EGGMOBILE3_DIE8",
|
|
||||||
"S_EGGMOBILE3_DIE9",
|
|
||||||
"S_EGGMOBILE3_DIE10",
|
|
||||||
"S_EGGMOBILE3_DIE11",
|
|
||||||
"S_EGGMOBILE3_DIE12",
|
|
||||||
"S_EGGMOBILE3_DIE13",
|
|
||||||
"S_EGGMOBILE3_DIE14",
|
|
||||||
"S_EGGMOBILE3_FLEE1",
|
"S_EGGMOBILE3_FLEE1",
|
||||||
"S_EGGMOBILE3_FLEE2",
|
"S_EGGMOBILE3_FLEE2",
|
||||||
|
|
||||||
|
@ -4767,16 +4737,6 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_EGGMOBILE4_DIE2",
|
"S_EGGMOBILE4_DIE2",
|
||||||
"S_EGGMOBILE4_DIE3",
|
"S_EGGMOBILE4_DIE3",
|
||||||
"S_EGGMOBILE4_DIE4",
|
"S_EGGMOBILE4_DIE4",
|
||||||
"S_EGGMOBILE4_DIE5",
|
|
||||||
"S_EGGMOBILE4_DIE6",
|
|
||||||
"S_EGGMOBILE4_DIE7",
|
|
||||||
"S_EGGMOBILE4_DIE8",
|
|
||||||
"S_EGGMOBILE4_DIE9",
|
|
||||||
"S_EGGMOBILE4_DIE10",
|
|
||||||
"S_EGGMOBILE4_DIE11",
|
|
||||||
"S_EGGMOBILE4_DIE12",
|
|
||||||
"S_EGGMOBILE4_DIE13",
|
|
||||||
"S_EGGMOBILE4_DIE14",
|
|
||||||
"S_EGGMOBILE4_FLEE1",
|
"S_EGGMOBILE4_FLEE1",
|
||||||
"S_EGGMOBILE4_FLEE2",
|
"S_EGGMOBILE4_FLEE2",
|
||||||
"S_EGGMOBILE4_MACE",
|
"S_EGGMOBILE4_MACE",
|
||||||
|
@ -5153,8 +5113,6 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_METALSONIC_DEATH4",
|
"S_METALSONIC_DEATH4",
|
||||||
"S_METALSONIC_FLEE1",
|
"S_METALSONIC_FLEE1",
|
||||||
"S_METALSONIC_FLEE2",
|
"S_METALSONIC_FLEE2",
|
||||||
"S_METALSONIC_FLEE3",
|
|
||||||
"S_METALSONIC_FLEE4",
|
|
||||||
|
|
||||||
"S_MSSHIELD_F1",
|
"S_MSSHIELD_F1",
|
||||||
"S_MSSHIELD_F2",
|
"S_MSSHIELD_F2",
|
||||||
|
|
124
src/info.c
124
src/info.c
|
@ -1043,8 +1043,8 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_CBFS, 7, 1, {A_FaceStabHurl}, 6, S_FACESTABBER_CHARGE4, S_FACESTABBER_CHARGE3}, // S_FACESTABBER_CHARGE3
|
{SPR_CBFS, 7, 1, {A_FaceStabHurl}, 6, S_FACESTABBER_CHARGE4, S_FACESTABBER_CHARGE3}, // S_FACESTABBER_CHARGE3
|
||||||
{SPR_CBFS, 7, 1, {A_FaceStabMiss}, 0, S_FACESTABBER_STND1, S_FACESTABBER_CHARGE4}, // 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, 0, 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, 0, 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
|
{SPR_STAB, FF_PAPERSPRITE|FF_TRANS50|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_FACESTABBERSPEAR
|
||||||
|
@ -1213,22 +1213,12 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_EGGM, 0, 35, {NULL}, 0, 0, S_EGGMOBILE_STND }, // S_EGGMOBILE_PANIC7
|
{SPR_EGGM, 0, 35, {NULL}, 0, 0, S_EGGMOBILE_STND }, // S_EGGMOBILE_PANIC7
|
||||||
{SPR_EGGM, 21, 24, {A_Pain}, 0, 0, S_EGGMOBILE_PAIN2}, // S_EGGMOBILE_PAIN
|
{SPR_EGGM, 21, 24, {A_Pain}, 0, 0, S_EGGMOBILE_PAIN2}, // S_EGGMOBILE_PAIN
|
||||||
{SPR_EGGM, 21, 16, {A_SkullAttack}, 1, 1, S_EGGMOBILE_STND}, // S_EGGMOBILE_PAIN2
|
{SPR_EGGM, 21, 16, {A_SkullAttack}, 1, 1, S_EGGMOBILE_STND}, // S_EGGMOBILE_PAIN2
|
||||||
{SPR_EGGM, 22, 8, {A_Fall}, 0, 0, S_EGGMOBILE_DIE2}, // S_EGGMOBILE_DIE1
|
{SPR_EGGM, 22, 2, {A_Fall}, 0, 0, S_EGGMOBILE_DIE2}, // S_EGGMOBILE_DIE1
|
||||||
{SPR_EGGM, 22, 8, {A_BossScream}, 0, 0, S_EGGMOBILE_DIE3}, // S_EGGMOBILE_DIE2
|
{SPR_EGGM, 22, 2, {A_BossScream}, 0, 0, S_EGGMOBILE_DIE3}, // S_EGGMOBILE_DIE2
|
||||||
{SPR_EGGM, 22, 8, {A_BossScream}, 0, 0, S_EGGMOBILE_DIE4}, // S_EGGMOBILE_DIE3
|
{SPR_EGGM, 22, 0, {A_Repeat}, 17, S_EGGMOBILE_DIE2, S_EGGMOBILE_DIE4}, // S_EGGMOBILE_DIE3
|
||||||
{SPR_EGGM, 22, 8, {A_BossScream}, 0, 0, S_EGGMOBILE_DIE5}, // S_EGGMOBILE_DIE4
|
{SPR_EGGM, 22, -1, {A_BossDeath}, 0, 0, S_NULL}, // S_EGGMOBILE_DIE4
|
||||||
{SPR_EGGM, 22, 8, {A_BossScream}, 0, 0, S_EGGMOBILE_DIE6}, // S_EGGMOBILE_DIE5
|
{SPR_EGGM, 23, 1, {NULL}, 0, 0, S_EGGMOBILE_FLEE2}, // S_EGGMOBILE_FLEE1
|
||||||
{SPR_EGGM, 22, 8, {A_BossScream}, 0, 0, S_EGGMOBILE_DIE7}, // S_EGGMOBILE_DIE6
|
{SPR_EGGM, 24, 1, {A_BossScream}, 0, 0, S_EGGMOBILE_FLEE1}, // S_EGGMOBILE_FLEE2
|
||||||
{SPR_EGGM, 22, 8, {A_BossScream}, 0, 0, S_EGGMOBILE_DIE8}, // S_EGGMOBILE_DIE7
|
|
||||||
{SPR_EGGM, 22, 8, {A_BossScream}, 0, 0, S_EGGMOBILE_DIE9}, // S_EGGMOBILE_DIE8
|
|
||||||
{SPR_EGGM, 22, 8, {A_BossScream}, 0, 0, S_EGGMOBILE_DIE10}, // S_EGGMOBILE_DIE9
|
|
||||||
{SPR_EGGM, 22, 8, {A_BossScream}, 0, 0, S_EGGMOBILE_DIE11}, // S_EGGMOBILE_DIE10
|
|
||||||
{SPR_EGGM, 22, 8, {A_BossScream}, 0, 0, S_EGGMOBILE_DIE12}, // S_EGGMOBILE_DIE11
|
|
||||||
{SPR_EGGM, 22, 8, {A_BossScream}, 0, 0, S_EGGMOBILE_DIE13}, // S_EGGMOBILE_DIE12
|
|
||||||
{SPR_EGGM, 22, 8, {A_BossScream}, 0, 0, S_EGGMOBILE_DIE14}, // S_EGGMOBILE_DIE13
|
|
||||||
{SPR_EGGM, 22, -1, {A_BossDeath}, 0, 0, S_NULL}, // S_EGGMOBILE_DIE14
|
|
||||||
{SPR_EGGM, 23, 5, {NULL}, 0, 0, S_EGGMOBILE_FLEE2}, // S_EGGMOBILE_FLEE1
|
|
||||||
{SPR_EGGM, 24, 5, {NULL}, 0, 0, S_EGGMOBILE_FLEE1}, // S_EGGMOBILE_FLEE2
|
|
||||||
{SPR_UNID, 1, 1, {A_UnidusBall}, 2, 0, S_EGGMOBILE_BALL}, // S_EGGMOBILE_BALL
|
{SPR_UNID, 1, 1, {A_UnidusBall}, 2, 0, S_EGGMOBILE_BALL}, // S_EGGMOBILE_BALL
|
||||||
{SPR_NULL, 0, 1, {A_FocusTarget}, 0, 0, S_EGGMOBILE_TARGET}, // S_EGGMOBILE_TARGET
|
{SPR_NULL, 0, 1, {A_FocusTarget}, 0, 0, S_EGGMOBILE_TARGET}, // S_EGGMOBILE_TARGET
|
||||||
|
|
||||||
|
@ -1243,22 +1233,12 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_EGGN, 1, 2, {NULL}, 0, 0, S_EGGMOBILE2_POGO4}, // S_EGGMOBILE2_POGO7
|
{SPR_EGGN, 1, 2, {NULL}, 0, 0, S_EGGMOBILE2_POGO4}, // S_EGGMOBILE2_POGO7
|
||||||
{SPR_EGGN, 3, 24, {A_Boss2TakeDamage}, 24+TICRATE, 0, S_EGGMOBILE2_STND}, // S_EGGMOBILE2_PAIN
|
{SPR_EGGN, 3, 24, {A_Boss2TakeDamage}, 24+TICRATE, 0, S_EGGMOBILE2_STND}, // S_EGGMOBILE2_PAIN
|
||||||
{SPR_EGGN, 4, 24, {A_Boss2TakeDamage}, 24+TICRATE, 0, S_EGGMOBILE2_POGO4}, // S_EGGMOBILE2_PAIN2
|
{SPR_EGGN, 4, 24, {A_Boss2TakeDamage}, 24+TICRATE, 0, S_EGGMOBILE2_POGO4}, // S_EGGMOBILE2_PAIN2
|
||||||
{SPR_EGGN, 5, 8, {A_Fall}, 0, 0, S_EGGMOBILE2_DIE2}, // S_EGGMOBILE2_DIE1
|
{SPR_EGGN, 5, 2, {A_Fall}, 0, 0, S_EGGMOBILE2_DIE2}, // S_EGGMOBILE2_DIE1
|
||||||
{SPR_EGGN, 5, 8, {A_BossScream}, 0, 0, S_EGGMOBILE2_DIE3}, // S_EGGMOBILE2_DIE2
|
{SPR_EGGN, 5, 2, {A_BossScream}, 0, 0, S_EGGMOBILE2_DIE3}, // S_EGGMOBILE2_DIE2
|
||||||
{SPR_EGGN, 5, 8, {A_BossScream}, 0, 0, S_EGGMOBILE2_DIE4}, // S_EGGMOBILE2_DIE3
|
{SPR_EGGN, 5, 0, {A_Repeat}, 17, S_EGGMOBILE2_DIE2, S_EGGMOBILE2_DIE4}, // S_EGGMOBILE2_DIE3
|
||||||
{SPR_EGGN, 5, 8, {A_BossScream}, 0, 0, S_EGGMOBILE2_DIE5}, // S_EGGMOBILE2_DIE4
|
{SPR_EGGN, 5, -1, {A_BossDeath}, 0, 0, S_NULL}, // S_EGGMOBILE2_DIE4
|
||||||
{SPR_EGGN, 5, 8, {A_BossScream}, 0, 0, S_EGGMOBILE2_DIE6}, // S_EGGMOBILE2_DIE5
|
{SPR_EGGN, 6, 1, {NULL}, 0, 0, S_EGGMOBILE2_FLEE2}, // S_EGGMOBILE2_FLEE1
|
||||||
{SPR_EGGN, 5, 8, {A_BossScream}, 0, 0, S_EGGMOBILE2_DIE7}, // S_EGGMOBILE2_DIE6
|
{SPR_EGGN, 7, 1, {A_BossScream}, 0, 0, S_EGGMOBILE2_FLEE1}, // S_EGGMOBILE2_FLEE2
|
||||||
{SPR_EGGN, 5, 8, {A_BossScream}, 0, 0, S_EGGMOBILE2_DIE8}, // S_EGGMOBILE2_DIE7
|
|
||||||
{SPR_EGGN, 5, 8, {A_BossScream}, 0, 0, S_EGGMOBILE2_DIE9}, // S_EGGMOBILE2_DIE8
|
|
||||||
{SPR_EGGN, 5, 8, {A_BossScream}, 0, 0, S_EGGMOBILE2_DIE10}, // S_EGGMOBILE2_DIE9
|
|
||||||
{SPR_EGGN, 5, 8, {A_BossScream}, 0, 0, S_EGGMOBILE2_DIE11}, // S_EGGMOBILE2_DIE10
|
|
||||||
{SPR_EGGN, 5, 8, {A_BossScream}, 0, 0, S_EGGMOBILE2_DIE12}, // S_EGGMOBILE2_DIE11
|
|
||||||
{SPR_EGGN, 5, 8, {A_BossScream}, 0, 0, S_EGGMOBILE2_DIE13}, // S_EGGMOBILE2_DIE12
|
|
||||||
{SPR_EGGN, 5, 8, {A_BossScream}, 0, 0, S_EGGMOBILE2_DIE14}, // S_EGGMOBILE2_DIE13
|
|
||||||
{SPR_EGGN, 5, -1, {A_BossDeath}, 0, 0, S_NULL}, // S_EGGMOBILE2_DIE14
|
|
||||||
{SPR_EGGN, 6, 5, {NULL}, 0, 0, S_EGGMOBILE2_FLEE2}, // S_EGGMOBILE2_FLEE1
|
|
||||||
{SPR_EGGN, 7, 5, {NULL}, 0, 0, S_EGGMOBILE2_FLEE1}, // S_EGGMOBILE2_FLEE2
|
|
||||||
|
|
||||||
{SPR_TNKA, 0, 35, {NULL}, 0, 0, S_NULL}, // S_BOSSTANK1
|
{SPR_TNKA, 0, 35, {NULL}, 0, 0, S_NULL}, // S_BOSSTANK1
|
||||||
{SPR_TNKB, 0, 35, {NULL}, 0, 0, S_NULL}, // S_BOSSTANK2
|
{SPR_TNKB, 0, 35, {NULL}, 0, 0, S_NULL}, // S_BOSSTANK2
|
||||||
|
@ -1302,22 +1282,12 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_EGGO, 7, 4, {NULL}, 0, 0, S_EGGMOBILE3_STND}, // S_EGGMOBILE3_LAUGH20
|
{SPR_EGGO, 7, 4, {NULL}, 0, 0, S_EGGMOBILE3_STND}, // S_EGGMOBILE3_LAUGH20
|
||||||
{SPR_EGGO, 8, 1, {A_Boss3TakeDamage}, 0, 0, S_EGGMOBILE3_PAIN2}, // S_EGGMOBILE3_PAIN
|
{SPR_EGGO, 8, 1, {A_Boss3TakeDamage}, 0, 0, S_EGGMOBILE3_PAIN2}, // S_EGGMOBILE3_PAIN
|
||||||
{SPR_EGGO, 8, 23, {A_Pain}, 0, 0, S_EGGMOBILE3_STND}, // S_EGGMOBILE3_PAIN2
|
{SPR_EGGO, 8, 23, {A_Pain}, 0, 0, S_EGGMOBILE3_STND}, // S_EGGMOBILE3_PAIN2
|
||||||
{SPR_EGGO, 9, 8, {A_Fall}, 0, 0, S_EGGMOBILE3_DIE2}, // S_EGGMOBILE3_DIE1
|
{SPR_EGGO, 9, 2, {A_Fall}, 0, 0, S_EGGMOBILE3_DIE2}, // S_EGGMOBILE3_DIE1
|
||||||
{SPR_EGGO, 9, 8, {A_BossScream}, 0, 0, S_EGGMOBILE3_DIE3}, // S_EGGMOBILE3_DIE2
|
{SPR_EGGO, 9, 2, {A_BossScream}, 0, 0, S_EGGMOBILE3_DIE3}, // S_EGGMOBILE3_DIE2
|
||||||
{SPR_EGGO, 9, 8, {A_BossScream}, 0, 0, S_EGGMOBILE3_DIE4}, // S_EGGMOBILE3_DIE3
|
{SPR_EGGO, 9, 0, {A_Repeat}, 17, S_EGGMOBILE3_DIE2, S_EGGMOBILE3_DIE4}, // S_EGGMOBILE3_DIE3
|
||||||
{SPR_EGGO, 9, 8, {A_BossScream}, 0, 0, S_EGGMOBILE3_DIE5}, // S_EGGMOBILE3_DIE4
|
{SPR_EGGO, 9, -1, {A_BossDeath}, 0, 0, S_NULL}, // S_EGGMOBILE3_DIE4
|
||||||
{SPR_EGGO, 9, 8, {A_BossScream}, 0, 0, S_EGGMOBILE3_DIE6}, // S_EGGMOBILE3_DIE5
|
{SPR_EGGO, 10, 1, {NULL}, 0, 0, S_EGGMOBILE3_FLEE2}, // S_EGGMOBILE3_FLEE1
|
||||||
{SPR_EGGO, 9, 8, {A_BossScream}, 0, 0, S_EGGMOBILE3_DIE7}, // S_EGGMOBILE3_DIE6
|
{SPR_EGGO, 11, 1, {A_BossScream}, 0, 0, S_EGGMOBILE3_FLEE1}, // S_EGGMOBILE3_FLEE2
|
||||||
{SPR_EGGO, 9, 8, {A_BossScream}, 0, 0, S_EGGMOBILE3_DIE8}, // S_EGGMOBILE3_DIE7
|
|
||||||
{SPR_EGGO, 9, 8, {A_BossScream}, 0, 0, S_EGGMOBILE3_DIE9}, // S_EGGMOBILE3_DIE8
|
|
||||||
{SPR_EGGO, 9, 8, {A_BossScream}, 0, 0, S_EGGMOBILE3_DIE10}, // S_EGGMOBILE3_DIE9
|
|
||||||
{SPR_EGGO, 9, 8, {A_BossScream}, 0, 0, S_EGGMOBILE3_DIE11}, // S_EGGMOBILE3_DIE10
|
|
||||||
{SPR_EGGO, 9, 8, {A_BossScream}, 0, 0, S_EGGMOBILE3_DIE12}, // S_EGGMOBILE3_DIE11
|
|
||||||
{SPR_EGGO, 9, 8, {A_BossScream}, 0, 0, S_EGGMOBILE3_DIE13}, // S_EGGMOBILE3_DIE12
|
|
||||||
{SPR_EGGO, 9, 8, {A_BossScream}, 0, 0, S_EGGMOBILE3_DIE14}, // S_EGGMOBILE3_DIE13
|
|
||||||
{SPR_EGGO, 9, -1, {A_BossDeath}, 0, 0, S_NULL}, // S_EGGMOBILE3_DIE14
|
|
||||||
{SPR_EGGO, 10, 5, {NULL}, 0, 0, S_EGGMOBILE3_FLEE2}, // S_EGGMOBILE3_FLEE1
|
|
||||||
{SPR_EGGO, 11, 5, {NULL}, 0, 0, S_EGGMOBILE3_FLEE1}, // S_EGGMOBILE3_FLEE2
|
|
||||||
|
|
||||||
// Boss 3 Propeller
|
// Boss 3 Propeller
|
||||||
{SPR_PRPL, 0, 1, {NULL}, 0, 0, S_PROPELLER2}, // S_PROPELLER1
|
{SPR_PRPL, 0, 1, {NULL}, 0, 0, S_PROPELLER2}, // S_PROPELLER1
|
||||||
|
@ -1358,26 +1328,16 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_EGGP,13|FF_ANIMATE, -1, {NULL}, 1, 10, S_NULL}, // S_EGGMOBILE4_RAISE2
|
{SPR_EGGP,13|FF_ANIMATE, -1, {NULL}, 1, 10, S_NULL}, // S_EGGMOBILE4_RAISE2
|
||||||
{SPR_EGGP,11, 0, {A_Boss4Reverse}, sfx_alarm, sfx_s3k60, S_EGGMOBILE4_PAIN2}, // S_EGGMOBILE4_PAIN1
|
{SPR_EGGP,11, 0, {A_Boss4Reverse}, sfx_alarm, sfx_s3k60, S_EGGMOBILE4_PAIN2}, // S_EGGMOBILE4_PAIN1
|
||||||
{SPR_EGGP,11, 24, {A_Pain}, 0, 0, S_EGGMOBILE4_STND}, // S_EGGMOBILE4_PAIN2
|
{SPR_EGGP,11, 24, {A_Pain}, 0, 0, S_EGGMOBILE4_STND}, // S_EGGMOBILE4_PAIN2
|
||||||
{SPR_EGGP,12, 8, {A_Fall}, 0, 0, S_EGGMOBILE4_DIE2}, // S_EGGMOBILE4_DIE1
|
{SPR_EGGP,12, 2, {A_Fall}, 0, 0, S_EGGMOBILE4_DIE2}, // S_EGGMOBILE4_DIE1
|
||||||
{SPR_EGGP,12, 8, {A_BossScream}, 0, 0, S_EGGMOBILE4_DIE3}, // S_EGGMOBILE4_DIE2
|
{SPR_EGGP,12, 2, {A_BossScream}, 0, 0, S_EGGMOBILE4_DIE3}, // S_EGGMOBILE4_DIE2
|
||||||
{SPR_EGGP,12, 8, {A_BossScream}, 0, 0, S_EGGMOBILE4_DIE4}, // S_EGGMOBILE4_DIE3
|
{SPR_EGGP,12, 0, {A_Repeat}, 17, S_EGGMOBILE4_DIE2, S_EGGMOBILE4_DIE4}, // S_EGGMOBILE4_DIE3
|
||||||
{SPR_EGGP,12, 8, {A_BossScream}, 0, 0, S_EGGMOBILE4_DIE5}, // S_EGGMOBILE4_DIE4
|
{SPR_EGGP,12, -1, {A_BossDeath}, 0, 0, S_NULL}, // S_EGGMOBILE4_DIE4
|
||||||
{SPR_EGGP,12, 8, {A_BossScream}, 0, 0, S_EGGMOBILE4_DIE6}, // S_EGGMOBILE4_DIE5
|
{SPR_EGGP,13, 1, {NULL}, 0, 0, S_EGGMOBILE4_FLEE2}, // S_EGGMOBILE4_FLEE1
|
||||||
{SPR_EGGP,12, 8, {A_BossScream}, 0, 0, S_EGGMOBILE4_DIE7}, // S_EGGMOBILE4_DIE6
|
{SPR_EGGP,14, 1, {A_BossScream}, 0, 0, S_EGGMOBILE4_FLEE1}, // S_EGGMOBILE4_FLEE2
|
||||||
{SPR_EGGP,12, 8, {A_BossScream}, 0, 0, S_EGGMOBILE4_DIE8}, // S_EGGMOBILE4_DIE7
|
|
||||||
{SPR_EGGP,12, 8, {A_BossScream}, 0, 0, S_EGGMOBILE4_DIE9}, // S_EGGMOBILE4_DIE8
|
|
||||||
{SPR_EGGP,12, 8, {A_BossScream}, 0, 0, S_EGGMOBILE4_DIE10}, // S_EGGMOBILE4_DIE9
|
|
||||||
{SPR_EGGP,12, 8, {A_BossScream}, 0, 0, S_EGGMOBILE4_DIE11}, // S_EGGMOBILE4_DIE10
|
|
||||||
{SPR_EGGP,12, 8, {A_BossScream}, 0, 0, S_EGGMOBILE4_DIE12}, // S_EGGMOBILE4_DIE11
|
|
||||||
{SPR_EGGP,12, 8, {A_BossScream}, 0, 0, S_EGGMOBILE4_DIE13}, // S_EGGMOBILE4_DIE12
|
|
||||||
{SPR_EGGP,12, 8, {A_BossScream}, 0, 0, S_EGGMOBILE4_DIE14}, // S_EGGMOBILE4_DIE13
|
|
||||||
{SPR_EGGP,12, -1, {A_BossDeath}, 0, 0, S_NULL}, // S_EGGMOBILE4_DIE14
|
|
||||||
{SPR_EGGP,13, 5, {NULL}, 0, 0, S_EGGMOBILE4_FLEE2}, // S_EGGMOBILE4_FLEE1
|
|
||||||
{SPR_EGGP,14, 5, {NULL}, 0, 0, S_EGGMOBILE4_FLEE1}, // S_EGGMOBILE4_FLEE2
|
|
||||||
{SPR_BMCE, 0, -1, {NULL}, 0, 0, S_NULL}, // S_EGGMOBILE4_MACE
|
{SPR_BMCE, 0, -1, {NULL}, 0, 0, S_NULL}, // S_EGGMOBILE4_MACE
|
||||||
{SPR_BMCE, 0, 2, {A_BossScream}, 1, MT_SONIC3KBOSSEXPLODE, S_EGGMOBILE4_MACE_DIE2}, // S_EGGMOBILE4_MACE_DIE1
|
{SPR_BMCE, 0, 2, {A_BossScream}, 1, 0, S_EGGMOBILE4_MACE_DIE2}, // S_EGGMOBILE4_MACE_DIE1
|
||||||
{SPR_NULL, 0, 2, {A_BossScream}, 1, MT_SONIC3KBOSSEXPLODE, S_EGGMOBILE4_MACE_DIE3}, // S_EGGMOBILE4_MACE_DIE2
|
{SPR_NULL, 0, 2, {A_BossScream}, 1, 0, S_EGGMOBILE4_MACE_DIE3}, // S_EGGMOBILE4_MACE_DIE2
|
||||||
{SPR_NULL, 0, 0, {A_Repeat}, 7, S_EGGMOBILE4_MACE_DIE1, S_BOSSEXPLODE}, // S_EGGMOBILE4_MACE_DIE3
|
{SPR_NULL, 0, 0, {A_Repeat}, 7, S_EGGMOBILE4_MACE_DIE1, S_SONIC3KBOSSEXPLOSION1}, // S_EGGMOBILE4_MACE_DIE3
|
||||||
|
|
||||||
// Boss 4 jet flame
|
// Boss 4 jet flame
|
||||||
{SPR_EFIR, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 1, 1, S_NULL}, // S_JETFLAME
|
{SPR_EFIR, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 1, 1, S_NULL}, // S_JETFLAME
|
||||||
|
@ -1618,7 +1578,7 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_BRAK, 18, 0, {A_CheckHealth}, 3, S_CYBRAKDEMON_PAIN3, S_CYBRAKDEMON_CHOOSE_ATTACK1}, // S_CYBRAKDEMON_PAIN2
|
{SPR_BRAK, 18, 0, {A_CheckHealth}, 3, S_CYBRAKDEMON_PAIN3, S_CYBRAKDEMON_CHOOSE_ATTACK1}, // S_CYBRAKDEMON_PAIN2
|
||||||
{SPR_BRAK, 18, 0, {A_LinedefExecute}, LE_PINCHPHASE, 0, S_CYBRAKDEMON_CHOOSE_ATTACK1}, // S_CYBRAKDEMON_PAIN3
|
{SPR_BRAK, 18, 0, {A_LinedefExecute}, LE_PINCHPHASE, 0, S_CYBRAKDEMON_CHOOSE_ATTACK1}, // S_CYBRAKDEMON_PAIN3
|
||||||
{SPR_BRAK, 18, 1, {A_Repeat}, 1, S_CYBRAKDEMON_DIE1, S_CYBRAKDEMON_DIE2}, // S_CYBRAKDEMON_DIE1
|
{SPR_BRAK, 18, 1, {A_Repeat}, 1, S_CYBRAKDEMON_DIE1, S_CYBRAKDEMON_DIE2}, // S_CYBRAKDEMON_DIE1
|
||||||
{SPR_BRAK, 18, 2, {A_BossScream}, 0, MT_SONIC3KBOSSEXPLODE, S_CYBRAKDEMON_DIE3}, // S_CYBRAKDEMON_DIE2
|
{SPR_BRAK, 18, 2, {A_BossScream}, 0, 0, S_CYBRAKDEMON_DIE3}, // S_CYBRAKDEMON_DIE2
|
||||||
{SPR_BRAK, 18, 0, {A_Repeat}, 52, S_CYBRAKDEMON_DIE2, S_CYBRAKDEMON_DIE4}, // S_CYBRAKDEMON_DIE3
|
{SPR_BRAK, 18, 0, {A_Repeat}, 52, S_CYBRAKDEMON_DIE2, S_CYBRAKDEMON_DIE4}, // S_CYBRAKDEMON_DIE3
|
||||||
{SPR_BRAK, 13, 14, {A_PlaySound}, sfx_bedie2, 0, S_CYBRAKDEMON_DIE5}, // S_CYBRAKDEMON_DIE4
|
{SPR_BRAK, 13, 14, {A_PlaySound}, sfx_bedie2, 0, S_CYBRAKDEMON_DIE5}, // S_CYBRAKDEMON_DIE4
|
||||||
{SPR_BRAK, 14, 7, {NULL}, 0, 0, S_CYBRAKDEMON_DIE6}, // S_CYBRAKDEMON_DIE5
|
{SPR_BRAK, 14, 7, {NULL}, 0, 0, S_CYBRAKDEMON_DIE6}, // S_CYBRAKDEMON_DIE5
|
||||||
|
@ -1734,7 +1694,7 @@ state_t states[NUMSTATES] =
|
||||||
|
|
||||||
{SPR_NULL, 0, 1, {A_SetFuse}, TICRATE, 0, S_CYBRAKDEMONVILEEXPLOSION2}, //S_CYBRAKDEMONVILEEXPLOSION1,
|
{SPR_NULL, 0, 1, {A_SetFuse}, TICRATE, 0, S_CYBRAKDEMONVILEEXPLOSION2}, //S_CYBRAKDEMONVILEEXPLOSION1,
|
||||||
{SPR_NULL, 0, 0, {A_ScoreRise}, 0, 0, S_CYBRAKDEMONVILEEXPLOSION3}, //S_CYBRAKDEMONVILEEXPLOSION2,
|
{SPR_NULL, 0, 0, {A_ScoreRise}, 0, 0, S_CYBRAKDEMONVILEEXPLOSION3}, //S_CYBRAKDEMONVILEEXPLOSION2,
|
||||||
{SPR_NULL, 0, 1, {A_BossScream}, 0, MT_SONIC3KBOSSEXPLODE, S_CYBRAKDEMONVILEEXPLOSION1}, //S_CYBRAKDEMONVILEEXPLOSION3,
|
{SPR_NULL, 0, 1, {A_BossScream}, 0, 0, S_CYBRAKDEMONVILEEXPLOSION1}, //S_CYBRAKDEMONVILEEXPLOSION3,
|
||||||
|
|
||||||
// Metal Sonic
|
// Metal Sonic
|
||||||
{SPR_METL, 0, 35, {NULL}, 0, 0, S_METALSONIC_WAIT1}, // S_METALSONIC_STAND
|
{SPR_METL, 0, 35, {NULL}, 0, 0, S_METALSONIC_WAIT1}, // S_METALSONIC_STAND
|
||||||
|
@ -1763,14 +1723,12 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_METL, 16, -1, {NULL}, 0, 0, S_NULL}, // S_METALSONIC_BADBOUNCE
|
{SPR_METL, 16, -1, {NULL}, 0, 0, S_NULL}, // S_METALSONIC_BADBOUNCE
|
||||||
{SPR_METL, 13, -1, {NULL}, 0, 0, S_METALSONIC_GATHER},// S_METALSONIC_SHOOT
|
{SPR_METL, 13, -1, {NULL}, 0, 0, S_METALSONIC_GATHER},// S_METALSONIC_SHOOT
|
||||||
{SPR_METL, 11, 40, {A_Pain}, 0, 0, S_METALSONIC_FLOAT}, // S_METALSONIC_PAIN
|
{SPR_METL, 11, 40, {A_Pain}, 0, 0, S_METALSONIC_FLOAT}, // S_METALSONIC_PAIN
|
||||||
{SPR_METL, 13, 8, {A_Fall}, 0, 0, S_METALSONIC_DEATH2},// S_METALSONIC_DEATH1
|
{SPR_METL, 13, 2, {A_Fall}, 0, 0, S_METALSONIC_DEATH2},// S_METALSONIC_DEATH1
|
||||||
{SPR_METL, 13, 8, {A_BossScream}, 0, 0, S_METALSONIC_DEATH3},// S_METALSONIC_DEATH2
|
{SPR_METL, 13, 4, {A_BossScream}, 0, 0, S_METALSONIC_DEATH3},// S_METALSONIC_DEATH2
|
||||||
{SPR_METL, 13, 0, {A_Repeat}, 11, S_METALSONIC_DEATH2, S_METALSONIC_DEATH4}, // S_METALSONIC_DEATH3
|
{SPR_METL, 13, 0, {A_Repeat}, 8, S_METALSONIC_DEATH2, S_METALSONIC_DEATH4}, // S_METALSONIC_DEATH3
|
||||||
{SPR_METL, 13, -1, {A_BossDeath}, 0, 0, S_NULL}, // S_METALSONIC_DEATH4
|
{SPR_METL, 13, -1, {A_BossDeath}, 0, 0, S_NULL}, // S_METALSONIC_DEATH4
|
||||||
{SPR_METL, 11, 4, {NULL}, 0, 0, S_METALSONIC_FLEE2}, // S_METALSONIC_FLEE1
|
{SPR_METL, 11, 7, {NULL}, 0, 0, S_METALSONIC_FLEE2}, // S_METALSONIC_FLEE1
|
||||||
{SPR_METL, 11, 4, {A_BossScream}, 0, 0, S_METALSONIC_FLEE3}, // S_METALSONIC_FLEE2
|
{SPR_METL, 11, 1, {A_BossScream}, 0, 0, S_METALSONIC_FLEE1}, // S_METALSONIC_FLEE2
|
||||||
{SPR_METL, 11, 4, {NULL}, 0, 0, S_METALSONIC_FLEE4}, // S_METALSONIC_FLEE3
|
|
||||||
{SPR_METL, 11, 4, {NULL}, 0, 0, S_METALSONIC_FLEE1}, // S_METALSONIC_FLEE4
|
|
||||||
|
|
||||||
{SPR_MSCF, FF_FULLBRIGHT|FF_TRANS30| 0, 1, {NULL}, 0, 0, S_MSSHIELD_F2}, // S_MSSHIELD_F1
|
{SPR_MSCF, FF_FULLBRIGHT|FF_TRANS30| 0, 1, {NULL}, 0, 0, S_MSSHIELD_F2}, // S_MSSHIELD_F1
|
||||||
{SPR_MSCF, FF_FULLBRIGHT|FF_TRANS30| 1, 1, {NULL}, 0, 0, S_MSSHIELD_F3}, // S_MSSHIELD_F2
|
{SPR_MSCF, FF_FULLBRIGHT|FF_TRANS30| 1, 1, {NULL}, 0, 0, S_MSSHIELD_F3}, // S_MSSHIELD_F2
|
||||||
|
@ -3733,8 +3691,8 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_HIVE, 2, 2, {NULL}, 0, 0, S_HIVEELEMENTAL_DORMANT}, // S_HIVEELEMENTAL_SHOOT2
|
{SPR_HIVE, 2, 2, {NULL}, 0, 0, S_HIVEELEMENTAL_DORMANT}, // S_HIVEELEMENTAL_SHOOT2
|
||||||
{SPR_HIVE, 0, 5, {A_ParentTriesToSleep}, S_HIVEELEMENTAL_PREPARE1, 0, S_HIVEELEMENTAL_DORMANT}, // S_HIVEELEMENTAL_DORMANT
|
{SPR_HIVE, 0, 5, {A_ParentTriesToSleep}, S_HIVEELEMENTAL_PREPARE1, 0, S_HIVEELEMENTAL_DORMANT}, // S_HIVEELEMENTAL_DORMANT
|
||||||
{SPR_HIVE, 3, 35, {A_Pain}, 0, 0, S_HIVEELEMENTAL_LOOK}, // S_HIVEELEMENTAL_PAIN
|
{SPR_HIVE, 3, 35, {A_Pain}, 0, 0, S_HIVEELEMENTAL_LOOK}, // S_HIVEELEMENTAL_PAIN
|
||||||
{SPR_HIVE, 3, 2, {A_BossScream}, 1, MT_SONIC3KBOSSEXPLODE, S_HIVEELEMENTAL_DIE2}, // S_HIVEELEMENTAL_DIE1
|
{SPR_HIVE, 3, 2, {A_BossScream}, 1, 0, S_HIVEELEMENTAL_DIE2}, // S_HIVEELEMENTAL_DIE1
|
||||||
{SPR_NULL, 0, 2, {A_BossScream}, 1, MT_SONIC3KBOSSEXPLODE, S_HIVEELEMENTAL_DIE3}, // S_HIVEELEMENTAL_DIE2
|
{SPR_NULL, 0, 2, {A_BossScream}, 1, 0, S_HIVEELEMENTAL_DIE3}, // S_HIVEELEMENTAL_DIE2
|
||||||
{SPR_NULL, 0, 0, {A_Repeat}, 7, S_HIVEELEMENTAL_DIE1, S_XPLD_FLICKY}, // S_HIVEELEMENTAL_DIE3
|
{SPR_NULL, 0, 0, {A_Repeat}, 7, S_HIVEELEMENTAL_DIE1, S_XPLD_FLICKY}, // S_HIVEELEMENTAL_DIE3
|
||||||
|
|
||||||
{SPR_BUMB, 1, 10, {NULL}, 0, 0, S_BUMBLEBORE_LOOK1}, // S_BUMBLEBORE_SPAWN
|
{SPR_BUMB, 1, 10, {NULL}, 0, 0, S_BUMBLEBORE_LOOK1}, // S_BUMBLEBORE_SPAWN
|
||||||
|
@ -5396,7 +5354,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP, // flags
|
MF_SCENERY|MF_NOBLOCKMAP|MF_NOCLIPHEIGHT, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -5423,7 +5381,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP, // flags
|
MF_SCENERY|MF_NOBLOCKMAP|MF_NOCLIPHEIGHT, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -5450,7 +5408,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
100, // mass
|
100, // mass
|
||||||
1, // damage
|
1, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP, // flags
|
MF_SCENERY|MF_NOBLOCKMAP|MF_NOCLIPHEIGHT, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
42
src/info.h
42
src/info.h
|
@ -1370,16 +1370,6 @@ typedef enum state
|
||||||
S_EGGMOBILE_DIE2,
|
S_EGGMOBILE_DIE2,
|
||||||
S_EGGMOBILE_DIE3,
|
S_EGGMOBILE_DIE3,
|
||||||
S_EGGMOBILE_DIE4,
|
S_EGGMOBILE_DIE4,
|
||||||
S_EGGMOBILE_DIE5,
|
|
||||||
S_EGGMOBILE_DIE6,
|
|
||||||
S_EGGMOBILE_DIE7,
|
|
||||||
S_EGGMOBILE_DIE8,
|
|
||||||
S_EGGMOBILE_DIE9,
|
|
||||||
S_EGGMOBILE_DIE10,
|
|
||||||
S_EGGMOBILE_DIE11,
|
|
||||||
S_EGGMOBILE_DIE12,
|
|
||||||
S_EGGMOBILE_DIE13,
|
|
||||||
S_EGGMOBILE_DIE14,
|
|
||||||
S_EGGMOBILE_FLEE1,
|
S_EGGMOBILE_FLEE1,
|
||||||
S_EGGMOBILE_FLEE2,
|
S_EGGMOBILE_FLEE2,
|
||||||
S_EGGMOBILE_BALL,
|
S_EGGMOBILE_BALL,
|
||||||
|
@ -1400,16 +1390,6 @@ typedef enum state
|
||||||
S_EGGMOBILE2_DIE2,
|
S_EGGMOBILE2_DIE2,
|
||||||
S_EGGMOBILE2_DIE3,
|
S_EGGMOBILE2_DIE3,
|
||||||
S_EGGMOBILE2_DIE4,
|
S_EGGMOBILE2_DIE4,
|
||||||
S_EGGMOBILE2_DIE5,
|
|
||||||
S_EGGMOBILE2_DIE6,
|
|
||||||
S_EGGMOBILE2_DIE7,
|
|
||||||
S_EGGMOBILE2_DIE8,
|
|
||||||
S_EGGMOBILE2_DIE9,
|
|
||||||
S_EGGMOBILE2_DIE10,
|
|
||||||
S_EGGMOBILE2_DIE11,
|
|
||||||
S_EGGMOBILE2_DIE12,
|
|
||||||
S_EGGMOBILE2_DIE13,
|
|
||||||
S_EGGMOBILE2_DIE14,
|
|
||||||
S_EGGMOBILE2_FLEE1,
|
S_EGGMOBILE2_FLEE1,
|
||||||
S_EGGMOBILE2_FLEE2,
|
S_EGGMOBILE2_FLEE2,
|
||||||
|
|
||||||
|
@ -1459,16 +1439,6 @@ typedef enum state
|
||||||
S_EGGMOBILE3_DIE2,
|
S_EGGMOBILE3_DIE2,
|
||||||
S_EGGMOBILE3_DIE3,
|
S_EGGMOBILE3_DIE3,
|
||||||
S_EGGMOBILE3_DIE4,
|
S_EGGMOBILE3_DIE4,
|
||||||
S_EGGMOBILE3_DIE5,
|
|
||||||
S_EGGMOBILE3_DIE6,
|
|
||||||
S_EGGMOBILE3_DIE7,
|
|
||||||
S_EGGMOBILE3_DIE8,
|
|
||||||
S_EGGMOBILE3_DIE9,
|
|
||||||
S_EGGMOBILE3_DIE10,
|
|
||||||
S_EGGMOBILE3_DIE11,
|
|
||||||
S_EGGMOBILE3_DIE12,
|
|
||||||
S_EGGMOBILE3_DIE13,
|
|
||||||
S_EGGMOBILE3_DIE14,
|
|
||||||
S_EGGMOBILE3_FLEE1,
|
S_EGGMOBILE3_FLEE1,
|
||||||
S_EGGMOBILE3_FLEE2,
|
S_EGGMOBILE3_FLEE2,
|
||||||
|
|
||||||
|
@ -1515,16 +1485,6 @@ typedef enum state
|
||||||
S_EGGMOBILE4_DIE2,
|
S_EGGMOBILE4_DIE2,
|
||||||
S_EGGMOBILE4_DIE3,
|
S_EGGMOBILE4_DIE3,
|
||||||
S_EGGMOBILE4_DIE4,
|
S_EGGMOBILE4_DIE4,
|
||||||
S_EGGMOBILE4_DIE5,
|
|
||||||
S_EGGMOBILE4_DIE6,
|
|
||||||
S_EGGMOBILE4_DIE7,
|
|
||||||
S_EGGMOBILE4_DIE8,
|
|
||||||
S_EGGMOBILE4_DIE9,
|
|
||||||
S_EGGMOBILE4_DIE10,
|
|
||||||
S_EGGMOBILE4_DIE11,
|
|
||||||
S_EGGMOBILE4_DIE12,
|
|
||||||
S_EGGMOBILE4_DIE13,
|
|
||||||
S_EGGMOBILE4_DIE14,
|
|
||||||
S_EGGMOBILE4_FLEE1,
|
S_EGGMOBILE4_FLEE1,
|
||||||
S_EGGMOBILE4_FLEE2,
|
S_EGGMOBILE4_FLEE2,
|
||||||
S_EGGMOBILE4_MACE,
|
S_EGGMOBILE4_MACE,
|
||||||
|
@ -1901,8 +1861,6 @@ typedef enum state
|
||||||
S_METALSONIC_DEATH4,
|
S_METALSONIC_DEATH4,
|
||||||
S_METALSONIC_FLEE1,
|
S_METALSONIC_FLEE1,
|
||||||
S_METALSONIC_FLEE2,
|
S_METALSONIC_FLEE2,
|
||||||
S_METALSONIC_FLEE3,
|
|
||||||
S_METALSONIC_FLEE4,
|
|
||||||
|
|
||||||
S_MSSHIELD_F1,
|
S_MSSHIELD_F1,
|
||||||
S_MSSHIELD_F2,
|
S_MSSHIELD_F2,
|
||||||
|
|
|
@ -3349,7 +3349,7 @@ void A_BossZoom(mobj_t *actor)
|
||||||
// var1:
|
// var1:
|
||||||
// 0 - Use movecount to spawn explosions evenly
|
// 0 - Use movecount to spawn explosions evenly
|
||||||
// 1 - Use P_Random to spawn explosions at complete random
|
// 1 - Use P_Random to spawn explosions at complete random
|
||||||
// var2 = Object to spawn. Default is MT_BOSSEXPLODE.
|
// var2 = Object to spawn. Default is MT_SONIC3KBOSSEXPLODE.
|
||||||
//
|
//
|
||||||
void A_BossScream(mobj_t *actor)
|
void A_BossScream(mobj_t *actor)
|
||||||
{
|
{
|
||||||
|
@ -3381,7 +3381,7 @@ void A_BossScream(mobj_t *actor)
|
||||||
|
|
||||||
// Determine what mobj to spawn. If undefined or invalid, use MT_BOSSEXPLODE as default.
|
// Determine what mobj to spawn. If undefined or invalid, use MT_BOSSEXPLODE as default.
|
||||||
if (locvar2 <= 0 || locvar2 >= NUMMOBJTYPES)
|
if (locvar2 <= 0 || locvar2 >= NUMMOBJTYPES)
|
||||||
explodetype = MT_BOSSEXPLODE;
|
explodetype = MT_SONIC3KBOSSEXPLODE; //MT_BOSSEXPLODE; -- piss to you, sonic 2
|
||||||
else
|
else
|
||||||
explodetype = (mobjtype_t)locvar2;
|
explodetype = (mobjtype_t)locvar2;
|
||||||
|
|
||||||
|
@ -3948,14 +3948,24 @@ bossjustdie:
|
||||||
mo->flags |= MF_NOGRAVITY|MF_NOCLIP;
|
mo->flags |= MF_NOGRAVITY|MF_NOCLIP;
|
||||||
mo->flags |= MF_NOCLIPHEIGHT;
|
mo->flags |= MF_NOCLIPHEIGHT;
|
||||||
|
|
||||||
|
mo->movedir = 0;
|
||||||
|
mo->extravalue1 = 35;
|
||||||
|
mo->flags2 |= MF2_BOSSFLEE;
|
||||||
|
mo->momz = 2*mo->scale;
|
||||||
|
|
||||||
if (mo->target)
|
if (mo->target)
|
||||||
{
|
{
|
||||||
mo->angle = R_PointToAngle2(mo->x, mo->y, mo->target->x, mo->target->y);
|
angle_t diff = R_PointToAngle2(mo->x, mo->y, mo->target->x, mo->target->y) - mo->angle;
|
||||||
mo->flags2 |= MF2_BOSSFLEE;
|
if (diff)
|
||||||
mo->momz = FixedMul(FixedDiv(mo->target->z - mo->z, P_AproxDistance(mo->x-mo->target->x,mo->y-mo->target->y)), FixedMul(2*FRACUNIT, mo->scale));
|
{
|
||||||
}
|
if (diff > ANGLE_180)
|
||||||
|
diff = InvAngle(InvAngle(diff)/mo->extravalue1);
|
||||||
else
|
else
|
||||||
mo->momz = FixedMul(2*FRACUNIT, mo->scale);
|
diff /= mo->extravalue1;
|
||||||
|
mo->movedir = diff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12004,7 +12014,7 @@ void A_MineExplode(mobj_t *actor)
|
||||||
{
|
{
|
||||||
#define dist 64
|
#define dist 64
|
||||||
UINT8 i;
|
UINT8 i;
|
||||||
mobjtype_t type = ((actor->eflags & MFE_UNDERWATER) ? MT_UWEXPLODE : MT_BOSSEXPLODE);
|
mobjtype_t type = ((actor->eflags & MFE_UNDERWATER) ? MT_UWEXPLODE : MT_SONIC3KBOSSEXPLODE);
|
||||||
S_StartSound(actor, ((actor->eflags & MFE_UNDERWATER) ? sfx_s3k57 : sfx_s3k4e));
|
S_StartSound(actor, ((actor->eflags & MFE_UNDERWATER) ? sfx_s3k57 : sfx_s3k4e));
|
||||||
P_SpawnMobj(actor->x, actor->y, actor->z, type);
|
P_SpawnMobj(actor->x, actor->y, actor->z, type);
|
||||||
for (i = 0; i < 16; i++)
|
for (i = 0; i < 16; i++)
|
||||||
|
|
41
src/p_mobj.c
41
src/p_mobj.c
|
@ -4236,12 +4236,7 @@ static void P_GenericBossThinker(mobj_t *mobj)
|
||||||
if (!mobj->target || !(mobj->target->flags & MF_SHOOTABLE))
|
if (!mobj->target || !(mobj->target->flags & MF_SHOOTABLE))
|
||||||
{
|
{
|
||||||
if (mobj->health <= 0)
|
if (mobj->health <= 0)
|
||||||
{
|
|
||||||
// look for a new target
|
|
||||||
if (P_BossTargetPlayer(mobj, false) && mobj->info->mass) // Bid farewell!
|
|
||||||
S_StartSound(mobj, mobj->info->mass);
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
// look for a new target
|
// look for a new target
|
||||||
if (P_BossTargetPlayer(mobj, false) && mobj->info->seesound)
|
if (P_BossTargetPlayer(mobj, false) && mobj->info->seesound)
|
||||||
|
@ -4263,7 +4258,7 @@ static void P_GenericBossThinker(mobj_t *mobj)
|
||||||
// AI for the first boss.
|
// AI for the first boss.
|
||||||
static void P_Boss1Thinker(mobj_t *mobj)
|
static void P_Boss1Thinker(mobj_t *mobj)
|
||||||
{
|
{
|
||||||
if (mobj->flags2 & MF2_FRET && (statenum_t)(mobj->state-states) == mobj->info->spawnstate) {
|
if (mobj->flags2 & MF2_FRET && (statenum_t)(mobj->state-states) < mobj->info->painstate) {
|
||||||
mobj->flags2 &= ~(MF2_FRET|MF2_SKULLFLY);
|
mobj->flags2 &= ~(MF2_FRET|MF2_SKULLFLY);
|
||||||
mobj->momx = mobj->momy = mobj->momz = 0;
|
mobj->momx = mobj->momy = mobj->momz = 0;
|
||||||
}
|
}
|
||||||
|
@ -4281,11 +4276,7 @@ static void P_Boss1Thinker(mobj_t *mobj)
|
||||||
return; // It's okay, then.
|
return; // It's okay, then.
|
||||||
|
|
||||||
if (mobj->health <= 0)
|
if (mobj->health <= 0)
|
||||||
{
|
|
||||||
if (P_BossTargetPlayer(mobj, false) && mobj->info->mass) // Bid farewell!
|
|
||||||
S_StartSound(mobj, mobj->info->mass);
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
// look for a new target
|
// look for a new target
|
||||||
if (P_BossTargetPlayer(mobj, false) && mobj->info->seesound)
|
if (P_BossTargetPlayer(mobj, false) && mobj->info->seesound)
|
||||||
|
@ -4332,12 +4323,7 @@ static void P_Boss2Thinker(mobj_t *mobj)
|
||||||
if (mobj->health <= mobj->info->damage && (!mobj->target || !(mobj->target->flags & MF_SHOOTABLE)))
|
if (mobj->health <= mobj->info->damage && (!mobj->target || !(mobj->target->flags & MF_SHOOTABLE)))
|
||||||
{
|
{
|
||||||
if (mobj->health <= 0)
|
if (mobj->health <= 0)
|
||||||
{
|
|
||||||
// look for a new target
|
|
||||||
if (P_BossTargetPlayer(mobj, false) && mobj->info->mass) // Bid farewell!
|
|
||||||
S_StartSound(mobj, mobj->info->mass);
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
// look for a new target
|
// look for a new target
|
||||||
if (P_BossTargetPlayer(mobj, false) && mobj->info->seesound)
|
if (P_BossTargetPlayer(mobj, false) && mobj->info->seesound)
|
||||||
|
@ -7107,6 +7093,11 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
|
|
||||||
switch (mobj->type)
|
switch (mobj->type)
|
||||||
{
|
{
|
||||||
|
case MT_BOSSTANK1:
|
||||||
|
case MT_BOSSTANK2:
|
||||||
|
case MT_BOSSSPIGOT:
|
||||||
|
mobj->flags2 ^= MF2_DONTDRAW;
|
||||||
|
break;
|
||||||
case MT_MACEPOINT:
|
case MT_MACEPOINT:
|
||||||
case MT_CHAINMACEPOINT:
|
case MT_CHAINMACEPOINT:
|
||||||
case MT_SPRINGBALLPOINT:
|
case MT_SPRINGBALLPOINT:
|
||||||
|
@ -7730,8 +7721,26 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (mobj->flags2 & MF2_BOSSFLEE)
|
if (mobj->flags2 & MF2_BOSSFLEE)
|
||||||
|
{
|
||||||
|
if (mobj->extravalue1)
|
||||||
|
{
|
||||||
|
if (!(--mobj->extravalue1))
|
||||||
|
{
|
||||||
|
if (mobj->target)
|
||||||
|
{
|
||||||
|
mobj->momz = FixedMul(FixedDiv(mobj->target->z - mobj->z, P_AproxDistance(mobj->x-mobj->target->x,mobj->y-mobj->target->y)), mobj->scale<<1);
|
||||||
|
mobj->angle = R_PointToAngle2(mobj->x, mobj->y, mobj->target->x, mobj->target->y);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
mobj->momz = 8*mobj->scale;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
mobj->angle += mobj->movedir;
|
||||||
|
}
|
||||||
|
else if (mobj->target)
|
||||||
P_InstaThrust(mobj, mobj->angle, FixedMul(12*FRACUNIT, mobj->scale));
|
P_InstaThrust(mobj, mobj->angle, FixedMul(12*FRACUNIT, mobj->scale));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else if (mobj->health <= 0) // Dead things think differently than the living.
|
else if (mobj->health <= 0) // Dead things think differently than the living.
|
||||||
switch (mobj->type)
|
switch (mobj->type)
|
||||||
{
|
{
|
||||||
|
@ -7842,7 +7851,7 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
mobj->x + (P_RandomRange(r, -r) << FRACBITS),
|
mobj->x + (P_RandomRange(r, -r) << FRACBITS),
|
||||||
mobj->y + (P_RandomRange(r, -r) << FRACBITS),
|
mobj->y + (P_RandomRange(r, -r) << FRACBITS),
|
||||||
mobj->z + (P_RandomKey(mobj->height >> FRACBITS) << FRACBITS),
|
mobj->z + (P_RandomKey(mobj->height >> FRACBITS) << FRACBITS),
|
||||||
MT_BOSSEXPLODE);
|
MT_SONIC3KBOSSEXPLODE);
|
||||||
S_StartSound(explosion, sfx_cybdth);
|
S_StartSound(explosion, sfx_cybdth);
|
||||||
}
|
}
|
||||||
if (mobj->movedir == DMG_DROWNED)
|
if (mobj->movedir == DMG_DROWNED)
|
||||||
|
|
|
@ -6509,12 +6509,12 @@ static void P_DoNiGHTSCapsule(player_t *player)
|
||||||
player->capsule->health = sphereresult;
|
player->capsule->health = sphereresult;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Spawn a 'pop' for every 5 tics
|
// Spawn a 'pop' for every 2 tics
|
||||||
if (!((tictimer - firstpoptic) % 5))
|
if (!((tictimer - firstpoptic) % 2))
|
||||||
S_StartSound(P_SpawnMobj(player->capsule->x + ((P_SignedRandom()/2)<<FRACBITS),
|
S_StartSound(P_SpawnMobj(player->capsule->x + ((P_SignedRandom()/2)<<FRACBITS),
|
||||||
player->capsule->y + ((P_SignedRandom()/2)<<FRACBITS),
|
player->capsule->y + ((P_SignedRandom()/2)<<FRACBITS),
|
||||||
player->capsule->z + (player->capsule->height/2) + ((P_SignedRandom()/2)<<FRACBITS),
|
player->capsule->z + (player->capsule->height/2) + ((P_SignedRandom()/2)<<FRACBITS),
|
||||||
MT_BOSSEXPLODE),sfx_cybdth);
|
MT_SONIC3KBOSSEXPLODE),sfx_cybdth);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue