| 17165 | } |
| 17166 | |
| 17167 | int16 cFodder::Sprite_Create_Grenade(sSprite* pSprite) { |
| 17168 | int16 Data0, Data4, Data8, DataC; |
| 17169 | sSprite* Data2C = 0, *Data30 = 0; |
| 17170 | |
| 17171 | if (mPhase_Completed_Timer) |
| 17172 | goto loc_20ADE; |
| 17173 | |
| 17174 | if (mSprite_Projectile_Counters[pSprite->field_22] == 2) |
| 17175 | goto loc_20ADE; |
| 17176 | |
| 17177 | if (!pSprite->field_2E) |
| 17178 | goto loc_20ADE; |
| 17179 | |
| 17180 | if (pSprite->field_18 != eSprite_Enemy) |
| 17181 | goto loc_20AC1; |
| 17182 | |
| 17183 | Data0 = pSprite->field_0; |
| 17184 | Data4 = pSprite->field_4; |
| 17185 | Data8 = pSprite->field_2E; |
| 17186 | DataC = pSprite->field_30; |
| 17187 | Map_Get_Distance_BetweenPoints_Within_Window(Data0, Data4, Data8, DataC); |
| 17188 | if (Data0 >= 0x82) |
| 17189 | goto loc_20ADE; |
| 17190 | |
| 17191 | loc_20AC1:; |
| 17192 | |
| 17193 | Data0 = 2; |
| 17194 | |
| 17195 | if (!Sprite_Get_Free_Max42(Data0, Data2C, Data30)) |
| 17196 | goto loc_20B0A; |
| 17197 | |
| 17198 | return -1; |
| 17199 | |
| 17200 | loc_20ADE:; |
| 17201 | if (pSprite == mSquad_Leader) |
| 17202 | mMouse_Button_LeftRight_Toggle = false; |
| 17203 | |
| 17204 | return -1; |
| 17205 | |
| 17206 | loc_20B0A:; |
| 17207 | if (pSprite->field_18 != eSprite_Player) |
| 17208 | goto loc_20B6E; |
| 17209 | |
| 17210 | Data0 = pSprite->field_32; |
| 17211 | Data4 = Data0; |
| 17212 | if (!mSquad_Grenades[Data0]) |
| 17213 | goto loc_20ADE; |
| 17214 | |
| 17215 | --mSquad_Grenades[Data0]; |
| 17216 | mGUI_RefreshSquadGrenades[Data4] = -1; |
| 17217 | |
| 17218 | loc_20B6E:; |
| 17219 | |
| 17220 | ++mSprite_Projectile_Counters[pSprite->field_22]; |
| 17221 | pSprite->field_55 = 1; |
| 17222 | pSprite->field_5A = -1; |
| 17223 | pSprite->field_54 = 1; |
| 17224 |
nothing calls this directly
no outgoing calls
no test coverage detected