Emerald fixups

This commit is contained in:
AJ Martinez 2023-05-19 22:51:06 -07:00
parent bfcc453d56
commit cac02bb01a
4 changed files with 21 additions and 5 deletions

View file

@ -197,9 +197,9 @@ mobj_t *K_SpawnChaosEmerald(fixed_t x, fixed_t y, fixed_t z, angle_t angle, SINT
P_Thrust(emerald, P_Thrust(emerald,
FixedAngle(P_RandomFixed(PR_ITEM_ROULETTE) * 180) + angle, 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) if (emerald->eflags & MFE_UNDERWATER)
emerald->momz = (117 * emerald->momz) / 200; emerald->momz = (117 * emerald->momz) / 200;
@ -275,6 +275,7 @@ void K_DropEmeraldsFromPlayer(player_t *player, UINT32 emeraldType)
P_SetTarget(&emerald->target, player->mo); P_SetTarget(&emerald->target, player->mo);
player->emeralds &= ~emeraldFlag; player->emeralds &= ~emeraldFlag;
break; // Drop only one emerald. Emerald wins are hard enough!
} }
} }
} }

View file

@ -11923,7 +11923,7 @@ UINT32 K_PointLimitForGametype(void)
{ {
if (D_IsPlayerHumanAndGaming(i)) if (D_IsPlayerHumanAndGaming(i))
{ {
ptsCap += 3; ptsCap += 5;
} }
} }
} }

View file

@ -440,7 +440,13 @@ adjust_monitor_drop
( mobj_t * monitor, ( mobj_t * monitor,
mobj_t * drop) 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; drop->momz *= 8;
@ -616,9 +622,15 @@ Obj_MonitorGetDamage
else else
{ {
if (inflictor->type == MT_INSTAWHIP) if (inflictor->type == MT_INSTAWHIP)
{
damage = FRACUNIT/3; damage = FRACUNIT/3;
if (K_IsPlayerWanted(inflictor->target->player))
damage = FRACUNIT; // Emerald hunting time!
}
else else
{
damage = FRACUNIT; // kill instantly damage = FRACUNIT; // kill instantly
}
} }
return damage; return damage;

View file

@ -2258,7 +2258,10 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
if (clash) if (clash)
{ {
player->spheres = max(player->spheres - 10, 0); 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 // Full invulnerability