From 1cd078164860adee6826f255723228a71343d634 Mon Sep 17 00:00:00 2001 From: "James R." Date: Sun, 17 Sep 2023 20:33:10 -0700 Subject: [PATCH] Hyudoro: spawn ghost trail, colorized to owner, on return to owner --- src/objects/hyudoro.c | 48 ++++++++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/src/objects/hyudoro.c b/src/objects/hyudoro.c index 72c59f696..7dc336768 100644 --- a/src/objects/hyudoro.c +++ b/src/objects/hyudoro.c @@ -321,6 +321,8 @@ move_to_player (mobj_t *hyu) hyu->z = target->z; // stay level with target hyu->angle = angle; + + hyu->color = target->color; } static void @@ -572,6 +574,34 @@ hyudoro_hover_await_stack (mobj_t *hyu) return true; } +static void +trail_ghosts +( mobj_t * hyu, + boolean colorize) +{ + // Spawns every other frame + if (leveltime & 1) + { + return; + } + + mobj_t *ghost = P_SpawnGhostMobj(hyu); + + // Flickers every frame + ghost->extravalue1 = 1; + ghost->extravalue2 = 2; + + // copy per-splitscreen-player visibility + ghost->renderflags = + (hyu->renderflags & RF_DONTDRAW); + + ghost->colorized = colorize; + + ghost->tics = 8; + + P_SetTarget(&ghost->tracer, hyu); +} + void Obj_InitHyudoroCenter (mobj_t * center, mobj_t * master) { @@ -630,26 +660,12 @@ Obj_HyudoroThink (mobj_t *hyu) if (hyudoro_center(hyu)) project_hyudoro(hyu); - if (leveltime & 1) - { - mobj_t *ghost = P_SpawnGhostMobj(hyu); - - // Flickers every frame - ghost->extravalue1 = 1; - ghost->extravalue2 = 2; - - // copy per-splitscreen-player visibility - ghost->renderflags = - (hyu->renderflags & RF_DONTDRAW); - - ghost->tics = 8; - - P_SetTarget(&ghost->tracer, hyu); - } + trail_ghosts(hyu, false); break; case HYU_RETURN: move_to_player(hyu); + trail_ghosts(hyu, true); break; case HYU_HOVER: