mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-27 04:21:47 +00:00
Hardcode DLZ Hover thingies + rocket fixes
This commit is contained in:
parent
a565d923c0
commit
ca90d27e30
6 changed files with 98 additions and 6 deletions
|
|
@ -248,7 +248,7 @@ void Obj_EggBallSpawnerThink(mobj_t *mo);
|
||||||
void Obj_EggBallThink(mobj_t *mo);
|
void Obj_EggBallThink(mobj_t *mo);
|
||||||
|
|
||||||
/* DLZ Rockets */
|
/* DLZ Rockets */
|
||||||
void Obj_DLZRocketSpawn(mobj_t *mo);
|
void Obj_DLZRocketThink(mobj_t *mo);
|
||||||
void Obj_DLZRocketSpecial(mobj_t *mo, player_t *p); // touch activation
|
void Obj_DLZRocketSpecial(mobj_t *mo, player_t *p); // touch activation
|
||||||
void Obj_playerDLZRocket(player_t *p); // player looping thinker
|
void Obj_playerDLZRocket(player_t *p); // player looping thinker
|
||||||
void Obj_DLZRocketDismount(player_t *p); // used in p_map.c to get off the rocket when we cross transfer lines.
|
void Obj_DLZRocketDismount(player_t *p); // used in p_map.c to get off the rocket when we cross transfer lines.
|
||||||
|
|
@ -258,6 +258,10 @@ void Obj_DLZSeasawSpawn(mobj_t *mo);
|
||||||
void Obj_DLZSeasawThink(mobj_t *mo);
|
void Obj_DLZSeasawThink(mobj_t *mo);
|
||||||
void Obj_DLZSeasawCollide(mobj_t *mo, mobj_t *mo2);
|
void Obj_DLZSeasawCollide(mobj_t *mo, mobj_t *mo2);
|
||||||
|
|
||||||
|
/* DLZ Hover */
|
||||||
|
void Obj_DLZHoverSpawn(mobj_t *mo);
|
||||||
|
void Obj_DLZHoverCollide(mobj_t *mo, mobj_t *mo2);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} // extern "C"
|
} // extern "C"
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -34,5 +34,6 @@ target_sources(SRB2SDL2 PRIVATE
|
||||||
eggball.c
|
eggball.c
|
||||||
dlzrocket.c
|
dlzrocket.c
|
||||||
dlzseasaw.c
|
dlzseasaw.c
|
||||||
|
dlzothers.c
|
||||||
shadow.cpp
|
shadow.cpp
|
||||||
)
|
)
|
||||||
|
|
|
||||||
69
src/objects/dlzothers.c
Normal file
69
src/objects/dlzothers.c
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
// DR. ROBOTNIK'S RING RACERS
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Copyright (C) 2022 by Sally "TehRealSalt" Cochenour
|
||||||
|
// Copyright (C) 2022 by Kart Krew
|
||||||
|
//
|
||||||
|
// This program is free software distributed under the
|
||||||
|
// terms of the GNU General Public License, version 2.
|
||||||
|
// See the 'LICENSE' file for more details.
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
/// \file dlzothers.c
|
||||||
|
/// \brief Dead Line Zone other objects (Hover + Ring Vaccum), they're small enough that we can just lump em together instead of having 2 more small files...
|
||||||
|
|
||||||
|
#include "../doomdef.h"
|
||||||
|
#include "../doomstat.h"
|
||||||
|
#include "../info.h"
|
||||||
|
#include "../k_kart.h"
|
||||||
|
#include "../k_objects.h"
|
||||||
|
#include "../m_random.h"
|
||||||
|
#include "../p_local.h"
|
||||||
|
#include "../r_main.h"
|
||||||
|
#include "../s_sound.h"
|
||||||
|
#include "../g_game.h"
|
||||||
|
#include "../z_zone.h"
|
||||||
|
#include "../k_waypoint.h"
|
||||||
|
#include "../k_respawn.h"
|
||||||
|
#include "../k_collide.h"
|
||||||
|
|
||||||
|
// Hover:
|
||||||
|
void Obj_DLZHoverSpawn(mobj_t *mo)
|
||||||
|
{
|
||||||
|
P_SetScale(mo, mapobjectscale*4);
|
||||||
|
mo->destscale = mapobjectscale*4;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Obj_DLZHoverCollide(mobj_t *mo, mobj_t *mo2)
|
||||||
|
{
|
||||||
|
player_t *p = mo->player;
|
||||||
|
|
||||||
|
if (!p || p->lasthover == leveltime)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (abs(mo->z - mo2->z) < 512*mapobjectscale)
|
||||||
|
{
|
||||||
|
// momz adjust
|
||||||
|
if (mo2->eflags & MFE_VERTICALFLIP)
|
||||||
|
{
|
||||||
|
if (mo->momz > -16*mapobjectscale)
|
||||||
|
{
|
||||||
|
mo->momz -= 8*mapobjectscale;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (mo->momz < 16*mapobjectscale)
|
||||||
|
{
|
||||||
|
mo->momz += 8*mapobjectscale;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// speed adjust
|
||||||
|
if (p->speed > K_GetKartSpeed(p, false, false))
|
||||||
|
P_Thrust(mo, R_PointToAngle2(0, 0, -mo->momx, -mo->momy), mapobjectscale/16);
|
||||||
|
|
||||||
|
if (!S_SoundPlaying(mo, sfx_s3kc6s))
|
||||||
|
S_StartSound(mo, sfx_s3kc6s);
|
||||||
|
|
||||||
|
p->lasthover = leveltime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -31,11 +31,14 @@
|
||||||
#define DLZROCKETVERTSPEED (ANG1)
|
#define DLZROCKETVERTSPEED (ANG1)
|
||||||
#define DLZROCKETMAXVERT (ANG1*60)
|
#define DLZROCKETMAXVERT (ANG1*60)
|
||||||
|
|
||||||
void Obj_DLZRocketSpawn(mobj_t *mo)
|
void Obj_DLZRocketThink(mobj_t *mo)
|
||||||
{
|
{
|
||||||
UINT8 i;
|
UINT8 i;
|
||||||
angle_t an = mo->angle + ANGLE_90;
|
angle_t an = mo->angle + ANGLE_90;
|
||||||
|
|
||||||
|
if (mo->extravalue1)
|
||||||
|
return;
|
||||||
|
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
fixed_t x = mo->x + FixedMul(mapobjectscale, DLZROCKETDIST*FINECOSINE(an>>ANGLETOFINESHIFT));
|
fixed_t x = mo->x + FixedMul(mapobjectscale, DLZROCKETDIST*FINECOSINE(an>>ANGLETOFINESHIFT));
|
||||||
|
|
@ -44,11 +47,14 @@ void Obj_DLZRocketSpawn(mobj_t *mo)
|
||||||
mobj_t *r = P_SpawnMobj(x, y, mo->z, MT_THOK);
|
mobj_t *r = P_SpawnMobj(x, y, mo->z, MT_THOK);
|
||||||
P_SetMobjState(r, i ? S_DLZROCKET_L : S_DLZROCKET_R);
|
P_SetMobjState(r, i ? S_DLZROCKET_L : S_DLZROCKET_R);
|
||||||
P_SetScale(r, (mapobjectscale*3)/2);
|
P_SetScale(r, (mapobjectscale*3)/2);
|
||||||
r->angle = mo->angle;
|
r->destscale = (mapobjectscale*3)/2;
|
||||||
|
r->angle = mo->spawnpoint->angle*ANG1;
|
||||||
r->tics = -1;
|
r->tics = -1;
|
||||||
|
|
||||||
an += ANGLE_180;
|
an += ANGLE_180;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mo->extravalue1 = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Obj_DLZRocketDismount(player_t *p)
|
void Obj_DLZRocketDismount(player_t *p)
|
||||||
|
|
|
||||||
|
|
@ -750,6 +750,14 @@ static BlockItReturn_t PIT_CheckThing(mobj_t *thing)
|
||||||
return BMIT_CONTINUE;
|
return BMIT_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (thing->type == MT_DLZ_HOVER)
|
||||||
|
{
|
||||||
|
if (tm.thing->type == MT_PLAYER)
|
||||||
|
Obj_DLZHoverCollide(tm.thing, thing);
|
||||||
|
|
||||||
|
return BMIT_CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
if (tm.thing->type == MT_INSTAWHIP)
|
if (tm.thing->type == MT_INSTAWHIP)
|
||||||
{
|
{
|
||||||
if (tm.thing->z > thing->z + thing->height)
|
if (tm.thing->z > thing->z + thing->height)
|
||||||
|
|
|
||||||
10
src/p_mobj.c
10
src/p_mobj.c
|
|
@ -9725,6 +9725,10 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
|
||||||
Obj_EggBallThink(mobj);
|
Obj_EggBallThink(mobj);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MT_DLZ_ROCKET:
|
||||||
|
Obj_DLZRocketThink(mobj);
|
||||||
|
break;
|
||||||
|
|
||||||
case MT_DLZ_SEASAW_SPAWN:
|
case MT_DLZ_SEASAW_SPAWN:
|
||||||
Obj_DLZSeasawThink(mobj);
|
Obj_DLZSeasawThink(mobj);
|
||||||
break;
|
break;
|
||||||
|
|
@ -11165,12 +11169,12 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
|
||||||
case MT_RIDEROIDNODE:
|
case MT_RIDEROIDNODE:
|
||||||
Obj_RideroidNodeSpawn(mobj);
|
Obj_RideroidNodeSpawn(mobj);
|
||||||
break;
|
break;
|
||||||
case MT_DLZ_ROCKET:
|
|
||||||
Obj_DLZRocketSpawn(mobj);
|
|
||||||
break;
|
|
||||||
case MT_DLZ_SEASAW_SPAWN:
|
case MT_DLZ_SEASAW_SPAWN:
|
||||||
Obj_DLZSeasawSpawn(mobj);
|
Obj_DLZSeasawSpawn(mobj);
|
||||||
break;
|
break;
|
||||||
|
case MT_DLZ_HOVER:
|
||||||
|
Obj_DLZHoverSpawn(mobj);
|
||||||
|
break;
|
||||||
case MT_SNEAKERPANEL:
|
case MT_SNEAKERPANEL:
|
||||||
Obj_SneakerPanelSpawn(mobj);
|
Obj_SneakerPanelSpawn(mobj);
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue