2025-01-04 23:00:19 +08:00

97 lines
2.8 KiB
Lua
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.

--- 模式表
ModeTable = {};
ModeTable.EModeType = {
Common = 1, -- 普通模式
Rob = 2, -- 掠夺模式
};
ModeTable.BenefitMinLimit = 0.5;
ModeTable.ModeInfo = {
--- 依次递减
[ModeTable.EModeType.Common] = {
---@param InVictim PlayerKey
---@param InCauserKey PlayerKey
---@param InAttr table<PlayerKey>
DeadFunc = function(InAttr, InVictim, InCauserKey)
local OldAttr = TableHelper.DeepCopyTable(InAttr[InVictim]);
for i, v in pairs(DefaultSettings.BenefitInto) do
if v.EnableKill then
local RawValue = InAttr[InVictim][i];
if i ~= DefaultSettings.EPawnBenefitType.Shield then
local AppendValue = 0;
if RawValue > 3 then
AppendValue = 2;
elseif RawValue > 2 then
-- 减去 1.5 倍
AppendValue = 1.5;
elseif RawValue > 1 then
AppendValue = 1;
else
AppendValue = 0.5;
end
table.addTableNum(InAttr[InVictim], i, -v.AddValue * DefaultSettings.BenefitInto[i].DefaultValue * AppendValue, ModeTable.BenefitMinLimit);
else
table.addTableNum(InAttr[InVictim], i, -v.AddValue, 0);
end
end
end
return OldAttr;
end,
--- 击杀者所赋予的值
KillerFunc = function(InVictimAttr, InAttr, InVictim, InCauserKey)
for i, v in pairs(DefaultSettings.BenefitInto) do
if v.EnableKill then table.addTableNum(InAttr[InCauserKey], i, v.AddValue); end
end
end,
Chinese = '普通',
},
[ModeTable.EModeType.Rob] = {
--- 剥夺
DeadFunc = function(InAttr, InVictim, InCauserKey)
-- 检查大于1 的部分,然后拿取 60%剩下的如果小于1拿取 20%,小于 50% 不拿取,但是可以增长
local Old = TableHelper.DeepCopyTable(InAttr[InVictim]);
for i, v in pairs(DefaultSettings.BenefitInto) do
if v.EnableKill then
local RawValue = InAttr[InVictim][i];
if i ~= DefaultSettings.EPawnBenefitType.Shield then
local AppendValue = 0;
if RawValue > 1.5 then
AppendValue = (RawValue - 1) * 0.6;
else
AppendValue = 0.2;
end
table.addTableNum(InAttr[InVictim], i, -AppendValue, ModeTable.BenefitMinLimit);
else
table.addTableNum(InAttr[InVictim], i, -v.AddValue, 0);
end
end
end
return Old;
end,
KillerFunc = function(InVictimAttr, InAttr, InVictim, InCauserKey)
-- 获取部分
for i, v in pairs(DefaultSettings.BenefitInto) do
if v.EnableKill then
local Raw = InVictimAttr[i];
if i ~= DefaultSettings.EPawnBenefitType.Shield then
local Append = 0;
if Raw > 1.5 then
Append = (Raw - 1) * 0.6;
else
Append = 0.2;
end
table.addTableNum(InAttr[InCauserKey], i, Append, DefaultSettings.MaxBodySize);
else
table.addTableNum(InAttr[InCauserKey], i, v.AddValue, DefaultSettings.MaxBodySize);
end
end
end
end,
Chinese = '掠夺',
},
}
return ModeTable;