diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-09-09 16:05:11 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-09-09 16:05:11 -0400 |
commit | 994618e494365cfbaeef9f220ba99996c43d5fe8 (patch) | |
tree | f6397e5202dd9346cdbbe1b2e1666d17fc632b0d /src/field_effect_helpers.c | |
parent | e0a25bc2c0f5917dcfd3048e87e2d434ceab6188 (diff) |
oamc_shadow
Diffstat (limited to 'src/field_effect_helpers.c')
-rw-r--r-- | src/field_effect_helpers.c | 24 |
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); + } + } +} |