| 6244 | } |
| 6245 | |
| 6246 | int16 cFodder::Sprite_Create_MissileHoming(sSprite* pSprite, sSprite*& pData2C, sSprite*& pData34) { |
| 6247 | |
| 6248 | if (mPhase_Completed_Timer) |
| 6249 | return 0; |
| 6250 | |
| 6251 | if (mSprite_Missile_Projectile_Counters[pSprite->field_22] == 2) |
| 6252 | return 0; |
| 6253 | |
| 6254 | if (!pSprite->field_2E) |
| 6255 | return 0; |
| 6256 | |
| 6257 | int16 Data0 = 2; |
| 6258 | sSprite *Data30 = 0; |
| 6259 | if (Sprite_Get_Free_Max42(Data0, pData2C, Data30)) |
| 6260 | return 0; |
| 6261 | |
| 6262 | ++mSprite_Missile_Projectile_Counters[pSprite->field_22]; |
| 6263 | |
| 6264 | Data30 = pData2C; |
| 6265 | ++Data30; |
| 6266 | |
| 6267 | //seg005:55E0 |
| 6268 | pData2C->field_0 = pSprite->field_0; |
| 6269 | pData2C->field_2 = pSprite->field_2; |
| 6270 | pData2C->field_4 = pSprite->field_4; |
| 6271 | pData2C->field_6 = pSprite->field_6; |
| 6272 | |
| 6273 | Data30->field_0 = pSprite->field_0; |
| 6274 | Data30->field_2 = pSprite->field_2; |
| 6275 | Data30->field_4 = pSprite->field_4; |
| 6276 | Data30->field_6 = pSprite->field_6; |
| 6277 | |
| 6278 | pData2C->field_0 += mSprite_Missile_LaunchDistance_X; |
| 6279 | Data30->field_0 += mSprite_Missile_LaunchDistance_X; |
| 6280 | if (Data30->field_0 < 0) |
| 6281 | return 0; |
| 6282 | |
| 6283 | pData2C->field_4 += mSprite_Missile_LaunchDistance_Y; |
| 6284 | Data30->field_4 += mSprite_Missile_LaunchDistance_Y; |
| 6285 | |
| 6286 | if (Data30->field_0 < 0) |
| 6287 | return 0; |
| 6288 | |
| 6289 | //seg005:5672 |
| 6290 | pData2C->field_1A_sprite = pData34; |
| 6291 | pData2C->field_1E = pSprite->field_1E; |
| 6292 | pData2C->field_20 = pSprite->field_20; |
| 6293 | pData2C->field_26 = pSprite->field_2E; |
| 6294 | pData2C->field_28 = pSprite->field_30; |
| 6295 | pData2C->field_28 += 0x10; |
| 6296 | pData2C->field_8 = 0xA3; |
| 6297 | Data30->field_8 = 0x7E; |
| 6298 | pData2C->field_A = 0; |
| 6299 | Data30->field_A = 1; |
| 6300 | pData2C->field_36 = 0; |
| 6301 | Data30->field_36 = 0; |
| 6302 | pData2C->field_6A = 0x10000; |
| 6303 | if (pSprite->field_22 != eSprite_PersonType_Human) |
nothing calls this directly
no test coverage detected