| 6154 | } |
| 6155 | |
| 6156 | int16 cFodder::Sprite_Create_Grenade2(sSprite* pSprite) { |
| 6157 | int16 Data0, Data4, Data8, DataC; |
| 6158 | |
| 6159 | if (mPhase_Completed_Timer) |
| 6160 | return 0; |
| 6161 | |
| 6162 | if (mSprite_Projectile_Counters[pSprite->field_22] == 2) |
| 6163 | return 0; |
| 6164 | |
| 6165 | if (!pSprite->field_2E) |
| 6166 | return 0; |
| 6167 | |
| 6168 | Data0 = 2; |
| 6169 | sSprite* Data2C, *Data30; |
| 6170 | if (Sprite_Get_Free_Max42(Data0, Data2C, Data30)) |
| 6171 | return 0; |
| 6172 | |
| 6173 | ++mSprite_Projectile_Counters[pSprite->field_22]; |
| 6174 | Data30 = Data2C + 1; |
| 6175 | Data2C->field_0 = pSprite->field_0; |
| 6176 | Data30->field_0 = pSprite->field_0; |
| 6177 | Data2C->field_4 = pSprite->field_4; |
| 6178 | Data30->field_4 = pSprite->field_4; |
| 6179 | Data2C->field_8 = 0x7D; |
| 6180 | Data30->field_8 = 0x7E; |
| 6181 | Data2C->field_A = 0; |
| 6182 | Data30->field_A = 0; |
| 6183 | |
| 6184 | Data8 = pSprite->field_2E; |
| 6185 | DataC = pSprite->field_30; |
| 6186 | DataC += 6; |
| 6187 | |
| 6188 | Data2C->field_26 = Data8; |
| 6189 | Data2C->field_28 = DataC; |
| 6190 | |
| 6191 | if (pSprite->field_22 != eSprite_PersonType_Human) |
| 6192 | Sprite_Enemy_Set_Target(Data2C); |
| 6193 | |
| 6194 | Data0 = pSprite->field_0; |
| 6195 | Data4 = pSprite->field_4; |
| 6196 | |
| 6197 | Map_Get_Distance_BetweenPoints_Within_Window(Data0, Data4, Data8, DataC); |
| 6198 | if (Data0 < 0x28) |
| 6199 | Data0 = 0x28; |
| 6200 | |
| 6201 | Data0 = Data0 / 5; |
| 6202 | if (Data0 > 0x64) |
| 6203 | Data0 = 0x64; |
| 6204 | |
| 6205 | Data2C->field_12 = Data0; |
| 6206 | Data2C->field_36 = 0x32; |
| 6207 | Data30->field_36 = 0x32; |
| 6208 | Data0 = pSprite->field_20; |
| 6209 | Data0 += 2; |
| 6210 | |
| 6211 | Data2C->field_1E = 0; |
| 6212 | Data2C->field_20 = Data0; |
| 6213 | Data30->field_1E = 0; |
nothing calls this directly
no outgoing calls
no test coverage detected