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

Method Sprite_Terrain_Check

Source/Fodder.cpp:15870–16117  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15868}
15869
15870void cFodder::Sprite_Terrain_Check(sSprite* pSprite, int16& pData4) {
15871 int16 Data0 = -3; // Y
15872 pData4 = 8; // X
15873
15874 // pData4 becomes terrain type
15875 if (Map_Terrain_Get_Type_And_Walkable(pSprite, Data0, pData4))
15876 goto CheckFalling;
15877
15878 pSprite->field_60 = pData4 & 0xFF;
15879 pSprite->field_50 = 0;
15880 pSprite->field_4F = 0;
15881
15882 if (pData4 == eTerrainFeature_Drop2) {
15883 if (pSprite->field_18 == eSprite_Enemy)
15884 goto loc_20251;
15885
15886 if (pSprite->field_22 == eSprite_PersonType_Native)
15887 goto loc_20251;
15888
15889 if (!pSprite->field_38 || pSprite->field_38 >= eSprite_Anim_Slide1) {
15890 pSprite->field_38 = eSprite_Anim_Hit3;
15891 return;
15892 }
15893 }
15894
15895 //loc_20044
15896 if (pData4 == eTerrainFeature_Drop) {
15897
15898 if (pSprite->field_18 == eSprite_Enemy)
15899 goto loc_20251;
15900
15901 if (pSprite->field_22 == eSprite_PersonType_Native)
15902 goto loc_20251;
15903
15904 ++pSprite->field_56;
15905 return;
15906 }
15907
15908 //loc_20072
15909 pSprite->field_56 = 0;
15910 if (pData4 == eTerrainFeature_QuickSandEdge)
15911 goto loc_201CC;
15912
15913 if (pData4 == eTerrainFeature_Rocky)
15914 goto loc_20108;
15915
15916 if (pData4 == eTerrainFeature_Rocky2)
15917 goto loc_2014D;
15918
15919 if (!pSprite->field_61)
15920 goto loc_200C0;
15921
15922 pSprite->field_20 -= 3;
15923 if (!pSprite->field_20)
15924 goto loc_200B7;
15925 if (pSprite->field_20 >= 0)
15926 goto loc_200C0;
15927

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected