fix
parent
39a340d99a
commit
c3ba340c11
|
@ -260,15 +260,25 @@ local effectList = {
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
--吸取[a]%的[b],持续[c]秒
|
--吸取[a]%的[b],持续[c]秒(属于增益),累积不高于自身该属性的[d]%
|
||||||
--a[float],b[属性],c[float]
|
--a[float],b[属性],c[float],d[float]
|
||||||
[16] = function(caster, target, args, interval)
|
[16] = function(caster, target, args, interval)
|
||||||
local f1 = args[1]
|
local f1 = args[1]
|
||||||
local dt = args[2]
|
local pro = args[2]
|
||||||
local f2 = args[3]
|
local f2 = args[3]
|
||||||
|
local f3 = args[4]
|
||||||
BattleLogic.WaitForTrigger(interval, function ()
|
BattleLogic.WaitForTrigger(interval, function ()
|
||||||
target:AddBuff(Buff.Create(caster, BuffName.PropertyChange, f2, propertyList[dt], f1, 4))
|
--计算上限值
|
||||||
caster:AddBuff(Buff.Create(caster, BuffName.PropertyChange, f2, propertyList[dt], f1, 2))
|
local total = caster.data:GetOrginData(propertyList[pro]) * (1 + f3)
|
||||||
|
--计算预期吸取后的值
|
||||||
|
local targetValue = caster:GetRoleData(propertyList[pro]) + target:GetRoleData(propertyList[pro]) * f1
|
||||||
|
--计算有效吸收值
|
||||||
|
local delta = min(targetValue, total) - caster:GetRoleData(propertyList[pro])
|
||||||
|
|
||||||
|
if delta > 0 then
|
||||||
|
target:AddBuff(Buff.Create(caster, BuffName.PropertyChange, f2, propertyList[pro], delta, 3))
|
||||||
|
caster:AddBuff(Buff.Create(caster, BuffName.PropertyChange, f2, propertyList[pro], delta, 1))
|
||||||
|
end
|
||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
--造成[a]%的[b]伤害,如果是[c],有[d]%必定暴击
|
--造成[a]%的[b]伤害,如果是[c],有[d]%必定暴击
|
||||||
|
|
|
@ -3,11 +3,8 @@ RoleData.__index = RoleData
|
||||||
local max = math.max
|
local max = math.max
|
||||||
local floor = math.floor
|
local floor = math.floor
|
||||||
function RoleData.New()
|
function RoleData.New()
|
||||||
local instance = {role=0, data={0,0,0,0,0,
|
local instance = {role=0, data={0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0},
|
||||||
0,0,0,0,0,
|
orginData={0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0}}
|
||||||
0,0,0,0,0,
|
|
||||||
0,0,0,0,0,
|
|
||||||
0,0,0,0,0}}
|
|
||||||
setmetatable(instance, RoleData)
|
setmetatable(instance, RoleData)
|
||||||
return instance
|
return instance
|
||||||
end
|
end
|
||||||
|
@ -16,6 +13,7 @@ function RoleData:Init(role, data)
|
||||||
self.role = role
|
self.role = role
|
||||||
for i=1, #data do
|
for i=1, #data do
|
||||||
self.data[i] = floor(data[i] * 100000 + 0.5) / 100000 --进行精度处理,避免前后端计算不一致
|
self.data[i] = floor(data[i] * 100000 + 0.5) / 100000 --进行精度处理,避免前后端计算不一致
|
||||||
|
self.orginData[i] = floor(data[i] * 100000 + 0.5) / 100000 --进行精度处理,避免前后端计算不一致
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -25,6 +23,12 @@ function RoleData:GetData(name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function RoleData:GetOrginData(name)
|
||||||
|
if self.orginData[name] then
|
||||||
|
return self.orginData[name]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function RoleData:SetValue(name, value)
|
function RoleData:SetValue(name, value)
|
||||||
if self.data[name] then
|
if self.data[name] then
|
||||||
local delta = self.data[name]
|
local delta = self.data[name]
|
||||||
|
@ -51,7 +55,7 @@ end
|
||||||
|
|
||||||
function RoleData:AddPencentValue(name, pencent)
|
function RoleData:AddPencentValue(name, pencent)
|
||||||
if self.data[name] then
|
if self.data[name] then
|
||||||
return self:AddValue(name, self.data[name] * pencent)
|
return self:AddValue(name, self.orginData[name] * pencent)
|
||||||
end
|
end
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
|
|
|
@ -139,18 +139,17 @@ function Skill:Cast()
|
||||||
|
|
||||||
BattleLogic.SetAggro(self.owner)
|
BattleLogic.SetAggro(self.owner)
|
||||||
if not self.isTeamSkill then
|
if not self.isTeamSkill then
|
||||||
|
local time = max(8-self.owner:GetRoleData(RoleDataName.Speed)/(8*(self.owner:GetRoleData(RoleDataName.Level)+10)), 1.5)
|
||||||
if self.owner.superSkill == self then
|
if self.owner.superSkill == self then
|
||||||
self.sp = 0
|
self.sp = 0
|
||||||
self.spPass = floor(self.cd * BattleLogic.GameFrameRate)
|
self.spPass = floor(self.cd * BattleLogic.GameFrameRate)
|
||||||
BattleLogic.AddMP(self.owner.camp, 10)
|
BattleLogic.AddMP(self.owner.camp, 10)
|
||||||
if self.owner.skill then
|
if self.owner.skill then
|
||||||
local skill = self.owner.skill
|
local skill = self.owner.skill
|
||||||
local time = max(8-self.owner:GetRoleData(RoleDataName.Speed)/(8*(self.owner:GetRoleData(RoleDataName.Level)+10)), 1.5)
|
|
||||||
skill.sp = 0
|
skill.sp = 0
|
||||||
skill.spPass = floor(time * BattleLogic.GameFrameRate)
|
skill.spPass = floor(time * BattleLogic.GameFrameRate)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
local time = max(8-self.owner:GetRoleData(RoleDataName.Speed)/(8*(self.owner:GetRoleData(RoleDataName.Level)+10)), 1.5)
|
|
||||||
self.sp = 0
|
self.sp = 0
|
||||||
self.spPass = floor(time * BattleLogic.GameFrameRate)
|
self.spPass = floor(time * BattleLogic.GameFrameRate)
|
||||||
BattleLogic.AddMP(self.owner.camp, 8)
|
BattleLogic.AddMP(self.owner.camp, 8)
|
||||||
|
|
|
@ -91,8 +91,8 @@ function BattleUtil.ChooseTarget(role, chooseId)
|
||||||
end)
|
end)
|
||||||
elseif chooseWeight == 7 then
|
elseif chooseWeight == 7 then
|
||||||
BattleUtil.Sort(arr, function(a, b)
|
BattleUtil.Sort(arr, function(a, b)
|
||||||
local r1 = a:GetRoleData(RoleDataName.MagicDefence)
|
local r1 = a:GetSkillCD()
|
||||||
local r2 = b:GetRoleData(RoleDataName.MagicDefence)
|
local r2 = b:GetSkillCD()
|
||||||
if sort == 1 then return r1 > r2 else return r1 < r2 end
|
if sort == 1 then return r1 > r2 else return r1 < r2 end
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
|
@ -122,6 +122,18 @@ function RoleLogic:CanCastSkill()
|
||||||
return self.enable and not self.ctrl_slient and not self.IsDebug and BattleLogic.GetSkillUsable(self.camp)
|
return self.enable and not self.ctrl_slient and not self.IsDebug and BattleLogic.GetSkillUsable(self.camp)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function RoleLogic:GetSkillCD()
|
||||||
|
local cd = 0
|
||||||
|
if self.skill and not self.superSkill then
|
||||||
|
cd = max(self.skill.spPass - self.skill.sp, 0)
|
||||||
|
elseif not self.skill and self.superSkill then
|
||||||
|
cd = max(self.superSkill.spPass - self.superSkill.sp, 0)
|
||||||
|
elseif self.skill and self.superSkill then
|
||||||
|
cd = max(self.skill.spPass - self.skill.sp, 0) + max(self.superSkill.spPass - self.superSkill.sp, 0)
|
||||||
|
end
|
||||||
|
return cd
|
||||||
|
end
|
||||||
|
|
||||||
function RoleLogic:GetRoleData(property)
|
function RoleLogic:GetRoleData(property)
|
||||||
local tarPro = self.data:GetData(property)
|
local tarPro = self.data:GetData(property)
|
||||||
local item
|
local item
|
||||||
|
|
|
@ -61,7 +61,7 @@ public class GetPlayerInfoHandler extends BaseHandler{
|
||||||
//竞技场免费次数刷新
|
//竞技场免费次数刷新
|
||||||
ArenaLogic.getInstance().flushFreeUseTimes(user);
|
ArenaLogic.getInstance().flushFreeUseTimes(user);
|
||||||
PlayerLogic.getInstance().vipflushEveryDay(user);
|
PlayerLogic.getInstance().vipflushEveryDay(user);
|
||||||
user.getUserMissionManager().onGameEvent(user, GameEvent.DAILY_REFRESH);
|
user.getUserMissionManager().onGameEvent(user, GameEvent.DAILY_REFRESH,0);
|
||||||
}
|
}
|
||||||
playerInfoManager.setLoginTime(TimeUtils.now());
|
playerInfoManager.setLoginTime(TimeUtils.now());
|
||||||
Map<Integer, Integer> guidePoints = playerInfoManager.getGuidePoints();
|
Map<Integer, Integer> guidePoints = playerInfoManager.getGuidePoints();
|
||||||
|
|
|
@ -40,6 +40,9 @@ public class UserMissionManager extends MongoBase {
|
||||||
Set<Integer> missionIds = SDailyTasksConfig.config.keySet();
|
Set<Integer> missionIds = SDailyTasksConfig.config.keySet();
|
||||||
int type = (int)parm[0];
|
int type = (int)parm[0];
|
||||||
if(type == 0){
|
if(type == 0){
|
||||||
|
if( dailyMissionIdsType.getDoingMissionIds().isEmpty() && dailyMissionIdsType.getFinishMissionIds().isEmpty() && dailyMissionIdsType.getRewardedMissionIds().isEmpty() ){
|
||||||
|
return;
|
||||||
|
}
|
||||||
dailyMissionIdsType.getDoingMissionIds().clear();
|
dailyMissionIdsType.getDoingMissionIds().clear();
|
||||||
dailyMissionIdsType.getFinishMissionIds().clear();
|
dailyMissionIdsType.getFinishMissionIds().clear();
|
||||||
dailyMissionIdsType.getRewardedMissionIds().clear();
|
dailyMissionIdsType.getRewardedMissionIds().clear();
|
||||||
|
|
Loading…
Reference in New Issue