| 12381 | } |
| 12382 | |
| 12383 | void cFodder::Sprite_Handle_Building_Explosion(sSprite* pSprite) { |
| 12384 | int16 Data0, Data4, Data6, Data8, DataC, Data10, Data14; |
| 12385 | const int16* Data2C = mSprite_Explosion_Area_PerFrame; |
| 12386 | sSprite* Data24 = 0; |
| 12387 | |
| 12388 | if (pSprite->field_8 == 0x7C) { |
| 12389 | Sprite_Destroy_Wrapper_2(pSprite); |
| 12390 | return; |
| 12391 | } |
| 12392 | |
| 12393 | pSprite->field_62 = ~pSprite->field_62; |
| 12394 | if (pSprite->field_62 < 0) |
| 12395 | goto loc_1BC07; |
| 12396 | |
| 12397 | |
| 12398 | Data8 = pSprite->field_0; |
| 12399 | Data8 += 8; |
| 12400 | if (pSprite->field_26 == 0x5F5F) |
| 12401 | Data8 += pSprite->field_28; |
| 12402 | |
| 12403 | DataC = pSprite->field_0 + 0x24; |
| 12404 | |
| 12405 | Data10 = pSprite->field_4 - 0x20; |
| 12406 | Data14 = pSprite->field_4 - 6; |
| 12407 | |
| 12408 | Data0 = pSprite->field_A; |
| 12409 | |
| 12410 | if (pSprite->field_8 == 0xC0) |
| 12411 | Data0 += 2; |
| 12412 | |
| 12413 | Data0 -= 1; |
| 12414 | |
| 12415 | for (; Data0 >= 0; --Data0) { |
| 12416 | Data8 -= *Data2C; |
| 12417 | DataC -= *Data2C++; |
| 12418 | Data10 += *Data2C; |
| 12419 | Data14 += *Data2C++; |
| 12420 | } |
| 12421 | |
| 12422 | Squad_Member_Sprite_Hit_In_Region(pSprite, Data8, DataC, Data10, Data14); |
| 12423 | goto loc_1BC48; |
| 12424 | |
| 12425 | loc_1BC07:; |
| 12426 | Data8 = pSprite->field_0; |
| 12427 | DataC = pSprite->field_0 + 0x1E; |
| 12428 | Data10 = pSprite->field_4 - 30; |
| 12429 | Data14 = pSprite->field_4; |
| 12430 | |
| 12431 | Sprite_Find_In_Region(pSprite, Data24, Data8, DataC, Data10, Data14); |
| 12432 | loc_1BC48:; |
| 12433 | |
| 12434 | Data2C = mSprite_Explosion_Area_PerFrame; |
| 12435 | Data4 = pSprite->field_A; |
| 12436 | if (pSprite->field_8 == 0xC0) |
| 12437 | Data4 += 2; |
| 12438 | |
| 12439 | Data4 <<= 1; |
| 12440 | Data2C += Data4; |
nothing calls this directly
no outgoing calls
no test coverage detected