mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
76 lines
2.1 KiB
Lua
76 lines
2.1 KiB
Lua
--[[
|
|
| This file was obtained through the combined efforts
|
|
| of Madbluntz & Plymouth Antiquarian Society.
|
|
|
|
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
|
| Maloy, DrPepper10 @ RIP, Atle!
|
|
|
|
|
| Visit for more: https://plymouth.thetwilightzone.ru/
|
|
--]]
|
|
|
|
local pairs = pairs
|
|
local math = math
|
|
local ix = ix
|
|
|
|
local playerMeta = FindMetaTable("Player")
|
|
|
|
function playerMeta:HasGasmask()
|
|
local character = self:GetCharacter()
|
|
if (!character) then return false end
|
|
|
|
local inventory = character:GetInventory()
|
|
if (!inventory) then return false end
|
|
|
|
local clothingItems = inventory:GetItems(true)
|
|
for _, v in pairs(clothingItems) do
|
|
if (v.isGasmask and v:GetData("equip")) then
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
|
|
function playerMeta:GetFilterItem()
|
|
if (!self:HasGasmask()) then return nil end
|
|
|
|
local itemID = self:GetCharacter():GetFilterItem()
|
|
if (ix.item.instances[itemID]) then
|
|
return ix.item.instances[itemID]
|
|
end
|
|
end
|
|
|
|
function playerMeta:GetFilterQuality()
|
|
local filter = self:GetFilterItem()
|
|
|
|
if (!filter) then return 0 end
|
|
|
|
if (filter.GetFilterQuality) then
|
|
return filter:GetFilterQuality()
|
|
else
|
|
return filter.filterQuality or 0.1
|
|
end
|
|
end
|
|
|
|
function playerMeta:GetFilterValue()
|
|
local filter = self:GetFilterItem()
|
|
|
|
if (!filter) then return 0 end
|
|
|
|
return filter:GetData("filterValue", filter.maxFilterValue)
|
|
end
|
|
|
|
function playerMeta:UpdateFilterValue(amount)
|
|
local filter = self:GetFilterItem()
|
|
if (!filter) then return end
|
|
|
|
local oldValue = filter:GetData("filterValue", filter.maxFilterValue)
|
|
filter:SetData("filterValue", math.Clamp(oldValue - amount, 0, filter.maxFilterValue))
|
|
|
|
if (ix.option.Get(self, "gasNotificationWarnings") and
|
|
oldValue >= filter.filterDecayStart * filter.maxFilterValue) then
|
|
if (filter:GetData("filterValue") == 0) then
|
|
self:NotifyLocalized("filterOut")
|
|
elseif (filter:GetData("filterValue") < filter.filterDecayStart * filter.maxFilterValue) then
|
|
self:NotifyLocalized("filterDecay")
|
|
end
|
|
end
|
|
end |