137 lines
3.6 KiB
Plaintext
137 lines
3.6 KiB
Plaintext
/*
|
|
文件名: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); |