summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTenPlus1 <kinsellaja@yahoo.com>2018-09-07 14:59:22 +0100
committerTenPlus1 <kinsellaja@yahoo.com>2018-09-07 14:59:22 +0100
commitf1476077bd4c57d6efd19edf2da2b39a8f965d12 (patch)
tree973182a05a61d730b3fd84530eab2fa6a6cfa91a
parent9737bde6fb57f0e7481cff1c8052a0997ef24ede (diff)
added light damage _min and _max values, also igniter check for lava damage
-rw-r--r--api.lua59
-rw-r--r--api.txt8
-rw-r--r--readme.MD1
3 files changed, 32 insertions, 36 deletions
diff --git a/api.lua b/api.lua
index f628cde..83c4d5e 100644
--- a/api.lua
+++ b/api.lua
@@ -6,7 +6,7 @@ local use_cmi = minetest.global_exists("cmi")
mobs = {
mod = "redo",
- version = "20180905",
+ version = "20180907",
intllib = S,
invis = minetest.global_exists("invisibility") and invisibility or {},
}
@@ -431,7 +431,7 @@ end
-- check if mob is dead or only hurt
-local check_for_death = function(self, cause, cmi_cause)
+local check_for_death = function(self, cmi_cause)
-- has health actually changed?
if self.health == self.old_health and self.health > 0 then
@@ -598,31 +598,21 @@ local do_env_damage = function(self)
return
end
- -- is mob light sensative :)
- if self.light_damage ~= 0
--- and pos.y > 0
--- and self.time_of_day > 0.2
--- and self.time_of_day < 0.8
- and (minetest.get_node_light(pos) or 0) > 12 then
+ -- is mob light sensative, or scared of the dark :P
+ if self.light_damage ~= 0 then
- self.health = self.health - self.light_damage
+ local light = minetest.get_node_light(pos) or 0
- effect(pos, 5, "tnt_smoke.png")
+ if light >= self.light_damage_min
+ and light <= self.light_damage_max then
- if check_for_death(self, "light", {type = "light"}) then return end
- end
---[[
- local y_level = self.collisionbox[2]
+ self.health = self.health - self.light_damage
- if self.child then
- y_level = self.collisionbox[2] * 0.5
- end
+ effect(pos, 5, "tnt_smoke.png")
- -- what is mob standing in?
- pos.y = pos.y + y_level + 0.25 -- foot level
- self.standing_in = node_ok(pos, "air").name
--- print ("standing in " .. self.standing_in)
-]]
+ if check_for_death(self, {type = "light"}) then return end
+ end
+ end
local nodef = minetest.registered_nodes[self.standing_in]
@@ -638,15 +628,16 @@ local do_env_damage = function(self)
effect(pos, 5, "bubble.png", nil, nil, 1, nil)
- if check_for_death(self, "water", {type = "environment",
+ if check_for_death(self, {type = "environment",
pos = pos, node = self.standing_in}) then return end
end
- -- lava or fire
+ -- lava or fire or ignition source
elseif self.lava_damage
- and (nodef.groups.lava
- or self.standing_in == node_fire
- or self.standing_in == node_permanent_flame) then
+ and nodef.groups.igniter then
+-- and (nodef.groups.lava
+-- or self.standing_in == node_fire
+-- or self.standing_in == node_permanent_flame) then
if self.lava_damage ~= 0 then
@@ -654,7 +645,7 @@ local do_env_damage = function(self)
effect(pos, 5, "fire_basic_flame.png", nil, nil, 1, nil)
- if check_for_death(self, "lava", {type = "environment",
+ if check_for_death(self, {type = "environment",
pos = pos, node = self.standing_in, hot = true}) then return end
end
@@ -665,7 +656,7 @@ local do_env_damage = function(self)
effect(pos, 5, "tnt_smoke.png")
- if check_for_death(self, "dps", {type = "environment",
+ if check_for_death(self, {type = "environment",
pos = pos, node = self.standing_in}) then return end
end
--[[
@@ -677,11 +668,11 @@ local do_env_damage = function(self)
self.health = self.health - self.suffocation
- if check_for_death(self, "suffocation", {type = "environment",
+ if check_for_death(self, {type = "environment",
pos = pos, node = self.standing_in}) then return end
end
]]
- check_for_death(self, "", {type = "unknown"})
+ check_for_death(self, {type = "unknown"})
end
@@ -2275,7 +2266,7 @@ local falling = function(self, pos)
effect(pos, 5, "tnt_smoke.png", 1, 2, 2, nil)
- if check_for_death(self, "fall", {type = "fall"}) then
+ if check_for_death(self, {type = "fall"}) then
return
end
end
@@ -2445,7 +2436,7 @@ local mob_punch = function(self, hitter, tflp, tool_capabilities, dir)
local hot = tool_capabilities and tool_capabilities.damage_groups
and tool_capabilities.damage_groups.fire
- if check_for_death(self, "hit", {type = "punch",
+ if check_for_death(self, {type = "punch",
puncher = hitter, hot = hot}) then
return
end
@@ -2982,6 +2973,8 @@ minetest.register_entity(name, {
run_velocity = def.run_velocity or 2,
damage = max(0, (def.damage or 0) * difficulty),
light_damage = def.light_damage or 0,
+ light_damage_min = def.light_damage_min or 14,
+ light_damage_max = def.light_damage_max or 15,
water_damage = def.water_damage or 0,
lava_damage = def.lava_damage or 0,
suffocation = def.suffocation or 2,
diff --git a/api.txt b/api.txt
index 4ac5d49..17beba5 100644
--- a/api.txt
+++ b/api.txt
@@ -57,9 +57,11 @@ functions needed for the mob to work properly which contains the following:
'water_damage' holds the damage per second infliced to mobs when standing in
water.
'lava_damage' holds the damage per second inflicted to mobs when standing
- in lava or fire.
- 'light_damage' holds the damage per second inflicted to mobs when it's too
- bright (above 13 light).
+ in lava or fire or an ignition source.
+ 'light_damage' holds the damage per second inflicted to mobs when light
+ level is between the min and max values below
+ 'light_damage_min' minimum light value when mob is affected (default: 14)
+ 'light_damage_max' maximum light value when mob is affected (default: 15)
'suffocation' when true causes mobs to suffocate inside solid blocks.
'floats' when set to 1 mob will float in water, 0 has them sink.
'follow' mobs follow player when holding any of the items which appear
diff --git a/readme.MD b/readme.MD
index 6fa49f9..5066d82 100644
--- a/readme.MD
+++ b/readme.MD
@@ -23,6 +23,7 @@ Lucky Blocks: 9
Changelog:
+- 1.47- Mob damage changes, min and max light level for damage added, ignition sources checked for lava damage
- 1.46- Mobs only drop rare items when killed by player (drops.min = 0 makes them rare), code tweak, pathfinding no longer sees through walkable nodes
- 1.45- Added Fence Top to add on top of any fence to stop mobs escaping, new line_of_sight tweaked by Astrobe
- 1.44- Added ToolRanks support for swords when attacking mobs