ikea_restaurant, ikea_player - add basic hunger

master
benrob0329 2022-02-07 17:53:05 -05:00
parent 111a531768
commit f923c3ee4b
8 changed files with 540 additions and 4 deletions

View File

@ -1,5 +1,8 @@
local player_data = {}
-- Settings --
local hunger_max = 5
-- Player Setup --
minetest.register_on_joinplayer(function(player)
-- Initialize Data --
@ -54,6 +57,7 @@ end)
-- Player Updates --
local timer = 0
local hp_timer = 0
local hunger_timer = 0
minetest.register_globalstep(function(dtime)
timer = timer + dtime
@ -68,19 +72,32 @@ minetest.register_globalstep(function(dtime)
local name = player:get_player_name()
local data = player_data[name]
local props = player:get_properties()
local meta = player:get_meta()
local hp = player:get_hp()
local hunger = meta:get_int("ikea_hunger")
-- Hunger Over Time --
hunger_timer = hunger_timer + dtime
if (hunger_timer > 60) and (hunger < hunger_max) then
hunger = hunger + 1
hunger_timer = 0
end
-- Healing Over Time --
hp_timer = hp_timer + dtime
if (hp_timer > 1) and (hp < props.hp_max) then
if (hp_timer > 1) and (hp < props.hp_max - hunger) then
hp = hp + 1
hp_timer = 0
end
-- Satus Vignette --
if not data.hp_last or (hp ~= data.hp_last) then
local vign_texture = "(ikea_player_vignette.png^[multiply:#5c3d41)^[opacity:"
.. tostring((1 - (hp / props.hp_max)) * 255)
local vign_texture = table.concat{
"(ikea_player_vignette.png^[multiply:",
(hp >= (props.hp_max - hunger)) and "#000000" or "#5c3d41",
")^[opacity:",
tostring((1 - (hp / props.hp_max)) * 255),
}
if not data.vign_id then
error("Player Vignette ID Not Set!")
@ -91,6 +108,7 @@ minetest.register_globalstep(function(dtime)
end
player:set_hp(hp)
meta:set_int("ikea_hunger", hunger)
end
end
end)

View File

@ -33,6 +33,7 @@ local c_ceiling_decor = get_content_id("ikea_restaurant:ceiling_decor")
local c_seperator_x = get_content_id("ikea_restaurant:seperator_x")
local c_seperator_z = get_content_id("ikea_restaurant:seperator_z")
local c_table_and_chairs = get_content_id("ikea_restaurant:table_and_chairs")
local c_table_filler = get_content_id("ikea_restaurant:table_filler")
local c_kitchen_wall = get_content_id("ikea_restaurant:kitchen_wall")
local c_kitchen_food_dish = get_content_id("ikea_restaurant:kitchen_food_dish")
@ -127,14 +128,39 @@ ikea_mapgen.register_department({
-- Tables and Chairs --
if section_edges.e then
data[va:index(x2_max - 1, 1, z2_max - 3)] = c_table_and_chairs
data[va:index(x2_max - 2, 1, z2_max - 3)] = c_table_filler
data[va:index(x2_max - 1, 1, z2_max - 4)] = c_table_filler
param2s[va:index(x2_max - 1, 1, z2_max - 4)] = 2
data[va:index(x2_max - 2, 1, z2_max - 4)] = c_table_filler
param2s[va:index(x2_max - 2, 1, z2_max - 4)] = 2
data[va:index(x2_max - 3, 1, z2_max - 3)] = c_seperator_z
data[va:index(x2_max - 3, 1, z2_max - 4)] = c_seperator_z
data[va:index(x2_max - 4, 1, z2_max - 3)] = c_table_and_chairs
data[va:index(x2_max - 5, 1, z2_max - 3)] = c_table_filler
data[va:index(x2_max - 4, 1, z2_max - 4)] = c_table_filler
param2s[va:index(x2_max - 4, 1, z2_max - 4)] = 2
data[va:index(x2_max - 5, 1, z2_max - 4)] = c_table_filler
param2s[va:index(x2_max - 5, 1, z2_max - 4)] = 2
elseif section_edges.w then
data[va:index(x2 + 2, 1, z2_max - 3)] = c_table_and_chairs
data[va:index(x2 + 1, 1, z2_max - 3)] = c_table_filler
data[va:index(x2 + 1, 1, z2_max - 4)] = c_table_filler
param2s[va:index(x2 + 1, 1, z2_max - 4)] = 2
data[va:index(x2 + 2, 1, z2_max - 4)] = c_table_filler
param2s[va:index(x2 + 2, 1, z2_max - 4)] = 2
data[va:index(x2 + 3, 1, z2_max - 3)] = c_seperator_z
data[va:index(x2 + 3, 1, z2_max - 4)] = c_seperator_z
data[va:index(x2 + 5, 1, z2_max - 3)] = c_table_and_chairs
data[va:index(x2 + 4, 1, z2_max - 3)] = c_table_filler
data[va:index(x2 + 4, 1, z2_max - 4)] = c_table_filler
param2s[va:index(x2 + 4, 1, z2_max - 4)] = 2
data[va:index(x2 + 5, 1, z2_max - 4)] = c_table_filler
param2s[va:index(x2 + 5, 1, z2_max - 4)] = 2
end
elseif section <= 3 then
-- Kitchen --

View File

@ -0,0 +1,400 @@
# Blender v3.0.0 OBJ File: 'ikea_restaurant_plate.blend'
# www.blender.org
o Cube_Cube.002
v 0.375000 -0.437500 -0.250000
v 0.375000 -0.375000 -0.250000
v 0.375000 -0.437500 0.250000
v 0.375000 -0.375000 0.250000
v 0.250000 -0.437500 -0.250000
v 0.250000 -0.375000 -0.250000
v 0.250000 -0.437500 0.250000
v 0.250000 -0.375000 0.250000
v 0.250000 -0.500000 -0.250000
v 0.250000 -0.437500 -0.250000
v 0.250000 -0.500000 0.250000
v 0.250000 -0.437500 0.250000
v -0.250000 -0.500000 -0.250000
v -0.250000 -0.437500 -0.250000
v -0.250000 -0.500000 0.250000
v -0.250000 -0.437500 0.250000
v -0.250000 -0.437500 -0.250000
v -0.250000 -0.375000 -0.250000
v -0.250000 -0.437500 0.250000
v -0.250000 -0.375000 0.250000
v -0.375000 -0.437500 -0.250000
v -0.375000 -0.375000 -0.250000
v -0.375000 -0.437500 0.250000
v -0.375000 -0.375000 0.250000
v -0.250000 -0.437500 -0.375000
v -0.250000 -0.375000 -0.375000
v 0.250000 -0.437500 -0.375000
v 0.250000 -0.375000 -0.375000
v -0.250000 -0.437500 -0.250000
v -0.250000 -0.375000 -0.250000
v 0.250000 -0.437500 -0.250000
v 0.250000 -0.375000 -0.250000
v -0.250000 -0.437500 0.250000
v -0.250000 -0.375000 0.250000
v 0.250000 -0.437500 0.250000
v 0.250000 -0.375000 0.250000
v -0.250000 -0.437500 0.375000
v -0.250000 -0.375000 0.375000
v 0.250000 -0.437500 0.375000
v 0.250000 -0.375000 0.375000
v -0.250000 -0.437500 -0.312500
v -0.250000 -0.375000 -0.312500
v -0.250000 -0.437500 -0.250000
v -0.250000 -0.375000 -0.250000
v -0.312500 -0.437500 -0.312500
v -0.312500 -0.375000 -0.312500
v -0.312500 -0.437500 -0.250000
v -0.312500 -0.375000 -0.250000
v -0.250000 -0.437500 0.250000
v -0.250000 -0.375000 0.250000
v -0.250000 -0.437500 0.312500
v -0.250000 -0.375000 0.312500
v -0.312500 -0.437500 0.250000
v -0.312500 -0.375000 0.250000
v -0.312500 -0.437500 0.312500
v -0.312500 -0.375000 0.312500
v 0.312500 -0.437500 0.250000
v 0.312500 -0.375000 0.250000
v 0.312500 -0.437500 0.312500
v 0.312500 -0.375000 0.312500
v 0.250000 -0.437500 0.250000
v 0.250000 -0.375000 0.250000
v 0.250000 -0.437500 0.312500
v 0.250000 -0.375000 0.312500
v 0.312500 -0.437500 -0.312500
v 0.312500 -0.375000 -0.312500
v 0.312500 -0.437500 -0.250000
v 0.312500 -0.375000 -0.250000
v 0.250000 -0.437500 -0.312500
v 0.250000 -0.375000 -0.312500
v 0.250000 -0.437500 -0.250000
v 0.250000 -0.375000 -0.250000
v -0.187500 -0.437500 -0.250000
v -0.187500 -0.375000 -0.250000
v -0.187500 -0.437500 -0.187500
v -0.187500 -0.375000 -0.187500
v -0.250000 -0.375000 -0.250000
v -0.250000 -0.437500 -0.187500
v -0.250000 -0.375000 -0.187500
v 0.250000 -0.375000 -0.250000
v 0.250000 -0.437500 -0.187500
v 0.250000 -0.375000 -0.187500
v 0.187500 -0.437500 -0.250000
v 0.187500 -0.375000 -0.250000
v 0.187500 -0.437500 -0.187500
v 0.187500 -0.375000 -0.187500
v 0.250000 -0.437500 0.187500
v 0.250000 -0.375000 0.187500
v 0.250000 -0.375000 0.250000
v 0.187500 -0.437500 0.187500
v 0.187500 -0.375000 0.187500
v 0.187500 -0.437500 0.250000
v 0.187500 -0.375000 0.250000
v -0.187500 -0.437500 0.187500
v -0.187500 -0.375000 0.187500
v -0.187500 -0.437500 0.250000
v -0.187500 -0.375000 0.250000
v -0.250000 -0.437500 0.187500
v -0.250000 -0.375000 0.187500
v -0.250000 -0.375000 0.250000
vt 0.718750 0.312500
vt 0.718750 0.343750
vt 0.468750 0.343750
vt 0.468750 0.312500
vt 0.781250 0.218750
vt 0.781250 0.250000
vt 0.718750 0.250000
vt 0.718750 0.218750
vt 0.718750 0.562500
vt 0.718750 0.593750
vt 0.468750 0.593750
vt 0.468750 0.562500
vt 0.468750 0.031250
vt 0.468750 0.062500
vt 0.406250 0.062500
vt 0.406250 0.031250
vt 0.000000 0.468750
vt 0.062500 0.468750
vt 0.062500 0.718750
vt 0.000000 0.718750
vt 0.062500 0.312500
vt 0.000000 0.312500
vt 0.000000 0.062500
vt 0.062500 0.062500
vt 0.718750 0.281250
vt 0.718750 0.312500
vt 0.468750 0.312500
vt 0.468750 0.281250
vt 0.718750 0.187500
vt 0.718750 0.218750
vt 0.468750 0.218750
vt 0.468750 0.187500
vt 0.718750 0.093750
vt 0.718750 0.125000
vt 0.468750 0.125000
vt 0.468750 0.093750
vt 0.718750 0.000000
vt 0.718750 0.031250
vt 0.468750 0.031250
vt 0.468750 0.000000
vt 0.062500 0.468750
vt 0.312500 0.468750
vt 0.312500 0.718750
vt 0.062500 0.718750
vt 0.312500 0.312500
vt 0.062500 0.312500
vt 0.062500 0.062500
vt 0.312500 0.062500
vt 0.718750 0.437500
vt 0.718750 0.468750
vt 0.468750 0.468750
vt 0.468750 0.437500
vt 0.468750 0.218750
vt 0.468750 0.250000
vt 0.406250 0.250000
vt 0.406250 0.218750
vt 0.718750 0.125000
vt 0.718750 0.156250
vt 0.468750 0.156250
vt 0.468750 0.125000
vt 0.781250 0.031250
vt 0.781250 0.062500
vt 0.718750 0.062500
vt 0.718750 0.031250
vt 0.312500 0.468750
vt 0.375000 0.468750
vt 0.375000 0.718750
vt 0.312500 0.718750
vt 0.375000 0.312500
vt 0.312500 0.312500
vt 0.312500 0.062500
vt 0.375000 0.062500
vt 0.718750 0.031250
vt 0.718750 0.062500
vt 0.468750 0.062500
vt 0.468750 0.031250
vt 0.781250 0.312500
vt 0.781250 0.343750
vt 0.718750 0.343750
vt 0.718750 0.312500
vt 0.718750 0.375000
vt 0.718750 0.406250
vt 0.468750 0.406250
vt 0.468750 0.375000
vt 0.468750 0.125000
vt 0.468750 0.156250
vt 0.406250 0.156250
vt 0.406250 0.125000
vt 0.062500 0.781250
vt 0.062500 0.718750
vt 0.312500 0.718750
vt 0.312500 0.781250
vt 0.062500 0.062500
vt 0.062500 0.000000
vt 0.312500 0.000000
vt 0.312500 0.062500
vt 0.718750 0.500000
vt 0.718750 0.531250
vt 0.468750 0.531250
vt 0.468750 0.500000
vt 0.468750 0.312500
vt 0.468750 0.343750
vt 0.406250 0.343750
vt 0.406250 0.312500
vt 0.718750 0.218750
vt 0.718750 0.250000
vt 0.468750 0.250000
vt 0.468750 0.218750
vt 0.781250 0.125000
vt 0.781250 0.156250
vt 0.718750 0.156250
vt 0.718750 0.125000
vt 0.062500 0.468750
vt 0.062500 0.406250
vt 0.312500 0.406250
vt 0.312500 0.468750
vt 0.062500 0.375000
vt 0.062500 0.312500
vt 0.312500 0.312500
vt 0.312500 0.375000
vt 0.468750 0.125000
vt 0.468750 0.156250
vt 0.437500 0.156250
vt 0.437500 0.125000
vt 0.750000 0.031250
vt 0.750000 0.062500
vt 0.718750 0.062500
vt 0.718750 0.031250
vt 0.312500 0.718750
vt 0.343750 0.718750
vt 0.343750 0.750000
vt 0.312500 0.750000
vt 0.343750 0.062500
vt 0.312500 0.062500
vt 0.312500 0.031250
vt 0.343750 0.031250
vt 0.468750 0.218750
vt 0.468750 0.250000
vt 0.437500 0.250000
vt 0.437500 0.218750
vt 0.750000 0.125000
vt 0.750000 0.156250
vt 0.718750 0.156250
vt 0.718750 0.125000
vt 0.312500 0.437500
vt 0.343750 0.437500
vt 0.343750 0.468750
vt 0.312500 0.468750
vt 0.343750 0.343750
vt 0.312500 0.343750
vt 0.312500 0.312500
vt 0.343750 0.312500
vt 0.468750 0.312500
vt 0.468750 0.343750
vt 0.437500 0.343750
vt 0.437500 0.312500
vt 0.750000 0.218750
vt 0.750000 0.250000
vt 0.718750 0.250000
vt 0.718750 0.218750
vt 0.031250 0.437500
vt 0.062500 0.437500
vt 0.062500 0.468750
vt 0.031250 0.468750
vt 0.062500 0.343750
vt 0.031250 0.343750
vt 0.031250 0.312500
vt 0.062500 0.312500
vt 0.750000 0.312500
vt 0.750000 0.343750
vt 0.718750 0.343750
vt 0.718750 0.312500
vt 0.468750 0.031250
vt 0.468750 0.062500
vt 0.437500 0.062500
vt 0.437500 0.031250
vt 0.031250 0.718750
vt 0.062500 0.718750
vt 0.062500 0.750000
vt 0.031250 0.750000
vt 0.062500 0.062500
vt 0.031250 0.062500
vt 0.031250 0.031250
vt 0.062500 0.031250
vt 0.718750 0.437500
vt 0.718750 0.468750
vt 0.687500 0.468750
vt 0.687500 0.437500
vt 0.500000 0.375000
vt 0.500000 0.406250
vt 0.468750 0.406250
vt 0.468750 0.375000
vt 0.312500 0.093750
vt 0.281250 0.093750
vt 0.281250 0.062500
vt 0.312500 0.062500
vt 0.718750 0.375000
vt 0.718750 0.406250
vt 0.687500 0.406250
vt 0.687500 0.375000
vt 0.500000 0.562500
vt 0.500000 0.593750
vt 0.468750 0.593750
vt 0.468750 0.562500
vt 0.093750 0.093750
vt 0.062500 0.093750
vt 0.062500 0.062500
vt 0.093750 0.062500
vt 0.718750 0.562500
vt 0.718750 0.593750
vt 0.687500 0.593750
vt 0.687500 0.562500
vt 0.500000 0.500000
vt 0.500000 0.531250
vt 0.468750 0.531250
vt 0.468750 0.500000
vt 0.093750 0.312500
vt 0.062500 0.312500
vt 0.062500 0.281250
vt 0.093750 0.281250
vt 0.500000 0.437500
vt 0.500000 0.468750
vt 0.468750 0.468750
vt 0.468750 0.437500
vt 0.718750 0.500000
vt 0.718750 0.531250
vt 0.687500 0.531250
vt 0.687500 0.500000
vt 0.312500 0.312500
vt 0.281250 0.312500
vt 0.281250 0.281250
vt 0.312500 0.281250
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
s off
f 1/1/1 2/2/1 4/3/1 3/4/1
f 3/5/2 4/6/2 8/7/2 7/8/2
f 7/9/3 8/10/3 6/11/3 5/12/3
f 5/13/4 6/14/4 2/15/4 1/16/4
f 3/17/5 7/18/5 5/19/5 1/20/5
f 8/21/6 4/22/6 2/23/6 6/24/6
f 9/25/1 10/26/1 12/27/1 11/28/1
f 11/29/2 12/30/2 16/31/2 15/32/2
f 15/33/3 16/34/3 14/35/3 13/36/3
f 13/37/4 14/38/4 10/39/4 9/40/4
f 11/41/5 15/42/5 13/43/5 9/44/5
f 16/45/6 12/46/6 10/47/6 14/48/6
f 17/49/1 18/50/1 20/51/1 19/52/1
f 19/53/2 20/54/2 24/55/2 23/56/2
f 23/57/3 24/58/3 22/59/3 21/60/3
f 21/61/4 22/62/4 18/63/4 17/64/4
f 19/65/5 23/66/5 21/67/5 17/68/5
f 24/69/6 20/70/6 18/71/6 22/72/6
f 25/73/4 26/74/4 28/75/4 27/76/4
f 27/77/1 28/78/1 32/79/1 31/80/1
f 31/81/2 32/82/2 30/83/2 29/84/2
f 29/85/3 30/86/3 26/87/3 25/88/3
f 27/89/5 31/90/5 29/91/5 25/92/5
f 32/93/6 28/94/6 26/95/6 30/96/6
f 33/97/4 34/98/4 36/99/4 35/100/4
f 35/101/1 36/102/1 40/103/1 39/104/1
f 39/105/2 40/106/2 38/107/2 37/108/2
f 37/109/3 38/110/3 34/111/3 33/112/3
f 35/113/5 39/114/5 37/115/5 33/116/5
f 40/117/6 36/118/6 34/119/6 38/120/6
f 47/121/3 48/122/3 46/123/3 45/124/3
f 45/125/4 46/126/4 42/127/4 41/128/4
f 43/129/5 47/130/5 45/131/5 41/132/5
f 48/133/6 44/134/6 42/135/6 46/136/6
f 51/137/2 52/138/2 56/139/2 55/140/2
f 55/141/3 56/142/3 54/143/3 53/144/3
f 51/145/5 55/146/5 53/147/5 49/148/5
f 56/149/6 52/150/6 50/151/6 54/152/6
f 57/153/1 58/154/1 60/155/1 59/156/1
f 59/157/2 60/158/2 64/159/2 63/160/2
f 59/161/5 63/162/5 61/163/5 57/164/5
f 64/165/6 60/166/6 58/167/6 62/168/6
f 65/169/1 66/170/1 68/171/1 67/172/1
f 69/173/4 70/174/4 66/175/4 65/176/4
f 67/177/5 71/178/5 69/179/5 65/180/5
f 72/181/6 68/182/6 66/183/6 70/184/6
f 73/185/1 74/186/1 76/187/1 75/188/1
f 75/189/2 76/190/2 79/191/2 78/192/2
f 79/193/6 76/194/6 74/195/6 77/196/6
f 81/197/2 82/198/2 86/199/2 85/200/2
f 85/201/3 86/202/3 84/203/3 83/204/3
f 86/205/6 82/206/6 80/207/6 84/208/6
f 92/209/3 93/210/3 91/211/3 90/212/3
f 90/213/4 91/214/4 88/215/4 87/216/4
f 93/217/6 89/218/6 88/219/6 91/220/6
f 94/221/1 95/222/1 97/223/1 96/224/1
f 98/225/4 99/226/4 95/227/4 94/228/4
f 100/229/6 97/230/6 95/231/6 99/232/6

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 B

View File

@ -107,7 +107,17 @@ minetest.register_node("ikea_restaurant:table_and_chairs", {
mesh = "ikea_restaurant_table_and_chairs.obj",
tiles = { { name = "ikea_restaurant_kitchen_table_and_chairs.png" } },
paramtype = "light",
groups = { static = 1 },
groups = { static = 1, ikea_food_table = 1 },
})
minetest.register_node("ikea_restaurant:table_filler", {
description = "Restaurant Table and Chairs Filler (you hacker you!)",
drawtype = "airlike",
pointable = true,
walkable = true,
paramtype = "light",
paramtype2 = "facedir",
groups = { static = 1, ikea_food_table = 1 },
})
minetest.register_node("ikea_restaurant:kitchen_wall", {
@ -125,5 +135,87 @@ minetest.register_node(
mesh = "ikea_restaurant_kitchen_food_dish.obj",
tiles = { { name = "ikea_restaurant_kitchen_food_dish.png" } },
groups = { static = 1 },
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
if itemstack:is_empty() then
return ItemStack("ikea_restaurant:plate_of_food")
else
return itemstack
end
end,
})
)
minetest.register_node("ikea_restaurant:plate", table.merge(
ikea.default_mesh(),
{
description = "Restaurant Plate (Empty)",
mesh = "ikea_restaurant_plate.obj",
tiles = {{name = "ikea_restaurant_plate.png"}},
groups = {carryable = 1},
}
))
minetest.register_entity("ikea_restaurant:food", {
initial_properties = {
visual = "item",
visual_size = vector.new(0.5, 0.5, 0.5),
physical = false,
collide_with_objects = false,
pointable = false,
},
on_activate = function(self, staticdata, dtime_s)
local props = self.object:get_properties()
props.wield_item = staticdata
self.object:set_properties(props)
end,
on_step = function(self, dtime, moveresult)
self._timer = (self._timer or 0) + dtime
if self._timer < 10 then
return
else
self.object:remove()
end
end,
})
minetest.register_node("ikea_restaurant:plate_of_food", table.merge(
ikea.default_mesh(),
{
description = "Restaurant Plate (Full)",
mesh = "ikea_restaurant_plate.obj",
tiles = {{name = "ikea_restaurant_plate_of_food.png"}},
groups = {carryable = 1},
on_place = function(itemstack, placer, pointed_thing)
local node = minetest.get_node(pointed_thing.under)
if node and (minetest.get_item_group(node.name, "ikea_food_table") == 1) then
local seat_pos = (minetest.facedir_to_dir(node.param2) * 0.75) + pointed_thing.under
local player_pos = placer:get_pos()
local meta = placer:get_meta()
local hunger = meta:get_int("ikea_hunger")
placer:set_physics_override({speed = 0})
placer:set_pos(seat_pos)
minetest.add_entity(vector.offset(pointed_thing.under, 0, 1, 0), "ikea_restaurant:food", "ikea_restaurant:plate_of_food")
local delay = 0
for i = hunger, 0, -1 do
delay = delay + 1
minetest.after(delay, meta.set_int, meta, "ikea_hunger", i)
end
minetest.after(10, function()
placer:set_pos(player_pos)
placer:set_physics_override({speed = 1})
end)
return ItemStack("")
else
return nil
end
end,
}
))