From 677801f5fffe99137a17f98b57c762928b27f677 Mon Sep 17 00:00:00 2001 From: Monster Iestyn Date: Thu, 23 May 2019 21:51:58 +0100 Subject: [PATCH] Hardcode the bomb's explosion states, the dust object type and states, and the sprite prefixes for both --- src/dehacked.c | 15 ++++++++++++++ src/hardware/hw_light.c | 2 ++ src/info.c | 44 ++++++++++++++++++++++++++++++++++++++++- src/info.h | 17 ++++++++++++++++ 4 files changed, 77 insertions(+), 1 deletion(-) diff --git a/src/dehacked.c b/src/dehacked.c index ab79b21a1..6d1f58990 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -4788,6 +4788,20 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit "S_FBOMB1", "S_FBOMB2", + "S_FBOMB_EXPL1", + "S_FBOMB_EXPL2", + "S_FBOMB_EXPL3", + "S_FBOMB_EXPL4", + "S_FBOMB_EXPL5", + "S_FBOMB_EXPL6", + "S_TNTDUST_1", + "S_TNTDUST_2", + "S_TNTDUST_3", + "S_TNTDUST_4", + "S_TNTDUST_5", + "S_TNTDUST_6", + "S_TNTDUST_7", + "S_TNTDUST_8", "S_FSGNA", "S_FSGNB", "S_FSGNC", @@ -7095,6 +7109,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s // Boss 5 "MT_FANG", "MT_FBOMB", + "MT_TNTDUST", // also used by barrel "MT_FSGNA", "MT_FSGNB", "MT_FANGWAYPOINT", diff --git a/src/hardware/hw_light.c b/src/hardware/hw_light.c index 16929dd5e..90d02fdf8 100644 --- a/src/hardware/hw_light.c +++ b/src/hardware/hw_light.c @@ -202,6 +202,8 @@ light_t *t_lspr[NUMSPRITES] = &lspr[NOLIGHT], //SPR_FANG // replaces EGGQ &lspr[NOLIGHT], //SPR_FBOM &lspr[NOLIGHT], //SPR_FSGN + &lspr[REDBALL_L], //SPR_BARX // bomb explosion (also used by barrel) + &lspr[NOLIGHT], //SPR_BARD // bomb dust (also used by barrel) // Boss 6 (Red Volcano) &lspr[NOLIGHT], // SPR_EEGR diff --git a/src/info.c b/src/info.c index 04b138e8b..e03b63a65 100644 --- a/src/info.c +++ b/src/info.c @@ -90,6 +90,8 @@ char sprnames[NUMSPRITES + 1][5] = "FANG", // replaces EGGQ "FBOM", "FSGN", + "BARX", // bomb explosion (also used by barrel) + "BARD", // bomb dust (also used by barrel) // Boss 6 (Red Volcano) "EGGR", @@ -1410,6 +1412,20 @@ state_t states[NUMSTATES] = {SPR_FBOM, 0, 1, {A_GhostMe}, 0, 0, S_FBOMB2}, // S_FBOMB1 {SPR_FBOM, 1, 1, {A_GhostMe}, 0, 0, S_FBOMB1}, // S_FBOMB2 + {SPR_BARX, 0|FF_FULLBRIGHT, 3, {A_SetObjectFlags}, MF_NOCLIP|MF_NOGRAVITY|MF_NOBLOCKMAP, 0, S_FBOMB_EXPL2}, // S_FBOMB_EXPL1 + {SPR_BARX, 1|FF_FULLBRIGHT, 2, {A_Boss5BombExplode}, MT_TNTDUST, 0, S_FBOMB_EXPL3}, // S_FBOMB_EXPL2 + {SPR_BARX, 1|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_FBOMB_EXPL4}, // S_FBOMB_EXPL3 + {SPR_BARX, 2|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_FBOMB_EXPL5}, // S_FBOMB_EXPL4 + {SPR_BARX, 3|FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_FBOMB_EXPL6}, // S_FBOMB_EXPL5 + {SPR_NULL, 0, 2*TICRATE, {NULL}, 0, 0, S_NULL}, // S_FBOMB_EXPL6 + {SPR_BARD, 0|FF_TRANS90, 2, {NULL}, 0, 0, S_TNTDUST_2}, // S_TNTDUST_1 + {SPR_BARD, 0|FF_TRANS30, 2*TICRATE, {A_SetRandomTics}, 2, TICRATE, S_TNTDUST_3}, // S_TNTDUST_2 + {SPR_BARD, 0|FF_TRANS40, 10, {NULL}, 0, 0, S_TNTDUST_4}, // S_TNTDUST_3 + {SPR_BARD, 0|FF_TRANS50, 10, {NULL}, 0, 0, S_TNTDUST_5}, // S_TNTDUST_4 + {SPR_BARD, 0|FF_TRANS60, 10, {NULL}, 0, 0, S_TNTDUST_6}, // S_TNTDUST_5 + {SPR_BARD, 0|FF_TRANS70, 10, {NULL}, 0, 0, S_TNTDUST_7}, // S_TNTDUST_6 + {SPR_BARD, 0|FF_TRANS80, 10, {NULL}, 0, 0, S_TNTDUST_8}, // S_TNTDUST_7 + {SPR_BARD, 0|FF_TRANS90, 10, {NULL}, 0, 0, S_NULL}, // S_TNTDUST_8 {SPR_FSGN, 0|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_FSGNA {SPR_FSGN, 1|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_FSGNB {SPR_FSGN, 2|FF_PAPERSPRITE, -1, {NULL}, 0, 0, S_NULL}, // S_FSGNC @@ -5398,7 +5414,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = sfx_None, // painsound S_NULL, // meleestate S_NULL, // missilestate - S_NULL, //S_TNTBARREL_EXPL1, // deathstate + S_FBOMB_EXPL1, // deathstate S_NULL, // xdeathstate sfx_s3k4e, // deathsound 20*FRACUNIT, // speed @@ -5412,6 +5428,32 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL // raisestate }, + { // MT_TNTDUST + -1, // doomednum + S_TNTDUST_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_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 20*FRACUNIT, // speed + 16*FRACUNIT, // radius + 32*FRACUNIT, // height + 0, // display offset + 100, // mass + 0, // damage + sfx_None, // activesound + MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOCLIP|MF_SCENERY, // flags + S_NULL // raisestate + }, { // MT_FSGNA -1, // doomednum S_FSGNA, // spawnstate diff --git a/src/info.h b/src/info.h index ad8d138e6..fbe8ed8d7 100644 --- a/src/info.h +++ b/src/info.h @@ -321,6 +321,8 @@ typedef enum sprite SPR_FANG, // replaces EGGQ SPR_FBOM, SPR_FSGN, + SPR_BARX, // bomb explosion (also used by barrel) + SPR_BARD, // bomb dust (also used by barrel) // Boss 6 (Red Volcano) SPR_EGGR, @@ -1531,6 +1533,20 @@ typedef enum state S_FBOMB1, S_FBOMB2, + S_FBOMB_EXPL1, + S_FBOMB_EXPL2, + S_FBOMB_EXPL3, + S_FBOMB_EXPL4, + S_FBOMB_EXPL5, + S_FBOMB_EXPL6, + S_TNTDUST_1, + S_TNTDUST_2, + S_TNTDUST_3, + S_TNTDUST_4, + S_TNTDUST_5, + S_TNTDUST_6, + S_TNTDUST_7, + S_TNTDUST_8, S_FSGNA, S_FSGNB, S_FSGNC, @@ -3858,6 +3874,7 @@ typedef enum mobj_type // Boss 5 MT_FANG, MT_FBOMB, + MT_TNTDUST, // also used by barrel MT_FSGNA, MT_FSGNB, MT_FANGWAYPOINT,