jihuang/mods/workshop-661253977/modmain.lua
2023-08-19 19:21:17 +08:00

102 lines
2.9 KiB
Lua

local _G = GLOBAL
local R_diao = GetModConfigData("rendiao")
local B_diao = GetModConfigData("baodiao")
local amu_diao = GetModConfigData("amudiao")
local zhuang_bei = GetModConfigData("zbdiao")
local modnillots = GetModConfigData("nillots") or 0
local R_d = R_diao - 3
local B_d = B_diao - 5
if R_d < 0 then R_d = 0 end if B_d < 0 then B_d = 0 end
AddComponentPostInit("container", function(Container, inst)
function Container:DropSuiji(ondeath)
local amu_x = true
local rev_x = true
for k=1, self.numslots do
local v = self.slots[k]
if amu_diao and amu_x and v and v.prefab == "amulet" then --掉落护符
amu_x = false
self:DropItem(v)
end
if amu_diao and rev_x and v and v.prefab == "reviver" then --掉落心脏
rev_x = false
self:DropItem(v)
end
end
for k=1, self.numslots do --随机掉落背包里的物品
local v = self.slots[math.random(1, self.numslots)]
if k > math.random(B_d, B_diao) then
return false
end
if v then
self:DropItem(v)
end
end
end
end)
AddComponentPostInit("inventory", function(Inventory, inst)
Inventory.oldDropEverythingFn = Inventory.DropEverything
function Inventory:DropSuiji(ondeath)
local amu_x = true
local rev_x = true
local nillots = modnillots
for k=1, self.maxslots do
local v = self.itemslots[k]
if amu_diao and amu_x and v and v.prefab == "amulet" then --掉落护符
amu_x = false
self:DropItem(v, true, true)
end
if amu_diao and rev_x and v and v.prefab == "reviver" then --掉落心脏
rev_x = false
self:DropItem(v, true, true)
end
end
for k=1, self.maxslots do --随机掉落身体上的物品
if k~=1 and k > math.random(R_d, R_diao) then
return false
end
if v then
self:DropItem(v, true, true)
end
end
for k=1, self.maxslots do --计算空格数量
if v == nil then
nillots = nillots + 1
end
end
if nillots == 0 then --掉落身体上一格的物品,为了能够使用心脏复活
local v = self.itemslots[1] --math.random(1, self.maxslots)
if v then
self:DropItem(v, true, true)
end
end
end
function Inventory:PlayerSiWang(ondeath)
for k, v in pairs(self.equipslots) do
if v:HasTag("backpack") and v.components.container then
v.components.container:DropSuiji(true)
end
end
if zhuang_bei then
for k, v in pairs(self.equipslots) do
if not v:HasTag("backpack") then
self:DropItem(v, true, true)
end
end
end
self.inst.components.inventory:DropSuiji(true)
end
function Inventory:DropEverything(ondeath, keepequip)
if not inst:HasTag("player") or inst:HasTag("player") and not inst.components.health --不是玩家或玩家有血则掉落全部物品
or inst:HasTag("player") and inst.components.health and inst.components.health.currenthealth > 0 then --兼容换人
return Inventory:oldDropEverythingFn(ondeath, keepequip)
else
return Inventory:PlayerSiWang(ondeath)
end
end
end)