diff options
author | GriffinR <griffin.g.richards@gmail.com> | 2022-01-19 10:56:54 -0500 |
---|---|---|
committer | GriffinR <griffin.g.richards@gmail.com> | 2022-01-19 10:56:54 -0500 |
commit | 8200fda14e5cddabcd2a4aaddf4f558cfbf898fb (patch) | |
tree | ef863c3d30f9640bc26b3e4799398966e1a390aa /src | |
parent | a8b466dc80eb22146c6bc517d44fdc133a646555 (diff) |
Fix decorations metatile attribute names
Diffstat (limited to 'src')
-rw-r--r-- | src/decoration.c | 16 | ||||
-rw-r--r-- | src/metatile_behavior.c | 18 |
2 files changed, 20 insertions, 14 deletions
diff --git a/src/decoration.c b/src/decoration.c index 825c86818..0448778c3 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -1211,7 +1211,8 @@ static void ShowDecorationOnMap_(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, { x = mapX + i; attributes = GetMetatileAttributesById(NUM_TILES_IN_PRIMARY + gDecorations[decoration].tiles[j * decWidth + i]); - if (MetatileBehavior_IsSecretBaseImpassable(attributes) == TRUE || (gDecorations[decoration].permission != DECORPERM_PASS_FLOOR && (attributes >> METATILE_ATTR_LAYER_SHIFT))) + if (MetatileBehavior_IsSecretBaseImpassable(attributes & METATILE_ATTR_BEHAVIOR_MASK) == TRUE + || (gDecorations[decoration].permission != DECORPERM_PASS_FLOOR && (attributes >> METATILE_ATTR_LAYER_SHIFT) != METATILE_LAYER_TYPE_NORMAL)) impassableFlag = MAPGRID_COLLISION_MASK; else impassableFlag = 0; @@ -1471,23 +1472,26 @@ static void AttemptCancelPlaceDecoration(u8 taskId) DisplayItemMessageOnField(taskId, gStringVar4, CancelDecoratingPrompt); } -static bool8 IsNonBlockNonElevated(u8 behaviorAt, u16 layerType) +static bool8 IsSecretBaseTrainerSpot(u8 behaviorAt, u16 layerType) { - if (MetatileBehavior_IsBlockDecoration(behaviorAt) != TRUE || layerType != 0) + if (!(MetatileBehavior_IsSecretBaseTrainerSpot(behaviorAt) == TRUE && layerType == METATILE_LAYER_TYPE_NORMAL)) return FALSE; return TRUE; } +// Can't place decoration where the player was standing when they interacted with the PC static bool8 IsntInitialPosition(u8 taskId, s16 x, s16 y, u16 layerType) { - if (x == gTasks[taskId].tInitialX + MAP_OFFSET && y == gTasks[taskId].tInitialY + MAP_OFFSET && layerType != 0) + if (x == gTasks[taskId].tInitialX + MAP_OFFSET + && y == gTasks[taskId].tInitialY + MAP_OFFSET + && layerType != METATILE_LAYER_TYPE_NORMAL) return FALSE; return TRUE; } static bool8 IsFloorOrBoardAndHole(u16 behaviorAt, const struct Decoration *decoration) { - if (MetatileBehavior_IsBlockDecoration(behaviorAt) != TRUE) + if (MetatileBehavior_IsSecretBaseTrainerSpot(behaviorAt) != TRUE) { if (decoration->id == DECOR_SOLID_BOARD && MetatileBehavior_IsSecretBaseHole(behaviorAt) == TRUE) return TRUE; @@ -1545,7 +1549,7 @@ static bool8 CanPlaceDecoration(u8 taskId, const struct Decoration *decoration) curX = gTasks[taskId].tCursorX + j; behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY); layerType = GetMetatileAttributesById(NUM_TILES_IN_PRIMARY + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ATTR_LAYER_MASK; - if (!MetatileBehavior_IsNormal(behaviorAt) && !IsNonBlockNonElevated(behaviorAt, layerType)) + if (!MetatileBehavior_IsNormal(behaviorAt) && !IsSecretBaseTrainerSpot(behaviorAt, layerType)) return FALSE; if (!IsntInitialPosition(taskId, curX, curY, layerType)) diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c index 6b58e3f05..452e68cff 100644 --- a/src/metatile_behavior.c +++ b/src/metatile_behavior.c @@ -188,8 +188,8 @@ static const u8 sTileBitAttributes[] = [MB_UNUSED_AF] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), [MB_SECRET_BASE_PC] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), [MB_SECRET_BASE_REGISTER_PC] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), - [MB_SECRET_BASE_UNUSED] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), - [MB_BLOCK_DECORATION] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), + [MB_SECRET_BASE_OBSTACLE] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), + [MB_SECRET_BASE_TRAINER_SPOT] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), [MB_SECRET_BASE_DECORATION] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), [MB_HOLDS_SMALL_DECORATION] = TILE_ATTRIBUTES(TRUE, FALSE, FALSE), [MB_UNUSED_B6] = TILE_ATTRIBUTES(FALSE, FALSE, FALSE), @@ -687,17 +687,19 @@ bool8 MetatileBehavior_IsRecordMixingSecretBasePC(u8 metatileBehavior) return FALSE; } -bool8 Unref_MetatileBehavior_IsSecretBaseUnused_B2(u8 metatileBehavior) +// Used by the rock/grass floor spaces that the secret base trainer is not standing on +bool8 MetatileBehavior_IsSecretBaseObstacle1(u8 metatileBehavior) { - if (metatileBehavior == MB_SECRET_BASE_UNUSED) + if (metatileBehavior == MB_SECRET_BASE_OBSTACLE) return TRUE; else return FALSE; } -bool8 MetatileBehavior_IsBlockDecoration(u8 metatileBehavior) +// Used by the rock/grass floor space that the secret base trainer stands on +bool8 MetatileBehavior_IsSecretBaseTrainerSpot(u8 metatileBehavior) { - if (metatileBehavior == MB_BLOCK_DECORATION) + if (metatileBehavior == MB_SECRET_BASE_TRAINER_SPOT) return TRUE; else return FALSE; @@ -743,9 +745,9 @@ bool8 MetatileBehavior_IsSecretBaseNorthWall(u8 metatileBehavior) return FALSE; } -bool8 Unref_MetatileBehavior_IsSecretBaseUnused_B2_2(u8 metatileBehavior) +bool8 MetatileBehavior_IsSecretBaseObstacle2(u8 metatileBehavior) { - if (metatileBehavior == MB_SECRET_BASE_UNUSED) + if (metatileBehavior == MB_SECRET_BASE_OBSTACLE) return TRUE; else return FALSE; |