mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-27 04:21:47 +00:00
Guard break, UFO instawhip
This commit is contained in:
parent
6f02923d89
commit
9aa4a459ce
7 changed files with 27 additions and 12 deletions
|
|
@ -3950,9 +3950,9 @@ state_t states[NUMSTATES] =
|
||||||
|
|
||||||
{SPR_SLPT, FF_PAPERSPRITE|0, -1, {NULL}, 0, 0, S_NULL}, // S_SLIPTIDEZIP
|
{SPR_SLPT, FF_PAPERSPRITE|0, -1, {NULL}, 0, 0, S_NULL}, // S_SLIPTIDEZIP
|
||||||
|
|
||||||
{SPR_IWHP, FF_FLOORSPRITE|FF_ANIMATE|0, -1, {NULL}, 6, 2, S_NULL}, // S_INSTAWHIP
|
{SPR_IWHP, FF_FULLBRIGHT|FF_FLOORSPRITE|FF_ANIMATE|0, -1, {NULL}, 6, 2, S_NULL}, // S_INSTAWHIP
|
||||||
{SPR_GRNG, FF_PAPERSPRITE|0, -1, {NULL}, 0, 0, S_NULL}, // S_BLOCKRING
|
{SPR_GRNG, FF_FULLBRIGHT|FF_PAPERSPRITE|0, -1, {NULL}, 0, 0, S_NULL}, // S_BLOCKRING
|
||||||
{SPR_GBDY, FF_ANIMATE|0, -1, {NULL}, 4, 2, S_NULL}, // S_BLOCKBODY
|
{SPR_GBDY, FF_FULLBRIGHT|FF_ANIMATE|0, -1, {NULL}, 4, 2, S_NULL}, // S_BLOCKBODY
|
||||||
|
|
||||||
{SPR_SGNS, FF_ADD|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_SIGNSPARK2}, // S_SIGNSPARK1
|
{SPR_SGNS, FF_ADD|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_SIGNSPARK2}, // S_SIGNSPARK1
|
||||||
{SPR_SGNS, FF_ADD|FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_SIGNSPARK3}, // S_SIGNSPARK2
|
{SPR_SGNS, FF_ADD|FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_SIGNSPARK3}, // S_SIGNSPARK2
|
||||||
|
|
|
||||||
|
|
@ -811,7 +811,7 @@ boolean K_InstaWhipCollide(mobj_t *shield, mobj_t *victim)
|
||||||
if (victim != attacker && !P_PlayerInPain(victimPlayer) && victimPlayer->flashing == 0)
|
if (victim != attacker && !P_PlayerInPain(victimPlayer) && victimPlayer->flashing == 0)
|
||||||
{
|
{
|
||||||
// BLOW THAT SHIT THE FUCK UP with guard
|
// BLOW THAT SHIT THE FUCK UP with guard
|
||||||
if (K_PlayerEBrake(victimPlayer) && victimPlayer->spheres > 0)
|
if (K_PlayerGuard(victimPlayer))
|
||||||
//if (true)
|
//if (true)
|
||||||
{
|
{
|
||||||
victimHitlag = 2*victimHitlag;
|
victimHitlag = 2*victimHitlag;
|
||||||
|
|
@ -876,7 +876,7 @@ boolean K_InstaWhipCollide(mobj_t *shield, mobj_t *victim)
|
||||||
|| victim->type == MT_BANANA || victim->type == MT_EGGMANITEM || victim->type == MT_BALLHOG
|
|| victim->type == MT_BANANA || victim->type == MT_EGGMANITEM || victim->type == MT_BALLHOG
|
||||||
|| victim->type == MT_SSMINE || victim->type == MT_LANDMINE || victim->type == MT_SINK
|
|| victim->type == MT_SSMINE || victim->type == MT_LANDMINE || victim->type == MT_SINK
|
||||||
|| victim->type == MT_GARDENTOP || victim->type == MT_DROPTARGET || victim->type == MT_BATTLECAPSULE
|
|| victim->type == MT_GARDENTOP || victim->type == MT_DROPTARGET || victim->type == MT_BATTLECAPSULE
|
||||||
|| victim->type == MT_MONITOR)
|
|| victim->type == MT_MONITOR || victim->type == MT_SPECIAL_UFO)
|
||||||
{
|
{
|
||||||
// Monitor hack. We can hit monitors once per instawhip, no multihit shredding!
|
// Monitor hack. We can hit monitors once per instawhip, no multihit shredding!
|
||||||
// Damage values in Obj_MonitorGetDamage.
|
// Damage values in Obj_MonitorGetDamage.
|
||||||
|
|
|
||||||
20
src/k_kart.c
20
src/k_kart.c
|
|
@ -718,7 +718,7 @@ static void K_SpawnBumpForObjs(mobj_t *mobj1, mobj_t *mobj2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void K_PlayerJustBumped(player_t *player)
|
static void K_PlayerJustBumped(player_t *player, boolean guardbreak)
|
||||||
{
|
{
|
||||||
mobj_t *playerMobj = NULL;
|
mobj_t *playerMobj = NULL;
|
||||||
|
|
||||||
|
|
@ -742,6 +742,13 @@ static void K_PlayerJustBumped(player_t *player)
|
||||||
player->rmomy = playerMobj->momy - player->cmomy;
|
player->rmomy = playerMobj->momy - player->cmomy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (guardbreak && K_PlayerGuard(player))
|
||||||
|
{
|
||||||
|
S_StartSound(player->mo, sfx_s3k9e);
|
||||||
|
K_AddHitLag(player->mo, TICRATE, true);
|
||||||
|
player->instaShieldCooldown = 2*TICRATE;
|
||||||
|
}
|
||||||
|
|
||||||
player->justbumped = bumptime;
|
player->justbumped = bumptime;
|
||||||
player->spindash = 0;
|
player->spindash = 0;
|
||||||
|
|
||||||
|
|
@ -933,8 +940,8 @@ boolean K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2)
|
||||||
|
|
||||||
K_SpawnBumpForObjs(mobj1, mobj2);
|
K_SpawnBumpForObjs(mobj1, mobj2);
|
||||||
|
|
||||||
K_PlayerJustBumped(mobj1->player);
|
K_PlayerJustBumped(mobj1->player, true);
|
||||||
K_PlayerJustBumped(mobj2->player);
|
K_PlayerJustBumped(mobj2->player, true);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -1003,7 +1010,7 @@ boolean K_KartSolidBounce(mobj_t *bounceMobj, mobj_t *solidMobj)
|
||||||
bounceMobj->momz = -bounceMobj->momz;
|
bounceMobj->momz = -bounceMobj->momz;
|
||||||
|
|
||||||
K_SpawnBumpForObjs(bounceMobj, solidMobj);
|
K_SpawnBumpForObjs(bounceMobj, solidMobj);
|
||||||
K_PlayerJustBumped(bounceMobj->player);
|
K_PlayerJustBumped(bounceMobj->player, false);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -9797,6 +9804,11 @@ boolean K_PlayerEBrake(player_t *player)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean K_PlayerGuard(player_t *player)
|
||||||
|
{
|
||||||
|
return (K_PlayerEBrake(player) && player->spheres > 0 && player->instaShieldCooldown == 0);
|
||||||
|
}
|
||||||
|
|
||||||
SINT8 K_Sliptiding(player_t *player)
|
SINT8 K_Sliptiding(player_t *player)
|
||||||
{
|
{
|
||||||
if (player->mo->eflags & MFE_UNDERWATER)
|
if (player->mo->eflags & MFE_UNDERWATER)
|
||||||
|
|
|
||||||
|
|
@ -178,6 +178,7 @@ SINT8 K_GetForwardMove(player_t *player);
|
||||||
fixed_t K_GetNewSpeed(player_t *player);
|
fixed_t K_GetNewSpeed(player_t *player);
|
||||||
fixed_t K_3dKartMovement(player_t *player);
|
fixed_t K_3dKartMovement(player_t *player);
|
||||||
boolean K_PlayerEBrake(player_t *player);
|
boolean K_PlayerEBrake(player_t *player);
|
||||||
|
boolean K_PlayerGuard(player_t *player);
|
||||||
SINT8 K_Sliptiding(player_t *player);
|
SINT8 K_Sliptiding(player_t *player);
|
||||||
boolean K_FastFallBounce(player_t *player);
|
boolean K_FastFallBounce(player_t *player);
|
||||||
fixed_t K_PlayerBaseFriction(player_t *player, fixed_t original);
|
fixed_t K_PlayerBaseFriction(player_t *player, fixed_t original);
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
#include "../info.h"
|
#include "../info.h"
|
||||||
#include "../k_objects.h"
|
#include "../k_objects.h"
|
||||||
#include "../p_local.h"
|
#include "../p_local.h"
|
||||||
|
#include "../k_kart.h"
|
||||||
|
|
||||||
void Obj_BlockRingThink (mobj_t *ring)
|
void Obj_BlockRingThink (mobj_t *ring)
|
||||||
{
|
{
|
||||||
|
|
@ -34,7 +35,7 @@ void Obj_BlockRingThink (mobj_t *ring)
|
||||||
else
|
else
|
||||||
ring->renderflags |= RF_DONTDRAW;
|
ring->renderflags |= RF_DONTDRAW;
|
||||||
|
|
||||||
if (player->spheres == 0)
|
if (!K_PlayerGuard(player))
|
||||||
ring->renderflags |= RF_DONTDRAW;
|
ring->renderflags |= RF_DONTDRAW;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -69,7 +70,7 @@ void Obj_BlockBodyThink (mobj_t *body)
|
||||||
else
|
else
|
||||||
body->renderflags |= RF_DONTDRAW;
|
body->renderflags |= RF_DONTDRAW;
|
||||||
|
|
||||||
if (player->spheres == 0)
|
if (!K_PlayerGuard(player))
|
||||||
body->renderflags |= RF_DONTDRAW;
|
body->renderflags |= RF_DONTDRAW;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -670,6 +670,7 @@ static UINT8 GetUFODamage(mobj_t *inflictor, UINT8 damageType)
|
||||||
{
|
{
|
||||||
case MT_JAWZ_SHIELD:
|
case MT_JAWZ_SHIELD:
|
||||||
case MT_ORBINAUT_SHIELD:
|
case MT_ORBINAUT_SHIELD:
|
||||||
|
case MT_INSTAWHIP:
|
||||||
{
|
{
|
||||||
// Shields deal chip damage.
|
// Shields deal chip damage.
|
||||||
return 10;
|
return 10;
|
||||||
|
|
|
||||||
|
|
@ -2209,7 +2209,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
|
||||||
{
|
{
|
||||||
sfx = sfx_grownd;
|
sfx = sfx_grownd;
|
||||||
}
|
}
|
||||||
else if (player->spheres > 0 && K_PlayerEBrake(player))
|
else if (K_PlayerGuard(player))
|
||||||
{
|
{
|
||||||
sfx = sfx_s3k3a;
|
sfx = sfx_s3k3a;
|
||||||
clash = true;
|
clash = true;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue