Remove real_suffocation mod
This commit is contained in:
parent
1419e63743
commit
632aa7bae6
4 changed files with 0 additions and 86 deletions
|
@ -1,24 +0,0 @@
|
||||||
# Real Suffocation [`real_suffocation`]
|
|
||||||
Version: 1.0.0
|
|
||||||
|
|
||||||
This mod adds suffocation. Suffocation is basically the same as drowning, but it
|
|
||||||
is for being stuck inside solid blocks. If you're inside a solid block, you lose
|
|
||||||
breath. If you lost your breath completely and you're still inside, you suffer
|
|
||||||
10 HP (=5 “hearts”) of damage every 2 seconds.
|
|
||||||
|
|
||||||
Specifically, suffocation is added to all blocks which:
|
|
||||||
|
|
||||||
* Are solid
|
|
||||||
* Are full cubes
|
|
||||||
* Don't already have built-in damage or drowning damage
|
|
||||||
* Are not excluded from suffocations by mods
|
|
||||||
|
|
||||||
## Info for modders
|
|
||||||
This mod will not add suffocation to all nodes with the group
|
|
||||||
`disable_suffocation=1`.
|
|
||||||
|
|
||||||
This mod adds the group `real_suffocation=1` to all nodes it has modified,
|
|
||||||
this is mostly done for informational purposes.
|
|
||||||
|
|
||||||
## License
|
|
||||||
Everything is under the MIT license. Forked from https://repo.or.cz/minetest_real_suffocation.git.
|
|
|
@ -1,56 +0,0 @@
|
||||||
-- Load setting
|
|
||||||
local suffocation_damage = 2
|
|
||||||
local setting = minetest.settings:get("real_suffocation_damage")
|
|
||||||
if tonumber(setting) ~= nil then
|
|
||||||
suffocation_damage = tonumber(setting)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Skip the rest if suffocation damage is 0, no point in overwriting stuff
|
|
||||||
if suffocation_damage > 0 then
|
|
||||||
|
|
||||||
-- Checks all nodes and adds suffocation (drowning damage) for suitable nodes
|
|
||||||
local function add_suffocation()
|
|
||||||
-- For debugging output
|
|
||||||
local suffocate_nodes = {}
|
|
||||||
local no_suffocate_nodes = {}
|
|
||||||
-- Check ALL the nodes!
|
|
||||||
for itemstring, def in pairs(minetest.registered_nodes) do
|
|
||||||
--[[ Here comes the HUGE conditional deciding whether we use suffocation. We want to catch as many nodes as possible
|
|
||||||
while avoiding bad nodes. We care mostly about physical properties, we don't care about visual appearance.
|
|
||||||
Here's what it checks and why:
|
|
||||||
- Walkable: Must be walkable, which means player can get stuck inside. If player can move freely, suffocation does not make sense
|
|
||||||
- Drowning and damage: If node has set any of those explicitly, it probably knows why. We don't want to mess with it.
|
|
||||||
- collision_box, node_box: Checks whether we deal with full-sized standard cubes, since only care about those.
|
|
||||||
Everything else is probably too small for suffocation to seem real.
|
|
||||||
- disable_suffocation group: If set to 1, we bail out. This makes it possible for nodes to defend themselves against hacking. :-)
|
|
||||||
]]
|
|
||||||
if (def.walkable == nil or def.walkable == true)
|
|
||||||
and (def.drowning == nil or def.drowning == 0)
|
|
||||||
and (def.damage_per_second == nil or def.damage_per_second <= 0)
|
|
||||||
and (def.collision_box == nil or def.collision_box.type == "regular")
|
|
||||||
and (def.node_box == nil or def.node_box.type == "regular")
|
|
||||||
and (def.groups.disable_suffocation ~= 1)
|
|
||||||
then
|
|
||||||
-- Add “real_suffocation” group so other mods know this node was touched by this mod
|
|
||||||
local marked_groups = def.groups
|
|
||||||
marked_groups.real_suffocation = 1
|
|
||||||
-- Let's hack the node!
|
|
||||||
minetest.override_item(itemstring, { drowning = suffocation_damage, groups = marked_groups })
|
|
||||||
table.insert(suffocate_nodes, itemstring)
|
|
||||||
else
|
|
||||||
table.insert(no_suffocate_nodes, itemstring)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
minetest.log("info", "[real_suffocation] Suffocation has been hacked into "..#suffocate_nodes.." nodes.")
|
|
||||||
minetest.log("verbose", "[real_suffocation] Nodes with suffocation: "..dump(suffocate_nodes))
|
|
||||||
minetest.log("verbose", "[real_suffocation] Suffocation has not been hacked into "..#no_suffocate_nodes.." nodes: "..dump(no_suffocate_nodes))
|
|
||||||
end
|
|
||||||
|
|
||||||
-- This is a minor hack to make sure our loop runs after all nodes have been registered
|
|
||||||
minetest.after(0, add_suffocation)
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
minetest.register_on_joinplayer(function(player)
|
|
||||||
player:set_properties({max_breath = 10})
|
|
||||||
end)
|
|
|
@ -1,2 +0,0 @@
|
||||||
name = real_suffocation
|
|
||||||
description = The player will lose breath inside solid blocks.
|
|
|
@ -1,4 +0,0 @@
|
||||||
# How much damage is caused by “suffocation” by default, that is, running
|
|
||||||
# out of breath while being inside solid blocks like dirt, gravel, sand,
|
|
||||||
# etc. Like for drowning, damage is caused every 2 seconds.
|
|
||||||
real_suffocation_damage (Suffocation damage) int 2 0
|
|
Loading…
Reference in a new issue