Commit a8f91e83dfffc518ee1b4e5de4f608a9ccbbd262
1 parent
aaf6a9e6
羁绊
Showing
1 changed file
with
33 additions
and
11 deletions
Show diff stats
src/models/RolePlugin.lua
| ... | ... | @@ -596,7 +596,7 @@ function RolePlugin.bind(Role) |
| 596 | 596 | -- end |
| 597 | 597 | end |
| 598 | 598 | |
| 599 | - function Role:getHeroActiveRelation(heros) | |
| 599 | + function Role:getHeroActiveRelationData(heros) | |
| 600 | 600 | local relations = {} |
| 601 | 601 | for _, id in pairs(heros or {}) do |
| 602 | 602 | local hero = self.heros[id] |
| ... | ... | @@ -605,20 +605,42 @@ function RolePlugin.bind(Role) |
| 605 | 605 | relations[job] = (relations[job] or 0) + 1 |
| 606 | 606 | end |
| 607 | 607 | end |
| 608 | - if not next(relations) then return {} end | |
| 609 | - local result = {} | |
| 608 | + if not next(relations) then return nil end | |
| 609 | + | |
| 610 | + local curData = nil | |
| 610 | 611 | for _, data in pairs(csvdb["unit_relationCsv"]) do |
| 611 | - local ok = true | |
| 612 | - for typ, count in pairs(data.relation:toNumMap()) do | |
| 613 | - if (relations[typ] or 0) < count then | |
| 614 | - ok = false | |
| 612 | + local had = {} | |
| 613 | + local isDone = true | |
| 614 | + for _, count in pairs(data.relation:toArray(true, "=")) do | |
| 615 | + local find = false | |
| 616 | + for camp, _count in pairs(relations) do | |
| 617 | + if count == _count and not had[camp] then | |
| 618 | + had[camp] = true | |
| 619 | + find = true | |
| 620 | + break | |
| 621 | + end | |
| 615 | 622 | end |
| 616 | - end | |
| 617 | - if ok then | |
| 618 | - for attr, value in pairs(data.effect:toNumMap()) do | |
| 619 | - result[AttsEnumEx[attr]] = (result[AttsEnumEx[attr]] or 0) + value | |
| 623 | + if not find then | |
| 624 | + isDone = false | |
| 625 | + break | |
| 620 | 626 | end |
| 621 | 627 | end |
| 628 | + if isDone then | |
| 629 | + curData = data | |
| 630 | + break | |
| 631 | + end | |
| 632 | + end | |
| 633 | + return curData | |
| 634 | + end | |
| 635 | + | |
| 636 | + function Role:getHeroActiveRelation(heros) | |
| 637 | + local data = self:getHeroActiveRelationData(heros) | |
| 638 | + local result = {} | |
| 639 | + if not data then | |
| 640 | + return result | |
| 641 | + end | |
| 642 | + for attr, value in pairs(data.effect:toNumMap()) do | |
| 643 | + result[AttsEnumEx[attr]] = (result[AttsEnumEx[attr]] or 0) + value | |
| 622 | 644 | end |
| 623 | 645 | return result |
| 624 | 646 | end | ... | ... |