2025-06-04 05:12:01 +08:00

121 lines
4.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

FunctionSkill = class("FunctionSkill")
function FunctionSkill.Me()
if nil == FunctionSkill.me then
FunctionSkill.me = FunctionSkill.new()
end
return FunctionSkill.me
end
function FunctionSkill:ctor()
EventManager.Me():AddEventListener(SkillEvent.SkillCastBegin,self.HandleStartProcess,self)
EventManager.Me():AddEventListener(SkillEvent.SkillCastEnd,self.HandleStopProcess,self)
end
function FunctionSkill:HandleStartProcess( data )
local creature = data.data
if(Game.Myself and Game.Myself == creature) then
self.isCasting = true
end
end
function FunctionSkill:HandleStopProcess( data )
local creature = data.data
if(Game.Myself and Game.Myself == creature) then
self.isCasting = false
end
end
function FunctionSkill:TryUseSkill(skillIDAndLevel,target,noSearch)
if(self.isCasting) then
return
end
local myself = Game.Myself
local isHanding,handOther = myself:IsHandInHand()
if(isHanding and not handOther) then
--牽手Ing被牽者
return
end
--使用條件
local fit,requiredSkill = FunctionSkillEnableCheck.Me():LearnedSkillCheck(skillIDAndLevel)
if(fit==false and requiredSkill~=nil) then
requiredSkill = requiredSkill*1000+1
MsgManager.ShowMsgByIDTable(355,{Table_Skill[requiredSkill].NameZh})
return
end
local fitSpecial,specialItem,count,needMsg = SkillProxy.Instance:HasFitSpecialCost(skillIDAndLevel)
if(not SkillProxy.Instance:HasEnoughSp(skillIDAndLevel)) then
MsgManager.ShowMsgByIDTable(1101)
elseif(not SkillProxy.Instance:HasEnoughHp(skillIDAndLevel)) then
MsgManager.ShowMsgByIDTable(609)
elseif(not fitSpecial) then
if(needMsg) then
MsgManager.ShowMsgByIDTable(3052,{specialItem.NameZh,count})
end
else
local lockedTarget = myself:GetLockTarget()
local isUseSkill = true
if(myself.data.userdata:Get(UDEnum.NORMAL_SKILL)==skillIDAndLevel) then
-- print("use normal skill")
myself:Client_UseSkill(skillIDAndLevel, lockedTarget,nil,nil,noSearch)
else
local skillInfo = Game.LogicManager_Skill:GetSkillInfo(skillIDAndLevel)
local skillType = skillInfo:GetSkillType()
if(skillType == SkillType.Function) then
self:HandleFunctionSkill(skillInfo)
else
local skillTargetType = skillInfo:GetTargetType(myself)
if(skillTargetType ~= nil) then
if(skillTargetType == SkillTargetType.None) then
isUseSkill = myself:Client_UseSkill(skillIDAndLevel,nil,nil,nil,noSearch)
elseif(skillTargetType == SkillTargetType.Creature) then
if(target) then
myself:Client_UseSkill(skillIDAndLevel, target,nil,nil,noSearch)
else
myself:Client_UseSkill(skillIDAndLevel, lockedTarget,nil,nil,noSearch)
end
elseif(skillTargetType == SkillTargetType.Point) then
FunctionSkillTargetPointLauncher.Me():Shutdown()
FunctionSkillTargetPointLauncher.Me():Launch(skillIDAndLevel)
end
print(string.format("UseSkill skillIDAndLevel:%d type:%s target:%s", skillIDAndLevel, tostring(skillTargetType), tostring(target)));
else
print("未找到技能"..skillIDAndLevel.."的目標型別")
end
end
end
if not isUseSkill then
MsgManager.ShowMsgByID(609)
end
end
end
function FunctionSkill:CancelSkill(skillIDAndLevel)
local skillInfo = Game.LogicManager_Skill:GetSkillInfo(skillIDAndLevel)
local skillTargetType = skillInfo:GetTargetType(Game.Myself)
if(skillTargetType ~= nil) then
if(skillTargetType == SkillTargetType.None) then
elseif(skillTargetType == SkillTargetType.Creature) then
elseif(skillTargetType == SkillTargetType.Point) then
FunctionSkillTargetPointLauncher.Me():Shutdown()
end
print("cancel "..skillIDAndLevel.." type:"..tostring(skillTargetType))
else
print("未找到技能"..skillIDAndLevel.."的目標型別")
end
end
function FunctionSkill:HandleFunctionSkill(skillInfo)
local logicParam = skillInfo.logicParam
if(logicParam~=nil) then
if(logicParam.shortcutID) then
FuncShortCutFunc.Me():CallByID(logicParam.shortcutID)
elseif(logicParam.msgid) then
MsgManager.ShowMsgByIDTable(logicParam.msgid)
end
else
helplog(skillInfo.staticData.id,"沒有配Logicparam")
end
end