From 8dbac697cad072b0d62a60068a737ec055dd2b95 Mon Sep 17 00:00:00 2001 From: SteelT Date: Thu, 3 Nov 2022 22:07:09 -0400 Subject: [PATCH 1/3] Add backdrop for paper items Capsules are unaffected as it has it's own object that shares the sprite of the items. --- src/deh_tables.c | 1 + src/info.c | 2 ++ src/info.h | 2 ++ src/k_kart.c | 7 ++++++- 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/deh_tables.c b/src/deh_tables.c index 2f68edf2c..383823833 100644 --- a/src/deh_tables.c +++ b/src/deh_tables.c @@ -3271,6 +3271,7 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi "S_ITEM_DEBRIS_CLOUD_SPAWNER2", "S_ITEMICON", + "S_ITEMBACKDROP", // Item capsules "S_ITEMCAPSULE", diff --git a/src/info.c b/src/info.c index b1f4bc1be..266787230 100644 --- a/src/info.c +++ b/src/info.c @@ -531,6 +531,7 @@ char sprnames[NUMSPRITES + 1][5] = "SBOX", // Sphere Box (for Battle) "RPOP", // Random Item Box Pop "ITRI", // Item Box Debris + "ITPA", // Paper item backdrop "SGNS", // Signpost sparkle "FAST", // Speed boost trail "DSHR", // Speed boost dust release @@ -3879,6 +3880,7 @@ state_t states[NUMSTATES] = {SPR_NULL, 0, 7, {A_SpawnItemDebrisCloud}, 20, 0, S_ITEM_DEBRIS_CLOUD_SPAWNER1}, // S_ITEM_DEBRIS_CLOUD_SPAWNER2 {SPR_NULL, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_ITEMICON + {SPR_ITPA, FF_FULLBRIGHT, -1, {NULL}, 1, 0, S_NULL}, // S_ITEMBACKDROP {SPR_ICAP, FF_ADD|0, -1, {NULL}, 0, 0, S_NULL}, // S_ITEMCAPSULE {SPR_ICAP, FF_PAPERSPRITE|1, -1, {NULL}, 0, 0, S_NULL}, // S_ITEMCAPSULE_TOP_SIDE diff --git a/src/info.h b/src/info.h index 176705a41..408d85832 100644 --- a/src/info.h +++ b/src/info.h @@ -1077,6 +1077,7 @@ typedef enum sprite SPR_SBOX, // Sphere Box (for Battle) SPR_RPOP, // Random Item Box Pop SPR_ITRI, // Item Box Debris + SPR_ITPA, // Paper item backdrop SPR_SGNS, // Signpost sparkle SPR_FAST, // Speed boost trail SPR_DSHR, // Speed boost dust release @@ -4282,6 +4283,7 @@ typedef enum state S_ITEM_DEBRIS_CLOUD_SPAWNER2, S_ITEMICON, + S_ITEMBACKDROP, // Item capsules S_ITEMCAPSULE, diff --git a/src/k_kart.c b/src/k_kart.c index dff8c406a..d41851144 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -6924,9 +6924,14 @@ void K_DropHnextList(player_t *player, boolean keepshields) mobj_t *K_CreatePaperItem(fixed_t x, fixed_t y, fixed_t z, angle_t angle, SINT8 flip, UINT8 type, UINT8 amount) { mobj_t *drop = P_SpawnMobj(x, y, z, MT_FLOATINGITEM); + mobj_t *backdrop = P_SpawnMobjFromMobj(drop, 0, 0, 0, MT_OVERLAY); + + P_SetTarget(&backdrop->target, drop); + P_SetMobjState(backdrop, S_ITEMBACKDROP); + P_SetScale(drop, drop->scale>>4); drop->destscale = (3*drop->destscale)/2; - + drop->angle = angle; P_Thrust(drop, FixedAngle(P_RandomFixed(PR_ITEM_ROULETTE) * 180) + angle, From 701b345f3981d957596d89c0267e4c4d198eb4cf Mon Sep 17 00:00:00 2001 From: SteelT Date: Thu, 3 Nov 2022 23:11:51 -0400 Subject: [PATCH 2/3] Fix sprite clipping in OpenGL --- src/k_kart.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/k_kart.c b/src/k_kart.c index d41851144..583639b9c 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -7007,6 +7007,9 @@ mobj_t *K_CreatePaperItem(fixed_t x, fixed_t y, fixed_t z, angle_t angle, SINT8 } drop->flags |= MF_NOCLIPTHING; + backdrop->dispoffset = 1; + P_SetTarget(&backdrop->tracer, drop); + backdrop->flags2 |= MF2_LINKDRAW; return drop; } From 84a5e28302529de30be4fc242f0dc7135280f28e Mon Sep 17 00:00:00 2001 From: SteelT Date: Fri, 4 Nov 2022 11:19:27 -0400 Subject: [PATCH 3/3] Don't match slope pitch and roll for MT_FLOATINGITEM (per VC discussion) --- src/p_mobj.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/p_mobj.c b/src/p_mobj.c index bdf0064f0..76c1de31a 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -6786,6 +6786,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj) break; case MT_FLOATINGITEM: { + mobj->pitch = mobj->roll = 0; if (mobj->flags & MF_NOCLIPTHING) { if (P_CheckDeathPitCollide(mobj))