mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Merge branch 'fix-shrink-death' into 'master'
Fix Pohbee's forgetting their owner if the player dies Closes #454 See merge request KartKrew/Kart!2071
This commit is contained in:
commit
55870bddb7
1 changed files with 14 additions and 14 deletions
|
|
@ -61,7 +61,7 @@ enum
|
|||
#define pohbee_height(o) ((o)->movefactor)
|
||||
#define pohbee_destangle(o) ((o)->movedir)
|
||||
|
||||
#define pohbee_owner(o) ((o)->target)
|
||||
#define pohbee_owner(o) ((o)->cvmem)
|
||||
#define pohbee_guns(o) ((o)->hnext)
|
||||
|
||||
#define gun_offset(o) ((o)->movecount)
|
||||
|
|
@ -80,15 +80,16 @@ enum
|
|||
LASER_GROW,
|
||||
};
|
||||
|
||||
static player_t *get_pohbee_owner(mobj_t *pohbee)
|
||||
{
|
||||
UINT8 p = pohbee_owner(pohbee);
|
||||
return p < MAXPLAYERS && playeringame[p] ? &players[p] : NULL;
|
||||
}
|
||||
|
||||
static skincolornum_t ShrinkLaserColor(mobj_t *pohbee)
|
||||
{
|
||||
UINT8 laserState = LASER_SHRINK;
|
||||
player_t *owner = NULL;
|
||||
|
||||
if (pohbee_owner(pohbee) != NULL && P_MobjWasRemoved(pohbee_owner(pohbee)) == false)
|
||||
{
|
||||
owner = pohbee_owner(pohbee)->player;
|
||||
}
|
||||
player_t *owner = get_pohbee_owner(pohbee);
|
||||
|
||||
if (owner != NULL && P_IsDisplayPlayer(owner) == true)
|
||||
{
|
||||
|
|
@ -411,10 +412,9 @@ static void ShrinkGunThinker(mobj_t *gun)
|
|||
gun->angle = pohbee->angle;
|
||||
}
|
||||
|
||||
if (pohbee_owner(pohbee) != NULL && P_MobjWasRemoved(pohbee_owner(pohbee)) == false
|
||||
&& pohbee_owner(pohbee)->player != NULL)
|
||||
if (get_pohbee_owner(pohbee) != NULL)
|
||||
{
|
||||
gunColor = pohbee_owner(pohbee)->player->skincolor;
|
||||
gunColor = get_pohbee_owner(pohbee)->skincolor;
|
||||
}
|
||||
|
||||
gun->color = gunColor;
|
||||
|
|
@ -512,7 +512,7 @@ void Obj_ShrinkGunRemoved(mobj_t *gun)
|
|||
boolean Obj_ShrinkLaserCollide(mobj_t *gun, mobj_t *victim)
|
||||
{
|
||||
mobj_t *pohbee = gun_pohbee(gun);
|
||||
mobj_t *owner = NULL;
|
||||
player_t *owner = NULL;
|
||||
INT32 prevTimer = 0;
|
||||
|
||||
if (pohbee == NULL || P_MobjWasRemoved(pohbee) == true)
|
||||
|
|
@ -533,7 +533,7 @@ boolean Obj_ShrinkLaserCollide(mobj_t *gun, mobj_t *victim)
|
|||
|
||||
victim->player->shrinkLaserDelay = TICRATE;
|
||||
|
||||
owner = pohbee_owner(pohbee);
|
||||
owner = get_pohbee_owner(pohbee);
|
||||
prevTimer = victim->player->growshrinktimer;
|
||||
|
||||
fixed_t scale = FRACUNIT; // Used if you hit the gun/laser.
|
||||
|
|
@ -544,7 +544,7 @@ boolean Obj_ShrinkLaserCollide(mobj_t *gun, mobj_t *victim)
|
|||
scale = FixedMul(gun->scale, normalizer);
|
||||
}
|
||||
|
||||
if (owner != NULL && victim == owner)
|
||||
if (owner != NULL && victim->player == owner)
|
||||
{
|
||||
// Belongs to us. Give us Grow!
|
||||
if (prevTimer < 0)
|
||||
|
|
@ -690,7 +690,7 @@ static void CreatePohbee(player_t *owner, waypoint_t *start, waypoint_t *end, UI
|
|||
// Valid spawning conditions,
|
||||
// we can start creating each individual part.
|
||||
pohbee = P_SpawnMobjFromMobj(start->mobj, 0, 0, (baseSegs * CHAIN_SIZE * FRACUNIT) + POHBEE_HOVER * 3, MT_SHRINK_POHBEE);
|
||||
P_SetTarget(&pohbee_owner(pohbee), owner->mo);
|
||||
pohbee_owner(pohbee) = owner - players;
|
||||
|
||||
pohbee_mode(pohbee) = POHBEE_MODE_SPAWN;
|
||||
pohbee_timer(pohbee) = POHBEE_TIME;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue