mirror of
https://git.minetest.land/VoxeLibre/VoxeLibre.git
synced 2024-11-22 18:41:09 +01:00
Implement doMobLoot gamerule
This commit is contained in:
parent
4ff8268948
commit
2553f681a0
1 changed files with 6 additions and 3 deletions
|
@ -8,6 +8,10 @@ local gamerule_maxEntityCramming = vl_tuning.setting("gamerule:maxEntityCramming
|
||||||
description = S("The maximum number of pushable entities a mob or player can push, before taking 6♥♥♥ entity cramming damage per half-second."),
|
description = S("The maximum number of pushable entities a mob or player can push, before taking 6♥♥♥ entity cramming damage per half-second."),
|
||||||
default = 24,
|
default = 24,
|
||||||
})
|
})
|
||||||
|
local gamerule_doMobLoot = vl_tuning.setting("gamerule:doMobLoot", "bool", {
|
||||||
|
description = S("Whether mobs should drop items and experience orbs."),
|
||||||
|
default = true,
|
||||||
|
})
|
||||||
|
|
||||||
local CRAMMING_DAMAGE = 3
|
local CRAMMING_DAMAGE = 3
|
||||||
local DEATH_DELAY = 0.5
|
local DEATH_DELAY = 0.5
|
||||||
|
@ -478,6 +482,8 @@ function mob_class:check_for_death(cause, cmi_cause)
|
||||||
-- TODO other env damage shouldn't drop xp
|
-- TODO other env damage shouldn't drop xp
|
||||||
-- "rain", "water", "drowning", "suffocation"
|
-- "rain", "water", "drowning", "suffocation"
|
||||||
|
|
||||||
|
if not gamerule_doMobLoot[1] then return end
|
||||||
|
|
||||||
-- dropped cooked item if mob died in fire or lava
|
-- dropped cooked item if mob died in fire or lava
|
||||||
if cause == "lava" or cause == "fire" then
|
if cause == "lava" or cause == "fire" then
|
||||||
self:item_drop(true, 0)
|
self:item_drop(true, 0)
|
||||||
|
@ -507,13 +513,10 @@ function mob_class:check_for_death(cause, cmi_cause)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- execute custom death function
|
-- execute custom death function
|
||||||
if self.on_die then
|
if self.on_die then
|
||||||
|
|
||||||
local pos = self.object:get_pos()
|
local pos = self.object:get_pos()
|
||||||
local on_die_exit = self.on_die(self, pos, cmi_cause)
|
local on_die_exit = self.on_die(self, pos, cmi_cause)
|
||||||
if on_die_exit ~= true then
|
if on_die_exit ~= true then
|
||||||
|
|
Loading…
Reference in a new issue