Sqr/Plugins/Ptst/Ptst_Func.nut

186 lines
6.8 KiB
Plaintext

/*
文件名:Ptst_Func.nut
路径:Plugins/Ptst/Ptst_Func.nut
创建日期:2023-07-08 15:47
文件用途:
*/
function AddTalismanIntData(obj, SkillId, Idx, Value) {
local Root = getroottable();
local RootTab;
if (!Root.rawin("LenheartTalismanSkillManager")) {
local T = {};
Root.rawset("LenheartTalismanSkillManager", T);
}
RootTab = Root["LenheartTalismanSkillManager"];
local objAddress = L_Sq_GetObjectAddress(obj);
local SkillAddress = L_Sq_GetSkillAddress(SkillId);
local Key = "LJ" + objAddress + "SkillAddress" + SkillAddress + "Idx" + Idx;
if (RootTab.rawin(Key)) {
local basedata = RootTab[Key];
basedata += Value;
RootTab.rawset(Key, basedata);
} else RootTab.rawset(Key, Value);
}
function AddTalismanLevelData(obj, SkillId, Idx, Value) {
local Root = getroottable();
local RootTab;
if (!Root.rawin("LenheartTalismanSkillManager")) {
local T = {};
Root.rawset("LenheartTalismanSkillManager", T);
}
RootTab = Root["LenheartTalismanSkillManager"];
local objAddress = L_Sq_GetObjectAddress(obj);
local SkillAddress = L_Sq_GetSkillAddress(SkillId);
local Key = "EX_LJ" + "SkillAddress" + SkillAddress + "Idx" + Idx;
if (RootTab.rawin(Key)) {
local basedata = RootTab[Key];
basedata += Value;
RootTab.rawset(Key, basedata);
} else RootTab.rawset(Key, Value);
}
function AddTalismanSkillCoolTime(obj, SkillId, Value) {
local Root = getroottable();
local RootTab;
if (!Root.rawin("LenheartTalismanSkillManager")) {
local T = {};
Root.rawset("LenheartTalismanSkillManager", T);
}
RootTab = Root["LenheartTalismanSkillManager"];
local objAddress = L_Sq_GetObjectAddress(obj);
local SkillAddress = L_Sq_GetSkillAddress(SkillId);
local Key = "CT_LJ" + "SkillAddress" + SkillAddress;
if (RootTab.rawin(Key)) {
local basedata = RootTab[Key];
basedata += Value;
RootTab.rawset(Key, basedata);
} else RootTab.rawset(Key, Value);
}
function ClearTalismanData() {
local Root = getroottable();
if (Root.rawin("LenheartTalismanSkillManager")) {
Root.rawdelete("LenheartTalismanSkillManager");
}
}
//获取原始静态数据
function GetTalismanBaseIntData(obj, SkillId, Idx) {
local Root = getroottable();
local RootTab;
if (!Root.rawin("LenheartTalismanSkillManager")) {
local T = {};
Root.rawset("LenheartTalismanSkillManager", T);
}
RootTab = Root["LenheartTalismanSkillManager"];
local objAddress = L_Sq_GetObjectAddress(obj);
local SkillAddress = L_Sq_GetSkillAddress(SkillId);
local Key = "LJ" + objAddress + "SkillAddress" + SkillAddress + "Idx" + Idx;
if (RootTab.rawin(Key)) {
local basedata = RootTab[Key];
return obj.sq_GetIntData(SkillId, Idx) - basedata;
} else return obj.sq_GetIntData(SkillId, Idx);
}
//获取原始静态数据
function GetTalismanBaseLevelData(obj, SkillId, Idx) {
local Root = getroottable();
local RootTab;
if (!Root.rawin("LenheartTalismanSkillManager")) {
local T = {};
Root.rawset("LenheartTalismanSkillManager", T);
}
RootTab = Root["LenheartTalismanSkillManager"];
local objAddress = L_Sq_GetObjectAddress(obj);
local SkillAddress = L_Sq_GetSkillAddress(SkillId);
local Key = "EX_LJ" + "SkillAddress" + SkillAddress + "Idx" + Idx;
if (RootTab.rawin(Key)) {
local basedata = RootTab[Key];
return obj.sq_GetLevelData(SkillId, Idx, sq_GetSkillLevel(obj, SkillId)) - basedata;
} else return obj.sq_GetLevelData(SkillId, Idx, sq_GetSkillLevel(obj, SkillId));
}
//获取原始冷却时间
function GetTalismanBaseCoolTime(obj, SkillId) {
local Root = getroottable();
local RootTab;
if (!Root.rawin("LenheartTalismanSkillManager")) {
local T = {};
Root.rawset("LenheartTalismanSkillManager", T);
}
RootTab = Root["LenheartTalismanSkillManager"];
local objAddress = L_Sq_GetObjectAddress(obj);
local SkillAddress = L_Sq_GetSkillAddress(SkillId);
local Key = "CT_LJ" + "SkillAddress" + SkillAddress;
if (RootTab.rawin(Key)) {
local basedata = RootTab[Key];
return sq_GetSkill(obj,SkillId).getCoolTime(obj, -1) - basedata;
} else return sq_GetSkill(obj,SkillId).getCoolTime(obj, -1);
}
//光芒圣痕拔刀奥义
function LenheartTalisman_100401044(obj) {
//准备动作时间
AddTalismanIntData(obj, 9, 0, -((GetTalismanBaseIntData(obj, 9, 0) * 0.3).tointeger()));
//拔刀伤害
AddTalismanLevelData(obj, 9, 0, ((GetTalismanBaseLevelData(obj, 9, 0) * 0.28).tointeger()));
}
//光芒圣痕:无形剑舞
function LenheartTalisman_100401046(obj) {
//攻击范围
AddTalismanIntData(obj, 73, 13, -((GetTalismanBaseIntData(obj, 73, 13) * 0.25).tointeger()));
AddTalismanIntData(obj, 73, 14, -((GetTalismanBaseIntData(obj, 73, 14) * 0.25).tointeger()));
//多段攻击次数
AddTalismanIntData(obj, 73, 1, 8);
AddTalismanIntData(obj, 73, 2, 8);
AddTalismanIntData(obj, 73, 3, 8);
AddTalismanIntData(obj, 73, 4, 8);
AddTalismanIntData(obj, 73, 5, 8);
AddTalismanIntData(obj, 73, 6, 8);
AddTalismanIntData(obj, 73, 7, 8);
AddTalismanIntData(obj, 73, 8, 8);
AddTalismanIntData(obj, 73, 11, 8);
AddTalismanIntData(obj, 73, 12, 8);
}
//光芒圣痕:猛龙过江
function LenheartTalisman_100401045(obj) {
//多段攻击次数上限
AddTalismanIntData(obj, 72, 1, 5);
//攻击力
AddTalismanLevelData(obj, 72, 0, -((GetTalismanBaseLevelData(obj, 72, 0) * 0.57).tointeger()));
AddTalismanLevelData(obj, 72, 1, -((GetTalismanBaseLevelData(obj, 72, 1) * 0.57).tointeger()));
}
//光芒圣痕:流星审判
function LenheartTalisman_100401047(obj) {
//流星剑间隔
AddTalismanLevelData(obj, 235, 7, -((GetTalismanBaseLevelData(obj, 235, 7) * 0.2).tointeger()));
//流星剑数量
AddTalismanLevelData(obj, 235, 6, 9);
}
//光芒圣痕:一合残像
function LenheartTalisman_100401049(obj) {
//爆炸攻击力
AddTalismanLevelData(obj, 234, 2, ((GetTalismanBaseLevelData(obj, 234, 2) * 0.21).tointeger()));
}
//光芒圣痕:破空一刀
function LenheartTalisman_100401048(obj) {
//准备动作时间
AddTalismanLevelData(obj, 97, 2, -((GetTalismanBaseLevelData(obj, 97, 2) * 0.4).tointeger()));
AddTalismanSkillCoolTime(obj,97,-((GetTalismanBaseCoolTime(obj,97) * 0.1).tointeger()));
}
//光芒圣痕:最后一斩
function LenheartTalisman_100401050(obj) {
//攻击力
AddTalismanLevelData(obj, 236, 1, -((GetTalismanBaseLevelData(obj, 236, 1) * 0.13).tointeger()));
AddTalismanLevelData(obj, 236, 2, -((GetTalismanBaseLevelData(obj, 236, 2) * 0.13).tointeger()));
AddTalismanLevelData(obj, 236, 4, -((GetTalismanBaseLevelData(obj, 236, 4) * 0.13).tointeger()));
}