mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2025-02-23 20:31:23 +00:00
Addressed some of Chrome's thoughts
- Don't drag - Shield isn't visible to anyone but yourself - Projectile is twice as heavy
This commit is contained in:
parent
001d46873d
commit
d3913a72df
2 changed files with 49 additions and 32 deletions
66
src/k_kart.c
66
src/k_kart.c
|
@ -2402,7 +2402,7 @@ static mobj_t *K_FindLastTrailMobj(player_t *player)
|
||||||
return trail;
|
return trail;
|
||||||
}
|
}
|
||||||
|
|
||||||
static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t mapthing, INT32 defaultDir, boolean minethrow)
|
static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t mapthing, INT32 defaultDir, INT32 altthrow)
|
||||||
{
|
{
|
||||||
mobj_t *mo;
|
mobj_t *mo;
|
||||||
INT32 dir, PROJSPEED;
|
INT32 dir, PROJSPEED;
|
||||||
|
@ -2427,15 +2427,27 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (minethrow)
|
if (altthrow)
|
||||||
|
{
|
||||||
|
if (altthrow == 2) // Kitchen sink throwing
|
||||||
|
{
|
||||||
|
if (player->kartstuff[k_throwdir] == 1)
|
||||||
|
dir = 3;
|
||||||
|
else if (player->kartstuff[k_throwdir] == -1)
|
||||||
|
dir = 1;
|
||||||
|
else
|
||||||
|
dir = 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
if (player->kartstuff[k_throwdir] == 1)
|
if (player->kartstuff[k_throwdir] == 1)
|
||||||
dir = 2;
|
dir = 2;
|
||||||
else if (player->kartstuff[k_throwdir] == -1 && mapthing != MT_SINK)
|
else if (player->kartstuff[k_throwdir] == -1)
|
||||||
dir = -1;
|
dir = -1;
|
||||||
else
|
else
|
||||||
dir = 1;
|
dir = 1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (player->kartstuff[k_throwdir] != 0)
|
if (player->kartstuff[k_throwdir] != 0)
|
||||||
|
@ -2485,7 +2497,7 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map
|
||||||
{
|
{
|
||||||
player->kartstuff[k_bananadrag] = 0; // RESET timer, for multiple bananas
|
player->kartstuff[k_bananadrag] = 0; // RESET timer, for multiple bananas
|
||||||
|
|
||||||
if (dir == 1 || dir == 2)
|
if (dir > 0)
|
||||||
{
|
{
|
||||||
// Shoot forward
|
// Shoot forward
|
||||||
mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z + player->mo->height/2, mapthing);
|
mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z + player->mo->height/2, mapthing);
|
||||||
|
@ -2498,15 +2510,10 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map
|
||||||
if (mo)
|
if (mo)
|
||||||
{
|
{
|
||||||
angle_t fa = player->mo->angle>>ANGLETOFINESHIFT;
|
angle_t fa = player->mo->angle>>ANGLETOFINESHIFT;
|
||||||
INT32 HEIGHT;
|
INT32 HEIGHT = (20 + (dir*10))*(mapheaderinfo[gamemap-1]->mobj_scale) + player->mo->momz;
|
||||||
|
|
||||||
if (dir == 2)
|
mo->momx = player->mo->momx + FixedMul(FINECOSINE(fa), (altthrow == 2 ? 2*PROJSPEED/3 : PROJSPEED));
|
||||||
HEIGHT = 40*(mapheaderinfo[gamemap-1]->mobj_scale) + player->mo->momz;
|
mo->momy = player->mo->momy + FixedMul(FINESINE(fa), (altthrow == 2 ? 2*PROJSPEED/3 : PROJSPEED));
|
||||||
else
|
|
||||||
HEIGHT = 30*(mapheaderinfo[gamemap-1]->mobj_scale) + player->mo->momz;
|
|
||||||
|
|
||||||
mo->momx = player->mo->momx + FixedMul(FINECOSINE(fa), PROJSPEED);
|
|
||||||
mo->momy = player->mo->momy + FixedMul(FINESINE(fa), PROJSPEED);
|
|
||||||
mo->momz = P_MobjFlip(player->mo) * HEIGHT;
|
mo->momz = P_MobjFlip(player->mo) * HEIGHT;
|
||||||
|
|
||||||
if (player->mo->eflags & MFE_VERTICALFLIP)
|
if (player->mo->eflags & MFE_VERTICALFLIP)
|
||||||
|
@ -2991,7 +2998,8 @@ static void K_MoveHeldObjects(player_t *player)
|
||||||
mobj_t *cur = player->mo->hnext;
|
mobj_t *cur = player->mo->hnext;
|
||||||
mobj_t *targ = player->mo;
|
mobj_t *targ = player->mo;
|
||||||
|
|
||||||
if (P_IsObjectOnGround(player->mo) && player->speed > 0)
|
if (P_IsObjectOnGround(player->mo) && player->speed > 0
|
||||||
|
&& player->mo->hnext->type != MT_SINK_SHIELD) // Sink ignores debuff, and is only visible to the owner. More of a HUD indicator than an actual shield.
|
||||||
{
|
{
|
||||||
player->kartstuff[k_bananadrag]++;
|
player->kartstuff[k_bananadrag]++;
|
||||||
if (player->kartstuff[k_bananadrag] > TICRATE)
|
if (player->kartstuff[k_bananadrag] > TICRATE)
|
||||||
|
@ -3006,14 +3014,19 @@ static void K_MoveHeldObjects(player_t *player)
|
||||||
{
|
{
|
||||||
const fixed_t radius = FixedHypot(targ->radius, targ->radius) + FixedHypot(cur->radius, cur->radius);
|
const fixed_t radius = FixedHypot(targ->radius, targ->radius) + FixedHypot(cur->radius, cur->radius);
|
||||||
angle_t ang;
|
angle_t ang;
|
||||||
fixed_t targx;
|
fixed_t targx, targy, targz;
|
||||||
fixed_t targy;
|
fixed_t speed, dist;
|
||||||
fixed_t targz;
|
|
||||||
fixed_t speed;
|
|
||||||
fixed_t dist;
|
|
||||||
|
|
||||||
cur->flags &= ~MF_NOCLIPTHING;
|
cur->flags &= ~MF_NOCLIPTHING;
|
||||||
|
|
||||||
|
if (cur->type == MT_SINK_SHIELD)
|
||||||
|
{
|
||||||
|
if (P_IsLocalPlayer(player))
|
||||||
|
cur->flags2 &= ~MF2_DONTDRAW;
|
||||||
|
else
|
||||||
|
cur->flags2 |= MF2_DONTDRAW;
|
||||||
|
}
|
||||||
|
|
||||||
if (!cur->health)
|
if (!cur->health)
|
||||||
{
|
{
|
||||||
cur = cur->hnext;
|
cur = cur->hnext;
|
||||||
|
@ -3915,7 +3928,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
// Eggman Monitor throwing
|
// Eggman Monitor throwing
|
||||||
else if (ATTACK_IS_DOWN && player->kartstuff[k_eggmanheld])
|
else if (ATTACK_IS_DOWN && player->kartstuff[k_eggmanheld])
|
||||||
{
|
{
|
||||||
K_ThrowKartItem(player, false, MT_FAKEITEM, -1, false);
|
K_ThrowKartItem(player, false, MT_FAKEITEM, -1, 0);
|
||||||
K_PlayTauntSound(player->mo);
|
K_PlayTauntSound(player->mo);
|
||||||
player->kartstuff[k_eggmanheld] = 0;
|
player->kartstuff[k_eggmanheld] = 0;
|
||||||
K_CleanHnextList(player->mo);
|
K_CleanHnextList(player->mo);
|
||||||
|
@ -4002,7 +4015,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
}
|
}
|
||||||
else if (ATTACK_IS_DOWN && player->kartstuff[k_itemheld]) // Banana x3 thrown
|
else if (ATTACK_IS_DOWN && player->kartstuff[k_itemheld]) // Banana x3 thrown
|
||||||
{
|
{
|
||||||
K_ThrowKartItem(player, false, MT_BANANA, -1, false);
|
K_ThrowKartItem(player, false, MT_BANANA, -1, 0);
|
||||||
K_PlayTauntSound(player->mo);
|
K_PlayTauntSound(player->mo);
|
||||||
player->kartstuff[k_itemamount]--;
|
player->kartstuff[k_itemamount]--;
|
||||||
K_UpdateHnextList(player);
|
K_UpdateHnextList(player);
|
||||||
|
@ -4062,7 +4075,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
}
|
}
|
||||||
else if (ATTACK_IS_DOWN && player->kartstuff[k_itemheld]) // Orbinaut x3 thrown
|
else if (ATTACK_IS_DOWN && player->kartstuff[k_itemheld]) // Orbinaut x3 thrown
|
||||||
{
|
{
|
||||||
K_ThrowKartItem(player, true, MT_ORBINAUT, 1, false);
|
K_ThrowKartItem(player, true, MT_ORBINAUT, 1, 0);
|
||||||
K_PlayTauntSound(player->mo);
|
K_PlayTauntSound(player->mo);
|
||||||
player->kartstuff[k_itemamount]--;
|
player->kartstuff[k_itemamount]--;
|
||||||
K_UpdateHnextList(player);
|
K_UpdateHnextList(player);
|
||||||
|
@ -4103,9 +4116,9 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
else if (ATTACK_IS_DOWN && HOLDING_ITEM && player->kartstuff[k_itemheld]) // Jawz thrown
|
else if (ATTACK_IS_DOWN && HOLDING_ITEM && player->kartstuff[k_itemheld]) // Jawz thrown
|
||||||
{
|
{
|
||||||
if (player->kartstuff[k_throwdir] == 1 || player->kartstuff[k_throwdir] == 0)
|
if (player->kartstuff[k_throwdir] == 1 || player->kartstuff[k_throwdir] == 0)
|
||||||
K_ThrowKartItem(player, true, MT_JAWZ, 1, false);
|
K_ThrowKartItem(player, true, MT_JAWZ, 1, 0);
|
||||||
else if (player->kartstuff[k_throwdir] == -1) // Throwing backward gives you a dud that doesn't home in
|
else if (player->kartstuff[k_throwdir] == -1) // Throwing backward gives you a dud that doesn't home in
|
||||||
K_ThrowKartItem(player, true, MT_JAWZ_DUD, -1, false);
|
K_ThrowKartItem(player, true, MT_JAWZ_DUD, -1, 0);
|
||||||
K_PlayTauntSound(player->mo);
|
K_PlayTauntSound(player->mo);
|
||||||
player->kartstuff[k_itemamount]--;
|
player->kartstuff[k_itemamount]--;
|
||||||
K_UpdateHnextList(player);
|
K_UpdateHnextList(player);
|
||||||
|
@ -4130,7 +4143,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
}
|
}
|
||||||
else if (ATTACK_IS_DOWN && player->kartstuff[k_itemheld])
|
else if (ATTACK_IS_DOWN && player->kartstuff[k_itemheld])
|
||||||
{
|
{
|
||||||
K_ThrowKartItem(player, false, MT_SSMINE, 1, true);
|
K_ThrowKartItem(player, false, MT_SSMINE, 1, 1);
|
||||||
K_PlayTauntSound(player->mo);
|
K_PlayTauntSound(player->mo);
|
||||||
player->kartstuff[k_itemamount]--;
|
player->kartstuff[k_itemamount]--;
|
||||||
player->kartstuff[k_itemheld] = 0;
|
player->kartstuff[k_itemheld] = 0;
|
||||||
|
@ -4141,7 +4154,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO)
|
if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO)
|
||||||
{
|
{
|
||||||
player->kartstuff[k_itemamount]--;
|
player->kartstuff[k_itemamount]--;
|
||||||
K_ThrowKartItem(player, true, MT_BALLHOG, 1, false);
|
K_ThrowKartItem(player, true, MT_BALLHOG, 1, 0);
|
||||||
S_StartSound(player->mo, sfx_mario7);
|
S_StartSound(player->mo, sfx_mario7);
|
||||||
K_PlayTauntSound(player->mo);
|
K_PlayTauntSound(player->mo);
|
||||||
}
|
}
|
||||||
|
@ -4243,6 +4256,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
{
|
{
|
||||||
mobj_t *mo;
|
mobj_t *mo;
|
||||||
player->kartstuff[k_itemheld] = 1;
|
player->kartstuff[k_itemheld] = 1;
|
||||||
|
if (P_IsLocalPlayer(player))
|
||||||
S_StartSound(player->mo, sfx_s254);
|
S_StartSound(player->mo, sfx_s254);
|
||||||
mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_SINK_SHIELD);
|
mo = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_SINK_SHIELD);
|
||||||
if (mo)
|
if (mo)
|
||||||
|
@ -4257,7 +4271,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
||||||
}
|
}
|
||||||
else if (ATTACK_IS_DOWN && HOLDING_ITEM && player->kartstuff[k_itemheld]) // Sink thrown
|
else if (ATTACK_IS_DOWN && HOLDING_ITEM && player->kartstuff[k_itemheld]) // Sink thrown
|
||||||
{
|
{
|
||||||
K_ThrowKartItem(player, false, MT_SINK, 1, true);
|
K_ThrowKartItem(player, false, MT_SINK, 1, 2);
|
||||||
K_PlayTauntSound(player->mo);
|
K_PlayTauntSound(player->mo);
|
||||||
player->kartstuff[k_itemamount]--;
|
player->kartstuff[k_itemamount]--;
|
||||||
player->kartstuff[k_itemheld] = 0;
|
player->kartstuff[k_itemheld] = 0;
|
||||||
|
|
|
@ -1404,8 +1404,11 @@ fixed_t P_GetMobjGravity(mobj_t *mo)
|
||||||
case MT_BANANA:
|
case MT_BANANA:
|
||||||
case MT_FAKEITEM:
|
case MT_FAKEITEM:
|
||||||
case MT_SSMINE:
|
case MT_SSMINE:
|
||||||
case MT_SINK:
|
|
||||||
gravityadd = FixedMul(gravityadd, 5*FRACUNIT/2);
|
gravityadd = FixedMul(gravityadd, 5*FRACUNIT/2);
|
||||||
|
break;
|
||||||
|
case MT_SINK:
|
||||||
|
gravityadd = FixedMul(gravityadd, 5*FRACUNIT); // Double gravity
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue