diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/event_object_movement.c | 311 | ||||
-rw-r--r-- | src/overworld.c | 61 | ||||
-rw-r--r-- | src/quest_log_objects.c | 4 | ||||
-rw-r--r-- | src/trainer_see.c | 12 |
4 files changed, 87 insertions, 301 deletions
diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 271d60bf5..9f3859e9d 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1326,45 +1326,56 @@ static u8 GetObjectEventIdByLocalId(u8 localId) return OBJECT_EVENTS_COUNT; } -#ifdef NONMATCHING static u8 InitObjectEventStateFromTemplate(struct ObjectEventTemplate *template, u8 mapNum, u8 mapGroup) { struct ObjectEvent *objectEvent; - struct ObjectEventTemplate *template2 = template; + const struct MapHeader *mapHeader; u8 objectEventId; + u8 var0; + u8 elevation; + u8 inConnection; s16 x; s16 y; - s16 var; s16 x2; s16 y2; - s16 elevation2; + s16 x3; + s16 y3; - if(template->inConnection == 0xFF) - { - var = 1; - mapNum = template2->trainerType; - mapGroup = template2->trainerRange_berryTreeId & 0xFF; - elevation2 = template2->elevation; - x = template2->x; - y = template2->y; - x2 = template2->x; - y2 = template2->y; - template = &Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum)->events->objectEvents[elevation2 - 1]; + var0 = 0; + elevation = 0; + x2 = 0; + y2 = 0; + x3 = 0; + y3 = 0; + inConnection = template->inConnection; + + if (inConnection == 0xFF) + { + var0 = 1; + elevation = template->elevation; + mapNum = template->trainerType; + mapGroup = template->trainerRange_berryTreeId & 0xFF; + x2 = template->x; + y2 = template->y; + x3 = template->x; + y3 = template->y; + mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum); + template = &(mapHeader->events->objectEvents[elevation - 1]); } if (GetAvailableObjectEventId(template->localId, mapNum, mapGroup, &objectEventId) - && !sub_805E238(template, var, x2, y2)) + || !sub_805E238(template, var0, x3, y3)) return OBJECT_EVENTS_COUNT; objectEvent = &gObjectEvents[objectEventId]; ClearObjectEvent(objectEvent); - if (var) + if (var0) { - x = x2 * 0x10000 + 0x7000; - y = y2 * 0x10000 + 0x7000; + x = x2 + 7; + y = y2 + 7; } else { - x = x2 + 7; - y = y2 + 7; + x = template->x + 7; + y = template->y + 7; } objectEvent->active = TRUE; objectEvent->triggerGroundEffectsOnMove = TRUE; @@ -1372,7 +1383,6 @@ static u8 InitObjectEventStateFromTemplate(struct ObjectEventTemplate *template, objectEvent->movementType = template->movementType; objectEvent->localId = template->localId; objectEvent->mapNum = mapNum; - // objectEvent++; objectEvent--; is a trick used in pokeruby and pokeemerald here objectEvent->mapGroup = mapGroup; objectEvent->initialCoords.x = x; objectEvent->initialCoords.y = y; @@ -1382,258 +1392,27 @@ static u8 InitObjectEventStateFromTemplate(struct ObjectEventTemplate *template, objectEvent->previousCoords.y = y; objectEvent->currentElevation = template->elevation; objectEvent->previousElevation = template->elevation; - objectEvent->range.as_nybbles.x = template->movementRangeX; - objectEvent->range.as_nybbles.y = template->movementRangeY; + objectEvent->rangeX = template->movementRangeX; + objectEvent->rangeY = template->movementRangeY; objectEvent->trainerType = template->trainerType; objectEvent->trainerRange_berryTreeId = template->trainerRange_berryTreeId; + objectEvent->mapNum = mapNum; // oops (yes this is required for matching) objectEvent->previousMovementDirection = gInitialMovementTypeFacingDirections[template->movementType]; SetObjectEventDirection(objectEvent, objectEvent->previousMovementDirection); SetObjectEventDynamicGraphicsId(objectEvent); -/*#ifndef NONMATCHING - asm("":::"r5", "r6"); is a trick used in pokeruby and pokeemerald here -#endif*/ if (gRangedMovementTypes[objectEvent->movementType]) { - if (objectEvent->range.as_nybbles.x == 0) + if (objectEvent->rangeX == 0) { - objectEvent->range.as_nybbles.x++; + objectEvent->rangeX++; } - if (objectEvent->range.as_nybbles.y == 0) + if (objectEvent->rangeY == 0) { - objectEvent->range.as_nybbles.y++; + objectEvent->rangeY++; } } return objectEventId; } -#else -NAKED -static u8 InitObjectEventStateFromTemplate(struct ObjectEventTemplate *template, u8 mapNum, u8 mapGroup) -{ - asm_unified("\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0xC\n\ - adds r5, r0, 0\n\ - lsls r1, 24\n\ - lsrs r7, r1, 24\n\ - lsls r2, 24\n\ - lsrs r6, r2, 24\n\ - movs r0, 0\n\ - mov r10, r0\n\ - mov r8, r0\n\ - mov r9, r0\n\ - movs r1, 0\n\ - str r1, [sp, 0x4]\n\ - str r0, [sp, 0x8]\n\ - ldrb r0, [r5, 0x2]\n\ - cmp r0, 0xFF\n\ - bne _0805E0DA\n\ - movs r1, 0x1\n\ - mov r10, r1\n\ - ldrb r4, [r5, 0x8]\n\ - ldrb r7, [r5, 0xC]\n\ - ldrb r6, [r5, 0xE]\n\ - ldrh r0, [r5, 0x4]\n\ - mov r8, r0\n\ - ldrh r5, [r5, 0x6]\n\ - mov r9, r5\n\ - mov r1, r8\n\ - str r1, [sp, 0x4]\n\ - mov r0, r9\n\ - str r0, [sp, 0x8]\n\ - adds r0, r6, 0\n\ - adds r1, r7, 0\n\ - bl Overworld_GetMapHeaderByGroupAndId\n\ - ldr r1, [r0, 0x4]\n\ - lsls r0, r4, 1\n\ - adds r0, r4\n\ - lsls r0, 3\n\ - subs r0, 0x18\n\ - ldr r1, [r1, 0x4]\n\ - adds r5, r1, r0\n\ - _0805E0DA:\n\ - ldrb r0, [r5]\n\ - adds r1, r7, 0\n\ - adds r2, r6, 0\n\ - mov r3, sp\n\ - bl GetAvailableObjectEventId\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _0805E106\n\ - ldr r1, [sp, 0x4]\n\ - lsls r2, r1, 16\n\ - asrs r2, 16\n\ - ldr r0, [sp, 0x8]\n\ - lsls r3, r0, 16\n\ - asrs r3, 16\n\ - adds r0, r5, 0\n\ - mov r1, r10\n\ - bl sub_805E238\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _0805E10A\n\ - _0805E106:\n\ - movs r0, 0x10\n\ - b _0805E220\n\ - _0805E10A:\n\ - mov r0, sp\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 3\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - ldr r1, _0805E13C @ =gObjectEvents\n\ - adds r4, r0, r1\n\ - adds r0, r4, 0\n\ - bl ClearObjectEvent\n\ - mov r1, r10\n\ - cmp r1, 0\n\ - beq _0805E140\n\ - mov r1, r8\n\ - lsls r0, r1, 16\n\ - movs r1, 0xE0\n\ - lsls r1, 11\n\ - adds r0, r1\n\ - lsrs r3, r0, 16\n\ - mov r1, r9\n\ - lsls r0, r1, 16\n\ - movs r1, 0xE0\n\ - lsls r1, 11\n\ - adds r0, r1\n\ - b _0805E14E\n\ - .align 2, 0\n\ - _0805E13C: .4byte gObjectEvents\n\ - _0805E140:\n\ - ldrh r0, [r5, 0x4]\n\ - adds r0, 0x7\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - ldrh r0, [r5, 0x6]\n\ - adds r0, 0x7\n\ - lsls r0, 16\n\ - _0805E14E:\n\ - lsrs r2, r0, 16\n\ - ldrb r0, [r4]\n\ - movs r1, 0x1\n\ - orrs r0, r1\n\ - movs r1, 0x4\n\ - orrs r0, r1\n\ - strb r0, [r4]\n\ - ldrb r0, [r5, 0x1]\n\ - strb r0, [r4, 0x5]\n\ - ldrb r0, [r5, 0x9]\n\ - strb r0, [r4, 0x6]\n\ - ldrb r0, [r5]\n\ - strb r0, [r4, 0x8]\n\ - strb r7, [r4, 0x9]\n\ - strb r6, [r4, 0xA]\n\ - strh r3, [r4, 0xC]\n\ - strh r2, [r4, 0xE]\n\ - strh r3, [r4, 0x10]\n\ - strh r2, [r4, 0x12]\n\ - strh r3, [r4, 0x14]\n\ - strh r2, [r4, 0x16]\n\ - ldrb r0, [r5, 0x8]\n\ - movs r6, 0xF\n\ - adds r1, r6, 0\n\ - ands r1, r0\n\ - ldrb r2, [r4, 0xB]\n\ - movs r0, 0x10\n\ - negs r0, r0\n\ - mov r8, r0\n\ - ands r0, r2\n\ - orrs r0, r1\n\ - strb r0, [r4, 0xB]\n\ - ldrb r1, [r5, 0x8]\n\ - lsls r1, 4\n\ - ands r0, r6\n\ - orrs r0, r1\n\ - strb r0, [r4, 0xB]\n\ - ldrb r1, [r5, 0xA]\n\ - lsls r1, 28\n\ - movs r0, 0xF\n\ - mov r9, r0\n\ - lsrs r1, 28\n\ - ldrb r2, [r4, 0x19]\n\ - mov r0, r8\n\ - ands r0, r2\n\ - orrs r0, r1\n\ - strb r0, [r4, 0x19]\n\ - ldrb r1, [r5, 0xA]\n\ - lsrs r1, 4\n\ - lsls r1, 4\n\ - ands r0, r6\n\ - orrs r0, r1\n\ - strb r0, [r4, 0x19]\n\ - ldrh r0, [r5, 0xC]\n\ - strb r0, [r4, 0x7]\n\ - ldrh r0, [r5, 0xE]\n\ - strb r0, [r4, 0x1D]\n\ - ldr r1, _0805E230 @ =gInitialMovementTypeFacingDirections\n\ - ldrb r0, [r5, 0x9]\n\ - adds r0, r1\n\ - ldrb r1, [r0]\n\ - adds r0, r4, 0\n\ - adds r0, 0x20\n\ - strb r1, [r0]\n\ - ldrb r1, [r0]\n\ - adds r0, r4, 0\n\ - bl SetObjectEventDirection\n\ - adds r0, r4, 0\n\ - bl SetObjectEventDynamicGraphicsId\n\ - ldr r1, _0805E234 @ =gRangedMovementTypes\n\ - ldrb r0, [r4, 0x6]\n\ - adds r0, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _0805E21C\n\ - ldrb r2, [r4, 0x19]\n\ - adds r0, r6, 0\n\ - ands r0, r2\n\ - cmp r0, 0\n\ - bne _0805E204\n\ - lsls r0, r2, 28\n\ - lsrs r0, 28\n\ - adds r0, 0x1\n\ - mov r1, r9\n\ - ands r0, r1\n\ - mov r1, r8\n\ - ands r1, r2\n\ - orrs r1, r0\n\ - strb r1, [r4, 0x19]\n\ - _0805E204:\n\ - ldrb r2, [r4, 0x19]\n\ - movs r0, 0xF0\n\ - ands r0, r2\n\ - cmp r0, 0\n\ - bne _0805E21C\n\ - lsrs r1, r2, 4\n\ - adds r1, 0x1\n\ - lsls r1, 4\n\ - adds r0, r6, 0\n\ - ands r0, r2\n\ - orrs r0, r1\n\ - strb r0, [r4, 0x19]\n\ - _0805E21C:\n\ - mov r0, sp\n\ - ldrb r0, [r0]\n\ - _0805E220:\n\ - add sp, 0xC\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ - _0805E230: .4byte gInitialMovementTypeFacingDirections\n\ - _0805E234: .4byte gRangedMovementTypes\n\ - "); -} -#endif static bool8 sub_805E238(struct ObjectEventTemplate *template, u8 var, s16 x, s16 y) { @@ -5140,19 +4919,19 @@ static bool8 IsCoordOutsideObjectEventMovementRange(struct ObjectEvent *objectEv s16 top; s16 bottom; - if (objectEvent->range.as_nybbles.x != 0) + if (objectEvent->rangeX != 0) { - left = objectEvent->initialCoords.x - objectEvent->range.as_nybbles.x; - right = objectEvent->initialCoords.x + objectEvent->range.as_nybbles.x; + left = objectEvent->initialCoords.x - objectEvent->rangeX; + right = objectEvent->initialCoords.x + objectEvent->rangeX; if (left > x || right < x) { return TRUE; } } - if (objectEvent->range.as_nybbles.y != 0) + if (objectEvent->rangeY != 0) { - top = objectEvent->initialCoords.y - objectEvent->range.as_nybbles.y; - bottom = objectEvent->initialCoords.y + objectEvent->range.as_nybbles.y; + top = objectEvent->initialCoords.y - objectEvent->rangeY; + bottom = objectEvent->initialCoords.y + objectEvent->rangeY; if (top > y || bottom < y) { return TRUE; diff --git a/src/overworld.c b/src/overworld.c index 7bdd0ddb4..e3e8fb885 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -194,7 +194,7 @@ static void CreateConfirmLeaveTradeRoomPrompt(void); static void InitLinkRoomStartMenuScript(void); static void InitMenuBasedScript(const u8 *script); static void sub_80581DC(const u8 *script); -static void sub_8058230(void); +static void RunTerminateLinkScript(void); static void SpawnLinkPlayerObjectEvent(u8 i, s16 x, s16 y, u8 gender); static void InitLinkPlayerObjectEventPos(struct ObjectEvent *objEvent, s16 x, s16 y); static u8 GetSpriteForLinkedPlayer(u8 linkPlayerId); @@ -2673,7 +2673,7 @@ static void HandleLinkPlayerKeyInput(u32 playerId, u16 key, struct TradeRoomPlay if (trainer->isLocalPlayer) { SetKeyInterceptCallback(KeyInterCB_DeferToEventScript); - sub_8058230(); + RunTerminateLinkScript(); } return; } @@ -3170,7 +3170,7 @@ static void InitMenuBasedScript(const u8 *script) ScriptContext2_Enable(); } -static void sub_8058230(void) +static void RunTerminateLinkScript(void) { ScriptContext1_SetupScript(TradeCenter_TerminateLink); ScriptContext2_Enable(); @@ -3260,7 +3260,14 @@ static void ZeroObjectEvent(struct ObjectEvent *objEvent) memset(objEvent, 0, sizeof(struct ObjectEvent)); } -static void SpawnLinkPlayerObjectEvent(u8 linkPlayerId, s16 x, s16 y, u8 a4) +// Note: Emerald reuses the direction and range variables during Link mode +// as special gender and direction values. The types and placement +// conflict with the usual Event Object struct, thus the definitions. +#define linkGender(obj) obj->singleMovementActive +// not even one can reference *byte* aligned bitfield members... +#define linkDirection(obj) ((u8*)obj)[offsetof(typeof(*obj), fieldEffectSpriteId) - 1] // -> rangeX + +static void SpawnLinkPlayerObjectEvent(u8 linkPlayerId, s16 x, s16 y, u8 gender) { u8 objEventId = GetFirstInactiveObjectEventId(); struct LinkPlayerObjectEvent *linkPlayerObjEvent = &gLinkPlayerObjectEvents[linkPlayerId]; @@ -3275,8 +3282,8 @@ static void SpawnLinkPlayerObjectEvent(u8 linkPlayerId, s16 x, s16 y, u8 a4) linkPlayerObjEvent->movementMode = MOVEMENT_MODE_FREE; objEvent->active = TRUE; - objEvent->singleMovementActive = a4; - objEvent->range.as_byte = 2; + linkGender(objEvent) = gender; + linkDirection(objEvent) = DIR_NORTH; objEvent->spriteId = MAX_SPRITES; InitLinkPlayerObjectEventPos(objEvent, x, y); @@ -3293,17 +3300,17 @@ static void InitLinkPlayerObjectEventPos(struct ObjectEvent *objEvent, s16 x, s1 ObjectEventUpdateZCoord(objEvent); } -static void SetLinkPlayerObjectRange(u8 linkPlayerId, u8 range) +static void SetLinkPlayerObjectRange(u8 linkPlayerId, u8 dir) { if (gLinkPlayerObjectEvents[linkPlayerId].active) { u8 objEventId = gLinkPlayerObjectEvents[linkPlayerId].objEventId; struct ObjectEvent *objEvent = &gObjectEvents[objEventId]; - objEvent->range.as_byte = range; + linkDirection(objEvent) = dir; } } -static void DestroyLinkPlayerOBject(u8 linkPlayerId) +static void DestroyLinkPlayerObject(u8 linkPlayerId) { struct LinkPlayerObjectEvent *linkPlayerObjEvent = &gLinkPlayerObjectEvents[linkPlayerId]; u8 objEventId = linkPlayerObjEvent->objEventId; @@ -3334,7 +3341,7 @@ static u8 GetLinkPlayerFacingDirection(u8 linkPlayerId) { u8 objEventId = gLinkPlayerObjectEvents[linkPlayerId].objEventId; struct ObjectEvent *objEvent = &gObjectEvents[objEventId]; - return objEvent->range.as_byte; + return linkDirection(objEvent); } static u8 GetLinkPlayerElevation(u8 linkPlayerId) @@ -3393,35 +3400,35 @@ static void SetPlayerFacingDirection(u8 linkPlayerId, u8 facing) } } -static u8 MovementEventModeCB_Normal(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 a3) +static u8 MovementEventModeCB_Normal(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir) { - return sLinkPlayerFacingHandlers[a3](linkPlayerObjEvent, objEvent, a3); + return sLinkPlayerFacingHandlers[dir](linkPlayerObjEvent, objEvent, dir); } -static u8 MovementEventModeCB_Ignored(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 a3) +static u8 MovementEventModeCB_Ignored(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir) { return FACING_UP; } // Duplicate Function -static u8 MovementEventModeCB_Normal_2(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 a3) +static u8 MovementEventModeCB_Normal_2(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir) { - return sLinkPlayerFacingHandlers[a3](linkPlayerObjEvent, objEvent, a3); + return sLinkPlayerFacingHandlers[dir](linkPlayerObjEvent, objEvent, dir); } -static bool8 FacingHandler_DoNothing(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 a3) +static bool8 FacingHandler_DoNothing(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir) { return FALSE; } -static bool8 FacingHandler_DpadMovement(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 a3) +static bool8 FacingHandler_DpadMovement(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir) { s16 x, y; - objEvent->range.as_byte = FlipVerticalAndClearForced(a3, objEvent->range.as_byte); - ObjectEventMoveDestCoords(objEvent, objEvent->range.as_byte, &x, &y); + linkDirection(objEvent) = FlipVerticalAndClearForced(dir, linkDirection(objEvent)); + ObjectEventMoveDestCoords(objEvent, linkDirection(objEvent), &x, &y); - if (LinkPlayerDetectCollision(linkPlayerObjEvent->objEventId, objEvent->range.as_byte, x, y)) + if (LinkPlayerDetectCollision(linkPlayerObjEvent->objEventId, linkDirection(objEvent), x, y)) { return FALSE; } @@ -3434,9 +3441,9 @@ static bool8 FacingHandler_DpadMovement(struct LinkPlayerObjectEvent *linkPlayer } } -static bool8 FacingHandler_ForcedFacingChange(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 a3) +static bool8 FacingHandler_ForcedFacingChange(struct LinkPlayerObjectEvent *linkPlayerObjEvent, struct ObjectEvent *objEvent, u8 dir) { - objEvent->range.as_byte = FlipVerticalAndClearForced(a3, objEvent->range.as_byte); + linkDirection(objEvent) = FlipVerticalAndClearForced(dir, linkDirection(objEvent)); return FALSE; } @@ -3450,7 +3457,7 @@ static void MovementStatusHandler_TryAdvanceScript(struct LinkPlayerObjectEvent { objEvent->directionSequenceIndex--; linkPlayerObjEvent->movementMode = MOVEMENT_MODE_FROZEN; - MoveCoords(objEvent->range.as_byte, &objEvent->initialCoords.x, &objEvent->initialCoords.y); + MoveCoords(linkDirection(objEvent), &objEvent->initialCoords.x, &objEvent->initialCoords.y); if (!objEvent->directionSequenceIndex) { ShiftStillObjectEventCoords(objEvent); @@ -3510,12 +3517,12 @@ static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion) if (gameVersion == VERSION_FIRE_RED || gameVersion == VERSION_LEAF_GREEN) { objEvent->spriteId = AddPseudoObjectEvent( - GetRivalAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, objEvent->singleMovementActive), + GetRivalAvatarGraphicsIdByStateIdAndGender(PLAYER_AVATAR_STATE_NORMAL, linkGender(objEvent)), SpriteCB_LinkPlayer, 0, 0, 0); } else { - objEvent->spriteId = AddPseudoObjectEvent(GetRSAvatarGraphicsIdByGender(objEvent->singleMovementActive), SpriteCB_LinkPlayer, 0, 0, 0); + objEvent->spriteId = AddPseudoObjectEvent(GetRSAvatarGraphicsIdByGender(linkGender(objEvent)), SpriteCB_LinkPlayer, 0, 0, 0); } sprite = &gSprites[objEvent->spriteId]; @@ -3535,9 +3542,9 @@ static void SpriteCB_LinkPlayer(struct Sprite *sprite) sprite->oam.priority = ZCoordToPriority(objEvent->previousElevation); if (!linkPlayerObjEvent->movementMode != MOVEMENT_MODE_FREE) - StartSpriteAnim(sprite, GetFaceDirectionAnimNum(objEvent->range.as_byte)); + StartSpriteAnim(sprite, GetFaceDirectionAnimNum(linkDirection(objEvent))); else - StartSpriteAnimIfDifferent(sprite, GetMoveDirectionAnimNum(objEvent->range.as_byte)); + StartSpriteAnimIfDifferent(sprite, GetMoveDirectionAnimNum(linkDirection(objEvent))); UpdateObjectEventSpriteVisibility(sprite, 0); if (objEvent->triggerGroundEffectsOnMove) diff --git a/src/quest_log_objects.c b/src/quest_log_objects.c index fa3bbcce5..47d328405 100644 --- a/src/quest_log_objects.c +++ b/src/quest_log_objects.c @@ -93,8 +93,8 @@ void SetSav1ObjectEventsFromQuestLog(const struct QuestLog * questLog, const str { gObjectEvents[i].initialCoords.x = templates[j].x + 7; gObjectEvents[i].initialCoords.y = templates[j].y + 7; - gObjectEvents[i].range.as_nybbles.x = templates[j].movementRangeX; - gObjectEvents[i].range.as_nybbles.y = templates[j].movementRangeY; + gObjectEvents[i].rangeX = templates[j].movementRangeX; + gObjectEvents[i].rangeY = templates[j].movementRangeY; } } diff --git a/src/trainer_see.c b/src/trainer_see.c index f393c4bbd..644b87c37 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -219,15 +219,15 @@ static u8 CheckPathBetweenTrainerAndPlayer(struct ObjectEvent *trainerObj, u8 ap } // preserve mapobj_unk_19 before clearing. - unk19_temp = trainerObj->range.as_nybbles.x; - unk19b_temp = trainerObj->range.as_nybbles.y; - trainerObj->range.as_nybbles.x = 0; - trainerObj->range.as_nybbles.y = 0; + unk19_temp = trainerObj->rangeX; + unk19b_temp = trainerObj->rangeY; + trainerObj->rangeX = 0; + trainerObj->rangeY = 0; collision = GetCollisionAtCoords(trainerObj, x, y, direction); - trainerObj->range.as_nybbles.x = unk19_temp; - trainerObj->range.as_nybbles.y = unk19b_temp; + trainerObj->rangeX = unk19_temp; + trainerObj->rangeY = unk19b_temp; if (collision == 4) return approachDistance; |