From 07906961fbc43b5b9e05c6f9e76652bd4e7c91f6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 16 Aug 2022 02:01:14 +0200 Subject: [PATCH] Spawn particles for lock break --- mods/rp_locks/init.lua | 43 ++++++++++++++++++ .../textures/rp_locks_particle_lock.png | Bin 0 -> 513 bytes 2 files changed, 43 insertions(+) create mode 100644 mods/rp_locks/textures/rp_locks_particle_lock.png diff --git a/mods/rp_locks/init.lua b/mods/rp_locks/init.lua index 1ed97c2..cdd7b20 100644 --- a/mods/rp_locks/init.lua +++ b/mods/rp_locks/init.lua @@ -12,6 +12,8 @@ local INFOTEXT_CRACKED_PUBLIC = N("Locked Chest (cracked open)") local INFOTEXT_CRACKED_OWNED = N("Locked Chest (cracked open) (Owned by @1)") local INFOTEXT_NAMED_OWNED = N("@1 (Owned by @2)") +local GRAVITY = minetest.settings:get("movement_gravity") or 9.81 + locks = {} -- Settings @@ -130,6 +132,47 @@ minetest.register_tool( end achievements.trigger_achievement(player, "burglar") minetest.sound_play({name="locks_unlock",gain=0.8},{pos=pos, max_hear_distance=16}, true) + + -- Spawn particles at lock to indicate lock break + local dir = minetest.facedir_to_dir(node.param2) + local w = 1/16 + local k = 11/16 + local l = 7/16 + local vup, vdn, vs, v0 = 0.1, -0.2, 0.5, 0 + local minoff, maxoff, minvel, maxvel + if dir.x > 0 then + minoff = vector.new(-k, -w, -w) + maxoff = vector.new(-l, w, w) + minvel = vector.new(-vs, vdn, -vs) + maxvel = vector.new(v0, vup, vs) + elseif dir.x < 0 then + minoff = vector.new(l, -w, -w) + maxoff = vector.new(k, w, w) + minvel = vector.new(v0, vdn, -vs) + maxvel = vector.new(vs, vup, vs) + elseif dir.z > 0 then + minoff = vector.new(-w, -w, -k) + maxoff = vector.new(w, w, -l) + minvel = vector.new(-vs, vdn, v0) + maxvel = vector.new(vs, vup, vs) + elseif dir.z < 0 then + minoff = vector.new(-w, -w, l) + maxoff = vector.new(w, w, k) + minvel = vector.new(-vs, vdn, -vs) + maxvel = vector.new(vs, vup, v0) + end + if minoff then + minetest.add_particlespawner({ + amount = 12, + time = 0.001, + pos = { min = vector.add(pos, minoff), max = vector.add(pos, maxoff) }, + vel = { min = minvel, max = maxvel }, + acc = { min = vector.new(0, 0, 0), max = vector.new(0, -GRAVITY, 0) }, + size = 1.2, + exptime = { min = 0.60, max = 0.65 }, + texture = "rp_locks_particle_lock.png", + }) + end else -- Failure! minetest.sound_play({name="locks_pick",gain=0.5},{pos=pos, max_hear_distance=16}, true) diff --git a/mods/rp_locks/textures/rp_locks_particle_lock.png b/mods/rp_locks/textures/rp_locks_particle_lock.png new file mode 100644 index 0000000000000000000000000000000000000000..6dea914b043b4a0e49a6a104031fb0417cda5c09 GIT binary patch literal 513 zcmV+c0{;DpP)EX>4Tx04R}tkv&MmKpe$iQ^g|H4t5Z6$j~~71yK=4twIqhlv<%x2a`*`ph-iL z;^HW{799LotU9+0Yt2!bCVj!sUBE>hzEl0u6Z503ls?%w0>9UwF+Of|d40ade% zbRsThbE{&{D*_0iA5n}-%+%*nsU$qd*FAiEy^HZI?{j~SJ|%B5z$X&VGTpFgN$qlPjnun?nFBgI6T_TwJ@A;+I0mrSlQ z7&#VDg$l{>ga5(rZq35vgqswM1KlsS{SgIvc7bNyw!e>UyLkfmpMfi_?XNa~nNQN| zZ7p&Hgtmc;>$WEE0hc?#;FB&Hk|X(P3WWmjen#Jv0|st^-Zi(k);>-jfDCn&ya5gl zfsrC*uY0^Z(AnF+XIlOJ0Fdo+vwLwfrT_o{32;bRa{vGf6951U69E94oEQKA03u05 zK~y-)V_+Bs6az+Vf(;D~|8a<8sAr