1
0
mirror of https://github.com/4Evergreen4/death_messages.git synced 2025-07-04 01:10:35 +02:00

Merge branch 'master' into nalc-1.2.

- Avec correction la personnalisation du mod pour le serveur NALC.
This commit is contained in:
2019-05-09 21:15:14 +02:00
7 changed files with 107 additions and 139 deletions

177
init.lua
View File

@ -1,12 +1,31 @@
--[[
death_messages - A Minetest mod which sends a chat message when a player dies.
Copyright (C) 2016 EvergreenTree
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
--]]
-----------------------------------------------------------------------------------------------
local title = "Death Messages"
local title = "Death Messages"
local version = "0.1.2"
local mname = "death_messages"
local mname = "death_messages"
-----------------------------------------------------------------------------------------------
dofile(minetest.get_modpath("death_messages").."/settings.txt")
-----------------------------------------------------------------------------------------------
-- A table of quips for death messages
-- A table of quips for death messages. The first item in each sub table is the
-- default message used when RANDOM_MESSAGES is disabled.
local messages = {}
-- Another one to avoid double death messages
@ -117,39 +136,40 @@ messages.monsters_whacking = {
-- Monsters
local monsters = {
["mobs:fireball"] = "dungeon master",
["mobs:dungeon_master"] = "dungeon master",
["mobs:spider"] = "spider",
["mobs:sand_monster"] = "sand monster",
["mobs:cow"] = "cow",
["mobs:creeper"] = "creeper",
["mobs:dog"] = "dog",
["mobs:greenbig"] = "big green slim",
["mobs:greenmedium"] = "medium green slim",
["mobs:greensmall"] = "small green slim",
["mobs:lavabig"] = "big lava slim",
["mobs:lavamedium"] = "medium lava slim",
["mobs:lavasmall"] = "small lava slim",
["mobs:yeti"] = "yeti",
["mobs:snowball"] = "yeti",
["mobs:npc"] = "npc",
["mobs:npc_female"] = "female npc",
["mobs:oerkki"] = "oerkki",
["mobs:stone_monster"] = "stone monster",
["mobs:dirt_monster"] = "dirt monster",
["mobs:goat"] = "goat",
["mobs:wolf"] = "wolf",
["mobs:tree_monster"] = "tree monster",
["mobs:mese_arrow"] = "mese monster",
["mobs:zombie"] = "zombie",
["mobs:minotaur"] = "minotaur",
["mobs:pumba"] = "warthog",
["mobs_monster:fireball"] = "dungeon master",
["mobs_monster:dungeon_master"] = "dungeon master",
["mobs_monster:spider"] = "spider",
["mobs_monster:sand_monster"] = "sand monster",
["mobs_animal:cow"] = "cow",
["creeper:creeper"] = "creeper",
["pmobs:dog"] = "dog",
["slimes:greenbig"] = "big green slim",
["slimes:greenmedium"] = "medium green slim",
["slimes:greensmall"] = "small green slim",
["slimes:lavabig"] = "big lava slim",
["slimes:lavamedium"] = "medium lava slim",
["slimes:lavasmall"] = "small lava slim",
["pmobs:yeti"] = "yeti",
["pmobs:snowball"] = "yeti",
["pmobs:npc"] = "npc",
["pmobs:npc_female"] = "female npc",
["mobs_monster:oerkki"] = "oerkki",
["mobs_monster:stone_monster"] = "stone monster",
["mobs_monster:dirt_monster"] = "dirt monster",
["mobs_animal:goat"] = "goat",
["pmobs:wolf"] = "wolf",
["mobs_monster:tree_monster"] = "tree monster",
["mobs_monster:mese_arrow"] = "mese monster",
["zombie:zombie"] = "zombie",
["mobs_monster:minotaur"] = "minotaur",
["mobs_animal:pumba"] = "warthog",
["tsm_pyramids:mummy"] = "mummy",
["mobs:shark_lg"] = "large shark",
["mobs:shark_md"] = "medium shark",
["mobs:pumpking"] = "pumpking",
["mobs:pumpboom"] = "pumpboom",
["mobs:mese_dragon"] = "mese_dragon",
["mobs_sharks:shark_lg"] = "large shark",
["mobs_sharks:shark_md"] = "medium shark",
["mobs_sharks:shark_sm"] = "small shark",
-- ["mobs:pumpking"] = "pumpking",
-- ["mobs:pumpboom"] = "pumpboom",
-- ["mobs:mese_dragon"] = "mese_dragon",
}
local function broadcast_death(msg)
@ -166,7 +186,6 @@ local function sound_play_all(dead)
for _, p in ipairs(minetest.get_connected_players()) do
local player_name = p:get_player_name()
if player_name and player_name ~= dead then
-- minetest.sound_play("death_messages_people_1",{to_player=player_name, gain=soundset.get_gain(player_name,"other")})
minetest.sound_play("death_messages_people_1",{to_player=player_name, gain=1})
end
end
@ -184,9 +203,8 @@ minetest.register_on_punchplayer(function(player, hitter, time,
death_message = string.format(messages.monsters_whacking[math.random(1, #messages.monsters_whacking)], player_name, entity_name, player_name, entity_name)
end
broadcast_death(death_message)
-- minetest.sound_play(sounds[math.random(1,#sounds)],{to_player=player:get_player_name(),gain=soundset.get_gain(player:get_player_name(),"other")})
minetest.sound_play(sounds[math.random(1,#sounds)],{to_player=player:get_player_name(),gain=1})
sound_play_all(player:get_player_name())
minetest.sound_play(sounds[math.random(1,#sounds)],{to_player=player_name,gain=1})
sound_play_all(player_name)
whacked[player_name] = true
end
end)
@ -200,10 +218,21 @@ minetest.register_on_respawnplayer(function(player)
whacked[player:get_player_name()] = nil
end)
if RANDOM_MESSAGES == true then
minetest.register_on_dieplayer(function(player)
local function get_message(mtype)
if RANDOM_MESSAGES then
return messages[mtype][math.random(1, #messages[mtype])]
else
return messages[mtype][1] -- 1 is the index for the non-random message
end
end
local function find_node(pos, name)
return minetest.find_node_near(pos, 1, name, true)
end
minetest.register_on_dieplayer(
function(player)
local player_name = player:get_player_name()
local node = minetest.registered_nodes[minetest.get_node(player:getpos()).name]
if minetest.is_singleplayer() then
player_name = "You"
end
@ -213,64 +242,34 @@ if RANDOM_MESSAGES == true then
if not whacked[player_name] then
-- Death by lava
if node.groups.lava ~= nil then
death_message = messages.lava[math.random(1,#messages.lava)]
-- Death by acid
elseif node.groups.acid ~= nil then
death_message = messages.acid[math.random(1,#messages.acid)]
-- Death by drowning
elseif player:get_breath() == 0 and node.groups.water then
death_message = messages.water[math.random(1,#messages.water)]
-- Death by fire
elseif node.name == "fire:basic_flame" then
death_message = messages.fire[math.random(1,#messages.fire)]
-- Death in quicksand
elseif player:get_breath() == 0 and node.name == "default:sand_source" or node.name == "default:sand_flowing" then
death_message = messages.sand[math.random(1,#messages.sand)]
-- Death by something else
if find_node(player:get_pos(), "group:lava") then
death_message = get_message("lava")
-- Death by acid
elseif find_node(player:get_pos(), "group:acid") then
death_message = get_message("acid")
-- Death by drowning
elseif player:get_breath() == 0 and find_node(player:get_pos(), "group:water") then
death_message = get_message("water")
-- Death by fire
elseif find_node(player:get_pos(), "fire:basic_flame") then
death_message = get_message("fire")
-- Death in quicksand
elseif player:get_breath() == 0 and find_node(player:get_pos(), {"nalc:sand_source", "nalc:sand_flowing"}) then
death_message = get_message("sand")
-- Death by something else
else
death_message = messages.other[math.random(1,#messages.other)]
death_message = get_message("other")
end
-- Actually tell something
death_message = string.format(death_message, player_name, player_name)
broadcast_death(death_message)
-- minetest.sound_play(sounds[math.random(1,#sounds)],{to_player=player_name,gain=soundset.get_gain(player_name, "other")})
minetest.sound_play(sounds[math.random(1,#sounds)],{to_player=player_name,gain=1})
minetest.sound_play(sounds[math.random(1,#sounds)], {to_player=player_name,gain=1})
sound_play_all(player_name)
whacked[player_name] = true
end
end)
else
-- Should we keep that part?
minetest.register_on_dieplayer(function(player)
local player_name = player:get_player_name()
local node = minetest.registered_nodes[minetest.get_node(player:getpos()).name]
if minetest.is_singleplayer() then
player_name = "You"
end
if not whacked[player_name] then
-- Death by lava
if node.groups.lava ~= nil then
minetest.chat_send_all(player_name .. " melted into a ball of fire")
-- Death by drowning
elseif player:get_breath() == 0 then
minetest.chat_send_all(player_name .. " ran out of air.")
-- Death by fire
elseif node.name == "fire:basic_flame" then
minetest.chat_send_all(player_name .. " burned to a crisp.")
-- Death by something else
else
minetest.chat_send_all(player_name .. " died.")
end
end
-- minetest.sound_play(sounds[math.random(1,#sounds)],{to_player=player:get_player_name(),gain=soundset.get_gain(player:get_player_name(),"other")})
minetest.sound_play(sounds[math.random(1,#sounds)],{to_player=player:get_player_name(),gain=1})
sound_play_all(player:get_player_name())
end)
end
-----------------------------------------------------------------------------------------------
minetest.log("action", "[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...")
-----------------------------------------------------------------------------------------------