| 18415 | } |
| 18416 | |
| 18417 | int16 cFodder::Sprite_Create_Rocket(sSprite* pSprite) { |
| 18418 | sSprite* Data2C = 0, *Data30 = 0, *Data34 = 0; |
| 18419 | int16 Data0, Data4, Data8, DataC; |
| 18420 | |
| 18421 | if (mPhase_Completed_Timer) { |
| 18422 | loc_22592:; |
| 18423 | |
| 18424 | if (pSprite == mSquad_Leader) |
| 18425 | mMouse_Button_LeftRight_Toggle = false; |
| 18426 | |
| 18427 | return -1; |
| 18428 | } |
| 18429 | |
| 18430 | if (mSprite_Missile_Projectile_Counters[pSprite->field_22] == 2) |
| 18431 | goto loc_22592; |
| 18432 | |
| 18433 | if (!pSprite->field_2E) |
| 18434 | goto loc_22592; |
| 18435 | |
| 18436 | //seg005:2E39 |
| 18437 | if (pSprite->field_18 == eSprite_Enemy) { |
| 18438 | Data0 = pSprite->field_0; |
| 18439 | Data4 = pSprite->field_4; |
| 18440 | Data8 = pSprite->field_2E; |
| 18441 | DataC = pSprite->field_30; |
| 18442 | |
| 18443 | // Don't let the AI fire further than 129 |
| 18444 | Map_Get_Distance_BetweenPoints_Within_Window(Data0, Data4, Data8, DataC); |
| 18445 | if (Data0 >= 0x82) |
| 18446 | goto loc_22592; |
| 18447 | } |
| 18448 | |
| 18449 | Data0 = 2; |
| 18450 | Sprite_Get_Free_Max42(Data0, Data2C, Data30); |
| 18451 | |
| 18452 | // No Free sprites? |
| 18453 | if (Data0) |
| 18454 | return -1; |
| 18455 | |
| 18456 | if (pSprite->field_18 == eSprite_Player) { |
| 18457 | Data0 = pSprite->field_32; |
| 18458 | Data4 = Data0; |
| 18459 | |
| 18460 | if (!mSquad_Rockets[Data0]) |
| 18461 | goto loc_22592; |
| 18462 | |
| 18463 | --mSquad_Rockets[Data0]; |
| 18464 | mGUI_RefreshSquadRockets[Data4] = -1; |
| 18465 | } |
| 18466 | |
| 18467 | ++mSprite_Missile_Projectile_Counters[pSprite->field_22]; |
| 18468 | pSprite->field_55 = 1; |
| 18469 | pSprite->field_5A = -1; |
| 18470 | pSprite->field_54 = 3; |
| 18471 | Data30 = Data2C; |
| 18472 | Data30++; |
| 18473 | |
| 18474 | //seg005:2F86 |
nothing calls this directly
no test coverage detected