| 5369 | } |
| 5370 | |
| 5371 | void cFodder::Sprite_Handle_Tank_FireMissile(sSprite* pSprite) { |
| 5372 | if (!pSprite->field_57) |
| 5373 | if (!pSprite->field_54) |
| 5374 | return; |
| 5375 | |
| 5376 | pSprite->field_54 = 0; |
| 5377 | sSprite* Data24 = pSprite + 1; |
| 5378 | |
| 5379 | Data24->field_2E = pSprite->field_2E; |
| 5380 | Data24->field_30 = pSprite->field_30; |
| 5381 | |
| 5382 | int16 Data24_Field_0 = Data24->field_0; |
| 5383 | int16 Data24_Field_4 = Data24->field_4; |
| 5384 | int16 Data0 = Data24->field_A << 1; |
| 5385 | |
| 5386 | Data24->field_0 += mSprite_Turret_Positions[Data0]; |
| 5387 | Data24->field_4 += mSprite_Turret_Positions[Data0 + 1]; |
| 5388 | |
| 5389 | mSprite_Missile_LaunchDistance_X = 0; |
| 5390 | mSprite_Missile_LaunchDistance_Y = 0; |
| 5391 | sSprite* Data2C = 0; |
| 5392 | |
| 5393 | if (!Sprite_Create_Missile(Data24, Data2C)) { |
| 5394 | Data24->field_4 = Data24_Field_4; |
| 5395 | Data24->field_0 = Data24_Field_0; |
| 5396 | pSprite->field_57 = -1; |
| 5397 | return; |
| 5398 | } |
| 5399 | |
| 5400 | Data2C->field_20 += 0x11; |
| 5401 | Data2C->field_36 = 0x3C; |
| 5402 | Sound_Play(Data24, 5, 0x1E); |
| 5403 | Sprite_Create_Smoke(Data24, Data2C); |
| 5404 | |
| 5405 | Data24->field_4 = Data24_Field_4; |
| 5406 | Data24->field_0 = Data24_Field_0; |
| 5407 | pSprite->field_57 = 0; |
| 5408 | } |
| 5409 | |
| 5410 | int16 cFodder::Sprite_Create_Missile(sSprite* pSprite, sSprite*& pData2C) { |
| 5411 | if (mPhase_Completed_Timer) |
nothing calls this directly
no outgoing calls
no test coverage detected