5846 | | return this.RespondToTargetedEntities( |
5847 | | ents.filter(function (v) { return cmpAttack.CanAttack(v) && attackfilter(v); }) |
5848 | | .sort(function (a, b) { return cmpAttack.CompareEntitiesByPreference(a, b); }) |
5849 | | ); |
| 5848 | let entsByPreferences = {}; |
| 5849 | let preferences = []; |
| 5850 | for (let ent of ents) |
| 5851 | { |
| 5852 | if (!attackfilter(ent)) |
| 5853 | continue; |
| 5854 | let pref = cmpAttack.GetPreference(ent); |
| 5855 | if (pref === null || pref === undefined) |
| 5856 | pref = 999; |
| 5857 | if (!entsByPreferences[pref]) |
| 5858 | { |
| 5859 | preferences.push(pref); |
| 5860 | entsByPreferences[pref] = [ent]; |
| 5861 | } |
| 5862 | else |
| 5863 | entsByPreferences[pref].push(ent); |
| 5864 | } |
| 5865 | preferences.sort((a, b) => a - b); |
| 5866 | for (let pref of preferences) |
| 5867 | if (this.RespondToTargetedEntities(entsByPreferences[pref])) |
| 5868 | return true; |
| 5869 | |
| 5870 | return false; |