| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- TwoWeaponsAttrs = {}
- local this = {}
- local BasicAttrs = {
- [200012] = {0.55, 0.65},
- [200022] = {0.55, 0.65},
- [201011] = {0.55, 0.65},
- [201021] = {0.55, 0.65},
- [201041] = {0.55, 0.65},
- [213011] = {0.50, 0.50}
- }
- local Quivers = {
- [2025826192] = 1, -- 战斗箭筒
- [2025826193] = 1, -- 箭筒
- [20230111] = 1 -- 箭袋
- }
- local QuiverAttrs = {
- [213011] = 1 -- 攻速
- }
- function TwoWeaponsAttrs.addAttrs(tab, attrId, value)
- if tab[attrId] == nil then
- tab[attrId] = 0
- end
- tab[attrId] = tab[attrId] + value
- end
- function TwoWeaponsAttrs.updateAttrs(actor, pos)
- -- 1主手武器 2副手武器 3主副手武器
- -- 如果是武器就需要重新算属性.
- local equips = getputonequipinfo(actor)
- local weapons = {}
- for k, v in pairs(equips) do
- local pos = gameequip.pos(v.equipindex)
- if pos <= 3 and pos >= 1 then
- table.insert(weapons, v)
- end
- end
- if table.count(weapons) <= 1 then
- this.addAngelEquipAttr(actor, {}, 100)
- return
- end
- local apos = gameequip.pos(weapons[1].equipindex)
- if apos == 2 then
- local e1 = weapons[2]
- weapons[2] = weapons[1]
- weapons[1] = weapons[e1]
- end
- -- 如果副手武器是盾牌.则跳过
- local cfgEquip = ConfigDataManager.getById("cfg_equip_entryLib", weapons[2].cfgid)
- if cfgEquip.replacerating ~= nil and string.startsWith(cfgEquip.replacerating, "3#") then
- this.addAngelEquipAttr(actor, {}, 100)
- return
- end
- local isDiffWeapon = weapons[1].cfgid ~= weapons[2].cfgid
- local entryRate = isDiffWeapon and 1 or 1
- local attackRateIndex = isDiffWeapon and 1 or 2
- local isQuiver = Quivers[weapons[2].cfgid] ~= nil
- -- 把已增加的属性都加起来。
- -- 把应该增加的属性都加起来。
- -- 把多加的属性减掉
- local curBasicattrs = {}
- local targetBasicattrs = {}
- for _, weapon in pairs(weapons) do
- local basicattr = weapon.basicattr
- for _, v in pairs(basicattr) do
- TwoWeaponsAttrs.addAttrs(curBasicattrs, v.attrid, v.value)
- local basicAttrsRate = BasicAttrs[v.attrid]
- if basicAttrsRate ~= nil then
- TwoWeaponsAttrs.addAttrs(targetBasicattrs, v.attrid, v.value * basicAttrsRate[attackRateIndex])
- else
- TwoWeaponsAttrs.addAttrs(targetBasicattrs, v.attrid, v.value * entryRate)
- end
- end
- local strengthattr = EquipFunc.getEquipStrengthWearAddAttr(actor, weapon.id)
- for k, v in pairs(strengthattr) do
- local attrid = tonumber(k)
- local value = tonumber(v)
- TwoWeaponsAttrs.addAttrs(curBasicattrs, attrid, value)
- local basicAttrsRate = BasicAttrs[v.attrid]
- if basicAttrsRate ~= nil then
- TwoWeaponsAttrs.addAttrs(targetBasicattrs, attrid, value * basicAttrsRate[attackRateIndex])
- else
- TwoWeaponsAttrs.addAttrs(targetBasicattrs, attrid, value * entryRate)
- end
- end
- end
- if isQuiver then
- curBasicattrs = {}
- targetBasicattrs = {}
- -- 箭筒只减攻速
- for _, weapon in pairs(weapons) do
- local basicattr = weapon.basicattr
- for _, v in pairs(basicattr) do
- if QuiverAttrs[v.attrid] ~= nil then
- TwoWeaponsAttrs.addAttrs(curBasicattrs, v.attrid, v.value)
- local basicAttrsRate = BasicAttrs[v.attrid]
- if basicAttrsRate ~= nil then
- TwoWeaponsAttrs.addAttrs(targetBasicattrs, v.attrid, v.value * basicAttrsRate[attackRateIndex])
- else
- TwoWeaponsAttrs.addAttrs(targetBasicattrs, v.attrid, v.value * entryRate)
- end
- end
- end
- end
- end
- local addAttr = {}
- for k, v in pairs(curBasicattrs) do
- local targetAttr = targetBasicattrs[k]
- local curAttr = curBasicattrs[k]
- if targetAttr ~= curAttr then
- addAttr[k] = targetAttr - curAttr
- end
- end
- this.addAngelEquipAttr(actor, addAttr, 100)
- end
- --- 给角色添加大天使装备对应的属性
- ---@param actor table 角色对象
- ---@param basicAtt string 增加的属性
- ---@param itemId number 道具id
- function this.addAngelEquipAttr(actor, basicAtt, itemId)
- -- 表里配的不是增长的属性值,所以此处先清空之前增加的属性值再做添加属性操作
- local attrKey = string.format(RoleAttrKey.TWOWEAPONSATTRS, itemId)
- RoleAttr.clearRoleAttrAndDB(actor, attrKey)
- RoleAttr.addAndSaveRoleAttr(actor, attrKey, basicAtt)
- end
|