From df31c65ebbeed682126926e3abdcce63ba3455c4 Mon Sep 17 00:00:00 2001 From: Lat Date: Sat, 23 Sep 2023 16:32:32 +0200 Subject: [PATCH] Hardcode these godforsaken turbines --- src/k_kart.c | 9 +++++++++ src/k_objects.h | 6 ++++++ src/objects/CMakeLists.txt | 1 + src/p_mobj.c | 11 +++++++++++ 4 files changed, 27 insertions(+) diff --git a/src/k_kart.c b/src/k_kart.c index 01b895328..d869954b0 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -62,6 +62,7 @@ boolean K_isPlayerInSpecialState(player_t *p) { return ( p->rideroid + || p->rdnodepull || p->bungee || p->dlzrocket || p->seasaw @@ -11863,6 +11864,14 @@ void K_MoveKartPlayer(player_t *player, boolean onground) if (player->seasawcooldown && !player->seasaw) player->seasawcooldown--; + + if (player->turbine) + { + if (player->mo->tracer && !P_MobjWasRemoved(player->mo->tracer)) + Obj_playerWPZTurbine(player); + else + player->turbine--; // acts as a cooldown + } } void K_CheckSpectateStatus(boolean considermapreset) diff --git a/src/k_objects.h b/src/k_objects.h index 8d59ffeca..534e976c6 100644 --- a/src/k_objects.h +++ b/src/k_objects.h @@ -267,6 +267,12 @@ void Obj_DLZRingVaccumSpawn(mobj_t *mo); void Obj_DLZRingVaccumCollide(mobj_t *mo, mobj_t *mo2); void Obj_DLZSuckedRingThink(mobj_t *mo); +/* WPZ Turbine */ +void Obj_WPZTurbineSpawn(mobj_t *mo); +void Obj_WPZTurbineThinker(mobj_t *mo); +void Obj_playerWPZTurbine(player_t *p); +void Obj_WPZBubbleThink(mobj_t *mo); + #ifdef __cplusplus } // extern "C" #endif diff --git a/src/objects/CMakeLists.txt b/src/objects/CMakeLists.txt index 042a39f90..e27538fd2 100644 --- a/src/objects/CMakeLists.txt +++ b/src/objects/CMakeLists.txt @@ -35,5 +35,6 @@ target_sources(SRB2SDL2 PRIVATE dlzrocket.c dlzseasaw.c dlzothers.c + wpzturbine.c shadow.cpp ) diff --git a/src/p_mobj.c b/src/p_mobj.c index cd0e78087..b41a9502e 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -9736,6 +9736,14 @@ static boolean P_MobjRegularThink(mobj_t *mobj) case MT_DLZ_SUCKEDRING: Obj_DLZSuckedRingThink(mobj); break; + + case MT_WATERPALACETURBINE: + Obj_WPZTurbineThinker(mobj); + break; + + case MT_WATERPALACEBUBBLE: + Obj_WPZBubbleThink(mobj); + break; default: // check mobj against possible water content, before movement code @@ -11182,6 +11190,9 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type) case MT_DLZ_RINGVACCUM: Obj_DLZRingVaccumSpawn(mobj); break; + case MT_WATERPALACETURBINE: + Obj_WPZTurbineSpawn(mobj); + break; case MT_SNEAKERPANEL: Obj_SneakerPanelSpawn(mobj); break;