70 lines
1.9 KiB
Lua
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) |