Motor's new Eggman sprites, along with some other sweet bits of boss polish. What else can I say? Just play it.
This commit is contained in:
parent
121d8b7838
commit
6a9da63d7f
|
@ -4585,10 +4585,10 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_SONIC3KBOSSEXPLOSION6",
|
"S_SONIC3KBOSSEXPLOSION6",
|
||||||
|
|
||||||
"S_JETFUME1",
|
"S_JETFUME1",
|
||||||
"S_JETFUME2",
|
|
||||||
|
|
||||||
// Boss 1
|
// Boss 1
|
||||||
"S_EGGMOBILE_STND",
|
"S_EGGMOBILE_STND",
|
||||||
|
"S_EGGMOBILE_ROFL",
|
||||||
"S_EGGMOBILE_LATK1",
|
"S_EGGMOBILE_LATK1",
|
||||||
"S_EGGMOBILE_LATK2",
|
"S_EGGMOBILE_LATK2",
|
||||||
"S_EGGMOBILE_LATK3",
|
"S_EGGMOBILE_LATK3",
|
||||||
|
@ -4598,7 +4598,6 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_EGGMOBILE_LATK7",
|
"S_EGGMOBILE_LATK7",
|
||||||
"S_EGGMOBILE_LATK8",
|
"S_EGGMOBILE_LATK8",
|
||||||
"S_EGGMOBILE_LATK9",
|
"S_EGGMOBILE_LATK9",
|
||||||
"S_EGGMOBILE_LATK10",
|
|
||||||
"S_EGGMOBILE_RATK1",
|
"S_EGGMOBILE_RATK1",
|
||||||
"S_EGGMOBILE_RATK2",
|
"S_EGGMOBILE_RATK2",
|
||||||
"S_EGGMOBILE_RATK3",
|
"S_EGGMOBILE_RATK3",
|
||||||
|
@ -4608,7 +4607,6 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_EGGMOBILE_RATK7",
|
"S_EGGMOBILE_RATK7",
|
||||||
"S_EGGMOBILE_RATK8",
|
"S_EGGMOBILE_RATK8",
|
||||||
"S_EGGMOBILE_RATK9",
|
"S_EGGMOBILE_RATK9",
|
||||||
"S_EGGMOBILE_RATK10",
|
|
||||||
"S_EGGMOBILE_PANIC1",
|
"S_EGGMOBILE_PANIC1",
|
||||||
"S_EGGMOBILE_PANIC2",
|
"S_EGGMOBILE_PANIC2",
|
||||||
"S_EGGMOBILE_PANIC3",
|
"S_EGGMOBILE_PANIC3",
|
||||||
|
@ -4616,6 +4614,14 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_EGGMOBILE_PANIC5",
|
"S_EGGMOBILE_PANIC5",
|
||||||
"S_EGGMOBILE_PANIC6",
|
"S_EGGMOBILE_PANIC6",
|
||||||
"S_EGGMOBILE_PANIC7",
|
"S_EGGMOBILE_PANIC7",
|
||||||
|
"S_EGGMOBILE_PANIC8",
|
||||||
|
"S_EGGMOBILE_PANIC9",
|
||||||
|
"S_EGGMOBILE_PANIC10",
|
||||||
|
"S_EGGMOBILE_PANIC11",
|
||||||
|
"S_EGGMOBILE_PANIC12",
|
||||||
|
"S_EGGMOBILE_PANIC13",
|
||||||
|
"S_EGGMOBILE_PANIC14",
|
||||||
|
"S_EGGMOBILE_PANIC15",
|
||||||
"S_EGGMOBILE_PAIN",
|
"S_EGGMOBILE_PAIN",
|
||||||
"S_EGGMOBILE_PAIN2",
|
"S_EGGMOBILE_PAIN2",
|
||||||
"S_EGGMOBILE_DIE1",
|
"S_EGGMOBILE_DIE1",
|
||||||
|
@ -4626,6 +4632,8 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_EGGMOBILE_FLEE2",
|
"S_EGGMOBILE_FLEE2",
|
||||||
"S_EGGMOBILE_BALL",
|
"S_EGGMOBILE_BALL",
|
||||||
"S_EGGMOBILE_TARGET",
|
"S_EGGMOBILE_TARGET",
|
||||||
|
"S_BOSSEGLZ1",
|
||||||
|
"S_BOSSEGLZ2",
|
||||||
|
|
||||||
// Boss 2
|
// Boss 2
|
||||||
"S_EGGMOBILE2_STND",
|
"S_EGGMOBILE2_STND",
|
||||||
|
@ -4657,11 +4665,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
|
|
||||||
// Boss 3
|
// Boss 3
|
||||||
"S_EGGMOBILE3_STND",
|
"S_EGGMOBILE3_STND",
|
||||||
"S_EGGMOBILE3_LAUGH1",
|
"S_EGGMOBILE3_SHOCK",
|
||||||
"S_EGGMOBILE3_LAUGH2",
|
|
||||||
"S_EGGMOBILE3_LAUGH3",
|
|
||||||
"S_EGGMOBILE3_LAUGH4",
|
|
||||||
"S_EGGMOBILE3_LAUGH5",
|
|
||||||
"S_EGGMOBILE3_ATK1",
|
"S_EGGMOBILE3_ATK1",
|
||||||
"S_EGGMOBILE3_ATK2",
|
"S_EGGMOBILE3_ATK2",
|
||||||
"S_EGGMOBILE3_ATK3A",
|
"S_EGGMOBILE3_ATK3A",
|
||||||
|
@ -4670,21 +4674,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_EGGMOBILE3_ATK3D",
|
"S_EGGMOBILE3_ATK3D",
|
||||||
"S_EGGMOBILE3_ATK4",
|
"S_EGGMOBILE3_ATK4",
|
||||||
"S_EGGMOBILE3_ATK5",
|
"S_EGGMOBILE3_ATK5",
|
||||||
"S_EGGMOBILE3_LAUGH6",
|
"S_EGGMOBILE3_ROFL",
|
||||||
"S_EGGMOBILE3_LAUGH7",
|
|
||||||
"S_EGGMOBILE3_LAUGH8",
|
|
||||||
"S_EGGMOBILE3_LAUGH9",
|
|
||||||
"S_EGGMOBILE3_LAUGH10",
|
|
||||||
"S_EGGMOBILE3_LAUGH11",
|
|
||||||
"S_EGGMOBILE3_LAUGH12",
|
|
||||||
"S_EGGMOBILE3_LAUGH13",
|
|
||||||
"S_EGGMOBILE3_LAUGH14",
|
|
||||||
"S_EGGMOBILE3_LAUGH15",
|
|
||||||
"S_EGGMOBILE3_LAUGH16",
|
|
||||||
"S_EGGMOBILE3_LAUGH17",
|
|
||||||
"S_EGGMOBILE3_LAUGH18",
|
|
||||||
"S_EGGMOBILE3_LAUGH19",
|
|
||||||
"S_EGGMOBILE3_LAUGH20",
|
|
||||||
"S_EGGMOBILE3_PAIN",
|
"S_EGGMOBILE3_PAIN",
|
||||||
"S_EGGMOBILE3_PAIN2",
|
"S_EGGMOBILE3_PAIN2",
|
||||||
"S_EGGMOBILE3_DIE1",
|
"S_EGGMOBILE3_DIE1",
|
||||||
|
@ -4694,15 +4684,6 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_EGGMOBILE3_FLEE1",
|
"S_EGGMOBILE3_FLEE1",
|
||||||
"S_EGGMOBILE3_FLEE2",
|
"S_EGGMOBILE3_FLEE2",
|
||||||
|
|
||||||
// Boss 3 Propeller
|
|
||||||
"S_PROPELLER1",
|
|
||||||
"S_PROPELLER2",
|
|
||||||
"S_PROPELLER3",
|
|
||||||
"S_PROPELLER4",
|
|
||||||
"S_PROPELLER5",
|
|
||||||
"S_PROPELLER6",
|
|
||||||
"S_PROPELLER7",
|
|
||||||
|
|
||||||
// Boss 3 pinch
|
// Boss 3 pinch
|
||||||
"S_FAKEMOBILE_INIT",
|
"S_FAKEMOBILE_INIT",
|
||||||
"S_FAKEMOBILE",
|
"S_FAKEMOBILE",
|
||||||
|
@ -4715,6 +4696,9 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_FAKEMOBILE_DIE1",
|
"S_FAKEMOBILE_DIE1",
|
||||||
"S_FAKEMOBILE_DIE2",
|
"S_FAKEMOBILE_DIE2",
|
||||||
|
|
||||||
|
"S_BOSSSEBH1",
|
||||||
|
"S_BOSSSEBH2",
|
||||||
|
|
||||||
// Boss 4
|
// Boss 4
|
||||||
"S_EGGMOBILE4_STND",
|
"S_EGGMOBILE4_STND",
|
||||||
"S_EGGMOBILE4_LATK1",
|
"S_EGGMOBILE4_LATK1",
|
||||||
|
@ -5118,16 +5102,6 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
|
|
||||||
"S_MSSHIELD_F1",
|
"S_MSSHIELD_F1",
|
||||||
"S_MSSHIELD_F2",
|
"S_MSSHIELD_F2",
|
||||||
"S_MSSHIELD_F3",
|
|
||||||
"S_MSSHIELD_F4",
|
|
||||||
"S_MSSHIELD_F5",
|
|
||||||
"S_MSSHIELD_F6",
|
|
||||||
"S_MSSHIELD_F7",
|
|
||||||
"S_MSSHIELD_F8",
|
|
||||||
"S_MSSHIELD_F9",
|
|
||||||
"S_MSSHIELD_F10",
|
|
||||||
"S_MSSHIELD_F11",
|
|
||||||
"S_MSSHIELD_F12",
|
|
||||||
|
|
||||||
// Ring
|
// Ring
|
||||||
"S_RING",
|
"S_RING",
|
||||||
|
@ -7211,6 +7185,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
||||||
"MT_EGGTRAP",
|
"MT_EGGTRAP",
|
||||||
"MT_BOSS3WAYPOINT",
|
"MT_BOSS3WAYPOINT",
|
||||||
"MT_BOSS9GATHERPOINT",
|
"MT_BOSS9GATHERPOINT",
|
||||||
|
"MT_BOSSJUNK",
|
||||||
|
|
||||||
// Boss 1
|
// Boss 1
|
||||||
"MT_EGGMOBILE",
|
"MT_EGGMOBILE",
|
||||||
|
@ -7222,15 +7197,11 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
||||||
// Boss 2
|
// Boss 2
|
||||||
"MT_EGGMOBILE2",
|
"MT_EGGMOBILE2",
|
||||||
"MT_EGGMOBILE2_POGO",
|
"MT_EGGMOBILE2_POGO",
|
||||||
"MT_BOSSTANK1",
|
|
||||||
"MT_BOSSTANK2",
|
|
||||||
"MT_BOSSSPIGOT",
|
|
||||||
"MT_GOOP",
|
"MT_GOOP",
|
||||||
"MT_GOOPTRAIL",
|
"MT_GOOPTRAIL",
|
||||||
|
|
||||||
// Boss 3
|
// Boss 3
|
||||||
"MT_EGGMOBILE3",
|
"MT_EGGMOBILE3",
|
||||||
"MT_PROPELLER",
|
|
||||||
"MT_FAKEMOBILE",
|
"MT_FAKEMOBILE",
|
||||||
"MT_SHOCK",
|
"MT_SHOCK",
|
||||||
|
|
||||||
|
|
|
@ -186,17 +186,16 @@ light_t *t_lspr[NUMSPRITES] =
|
||||||
|
|
||||||
// Boss 1, (Greenflower)
|
// Boss 1, (Greenflower)
|
||||||
&lspr[NOLIGHT], // SPR_EGGM
|
&lspr[NOLIGHT], // SPR_EGGM
|
||||||
|
&lspr[NOLIGHT], // SPR_EGLZ
|
||||||
|
|
||||||
// Boss 2, (Techno Hill)
|
// Boss 2, (Techno Hill)
|
||||||
&lspr[NOLIGHT], // SPR_EGGN
|
&lspr[NOLIGHT], // SPR_EGGN
|
||||||
&lspr[NOLIGHT], // SPR_TNKA
|
&lspr[NOLIGHT], // SPR_TANK
|
||||||
&lspr[NOLIGHT], // SPR_TNKB
|
|
||||||
&lspr[NOLIGHT], // SPR_SPNK
|
|
||||||
&lspr[NOLIGHT], // SPR_GOOP
|
&lspr[NOLIGHT], // SPR_GOOP
|
||||||
|
|
||||||
// Boss 3 (Deep Sea)
|
// Boss 3 (Deep Sea)
|
||||||
&lspr[NOLIGHT], // SPR_EGGO
|
&lspr[NOLIGHT], // SPR_EGGO
|
||||||
&lspr[NOLIGHT], // SPR_PRPL
|
&lspr[NOLIGHT], // SPR_SEBH
|
||||||
&lspr[NOLIGHT], // SPR_FAKE
|
&lspr[NOLIGHT], // SPR_FAKE
|
||||||
|
|
||||||
// Boss 4 (Castle Eggman)
|
// Boss 4 (Castle Eggman)
|
||||||
|
|
333
src/info.c
333
src/info.c
|
@ -73,18 +73,17 @@ char sprnames[NUMSPRITES + 1][5] =
|
||||||
"JETF", // Boss jet fumes
|
"JETF", // Boss jet fumes
|
||||||
|
|
||||||
// Boss 1 (Greenflower)
|
// Boss 1 (Greenflower)
|
||||||
"EGGM",
|
"EGGM", // Boss 1
|
||||||
|
"EGLZ", // Boss 1 Junk
|
||||||
|
|
||||||
// Boss 2 (Techno Hill)
|
// Boss 2 (Techno Hill)
|
||||||
"EGGN", // Boss 2
|
"EGGN", // Boss 2
|
||||||
"TNKA", // Boss 2 Tank 1
|
"TANK", // Boss 2 Junk
|
||||||
"TNKB", // Boss 2 Tank 2
|
|
||||||
"SPNK", // Boss 2 Spigot
|
|
||||||
"GOOP", // Boss 2 Goop
|
"GOOP", // Boss 2 Goop
|
||||||
|
|
||||||
// Boss 3 (Deep Sea)
|
// Boss 3 (Deep Sea)
|
||||||
"EGGO", // Boss 3
|
"EGGO", // Boss 3
|
||||||
"PRPL", // Boss 3 Propeller
|
"SEBH", // Boss 3 Junk
|
||||||
"FAKE", // Boss 3 Fakemobile
|
"FAKE", // Boss 3 Fakemobile
|
||||||
|
|
||||||
// Boss 4 (Castle Eggman)
|
// Boss 4 (Castle Eggman)
|
||||||
|
@ -1179,49 +1178,58 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_BOM3, FF_FULLBRIGHT|4, 3, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION6}, // S_SONIC3KBOSSEXPLOSION5
|
{SPR_BOM3, FF_FULLBRIGHT|4, 3, {NULL}, 0, 0, S_SONIC3KBOSSEXPLOSION6}, // S_SONIC3KBOSSEXPLOSION5
|
||||||
{SPR_BOM3, FF_FULLBRIGHT|5, 4, {NULL}, 0, 0, S_NULL}, // S_SONIC3KBOSSEXPLOSION6
|
{SPR_BOM3, FF_FULLBRIGHT|5, 4, {NULL}, 0, 0, S_NULL}, // S_SONIC3KBOSSEXPLOSION6
|
||||||
|
|
||||||
{SPR_JETF, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_JETFUME2}, // S_JETFUME1
|
{SPR_JETF, FF_ANIMATE|FF_FULLBRIGHT, -1, {NULL}, 2, 1, S_NULL}, // S_JETFUME1
|
||||||
{SPR_NULL, 0, 1, {NULL}, 0, 0, S_JETFUME1}, // S_JETFUME2
|
|
||||||
|
|
||||||
// Boss 1
|
// Boss 1
|
||||||
{SPR_EGGM, 0, 1, {A_Boss1Chase}, 0, 0, S_EGGMOBILE_STND}, // S_EGGMOBILE_STND
|
{SPR_EGGM, 0, 1, {A_Boss1Chase}, 0, 0, S_EGGMOBILE_STND}, // S_EGGMOBILE_STND
|
||||||
|
{SPR_EGGM, FF_ANIMATE|17, 35, {A_FaceTarget}, 1, 2, S_EGGMOBILE_STND}, // S_EGGMOBILE_ROFL
|
||||||
{SPR_EGGM, 1, 3, {A_FaceTarget}, 0, 0, S_EGGMOBILE_LATK2}, // S_EGGMOBILE_LATK1
|
{SPR_EGGM, 1, 3, {A_FaceTarget}, 0, 0, S_EGGMOBILE_LATK2}, // S_EGGMOBILE_LATK1
|
||||||
{SPR_EGGM, 2, 15, {NULL}, 0, 0, S_EGGMOBILE_LATK3}, // S_EGGMOBILE_LATK2
|
{SPR_EGGM, 2, 15, {NULL}, 0, 0, S_EGGMOBILE_LATK3}, // S_EGGMOBILE_LATK2
|
||||||
{SPR_EGGM, 3, 2, {A_FaceTarget}, 0, 0, S_EGGMOBILE_LATK4}, // S_EGGMOBILE_LATK3
|
{SPR_EGGM, 3, 2, {NULL}, 0, 0, S_EGGMOBILE_LATK4}, // S_EGGMOBILE_LATK3
|
||||||
{SPR_EGGM, 4, 1, {NULL}, 0, 0, S_EGGMOBILE_LATK5}, // S_EGGMOBILE_LATK4
|
{SPR_EGGM, 4, 2, {A_FaceTarget}, 0, 0, S_EGGMOBILE_LATK5}, // S_EGGMOBILE_LATK4
|
||||||
{SPR_EGGM, 5, 1, {NULL}, 0, 0, S_EGGMOBILE_LATK6}, // S_EGGMOBILE_LATK5
|
{SPR_EGGM, 6, 0, {A_PrepareRepeat}, 45, 0, S_EGGMOBILE_LATK6}, // S_EGGMOBILE_LATK5
|
||||||
{SPR_EGGM, 6, 1, {NULL}, 0, 0, S_EGGMOBILE_LATK7}, // S_EGGMOBILE_LATK6
|
{SPR_EGGM, 5, 1, {A_Boss1Laser}, MT_LASER, 0, S_EGGMOBILE_LATK7}, // S_EGGMOBILE_LATK6
|
||||||
{SPR_EGGM, 7, 1, {NULL}, 0, 0, S_EGGMOBILE_LATK8}, // S_EGGMOBILE_LATK7
|
{SPR_EGGM, 6, 1, {A_Boss1Laser}, MT_LASER, (1<<16), S_EGGMOBILE_LATK8}, // S_EGGMOBILE_LATK7
|
||||||
{SPR_EGGM, 8, 45, {A_Boss1Laser}, MT_LASER, 0, S_EGGMOBILE_LATK9}, // S_EGGMOBILE_LATK8
|
{SPR_EGGM, 5, 0, {A_Repeat}, 45, S_EGGMOBILE_LATK6, S_EGGMOBILE_LATK9}, // S_EGGMOBILE_LATK8
|
||||||
{SPR_EGGM, 9, 10, {NULL}, 0, 0, S_EGGMOBILE_LATK10}, // S_EGGMOBILE_LATK9
|
{SPR_EGGM, 8, 2, {NULL}, 0, 0, S_EGGMOBILE_ROFL}, // S_EGGMOBILE_LATK9
|
||||||
{SPR_EGGM, 10, 2, {NULL}, 0, 0, S_EGGMOBILE_STND}, // S_EGGMOBILE_LATK10
|
{SPR_EGGM, 9, 3, {A_FaceTarget}, 0, 0, S_EGGMOBILE_RATK2}, // S_EGGMOBILE_RATK1
|
||||||
{SPR_EGGM, 11, 3, {A_FaceTarget}, 0, 0, S_EGGMOBILE_RATK2}, // S_EGGMOBILE_RATK1
|
{SPR_EGGM, 10, 15, {NULL}, 0, 0, S_EGGMOBILE_RATK3}, // S_EGGMOBILE_RATK2
|
||||||
{SPR_EGGM, 12, 15, {NULL}, 0, 0, S_EGGMOBILE_RATK3}, // S_EGGMOBILE_RATK2
|
{SPR_EGGM, 11, 2, {NULL}, 0, 0, S_EGGMOBILE_RATK4}, // S_EGGMOBILE_RATK3
|
||||||
{SPR_EGGM, 13, 2, {A_FaceTarget}, 0, 0, S_EGGMOBILE_RATK4}, // S_EGGMOBILE_RATK3
|
{SPR_EGGM, 12, 2, {A_FaceTarget}, 0, 0, S_EGGMOBILE_RATK5}, // S_EGGMOBILE_RATK4
|
||||||
{SPR_EGGM, 14, 1, {NULL}, 0, 0, S_EGGMOBILE_RATK5}, // S_EGGMOBILE_RATK4
|
{SPR_EGGM, 14, 0, {A_PrepareRepeat}, 45, 0, S_EGGMOBILE_RATK6}, // S_EGGMOBILE_RATK5
|
||||||
{SPR_EGGM, 15, 1, {NULL}, 0, 0, S_EGGMOBILE_RATK6}, // S_EGGMOBILE_RATK5
|
{SPR_EGGM, 13, 1, {A_Boss1Laser}, MT_LASER, 1, S_EGGMOBILE_RATK7}, // S_EGGMOBILE_RATK6
|
||||||
{SPR_EGGM, 16, 1, {NULL}, 0, 0, S_EGGMOBILE_RATK7}, // S_EGGMOBILE_RATK6
|
{SPR_EGGM, 14, 1, {A_Boss1Laser}, MT_LASER, 1|(1<<16), S_EGGMOBILE_RATK8}, // S_EGGMOBILE_RATK7
|
||||||
{SPR_EGGM, 17, 1, {NULL}, 0, 0, S_EGGMOBILE_RATK8}, // S_EGGMOBILE_RATK7
|
{SPR_EGGM, 13, 0, {A_Repeat}, 45, S_EGGMOBILE_RATK6, S_EGGMOBILE_RATK9}, // S_EGGMOBILE_RATK8
|
||||||
{SPR_EGGM, 18, 45, {A_Boss1Laser}, MT_LASER, 1, S_EGGMOBILE_RATK9}, // S_EGGMOBILE_RATK8
|
{SPR_EGGM, 16, 2, {NULL}, 0, 0, S_EGGMOBILE_ROFL}, // S_EGGMOBILE_RATK9
|
||||||
{SPR_EGGM, 19, 10, {NULL}, 0, 0, S_EGGMOBILE_RATK10}, // S_EGGMOBILE_RATK9
|
{SPR_EGGM, 0, 0, {A_PrepareRepeat}, 45, 0, S_EGGMOBILE_PANIC2}, // S_EGGMOBILE_PANIC1
|
||||||
{SPR_EGGM, 20, 2, {NULL}, 0, 0, S_EGGMOBILE_STND}, // S_EGGMOBILE_RATK10
|
{SPR_EGGM, FF_ANIMATE|1, 16, {A_FaceTarget}, 3, 4, S_EGGMOBILE_PANIC3}, // S_EGGMOBILE_PANIC2
|
||||||
{SPR_EGGM, 3, 12, {NULL}, 0, 0, S_EGGMOBILE_PANIC2}, // S_EGGMOBILE_PANIC1
|
{SPR_EGGM, 7, 1, {A_Boss1Laser}, MT_LASER, 2, S_EGGMOBILE_PANIC4}, // S_EGGMOBILE_PANIC3
|
||||||
{SPR_EGGM, 4, 45, {A_Boss1Laser}, MT_LASER, 2, S_EGGMOBILE_PANIC3}, // S_EGGMOBILE_PANIC2
|
{SPR_EGGM, 6, 1, {A_Boss1Laser}, MT_LASER, 2|(1<<16), S_EGGMOBILE_PANIC5}, // S_EGGMOBILE_PANIC4
|
||||||
{SPR_EGGM, 3, 8, {NULL}, 0, 0, S_EGGMOBILE_PANIC4}, // S_EGGMOBILE_PANIC3
|
{SPR_EGGM, 6, 0, {A_Repeat}, 45, S_EGGMOBILE_PANIC3, S_EGGMOBILE_PANIC6}, // S_EGGMOBILE_PANIC5
|
||||||
{SPR_EGGM, 4, 45, {A_Boss1Laser}, MT_LASER, 2, S_EGGMOBILE_PANIC5 }, // S_EGGMOBILE_PANIC4
|
{SPR_EGGM, 0, 0, {A_PrepareRepeat}, 45, 0, S_EGGMOBILE_PANIC7}, // S_EGGMOBILE_PANIC6
|
||||||
{SPR_EGGM, 3, 8, {NULL}, 0, 0, S_EGGMOBILE_PANIC6}, // S_EGGMOBILE_PANIC5
|
{SPR_EGGM, FF_ANIMATE|9, 16, {A_FaceTarget}, 3, 4, S_EGGMOBILE_PANIC8}, // S_EGGMOBILE_PANIC7
|
||||||
{SPR_EGGM, 4, 45, {A_Boss1Laser}, MT_LASER, 2, S_EGGMOBILE_PANIC7 }, // S_EGGMOBILE_PANIC6
|
{SPR_EGGM, 15, 1, {A_Boss1Laser}, MT_LASER, 2, S_EGGMOBILE_PANIC9}, // S_EGGMOBILE_PANIC8
|
||||||
{SPR_EGGM, 0, 35, {NULL}, 0, 0, S_EGGMOBILE_STND }, // S_EGGMOBILE_PANIC7
|
{SPR_EGGM, 14, 1, {A_Boss1Laser}, MT_LASER, 2|(1<<16), S_EGGMOBILE_PANIC10}, // S_EGGMOBILE_PANIC9
|
||||||
{SPR_EGGM, 21, 24, {A_Pain}, 0, 0, S_EGGMOBILE_PAIN2}, // S_EGGMOBILE_PAIN
|
{SPR_EGGM, 14, 0, {A_Repeat}, 45, S_EGGMOBILE_PANIC8, S_EGGMOBILE_PANIC11}, // S_EGGMOBILE_PANIC10
|
||||||
{SPR_EGGM, 21, 16, {A_SkullAttack}, 1, 1, S_EGGMOBILE_STND}, // S_EGGMOBILE_PAIN2
|
{SPR_EGGM, 0, 0, {A_PrepareRepeat}, 45, 0, S_EGGMOBILE_PANIC12}, // S_EGGMOBILE_PANIC11
|
||||||
{SPR_EGGM, 22, 2, {A_Fall}, 0, 0, S_EGGMOBILE_DIE2}, // S_EGGMOBILE_DIE1
|
{SPR_EGGM, FF_ANIMATE|1, 16, {A_FaceTarget}, 3, 4, S_EGGMOBILE_PANIC13}, // S_EGGMOBILE_PANIC12
|
||||||
{SPR_EGGM, 22, 2, {A_BossScream}, 0, 0, S_EGGMOBILE_DIE3}, // S_EGGMOBILE_DIE2
|
{SPR_EGGM, 7, 1, {A_Boss1Laser}, MT_LASER, 2, S_EGGMOBILE_PANIC14}, // S_EGGMOBILE_PANIC13
|
||||||
{SPR_EGGM, 22, 0, {A_Repeat}, 17, S_EGGMOBILE_DIE2, S_EGGMOBILE_DIE4}, // S_EGGMOBILE_DIE3
|
{SPR_EGGM, 6, 1, {A_Boss1Laser}, MT_LASER, 2|(1<<16), S_EGGMOBILE_PANIC15}, // S_EGGMOBILE_PANIC14
|
||||||
{SPR_EGGM, 22, -1, {A_BossDeath}, 0, 0, S_NULL}, // S_EGGMOBILE_DIE4
|
{SPR_EGGM, 6, 0, {A_Repeat}, 45, S_EGGMOBILE_PANIC13, S_EGGMOBILE_ROFL}, // S_EGGMOBILE_PANIC15
|
||||||
{SPR_EGGM, 23, 2, {A_BossScream}, 0, 0, S_EGGMOBILE_FLEE2}, // S_EGGMOBILE_FLEE1
|
{SPR_EGGM, 19, 24, {A_Pain}, 0, 0, S_EGGMOBILE_PAIN2}, // S_EGGMOBILE_PAIN
|
||||||
{SPR_EGGM, 24, 2, {A_BossScream}, 0, 0, S_EGGMOBILE_FLEE1}, // S_EGGMOBILE_FLEE2
|
{SPR_EGGM, 19, 16, {A_SkullAttack}, 3, 1, S_EGGMOBILE_STND}, // S_EGGMOBILE_PAIN2
|
||||||
|
{SPR_EGGM, 20, 2, {A_Fall}, 17, 0, S_EGGMOBILE_DIE2}, // S_EGGMOBILE_DIE1
|
||||||
|
{SPR_EGGM, 20, 2, {A_BossScream}, 0, 0, S_EGGMOBILE_DIE3}, // S_EGGMOBILE_DIE2
|
||||||
|
{SPR_EGGM, 20, 0, {A_Repeat}, 17, S_EGGMOBILE_DIE2, S_EGGMOBILE_DIE4}, // S_EGGMOBILE_DIE3
|
||||||
|
{SPR_EGGM, 20, -1, {A_BossDeath}, 0, 0, S_NULL}, // S_EGGMOBILE_DIE4
|
||||||
|
{SPR_EGGM, 21, 2, {A_BossScream}, 0, 0, S_EGGMOBILE_FLEE2}, // S_EGGMOBILE_FLEE1
|
||||||
|
{SPR_EGGM, 22, 2, {A_BossScream}, 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
|
||||||
|
|
||||||
|
{SPR_EGLZ, 0, 35, {NULL}, 0, 0, S_NULL}, // S_BOSSEGLZ1
|
||||||
|
{SPR_EGLZ, 1, 35, {NULL}, 0, 0, S_NULL}, // S_BOSSEGLZ2
|
||||||
|
|
||||||
// Boss 2
|
// Boss 2
|
||||||
{SPR_EGGN, 0, -1, {NULL}, 0, 0, S_NULL}, // S_EGGMOBILE2_STND
|
{SPR_EGGN, 0, -1, {NULL}, 0, 0, S_NULL}, // S_EGGMOBILE2_STND
|
||||||
{SPR_EGGN, 1, 4, {NULL}, 0, 0, S_EGGMOBILE2_POGO2}, // S_EGGMOBILE2_POGO1
|
{SPR_EGGN, 1, 4, {NULL}, 0, 0, S_EGGMOBILE2_POGO2}, // S_EGGMOBILE2_POGO1
|
||||||
|
@ -1240,9 +1248,9 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_EGGN, 6, 2, {A_BossScream}, 0, 0, S_EGGMOBILE2_FLEE2}, // S_EGGMOBILE2_FLEE1
|
{SPR_EGGN, 6, 2, {A_BossScream}, 0, 0, S_EGGMOBILE2_FLEE2}, // S_EGGMOBILE2_FLEE1
|
||||||
{SPR_EGGN, 7, 2, {A_BossScream}, 0, 0, S_EGGMOBILE2_FLEE1}, // S_EGGMOBILE2_FLEE2
|
{SPR_EGGN, 7, 2, {A_BossScream}, 0, 0, S_EGGMOBILE2_FLEE1}, // S_EGGMOBILE2_FLEE2
|
||||||
|
|
||||||
{SPR_TNKA, 0, 35, {NULL}, 0, 0, S_NULL}, // S_BOSSTANK1
|
{SPR_TANK, 0, 35, {NULL}, 0, 0, S_NULL}, // S_BOSSTANK1
|
||||||
{SPR_TNKB, 0, 35, {NULL}, 0, 0, S_NULL}, // S_BOSSTANK2
|
{SPR_TANK, 1, 35, {NULL}, 0, 0, S_NULL}, // S_BOSSTANK2
|
||||||
{SPR_SPNK, 0, 35, {NULL}, 0, 0, S_NULL}, // S_BOSSSPIGOT
|
{SPR_TANK, 2, 35, {NULL}, 0, 0, S_NULL}, // S_BOSSSPIGOT
|
||||||
|
|
||||||
// Boss 2 Goop
|
// Boss 2 Goop
|
||||||
{SPR_GOOP, 0, 2, {A_SpawnObjectRelative}, 0, MT_GOOPTRAIL, S_GOOP2}, // S_GOOP1
|
{SPR_GOOP, 0, 2, {A_SpawnObjectRelative}, 0, MT_GOOPTRAIL, S_GOOP2}, // S_GOOP1
|
||||||
|
@ -1252,34 +1260,16 @@ state_t states[NUMSTATES] =
|
||||||
|
|
||||||
// Boss 3
|
// Boss 3
|
||||||
{SPR_EGGO, 0, 1, {NULL}, 0, 0, S_EGGMOBILE3_STND}, // S_EGGMOBILE3_STND
|
{SPR_EGGO, 0, 1, {NULL}, 0, 0, S_EGGMOBILE3_STND}, // S_EGGMOBILE3_STND
|
||||||
{SPR_EGGO, 6, 4, {NULL}, 0, 0, S_EGGMOBILE3_LAUGH2}, // S_EGGMOBILE3_LAUGH1
|
{SPR_EGGO, FF_ANIMATE, 24, {NULL}, 1, 2, S_EGGMOBILE3_ATK2}, // S_EGGMOBILE3_SHOCK
|
||||||
{SPR_EGGO, 7, 4, {NULL}, 0, 0, S_EGGMOBILE3_LAUGH3}, // S_EGGMOBILE3_LAUGH2
|
{SPR_EGGO, 6|FF_ANIMATE, 24, {NULL}, 1, 2, S_EGGMOBILE3_ATK2}, // S_EGGMOBILE3_ATK1
|
||||||
{SPR_EGGO, 6, 4, {NULL}, 0, 0, S_EGGMOBILE3_LAUGH4}, // S_EGGMOBILE3_LAUGH3
|
|
||||||
{SPR_EGGO, 7, 4, {NULL}, 0, 0, S_EGGMOBILE3_LAUGH5}, // S_EGGMOBILE3_LAUGH4
|
|
||||||
{SPR_EGGO, 6, 4, {NULL}, 0, 0, S_EGGMOBILE3_ATK1}, // S_EGGMOBILE3_LAUGH5
|
|
||||||
{SPR_EGGO, 1, 2, {NULL}, 0, 0, S_EGGMOBILE3_ATK2}, // S_EGGMOBILE3_ATK1
|
|
||||||
{SPR_EGGO, 2, 2, {NULL}, 0, 0, S_EGGMOBILE3_ATK3A}, // S_EGGMOBILE3_ATK2
|
{SPR_EGGO, 2, 2, {NULL}, 0, 0, S_EGGMOBILE3_ATK3A}, // S_EGGMOBILE3_ATK2
|
||||||
{SPR_EGGO, 3, 2, {A_BossFireShot}, MT_TORPEDO, 2, S_EGGMOBILE3_ATK3B}, // S_EGGMOBILE3_ATK3A
|
{SPR_EGGO, 3, 2, {A_BossFireShot}, MT_TORPEDO, 2, S_EGGMOBILE3_ATK3B}, // S_EGGMOBILE3_ATK3A
|
||||||
{SPR_EGGO, 3, 2, {A_BossFireShot}, MT_TORPEDO, 4, S_EGGMOBILE3_ATK3C}, // S_EGGMOBILE3_ATK3B
|
{SPR_EGGO, 3, 2, {A_BossFireShot}, MT_TORPEDO, 4, S_EGGMOBILE3_ATK3C}, // S_EGGMOBILE3_ATK3B
|
||||||
{SPR_EGGO, 3, 2, {A_BossFireShot}, MT_TORPEDO, 3, S_EGGMOBILE3_ATK3D}, // S_EGGMOBILE3_ATK3C
|
{SPR_EGGO, 3, 2, {A_BossFireShot}, MT_TORPEDO, 3, S_EGGMOBILE3_ATK3D}, // S_EGGMOBILE3_ATK3C
|
||||||
{SPR_EGGO, 3, 2, {A_BossFireShot}, MT_TORPEDO, 5, S_EGGMOBILE3_ATK4}, // S_EGGMOBILE3_ATK3D
|
{SPR_EGGO, 3, 2, {A_BossFireShot}, MT_TORPEDO, 5, S_EGGMOBILE3_ATK4}, // S_EGGMOBILE3_ATK3D
|
||||||
{SPR_EGGO, 4, 2, {NULL}, 0, 0, S_EGGMOBILE3_ATK5}, // S_EGGMOBILE3_ATK4
|
{SPR_EGGO, 4, 2, {NULL}, 0, 0, S_EGGMOBILE3_ATK5}, // S_EGGMOBILE3_ATK4
|
||||||
{SPR_EGGO, 5, 2, {NULL}, 0, 0, S_EGGMOBILE3_LAUGH6}, // S_EGGMOBILE3_ATK5
|
{SPR_EGGO, 5, 2, {NULL}, 0, 0, S_EGGMOBILE3_ROFL}, // S_EGGMOBILE3_ATK5
|
||||||
{SPR_EGGO, 7, 4, {NULL}, 0, 0, S_EGGMOBILE3_LAUGH7}, // S_EGGMOBILE3_LAUGH6
|
{SPR_EGGO, 6|FF_ANIMATE, 60, {NULL}, 1, 2, S_EGGMOBILE3_STND}, // S_EGGMOBILE3_ROFL
|
||||||
{SPR_EGGO, 6, 4, {NULL}, 0, 0, S_EGGMOBILE3_LAUGH8}, // S_EGGMOBILE3_LAUGH7
|
|
||||||
{SPR_EGGO, 7, 4, {NULL}, 0, 0, S_EGGMOBILE3_LAUGH9}, // S_EGGMOBILE3_LAUGH8
|
|
||||||
{SPR_EGGO, 6, 4, {NULL}, 0, 0, S_EGGMOBILE3_LAUGH10}, // S_EGGMOBILE3_LAUGH9
|
|
||||||
{SPR_EGGO, 7, 4, {NULL}, 0, 0, S_EGGMOBILE3_LAUGH11}, // S_EGGMOBILE3_LAUGH10
|
|
||||||
{SPR_EGGO, 6, 4, {NULL}, 0, 0, S_EGGMOBILE3_LAUGH12}, // S_EGGMOBILE3_LAUGH11
|
|
||||||
{SPR_EGGO, 7, 4, {NULL}, 0, 0, S_EGGMOBILE3_LAUGH13}, // S_EGGMOBILE3_LAUGH12
|
|
||||||
{SPR_EGGO, 6, 4, {NULL}, 0, 0, S_EGGMOBILE3_LAUGH14}, // S_EGGMOBILE3_LAUGH13
|
|
||||||
{SPR_EGGO, 7, 4, {NULL}, 0, 0, S_EGGMOBILE3_LAUGH15}, // S_EGGMOBILE3_LAUGH14
|
|
||||||
{SPR_EGGO, 6, 4, {NULL}, 0, 0, S_EGGMOBILE3_LAUGH16}, // S_EGGMOBILE3_LAUGH15
|
|
||||||
{SPR_EGGO, 7, 4, {NULL}, 0, 0, S_EGGMOBILE3_LAUGH17}, // S_EGGMOBILE3_LAUGH16
|
|
||||||
{SPR_EGGO, 6, 4, {NULL}, 0, 0, S_EGGMOBILE3_LAUGH18}, // S_EGGMOBILE3_LAUGH17
|
|
||||||
{SPR_EGGO, 7, 4, {NULL}, 0, 0, S_EGGMOBILE3_LAUGH19}, // S_EGGMOBILE3_LAUGH18
|
|
||||||
{SPR_EGGO, 6, 4, {NULL}, 0, 0, S_EGGMOBILE3_LAUGH20}, // S_EGGMOBILE3_LAUGH19
|
|
||||||
{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, 2, {A_Fall}, 0, 0, S_EGGMOBILE3_DIE2}, // S_EGGMOBILE3_DIE1
|
{SPR_EGGO, 9, 2, {A_Fall}, 0, 0, S_EGGMOBILE3_DIE2}, // S_EGGMOBILE3_DIE1
|
||||||
|
@ -1289,17 +1279,8 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_EGGO, 10, 2, {A_BossScream}, 0, 0, S_EGGMOBILE3_FLEE2}, // S_EGGMOBILE3_FLEE1
|
{SPR_EGGO, 10, 2, {A_BossScream}, 0, 0, S_EGGMOBILE3_FLEE2}, // S_EGGMOBILE3_FLEE1
|
||||||
{SPR_EGGO, 11, 2, {A_BossScream}, 0, 0, S_EGGMOBILE3_FLEE1}, // S_EGGMOBILE3_FLEE2
|
{SPR_EGGO, 11, 2, {A_BossScream}, 0, 0, S_EGGMOBILE3_FLEE1}, // S_EGGMOBILE3_FLEE2
|
||||||
|
|
||||||
// Boss 3 Propeller
|
|
||||||
{SPR_PRPL, 0, 1, {NULL}, 0, 0, S_PROPELLER2}, // S_PROPELLER1
|
|
||||||
{SPR_PRPL, 1, 1, {NULL}, 0, 0, S_PROPELLER3}, // S_PROPELLER2
|
|
||||||
{SPR_PRPL, 2, 1, {NULL}, 0, 0, S_PROPELLER4}, // S_PROPELLER3
|
|
||||||
{SPR_PRPL, 3, 1, {NULL}, 0, 0, S_PROPELLER5}, // S_PROPELLER4
|
|
||||||
{SPR_PRPL, 4, 1, {NULL}, 0, 0, S_PROPELLER6}, // S_PROPELLER5
|
|
||||||
{SPR_PRPL, 5, 1, {NULL}, 0, 0, S_PROPELLER7}, // S_PROPELLER6
|
|
||||||
{SPR_PRPL, 6, 1, {NULL}, 0, 0, S_PROPELLER1}, // S_PROPELLER7
|
|
||||||
|
|
||||||
// Boss 3 Pinch
|
// Boss 3 Pinch
|
||||||
{SPR_FAKE, 0, 1, {A_BossJetFume}, 1, 0, S_FAKEMOBILE}, // S_FAKEMOBILE_INIT
|
{SPR_FAKE, 0, 1, {NULL}, 0, 0, S_FAKEMOBILE}, // S_FAKEMOBILE_INIT
|
||||||
{SPR_FAKE, 0, 1, {A_Boss3Path}, 0, 0, S_FAKEMOBILE}, // S_FAKEMOBILE
|
{SPR_FAKE, 0, 1, {A_Boss3Path}, 0, 0, S_FAKEMOBILE}, // S_FAKEMOBILE
|
||||||
{SPR_FAKE, 0, 22, {NULL}, 0, 0, S_FAKEMOBILE_ATK2}, // S_FAKEMOBILE_ATK1
|
{SPR_FAKE, 0, 22, {NULL}, 0, 0, S_FAKEMOBILE_ATK2}, // S_FAKEMOBILE_ATK1
|
||||||
{SPR_FAKE, 0, 2, {NULL}, 0, 0, S_FAKEMOBILE_ATK3A}, // S_FAKEMOBILE_ATK2
|
{SPR_FAKE, 0, 2, {NULL}, 0, 0, S_FAKEMOBILE_ATK3A}, // S_FAKEMOBILE_ATK2
|
||||||
|
@ -1307,33 +1288,36 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_FAKE, 0, 2, {A_BossFireShot}, MT_TORPEDO2, 4, S_FAKEMOBILE_ATK3C}, // S_FAKEMOBILE_ATK3B
|
{SPR_FAKE, 0, 2, {A_BossFireShot}, MT_TORPEDO2, 4, S_FAKEMOBILE_ATK3C}, // S_FAKEMOBILE_ATK3B
|
||||||
{SPR_FAKE, 0, 2, {A_BossFireShot}, MT_TORPEDO2, 3, S_FAKEMOBILE_ATK3D}, // S_FAKEMOBILE_ATK3C
|
{SPR_FAKE, 0, 2, {A_BossFireShot}, MT_TORPEDO2, 3, S_FAKEMOBILE_ATK3D}, // S_FAKEMOBILE_ATK3C
|
||||||
{SPR_FAKE, 0, 2, {A_BossFireShot}, MT_TORPEDO2, 5, S_FAKEMOBILE}, // S_FAKEMOBILE_ATK3D
|
{SPR_FAKE, 0, 2, {A_BossFireShot}, MT_TORPEDO2, 5, S_FAKEMOBILE}, // S_FAKEMOBILE_ATK3D
|
||||||
{SPR_FAKE, 0, 1, {NULL}, 0, 0, S_FAKEMOBILE_DIE2}, // S_FAKEMOBILE_DIE1
|
{SPR_FAKE, 1, 1, {NULL}, 0, 0, S_FAKEMOBILE_DIE2}, // S_FAKEMOBILE_DIE1
|
||||||
{SPR_NULL, 0, 1, {NULL}, 0, 0, S_FAKEMOBILE_DIE1}, // S_FAKEMOBILE_DIE2
|
{SPR_NULL, 0, 1, {NULL}, 0, 0, S_FAKEMOBILE_DIE1}, // S_FAKEMOBILE_DIE2
|
||||||
|
|
||||||
|
{SPR_SEBH, 0, 35, {NULL}, 0, 0, S_NULL}, // S_BOSSSEBH1
|
||||||
|
{SPR_SEBH, 1, 35, {NULL}, 0, 0, S_NULL}, // S_BOSSSEBH2
|
||||||
|
|
||||||
// Boss 4
|
// Boss 4
|
||||||
{SPR_EGGP, 0, -1, {NULL}, 0, 0, S_NULL}, // S_EGGMOBILE4_STND
|
{SPR_EGGP, 0, -1, {NULL}, 0, 0, S_NULL}, // S_EGGMOBILE4_STND
|
||||||
{SPR_EGGP, 1, 3, {NULL}, 0, 0, S_EGGMOBILE4_LATK2}, // S_EGGMOBILE4_LATK1
|
{SPR_EGGP, 1, 3, {NULL}, 0, 0, S_EGGMOBILE4_LATK2}, // S_EGGMOBILE4_LATK1
|
||||||
{SPR_EGGP, 2, 15, {NULL}, 0, 0, S_EGGMOBILE4_LATK3}, // S_EGGMOBILE4_LATK2
|
{SPR_EGGP, 2, 15, {NULL}, 0, 0, S_EGGMOBILE4_LATK3}, // S_EGGMOBILE4_LATK2
|
||||||
{SPR_EGGP, 3, 2, {NULL}, 0, 0, S_EGGMOBILE4_LATK4}, // S_EGGMOBILE4_LATK3
|
{SPR_EGGP, 3, 2, {NULL}, 0, 0, S_EGGMOBILE4_LATK4}, // S_EGGMOBILE4_LATK3
|
||||||
{SPR_EGGP, 4, 4, {NULL}, 0, 0, S_EGGMOBILE4_LATK5}, // S_EGGMOBILE4_LATK4
|
{SPR_EGGP, 4, 2, {NULL}, 0, 0, S_EGGMOBILE4_LATK5}, // S_EGGMOBILE4_LATK4
|
||||||
{SPR_EGGP, 4, 50, {A_Boss4Reverse}, sfx_mswing, 0, S_EGGMOBILE4_LATK6}, // S_EGGMOBILE4_LATK5
|
{SPR_EGGP, 5, 50, {A_Boss4Reverse}, sfx_mswing, 0, S_EGGMOBILE4_LATK6}, // S_EGGMOBILE4_LATK5
|
||||||
{SPR_EGGP, 5, 2, {NULL}, 0, 0, S_EGGMOBILE4_STND}, // S_EGGMOBILE4_LATK6
|
{SPR_EGGP, 6, 2, {NULL}, 0, 0, S_EGGMOBILE4_STND}, // S_EGGMOBILE4_LATK6
|
||||||
{SPR_EGGP, 6, 3, {NULL}, 0, 0, S_EGGMOBILE4_RATK2}, // S_EGGMOBILE4_RATK1
|
{SPR_EGGP, 7, 3, {NULL}, 0, 0, S_EGGMOBILE4_RATK2}, // S_EGGMOBILE4_RATK1
|
||||||
{SPR_EGGP, 7, 15, {NULL}, 0, 0, S_EGGMOBILE4_RATK3}, // S_EGGMOBILE4_RATK2
|
{SPR_EGGP, 8, 15, {NULL}, 0, 0, S_EGGMOBILE4_RATK3}, // S_EGGMOBILE4_RATK2
|
||||||
{SPR_EGGP, 8, 2, {NULL}, 0, 0, S_EGGMOBILE4_RATK4}, // S_EGGMOBILE4_RATK3
|
{SPR_EGGP, 9, 2, {NULL}, 0, 0, S_EGGMOBILE4_RATK4}, // S_EGGMOBILE4_RATK3
|
||||||
{SPR_EGGP, 9, 4, {NULL}, 0, 0, S_EGGMOBILE4_RATK5}, // S_EGGMOBILE4_RATK4
|
{SPR_EGGP,10, 2, {NULL}, 0, 0, S_EGGMOBILE4_RATK5}, // S_EGGMOBILE4_RATK4
|
||||||
{SPR_EGGP, 9,150, {A_Boss4SpeedUp}, sfx_mswing, 0, S_EGGMOBILE4_RATK6}, // S_EGGMOBILE4_RATK5
|
{SPR_EGGP,11,150, {A_Boss4SpeedUp}, sfx_mswing, 0, S_EGGMOBILE4_RATK6}, // S_EGGMOBILE4_RATK5
|
||||||
{SPR_EGGP,10, 2, {NULL}, 0, 0, S_EGGMOBILE4_STND}, // S_EGGMOBILE4_RATK6
|
{SPR_EGGP,12, 2, {NULL}, 0, 0, S_EGGMOBILE4_STND}, // S_EGGMOBILE4_RATK6
|
||||||
{SPR_EGGP, 0, 20, {A_Boss4Raise}, sfx_doord1, 0, S_EGGMOBILE4_RAISE2}, // S_EGGMOBILE4_RAISE1
|
{SPR_EGGP,13, 20, {A_Boss4Raise}, sfx_doord1, 0, S_EGGMOBILE4_RAISE2}, // S_EGGMOBILE4_RAISE1
|
||||||
{SPR_EGGP,13|FF_ANIMATE, -1, {NULL}, 1, 10, S_NULL}, // S_EGGMOBILE4_RAISE2
|
{SPR_EGGP,15|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,13, 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,13, 24, {A_Pain}, 0, 0, S_EGGMOBILE4_STND}, // S_EGGMOBILE4_PAIN2
|
||||||
{SPR_EGGP,12, 2, {A_Fall}, 0, 0, S_EGGMOBILE4_DIE2}, // S_EGGMOBILE4_DIE1
|
{SPR_EGGP,14, 2, {A_Fall}, 0, 0, S_EGGMOBILE4_DIE2}, // S_EGGMOBILE4_DIE1
|
||||||
{SPR_EGGP,12, 2, {A_BossScream}, 0, 0, S_EGGMOBILE4_DIE3}, // S_EGGMOBILE4_DIE2
|
{SPR_EGGP,14, 2, {A_BossScream}, 0, 0, S_EGGMOBILE4_DIE3}, // S_EGGMOBILE4_DIE2
|
||||||
{SPR_EGGP,12, 0, {A_Repeat}, 17, S_EGGMOBILE4_DIE2, S_EGGMOBILE4_DIE4}, // S_EGGMOBILE4_DIE3
|
{SPR_EGGP,14, 0, {A_Repeat}, 17, S_EGGMOBILE4_DIE2, S_EGGMOBILE4_DIE4}, // S_EGGMOBILE4_DIE3
|
||||||
{SPR_EGGP,12, -1, {A_BossDeath}, 0, 0, S_NULL}, // S_EGGMOBILE4_DIE4
|
{SPR_EGGP,14, -1, {A_BossDeath}, 0, 0, S_NULL}, // S_EGGMOBILE4_DIE4
|
||||||
{SPR_EGGP,13, 2, {A_BossScream}, 0, 0, S_EGGMOBILE4_FLEE2}, // S_EGGMOBILE4_FLEE1
|
{SPR_EGGP,15, 2, {A_BossScream}, 0, 0, S_EGGMOBILE4_FLEE2}, // S_EGGMOBILE4_FLEE1
|
||||||
{SPR_EGGP,14, 2, {A_BossScream}, 0, 0, S_EGGMOBILE4_FLEE1}, // S_EGGMOBILE4_FLEE2
|
{SPR_EGGP,16, 2, {A_BossScream}, 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, 0, 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, 0, S_EGGMOBILE4_MACE_DIE3}, // S_EGGMOBILE4_MACE_DIE2
|
{SPR_NULL, 0, 2, {A_BossScream}, 1, 0, S_EGGMOBILE4_MACE_DIE3}, // S_EGGMOBILE4_MACE_DIE2
|
||||||
|
@ -1732,18 +1716,8 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_METL, 11, 1, {A_BossScream}, 0, 0, S_METALSONIC_FLEE2}, // S_METALSONIC_FLEE1
|
{SPR_METL, 11, 1, {A_BossScream}, 0, 0, S_METALSONIC_FLEE2}, // S_METALSONIC_FLEE1
|
||||||
{SPR_METL, 11, 7, {NULL}, 0, 0, S_METALSONIC_FLEE1}, // S_METALSONIC_FLEE2
|
{SPR_METL, 11, 7, {NULL}, 0, 0, S_METALSONIC_FLEE1}, // S_METALSONIC_FLEE2
|
||||||
|
|
||||||
{SPR_MSCF, FF_FULLBRIGHT|FF_TRANS30| 0, 1, {NULL}, 0, 0, S_MSSHIELD_F2}, // S_MSSHIELD_F1
|
{SPR_MSCF, FF_FULLBRIGHT|FF_TRANS30|FF_ANIMATE, -1, {NULL}, 11, 1, S_NULL}, // 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_ANIMATE|12, -1, {NULL}, 8, 2, S_NULL}, // S_MSSHIELD_F2
|
||||||
{SPR_MSCF, FF_FULLBRIGHT|FF_TRANS30| 2, 1, {NULL}, 0, 0, S_MSSHIELD_F4}, // S_MSSHIELD_F3
|
|
||||||
{SPR_MSCF, FF_FULLBRIGHT|FF_TRANS30| 3, 1, {NULL}, 0, 0, S_MSSHIELD_F5}, // S_MSSHIELD_F4
|
|
||||||
{SPR_MSCF, FF_FULLBRIGHT|FF_TRANS30| 4, 1, {NULL}, 0, 0, S_MSSHIELD_F6}, // S_MSSHIELD_F5
|
|
||||||
{SPR_MSCF, FF_FULLBRIGHT|FF_TRANS30| 5, 1, {NULL}, 0, 0, S_MSSHIELD_F7}, // S_MSSHIELD_F6
|
|
||||||
{SPR_MSCF, FF_FULLBRIGHT|FF_TRANS30| 6, 1, {NULL}, 0, 0, S_MSSHIELD_F8}, // S_MSSHIELD_F7
|
|
||||||
{SPR_MSCF, FF_FULLBRIGHT|FF_TRANS30| 7, 1, {NULL}, 0, 0, S_MSSHIELD_F9}, // S_MSSHIELD_F8
|
|
||||||
{SPR_MSCF, FF_FULLBRIGHT|FF_TRANS30| 8, 1, {NULL}, 0, 0, S_MSSHIELD_F10}, // S_MSSHIELD_F9
|
|
||||||
{SPR_MSCF, FF_FULLBRIGHT|FF_TRANS30| 9, 1, {NULL}, 0, 0, S_MSSHIELD_F11}, // S_MSSHIELD_F10
|
|
||||||
{SPR_MSCF, FF_FULLBRIGHT|FF_TRANS30|10, 1, {NULL}, 0, 0, S_MSSHIELD_F12}, // S_MSSHIELD_F11
|
|
||||||
{SPR_MSCF, FF_FULLBRIGHT|FF_TRANS30|11, 1, {NULL}, 0, 0, S_MSSHIELD_F1}, // S_MSSHIELD_F12
|
|
||||||
|
|
||||||
// Ring
|
// Ring
|
||||||
{SPR_RING, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 23, 1, S_RING}, // S_RING
|
{SPR_RING, FF_ANIMATE|FF_GLOBALANIM, -1, {NULL}, 23, 1, S_RING}, // S_RING
|
||||||
|
@ -5144,6 +5118,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ // MT_BOSSJUNK
|
||||||
|
-1, // doomednum
|
||||||
|
S_BOSSEGLZ1, // spawnstate
|
||||||
|
1, // 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
|
||||||
|
8*FRACUNIT, // radius
|
||||||
|
64*FRACUNIT, // height
|
||||||
|
2, // display offset
|
||||||
|
100, // mass
|
||||||
|
1, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_SCENERY|MF_NOBLOCKMAP|MF_NOCLIPHEIGHT, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
{ // MT_EGGMOBILE
|
{ // MT_EGGMOBILE
|
||||||
200, // doomednum
|
200, // doomednum
|
||||||
S_EGGMOBILE_STND, // spawnstate
|
S_EGGMOBILE_STND, // spawnstate
|
||||||
|
@ -5333,87 +5334,6 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
S_EGGMOBILE2_POGO5 // raisestate
|
S_EGGMOBILE2_POGO5 // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // MT_BOSSTANK1
|
|
||||||
-1, // doomednum
|
|
||||||
S_BOSSTANK1, // spawnstate
|
|
||||||
1, // 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
|
|
||||||
8*FRACUNIT, // radius
|
|
||||||
64*FRACUNIT, // height
|
|
||||||
0, // display offset
|
|
||||||
100, // mass
|
|
||||||
1, // damage
|
|
||||||
sfx_None, // activesound
|
|
||||||
MF_SCENERY|MF_NOBLOCKMAP|MF_NOCLIPHEIGHT, // flags
|
|
||||||
S_NULL // raisestate
|
|
||||||
},
|
|
||||||
|
|
||||||
{ // MT_BOSSTANK2
|
|
||||||
-1, // doomednum
|
|
||||||
S_BOSSTANK2, // spawnstate
|
|
||||||
1, // 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
|
|
||||||
8*FRACUNIT, // radius
|
|
||||||
64*FRACUNIT, // height
|
|
||||||
0, // display offset
|
|
||||||
100, // mass
|
|
||||||
1, // damage
|
|
||||||
sfx_None, // activesound
|
|
||||||
MF_SCENERY|MF_NOBLOCKMAP|MF_NOCLIPHEIGHT, // flags
|
|
||||||
S_NULL // raisestate
|
|
||||||
},
|
|
||||||
|
|
||||||
{ // MT_BOSSSPIGOT
|
|
||||||
-1, // doomednum
|
|
||||||
S_BOSSSPIGOT, // spawnstate
|
|
||||||
1, // 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
|
|
||||||
8*FRACUNIT, // radius
|
|
||||||
24*FRACUNIT, // height
|
|
||||||
0, // display offset
|
|
||||||
100, // mass
|
|
||||||
1, // damage
|
|
||||||
sfx_None, // activesound
|
|
||||||
MF_SCENERY|MF_NOBLOCKMAP|MF_NOCLIPHEIGHT, // flags
|
|
||||||
S_NULL // raisestate
|
|
||||||
},
|
|
||||||
|
|
||||||
{ // MT_GOOP
|
{ // MT_GOOP
|
||||||
-1, // doomednum
|
-1, // doomednum
|
||||||
S_GOOP1, // spawnstate
|
S_GOOP1, // spawnstate
|
||||||
|
@ -5477,10 +5397,10 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
0, // reactiontime
|
0, // reactiontime
|
||||||
sfx_None, // attacksound
|
sfx_None, // attacksound
|
||||||
S_EGGMOBILE3_PAIN, // painstate
|
S_EGGMOBILE3_PAIN, // painstate
|
||||||
MT_PROPELLER, // painchance
|
MT_NULL, // painchance
|
||||||
sfx_dmpain, // painsound
|
sfx_dmpain, // painsound
|
||||||
S_NULL, // meleestate
|
S_NULL, // meleestate
|
||||||
S_EGGMOBILE3_LAUGH1,// missilestate
|
S_EGGMOBILE3_SHOCK, // missilestate
|
||||||
S_EGGMOBILE3_DIE1, // deathstate
|
S_EGGMOBILE3_DIE1, // deathstate
|
||||||
S_EGGMOBILE3_FLEE1, // xdeathstate
|
S_EGGMOBILE3_FLEE1, // xdeathstate
|
||||||
sfx_s3kb4, // deathsound
|
sfx_s3kb4, // deathsound
|
||||||
|
@ -5492,34 +5412,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
3, // damage
|
3, // damage
|
||||||
sfx_telept, // activesound
|
sfx_telept, // activesound
|
||||||
MF_SPECIAL|MF_SHOOTABLE|MF_NOGRAVITY|MF_BOSS|MF_NOCLIPHEIGHT, // flags
|
MF_SPECIAL|MF_SHOOTABLE|MF_NOGRAVITY|MF_BOSS|MF_NOCLIPHEIGHT, // flags
|
||||||
S_EGGMOBILE3_LAUGH20 // raisestate
|
S_EGGMOBILE3_ROFL // raisestate
|
||||||
},
|
|
||||||
|
|
||||||
{ // MT_PROPELLER
|
|
||||||
-1, // doomednum
|
|
||||||
S_PROPELLER1, // 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
|
|
||||||
1, // speed
|
|
||||||
4*FRACUNIT, // radius
|
|
||||||
4*FRACUNIT, // height
|
|
||||||
0, // display offset
|
|
||||||
4, // mass
|
|
||||||
0, // damage
|
|
||||||
sfx_None, // activesound
|
|
||||||
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT, // flags
|
|
||||||
S_NULL // raisestate
|
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // MT_FAKEMOBILE
|
{ // MT_FAKEMOBILE
|
||||||
|
@ -5531,7 +5424,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
0, // reactiontime
|
0, // reactiontime
|
||||||
sfx_None, // attacksound
|
sfx_None, // attacksound
|
||||||
S_NULL, // painstate
|
S_NULL, // painstate
|
||||||
MT_PROPELLER, // painchance
|
MT_NULL, // painchance
|
||||||
sfx_s3k7b, // painsound
|
sfx_s3k7b, // painsound
|
||||||
S_NULL, // meleestate
|
S_NULL, // meleestate
|
||||||
S_FAKEMOBILE_ATK1, // missilestate
|
S_FAKEMOBILE_ATK1, // missilestate
|
||||||
|
@ -9211,7 +9104,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
0, // mass
|
0, // mass
|
||||||
20, // damage
|
20, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_PAIN|MF_NOGRAVITY|MF_NOCLIPHEIGHT, // flags
|
MF_PAIN|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_NOCLIP, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
73
src/info.h
73
src/info.h
|
@ -319,18 +319,17 @@ typedef enum sprite
|
||||||
SPR_JETF, // Boss jet fumes
|
SPR_JETF, // Boss jet fumes
|
||||||
|
|
||||||
// Boss 1 (Greenflower)
|
// Boss 1 (Greenflower)
|
||||||
SPR_EGGM,
|
SPR_EGGM, // Boss 1
|
||||||
|
SPR_EGLZ, // Boss 1 Junk
|
||||||
|
|
||||||
// Boss 2 (Techno Hill)
|
// Boss 2 (Techno Hill)
|
||||||
SPR_EGGN, // Boss 2
|
SPR_EGGN, // Boss 2
|
||||||
SPR_TNKA, // Boss 2 Tank 1
|
SPR_TANK, // Boss 2 Junk
|
||||||
SPR_TNKB, // Boss 2 Tank 2
|
|
||||||
SPR_SPNK, // Boss 2 Spigot
|
|
||||||
SPR_GOOP, // Boss 2 Goop
|
SPR_GOOP, // Boss 2 Goop
|
||||||
|
|
||||||
// Boss 3 (Deep Sea)
|
// Boss 3 (Deep Sea)
|
||||||
SPR_EGGO, // Boss 3
|
SPR_EGGO, // Boss 3
|
||||||
SPR_PRPL, // Boss 3 Propeller
|
SPR_SEBH, // Boss 3 Junk
|
||||||
SPR_FAKE, // Boss 3 Fakemobile
|
SPR_FAKE, // Boss 3 Fakemobile
|
||||||
|
|
||||||
// Boss 4 (Castle Eggman)
|
// Boss 4 (Castle Eggman)
|
||||||
|
@ -1333,10 +1332,10 @@ typedef enum state
|
||||||
S_SONIC3KBOSSEXPLOSION6,
|
S_SONIC3KBOSSEXPLOSION6,
|
||||||
|
|
||||||
S_JETFUME1,
|
S_JETFUME1,
|
||||||
S_JETFUME2,
|
|
||||||
|
|
||||||
// Boss 1
|
// Boss 1
|
||||||
S_EGGMOBILE_STND,
|
S_EGGMOBILE_STND,
|
||||||
|
S_EGGMOBILE_ROFL,
|
||||||
S_EGGMOBILE_LATK1,
|
S_EGGMOBILE_LATK1,
|
||||||
S_EGGMOBILE_LATK2,
|
S_EGGMOBILE_LATK2,
|
||||||
S_EGGMOBILE_LATK3,
|
S_EGGMOBILE_LATK3,
|
||||||
|
@ -1346,7 +1345,6 @@ typedef enum state
|
||||||
S_EGGMOBILE_LATK7,
|
S_EGGMOBILE_LATK7,
|
||||||
S_EGGMOBILE_LATK8,
|
S_EGGMOBILE_LATK8,
|
||||||
S_EGGMOBILE_LATK9,
|
S_EGGMOBILE_LATK9,
|
||||||
S_EGGMOBILE_LATK10,
|
|
||||||
S_EGGMOBILE_RATK1,
|
S_EGGMOBILE_RATK1,
|
||||||
S_EGGMOBILE_RATK2,
|
S_EGGMOBILE_RATK2,
|
||||||
S_EGGMOBILE_RATK3,
|
S_EGGMOBILE_RATK3,
|
||||||
|
@ -1356,7 +1354,6 @@ typedef enum state
|
||||||
S_EGGMOBILE_RATK7,
|
S_EGGMOBILE_RATK7,
|
||||||
S_EGGMOBILE_RATK8,
|
S_EGGMOBILE_RATK8,
|
||||||
S_EGGMOBILE_RATK9,
|
S_EGGMOBILE_RATK9,
|
||||||
S_EGGMOBILE_RATK10,
|
|
||||||
S_EGGMOBILE_PANIC1,
|
S_EGGMOBILE_PANIC1,
|
||||||
S_EGGMOBILE_PANIC2,
|
S_EGGMOBILE_PANIC2,
|
||||||
S_EGGMOBILE_PANIC3,
|
S_EGGMOBILE_PANIC3,
|
||||||
|
@ -1364,6 +1361,14 @@ typedef enum state
|
||||||
S_EGGMOBILE_PANIC5,
|
S_EGGMOBILE_PANIC5,
|
||||||
S_EGGMOBILE_PANIC6,
|
S_EGGMOBILE_PANIC6,
|
||||||
S_EGGMOBILE_PANIC7,
|
S_EGGMOBILE_PANIC7,
|
||||||
|
S_EGGMOBILE_PANIC8,
|
||||||
|
S_EGGMOBILE_PANIC9,
|
||||||
|
S_EGGMOBILE_PANIC10,
|
||||||
|
S_EGGMOBILE_PANIC11,
|
||||||
|
S_EGGMOBILE_PANIC12,
|
||||||
|
S_EGGMOBILE_PANIC13,
|
||||||
|
S_EGGMOBILE_PANIC14,
|
||||||
|
S_EGGMOBILE_PANIC15,
|
||||||
S_EGGMOBILE_PAIN,
|
S_EGGMOBILE_PAIN,
|
||||||
S_EGGMOBILE_PAIN2,
|
S_EGGMOBILE_PAIN2,
|
||||||
S_EGGMOBILE_DIE1,
|
S_EGGMOBILE_DIE1,
|
||||||
|
@ -1375,6 +1380,9 @@ typedef enum state
|
||||||
S_EGGMOBILE_BALL,
|
S_EGGMOBILE_BALL,
|
||||||
S_EGGMOBILE_TARGET,
|
S_EGGMOBILE_TARGET,
|
||||||
|
|
||||||
|
S_BOSSEGLZ1,
|
||||||
|
S_BOSSEGLZ2,
|
||||||
|
|
||||||
// Boss 2
|
// Boss 2
|
||||||
S_EGGMOBILE2_STND,
|
S_EGGMOBILE2_STND,
|
||||||
S_EGGMOBILE2_POGO1,
|
S_EGGMOBILE2_POGO1,
|
||||||
|
@ -1405,11 +1413,7 @@ typedef enum state
|
||||||
|
|
||||||
// Boss 3
|
// Boss 3
|
||||||
S_EGGMOBILE3_STND,
|
S_EGGMOBILE3_STND,
|
||||||
S_EGGMOBILE3_LAUGH1,
|
S_EGGMOBILE3_SHOCK,
|
||||||
S_EGGMOBILE3_LAUGH2,
|
|
||||||
S_EGGMOBILE3_LAUGH3,
|
|
||||||
S_EGGMOBILE3_LAUGH4,
|
|
||||||
S_EGGMOBILE3_LAUGH5,
|
|
||||||
S_EGGMOBILE3_ATK1,
|
S_EGGMOBILE3_ATK1,
|
||||||
S_EGGMOBILE3_ATK2,
|
S_EGGMOBILE3_ATK2,
|
||||||
S_EGGMOBILE3_ATK3A,
|
S_EGGMOBILE3_ATK3A,
|
||||||
|
@ -1418,21 +1422,7 @@ typedef enum state
|
||||||
S_EGGMOBILE3_ATK3D,
|
S_EGGMOBILE3_ATK3D,
|
||||||
S_EGGMOBILE3_ATK4,
|
S_EGGMOBILE3_ATK4,
|
||||||
S_EGGMOBILE3_ATK5,
|
S_EGGMOBILE3_ATK5,
|
||||||
S_EGGMOBILE3_LAUGH6,
|
S_EGGMOBILE3_ROFL,
|
||||||
S_EGGMOBILE3_LAUGH7,
|
|
||||||
S_EGGMOBILE3_LAUGH8,
|
|
||||||
S_EGGMOBILE3_LAUGH9,
|
|
||||||
S_EGGMOBILE3_LAUGH10,
|
|
||||||
S_EGGMOBILE3_LAUGH11,
|
|
||||||
S_EGGMOBILE3_LAUGH12,
|
|
||||||
S_EGGMOBILE3_LAUGH13,
|
|
||||||
S_EGGMOBILE3_LAUGH14,
|
|
||||||
S_EGGMOBILE3_LAUGH15,
|
|
||||||
S_EGGMOBILE3_LAUGH16,
|
|
||||||
S_EGGMOBILE3_LAUGH17,
|
|
||||||
S_EGGMOBILE3_LAUGH18,
|
|
||||||
S_EGGMOBILE3_LAUGH19,
|
|
||||||
S_EGGMOBILE3_LAUGH20,
|
|
||||||
S_EGGMOBILE3_PAIN,
|
S_EGGMOBILE3_PAIN,
|
||||||
S_EGGMOBILE3_PAIN2,
|
S_EGGMOBILE3_PAIN2,
|
||||||
S_EGGMOBILE3_DIE1,
|
S_EGGMOBILE3_DIE1,
|
||||||
|
@ -1442,15 +1432,6 @@ typedef enum state
|
||||||
S_EGGMOBILE3_FLEE1,
|
S_EGGMOBILE3_FLEE1,
|
||||||
S_EGGMOBILE3_FLEE2,
|
S_EGGMOBILE3_FLEE2,
|
||||||
|
|
||||||
// Boss 3 Propeller
|
|
||||||
S_PROPELLER1,
|
|
||||||
S_PROPELLER2,
|
|
||||||
S_PROPELLER3,
|
|
||||||
S_PROPELLER4,
|
|
||||||
S_PROPELLER5,
|
|
||||||
S_PROPELLER6,
|
|
||||||
S_PROPELLER7,
|
|
||||||
|
|
||||||
// Boss 3 Pinch
|
// Boss 3 Pinch
|
||||||
S_FAKEMOBILE_INIT,
|
S_FAKEMOBILE_INIT,
|
||||||
S_FAKEMOBILE,
|
S_FAKEMOBILE,
|
||||||
|
@ -1463,6 +1444,9 @@ typedef enum state
|
||||||
S_FAKEMOBILE_DIE1,
|
S_FAKEMOBILE_DIE1,
|
||||||
S_FAKEMOBILE_DIE2,
|
S_FAKEMOBILE_DIE2,
|
||||||
|
|
||||||
|
S_BOSSSEBH1,
|
||||||
|
S_BOSSSEBH2,
|
||||||
|
|
||||||
// Boss 4
|
// Boss 4
|
||||||
S_EGGMOBILE4_STND,
|
S_EGGMOBILE4_STND,
|
||||||
S_EGGMOBILE4_LATK1,
|
S_EGGMOBILE4_LATK1,
|
||||||
|
@ -1866,16 +1850,6 @@ typedef enum state
|
||||||
|
|
||||||
S_MSSHIELD_F1,
|
S_MSSHIELD_F1,
|
||||||
S_MSSHIELD_F2,
|
S_MSSHIELD_F2,
|
||||||
S_MSSHIELD_F3,
|
|
||||||
S_MSSHIELD_F4,
|
|
||||||
S_MSSHIELD_F5,
|
|
||||||
S_MSSHIELD_F6,
|
|
||||||
S_MSSHIELD_F7,
|
|
||||||
S_MSSHIELD_F8,
|
|
||||||
S_MSSHIELD_F9,
|
|
||||||
S_MSSHIELD_F10,
|
|
||||||
S_MSSHIELD_F11,
|
|
||||||
S_MSSHIELD_F12,
|
|
||||||
|
|
||||||
// Ring
|
// Ring
|
||||||
S_RING,
|
S_RING,
|
||||||
|
@ -3981,6 +3955,7 @@ typedef enum mobj_type
|
||||||
MT_EGGTRAP,
|
MT_EGGTRAP,
|
||||||
MT_BOSS3WAYPOINT,
|
MT_BOSS3WAYPOINT,
|
||||||
MT_BOSS9GATHERPOINT,
|
MT_BOSS9GATHERPOINT,
|
||||||
|
MT_BOSSJUNK,
|
||||||
|
|
||||||
// Boss 1
|
// Boss 1
|
||||||
MT_EGGMOBILE,
|
MT_EGGMOBILE,
|
||||||
|
@ -3992,15 +3967,11 @@ typedef enum mobj_type
|
||||||
// Boss 2
|
// Boss 2
|
||||||
MT_EGGMOBILE2,
|
MT_EGGMOBILE2,
|
||||||
MT_EGGMOBILE2_POGO,
|
MT_EGGMOBILE2_POGO,
|
||||||
MT_BOSSTANK1,
|
|
||||||
MT_BOSSTANK2,
|
|
||||||
MT_BOSSSPIGOT,
|
|
||||||
MT_GOOP,
|
MT_GOOP,
|
||||||
MT_GOOPTRAIL,
|
MT_GOOPTRAIL,
|
||||||
|
|
||||||
// Boss 3
|
// Boss 3
|
||||||
MT_EGGMOBILE3,
|
MT_EGGMOBILE3,
|
||||||
MT_PROPELLER,
|
|
||||||
MT_FAKEMOBILE,
|
MT_FAKEMOBILE,
|
||||||
MT_SHOCK,
|
MT_SHOCK,
|
||||||
|
|
||||||
|
|
234
src/p_enemy.c
234
src/p_enemy.c
|
@ -3003,16 +3003,19 @@ void A_Boss7FireMissiles(mobj_t *actor)
|
||||||
// 0 - Boss 1 Left side
|
// 0 - Boss 1 Left side
|
||||||
// 1 - Boss 1 Right side
|
// 1 - Boss 1 Right side
|
||||||
// 2 - Triple laser
|
// 2 - Triple laser
|
||||||
// >3 - Boss 1 Middle
|
// 3 - Boss 1 Middle
|
||||||
|
// >=3 - Generic middle
|
||||||
//
|
//
|
||||||
void A_Boss1Laser(mobj_t *actor)
|
void A_Boss1Laser(mobj_t *actor)
|
||||||
{
|
{
|
||||||
fixed_t x, y, z, floorz, speed;
|
fixed_t x, y, z, floorz, speed;
|
||||||
INT32 locvar1 = var1;
|
INT32 locvar1 = var1;
|
||||||
INT32 locvar2 = var2;
|
INT32 locvar2 = (var2 & 65535);
|
||||||
|
INT32 upperend = (var2>>16);
|
||||||
INT32 i;
|
INT32 i;
|
||||||
angle_t angle;
|
angle_t angle;
|
||||||
mobj_t *point;
|
mobj_t *point;
|
||||||
|
tic_t dur;
|
||||||
|
|
||||||
#ifdef HAVE_BLUA
|
#ifdef HAVE_BLUA
|
||||||
if (LUA_CallAction("A_Boss1Laser", actor))
|
if (LUA_CallAction("A_Boss1Laser", actor))
|
||||||
|
@ -3021,19 +3024,24 @@ void A_Boss1Laser(mobj_t *actor)
|
||||||
if (!actor->target)
|
if (!actor->target)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if ((upperend & 1) && (actor->extravalue2 > 1))
|
||||||
|
actor->extravalue2--;
|
||||||
|
|
||||||
|
dur = actor->extravalue2;
|
||||||
|
|
||||||
switch (locvar2)
|
switch (locvar2)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
x = actor->x + P_ReturnThrustX(actor, actor->angle+ANGLE_90, FixedMul(43*FRACUNIT, actor->scale));
|
x = actor->x + P_ReturnThrustX(actor, actor->angle+ANGLE_90, FixedMul(44*FRACUNIT, actor->scale));
|
||||||
y = actor->y + P_ReturnThrustY(actor, actor->angle+ANGLE_90, FixedMul(43*FRACUNIT, actor->scale));
|
y = actor->y + P_ReturnThrustY(actor, actor->angle+ANGLE_90, FixedMul(44*FRACUNIT, actor->scale));
|
||||||
if (actor->eflags & MFE_VERTICALFLIP)
|
if (actor->eflags & MFE_VERTICALFLIP)
|
||||||
z = actor->z + actor->height - FixedMul(56*FRACUNIT, actor->scale) - mobjinfo[locvar1].height;
|
z = actor->z + actor->height - FixedMul(56*FRACUNIT, actor->scale) - mobjinfo[locvar1].height;
|
||||||
else
|
else
|
||||||
z = actor->z + FixedMul(56*FRACUNIT, actor->scale);
|
z = actor->z + FixedMul(56*FRACUNIT, actor->scale);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
x = actor->x + P_ReturnThrustX(actor, actor->angle-ANGLE_90, FixedMul(43*FRACUNIT, actor->scale));
|
x = actor->x + P_ReturnThrustX(actor, actor->angle-ANGLE_90, FixedMul(44*FRACUNIT, actor->scale));
|
||||||
y = actor->y + P_ReturnThrustY(actor, actor->angle-ANGLE_90, FixedMul(43*FRACUNIT, actor->scale));
|
y = actor->y + P_ReturnThrustY(actor, actor->angle-ANGLE_90, FixedMul(44*FRACUNIT, actor->scale));
|
||||||
if (actor->eflags & MFE_VERTICALFLIP)
|
if (actor->eflags & MFE_VERTICALFLIP)
|
||||||
z = actor->z + actor->height - FixedMul(56*FRACUNIT, actor->scale) - mobjinfo[locvar1].height;
|
z = actor->z + actor->height - FixedMul(56*FRACUNIT, actor->scale) - mobjinfo[locvar1].height;
|
||||||
else
|
else
|
||||||
|
@ -3048,6 +3056,11 @@ void A_Boss1Laser(mobj_t *actor)
|
||||||
A_Boss1Laser(actor);
|
A_Boss1Laser(actor);
|
||||||
return;
|
return;
|
||||||
break;
|
break;
|
||||||
|
case 3:
|
||||||
|
x = actor->x + P_ReturnThrustX(actor, actor->angle, FixedMul(42*FRACUNIT, actor->scale));
|
||||||
|
y = actor->y + P_ReturnThrustY(actor, actor->angle, FixedMul(42*FRACUNIT, actor->scale));
|
||||||
|
z = actor->z + actor->height/2;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
x = actor->x;
|
x = actor->x;
|
||||||
y = actor->y;
|
y = actor->y;
|
||||||
|
@ -3055,7 +3068,7 @@ void A_Boss1Laser(mobj_t *actor)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(actor->flags2 & MF2_FIRING) && actor->tics > 1)
|
if (!(actor->flags2 & MF2_FIRING) && dur > 1)
|
||||||
{
|
{
|
||||||
actor->angle = R_PointToAngle2(x, y, actor->target->x, actor->target->y);
|
actor->angle = R_PointToAngle2(x, y, actor->target->x, actor->target->y);
|
||||||
if (mobjinfo[locvar1].seesound)
|
if (mobjinfo[locvar1].seesound)
|
||||||
|
@ -3064,7 +3077,7 @@ void A_Boss1Laser(mobj_t *actor)
|
||||||
{
|
{
|
||||||
point = P_SpawnMobj(x + P_ReturnThrustX(actor, actor->angle, actor->radius), y + P_ReturnThrustY(actor, actor->angle, actor->radius), actor->z - actor->height / 2, MT_EGGMOBILE_TARGET);
|
point = P_SpawnMobj(x + P_ReturnThrustX(actor, actor->angle, actor->radius), y + P_ReturnThrustY(actor, actor->angle, actor->radius), actor->z - actor->height / 2, MT_EGGMOBILE_TARGET);
|
||||||
point->angle = actor->angle;
|
point->angle = actor->angle;
|
||||||
point->fuse = actor->tics+1;
|
point->fuse = dur+1;
|
||||||
P_SetTarget(&point->target, actor->target);
|
P_SetTarget(&point->target, actor->target);
|
||||||
P_SetTarget(&actor->target, point);
|
P_SetTarget(&actor->target, point);
|
||||||
}
|
}
|
||||||
|
@ -3073,9 +3086,9 @@ void A_Boss1Laser(mobj_t *actor)
|
||||||
else if (actor->target && !(actor->spawnpoint && actor->spawnpoint->options & MTF_AMBUSH))
|
else if (actor->target && !(actor->spawnpoint && actor->spawnpoint->options & MTF_AMBUSH))
|
||||||
actor->angle = R_PointToAngle2(x, y, actor->target->x, actor->target->y);*/
|
actor->angle = R_PointToAngle2(x, y, actor->target->x, actor->target->y);*/
|
||||||
|
|
||||||
if (actor->spawnpoint && actor->spawnpoint->options & MTF_AMBUSH)
|
/*if (actor->spawnpoint && actor->spawnpoint->options & MTF_AMBUSH)
|
||||||
angle = FixedAngle(FixedDiv(actor->tics*160*FRACUNIT, actor->state->tics*FRACUNIT) + 10*FRACUNIT);
|
angle = FixedAngle(FixedDiv(dur*160*FRACUNIT, actor->state->tics*FRACUNIT) + 10*FRACUNIT);
|
||||||
else
|
else*/
|
||||||
angle = R_PointToAngle2(z + (mobjinfo[locvar1].height>>1), 0, actor->target->z, R_PointToDist2(x, y, actor->target->x, actor->target->y));
|
angle = R_PointToAngle2(z + (mobjinfo[locvar1].height>>1), 0, actor->target->z, R_PointToDist2(x, y, actor->target->x, actor->target->y));
|
||||||
|
|
||||||
point = P_SpawnMobj(x, y, z, locvar1);
|
point = P_SpawnMobj(x, y, z, locvar1);
|
||||||
|
@ -3109,7 +3122,7 @@ void A_Boss1Laser(mobj_t *actor)
|
||||||
point->fuse = TICRATE;
|
point->fuse = TICRATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (actor->tics > 1)
|
if (dur > 1)
|
||||||
actor->flags2 |= MF2_FIRING;
|
actor->flags2 |= MF2_FIRING;
|
||||||
else
|
else
|
||||||
actor->flags2 &= ~MF2_FIRING;
|
actor->flags2 &= ~MF2_FIRING;
|
||||||
|
@ -3253,6 +3266,7 @@ void A_Boss4Raise(mobj_t *actor)
|
||||||
// 0 - Fly at the player
|
// 0 - Fly at the player
|
||||||
// 1 - Fly away from the player
|
// 1 - Fly away from the player
|
||||||
// 2 - Strafe in relation to the player
|
// 2 - Strafe in relation to the player
|
||||||
|
// 3 - Dynamic mode - don't get too close to walls
|
||||||
// var2:
|
// var2:
|
||||||
// 0 - Fly horizontally and vertically
|
// 0 - Fly horizontally and vertically
|
||||||
// 1 - Fly horizontal-only (momz = 0)
|
// 1 - Fly horizontal-only (momz = 0)
|
||||||
|
@ -3283,16 +3297,83 @@ void A_SkullAttack(mobj_t *actor)
|
||||||
S_StartSound(actor, actor->info->activesound);
|
S_StartSound(actor, actor->info->activesound);
|
||||||
A_FaceTarget(actor);
|
A_FaceTarget(actor);
|
||||||
|
|
||||||
|
dist = P_AproxDistance(dest->x - actor->x, dest->y - actor->y);
|
||||||
|
|
||||||
if (locvar1 == 1)
|
if (locvar1 == 1)
|
||||||
actor->angle += ANGLE_180;
|
actor->angle += ANGLE_180;
|
||||||
else if (locvar1 == 2)
|
else if (locvar1 == 2)
|
||||||
actor->angle += (P_RandomChance(FRACUNIT/2)) ? ANGLE_90 : -ANGLE_90;
|
actor->angle += (P_RandomChance(FRACUNIT/2)) ? ANGLE_90 : -ANGLE_90;
|
||||||
|
else if (locvar1 == 3)
|
||||||
|
{
|
||||||
|
statenum_t oldspawnstate = mobjinfo[MT_NULL].spawnstate;
|
||||||
|
UINT32 oldflags = mobjinfo[MT_NULL].flags;
|
||||||
|
fixed_t oldradius = mobjinfo[MT_NULL].radius;
|
||||||
|
fixed_t oldheight = mobjinfo[MT_NULL].height;
|
||||||
|
mobj_t *check;
|
||||||
|
INT32 i, j, k;
|
||||||
|
boolean allow;
|
||||||
|
angle_t testang;
|
||||||
|
|
||||||
|
mobjinfo[MT_NULL].spawnstate = S_INVISIBLE;
|
||||||
|
mobjinfo[MT_NULL].flags = MF_NOGRAVITY|MF_NOTHINK|MF_NOCLIPTHING|MF_NOBLOCKMAP;
|
||||||
|
mobjinfo[MT_NULL].radius = mobjinfo[actor->type].radius;
|
||||||
|
mobjinfo[MT_NULL].height = mobjinfo[actor->type].height;
|
||||||
|
|
||||||
|
if (P_RandomChance(FRACUNIT/2)) // port priority 1?
|
||||||
|
{
|
||||||
|
i = 9;
|
||||||
|
j = 27;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
i = 27;
|
||||||
|
j = 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define dostuff(q) check = P_SpawnMobjFromMobj(actor, 0, 0, 0, MT_NULL);\
|
||||||
|
testang = actor->angle + ((i+(q))*ANG10);\
|
||||||
|
allow = (P_TryMove(check,\
|
||||||
|
P_ReturnThrustX(check, testang, dist + 2*actor->radius),\
|
||||||
|
P_ReturnThrustY(check, testang, dist + 2*actor->radius),\
|
||||||
|
true));\
|
||||||
|
P_RemoveMobj(check);\
|
||||||
|
if (allow)\
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (P_RandomChance(FRACUNIT/2)) // port priority 2?
|
||||||
|
{
|
||||||
|
for (k = 0; k < 9; k++)
|
||||||
|
{
|
||||||
|
dostuff(i+k)
|
||||||
|
dostuff(i-k)
|
||||||
|
dostuff(j+k)
|
||||||
|
dostuff(j-k)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (k = 0; k < 9; k++)
|
||||||
|
{
|
||||||
|
dostuff(i-k)
|
||||||
|
dostuff(i+k)
|
||||||
|
dostuff(j-k)
|
||||||
|
dostuff(j+k)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
actor->angle = testang;
|
||||||
|
|
||||||
|
#undef dostuff
|
||||||
|
|
||||||
|
mobjinfo[MT_NULL].spawnstate = oldspawnstate;
|
||||||
|
mobjinfo[MT_NULL].flags = oldflags;
|
||||||
|
mobjinfo[MT_NULL].radius = oldradius;
|
||||||
|
mobjinfo[MT_NULL].height = oldheight;
|
||||||
|
}
|
||||||
|
|
||||||
an = actor->angle >> ANGLETOFINESHIFT;
|
an = actor->angle >> ANGLETOFINESHIFT;
|
||||||
|
|
||||||
actor->momx = FixedMul(speed, FINECOSINE(an));
|
actor->momx = FixedMul(speed, FINECOSINE(an));
|
||||||
actor->momy = FixedMul(speed, FINESINE(an));
|
actor->momy = FixedMul(speed, FINESINE(an));
|
||||||
dist = P_AproxDistance(dest->x - actor->x, dest->y - actor->y);
|
|
||||||
dist = dist / speed;
|
dist = dist / speed;
|
||||||
|
|
||||||
if (dist < 1)
|
if (dist < 1)
|
||||||
|
@ -3442,11 +3523,13 @@ void A_Pain(mobj_t *actor)
|
||||||
//
|
//
|
||||||
// Description: Changes a dying object's flags to reflect its having fallen to the ground.
|
// Description: Changes a dying object's flags to reflect its having fallen to the ground.
|
||||||
//
|
//
|
||||||
// var1 = unused
|
// var1 = value to set repeat to if nonzero
|
||||||
// var2 = unused
|
// var2 = unused
|
||||||
//
|
//
|
||||||
void A_Fall(mobj_t *actor)
|
void A_Fall(mobj_t *actor)
|
||||||
{
|
{
|
||||||
|
INT32 locvar1 = var1;
|
||||||
|
|
||||||
#ifdef HAVE_BLUA
|
#ifdef HAVE_BLUA
|
||||||
if (LUA_CallAction("A_Fall", actor))
|
if (LUA_CallAction("A_Fall", actor))
|
||||||
return;
|
return;
|
||||||
|
@ -3459,6 +3542,9 @@ void A_Fall(mobj_t *actor)
|
||||||
|
|
||||||
// So change this if corpse objects
|
// So change this if corpse objects
|
||||||
// are meant to be obstacles.
|
// are meant to be obstacles.
|
||||||
|
|
||||||
|
if (locvar1)
|
||||||
|
actor->extravalue2 = locvar1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LIVESBOXDISPLAYPLAYER // Use displayplayer instead of closest player
|
#define LIVESBOXDISPLAYPLAYER // Use displayplayer instead of closest player
|
||||||
|
@ -3854,6 +3940,72 @@ bossjustdie:
|
||||||
else if (P_MobjWasRemoved(mo))
|
else if (P_MobjWasRemoved(mo))
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Spawn your junk
|
||||||
|
switch (mo->type)
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
case MT_EGGMOBILE: // twin laser pods
|
||||||
|
{
|
||||||
|
mo2 = P_SpawnMobjFromMobj(mo,
|
||||||
|
P_ReturnThrustX(mo, mo->angle - ANGLE_90, 32<<FRACBITS),
|
||||||
|
P_ReturnThrustY(mo, mo->angle - ANGLE_90, 32<<FRACBITS),
|
||||||
|
32<<FRACBITS, MT_BOSSJUNK);
|
||||||
|
mo2->angle = mo->angle;
|
||||||
|
P_InstaThrust(mo2, mo2->angle - ANGLE_90, 4*mo2->scale);
|
||||||
|
P_SetObjectMomZ(mo2, 4*FRACUNIT, false);
|
||||||
|
P_SetMobjState(mo2, S_BOSSEGLZ1);
|
||||||
|
|
||||||
|
mo2 = P_SpawnMobjFromMobj(mo,
|
||||||
|
P_ReturnThrustX(mo, mo->angle + ANGLE_90, 32<<FRACBITS),
|
||||||
|
P_ReturnThrustY(mo, mo->angle + ANGLE_90, 32<<FRACBITS),
|
||||||
|
32<<FRACBITS, MT_BOSSJUNK);
|
||||||
|
mo2->angle = mo->angle;
|
||||||
|
P_InstaThrust(mo2, mo2->angle + ANGLE_90, 4*mo2->scale);
|
||||||
|
P_SetObjectMomZ(mo2, 4*FRACUNIT, false);
|
||||||
|
P_SetMobjState(mo2, S_BOSSEGLZ2);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case MT_EGGMOBILE2: // twin tanks + spigot
|
||||||
|
{
|
||||||
|
mo2 = P_SpawnMobjFromMobj(mo,
|
||||||
|
P_ReturnThrustX(mo, mo->angle - ANGLE_90, 32<<FRACBITS),
|
||||||
|
P_ReturnThrustY(mo, mo->angle - ANGLE_90, 32<<FRACBITS),
|
||||||
|
32<<FRACBITS, MT_BOSSJUNK);
|
||||||
|
mo2->angle = mo->angle;
|
||||||
|
P_InstaThrust(mo2, mo2->angle - ANGLE_90, 4*mo2->scale);
|
||||||
|
P_SetObjectMomZ(mo2, 4*FRACUNIT, false);
|
||||||
|
P_SetMobjState(mo2, S_BOSSTANK1);
|
||||||
|
|
||||||
|
mo2 = P_SpawnMobjFromMobj(mo,
|
||||||
|
P_ReturnThrustX(mo, mo->angle + ANGLE_90, 32<<FRACBITS),
|
||||||
|
P_ReturnThrustY(mo, mo->angle + ANGLE_90, 32<<FRACBITS),
|
||||||
|
32<<FRACBITS, MT_BOSSJUNK);
|
||||||
|
mo2->angle = mo->angle;
|
||||||
|
P_InstaThrust(mo2, mo2->angle + ANGLE_90, 4*mo2->scale);
|
||||||
|
P_SetObjectMomZ(mo2, 4*FRACUNIT, false);
|
||||||
|
P_SetMobjState(mo2, S_BOSSTANK2);
|
||||||
|
|
||||||
|
mo2 = P_SpawnMobjFromMobj(mo, 0, 0,
|
||||||
|
mobjinfo[MT_EGGMOBILE2].height + (32<<FRACBITS),
|
||||||
|
MT_BOSSJUNK);
|
||||||
|
mo2->angle = mo->angle;
|
||||||
|
P_SetObjectMomZ(mo2, 4*FRACUNIT, false);
|
||||||
|
mo2->momz += mo->momz;
|
||||||
|
P_SetMobjState(mo2, S_BOSSSPIGOT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case MT_EGGMOBILE3:
|
||||||
|
{
|
||||||
|
mo2 = P_SpawnMobjFromMobj(mo, 0, 0, 0, MT_BOSSJUNK);
|
||||||
|
mo2->angle = mo->angle;
|
||||||
|
P_SetMobjState(mo2, S_BOSSSEBH1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// now do another switch case for escaping
|
||||||
switch (mo->type)
|
switch (mo->type)
|
||||||
{
|
{
|
||||||
case MT_BLACKEGGMAN:
|
case MT_BLACKEGGMAN:
|
||||||
|
@ -3951,7 +4103,7 @@ bossjustdie:
|
||||||
mo->movedir = 0;
|
mo->movedir = 0;
|
||||||
mo->extravalue1 = 35;
|
mo->extravalue1 = 35;
|
||||||
mo->flags2 |= MF2_BOSSFLEE;
|
mo->flags2 |= MF2_BOSSFLEE;
|
||||||
mo->momz = 2*mo->scale;
|
mo->momz = P_MobjFlip(mo)*2*mo->scale;
|
||||||
|
|
||||||
if (mo->target)
|
if (mo->target)
|
||||||
{
|
{
|
||||||
|
@ -3969,50 +4121,6 @@ bossjustdie:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mo->type == MT_EGGMOBILE2)
|
|
||||||
{
|
|
||||||
mo2 = P_SpawnMobj(mo->x + P_ReturnThrustX(mo, mo->angle - ANGLE_90, FixedMul(32*FRACUNIT, mo->scale)),
|
|
||||||
mo->y + P_ReturnThrustY(mo, mo->angle - ANGLE_90, FixedMul(32*FRACUNIT, mo->scale)),
|
|
||||||
mo->z + mo->height/2 + ((mo->eflags & MFE_VERTICALFLIP)? FixedMul(8*FRACUNIT, mo->scale)-mobjinfo[MT_BOSSTANK1].height : -FixedMul(8*FRACUNIT, mo->scale)), MT_BOSSTANK1); // Right tank
|
|
||||||
mo2->angle = mo->angle;
|
|
||||||
mo2->destscale = mo->scale;
|
|
||||||
P_SetScale(mo2, mo2->destscale);
|
|
||||||
if (mo->eflags & MFE_VERTICALFLIP)
|
|
||||||
{
|
|
||||||
mo2->eflags |= MFE_VERTICALFLIP;
|
|
||||||
mo2->flags2 |= MF2_OBJECTFLIP;
|
|
||||||
}
|
|
||||||
P_InstaThrust(mo2, mo2->angle - ANGLE_90, FixedMul(4*FRACUNIT, mo2->scale));
|
|
||||||
P_SetObjectMomZ(mo2, 4*FRACUNIT, false);
|
|
||||||
|
|
||||||
mo2 = P_SpawnMobj(mo->x + P_ReturnThrustX(mo, mo->angle + ANGLE_90, FixedMul(32*FRACUNIT, mo->scale)),
|
|
||||||
mo->y + P_ReturnThrustY(mo, mo->angle + ANGLE_90, FixedMul(32*FRACUNIT, mo->scale)),
|
|
||||||
mo->z + mo->height/2 + ((mo->eflags & MFE_VERTICALFLIP)? FixedMul(8*FRACUNIT, mo->scale)-mobjinfo[MT_BOSSTANK2].height : -FixedMul(8*FRACUNIT, mo->scale)), MT_BOSSTANK2); // Left tank
|
|
||||||
mo2->angle = mo->angle;
|
|
||||||
mo2->destscale = mo->scale;
|
|
||||||
P_SetScale(mo2, mo2->destscale);
|
|
||||||
if (mo->eflags & MFE_VERTICALFLIP)
|
|
||||||
{
|
|
||||||
mo2->eflags |= MFE_VERTICALFLIP;
|
|
||||||
mo2->flags2 |= MF2_OBJECTFLIP;
|
|
||||||
}
|
|
||||||
P_InstaThrust(mo2, mo2->angle + ANGLE_90, FixedMul(4*FRACUNIT, mo2->scale));
|
|
||||||
P_SetObjectMomZ(mo2, 4*FRACUNIT, false);
|
|
||||||
|
|
||||||
mo2 = P_SpawnMobj(mo->x, mo->y,
|
|
||||||
mo->z + ((mo->eflags & MFE_VERTICALFLIP)? mobjinfo[MT_BOSSSPIGOT].height-FixedMul(32*FRACUNIT,mo->scale): mo->height + FixedMul(32*FRACUNIT, mo->scale)), MT_BOSSSPIGOT);
|
|
||||||
mo2->angle = mo->angle;
|
|
||||||
mo2->destscale = mo->scale;
|
|
||||||
P_SetScale(mo2, mo2->destscale);
|
|
||||||
if (mo->eflags & MFE_VERTICALFLIP)
|
|
||||||
{
|
|
||||||
mo2->eflags |= MFE_VERTICALFLIP;
|
|
||||||
mo2->flags2 |= MF2_OBJECTFLIP;
|
|
||||||
}
|
|
||||||
P_SetObjectMomZ(mo2, 4*FRACUNIT, false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Function: A_CustomPower
|
// Function: A_CustomPower
|
||||||
|
@ -8699,7 +8807,7 @@ void A_SetObjectFlags2(mobj_t *actor)
|
||||||
//
|
//
|
||||||
// var1:
|
// var1:
|
||||||
// 0 - Triple jet fume pattern
|
// 0 - Triple jet fume pattern
|
||||||
// 1 - Boss 3's propeller
|
// 1 - Unused (formerly Boss 3's propeller)
|
||||||
// 2 - Metal Sonic jet fume
|
// 2 - Metal Sonic jet fume
|
||||||
// 3 - Boss 4 jet flame
|
// 3 - Boss 4 jet flame
|
||||||
// var2 = unused
|
// var2 = unused
|
||||||
|
@ -8759,7 +8867,7 @@ void A_BossJetFume(mobj_t *actor)
|
||||||
|
|
||||||
P_SetTarget(&actor->tracer, filler);
|
P_SetTarget(&actor->tracer, filler);
|
||||||
}
|
}
|
||||||
else if (locvar1 == 1) // Boss 3 propeller
|
/*else if (locvar1 == 1) // Boss 3 propeller
|
||||||
{
|
{
|
||||||
fixed_t jetx, jety, jetz;
|
fixed_t jetx, jety, jetz;
|
||||||
|
|
||||||
|
@ -8779,14 +8887,14 @@ void A_BossJetFume(mobj_t *actor)
|
||||||
filler->angle = actor->angle - ANGLE_180;
|
filler->angle = actor->angle - ANGLE_180;
|
||||||
|
|
||||||
P_SetTarget(&actor->tracer, filler);
|
P_SetTarget(&actor->tracer, filler);
|
||||||
}
|
}*/
|
||||||
else if (locvar1 == 2) // Metal Sonic jet fumes
|
else if (locvar1 == 2) // Metal Sonic jet fumes
|
||||||
{
|
{
|
||||||
filler = P_SpawnMobj(actor->x, actor->y, actor->z, MT_JETFUME1);
|
filler = P_SpawnMobj(actor->x, actor->y, actor->z, MT_JETFUME1);
|
||||||
P_SetTarget(&filler->target, actor);
|
P_SetTarget(&filler->target, actor);
|
||||||
filler->fuse = 59;
|
filler->fuse = 59;
|
||||||
P_SetTarget(&actor->tracer, filler);
|
P_SetTarget(&actor->tracer, filler);
|
||||||
filler->destscale = actor->scale/2;
|
filler->destscale = actor->scale/3;
|
||||||
P_SetScale(filler, filler->destscale);
|
P_SetScale(filler, filler->destscale);
|
||||||
if (actor->eflags & MFE_VERTICALFLIP)
|
if (actor->eflags & MFE_VERTICALFLIP)
|
||||||
filler->flags2 |= MF2_OBJECTFLIP;
|
filler->flags2 |= MF2_OBJECTFLIP;
|
||||||
|
|
|
@ -2594,6 +2594,7 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
|
||||||
|
|
||||||
case MT_EGGMOBILE3:
|
case MT_EGGMOBILE3:
|
||||||
{
|
{
|
||||||
|
mobj_t *mo2;
|
||||||
thinker_t *th;
|
thinker_t *th;
|
||||||
UINT32 i = 0; // to check how many clones we've removed
|
UINT32 i = 0; // to check how many clones we've removed
|
||||||
|
|
||||||
|
@ -2614,6 +2615,11 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
|
||||||
mo->scalespeed = (mo->scale - mo->destscale)/(2*TICRATE);
|
mo->scalespeed = (mo->scale - mo->destscale)/(2*TICRATE);
|
||||||
mo->momz = mo->info->speed;
|
mo->momz = mo->info->speed;
|
||||||
mo->angle = FixedAngle((P_RandomKey(36)*10)<<FRACBITS);
|
mo->angle = FixedAngle((P_RandomKey(36)*10)<<FRACBITS);
|
||||||
|
|
||||||
|
mo2 = P_SpawnMobjFromMobj(mo, 0, 0, 0, MT_BOSSJUNK);
|
||||||
|
mo2->angle = mo->angle;
|
||||||
|
P_SetMobjState(mo2, S_BOSSSEBH2);
|
||||||
|
|
||||||
if (++i == 2) // we've already removed 2 of these, let's stop now
|
if (++i == 2) // we've already removed 2 of these, let's stop now
|
||||||
break;
|
break;
|
||||||
else
|
else
|
||||||
|
|
114
src/p_mobj.c
114
src/p_mobj.c
|
@ -4359,12 +4359,6 @@ static void P_Boss3Thinker(mobj_t *mobj)
|
||||||
if (mobj->flags2 & MF2_FRET)
|
if (mobj->flags2 & MF2_FRET)
|
||||||
mobj->movedir = 1;
|
mobj->movedir = 1;
|
||||||
|
|
||||||
if (!mobj->tracer)
|
|
||||||
{
|
|
||||||
var1 = 1;
|
|
||||||
A_BossJetFume(mobj);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mobj->health <= 0)
|
if (mobj->health <= 0)
|
||||||
return;
|
return;
|
||||||
/*
|
/*
|
||||||
|
@ -4493,7 +4487,7 @@ static void P_Boss3Thinker(mobj_t *mobj)
|
||||||
if (mobj->health <= mobj->info->damage) // pinch phase
|
if (mobj->health <= mobj->info->damage) // pinch phase
|
||||||
mobj->movecount--; // limited number of shots before diving again
|
mobj->movecount--; // limited number of shots before diving again
|
||||||
if (mobj->movecount)
|
if (mobj->movecount)
|
||||||
P_SetMobjState(mobj, mobj->info->missilestate);
|
P_SetMobjState(mobj, mobj->info->missilestate+1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (mobj->threshold >= 0) // Traveling mode
|
else if (mobj->threshold >= 0) // Traveling mode
|
||||||
|
@ -4592,6 +4586,15 @@ static void P_Boss3Thinker(mobj_t *mobj)
|
||||||
ang += (ANGLE_MAX/64);
|
ang += (ANGLE_MAX/64);
|
||||||
}
|
}
|
||||||
S_StartSound(mobj, sfx_fizzle);
|
S_StartSound(mobj, sfx_fizzle);
|
||||||
|
|
||||||
|
// look for a new target
|
||||||
|
P_BossTargetPlayer(mobj, false);
|
||||||
|
|
||||||
|
if (mobj->target && mobj->target->player)
|
||||||
|
{
|
||||||
|
A_FaceTarget(mobj);
|
||||||
|
P_SetMobjState(mobj, mobj->info->missilestate);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (mobj->flags2 & (MF2_STRONGBOX|MF2_CLASSICPUSH)) // just hit the bottom of your tube
|
else if (mobj->flags2 & (MF2_STRONGBOX|MF2_CLASSICPUSH)) // just hit the bottom of your tube
|
||||||
{
|
{
|
||||||
|
@ -5527,8 +5530,7 @@ static void P_Boss9Thinker(mobj_t *mobj)
|
||||||
mobj->tracer->destscale = FRACUNIT + (4*TICRATE - mobj->fuse)*(FRACUNIT/2)/TICRATE + FixedMul(FINECOSINE(angle>>ANGLETOFINESHIFT),FRACUNIT/2);
|
mobj->tracer->destscale = FRACUNIT + (4*TICRATE - mobj->fuse)*(FRACUNIT/2)/TICRATE + FixedMul(FINECOSINE(angle>>ANGLETOFINESHIFT),FRACUNIT/2);
|
||||||
P_SetScale(mobj->tracer, mobj->tracer->destscale);
|
P_SetScale(mobj->tracer, mobj->tracer->destscale);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
mobj->tracer->frame &= ~FF_TRANSMASK; // this causes a flicker but honestly i like it this way
|
|
||||||
P_TeleportMove(mobj->tracer, mobj->x, mobj->y, mobj->z + mobj->height/2 - mobj->tracer->height/2);
|
P_TeleportMove(mobj->tracer, mobj->x, mobj->y, mobj->z + mobj->height/2 - mobj->tracer->height/2);
|
||||||
mobj->tracer->momx = mobj->momx;
|
mobj->tracer->momx = mobj->momx;
|
||||||
mobj->tracer->momy = mobj->momy;
|
mobj->tracer->momy = mobj->momy;
|
||||||
|
@ -5645,12 +5647,12 @@ static void P_Boss9Thinker(mobj_t *mobj)
|
||||||
|
|
||||||
if (mobj->health > mobj->info->damage)
|
if (mobj->health > mobj->info->damage)
|
||||||
{
|
{
|
||||||
P_SetScale(missile, FRACUNIT/2);
|
P_SetScale(missile, FRACUNIT/3);
|
||||||
missile->color = SKINCOLOR_GOLD; // sonic cd electric power
|
missile->color = SKINCOLOR_GOLD; // sonic cd electric power
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
P_SetScale(missile, FRACUNIT/4);
|
P_SetScale(missile, FRACUNIT/5);
|
||||||
missile->color = SKINCOLOR_MAGENTA; // sonic OVA/4 purple power
|
missile->color = SKINCOLOR_MAGENTA; // sonic OVA/4 purple power
|
||||||
}
|
}
|
||||||
missile->destscale = missile->scale*2;
|
missile->destscale = missile->scale*2;
|
||||||
|
@ -5940,9 +5942,7 @@ static void P_Boss9Thinker(mobj_t *mobj)
|
||||||
P_SetTarget(&mobj->tracer, shield);
|
P_SetTarget(&mobj->tracer, shield);
|
||||||
P_SetTarget(&shield->target, mobj);
|
P_SetTarget(&shield->target, mobj);
|
||||||
shield->height -= 20*FRACUNIT; // different offset...
|
shield->height -= 20*FRACUNIT; // different offset...
|
||||||
shield->color = SKINCOLOR_MAGENTA;
|
P_SetMobjState(shield, S_MSSHIELD_F2);
|
||||||
shield->colorized = true;
|
|
||||||
P_SetMobjState(shield, S_FIRS1);
|
|
||||||
//P_LinedefExecute(LE_PINCHPHASE, mobj, NULL); -- why does this happen twice? see case 2...
|
//P_LinedefExecute(LE_PINCHPHASE, mobj, NULL); -- why does this happen twice? see case 2...
|
||||||
}
|
}
|
||||||
mobj->fuse = 4*TICRATE;
|
mobj->fuse = 4*TICRATE;
|
||||||
|
@ -7093,9 +7093,7 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
|
|
||||||
switch (mobj->type)
|
switch (mobj->type)
|
||||||
{
|
{
|
||||||
case MT_BOSSTANK1:
|
case MT_BOSSJUNK:
|
||||||
case MT_BOSSTANK2:
|
|
||||||
case MT_BOSSSPIGOT:
|
|
||||||
mobj->flags2 ^= MF2_DONTDRAW;
|
mobj->flags2 ^= MF2_DONTDRAW;
|
||||||
break;
|
break;
|
||||||
case MT_MACEPOINT:
|
case MT_MACEPOINT:
|
||||||
|
@ -7681,12 +7679,22 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
switch (mobj->type)
|
switch (mobj->type)
|
||||||
{
|
{
|
||||||
case MT_EGGMOBILE:
|
case MT_EGGMOBILE:
|
||||||
if (mobj->health < mobj->info->damage+1 && leveltime & 1 && mobj->health > 0)
|
if (mobj->health < mobj->info->damage+1 && leveltime & 2)
|
||||||
P_SpawnMobj(mobj->x, mobj->y, mobj->z, MT_SMOKE);
|
{
|
||||||
|
fixed_t rad = mobj->radius>>FRACBITS;
|
||||||
|
fixed_t hei = mobj->height>>FRACBITS;
|
||||||
|
mobj_t *particle = P_SpawnMobjFromMobj(mobj,
|
||||||
|
P_RandomRange(rad, -rad)<<FRACBITS,
|
||||||
|
P_RandomRange(rad, -rad)<<FRACBITS,
|
||||||
|
P_RandomRange(hei/2, hei)<<FRACBITS,
|
||||||
|
MT_SMOKE);
|
||||||
|
P_SetObjectMomZ(particle, 2<<FRACBITS, false);
|
||||||
|
particle->momz += mobj->momz;
|
||||||
|
}
|
||||||
if (mobj->flags2 & MF2_SKULLFLY)
|
if (mobj->flags2 & MF2_SKULLFLY)
|
||||||
#if 1
|
#if 1
|
||||||
P_SpawnGhostMobj(mobj);
|
P_SpawnGhostMobj(mobj);
|
||||||
#else
|
#else // all the way back from final demo... MT_THOK isn't even the same size anymore!
|
||||||
{
|
{
|
||||||
mobj_t *spawnmobj;
|
mobj_t *spawnmobj;
|
||||||
spawnmobj = P_SpawnMobj(mobj->x, mobj->y, mobj->z, mobj->info->painchance);
|
spawnmobj = P_SpawnMobj(mobj->x, mobj->y, mobj->z, mobj->info->painchance);
|
||||||
|
@ -7697,12 +7705,48 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
P_Boss1Thinker(mobj);
|
P_Boss1Thinker(mobj);
|
||||||
break;
|
break;
|
||||||
case MT_EGGMOBILE2:
|
case MT_EGGMOBILE2:
|
||||||
|
if (mobj->health < mobj->info->damage+1 && leveltime & 2)
|
||||||
|
{
|
||||||
|
fixed_t rad = mobj->radius>>FRACBITS;
|
||||||
|
fixed_t hei = mobj->height>>FRACBITS;
|
||||||
|
mobj_t *particle = P_SpawnMobjFromMobj(mobj,
|
||||||
|
P_RandomRange(rad, -rad)<<FRACBITS,
|
||||||
|
P_RandomRange(rad, -rad)<<FRACBITS,
|
||||||
|
P_RandomRange(hei/2, hei)<<FRACBITS,
|
||||||
|
MT_SMOKE);
|
||||||
|
P_SetObjectMomZ(particle, 2<<FRACBITS, false);
|
||||||
|
particle->momz += mobj->momz;
|
||||||
|
}
|
||||||
P_Boss2Thinker(mobj);
|
P_Boss2Thinker(mobj);
|
||||||
break;
|
break;
|
||||||
case MT_EGGMOBILE3:
|
case MT_EGGMOBILE3:
|
||||||
|
if (mobj->health < mobj->info->damage+1 && leveltime & 2)
|
||||||
|
{
|
||||||
|
fixed_t rad = mobj->radius>>FRACBITS;
|
||||||
|
fixed_t hei = mobj->height>>FRACBITS;
|
||||||
|
mobj_t *particle = P_SpawnMobjFromMobj(mobj,
|
||||||
|
P_RandomRange(rad, -rad)<<FRACBITS,
|
||||||
|
P_RandomRange(rad, -rad)<<FRACBITS,
|
||||||
|
P_RandomRange(hei/2, hei)<<FRACBITS,
|
||||||
|
MT_SMOKE);
|
||||||
|
P_SetObjectMomZ(particle, 2<<FRACBITS, false);
|
||||||
|
particle->momz += mobj->momz;
|
||||||
|
}
|
||||||
P_Boss3Thinker(mobj);
|
P_Boss3Thinker(mobj);
|
||||||
break;
|
break;
|
||||||
case MT_EGGMOBILE4:
|
case MT_EGGMOBILE4:
|
||||||
|
if (mobj->health < mobj->info->damage+1 && leveltime & 2)
|
||||||
|
{
|
||||||
|
fixed_t rad = mobj->radius>>FRACBITS;
|
||||||
|
fixed_t hei = mobj->height>>FRACBITS;
|
||||||
|
mobj_t *particle = P_SpawnMobjFromMobj(mobj,
|
||||||
|
P_RandomRange(rad, -rad)<<FRACBITS,
|
||||||
|
P_RandomRange(rad, -rad)<<FRACBITS,
|
||||||
|
P_RandomRange(hei/2, hei)<<FRACBITS,
|
||||||
|
MT_SMOKE);
|
||||||
|
P_SetObjectMomZ(particle, 2<<FRACBITS, false);
|
||||||
|
particle->momz += mobj->momz;
|
||||||
|
}
|
||||||
P_Boss4Thinker(mobj);
|
P_Boss4Thinker(mobj);
|
||||||
break;
|
break;
|
||||||
case MT_FANG:
|
case MT_FANG:
|
||||||
|
@ -8318,30 +8362,6 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
mobj->fuse++;
|
mobj->fuse++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MT_PROPELLER:
|
|
||||||
{
|
|
||||||
fixed_t jetx, jety;
|
|
||||||
|
|
||||||
if (!mobj->target // if you have no target
|
|
||||||
|| (!(mobj->target->flags & MF_BOSS) && mobj->target->health <= 0)) // or your target isn't a boss and it's popped now
|
|
||||||
{ // then remove yourself as well!
|
|
||||||
P_RemoveMobj(mobj);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
jetx = mobj->target->x + P_ReturnThrustX(mobj->target, mobj->target->angle, FixedMul(-60*FRACUNIT, mobj->target->scale));
|
|
||||||
jety = mobj->target->y + P_ReturnThrustY(mobj->target, mobj->target->angle, FixedMul(-60*FRACUNIT, mobj->target->scale));
|
|
||||||
|
|
||||||
P_UnsetThingPosition(mobj);
|
|
||||||
mobj->x = jetx;
|
|
||||||
mobj->y = jety;
|
|
||||||
mobj->z = mobj->target->z + FixedMul(17*FRACUNIT, mobj->target->scale);
|
|
||||||
mobj->angle = mobj->target->angle - ANGLE_180;
|
|
||||||
mobj->floorz = mobj->z;
|
|
||||||
mobj->ceilingz = mobj->z+mobj->height;
|
|
||||||
P_SetThingPosition(mobj);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case MT_JETFLAME:
|
case MT_JETFLAME:
|
||||||
{
|
{
|
||||||
if (!mobj->target // if you have no target
|
if (!mobj->target // if you have no target
|
||||||
|
@ -9038,9 +9058,9 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
{
|
{
|
||||||
if (mobj->state->action.acp1 == (actionf_p1)A_Boss1Laser)
|
if (mobj->state->action.acp1 == (actionf_p1)A_Boss1Laser)
|
||||||
{
|
{
|
||||||
var1 = mobj->state->var1;
|
/*var1 = mobj->state->var1;
|
||||||
var2 = mobj->state->var2;
|
var2 = mobj->state->var2 & 65535;
|
||||||
mobj->state->action.acp1(mobj);
|
mobj->state->action.acp1(mobj);*/
|
||||||
}
|
}
|
||||||
else if (leveltime & 1) // Fire mode
|
else if (leveltime & 1) // Fire mode
|
||||||
{
|
{
|
||||||
|
|
11
src/r_draw.c
11
src/r_draw.c
|
@ -557,9 +557,16 @@ static void R_GenerateTranslationColormap(UINT8 *dest_colormap, INT32 skinnum, U
|
||||||
|
|
||||||
// White!
|
// White!
|
||||||
if (skinnum == TC_BOSS)
|
if (skinnum == TC_BOSS)
|
||||||
dest_colormap[31] = 0;
|
{
|
||||||
|
for (i = 0; i < 16; i++)
|
||||||
|
dest_colormap[31-i] = i;
|
||||||
|
}
|
||||||
else if (skinnum == TC_METALSONIC)
|
else if (skinnum == TC_METALSONIC)
|
||||||
dest_colormap[159] = 0;
|
{
|
||||||
|
for (i = 0; i < 6; i++)
|
||||||
|
dest_colormap[Color_Index[SKINCOLOR_BLUE-1][12-i]] = Color_Index[SKINCOLOR_BLUE-1][i];
|
||||||
|
dest_colormap[159] = dest_colormap[253] = dest_colormap[254] = 0;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (color == SKINCOLOR_NONE)
|
else if (color == SKINCOLOR_NONE)
|
||||||
|
|
Loading…
Reference in a new issue