Merge branch 'EOL-15' into EOL

# Conflicts:
#	src/p_enemy.c
This commit is contained in:
Alam Ed Arias 2018-11-27 22:01:29 -05:00
commit 18c2de0003
6 changed files with 761 additions and 40 deletions

View file

@ -5394,6 +5394,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_FLICKY_01_FLAP2",
"S_FLICKY_01_FLAP3",
"S_FLICKY_01_STAND",
"S_FLICKY_01_CENTER",
// Rabbit
"S_FLICKY_02_OUT",
@ -5402,6 +5403,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_FLICKY_02_UP",
"S_FLICKY_02_DOWN",
"S_FLICKY_02_STAND",
"S_FLICKY_02_CENTER",
// Chicken
"S_FLICKY_03_OUT",
@ -5411,6 +5413,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_FLICKY_03_FLAP1",
"S_FLICKY_03_FLAP2",
"S_FLICKY_03_STAND",
"S_FLICKY_03_CENTER",
// Seal
"S_FLICKY_04_OUT",
@ -5423,6 +5426,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_FLICKY_04_SWIM3",
"S_FLICKY_04_SWIM4",
"S_FLICKY_04_STAND",
"S_FLICKY_04_CENTER",
// Pig
"S_FLICKY_05_OUT",
@ -5431,6 +5435,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_FLICKY_05_UP",
"S_FLICKY_05_DOWN",
"S_FLICKY_05_STAND",
"S_FLICKY_05_CENTER",
// Chipmunk
"S_FLICKY_06_OUT",
@ -5439,6 +5444,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_FLICKY_06_UP",
"S_FLICKY_06_DOWN",
"S_FLICKY_06_STAND",
"S_FLICKY_06_CENTER",
// Penguin
"S_FLICKY_07_OUT",
@ -5454,6 +5460,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_FLICKY_07_SWIM2",
"S_FLICKY_07_SWIM3",
"S_FLICKY_07_STAND",
"S_FLICKY_07_CENTER",
// Fish
"S_FLICKY_08_OUT",
@ -5468,6 +5475,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_FLICKY_08_SWIM3",
"S_FLICKY_08_SWIM4",
"S_FLICKY_08_STAND",
"S_FLICKY_08_CENTER",
// Ram
"S_FLICKY_09_OUT",
@ -5476,12 +5484,14 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_FLICKY_09_UP",
"S_FLICKY_09_DOWN",
"S_FLICKY_09_STAND",
"S_FLICKY_09_CENTER",
// Puffin
"S_FLICKY_10_OUT",
"S_FLICKY_10_FLAP1",
"S_FLICKY_10_FLAP2",
"S_FLICKY_10_STAND",
"S_FLICKY_10_CENTER",
// Cow
"S_FLICKY_11_OUT",
@ -5490,6 +5500,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_FLICKY_11_RUN2",
"S_FLICKY_11_RUN3",
"S_FLICKY_11_STAND",
"S_FLICKY_11_CENTER",
// Rat
"S_FLICKY_12_OUT",
@ -5498,6 +5509,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_FLICKY_12_RUN2",
"S_FLICKY_12_RUN3",
"S_FLICKY_12_STAND",
"S_FLICKY_12_CENTER",
// Bear
"S_FLICKY_13_OUT",
@ -5506,6 +5518,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_FLICKY_13_UP",
"S_FLICKY_13_DOWN",
"S_FLICKY_13_STAND",
"S_FLICKY_13_CENTER",
// Dove
"S_FLICKY_14_OUT",
@ -5513,6 +5526,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_FLICKY_14_FLAP2",
"S_FLICKY_14_FLAP3",
"S_FLICKY_14_STAND",
"S_FLICKY_14_CENTER",
// Cat
"S_FLICKY_15_OUT",
@ -5521,6 +5535,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_FLICKY_15_UP",
"S_FLICKY_15_DOWN",
"S_FLICKY_15_STAND",
"S_FLICKY_15_CENTER",
// Canary
"S_FLICKY_16_OUT",
@ -5528,6 +5543,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_FLICKY_16_FLAP2",
"S_FLICKY_16_FLAP3",
"S_FLICKY_16_STAND",
"S_FLICKY_16_CENTER",
// Spider
"S_SECRETFLICKY_01_OUT",
@ -5536,6 +5552,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_SECRETFLICKY_01_UP",
"S_SECRETFLICKY_01_DOWN",
"S_SECRETFLICKY_01_STAND",
"S_SECRETFLICKY_01_CENTER",
// Bat
"S_SECRETFLICKY_02_OUT",
@ -5543,6 +5560,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_SECRETFLICKY_02_FLAP2",
"S_SECRETFLICKY_02_FLAP3",
"S_SECRETFLICKY_02_STAND",
"S_SECRETFLICKY_02_CENTER",
// Fan
"S_FAN",
@ -6739,23 +6757,41 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
// Flickies
"MT_FLICKY_01", // Bluebird
"MT_FLICKY_01_CENTER",
"MT_FLICKY_02", // Rabbit
"MT_FLICKY_02_CENTER",
"MT_FLICKY_03", // Chicken
"MT_FLICKY_03_CENTER",
"MT_FLICKY_04", // Seal
"MT_FLICKY_04_CENTER",
"MT_FLICKY_05", // Pig
"MT_FLICKY_05_CENTER",
"MT_FLICKY_06", // Chipmunk
"MT_FLICKY_06_CENTER",
"MT_FLICKY_07", // Penguin
"MT_FLICKY_07_CENTER",
"MT_FLICKY_08", // Fish
"MT_FLICKY_08_CENTER",
"MT_FLICKY_09", // Ram
"MT_FLICKY_09_CENTER",
"MT_FLICKY_10", // Puffin
"MT_FLICKY_10_CENTER",
"MT_FLICKY_11", // Cow
"MT_FLICKY_11_CENTER",
"MT_FLICKY_12", // Rat
"MT_FLICKY_12_CENTER",
"MT_FLICKY_13", // Bear
"MT_FLICKY_13_CENTER",
"MT_FLICKY_14", // Dove
"MT_FLICKY_14_CENTER",
"MT_FLICKY_15", // Cat
"MT_FLICKY_15_CENTER",
"MT_FLICKY_16", // Canary
"MT_FLICKY_16_CENTER",
"MT_SECRETFLICKY_01", // Spider
"MT_SECRETFLICKY_01_CENTER",
"MT_SECRETFLICKY_02", // Bat
"MT_SECRETFLICKY_02_CENTER",
"MT_SEED",
// Environmental Effects

View file

@ -2638,7 +2638,8 @@ state_t states[NUMSTATES] =
{SPR_FL01, 1, 3, {A_FlickyFly}, 4*FRACUNIT, 16*FRACUNIT, S_FLICKY_01_FLAP2}, // S_FLICKY_01_FLAP1
{SPR_FL01, 2, 3, {A_FlickyFly}, 4*FRACUNIT, 16*FRACUNIT, S_FLICKY_01_FLAP3}, // S_FLICKY_01_FLAP2
{SPR_FL01, 3, 3, {A_FlickyFly}, 4*FRACUNIT, 16*FRACUNIT, S_FLICKY_01_FLAP1}, // S_FLICKY_01_FLAP3
{SPR_FL01, FF_ANIMATE, -1, {NULL}, 3, 3, S_NULL}, // S_FLICKY_01_STAND
{SPR_FL01, FF_ANIMATE|1, -1, {NULL}, 2, 3, S_NULL}, // S_FLICKY_01_STAND
{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_01, 128*FRACUNIT, S_FLICKY_01_CENTER}, // S_FLICKY_01_CENTER
// Rabbit
{SPR_FL02, 0, 2, {A_FlickyCheck}, S_FLICKY_02_AIM, 0, S_FLICKY_02_OUT}, // S_FLICKY_02_OUT
@ -2646,7 +2647,8 @@ state_t states[NUMSTATES] =
{SPR_FL02, 1, 1, {A_FlickyHop}, 6*FRACUNIT, 4*FRACUNIT, S_FLICKY_02_UP}, // S_FLICKY_02_HOP
{SPR_FL02, 2, 2, {A_FlickyCheck}, S_FLICKY_02_AIM, S_FLICKY_02_DOWN, S_FLICKY_02_UP}, // S_FLICKY_02_UP
{SPR_FL02, 3, 2, {A_FlickyCheck}, S_FLICKY_02_AIM, 0, S_FLICKY_02_DOWN}, // S_FLICKY_02_DOWN
{SPR_FL02, FF_ANIMATE, -1, {NULL}, 3, 2, S_NULL}, // S_FLICKY_02_STAND
{SPR_FL02, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_02_STAND
{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_02, 128*FRACUNIT, S_FLICKY_02_CENTER}, // S_FLICKY_02_CENTER
// Chicken
{SPR_FL03, 0, 2, {A_FlickyCheck}, S_FLICKY_03_AIM, S_FLICKY_03_FLAP1, S_FLICKY_03_OUT}, // S_FLICKY_03_OUT
@ -2655,7 +2657,8 @@ state_t states[NUMSTATES] =
{SPR_FL03, 2, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP, S_FLICKY_03_FLAP1, S_FLICKY_03_UP}, // S_FLICKY_03_UP
{SPR_FL03, 3, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP, 0, S_FLICKY_03_FLAP2}, // S_FLICKY_03_FLAP1
{SPR_FL03, 4, 2, {A_FlickyFlutter}, S_FLICKY_03_HOP, 0, S_FLICKY_03_FLAP1}, // S_FLICKY_03_FLAP2
{SPR_FL03, FF_ANIMATE, -1, {NULL}, 4, 2, S_NULL}, // S_FLICKY_03_STAND
{SPR_FL03, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_03_STAND
{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_03, 128*FRACUNIT, S_FLICKY_03_CENTER}, // S_FLICKY_03_CENTER
// Seal
{SPR_FL04, 0, 2, {A_FlickyCheck}, S_FLICKY_04_AIM, 0, S_FLICKY_04_OUT}, // S_FLICKY_04_OUT
@ -2667,7 +2670,8 @@ state_t states[NUMSTATES] =
{SPR_FL04, 4, 4, {A_FlickyCoast}, FRACUNIT, S_FLICKY_04_SWIM1, S_FLICKY_04_SWIM3}, // S_FLICKY_04_SWIM2
{SPR_FL04, 3, 4, {A_FlickyCoast}, FRACUNIT, S_FLICKY_04_SWIM1, S_FLICKY_04_SWIM4}, // S_FLICKY_04_SWIM3
{SPR_FL04, 5, 4, {A_FlickyCoast}, FRACUNIT, S_FLICKY_04_SWIM1, S_FLICKY_04_SWIM1}, // S_FLICKY_04_SWIM4
{SPR_FL04, FF_ANIMATE, -1, {NULL}, 5, 4, S_NULL}, // S_FLICKY_04_STAND
{SPR_FL04, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_04_STAND
{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_04, 128*FRACUNIT, S_FLICKY_04_CENTER}, // S_FLICKY_04_CENTER
// Pig
{SPR_FL05, 0, 2, {A_FlickyCheck}, S_FLICKY_05_AIM, 0, S_FLICKY_05_OUT}, // S_FLICKY_05_OUT
@ -2675,7 +2679,8 @@ state_t states[NUMSTATES] =
{SPR_FL05, 1, 1, {A_FlickyHop}, 4*FRACUNIT, 3*FRACUNIT, S_FLICKY_05_UP}, // S_FLICKY_05_HOP
{SPR_FL05, 2, 2, {A_FlickyCheck}, S_FLICKY_05_AIM, S_FLICKY_05_DOWN, S_FLICKY_05_UP}, // S_FLICKY_05_UP
{SPR_FL05, 3, 2, {A_FlickyCheck}, S_FLICKY_05_AIM, 0, S_FLICKY_05_DOWN}, // S_FLICKY_05_DOWN
{SPR_FL05, FF_ANIMATE, -1, {NULL}, 3, 2, S_NULL}, // S_FLICKY_05_STAND
{SPR_FL05, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_05_STAND
{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_05, 128*FRACUNIT, S_FLICKY_05_CENTER}, // S_FLICKY_05_CENTER
// Chipmunk
{SPR_FL06, 0, 2, {A_FlickyCheck}, S_FLICKY_06_AIM, 0, S_FLICKY_06_OUT}, // S_FLICKY_06_OUT
@ -2683,7 +2688,8 @@ state_t states[NUMSTATES] =
{SPR_FL06, 1, 1, {A_FlickyHop}, 5*FRACUNIT, 6*FRACUNIT, S_FLICKY_06_UP}, // S_FLICKY_06_HOP
{SPR_FL06, 2, 2, {A_FlickyCheck}, S_FLICKY_06_AIM, S_FLICKY_06_DOWN, S_FLICKY_06_UP}, // S_FLICKY_06_UP
{SPR_FL06, 3, 2, {A_FlickyCheck}, S_FLICKY_06_AIM, 0, S_FLICKY_06_DOWN}, // S_FLICKY_06_DOWN
{SPR_FL06, FF_ANIMATE, -1, {NULL}, 3, 2, S_NULL}, // S_FLICKY_06_STAND
{SPR_FL06, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_06_STAND
{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_06, 128*FRACUNIT, S_FLICKY_06_CENTER}, // S_FLICKY_06_CENTER
// Penguin
{SPR_FL07, 0, 2, {A_FlickyCheck}, S_FLICKY_07_AIML, 0, S_FLICKY_07_OUT}, // S_FLICKY_07_OUT
@ -2698,7 +2704,8 @@ state_t states[NUMSTATES] =
{SPR_FL07, 4, 4, {A_FlickyFly}, 3*FRACUNIT, 72*FRACUNIT, S_FLICKY_07_SWIM2}, // S_FLICKY_07_SWIM1
{SPR_FL07, 5, 4, {A_FlickyCoast}, FRACUNIT, S_FLICKY_07_SWIM1, S_FLICKY_07_SWIM3}, // S_FLICKY_07_SWIM2
{SPR_FL07, 6, 4, {A_FlickyCoast}, 2*FRACUNIT, S_FLICKY_07_SWIM1, S_FLICKY_07_SWIM3}, // S_FLICKY_07_SWIM3
{SPR_FL07, FF_ANIMATE, -1, {NULL}, 6, 4, S_NULL}, // S_FLICKY_07_STAND
{SPR_FL07, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_07_STAND
{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_07, 128*FRACUNIT, S_FLICKY_07_CENTER}, // S_FLICKY_07_CENTER
// Fish
{SPR_FL08, 0, 2, {A_FlickyCheck}, S_FLICKY_08_AIM, 0, S_FLICKY_08_OUT}, // S_FLICKY_08_OUT
@ -2713,6 +2720,7 @@ state_t states[NUMSTATES] =
{SPR_FL08, 0, 4, {A_FlickyCoast}, FRACUNIT, S_FLICKY_08_SWIM1, S_FLICKY_08_SWIM4}, // S_FLICKY_08_SWIM3
{SPR_FL08, 2, 4, {A_FlickyCoast}, FRACUNIT, S_FLICKY_08_SWIM1, S_FLICKY_08_SWIM4}, // S_FLICKY_08_SWIM4
{SPR_FL08, FF_ANIMATE, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_08_STAND
{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_08, 128*FRACUNIT, S_FLICKY_08_CENTER}, // S_FLICKY_08_CENTER
// Ram
{SPR_FL09, 0, 2, {A_FlickyCheck}, S_FLICKY_09_AIM, 0, S_FLICKY_09_OUT}, // S_FLICKY_09_OUT
@ -2720,13 +2728,15 @@ state_t states[NUMSTATES] =
{SPR_FL09, 1, 1, {A_FlickyHop}, 7*FRACUNIT, 2*FRACUNIT, S_FLICKY_09_UP}, // S_FLICKY_09_HOP
{SPR_FL09, 2, 2, {A_FlickyCheck}, S_FLICKY_09_AIM, S_FLICKY_09_DOWN, S_FLICKY_09_UP}, // S_FLICKY_09_UP
{SPR_FL09, 3, 2, {A_FlickyCheck}, S_FLICKY_09_AIM, 0, S_FLICKY_09_DOWN}, // S_FLICKY_09_DOWN
{SPR_FL09, FF_ANIMATE, -1, {NULL}, 3, 2, S_NULL}, // S_FLICKY_09_STAND
{SPR_FL09, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_09_STAND
{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_09, 128*FRACUNIT, S_FLICKY_09_CENTER}, // S_FLICKY_09_CENTER
// Puffin
{SPR_FL10, 0, 2, {A_FlickyCheck}, S_FLICKY_10_FLAP1, S_FLICKY_10_FLAP1, S_FLICKY_10_OUT}, // S_FLICKY_10_OUT
{SPR_FL10, 1, 3, {A_FlickySoar}, 4*FRACUNIT, 16*FRACUNIT, S_FLICKY_10_FLAP2}, // S_FLICKY_10_FLAP1
{SPR_FL10, 2, 3, {A_FlickySoar}, 4*FRACUNIT, 16*FRACUNIT, S_FLICKY_10_FLAP1}, // S_FLICKY_10_FLAP2
{SPR_FL10, FF_ANIMATE, -1, {NULL}, 2, 3, S_NULL}, // S_FLICKY_10_STAND
{SPR_FL10, FF_ANIMATE|1, -1, {NULL}, 1, 3, S_NULL}, // S_FLICKY_10_STAND
{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_10, 128*FRACUNIT, S_FLICKY_10_CENTER}, // S_FLICKY_10_CENTER
// Cow
{SPR_FL11, 0, 2, {A_FlickyCheck}, S_FLICKY_11_AIM, 0, S_FLICKY_11_OUT}, // S_FLICKY_11_OUT
@ -2734,7 +2744,8 @@ state_t states[NUMSTATES] =
{SPR_FL11, 1, 3, {A_FlickyHop}, FRACUNIT/2, 2*FRACUNIT, S_FLICKY_11_RUN2}, // S_FLICKY_11_RUN1
{SPR_FL11, 2, 4, {A_FlickyHop}, FRACUNIT/2, 2*FRACUNIT, S_FLICKY_11_RUN3}, // S_FLICKY_11_RUN2
{SPR_FL11, 3, 4, {A_FlickyHop}, FRACUNIT/2, 2*FRACUNIT, S_FLICKY_11_AIM}, // S_FLICKY_11_RUN3
{SPR_FL11, FF_ANIMATE, -1, {NULL}, 3, 4, S_NULL}, // S_FLICKY_11_STAND
{SPR_FL11, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_11_STAND
{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_11, 128*FRACUNIT, S_FLICKY_11_CENTER}, // S_FLICKY_11_CENTER
// Rat
{SPR_FL12, 0, 2, {A_FlickyCheck}, S_FLICKY_12_AIM, 0, S_FLICKY_12_OUT}, // S_FLICKY_12_OUT
@ -2742,7 +2753,8 @@ state_t states[NUMSTATES] =
{SPR_FL12, 1, 2, {A_FlickyHop}, 1, 12*FRACUNIT, S_FLICKY_12_RUN2}, // S_FLICKY_12_RUN1
{SPR_FL12, 2, 3, {A_FlickyHop}, 1, 12*FRACUNIT, S_FLICKY_12_RUN3}, // S_FLICKY_12_RUN2
{SPR_FL12, 3, 3, {A_FlickyHop}, 1, 12*FRACUNIT, S_FLICKY_12_AIM}, // S_FLICKY_12_RUN3
{SPR_FL12, FF_ANIMATE, -1, {NULL}, 3, 3, S_NULL}, // S_FLICKY_12_STAND
{SPR_FL12, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_12_STAND
{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_12, 128*FRACUNIT, S_FLICKY_12_CENTER}, // S_FLICKY_12_CENTER
// Bear
{SPR_FL13, 0, 2, {A_FlickyCheck}, S_FLICKY_13_AIM, 0, S_FLICKY_13_OUT}, // S_FLICKY_13_OUT
@ -2750,14 +2762,16 @@ state_t states[NUMSTATES] =
{SPR_FL13, 1, 1, {A_FlickyHop}, 5*FRACUNIT, 3*FRACUNIT, S_FLICKY_13_UP}, // S_FLICKY_13_HOP
{SPR_FL13, 2, 2, {A_FlickyCheck}, S_FLICKY_13_AIM, S_FLICKY_13_DOWN, S_FLICKY_13_UP}, // S_FLICKY_13_UP
{SPR_FL13, 3, 2, {A_FlickyCheck}, S_FLICKY_13_AIM, 0, S_FLICKY_13_DOWN}, // S_FLICKY_13_DOWN
{SPR_FL13, FF_ANIMATE, -1, {NULL}, 3, 2, S_NULL}, // S_FLICKY_13_STAND
{SPR_FL13, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_13_STAND
{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_13, 128*FRACUNIT, S_FLICKY_13_CENTER}, // S_FLICKY_13_CENTER
// Dove
{SPR_FL14, 0, 2, {A_FlickyCheck}, S_FLICKY_14_FLAP1, S_FLICKY_14_FLAP1, S_FLICKY_14_OUT}, // S_FLICKY_14_OUT
{SPR_FL14, 1, 3, {A_FlickySoar}, 4*FRACUNIT, 32*FRACUNIT, S_FLICKY_14_FLAP2}, // S_FLICKY_14_FLAP1
{SPR_FL14, 2, 3, {A_FlickySoar}, 4*FRACUNIT, 32*FRACUNIT, S_FLICKY_14_FLAP3}, // S_FLICKY_14_FLAP2
{SPR_FL14, 3, 3, {A_FlickySoar}, 4*FRACUNIT, 32*FRACUNIT, S_FLICKY_14_FLAP1}, // S_FLICKY_14_FLAP3
{SPR_FL14, FF_ANIMATE, -1, {NULL}, 3, 3, S_NULL}, // S_FLICKY_14_STAND
{SPR_FL14, FF_ANIMATE|1, -1, {NULL}, 2, 3, S_NULL}, // S_FLICKY_14_STAND
{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_14, 128*FRACUNIT, S_FLICKY_14_CENTER}, // S_FLICKY_14_CENTER
// Cat
{SPR_FL15, 0, 2, {A_FlickyCheck}, S_FLICKY_15_AIM, 0, S_FLICKY_15_OUT}, // S_FLICKY_15_OUT
@ -2765,14 +2779,16 @@ state_t states[NUMSTATES] =
{SPR_FL15, 1, 1, {A_FlickyFlounder}, 2*FRACUNIT, 6*FRACUNIT, S_FLICKY_15_UP}, // S_FLICKY_15_HOP
{SPR_FL15, 2, 2, {A_FlickyCheck}, S_FLICKY_15_AIM, S_FLICKY_15_DOWN, S_FLICKY_15_UP}, // S_FLICKY_15_UP
{SPR_FL15, 3, 2, {A_FlickyCheck}, S_FLICKY_15_AIM, 0, S_FLICKY_15_DOWN}, // S_FLICKY_15_DOWN
{SPR_FL15, FF_ANIMATE, -1, {NULL}, 3, 2, S_NULL}, // S_FLICKY_15_STAND
{SPR_FL15, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_FLICKY_15_STAND
{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_15, 128*FRACUNIT, S_FLICKY_15_CENTER}, // S_FLICKY_15_CENTER
// Canary
{SPR_FL16, 0, 2, {A_FlickyHeightCheck}, S_FLICKY_16_FLAP1, 0, S_FLICKY_16_OUT}, // S_FLICKY_16_OUT
{SPR_FL16, 1, 3, {A_FlickyFly}, 4*FRACUNIT, 8*FRACUNIT, S_FLICKY_16_FLAP2}, // S_FLICKY_16_FLAP1
{SPR_FL16, 2, 3, {A_SetObjectFlags}, MF_NOGRAVITY, 1, S_FLICKY_16_FLAP3}, // S_FLICKY_16_FLAP2
{SPR_FL16, 3, 3, {A_FlickyHeightCheck}, S_FLICKY_16_FLAP1, 0, S_FLICKY_16_FLAP3}, // S_FLICKY_16_FLAP3
{SPR_FL16, FF_ANIMATE, -1, {NULL}, 3, 3, S_NULL}, // S_FLICKY_16_STAND
{SPR_FL16, FF_ANIMATE|1, -1, {NULL}, 2, 3, S_NULL}, // S_FLICKY_16_STAND
{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_FLICKY_16, 128*FRACUNIT, S_FLICKY_16_CENTER}, // S_FLICKY_16_CENTER
// Spider
{SPR_FS01, 0, 2, {A_FlickyCheck}, S_SECRETFLICKY_01_AIM, 0, S_SECRETFLICKY_01_OUT}, // S_SECRETFLICKY_01_OUT
@ -2780,14 +2796,16 @@ state_t states[NUMSTATES] =
{SPR_FS01, 1, 1, {A_FlickyFlounder}, 2*FRACUNIT, 6*FRACUNIT, S_SECRETFLICKY_01_UP}, // S_SECRETFLICKY_01_HOP
{SPR_FS01, 2, 2, {A_FlickyCheck}, S_SECRETFLICKY_01_AIM, S_SECRETFLICKY_01_DOWN, S_SECRETFLICKY_01_UP}, // S_SECRETFLICKY_01_UP
{SPR_FS01, 3, 2, {A_FlickyCheck}, S_SECRETFLICKY_01_AIM, 0, S_SECRETFLICKY_01_DOWN}, // S_SECRETFLICKY_01_DOWN
{SPR_FS01, FF_ANIMATE, -1, {NULL}, 3, 2, S_NULL}, // S_SECRETFLICKY_01_STAND
{SPR_FS01, FF_ANIMATE|1, -1, {NULL}, 2, 4, S_NULL}, // S_SECRETFLICKY_01_STAND
{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_SECRETFLICKY_01, 128*FRACUNIT, S_SECRETFLICKY_01_CENTER}, // S_SECRETFLICKY_01_CENTER
// Bat
{SPR_FS02, 0, 2, {A_FlickyHeightCheck}, S_SECRETFLICKY_02_FLAP1, S_SECRETFLICKY_02_FLAP1, S_SECRETFLICKY_02_OUT}, // S_SECRETFLICKY_02_OUT
{SPR_FS02, 1, 3, {A_FlickyFly}, 4*FRACUNIT, 16*FRACUNIT, S_SECRETFLICKY_02_FLAP2}, // S_SECRETFLICKY_02_FLAP1
{SPR_FS02, 2, 3, {A_FlickyFly}, 4*FRACUNIT, 16*FRACUNIT, S_SECRETFLICKY_02_FLAP3}, // S_SECRETFLICKY_02_FLAP2
{SPR_FS02, 3, 3, {A_FlickyFly}, 4*FRACUNIT, 16*FRACUNIT, S_SECRETFLICKY_02_FLAP1}, // S_SECRETFLICKY_02_FLAP3
{SPR_FS02, FF_ANIMATE, -1, {NULL}, 3, 3, S_NULL}, // S_SECRETFLICKY_02_STAND
{SPR_FS02, FF_ANIMATE|1, -1, {NULL}, 2, 2, S_NULL}, // S_SECRETFLICKY_02_STAND
{SPR_NULL, 0, 15, {A_FlickyCenter}, MT_SECRETFLICKY_02, 128*FRACUNIT, S_SECRETFLICKY_02_CENTER}, // S_SECRETFLICKY_02_CENTER
// Fan
{SPR_FANS, 0, 1, {A_FanBubbleSpawn}, 2048, 0, S_FAN2}, // S_FAN
@ -13705,7 +13723,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
// Bluebird
{ // MT_FLICKY_01
570, // doomednum
-1, // doomednum
S_FLICKY_01_OUT, // spawnstate
1000, // spawnhealth
S_FLICKY_01_STAND, // seestate
@ -13731,8 +13749,35 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_FLICKY_BUBBLE // raisestate
},
{ // MT_FLICKY_01_CENTER
570, // doomednum
S_FLICKY_01_CENTER, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
8, // speed
8*FRACUNIT, // radius
20*FRACUNIT, // height
0, // display offset
16, // mass
0, // damage
sfx_None, // activesound
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_SCENERY|MF_RUNSPAWNFUNC, // flags
S_NULL // raisestate
},
{ // MT_FLICKY_02
571, // doomednum
-1, // doomednum
S_FLICKY_02_OUT, // spawnstate
1000, // spawnhealth
S_FLICKY_02_STAND, // seestate
@ -13758,8 +13803,35 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_FLICKY_BUBBLE // raisestate
},
{ // MT_FLICKY_02_CENTER
571, // doomednum
S_FLICKY_02_CENTER, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
8, // speed
8*FRACUNIT, // radius
20*FRACUNIT, // height
0, // display offset
16, // mass
0, // damage
sfx_None, // activesound
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_SCENERY|MF_RUNSPAWNFUNC, // flags
S_NULL // raisestate
},
{ // MT_FLICKY_03
572, // doomednum
-1, // doomednum
S_FLICKY_03_OUT, // spawnstate
1000, // spawnhealth
S_FLICKY_03_STAND, // seestate
@ -13785,8 +13857,35 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_FLICKY_BUBBLE // raisestate
},
{ // MT_FLICKY_03_CENTER
572, // doomednum
S_FLICKY_03_CENTER, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
8, // speed
8*FRACUNIT, // radius
20*FRACUNIT, // height
0, // display offset
16, // mass
0, // damage
sfx_None, // activesound
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_SCENERY|MF_RUNSPAWNFUNC, // flags
S_NULL // raisestate
},
{ // MT_FLICKY_04
573, // doomednum
-1, // doomednum
S_FLICKY_04_OUT, // spawnstate
1000, // spawnhealth
S_FLICKY_04_STAND, // seestate
@ -13812,8 +13911,35 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate
},
{ // MT_FLICKY_04_CENTER
573, // doomednum
S_FLICKY_04_CENTER, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
8, // speed
8*FRACUNIT, // radius
20*FRACUNIT, // height
0, // display offset
16, // mass
0, // damage
sfx_None, // activesound
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_SCENERY|MF_RUNSPAWNFUNC, // flags
S_NULL // raisestate
},
{ // MT_FLICKY_05
574, // doomednum
-1, // doomednum
S_FLICKY_05_OUT, // spawnstate
1000, // spawnhealth
S_FLICKY_05_STAND, // seestate
@ -13839,8 +13965,35 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_FLICKY_BUBBLE // raisestate
},
{ // MT_FLICKY_05_CENTER
574, // doomednum
S_FLICKY_05_CENTER, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
8, // speed
8*FRACUNIT, // radius
20*FRACUNIT, // height
0, // display offset
16, // mass
0, // damage
sfx_None, // activesound
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_SCENERY|MF_RUNSPAWNFUNC, // flags
S_NULL // raisestate
},
{ // MT_FLICKY_06
575, // doomednum
-1, // doomednum
S_FLICKY_06_OUT, // spawnstate
1000, // spawnhealth
S_FLICKY_06_STAND, // seestate
@ -13866,8 +14019,35 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_FLICKY_BUBBLE // raisestate
},
{ // MT_FLICKY_06_CENTER
575, // doomednum
S_FLICKY_06_CENTER, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
8, // speed
8*FRACUNIT, // radius
20*FRACUNIT, // height
0, // display offset
16, // mass
0, // damage
sfx_None, // activesound
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_SCENERY|MF_RUNSPAWNFUNC, // flags
S_NULL // raisestate
},
{ // MT_FLICKY_07
576, // doomednum
-1, // doomednum
S_FLICKY_07_OUT, // spawnstate
1000, // spawnhealth
S_FLICKY_07_STAND, // seestate
@ -13893,8 +14073,35 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate
},
{ // MT_FLICKY_07_CENTER
576, // doomednum
S_FLICKY_07_CENTER, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
8, // speed
8*FRACUNIT, // radius
20*FRACUNIT, // height
0, // display offset
16, // mass
0, // damage
sfx_None, // activesound
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_SCENERY|MF_RUNSPAWNFUNC, // flags
S_NULL // raisestate
},
{ // MT_FLICKY_08
577, // doomednum
-1, // doomednum
S_FLICKY_08_OUT, // spawnstate
1000, // spawnhealth
S_FLICKY_08_STAND, // seestate
@ -13920,8 +14127,35 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate
},
{ // MT_FLICKY_08_CENTER
577, // doomednum
S_FLICKY_08_CENTER, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
8, // speed
8*FRACUNIT, // radius
20*FRACUNIT, // height
0, // display offset
16, // mass
0, // damage
sfx_None, // activesound
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_SCENERY|MF_RUNSPAWNFUNC, // flags
S_NULL // raisestate
},
{ // MT_FLICKY_09
578, // doomednum
-1, // doomednum
S_FLICKY_09_OUT, // spawnstate
1000, // spawnhealth
S_FLICKY_09_STAND, // seestate
@ -13947,8 +14181,35 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_FLICKY_BUBBLE // raisestate
},
{ // MT_FLICKY_09_CENTER
578, // doomednum
S_FLICKY_09_CENTER, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
8, // speed
8*FRACUNIT, // radius
20*FRACUNIT, // height
0, // display offset
16, // mass
0, // damage
sfx_None, // activesound
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_SCENERY|MF_RUNSPAWNFUNC, // flags
S_NULL // raisestate
},
{ // MT_FLICKY_10
579, // doomednum
-1, // doomednum
S_FLICKY_10_OUT, // spawnstate
1000, // spawnhealth
S_FLICKY_10_STAND, // seestate
@ -13974,8 +14235,35 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_FLICKY_BUBBLE // raisestate
},
{ // MT_FLICKY_10_CENTER
579, // doomednum
S_FLICKY_10_CENTER, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
8, // speed
8*FRACUNIT, // radius
20*FRACUNIT, // height
0, // display offset
16, // mass
0, // damage
sfx_None, // activesound
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_SCENERY|MF_RUNSPAWNFUNC, // flags
S_NULL // raisestate
},
{ // MT_FLICKY_11
580, // doomednum
-1, // doomednum
S_FLICKY_11_OUT, // spawnstate
1000, // spawnhealth
S_FLICKY_11_STAND, // seestate
@ -14001,8 +14289,35 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_FLICKY_BUBBLE // raisestate
},
{ // MT_FLICKY_11_CENTER
580, // doomednum
S_FLICKY_11_CENTER, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
8, // speed
8*FRACUNIT, // radius
20*FRACUNIT, // height
0, // display offset
16, // mass
0, // damage
sfx_None, // activesound
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_SCENERY|MF_RUNSPAWNFUNC, // flags
S_NULL // raisestate
},
{ // MT_FLICKY_12
581, // doomednum
-1, // doomednum
S_FLICKY_12_OUT, // spawnstate
1000, // spawnhealth
S_FLICKY_12_STAND, // seestate
@ -14028,8 +14343,35 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_FLICKY_BUBBLE // raisestate
},
{ // MT_FLICKY_12_CENTER
581, // doomednum
S_FLICKY_12_CENTER, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
8, // speed
8*FRACUNIT, // radius
20*FRACUNIT, // height
0, // display offset
16, // mass
0, // damage
sfx_None, // activesound
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_SCENERY|MF_RUNSPAWNFUNC, // flags
S_NULL // raisestate
},
{ // MT_FLICKY_13
582, // doomednum
-1, // doomednum
S_FLICKY_13_OUT, // spawnstate
1000, // spawnhealth
S_FLICKY_13_STAND, // seestate
@ -14055,8 +14397,35 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_FLICKY_BUBBLE // raisestate
},
{ // MT_FLICKY_13_CENTER
582, // doomednum
S_FLICKY_13_CENTER, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
8, // speed
8*FRACUNIT, // radius
20*FRACUNIT, // height
0, // display offset
16, // mass
0, // damage
sfx_None, // activesound
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_SCENERY|MF_RUNSPAWNFUNC, // flags
S_NULL // raisestate
},
{ // MT_FLICKY_14
583, // doomednum
-1, // doomednum
S_FLICKY_14_OUT, // spawnstate
1000, // spawnhealth
S_FLICKY_14_STAND, // seestate
@ -14082,8 +14451,35 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_FLICKY_BUBBLE // raisestate
},
{ // MT_FLICKY_14_CENTER
583, // doomednum
S_FLICKY_14_CENTER, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
8, // speed
8*FRACUNIT, // radius
20*FRACUNIT, // height
0, // display offset
16, // mass
0, // damage
sfx_None, // activesound
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_SCENERY|MF_RUNSPAWNFUNC, // flags
S_NULL // raisestate
},
{ // MT_FLICKY_15
584, // doomednum
-1, // doomednum
S_FLICKY_15_OUT, // spawnstate
1000, // spawnhealth
S_FLICKY_15_STAND, // seestate
@ -14109,8 +14505,35 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_FLICKY_BUBBLE // raisestate
},
{ // MT_FLICKY_15_CENTER
584, // doomednum
S_FLICKY_15_CENTER, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
8, // speed
8*FRACUNIT, // radius
20*FRACUNIT, // height
0, // display offset
16, // mass
0, // damage
sfx_None, // activesound
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_SCENERY|MF_RUNSPAWNFUNC, // flags
S_NULL // raisestate
},
{ // MT_FLICKY_16
585, // doomednum
-1, // doomednum
S_FLICKY_16_OUT, // spawnstate
1000, // spawnhealth
S_FLICKY_16_STAND, // seestate
@ -14136,8 +14559,35 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_FLICKY_BUBBLE // raisestate
},
{ // MT_FLICKY_16_CENTER
585, // doomednum
S_FLICKY_16_CENTER, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
8, // speed
8*FRACUNIT, // radius
20*FRACUNIT, // height
0, // display offset
16, // mass
0, // damage
sfx_None, // activesound
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_SCENERY|MF_RUNSPAWNFUNC, // flags
S_NULL // raisestate
},
{ // MT_SECRETFLICKY_01
586, // doomednum
-1, // doomednum
S_SECRETFLICKY_01_OUT, // spawnstate
1000, // spawnhealth
S_SECRETFLICKY_01_STAND, // seestate
@ -14163,8 +14613,35 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_FLICKY_BUBBLE // raisestate
},
{ // MT_SECRETFLICKY_01_CENTER
586, // doomednum
S_SECRETFLICKY_01_CENTER, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
8, // speed
8*FRACUNIT, // radius
20*FRACUNIT, // height
0, // display offset
16, // mass
0, // damage
sfx_None, // activesound
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_SCENERY|MF_RUNSPAWNFUNC, // flags
S_NULL // raisestate
},
{ // MT_SECRETFLICKY_02
587, // doomednum
-1, // doomednum
S_SECRETFLICKY_02_OUT, // spawnstate
1000, // spawnhealth
S_SECRETFLICKY_02_STAND, // seestate
@ -14190,6 +14667,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_FLICKY_BUBBLE // raisestate
},
{ // MT_SECRETFLICKY_02_CENTER
587, // doomednum
S_SECRETFLICKY_02_CENTER, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
8, // speed
8*FRACUNIT, // radius
20*FRACUNIT, // height
0, // display offset
16, // mass
0, // damage
sfx_None, // activesound
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_SCENERY|MF_RUNSPAWNFUNC, // flags
S_NULL // raisestate
},
{ // MT_SEED
-1, // doomednum
S_SEED, // spawnstate

View file

@ -216,6 +216,7 @@ void A_BrakLobShot();
void A_NapalmScatter();
void A_SpawnFreshCopy();
void A_FlickySpawn();
void A_FlickyCenter();
void A_FlickyAim();
void A_FlickyFly();
void A_FlickySoar();
@ -2747,6 +2748,7 @@ typedef enum state
S_FLICKY_01_FLAP2,
S_FLICKY_01_FLAP3,
S_FLICKY_01_STAND,
S_FLICKY_01_CENTER,
// Rabbit
S_FLICKY_02_OUT,
@ -2755,6 +2757,7 @@ typedef enum state
S_FLICKY_02_UP,
S_FLICKY_02_DOWN,
S_FLICKY_02_STAND,
S_FLICKY_02_CENTER,
// Chicken
S_FLICKY_03_OUT,
@ -2764,6 +2767,7 @@ typedef enum state
S_FLICKY_03_FLAP1,
S_FLICKY_03_FLAP2,
S_FLICKY_03_STAND,
S_FLICKY_03_CENTER,
// Seal
S_FLICKY_04_OUT,
@ -2776,6 +2780,7 @@ typedef enum state
S_FLICKY_04_SWIM3,
S_FLICKY_04_SWIM4,
S_FLICKY_04_STAND,
S_FLICKY_04_CENTER,
// Pig
S_FLICKY_05_OUT,
@ -2784,6 +2789,7 @@ typedef enum state
S_FLICKY_05_UP,
S_FLICKY_05_DOWN,
S_FLICKY_05_STAND,
S_FLICKY_05_CENTER,
// Chipmunk
S_FLICKY_06_OUT,
@ -2792,6 +2798,7 @@ typedef enum state
S_FLICKY_06_UP,
S_FLICKY_06_DOWN,
S_FLICKY_06_STAND,
S_FLICKY_06_CENTER,
// Penguin
S_FLICKY_07_OUT,
@ -2807,6 +2814,7 @@ typedef enum state
S_FLICKY_07_SWIM2,
S_FLICKY_07_SWIM3,
S_FLICKY_07_STAND,
S_FLICKY_07_CENTER,
// Fish
S_FLICKY_08_OUT,
@ -2821,6 +2829,7 @@ typedef enum state
S_FLICKY_08_SWIM3,
S_FLICKY_08_SWIM4,
S_FLICKY_08_STAND,
S_FLICKY_08_CENTER,
// Ram
S_FLICKY_09_OUT,
@ -2829,12 +2838,14 @@ typedef enum state
S_FLICKY_09_UP,
S_FLICKY_09_DOWN,
S_FLICKY_09_STAND,
S_FLICKY_09_CENTER,
// Puffin
S_FLICKY_10_OUT,
S_FLICKY_10_FLAP1,
S_FLICKY_10_FLAP2,
S_FLICKY_10_STAND,
S_FLICKY_10_CENTER,
// Cow
S_FLICKY_11_OUT,
@ -2843,6 +2854,7 @@ typedef enum state
S_FLICKY_11_RUN2,
S_FLICKY_11_RUN3,
S_FLICKY_11_STAND,
S_FLICKY_11_CENTER,
// Rat
S_FLICKY_12_OUT,
@ -2851,6 +2863,7 @@ typedef enum state
S_FLICKY_12_RUN2,
S_FLICKY_12_RUN3,
S_FLICKY_12_STAND,
S_FLICKY_12_CENTER,
// Bear
S_FLICKY_13_OUT,
@ -2859,6 +2872,7 @@ typedef enum state
S_FLICKY_13_UP,
S_FLICKY_13_DOWN,
S_FLICKY_13_STAND,
S_FLICKY_13_CENTER,
// Dove
S_FLICKY_14_OUT,
@ -2866,6 +2880,7 @@ typedef enum state
S_FLICKY_14_FLAP2,
S_FLICKY_14_FLAP3,
S_FLICKY_14_STAND,
S_FLICKY_14_CENTER,
// Cat
S_FLICKY_15_OUT,
@ -2874,6 +2889,7 @@ typedef enum state
S_FLICKY_15_UP,
S_FLICKY_15_DOWN,
S_FLICKY_15_STAND,
S_FLICKY_15_CENTER,
// Canary
S_FLICKY_16_OUT,
@ -2881,6 +2897,7 @@ typedef enum state
S_FLICKY_16_FLAP2,
S_FLICKY_16_FLAP3,
S_FLICKY_16_STAND,
S_FLICKY_16_CENTER,
// Spider
S_SECRETFLICKY_01_OUT,
@ -2889,6 +2906,7 @@ typedef enum state
S_SECRETFLICKY_01_UP,
S_SECRETFLICKY_01_DOWN,
S_SECRETFLICKY_01_STAND,
S_SECRETFLICKY_01_CENTER,
// Bat
S_SECRETFLICKY_02_OUT,
@ -2896,6 +2914,7 @@ typedef enum state
S_SECRETFLICKY_02_FLAP2,
S_SECRETFLICKY_02_FLAP3,
S_SECRETFLICKY_02_STAND,
S_SECRETFLICKY_02_CENTER,
// Fan
S_FAN,
@ -4112,23 +4131,41 @@ typedef enum mobj_type
// Flickies
MT_FLICKY_01, // Bluebird
MT_FLICKY_01_CENTER,
MT_FLICKY_02, // Rabbit
MT_FLICKY_02_CENTER,
MT_FLICKY_03, // Chicken
MT_FLICKY_03_CENTER,
MT_FLICKY_04, // Seal
MT_FLICKY_04_CENTER,
MT_FLICKY_05, // Pig
MT_FLICKY_05_CENTER,
MT_FLICKY_06, // Chipmunk
MT_FLICKY_06_CENTER,
MT_FLICKY_07, // Penguin
MT_FLICKY_07_CENTER,
MT_FLICKY_08, // Fish
MT_FLICKY_08_CENTER,
MT_FLICKY_09, // Ram
MT_FLICKY_09_CENTER,
MT_FLICKY_10, // Puffin
MT_FLICKY_10_CENTER,
MT_FLICKY_11, // Cow
MT_FLICKY_11_CENTER,
MT_FLICKY_12, // Rat
MT_FLICKY_12_CENTER,
MT_FLICKY_13, // Bear
MT_FLICKY_13_CENTER,
MT_FLICKY_14, // Dove
MT_FLICKY_14_CENTER,
MT_FLICKY_15, // Cat
MT_FLICKY_15_CENTER,
MT_FLICKY_16, // Canary
MT_FLICKY_16_CENTER,
MT_SECRETFLICKY_01, // Spider
MT_SECRETFLICKY_01_CENTER,
MT_SECRETFLICKY_02, // Bat
MT_SECRETFLICKY_02_CENTER,
MT_SEED,
// Environmental Effects

View file

@ -243,6 +243,7 @@ void A_BrakLobShot(mobj_t *actor);
void A_NapalmScatter(mobj_t *actor);
void A_SpawnFreshCopy(mobj_t *actor);
void A_FlickySpawn(mobj_t *actor);
void A_FlickyCenter(mobj_t *actor);
void A_FlickyAim(mobj_t *actor);
void A_FlickyFly(mobj_t *actor);
void A_FlickySoar(mobj_t *actor);
@ -10774,6 +10775,105 @@ void A_FlickySpawn(mobj_t *actor)
P_InternalFlickySpawn(actor, locvar1, ((locvar2) ? locvar2 : 8*FRACUNIT), true);
}
// Internal Flicky color setting
void P_InternalFlickySetColor(mobj_t *actor, UINT8 extrainfo)
{
UINT8 flickycolors[] = {
SKINCOLOR_RED,
SKINCOLOR_CYAN,
SKINCOLOR_BLUE,
SKINCOLOR_VAPOR,
SKINCOLOR_PURPLE,
SKINCOLOR_BUBBLEGUM,
SKINCOLOR_NEON,
SKINCOLOR_BLACK,
SKINCOLOR_BEIGE,
SKINCOLOR_LAVENDER,
SKINCOLOR_RUBY,
SKINCOLOR_SALMON,
SKINCOLOR_SUNSET,
SKINCOLOR_ORANGE,
SKINCOLOR_YELLOW,
};
if (extrainfo == 0)
actor->color = flickycolors[P_RandomKey(sizeof(flickycolors))];
else if (extrainfo-1 < sizeof(flickycolors))
actor->color = flickycolors[extrainfo-1];
}
// Function: A_FlickyCenter
//
// Description: Place flickies in-level.
//
// var1 = if 0, spawns random flicky based on level header. Else, spawns the designated thing type.
// var2 = maximum default distance away from spawn the flickies are allowed to travel. If angle != 0, then that's the radius.
//
// If MTF_EXTRA is flagged, Flickies move independently of a target. Else, move around the target.
// If MTF_OBJECTSPECIAL and NOT MTF_EXTRA are flagged, Angle sign determines direction of circular movement.
// If MTF_AMBUSH is flagged, Flickies hop in-place.
// If MTF_AMBUSH and MTF_OBJECTSPECIAL is flagged, Flickies stand in-place without gravity.
//
void A_FlickyCenter(mobj_t *actor)
{
INT32 locvar1 = var1;
INT32 locvar2 = var2;
#ifdef HAVE_BLUA
if (LUA_CallAction("A_FlickyCenter", actor))
return;
#endif
if (!actor->tracer)
{
if (actor->spawnpoint && (actor->spawnpoint->options & MTF_EXTRA))
{
actor->tracer = P_InternalFlickySpawn(actor, locvar1, 1, false);
P_SetTarget(&actor->tracer->target, actor);
actor->tracer->fuse = 0; // < 2*TICRATE means move aimlessly.
if (!(actor->spawnpoint->options & MTF_AMBUSH))
actor->tracer->angle = P_RandomKey(180)*ANG2;
}
else
{
actor->tracer = P_InternalFlickySpawn(actor, locvar1, 1, false);
P_SetTarget(&actor->tracer->target, actor);
actor->tracer->fuse = FRACUNIT;
if (actor->spawnpoint
&& (actor->spawnpoint->options & MTF_OBJECTSPECIAL)
&& !(actor->spawnpoint->options & MTF_EXTRA))
actor->tracer->movedir = actor->spawnpoint->angle >= 0 ? 1 : -1;
}
if (locvar1 == MT_FLICKY_08 && actor->spawnpoint)
P_InternalFlickySetColor(actor->tracer, actor->spawnpoint->extrainfo);
actor->extravalue1 = 0;
}
if (actor->spawnpoint && !(actor->spawnpoint->options & MTF_EXTRA) && !(actor->spawnpoint->options & MTF_AMBUSH))
{
actor->tracer->fuse = FRACUNIT;
if (actor->spawnpoint->angle)
locvar2 = abs(actor->spawnpoint->angle)*FRACUNIT;
P_LookForPlayers(actor, true, false, locvar2);
if (actor->target && P_AproxDistance(actor->target->x - actor->spawnpoint->x*FRACUNIT, actor->target->y - actor->spawnpoint->y*FRACUNIT) < locvar2)
{
actor->extravalue1 = 1;
P_TeleportMove(actor, actor->target->x, actor->target->y, actor->target->z);
}
else if(actor->extravalue1)
{
actor->extravalue1 = 0;
P_TeleportMove(actor, actor->spawnpoint->x*FRACUNIT, actor->spawnpoint->y*FRACUNIT, actor->spawnpoint->z*FRACUNIT);
}
}
}
// Internal Flicky bubbling function.
void P_InternalFlickyBubble(mobj_t *actor)
{
@ -10884,7 +10984,11 @@ void P_InternalFlickyFly(mobj_t *actor, fixed_t flyspeed, fixed_t targetdist, fi
if (actor->target && abs(chasez - actor->z) > targetdist)
targetdist = P_AproxDistance(actor->target->x - actor->x, actor->target->y - actor->y);
if (actor->spawnpoint && (actor->spawnpoint->options & MTF_OBJECTSPECIAL))
if (actor->target
&& P_IsFlickyCenter(actor->target->type)
&& actor->target->spawnpoint
&& (actor->target->spawnpoint->options & MTF_OBJECTSPECIAL)
&& (actor->target->spawnpoint->options & MTF_EXTRA))
vertangle = 0;
else
vertangle = (R_PointToAngle2(0, actor->z, targetdist, chasez) >> ANGLETOFINESHIFT) & FINEMASK;
@ -10900,6 +11004,8 @@ void P_InternalFlickyFly(mobj_t *actor, fixed_t flyspeed, fixed_t targetdist, fi
// var1 = how fast to fly
// var2 = how far ahead the target should be considered
//
// If MTF_EXTRA and MTF_OBJECTSPECIAL are flagged, Flicky will always fly at same Z height.
//
void A_FlickyFly(mobj_t *actor)
{
INT32 locvar1 = var1;
@ -10920,6 +11026,8 @@ void A_FlickyFly(mobj_t *actor)
// var1 = how fast to fly
// var2 = how far ahead the target should be considered
//
// If MTF_EXTRA and MTF_OBJECTSPECIAL are flagged, Flicky will always fly at same Z height.
//
void A_FlickySoar(mobj_t *actor)
{
INT32 locvar1 = var1;
@ -11040,9 +11148,12 @@ void A_FlickyCheck(mobj_t *actor)
if (LUA_CallAction("A_FlickyCheck", actor))
return;
#endif
if (actor->spawnpoint && (actor->spawnpoint->options & MTF_AMBUSH))
if (actor->target
&& P_IsFlickyCenter(actor->target->type)
&& actor->target->spawnpoint
&& (actor->target->spawnpoint->options & MTF_AMBUSH))
{
if (actor->spawnpoint->options & MTF_OBJECTSPECIAL)
if (actor->target->spawnpoint->options & MTF_OBJECTSPECIAL)
{
actor->momz = 0;
actor->flags |= MF_NOGRAVITY;
@ -11075,9 +11186,12 @@ void A_FlickyHeightCheck(mobj_t *actor)
if (LUA_CallAction("A_FlickyHeightCheck", actor))
return;
#endif
if (actor->spawnpoint && (actor->spawnpoint->options & MTF_AMBUSH))
if (actor->target
&& P_IsFlickyCenter(actor->target->type)
&& actor->target->spawnpoint
&& (actor->target->spawnpoint->options & MTF_AMBUSH))
{
if (actor->spawnpoint->options & MTF_OBJECTSPECIAL)
if (actor->target->spawnpoint->options & MTF_OBJECTSPECIAL)
{
actor->momz = 0;
actor->flags |= MF_NOGRAVITY;

View file

@ -311,6 +311,7 @@ void P_NewChaseDir(mobj_t *actor);
boolean P_LookForPlayers(mobj_t *actor, boolean allaround, boolean tracer, fixed_t dist);
mobj_t *P_InternalFlickySpawn(mobj_t *actor, mobjtype_t flickytype, fixed_t momz, boolean lookforplayers);
#define P_IsFlickyCenter(type) (type > MT_FLICKY_01 && type < MT_SEED && (type - MT_FLICKY_01) % 2 ? 1 : 0)
void P_InternalFlickyBubble(mobj_t *actor);
void P_InternalFlickyFly(mobj_t *actor, fixed_t flyspeed, fixed_t targetdist, fixed_t chasez);
void P_InternalFlickyHop(mobj_t *actor, fixed_t momz, fixed_t momh, angle_t angle);

View file

@ -7089,6 +7089,35 @@ void P_MobjThinker(mobj_t *mobj)
S_StartSound(flame, sfx_fire);
}
break;
case MT_FLICKY_01_CENTER:
case MT_FLICKY_02_CENTER:
case MT_FLICKY_03_CENTER:
case MT_FLICKY_04_CENTER:
case MT_FLICKY_05_CENTER:
case MT_FLICKY_06_CENTER:
case MT_FLICKY_07_CENTER:
case MT_FLICKY_08_CENTER:
case MT_FLICKY_09_CENTER:
case MT_FLICKY_10_CENTER:
case MT_FLICKY_11_CENTER:
case MT_FLICKY_12_CENTER:
case MT_FLICKY_13_CENTER:
case MT_FLICKY_14_CENTER:
case MT_FLICKY_15_CENTER:
case MT_FLICKY_16_CENTER:
case MT_SECRETFLICKY_01_CENTER:
case MT_SECRETFLICKY_02_CENTER:
if (mobj->tracer
&& mobj->spawnpoint
&& (mobj->spawnpoint->options & MTF_AMBUSH)
&& !(mobj->spawnpoint->options & MTF_OBJECTSPECIAL))
{
if (!(mobj->tracer->flags2 & MF2_OBJECTFLIP) && mobj->tracer->z <= mobj->tracer->floorz)
mobj->tracer->momz = 7*FRACUNIT;
else if ((mobj->tracer->flags2 & MF2_OBJECTFLIP) && mobj->tracer->z >= mobj->tracer->ceilingz - mobj->tracer->height)
mobj->tracer->momz = -7*FRACUNIT;
}
break;
case MT_SEED:
if (P_MobjFlip(mobj)*mobj->momz < mobj->info->speed)
mobj->momz = P_MobjFlip(mobj)*mobj->info->speed;