| 17410 | } |
| 17411 | |
| 17412 | void cFodder::Sprite_Handle_Player_Close_To_SquadMember(sSprite* pSprite) { |
| 17413 | |
| 17414 | // Not Human? |
| 17415 | if (pSprite->field_22 != eSprite_PersonType_Human) { |
| 17416 | pSprite->field_4D = 0; |
| 17417 | return; |
| 17418 | } |
| 17419 | |
| 17420 | word_3B2F3 = 0; |
| 17421 | |
| 17422 | // Find this sprite in the squad |
| 17423 | sSprite** PreviousMember = mSquads[pSprite->field_32]; |
| 17424 | |
| 17425 | // Loop until we find this squad member |
| 17426 | for (;;) { |
| 17427 | if (*PreviousMember == INVALID_SPRITE_PTR) |
| 17428 | return; |
| 17429 | |
| 17430 | sSprite* eax = *PreviousMember; |
| 17431 | ++PreviousMember; |
| 17432 | |
| 17433 | // Found this troop? |
| 17434 | if (pSprite == eax) |
| 17435 | break; |
| 17436 | } |
| 17437 | |
| 17438 | // Get the previous squad member |
| 17439 | --PreviousMember; |
| 17440 | |
| 17441 | // If PreviousMember is Squad Leader, return |
| 17442 | if (mSquads[pSprite->field_32] == PreviousMember) |
| 17443 | return; |
| 17444 | |
| 17445 | // Get the previous members, previous member |
| 17446 | PreviousMember--; |
| 17447 | |
| 17448 | //seg005:1A13 |
| 17449 | sSprite* Data24 = *PreviousMember; |
| 17450 | |
| 17451 | // Near the other member? |
| 17452 | if (pSprite->field_0 + 8 < Data24->field_0) |
| 17453 | return; |
| 17454 | |
| 17455 | if (Data24->field_0 + 8 < pSprite->field_0) |
| 17456 | return; |
| 17457 | |
| 17458 | if (Data24->field_4 + 2 < pSprite->field_4 - 2) |
| 17459 | return; |
| 17460 | |
| 17461 | if (pSprite->field_4 + 2 < Data24->field_4 - 2) |
| 17462 | return; |
| 17463 | |
| 17464 | // In Vehicle? |
| 17465 | if (Data24->field_6E) |
| 17466 | return; |
| 17467 | |
| 17468 | // Different Walk Target? |
| 17469 | int16 Data1C = pSprite->field_40; |
nothing calls this directly
no outgoing calls
no test coverage detected