diff --git a/src/deh_tables.c b/src/deh_tables.c index 458c3aed0..5bbe64f9f 100644 --- a/src/deh_tables.c +++ b/src/deh_tables.c @@ -4730,6 +4730,45 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi "S_BALLSWITCH_BALL_ACTIVE", "S_BALLSWITCH_PAD", "S_BALLSWITCH_PAD_ACTIVE", + + "S_SPIKEDTARGET", + + "S_BLENDEYE_MAIN", + "S_BLENDEYE_MAIN_LAUNCHED", + "S_BLENDEYE_EYE", + "S_BLENDEYE_EYE_FLASH", + "S_BLENDEYE_GLASS", + "S_BLENDEYE_GLASS_STRESS", + + "S_BLENDEYE_SHIELD", + "S_BLENDEYE_SHIELD_L", + "S_BLENDEYE_SHIELD_R", + "S_BLENDEYE_SHIELD_BUSTED", + "S_BLENDEYE_SHIELD_BUSTED_L", + "S_BLENDEYE_SHIELD_BUSTED_R", + + "S_BLENDEYE_EGGBEATER_EXTEND_1", + "S_BLENDEYE_EGGBEATER_EXTEND_2", + "S_BLENDEYE_EGGBEATER", + "S_BLENDEYE_EGGBEATER_SPIN", + + "S_BLENDEYE_FLAME", + + "S_BLENDEYE_GENERATOR", + "S_BLENDEYE_GENERATOR_BUSTED_L", + "S_BLENDEYE_GENERATOR_BUSTED_R", + + "S_BLENDEYE_PUYO_SPAWN_1", + "S_BLENDEYE_PUYO_SPAWN_2", + "S_BLENDEYE_PUYO_SPAWN_3", + "S_BLENDEYE_PUYO", + "S_BLENDEYE_PUYO_LAND_1", + "S_BLENDEYE_PUYO_LAND_2", + "S_BLENDEYE_PUYO_LAND_3", + "S_BLENDEYE_PUYO_LAND_4", + "S_BLENDEYE_PUYO_SHOCK", + "S_BLENDEYE_PUYO_DIE", + "S_BLENDEYE_PUYO_DUST", }; // RegEx to generate this from info.h: ^\tMT_([^,]+), --> \t"MT_\1", @@ -5914,6 +5953,19 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t "MT_BALLSWITCH_BALL", "MT_BALLSWITCH_PAD", + + "MT_BOSSARENACENTER", + "MT_SPIKEDTARGET", + + "MT_BLENDEYE_MAIN", + "MT_BLENDEYE_EYE", + "MT_BLENDEYE_GLASS", + "MT_BLENDEYE_SHIELD", + "MT_BLENDEYE_EGGBEATER", + "MT_BLENDEYE_GENERATOR", + "MT_BLENDEYE_PUYO", + "MT_BLENDEYE_PUYO_DUST", + "MT_BLENDEYE_PUYO_DUST_COFFEE", }; const char *const MOBJFLAG_LIST[] = { diff --git a/src/info.c b/src/info.c index 8a69214c5..f3c13bd3b 100644 --- a/src/info.c +++ b/src/info.c @@ -933,6 +933,23 @@ char sprnames[NUMSPRITES + 1][5] = "SA2S", // SA2-style Ball Switch + "STRG", // Spiked Target + + "BLEA", // m'A'in unit + "BLEB", // o'B'server + "BLEC", // 'C'lear glass + "BLED", // shiel'D' + "BLEE", // 'E'ggbeater + "BLEF", // 'F'lamejet + "BLEG", // 'G'enerator + + // Puyo hazards + "PUYA", + "PUYB", + "PUYC", + "PUYD", + "PUYE", + // First person view sprites; this is a sprite so that it can be replaced by a specialized MD2 draw later "VIEW", }; @@ -5521,6 +5538,47 @@ state_t states[NUMSTATES] = {SPR_SA2S, FF_FULLBRIGHT|FF_ANIMATE|FF_GLOBALANIM|4, -1, {NULL}, 1, 1, S_NULL}, // S_BALLSWITCH_BALL_ACTIVE {SPR_SA2S, FF_FLOORSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_BALLSWITCH_PAD {SPR_SA2S, FF_FLOORSPRITE|FF_ANIMATE|FF_GLOBALANIM|1, -1, {NULL}, 1, 1, S_NULL}, // S_BALLSWITCH_PAD_ACTIVE + + {SPR_STRG, FF_ADD|FF_FLOORSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_SPIKEDTARGET, + + {SPR_BLEA, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BLENDEYE_MAIN, + {SPR_BLEA, 1, -1, {NULL}, 0, 0, S_NULL}, // S_BLENDEYE_MAIN_LAUNCHED, + + {SPR_BLEB, FF_PAPERSPRITE|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_BLENDEYE_EYE, + {SPR_BLEB, FF_PAPERSPRITE|FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 1, 1, S_BLENDEYE_EYE}, // S_BLENDEYE_EYE_FLASH, + + {SPR_BLEC, FF_PAPERSPRITE|FF_ADD, -1, {NULL}, 0, 0, S_NULL}, // S_BLENDEYE_GLASS, + {SPR_BLEC, 1|FF_PAPERSPRITE|FF_ADD|FF_ANIMATE, 2, {NULL}, 1, 1, S_BLENDEYE_GLASS}, // S_BLENDEYE_GLASS_STRESS, + + {SPR_BLED, FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_BLENDEYE_SHIELD, + {SPR_BLED, 1|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_BLENDEYE_SHIELD_L, + {SPR_BLED, 2|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_BLENDEYE_SHIELD_R, + {SPR_BLED, 3|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_BLENDEYE_SHIELD_BUSTED, + {SPR_BLED, 5|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_BLENDEYE_SHIELD_BUSTED_L, + {SPR_BLED, 6|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_BLENDEYE_SHIELD_BUSTED_R, + + {SPR_BLEE, 0, 4, {NULL}, 0, 0, S_BLENDEYE_EGGBEATER_EXTEND_2}, // S_BLENDEYE_EGGBEATER_EXTEND_1, + {SPR_BLEE, 1|FF_ANIMATE, 8, {NULL}, 1, 2, S_BLENDEYE_EGGBEATER}, // S_BLENDEYE_EGGBEATER_EXTEND_2, + {SPR_BLEE, 2, -1, {NULL}, 0, 0, S_NULL}, // S_BLENDEYE_EGGBEATER, + {SPR_BLEE, 2|FF_ANIMATE, -1, {NULL}, 1, 2, S_NULL}, // S_BLENDEYE_EGGBEATER_SPIN, + + {SPR_BLEF, FF_ADD|FF_ANIMATE, -1, {NULL}, 1, 2, S_NULL}, // S_BLENDEYE_FLAME, + + {SPR_BLEG, FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 1, 1, S_NULL}, // S_BLENDEYE_GENERATOR, + {SPR_BLEG, 2|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_BLENDEYE_GENERATOR_BUSTED_L, + {SPR_BLEG, 3|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_BLENDEYE_GENERATOR_BUSTED_R, + + {SPR_PUYA, 6, 2, {A_BlendEyePuyoHack}, 0, 0, S_BLENDEYE_PUYO_SPAWN_2}, // S_BLENDEYE_PUYO_SPAWN_1, + {SPR_PUYA, 5, 2, {A_BlendEyePuyoHack}, 0, 0, S_BLENDEYE_PUYO_SPAWN_3}, // S_BLENDEYE_PUYO_SPAWN_2, + {SPR_PUYA, 4, 2, {A_BlendEyePuyoHack}, 0, 0, S_BLENDEYE_PUYO}, // S_BLENDEYE_PUYO_SPAWN_3, + {SPR_PUYA, 0, -1, {A_BlendEyePuyoHack}, 0, 0, S_NULL}, // S_BLENDEYE_PUYO, + {SPR_PUYA, 2, 2, {A_BlendEyePuyoHack}, 0, 0, S_BLENDEYE_PUYO_LAND_2}, // S_BLENDEYE_PUYO_LAND_1, + {SPR_PUYA, 0, 2, {A_BlendEyePuyoHack}, 0, 0, S_BLENDEYE_PUYO_LAND_3}, // S_BLENDEYE_PUYO_LAND_2, + {SPR_PUYA, 1, 2, {A_BlendEyePuyoHack}, 0, 0, S_BLENDEYE_PUYO_LAND_4}, // S_BLENDEYE_PUYO_LAND_3, + {SPR_PUYA, 0, 2, {A_BlendEyePuyoHack}, 1, S_BLENDEYE_PUYO_LAND_1, S_BLENDEYE_PUYO}, // S_BLENDEYE_PUYO_LAND_4, + {SPR_PUYA, 3, -1, {A_BlendEyePuyoHack}, 0, 0, S_NULL}, // S_BLENDEYE_PUYO_SHOCK, + {SPR_PUYA, 4|FF_ANIMATE, 5, {A_BlendEyePuyoHack}, 2, 2, S_NULL}, // S_BLENDEYE_PUYO_DIE, + {SPR_PUYA, 5, 2, {A_BlendEyePuyoHack}, 0, 0, S_BLENDEYE_PUYO_DIE}, // S_BLENDEYE_PUYO_DUST, }; mobjinfo_t mobjinfo[NUMMOBJTYPES] = @@ -31106,6 +31164,303 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOCLIPTHING|MF_NOGRAVITY|MF_SCENERY, // flags S_NULL // raisestate }, + + { // MT_BOSSARENACENTER + 2130, // doomednum + S_INVISIBLE, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 0, // 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 + FRACUNIT, // radius + FRACUNIT, // height + 0, // display offset + 0, // mass + 0, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_NOGRAVITY|MF_SCENERY, // flags + S_NULL // raisestate + }, + + { // MT_SPIKEDTARGET + -1, // doomednum + S_SPIKEDTARGET, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 0, // 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 + 24*FRACUNIT, // radius + 48*FRACUNIT, // height + 0, // display offset + 0, // mass + 0, // damage + sfx_None, // activesound + MF_SCENERY|MF_NOCLIPTHING|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_BLENDEYE_MAIN + 2131, // doomednum + S_BLENDEYE_MAIN, // spawnstate + 3, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 0, // reactiontime + sfx_None, // attacksound + S_BLENDEYE_MAIN, // painstate + 0, // painchance + sfx_mbs60, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_BLENDEYE_MAIN, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 42*FRACUNIT, // radius + 56*FRACUNIT, // height + 0, // display offset + 0, // mass + 0, // damage + sfx_None, // activesound + MF_BOSS|MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPTHING|MF_SOLID, // flags + S_BLENDEYE_MAIN_LAUNCHED // raisestate + }, + + { // MT_BLENDEYE_EYE + -1, // doomednum + S_BLENDEYE_EYE, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 0, // 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 + 14*FRACUNIT, // radius + 28*FRACUNIT, // height + 0, // display offset + 0, // mass + 0, // damage + sfx_None, // activesound + MF_NOCLIPTHING|MF_NOGRAVITY, // flags + S_BLENDEYE_EYE_FLASH // raisestate + }, + + { // MT_BLENDEYE_GLASS + -1, // doomednum + S_BLENDEYE_GLASS, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 0, // reactiontime + sfx_None, // attacksound + S_BLENDEYE_GLASS_STRESS, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 96*FRACUNIT, // height + 0, // display offset + 0, // mass + 0, // damage + sfx_None, // activesound + MF_NOGRAVITY|MF_PAPERCOLLISION|MF_PAIN, // flags + S_NULL // raisestate + }, + + { // MT_BLENDEYE_SHIELD + -1, // doomednum + S_BLENDEYE_SHIELD, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 0, // 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 + 17*FRACUNIT, // radius + 42*FRACUNIT, // height + 0, // display offset + 0, // mass + 0, // damage + sfx_None, // activesound + MF_NOGRAVITY|MF_PAPERCOLLISION|MF_PAIN, // flags + S_NULL // raisestate + }, + + { // MT_BLENDEYE_EGGBEATER + -1, // doomednum + S_BLENDEYE_EGGBEATER_EXTEND_1, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 0, // 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 + 26*FRACUNIT, // radius + 56*FRACUNIT, // height + -1, // display offset + DMG_TUMBLE, // mass + 0, // damage + sfx_None, // activesound + MF_NOGRAVITY|MF_PAIN, // flags + S_BLENDEYE_EGGBEATER_SPIN // raisestate + }, + + { // MT_BLENDEYE_GENERATOR + -1, // doomednum + S_BLENDEYE_GENERATOR, // spawnstate + 1, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 0, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_BLENDEYE_GENERATOR_BUSTED_L, // deathstate + S_BLENDEYE_GENERATOR_BUSTED_R, // xdeathstate + sfx_None, // deathsound + 0, // speed + 26*FRACUNIT, // radius + 42*FRACUNIT, // height + 0, // display offset + 0, // mass + 0, // damage + sfx_None, // activesound + MF_SHOOTABLE|MF_PAPERCOLLISION|MF_SOLID, // flags + S_NULL // raisestate + }, + + { // MT_BLENDEYE_PUYO + -1, // doomednum + S_BLENDEYE_PUYO_SPAWN_1, // spawnstate + 1, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 0, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_BLENDEYE_PUYO_DIE, // deathstate + S_NULL, // xdeathstate + sfx_mbs4c, // deathsound + 0, // speed + 8*FRACUNIT, // radius + 12*FRACUNIT, // height + 0, // display offset + 0, // mass + 0, // damage + sfx_None, // activesound + MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_NOHITLAGFORME, // flags + S_NULL // raisestate + }, + + { // MT_BLENDEYE_PUYO_DUST + -1, // doomednum + S_BLENDEYE_PUYO_DUST, // spawnstate + 1, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 0, // 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 + 4*FRACUNIT, // radius + 4*FRACUNIT, // height + 0, // display offset + 0, // mass + 0, // damage + sfx_None, // activesound + MF_SCENERY|MF_NOCLIPTHING|MF_NOCLIPHEIGHT|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, + + { // MT_BLENDEYE_PUYO_DUST_COFFEE + -1, // doomednum + S_BLENDEYE_PUYO_DUST, // spawnstate + 1, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 0, // 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 + 4*FRACUNIT, // radius + 4*FRACUNIT, // height + 0, // display offset + 0, // mass + 0, // damage + sfx_None, // activesound + MF_SCENERY|MF_NOCLIPTHING|MF_NOCLIPHEIGHT|MF_NOGRAVITY, // flags + S_NULL // raisestate + }, }; diff --git a/src/info.h b/src/info.h index d99201fb7..c754a86cb 100644 --- a/src/info.h +++ b/src/info.h @@ -296,6 +296,7 @@ enum actionnum A_SPAWNITEMDEBRISCLOUD, A_RINGSHOOTERFACE, A_SPAWNSNEAKERPANEL, + A_BLENDEYEPUYOHACK, NUMACTIONS }; @@ -572,6 +573,7 @@ void A_InvincSparkleRotate(); void A_SpawnItemDebrisCloud(); void A_RingShooterFace(); void A_SpawnSneakerPanel(); +void A_BlendEyePuyoHack(); extern boolean actionsoverridden[NUMACTIONS]; @@ -1485,6 +1487,23 @@ typedef enum sprite SPR_SA2S, // SA2-style Ball Switch + SPR_STRG, // Spiked Target + + SPR_BLEA, // m'A'in unit + SPR_BLEB, // o'B'server + SPR_BLEC, // 'C'lear glass + SPR_BLED, // shiel'D' + SPR_BLEE, // 'E'ggbeater + SPR_BLEF, // 'F'lamejet + SPR_BLEG, // 'G'enerator + + // Puyo hazards + SPR_PUYA, + SPR_PUYB, + SPR_PUYC, + SPR_PUYD, + SPR_PUYE, + // First person view sprites; this is a sprite so that it can be replaced by a specialized MD2 draw later SPR_VIEW, @@ -5946,6 +5965,45 @@ typedef enum state S_BALLSWITCH_PAD, S_BALLSWITCH_PAD_ACTIVE, + S_SPIKEDTARGET, + + S_BLENDEYE_MAIN, + S_BLENDEYE_MAIN_LAUNCHED, + S_BLENDEYE_EYE, + S_BLENDEYE_EYE_FLASH, + S_BLENDEYE_GLASS, + S_BLENDEYE_GLASS_STRESS, + + S_BLENDEYE_SHIELD, + S_BLENDEYE_SHIELD_L, + S_BLENDEYE_SHIELD_R, + S_BLENDEYE_SHIELD_BUSTED, + S_BLENDEYE_SHIELD_BUSTED_L, + S_BLENDEYE_SHIELD_BUSTED_R, + + S_BLENDEYE_EGGBEATER_EXTEND_1, + S_BLENDEYE_EGGBEATER_EXTEND_2, + S_BLENDEYE_EGGBEATER, + S_BLENDEYE_EGGBEATER_SPIN, + + S_BLENDEYE_FLAME, + + S_BLENDEYE_GENERATOR, + S_BLENDEYE_GENERATOR_BUSTED_L, + S_BLENDEYE_GENERATOR_BUSTED_R, + + S_BLENDEYE_PUYO_SPAWN_1, + S_BLENDEYE_PUYO_SPAWN_2, + S_BLENDEYE_PUYO_SPAWN_3, + S_BLENDEYE_PUYO, + S_BLENDEYE_PUYO_LAND_1, + S_BLENDEYE_PUYO_LAND_2, + S_BLENDEYE_PUYO_LAND_3, + S_BLENDEYE_PUYO_LAND_4, + S_BLENDEYE_PUYO_SHOCK, + S_BLENDEYE_PUYO_DIE, + S_BLENDEYE_PUYO_DUST, + S_FIRSTFREESLOT, S_LASTFREESLOT = S_FIRSTFREESLOT + NUMSTATEFREESLOTS - 1, NUMSTATES @@ -7149,6 +7207,19 @@ typedef enum mobj_type MT_BALLSWITCH_BALL, MT_BALLSWITCH_PAD, + MT_BOSSARENACENTER, + MT_SPIKEDTARGET, + + MT_BLENDEYE_MAIN, + MT_BLENDEYE_EYE, + MT_BLENDEYE_GLASS, + MT_BLENDEYE_SHIELD, + MT_BLENDEYE_EGGBEATER, + MT_BLENDEYE_GENERATOR, + MT_BLENDEYE_PUYO, + MT_BLENDEYE_PUYO_DUST, + MT_BLENDEYE_PUYO_DUST_COFFEE, + MT_FIRSTFREESLOT, MT_LASTFREESLOT = MT_FIRSTFREESLOT + NUMMOBJFREESLOTS - 1, NUMMOBJTYPES diff --git a/src/p_enemy.c b/src/p_enemy.c index c0190c71b..0df3684d1 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -328,6 +328,7 @@ void A_InvincSparkleRotate(mobj_t *actor); void A_SpawnItemDebrisCloud(mobj_t *actor); void A_RingShooterFace(mobj_t *actor); void A_SpawnSneakerPanel(mobj_t *actor); +void A_BlendEyePuyoHack(mobj_t *actor); //for p_enemy.c @@ -13756,3 +13757,42 @@ void A_SpawnSneakerPanel(mobj_t *actor) mo->angle = actor->angle; Obj_SneakerPanelSpriteScale(mo); } + +// Function: A_BlendEyePuyoHack +// +// Description: Blend Eye Puyo hazards visual/repeat behaviour +// +// var1: +// var2: +// See A_Repeat +// +void A_BlendEyePuyoHack(mobj_t *actor) +{ + INT32 locvar1 = var1; + INT32 locvar2 = var2; + + if (LUA_CallAction(A_BLENDEYEPUYOHACK, actor)) + { + return; + } + + actor->sprite = actor->movedir; + + if (locvar1 != 0 && !(actor->state->frame & FF_ANIMATE)) + { + // See A_Repeat + if ((!actor->extravalue2 || actor->extravalue2 > locvar1)) + actor->extravalue2 = locvar1; + + if (--actor->extravalue2 > 0) + P_SetMobjState(actor, locvar2); + } + + if (actor->movedir == SPR_PUYC + && (actor->state-states) == S_BLENDEYE_PUYO_SHOCK + && P_RandomChance(PR_DECORATION, FRACUNIT/50)) + { + // Funny + actor->frame = 7; + } +} diff --git a/src/sounds.c b/src/sounds.c index 426ccc28a..e8475b965 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -1226,6 +1226,9 @@ sfxinfo_t S_sfx[NUMSFX] = {"ridr3", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // Rideroid Loop {"ridr4", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // Leaving Rideroid + {"befan1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Whisking"}, // Blend Eye whisk startup + {"befan2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Whisking"}, // Blend Eye whisk + // Damage sounds {"dmga1", false, 255, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Damaged"}, {"dmga2", false, 255, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Damaged"}, diff --git a/src/sounds.h b/src/sounds.h index 938b9c7da..93796b9c8 100644 --- a/src/sounds.h +++ b/src/sounds.h @@ -1288,13 +1288,17 @@ typedef enum sfx_rainbr, sfx_rank, - + // rideroid sfx_ridr1, sfx_ridr2, sfx_ridr3, sfx_ridr4, + // Blend Eye + sfx_befan1, + sfx_befan2, + // Damage sounds sfx_dmga1, sfx_dmga2,