From cac02bb01ab7d8913e5a031c996f46c7b96b5128 Mon Sep 17 00:00:00 2001 From: AJ Martinez Date: Fri, 19 May 2023 22:51:06 -0700 Subject: [PATCH] Emerald fixups --- src/k_battle.c | 5 +++-- src/k_kart.c | 2 +- src/objects/monitor.c | 14 +++++++++++++- src/p_inter.c | 5 ++++- 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/k_battle.c b/src/k_battle.c index 7d2ad8039..d7997a809 100644 --- a/src/k_battle.c +++ b/src/k_battle.c @@ -197,9 +197,9 @@ mobj_t *K_SpawnChaosEmerald(fixed_t x, fixed_t y, fixed_t z, angle_t angle, SINT P_Thrust(emerald, FixedAngle(P_RandomFixed(PR_ITEM_ROULETTE) * 180) + angle, - 24 * mapobjectscale); + 36 * mapobjectscale); - emerald->momz = flip * 24 * mapobjectscale; + emerald->momz = flip * 36 * mapobjectscale; if (emerald->eflags & MFE_UNDERWATER) emerald->momz = (117 * emerald->momz) / 200; @@ -275,6 +275,7 @@ void K_DropEmeraldsFromPlayer(player_t *player, UINT32 emeraldType) P_SetTarget(&emerald->target, player->mo); player->emeralds &= ~emeraldFlag; + break; // Drop only one emerald. Emerald wins are hard enough! } } } diff --git a/src/k_kart.c b/src/k_kart.c index a1fba70ab..075a57dbc 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -11923,7 +11923,7 @@ UINT32 K_PointLimitForGametype(void) { if (D_IsPlayerHumanAndGaming(i)) { - ptsCap += 3; + ptsCap += 5; } } } diff --git a/src/objects/monitor.c b/src/objects/monitor.c index fccb1a0f9..683ad11de 100644 --- a/src/objects/monitor.c +++ b/src/objects/monitor.c @@ -440,7 +440,13 @@ adjust_monitor_drop ( mobj_t * monitor, mobj_t * drop) { - P_InstaThrust(drop, drop->angle, 4*mapobjectscale); + if (drop->type == MT_EMERALD) + { + drop->momz = 0; + drop->angle = 0; + } + + P_InstaThrust(drop, drop->angle, 8*mapobjectscale); drop->momz *= 8; @@ -616,9 +622,15 @@ Obj_MonitorGetDamage else { if (inflictor->type == MT_INSTAWHIP) + { damage = FRACUNIT/3; + if (K_IsPlayerWanted(inflictor->target->player)) + damage = FRACUNIT; // Emerald hunting time! + } else + { damage = FRACUNIT; // kill instantly + } } return damage; diff --git a/src/p_inter.c b/src/p_inter.c index b598e9365..21dcd9779 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -2258,7 +2258,10 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da if (clash) { player->spheres = max(player->spheres - 10, 0); - K_DoPowerClash(target, inflictor); + if (inflictor) + K_DoPowerClash(target, inflictor); + else if (source) + K_DoPowerClash(target, source); } // Full invulnerability