| 5408 | } |
| 5409 | |
| 5410 | int16 cFodder::Sprite_Create_Missile(sSprite* pSprite, sSprite*& pData2C) { |
| 5411 | if (mPhase_Completed_Timer) |
| 5412 | return 0; |
| 5413 | |
| 5414 | if (mSprite_Missile_Projectile_Counters[pSprite->field_22] == 2) |
| 5415 | return 0; |
| 5416 | |
| 5417 | if (!pSprite->field_2E) |
| 5418 | return 0; |
| 5419 | |
| 5420 | int16 Data0 = 2; |
| 5421 | sSprite* Data30 = 0; |
| 5422 | if (Sprite_Get_Free_Max42(Data0, pData2C, Data30)) |
| 5423 | return 0; |
| 5424 | |
| 5425 | ++mSprite_Missile_Projectile_Counters[pSprite->field_22]; |
| 5426 | Data30 = pData2C + 1; |
| 5427 | |
| 5428 | pData2C->field_0 = pSprite->field_0; |
| 5429 | pData2C->field_2 = pSprite->field_2; |
| 5430 | pData2C->field_4 = pSprite->field_4; |
| 5431 | pData2C->field_6 = pSprite->field_6; |
| 5432 | |
| 5433 | Data30->field_0 = pSprite->field_0; |
| 5434 | Data30->field_2 = pSprite->field_2; |
| 5435 | Data30->field_4 = pSprite->field_4; |
| 5436 | Data30->field_6 = pSprite->field_6; |
| 5437 | |
| 5438 | pData2C->field_0 += mSprite_Missile_LaunchDistance_X; |
| 5439 | Data30->field_0 += mSprite_Missile_LaunchDistance_X; |
| 5440 | if (Data30->field_0 < 0) |
| 5441 | return 0; |
| 5442 | |
| 5443 | pData2C->field_4 += mSprite_Missile_LaunchDistance_Y; |
| 5444 | Data30->field_4 += mSprite_Missile_LaunchDistance_Y; |
| 5445 | |
| 5446 | if (Data30->field_4 < 0) |
| 5447 | return 0; |
| 5448 | |
| 5449 | pData2C->field_32 = 0; |
| 5450 | if (pSprite->field_6F == eVehicle_Turret_Cannon) |
| 5451 | pData2C->field_32 = -1; |
| 5452 | |
| 5453 | pData2C->field_1E = pSprite->field_1E; |
| 5454 | pData2C->field_20 = pSprite->field_20; |
| 5455 | pData2C->field_20 -= 0x0D; |
| 5456 | pData2C->field_26 = pSprite->field_2E; |
| 5457 | pData2C->field_28 = pSprite->field_30; |
| 5458 | pData2C->field_28 += 0x10; |
| 5459 | |
| 5460 | if (pSprite->field_22 != eSprite_PersonType_Human) { |
| 5461 | Sprite_Enemy_Set_Target(pData2C); |
| 5462 | } |
| 5463 | else { |
| 5464 | pData2C->field_26 -= 1; |
| 5465 | pData2C->field_28 += 3; |
| 5466 | } |
| 5467 |
nothing calls this directly
no test coverage detected