From 187d2f285e36e30618a53fbf94f94bbc95fc0d6c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 17 Oct 2022 01:20:24 +0200 Subject: [PATCH] Change eat sound and particle if full --- mods/rp_default/textures/magicpuff2.png | Bin 0 -> 109 bytes mods/rp_hunger/init.lua | 34 +++++++++++++++++------- 2 files changed, 24 insertions(+), 10 deletions(-) create mode 100644 mods/rp_default/textures/magicpuff2.png diff --git a/mods/rp_default/textures/magicpuff2.png b/mods/rp_default/textures/magicpuff2.png new file mode 100644 index 0000000000000000000000000000000000000000..82b705c306ea96c9eef6fbdf40dd9154897858dc GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1SGw4HSYi^wvr&fU?2?ydCS-*0x2a=7srqa z#$*Mao`VeCFN_Tsj4rr-Z)9}gThFpA&_YL@gJJ6`)ujs^sysltJYD@<);T3K0RU^n B8A<>E literal 0 HcmV?d00001 diff --git a/mods/rp_hunger/init.lua b/mods/rp_hunger/init.lua index 65af17ab..409eac87 100644 --- a/mods/rp_hunger/init.lua +++ b/mods/rp_hunger/init.lua @@ -57,6 +57,19 @@ local timer_interval = tonumber(minetest.settings:get("hunger_step")) or 3.0 timer_interval = math.max(0.0, timer_interval) local timer = 0 +-- play eating sound +-- * pos: Position +-- * player: Sound attached to player +-- * is_full: If true, play a different sound when the sound +-- should symbolize fullness (hunger and saturation at max) +local function play_eat_sound(pos, player, is_full) + local pitch + if is_full then + pitch = 0.9 + end + minetest.sound_play("hunger_eat", {pos = pos, max_hear_distance = 8, object=player, pitch=pitch}, true) +end + -- Loading and saving local function save_hunger() @@ -284,7 +297,14 @@ local function on_item_eat(hpdata, replace_with_item, itemstack, local headpos = player:get_pos() headpos.y = headpos.y + 1 - minetest.sound_play("hunger_eat", {pos = headpos, max_hear_distance = 8, object=player}, true) + local full = userdata[name].saturation >= hunger.MAX_SATURATION and userdata[name].hunger >= hunger.MAX_HUNGER + play_eat_sound(headpos, player, full) + local particle + if full then + particle = "magicpuff2.png" + else + particle = "magicpuff.png" + end particlespawners[name] = minetest.add_particlespawner( { @@ -301,7 +321,7 @@ local function on_item_eat(hpdata, replace_with_item, itemstack, minsize = 0.5, maxsize = 2, texture = { - name = "magicpuff.png", + name = particle, scale_tween = { 1, 0, start = 0.75 }, }, }) @@ -447,14 +467,7 @@ local function fake_on_item_eat(hpdata, replace_with_item, itemstack, player, pointed_thing) local headpos = player:get_pos() headpos.y = headpos.y + 1 - minetest.sound_play( - "hunger_eat", - { - pos = headpos, - max_hear_distance = 8, - object = player, - }, true) - + play_eat_sound(headpos, player, true) if mod_achievements then achievements.trigger_subcondition(player, "eat_everything", itemstack:get_name()) end @@ -598,6 +611,7 @@ minetest.register_chatcommand("hunger", { return false, S("No player.") end hunger.set_hunger(playername, hungr) + hunger.set_saturation(playername, 0) return true end })