diff --git a/src/info.c b/src/info.c index 1d95ad000..dd93bf376 100644 --- a/src/info.c +++ b/src/info.c @@ -24066,7 +24066,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = }, { // MT_HYUDORO - 2055, // doomednum + -1, // doomednum S_HYUDORO, // spawnstate 1000, // spawnhealth S_NULL, // seestate @@ -24093,7 +24093,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = }, { // MT_HYUDORO_CENTER - -1, // doomednum + 2055, // doomednum S_INVISIBLE, // spawnstate 1000, // spawnhealth S_NULL, // seestate diff --git a/src/k_objects.h b/src/k_objects.h index 7679db658..7351465d6 100644 --- a/src/k_objects.h +++ b/src/k_objects.h @@ -3,6 +3,7 @@ #define k_objects_H /* Hyudoro */ +void Obj_InitHyudoroCenter(mobj_t *center, mobj_t *master); void Obj_HyudoroDeploy(mobj_t *master); void Obj_HyudoroThink(mobj_t *actor); void Obj_HyudoroCenterThink(mobj_t *actor); diff --git a/src/objects/hyudoro.c b/src/objects/hyudoro.c index 0a362aa89..c1a2e60a8 100644 --- a/src/objects/hyudoro.c +++ b/src/objects/hyudoro.c @@ -388,11 +388,8 @@ hyudoro_hover_await_stack (mobj_t *hyu) } void -Obj_HyudoroDeploy (mobj_t *master) +Obj_InitHyudoroCenter (mobj_t * center, mobj_t * master) { - mobj_t *center = P_SpawnMobjFromMobj( - master, 0, 0, 0, MT_HYUDORO_CENTER); - mobj_t *hyu = P_SpawnMobjFromMobj( center, 0, 0, 0, MT_HYUDORO); @@ -405,20 +402,30 @@ Obj_HyudoroDeploy (mobj_t *master) center->radius = hyu->radius; - P_InitAngle(hyu, master->angle); + P_InitAngle(hyu, center->angle); P_SetTarget(&hyudoro_center(hyu), center); P_SetTarget(&hyudoro_center_master(center), master); hyudoro_mode(hyu) = HYU_PATROL; // Set splitscreen player visibility - if (master->player) + if (master && !P_MobjWasRemoved(master) && master->player) { hyu->renderflags |= RF_DONTDRAW & ~(K_GetPlayerDontDrawFlag(master->player)); } spawn_hyudoro_shadow(hyu); // this sucks btw +} + +void +Obj_HyudoroDeploy (mobj_t *master) +{ + mobj_t *center = P_SpawnMobjFromMobj( + master, 0, 0, 0, MT_HYUDORO_CENTER); + + center->angle = master->angle; + Obj_InitHyudoroCenter(center, master); S_StartSound(master, sfx_s3k92); // scary ghost noise } diff --git a/src/p_mobj.c b/src/p_mobj.c index ef97d82b6..ad280040c 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -11558,7 +11558,7 @@ static boolean P_AllowMobjSpawn(mapthing_t* mthing, mobjtype_t i) case MT_EGGMANITEM: case MT_SSMINE: case MT_LANDMINE: - case MT_HYUDORO: + case MT_HYUDORO_CENTER: case MT_DROPTARGET: { // Duel objects. @@ -12743,6 +12743,11 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj, boolean *doangle = false; break; } + case MT_HYUDORO_CENTER: + { + Obj_InitHyudoroCenter(mobj, NULL); + break; + } default: break; }