| 13857 | } |
| 13858 | |
| 13859 | void cFodder::Sprite_Handle_BuildingDoor3(sSprite* pSprite) { |
| 13860 | int16 Data0, Data4; |
| 13861 | sSprite* Data2C = 0; |
| 13862 | |
| 13863 | if (sub_1D92E(pSprite)) |
| 13864 | return; |
| 13865 | |
| 13866 | if (mTroops_Enemy_Count >= mParams->mSpawnEnemyMax) { |
| 13867 | pSprite->field_8 = 0xE0; |
| 13868 | return; |
| 13869 | } |
| 13870 | |
| 13871 | pSprite->field_2C = eSprite_Draw_First; |
| 13872 | if (pSprite->field_43 < 0) |
| 13873 | goto loc_1D8DC; |
| 13874 | |
| 13875 | pSprite->field_43 -= 1; |
| 13876 | if (pSprite->field_43 == 0x14 || pSprite->field_43 == 0x0A) |
| 13877 | goto loc_1D928; |
| 13878 | |
| 13879 | if (pSprite->field_43 >= 0) { |
| 13880 | pSprite->field_8 = 0x7C; |
| 13881 | return; |
| 13882 | } |
| 13883 | |
| 13884 | pSprite->field_8 = 0xE0; |
| 13885 | Sound_Play(pSprite, eSound_Effect_BuildingDoor2, 1); |
| 13886 | |
| 13887 | Data0 = tool_RandomGet() & 0x0F; |
| 13888 | Data4 = 0x14 - mGame_Data.mGamePhase_Data.mSprite_Enemy_AggressionMax; |
| 13889 | |
| 13890 | if (Data4 < 0) |
| 13891 | Data0 = 0; |
| 13892 | |
| 13893 | Data4 <<= 3; |
| 13894 | Data4 += Data0; |
| 13895 | pSprite->field_12 = Data4; |
| 13896 | |
| 13897 | loc_1D8DC:; |
| 13898 | |
| 13899 | pSprite->field_12 -= 1; |
| 13900 | if (pSprite->field_12 >= 0) |
| 13901 | return; |
| 13902 | |
| 13903 | Data0 = tool_RandomGet() & 0x0F; |
| 13904 | Data0 += 6; |
| 13905 | pSprite->field_43 = static_cast<int8>(Data0); |
| 13906 | pSprite->field_8 = 0x7C; |
| 13907 | |
| 13908 | if (!Sprite_Create_Enemy(pSprite, Data2C)) |
| 13909 | return; |
| 13910 | |
| 13911 | pSprite->field_12 = -1; |
| 13912 | pSprite->field_43 = -1; |
| 13913 | return; |
| 13914 | |
| 13915 | loc_1D928:; |
| 13916 | Sprite_Create_Enemy(pSprite, Data2C); |
nothing calls this directly
no outgoing calls
no test coverage detected