diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 52043f9ff..8e82824d3 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -8413,12 +8413,12 @@ 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 = (0x10 - ((((u32)tmp2 + 8) & 0xFF) >> 4)) * 2; - sprite->subpriority = tmp3 + sElevationToSubpriority[elevation] + subpriority; + u16 y; + + 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)