mirror of
https://github.com/Qsgs-Fans/FreeKill.git
synced 2024-11-16 19:58:13 +08:00
9a951fdbfe
在所有代码中添加了许可证标记头
70 lines
1.8 KiB
Lua
70 lines
1.8 KiB
Lua
-- SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
---@class Skill : Object
|
|
---@field public name string
|
|
---@field public trueName string
|
|
---@field public package Package
|
|
---@field public frequency Frequency
|
|
---@field public visible boolean
|
|
---@field public mute boolean
|
|
---@field public anim_type string
|
|
---@field public related_skills Skill[]
|
|
---@field public attached_equip string
|
|
local Skill = class("Skill")
|
|
|
|
---@alias Frequency integer
|
|
|
|
Skill.Frequent = 1
|
|
Skill.NotFrequent = 2
|
|
Skill.Compulsory = 3
|
|
Skill.Limited = 4
|
|
Skill.Wake = 5
|
|
|
|
function Skill:initialize(name, frequency)
|
|
-- TODO: visible, lord, etc
|
|
self.name = name
|
|
-- skill's package is assigned when calling General:addSkill
|
|
-- if you need skills that not belongs to any general (like 'jixi')
|
|
-- then you should assign skill.package explicitly
|
|
self.package = { extensionName = "standard" }
|
|
self.frequency = frequency
|
|
self.visible = true
|
|
self.mute = false
|
|
self.anim_type = ""
|
|
self.related_skills = {}
|
|
|
|
local name_splited = name:split("__")
|
|
self.trueName = name_splited[#name_splited]
|
|
|
|
if string.sub(name, 1, 1) == "#" then
|
|
self.visible = false
|
|
end
|
|
|
|
self.attached_equip = nil
|
|
end
|
|
|
|
---@param skill Skill
|
|
function Skill:addRelatedSkill(skill)
|
|
table.insert(self.related_skills, skill)
|
|
end
|
|
|
|
---@return boolean
|
|
function Skill:isEquipmentSkill()
|
|
return self.attached_equip and type(self.attached_equip) == 'string' and self.attached_equip ~= ""
|
|
end
|
|
|
|
---@param player Player
|
|
---@return boolean
|
|
function Skill:isEffectable(player)
|
|
local nullifySkills = Fk:currentRoom().status_skills[InvaliditySkill] or {}
|
|
for _, nullifySkill in ipairs(nullifySkills) do
|
|
if self.name ~= nullifySkill.name and nullifySkill:getInvalidity(player, self) then
|
|
return false
|
|
end
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
return Skill
|