| 10918 | } |
| 10919 | |
| 10920 | void cFodder::Sprite_Handle_Enemy(sSprite* pSprite) { |
| 10921 | |
| 10922 | if (Sprite_Handle_Soldier_Animation(pSprite)) |
| 10923 | return; |
| 10924 | |
| 10925 | if (pSprite->field_38) |
| 10926 | return; |
| 10927 | |
| 10928 | mSprite_FaceWeaponTarget = 0; |
| 10929 | if (pSprite->field_44) { |
| 10930 | pSprite->field_44--; |
| 10931 | } |
| 10932 | else { |
| 10933 | sub_21CD1(pSprite); |
| 10934 | Sprite_Handle_Troop_Weapon(pSprite); |
| 10935 | |
| 10936 | mTmp_FrameNumber = pSprite->field_A; |
| 10937 | int16 Data0 = pSprite->field_26; |
| 10938 | if (Data0 < 0) |
| 10939 | goto loc_19A89; |
| 10940 | |
| 10941 | int16 Data4 = pSprite->field_28; |
| 10942 | if (Data4 < 0) |
| 10943 | goto loc_19A89; |
| 10944 | |
| 10945 | if (Sprite_Direction_Between_Points(pSprite, Data0, Data4) < 0) |
| 10946 | goto loc_19A89; |
| 10947 | } |
| 10948 | //loc_19A5D |
| 10949 | Sprite_XY_Store(pSprite); |
| 10950 | sub_2A3D4(pSprite); |
| 10951 | Sprite_Handle_Troop_Speed(pSprite); |
| 10952 | |
| 10953 | if (pSprite->field_45) { |
| 10954 | pSprite->field_45--; |
| 10955 | if (pSprite->field_45) |
| 10956 | return; |
| 10957 | } |
| 10958 | Sprite_Draw_Row_Update(pSprite); |
| 10959 | goto loc_19A96; |
| 10960 | |
| 10961 | loc_19A89:; |
| 10962 | word_3ABB1 = 0; |
| 10963 | Sprite_Handle_Troop_Direct_TowardWeaponTarget_WithRestore(pSprite); |
| 10964 | goto loc_19A9C; |
| 10965 | |
| 10966 | loc_19A96:; |
| 10967 | word_3ABB1 = -1; |
| 10968 | |
| 10969 | loc_19A9C:; |
| 10970 | pSprite->field_22 = eSprite_PersonType_AI; |
| 10971 | Sprite_Handle_Troop_Animation(pSprite); |
| 10972 | |
| 10973 | if (word_3ABB1) |
| 10974 | return; |
| 10975 | if (mSprite_FaceWeaponTarget) |
| 10976 | return; |
| 10977 |
nothing calls this directly
no outgoing calls
no test coverage detected