MCPcopy Create free account
hub / github.com/OpenFodder/openfodder / Sprite_Handle_Grenade_Terrain_Check

Method Sprite_Handle_Grenade_Terrain_Check

Source/Fodder.cpp:17722–17771  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

17720}
17721
17722void cFodder::Sprite_Handle_Grenade_Terrain_Check(sSprite* pSprite) {
17723 int16 Data0 = -3;
17724 int16 Data4 = 2;
17725
17726 if (Map_Terrain_Get_Type_And_Walkable(pSprite, Data0, Data4))
17727 goto loc_21599;
17728
17729 if (Data4 == eTerrainFeature_Drop || Data4 == eTerrainFeature_Drop2) {
17730
17731 if (pSprite->field_20 <= 1) {
17732 pSprite->field_12 = 1;
17733 return;
17734 }
17735 }
17736 //loc_21561
17737 if (Data4 == eTerrainFeature_QuickSand || Data4 == eTerrainFeature_WaterEdge
17738 || Data4 == eTerrainFeature_Water) {
17739
17740 if (pSprite->field_20)
17741 return;
17742
17743 pSprite->field_52 = 6;
17744 (pSprite + 1)->field_52 = 6;
17745 return;
17746 }
17747 //loc_21597
17748 return;
17749
17750loc_21599:;
17751 if (pSprite->field_20 >= 8)
17752 return;
17753
17754 pSprite->field_0 = mStoredSpriteX >> 16;
17755 Data0 = -3;
17756 Data4 = 2;
17757
17758 if (!Map_Terrain_Get_Type_And_Walkable(pSprite, Data0, Data4)) {
17759 Data0 = 0x100;
17760 Data0 -= pSprite->field_10;
17761 Data0 &= 0x1FE;
17762 pSprite->field_10 = Data0;
17763 }
17764 else {
17765 Data0 = 0x200;
17766 Data0 -= pSprite->field_10;
17767 Data0 &= 0x1FE;
17768 pSprite->field_10 = Data0;
17769 }
17770 Sprite_XY_Restore(pSprite);
17771}
17772
17773int16 cFodder::Sprite_Projectile_Collision_Check(sSprite* pSprite) {
17774

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected