diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 3429b2049d..1262b109fe 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -7756,12 +7756,10 @@ void ObjectEventUpdateElevation(struct ObjectEvent *objEvent) void SetObjectSubpriorityByElevation(u8 elevation, struct Sprite *sprite, u8 subpriority) { - s32 tmp = sprite->centerToCornerVecY; - u32 tmpa = *(u16 *)&sprite->y; - u32 tmpb = *(u16 *)&gSpriteCoordOffsetY; - s32 tmp2 = (tmpa - tmp) + tmpb; - u16 tmp3 = (16 - ((((u32)tmp2 + 8) & 0xFF) >> 4)) * 2; - sprite->subpriority = tmp3 + sElevationToSubpriority[elevation] + subpriority; + u16 y = (sprite->y - sprite->centerToCornerVecY + gSpriteCoordOffsetY + 8) & 0xFF; + y = (16 - (y >> 4)) << 1; + + sprite->subpriority = sElevationToSubpriority[elevation] + y + subpriority; } static void ObjectEventUpdateSubpriority(struct ObjectEvent *objEvent, struct Sprite *sprite)