| 8894 | } |
| 8895 | |
| 8896 | void cFodder::Squad_Member_Rotate_Can_Fire() { |
| 8897 | if (mSquad_Member_Fire_CoolDown_Override) |
| 8898 | mSquad_Member_Fire_CoolDown_Override = false; |
| 8899 | else { |
| 8900 | mSquad_Member_Fire_CoolDown -= 1; |
| 8901 | if (mSquad_Member_Fire_CoolDown >= 0) |
| 8902 | return; |
| 8903 | } |
| 8904 | |
| 8905 | //loc_2D2EB |
| 8906 | sSprite* Data20 = mSquad_Leader; |
| 8907 | if (Data20 == INVALID_SPRITE_PTR || Data20 == 0) |
| 8908 | return; |
| 8909 | |
| 8910 | sMission_Troop* Dataa20 = Data20->field_46_mission_troop; |
| 8911 | if (Dataa20 == 0) |
| 8912 | return; |
| 8913 | |
| 8914 | mSquad_Member_Fire_CoolDown = mSprite_Weapon_Data.mCooldown; |
| 8915 | mSprite_Bullet_Time_Modifier = 0; |
| 8916 | mSprite_Bullet_Fire_Speed_Modifier = 0; |
| 8917 | |
| 8918 | // TODO: 0x0F is the max rank, so what was this code for? |
| 8919 | { |
| 8920 | if (Dataa20->mRank > 0x14) { |
| 8921 | if (mSquad_Selected >= 0) { |
| 8922 | if (mSquads_TroopCount[mSquad_Selected] == 1) { |
| 8923 | mSquad_Member_Fire_CoolDown = 1; |
| 8924 | mSprite_Bullet_Time_Modifier = -3; |
| 8925 | mSprite_Bullet_Fire_Speed_Modifier = 0x0A; |
| 8926 | } |
| 8927 | } |
| 8928 | } |
| 8929 | } |
| 8930 | |
| 8931 | //loc_2D381 |
| 8932 | if (mSquad_Selected < 0) |
| 8933 | return; |
| 8934 | |
| 8935 | int16 TroopsInSquad = (mSquads_TroopCount[mSquad_Selected] & 0xFF) - 1; |
| 8936 | int16 LastTroopNumber = TroopsInSquad; |
| 8937 | |
| 8938 | if (LastTroopNumber < 0) |
| 8939 | return; |
| 8940 | |
| 8941 | // Order based on number of troops in squad |
| 8942 | const std::vector<int16>& Rotate_Fire_Order = mSoldier_Squad_Fire_RotationOrder[TroopsInSquad]; |
| 8943 | if (mTroop_Rotate_Next >= Rotate_Fire_Order.size()) |
| 8944 | mTroop_Rotate_Next = 0; |
| 8945 | |
| 8946 | size_t Data0 = mTroop_Rotate_Next; |
| 8947 | |
| 8948 | // Squad Member Number |
| 8949 | int16 Data4 = Rotate_Fire_Order[Data0]; |
| 8950 | |
| 8951 | // Past the last troop in squad? |
| 8952 | if (Data4 < 0 || Data4 > LastTroopNumber) { |
| 8953 | Data4 = 0; |