effects.lua 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. local MT = minetest
  2. local vMod = vm_lighting_wand
  3. local play_sound = MT.settings:get_bool(vMod.modname .. "_sound", true)
  4. local play_particles = MT.settings:get_bool(vMod.modname .. "_particles", true)
  5. local play_wand_particles, play_wand_sound
  6. -- Main function to play effects
  7. vMod.play_effects = function(player_pos, node_pos)
  8. if play_sound then
  9. play_wand_sound(player_pos)
  10. end
  11. if play_particles then
  12. play_wand_particles(node_pos)
  13. end
  14. end
  15. play_wand_sound = function(pos)
  16. MT.sound_play(vMod.modname, {pos = pos, gain = 0.1, max_hear_distance = 6})
  17. end
  18. -- spawns particles at given pos
  19. local speed = 24
  20. play_wand_particles = function(pos)
  21. for _, color in pairs({"green", "red", "blue", "yellow"}) do
  22. MT.add_particlespawner(
  23. {
  24. amount = 20,
  25. time = 1,
  26. minpos = {x = pos.x + 2, y = pos.y + 2, z = pos.z + 2},
  27. maxpos = {x = pos.x - 2, y = pos.y - 2, z = pos.z - 2},
  28. minvel = {x = -1, y = -1, z = -1},
  29. maxvel = {x = 1, y = 1, z = 1},
  30. minacc = {x = -speed, y = -speed, z = -speed},
  31. maxacc = {x = speed, y = speed, z = speed},
  32. minexptime = 1,
  33. maxexptime = 3,
  34. minsize = 0.5,
  35. maxsize = 1.5,
  36. vertical = false,
  37. collisiondetection = false,
  38. texture = vMod.modname .. "_particle_" .. color .. ".png"
  39. }
  40. )
  41. end
  42. end