summaryrefslogtreecommitdiff
path: root/src/field_effect_helpers.c
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-09-09 16:05:11 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-09-09 16:05:11 -0400
commit994618e494365cfbaeef9f220ba99996c43d5fe8 (patch)
treef6397e5202dd9346cdbbe1b2e1666d17fc632b0d /src/field_effect_helpers.c
parente0a25bc2c0f5917dcfd3048e87e2d434ceab6188 (diff)
oamc_shadow
Diffstat (limited to 'src/field_effect_helpers.c')
-rw-r--r--src/field_effect_helpers.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c
index b7dded198..e10eeca52 100644
--- a/src/field_effect_helpers.c
+++ b/src/field_effect_helpers.c
@@ -258,3 +258,27 @@ bool8 FldEff_Shadow(void)
}
return FALSE;
}
+
+void oamc_shadow(struct Sprite *sprite)
+{
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+ struct Sprite *linkedSprite;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId))
+ {
+ FieldEffectStop(sprite, 3);
+ }
+ else
+ {
+ mapObject = &gMapObjects[mapObjectId];
+ linkedSprite = &gSprites[mapObject->spriteId];
+ sprite->oam.priority = linkedSprite->oam.priority;
+ sprite->pos1.x = linkedSprite->pos1.x;
+ sprite->pos1.y = linkedSprite->pos1.y + sprite->data3;
+ if (!mapObject->active || !mapObject->mapobj_bit_22 || MetatileBehavior_IsPokeGrass(mapObject->mapobj_unk_1E) || MetatileBehavior_IsSurfableWaterOrUnderwater(mapObject->mapobj_unk_1E) || MetatileBehavior_IsSurfableWaterOrUnderwater(mapObject->mapobj_unk_1F) || MetatileBehavior_IsReflective(mapObject->mapobj_unk_1E) || MetatileBehavior_IsReflective(mapObject->mapobj_unk_1F))
+ {
+ FieldEffectStop(sprite, 3);
+ }
+ }
+}