2025-08-21 19:29:10 +08:00
|
|
|
--> Services
|
|
|
|
local ReplicatedStorage = game:GetService("ReplicatedStorage")
|
|
|
|
local ServerStorage = game:GetService("ServerStorage")
|
|
|
|
|
|
|
|
--> Dependencies
|
|
|
|
local Utils = require(ReplicatedStorage.Tools.Utils)
|
|
|
|
local TypeList = require(ServerStorage.Base.TypeList)
|
|
|
|
local Rune = require(ServerStorage.Base.Rune)
|
|
|
|
|
|
|
|
local RuneWearExAttributeAttack = {}
|
|
|
|
RuneWearExAttributeAttack.__index = RuneWearExAttributeAttack
|
|
|
|
setmetatable(RuneWearExAttributeAttack, {__index = Rune})
|
|
|
|
|
|
|
|
|
|
|
|
function RuneWearExAttributeAttack:Init(PlayerAI, Character: TypeList.Character)
|
|
|
|
local self = Rune:Init(PlayerAI, Character, script.Name)
|
|
|
|
setmetatable(self, RuneWearExAttributeAttack)
|
|
|
|
|
|
|
|
return self
|
|
|
|
end
|
|
|
|
|
|
|
|
function RuneWearExAttributeAttack:Check(index: number, AttributesData: table, BehaviorNameList: table)
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
|
|
|
|
function RuneWearExAttributeAttack:OnExecute(index: number, AttributesData: table, BehaviorNameList: table)
|
|
|
|
local pDataFolder = ReplicatedStorage:FindFirstChild("PlayerData")
|
|
|
|
if not pDataFolder then return nil end
|
|
|
|
local pData = pDataFolder:FindFirstChild(self.PlayerAI.Player.UserId)
|
|
|
|
if not pData then return nil end
|
|
|
|
|
|
|
|
local equipmentFolder = pData:FindFirstChild("Equipment")
|
|
|
|
if not equipmentFolder then return nil end
|
|
|
|
local equipmentList = equipmentFolder:GetChildren()
|
|
|
|
if #equipmentList == 0 then return nil end
|
|
|
|
|
|
|
|
local elementNumber = 0
|
|
|
|
for _, equipment in equipmentList do
|
|
|
|
local equipmentWearing = equipment:GetAttribute("wearing")
|
|
|
|
if equipmentWearing > 0 then
|
2025-08-26 19:25:08 +08:00
|
|
|
elementNumber = elementNumber + Utils:GetTableLength(equipment:FindFirstChild("exAttributes"):GetAttributes())
|
2025-08-21 19:29:10 +08:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2025-08-26 19:25:08 +08:00
|
|
|
local attackRate = math.floor((100 + AttributesData.attackRate or 0) * (elementNumber * 25 / 100))
|
2025-08-21 19:29:10 +08:00
|
|
|
Utils:TableSafeAddValue(AttributesData, "attackRate", attackRate)
|
|
|
|
|
|
|
|
return nil
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
return RuneWearExAttributeAttack
|