| 18241 | } |
| 18242 | |
| 18243 | int16 cFodder::Sprite_Handle_BuildingDoor_Explode(sSprite* pSprite) { |
| 18244 | int16 Data0, Data4; |
| 18245 | |
| 18246 | if (pSprite->field_38 == eSprite_Anim_Die3 || pSprite->field_38 == eSprite_Anim_Die1) |
| 18247 | goto loc_221D0; |
| 18248 | |
| 18249 | if (pSprite->field_38 == eSprite_Anim_Die2) |
| 18250 | goto loc_22235; |
| 18251 | |
| 18252 | return 0; |
| 18253 | loc_221D0:; // Building Explodes |
| 18254 | pSprite->field_38 = eSprite_Anim_Die2; |
| 18255 | pSprite->field_8 = 0x99; |
| 18256 | |
| 18257 | Data0 = tool_RandomGet(); |
| 18258 | Data4 = Data0; |
| 18259 | |
| 18260 | Data0 &= 0x1E; |
| 18261 | if (Data4 < 0) |
| 18262 | Data0 = -Data0; |
| 18263 | |
| 18264 | Data0 += 0x1C0; |
| 18265 | pSprite->field_10 = Data0; |
| 18266 | Data4 &= 3; |
| 18267 | Data4 += 5; |
| 18268 | pSprite->field_44 = (int8)Data4; |
| 18269 | pSprite->field_36 = 0x78; |
| 18270 | |
| 18271 | loc_22235:; // Door moving |
| 18272 | pSprite->field_44 -= 1; |
| 18273 | if (!pSprite->field_44) |
| 18274 | goto loc_2227F; |
| 18275 | |
| 18276 | Sprite_Movement_Calculate(pSprite); |
| 18277 | if (mSprite_Bullet_Destroy) |
| 18278 | goto loc_2227F; |
| 18279 | |
| 18280 | Data0 = -3; |
| 18281 | Data4 = 2; |
| 18282 | if (Map_Terrain_Get_Type_And_Walkable(pSprite, Data0, Data4)) |
| 18283 | goto loc_2227F; |
| 18284 | |
| 18285 | if (pSprite->field_36 <= 0) |
| 18286 | goto loc_2227F; |
| 18287 | |
| 18288 | return -1; |
| 18289 | |
| 18290 | loc_2227F:; // Door Finished |
| 18291 | pSprite->field_0 -= 8; |
| 18292 | pSprite->field_4 -= 8; |
| 18293 | |
| 18294 | Sprite_Turn_Into_Building_Explosion(pSprite); |
| 18295 | |
| 18296 | return -1; |
| 18297 | } |
| 18298 | |
| 18299 | int16 cFodder::sub_222A3(sSprite* pSprite) { |
| 18300 | int16 Data0, Data4; |
nothing calls this directly
no outgoing calls
no test coverage detected