medical/vitals.lua
Elkien3 7797ad5d40 add treatable cut wound
lotta stuff, don't feel like explaining, cheers
2020-06-17 18:42:40 -05:00

70 lines
1.9 KiB
Lua

local timer = 0
local default_vitals = {}
default_vitals.temp = 98 --farhenhiet
default_vitals.oxygen = 94 --percent
default_vitals.respiratory = 12 --breaths per minute
default_vitals.pulse = 70 --beats per minute
default_vitals.volume = 5000 --milliliters
default_vitals.systolic = 110 --mmHg
default_vitals.diastolic = 70 --mmHg
minetest.register_on_joinplayer(function(player)
local name = player:get_player_name()
if not medical.data[name] then
medical.data[name] = {}
end
if not medical.data[name].vitals then
medical.data[name].vitals = default_vitals
end
end)
minetest.register_globalstep(function(dtime)
timer = timer + dtime;
if timer >= 5 then
for _,player in ipairs(minetest.get_connected_players()) do
local name = player:get_player_name()
if medical.data[name].injuries then
--handle loss of vital signs due to injuries
for index, injury in pairs (medical.data[name].injuries) do
local injurydef = medical.injuries[injury.name]
if injurydef.medical_step then
injurydef.medical_step()
end
if injury.vitals then
for vital, amount in pairs (injury.vitals) do
medical.data[name].vitals[vital] = medical.data[name].vitals[vital] - amount
end
end
--handle loss of vital signs due to injuries
end
end
if hunger then
--handle hunger things
end
if thirst then
--handle thirst things
end
local mv = medical.data[name].vitals
local perfusion = ((mv.oxygen-60)/34) * ((mv.pulse-30)/40) * ((mv.volume-2000)/3000) * ((mv.temp-70)/28)
if perfusion < .9 then --compensate by raising pulse and respiratory rate
elseif perfusion < .7 then --subject gets cold and dizzy
elseif perfusion < .5 then --subject is confused
elseif perfusion < .3 then --subject is unconscious
elseif perfusion < .1 then --subject stops breathing and pumping blood
else --subject is ded
end
end
timer = 0
end
end)