(fighters, mainFighter)
| 427 | |
| 428 | |
| 429 | def getSimilarFighters(fighters, mainFighter): |
| 430 | sMkt = Market.getInstance() |
| 431 | mainGroupID = getattr(sMkt.getGroupByItem(mainFighter.item), 'ID', None) |
| 432 | mainAbilityIDs = set(a.effectID for a in mainFighter.abilities) |
| 433 | similarFighters = [] |
| 434 | for fighter in fighters: |
| 435 | # Always include selected fighter itself |
| 436 | if fighter is mainFighter: |
| 437 | similarFighters.append(fighter) |
| 438 | continue |
| 439 | if fighter.itemID is None: |
| 440 | continue |
| 441 | # Fighters which have the same item ID |
| 442 | if fighter.itemID == mainFighter.itemID: |
| 443 | similarFighters.append(fighter) |
| 444 | continue |
| 445 | # And fighters from the same group and with the same abilities too |
| 446 | fighterGroupID = getattr(sMkt.getGroupByItem(fighter.item), 'ID', None) |
| 447 | fighterAbilityIDs = set(a.effectID for a in fighter.abilities) |
| 448 | if ( |
| 449 | fighterGroupID is not None and fighterGroupID == mainGroupID and |
| 450 | len(fighterAbilityIDs) > 0 and fighterAbilityIDs == mainAbilityIDs |
| 451 | ): |
| 452 | similarFighters.append(fighter) |
| 453 | continue |
| 454 | return similarFighters |
no test coverage detected