| 5029 | } |
| 5030 | |
| 5031 | void cFodder::Sprite_Under_Vehicle(sSprite* pSprite, int16 pData8, int16 pDataC, int16 pData10, int16 pData14, int16 pData18, int16 pData1C) { |
| 5032 | |
| 5033 | if (mPhase_Finished) |
| 5034 | return; |
| 5035 | |
| 5036 | sSprite* Sprite = mSprites.data(); |
| 5037 | |
| 5038 | // TODO: Fix counter |
| 5039 | for (int16 Count = 0x1D; Count >= 0; --Count, ++Sprite) { |
| 5040 | if (Sprite->field_0 == -32768) |
| 5041 | continue; |
| 5042 | |
| 5043 | if (Sprite == pSprite) |
| 5044 | continue; |
| 5045 | |
| 5046 | if (!mSprite_Can_Be_RunOver[Sprite->field_18]) |
| 5047 | continue; |
| 5048 | |
| 5049 | if (pSprite->field_22 == Sprite->field_22) |
| 5050 | continue; |
| 5051 | |
| 5052 | if (Sprite->field_18 == eSprite_Hostage) |
| 5053 | continue; |
| 5054 | |
| 5055 | if (Sprite->field_18 == eSprite_Enemy_Leader) |
| 5056 | continue; |
| 5057 | |
| 5058 | if (pData8 > Sprite->field_0) |
| 5059 | continue; |
| 5060 | |
| 5061 | if (pDataC < Sprite->field_0) |
| 5062 | continue; |
| 5063 | |
| 5064 | if (pData10 > Sprite->field_4) |
| 5065 | continue; |
| 5066 | |
| 5067 | if (pData14 < Sprite->field_4) |
| 5068 | continue; |
| 5069 | |
| 5070 | int16 Data0 = Sprite->field_20; |
| 5071 | if (pData1C < Data0) |
| 5072 | continue; |
| 5073 | Data0 += 0x0E; |
| 5074 | if (pData18 > Data0) |
| 5075 | continue; |
| 5076 | |
| 5077 | if (Sprite->field_18 != eSprite_Player) { |
| 5078 | if (Sprite->field_6E) |
| 5079 | continue; |
| 5080 | } |
| 5081 | |
| 5082 | // Run Over |
| 5083 | Sprite->field_38 = eSprite_Anim_Die1; |
| 5084 | if (!Sprite->field_65) |
| 5085 | return; |
| 5086 | |
| 5087 | pSprite->field_38 = eSprite_Anim_Die1; |
| 5088 | return; |
nothing calls this directly
no outgoing calls
no test coverage detected