message.lua 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. -- This module is responsible for informing players of someone's death.
  2. -- We also inform the dead player where their bones are.
  3. -- We also write a message to the logfile.
  4. bones = bones or {}
  5. bones.players = bones.players or {}
  6. local release_player = function(player)
  7. if bones.players[player] then
  8. bones.players[player] = nil
  9. end
  10. end
  11. bones.release_player = release_player
  12. local msg_str1 = {
  13. "Blackbox",
  14. "Blackbox",
  15. "Bonebox",
  16. "Bonebox",
  17. "Bonebox",
  18. "Death signal",
  19. "Blackbox signal",
  20. "Bonebox signal",
  21. "Death beacon",
  22. "Blackbox beacon",
  23. "Bonebox beacon",
  24. }
  25. local msg_str2 = {
  26. "perished",
  27. "perished",
  28. "perished",
  29. "died",
  30. "died",
  31. "died",
  32. "kicked the bucket",
  33. "kicked the bucket",
  34. "was killed",
  35. "was slain",
  36. "lost a life",
  37. "croaked",
  38. "bit the dust",
  39. "passed away",
  40. "passed on",
  41. "expired",
  42. "expired",
  43. }
  44. local function random_str(strs)
  45. return strs[math.random(1, #strs)]
  46. end
  47. local send_chat_world = function(pos, player)
  48. -- Don't spam the message console.
  49. if bones.players[player] then return end
  50. local show_everyone = true
  51. if player_labels.query_nametag_onoff(player) == false then
  52. show_everyone = false
  53. end
  54. if show_everyone then
  55. local dname = rename.gpn(player)
  56. minetest.chat_send_all("# Server: " .. random_str(msg_str1) .. " detected. " ..
  57. "<" .. dname .. "> " .. random_str(msg_str2) .. " at " .. rc.pos_to_namestr(pos) .. ".")
  58. else
  59. minetest.chat_send_all("# Server: " .. random_str(msg_str1) .. " detected. ID and location unknown.")
  60. minetest.chat_send_player(player, "# Server: You died at " .. rc.pos_to_namestr(pos) .. ". The locator beacon was SUPPRESSED.")
  61. end
  62. minetest.chat_send_player(player, "# Server: <" .. rename.gpn(player) .. ">, you may find your bonebox at the above coordinates.")
  63. -- The player can't trigger any more chat messages until released.
  64. bones.players[player] = true
  65. minetest.after(60, release_player, player)
  66. end
  67. bones.do_messages = function(pos, player, num_stacks)
  68. send_chat_world(pos, player)
  69. minetest.log("action", "Player <" .. player .. "> died at (" .. pos.x .. "," .. pos.y .. "," .. pos.z .. "): stackcount=" .. num_stacks)
  70. end