| 15868 | } |
| 15869 | |
| 15870 | void 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 |
nothing calls this directly
no outgoing calls
no test coverage detected