| | |
| | | /// </summary> |
| | | public static List<long> DivideDamageToList(int[] damageDivide, long totalDamage) |
| | | { |
| | | if (damageDivide == null || damageDivide.Length == 0) |
| | | { |
| | | Debug.LogError("damageDivide 为空或长度为0"); |
| | | return new List<long> { totalDamage }; |
| | | } |
| | | |
| | | List<long> fixedDamageList = new List<long>(); |
| | | long accumulatedDamage = 0; // 累计已分配的伤害 |
| | | |
| | | for (int i = 0; i < damageDivide.Length; i++) |
| | | { |
| | | float fixedDamage = (float)totalDamage * (float)damageDivide[i] / 10000f; |
| | | fixedDamageList.Add((int)fixedDamage); |
| | | long damage; |
| | | |
| | | // 最后一次分配:用总伤害减去已分配的伤害,确保总和精确 |
| | | if (i == damageDivide.Length - 1) |
| | | { |
| | | damage = totalDamage - accumulatedDamage; |
| | | } |
| | | else |
| | | { |
| | | // 计算当前分段伤害(向下取整) |
| | | damage = (long)((float)totalDamage * (float)damageDivide[i] / 10000f); |
| | | accumulatedDamage += damage; |
| | | } |
| | | |
| | | fixedDamageList.Add(damage); |
| | | } |
| | | |
| | | |
| | | return fixedDamageList; |
| | | } |
| | | |
| | | public static HB419_tagSCObjHPRefresh FindObjHPRefreshPack(List<GameNetPackBasic> packList) |
| | | { |
| | | for (int i = 0; i < packList.Count; i++) |
| | | { |
| | | var pack = packList[i]; |
| | | if (pack is HB419_tagSCObjHPRefresh hpRefreshPack) |
| | | { |
| | | return hpRefreshPack; |
| | | } |
| | | else if (pack is CustomHB426CombinePack) |
| | | { |
| | | break; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public static List<HB422_tagMCTurnFightObjDead> FindDeadPack(List<GameNetPackBasic> packList) |
| | | { |