5 Commits

Author SHA1 Message Date
32e3f8928b Ajoute message de chargement du mod dans le journal "action" 2019-01-19 20:25:08 +01:00
c515b58ca1 La dent s'obtient aléatoirement en ramassant du sable 2018-11-03 14:52:41 +01:00
8bf04f444e Correction du lancé de sorts pour les parchemins
Changement d'un ingrédient de potion : lilypad remplace waterlily
2018-11-02 21:36:54 +01:00
dd3a7d13c7 Corrige un crash avec la splash potion orange
Corrige la collision avec la gauge bar
2018-11-02 20:40:25 +01:00
fef074b9ed Change le craft de la dent avec le sable du desert. 2018-10-13 17:03:32 +02:00
26 changed files with 3766 additions and 4190 deletions

View File

@ -2,8 +2,8 @@ default
vessels vessels
tnt tnt
fire fire
player_physics
playereffects playereffects
player_monoids?
farming? farming?
lightning? lightning?
pmobs? pmobs?

7076
init.lua

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -1,480 +1,426 @@
--scrolls --scrolls
minetest.register_craftitem(
"witchcraft:scroll_day",
{
description = "Scroll of day",
inventory_image = "witchcraft_scroll.png^witchcraft_sun_over.png",
stack_max = 1,
on_use = function(item)
minetest.set_timeofday(0.5)
item:take_item()
return item
end,
})
minetest.register_craftitem( minetest.register_craftitem("witchcraft:scroll_day", {
"witchcraft:scroll_night", description = "Scroll of day",
{ inventory_image = "witchcraft_scroll.png^witchcraft_sun_over.png",
description = "Scroll of night", stack_max = 1,
inventory_image = "witchcraft_scroll.png^witchcraft_moon_over.png", on_use = function(item)
stack_max = 1, minetest.set_timeofday(0.5)
on_use = function(item) item:take_item()
minetest.set_timeofday(0) return item
item:take_item() end,
return item })
end,
})
if minetest.get_modpath("pmobs") then minetest.register_craftitem("witchcraft:scroll_night", {
minetest.register_craftitem( description = "Scroll of night",
"witchcraft:scroll_wild", inventory_image = "witchcraft_scroll.png^witchcraft_moon_over.png",
{ stack_max = 1,
description = "Scroll of Wild", on_use = function(item)
inventory_image = "witchcraft_scroll.png^witchcraft_dark_over.png", minetest.set_timeofday(0)
stack_max = 1, item:take_item()
on_use = function(item, placer) return item
local pos = placer:getpos(); end,
minetest.add_entity(pos, "pmobs:dog") })
item:take_item()
return item
end,
})
end
minetest.register_craftitem(
"witchcraft:scroll_fireball",
{
description = "Scroll of fireball",
inventory_image = "witchcraft_scroll.png^witchcraft_fire_over.png",
stack_max = 1,
on_use = function(item, placer, pos)
local dir = placer:get_look_dir();
local playerpos = placer:getpos();
local obj = minetest.add_entity(
{x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z},
"witchcraft:fireball")
local obj2 = minetest.add_entity(
{x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z},
"witchcraft:fireball")
local obj3 = minetest.add_entity(
{x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z},
"witchcraft:fireball")
local obj4 = minetest.add_entity(
{x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z},
"witchcraft:fireball")
obj2:setvelocity({x=dir.x*7+0.5,y=dir.y*7,z=dir.z*7+0.5})
obj3:setvelocity({x=dir.x*7-0.5,y=dir.y*7,z=dir.z*7-0.5})
obj4:setvelocity({x=dir.x*7,y=dir.y*7-0.5,z=dir.z*7})
obj:setvelocity({x=dir.x*7,y=dir.y*7+0.5,z=dir.z*7})
item:take_item()
return item
end,
})
if minetest.get_modpath("lightning") then
minetest.register_craftitem(
"witchcraft:scroll_lightning",
{
description = "Scroll of lightning",
inventory_image = "witchcraft_scroll.png^witchcraft_thunder_over.png",
stack_max = 1,
on_use = function(item, placer, pos)
local playerpos = placer:getpos();
local dir = placer:get_look_dir();
lightning.strike({x=playerpos.x+dir.x*2,y=playerpos.y+0+dir.y,z=playerpos.z+dir.z*2})
item:take_item()
return item
end,
})
end
minetest.register_craftitem(
"witchcraft:scroll_icicle",
{
description = "Scroll of icicle",
inventory_image = "witchcraft_scroll.png^witchcraft_ice_over.png",
stack_max = 1,
on_use = function(item, placer, pos)
local dir = placer:get_look_dir();
local playerpos = placer:getpos();
local vec = {x=dir.x*7,y=dir.y*7,z=dir.z*7}
local obj = minetest.add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:ice")
local obj2 = minetest.add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+1+dir.z}, "witchcraft:ice")
local obj3 = minetest.add_entity({x=playerpos.x+1+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:ice")
obj:setvelocity(vec)
obj2:setvelocity(vec)
obj3:setvelocity(vec)
item:take_item()
return item
end,
})
minetest.register_craftitem(
"witchcraft:scroll_nature",
{
description = "Scroll of nature",
inventory_image = "witchcraft_scroll.png^witchcraft_leaf_over.png",
stack_max = 1,
on_use = function(item, placer, pos)
local dir = placer:get_look_dir();
local playerpos = placer:getpos();
local vec = {x=dir.x*6,y=dir.y*6,z=dir.z*6}
local obj = minetest.add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:tree")
obj:setvelocity(vec)
item:take_item()
return item
end,
})
minetest.register_craftitem(
"witchcraft:scroll",
{
description = "Blank Scroll",
inventory_image = "witchcraft_scroll.png",
})
minetest.register_craftitem(
"witchcraft:scroll_recipe",
{
description = "Recipe Scroll",
inventory_image = "witchcraft_scroll.png^witchcraft_writing_over.png",
on_use = function(itemstack, user, pointed_thing)
local formspec = "size[10,9]"..
"background[-0.6,-0.5;11.5,10.4;witchcraft_recipes.png]";
minetest.show_formspec(user:get_player_name(), "witchcraft:scroll", formspec);
end,
})
if minetest.get_modpath("pmobs")then if minetest.get_modpath("pmobs")then
minetest.register_craft( minetest.register_craftitem("witchcraft:scroll_wild", {
{ description = "Scroll of Wild",
output = 'witchcraft:scroll_wild', inventory_image = "witchcraft_scroll.png^witchcraft_dark_over.png",
recipe = { stack_max = 1,
{'mobs:meat_raw'}, on_use = function(item, placer)
{'witchcraft:scroll'}, local pos = placer:getpos();
} minetest.env:add_entity(pos, "pmobs:dog")
}) item:take_item()
return item
end,
})
end
minetest.register_craftitem("witchcraft:scroll_fireball", {
description = "Scroll of fireball",
inventory_image = "witchcraft_scroll.png^witchcraft_fire_over.png",
stack_max = 1,
on_use = function(item, placer, pos)
local dir = placer:get_look_dir();
local playerpos = placer:getpos();
local obj = minetest.env:add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:fireball")
local obj2 = minetest.env:add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:fireball")
local obj3 = minetest.env:add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:fireball")
local obj4 = minetest.env:add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:fireball")
obj2:setvelocity({x=dir.x*7+0.5,y=dir.y*7,z=dir.z*7+0.5})
obj3:setvelocity({x=dir.x*7-0.5,y=dir.y*7,z=dir.z*7-0.5})
obj4:setvelocity({x=dir.x*7,y=dir.y*7-0.5,z=dir.z*7})
obj:setvelocity({x=dir.x*7,y=dir.y*7+0.5,z=dir.z*7})
item:take_item()
return item
end,
})
if minetest.get_modpath("lightning") then
minetest.register_craftitem("witchcraft:scroll_lightning", {
description = "Scroll of lightning",
inventory_image = "witchcraft_scroll.png^witchcraft_thunder_over.png",
stack_max = 1,
on_use = function(item, placer, pos)
local playerpos = placer:getpos();
local dir = placer:get_look_dir();
lightning.strike({x=playerpos.x+dir.x*2,y=playerpos.y+0+dir.y,z=playerpos.z+dir.z*2})
item:take_item()
return item
end,
})
end
minetest.register_craftitem("witchcraft:scroll_icicle", {
description = "Scroll of icicle",
inventory_image = "witchcraft_scroll.png^witchcraft_ice_over.png",
stack_max = 1,
on_use = function(item, placer, pos)
local dir = placer:get_look_dir();
local playerpos = placer:getpos();
local vec = {x=dir.x*7,y=dir.y*7,z=dir.z*7}
local obj = minetest.env:add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:ice")
local obj2 = minetest.env:add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+1+dir.z}, "witchcraft:ice")
local obj3 = minetest.env:add_entity({x=playerpos.x+1+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:ice")
obj:setvelocity(vec)
obj2:setvelocity(vec)
obj3:setvelocity(vec)
item:take_item()
return item
end,
})
minetest.register_craftitem("witchcraft:scroll_nature", {
description = "Scroll of nature",
inventory_image = "witchcraft_scroll.png^witchcraft_leaf_over.png",
stack_max = 1,
on_use = function(item, placer, pos)
local dir = placer:get_look_dir();
local playerpos = placer:getpos();
local vec = {x=dir.x*6,y=dir.y*6,z=dir.z*6}
local obj = minetest.env:add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:tree")
obj:setvelocity(vec)
item:take_item()
return item
end,
})
minetest.register_craftitem("witchcraft:scroll", {
description = "Blank Scroll",
inventory_image = "witchcraft_scroll.png",
})
minetest.register_craftitem("witchcraft:scroll_recipe", {
description = "Recipe Scroll",
inventory_image = "witchcraft_scroll.png^witchcraft_writing_over.png",
on_use = function(itemstack, user, pointed_thing)
local formspec = "size[10,9]"..
"background[-0.6,-0.5;11.5,10.4;witchcraft_recipes.png]";
minetest.show_formspec(user:get_player_name(), "witchcraft:scroll", formspec);
end,
})
if minetest.get_modpath("pmobs")then
minetest.register_craft({
output = 'witchcraft:scroll_wild',
recipe = {
{'mobs:meat_raw'},
{'witchcraft:scroll'},
}
})
end end
minetest.register_craft( minetest.register_craft({
{ output = 'witchcraft:scroll',
output = 'witchcraft:scroll', recipe = {
recipe = { {'default:paper', 'default:paper', ''},
{'default:paper', 'default:paper', ''}, {'default:paper', 'default:paper', ''},
{'default:paper', 'default:paper', ''}, }
} })
})
minetest.register_craft( minetest.register_craft({
{ output = 'witchcraft:scroll_recipe',
output = 'witchcraft:scroll_recipe', recipe = {
recipe = { {'dye:black'},
{'dye:black'}, {'witchcraft:scroll'},
{'witchcraft:scroll'}, }
} })
})
minetest.register_craft( minetest.register_craft({
{ output = 'witchcraft:scroll_icicle',
output = 'witchcraft:scroll_icicle', recipe = {
recipe = { {'default:ice'},
{'default:ice'}, {'default:diamond'},
{'default:diamond'}, {'witchcraft:scroll'},
{'witchcraft:scroll'}, }
} })
})
minetest.register_craft( minetest.register_craft({
{ output = 'witchcraft:scroll_fireball',
output = 'witchcraft:scroll_fireball', recipe = {
recipe = { {'default:obsidian_shard'},
{'default:obsidian_shard'}, {'default:diamond'},
{'default:diamond'}, {'witchcraft:scroll'},
{'witchcraft:scroll'}, }
} })
})
minetest.register_craft( minetest.register_craft({
{ output = 'witchcraft:scroll_nature',
output = 'witchcraft:scroll_nature', recipe = {
recipe = { {'default:leaves'},
{'default:leaves'}, {'default:diamond'},
{'default:diamond'}, {'witchcraft:scroll'},
{'witchcraft:scroll'}, }
} })
})
minetest.register_craft( minetest.register_craft({
{ output = 'witchcraft:scroll_day',
output = 'witchcraft:scroll_day', recipe = {
recipe = { {'default:torch'},
{'default:torch'}, {'default:diamond'},
{'default:diamond'}, {'witchcraft:scroll'},
{'witchcraft:scroll'}, }
} })
})
minetest.register_craft( minetest.register_craft({
{ output = 'witchcraft:scroll_night',
output = 'witchcraft:scroll_night', recipe = {
recipe = { {'default:coal_lump'},
{'default:coal_lump'}, {'default:diamond'},
{'default:diamond'}, {'witchcraft:scroll'},
{'witchcraft:scroll'}, }
} })
})
minetest.register_craft( minetest.register_craft({
{ output = 'witchcraft:scroll_lightning',
output = 'witchcraft:scroll_lightning', recipe = {
recipe = { {'default:steel_ingot'},
{'default:steel_ingot'}, {'default:diamond'},
{'default:diamond'}, {'witchcraft:scroll'},
{'witchcraft:scroll'}, }
} })
})
--scroll powers --scroll powers
minetest.register_entity( minetest.register_entity("witchcraft:fireball", {
"witchcraft:fireball", textures = {"tnt_boom.png"},
{ velocity = 0.1,
textures = {"tnt_boom.png"}, damage = 2,
velocity = 0.1, collisionbox = {0, 0, 0, 0, 0, 0},
damage = 2, on_step = function(self, obj, pos)
collisionbox = {0, 0, 0, 0, 0, 0}, local remove = minetest.after(2, function()
on_step = function(self, obj, pos) self.object:remove()
local remove = minetest.after( end)
2, local pos = self.object:getpos()
function() local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2)
self.object:remove()
end)
local pos = self.object:getpos()
local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2)
for k, obj in pairs(objs) do for k, obj in pairs(objs) do
if obj:get_luaentity() ~= nil then if obj:get_luaentity() ~= nil then
if obj:get_luaentity().name ~= "witchcraft:fireball" if obj:get_luaentity().name ~= "witchcraft:fireball" and obj:get_luaentity().name ~= "__builtin:item" and obj:get_luaentity().name ~= "gauges:hp_bar" then
and obj:get_luaentity().name ~= "__builtin:item" obj:punch(self.object, 1.0, {
and obj:get_luaentity().name ~= "gauges:hp_bar" full_punch_interval=1.0,
then damage_groups={fleshy=3},
obj:punch( }, nil)
self.object, 1.0, self.object:remove()
{
full_punch_interval=1.0,
damage_groups={fleshy=3},
}, nil)
self.object:remove()
end end
end end
end end
for dx=0,1 do for dx=0,1 do
for dy=0,1 do for dy=0,1 do
for dz=0,1 do for dz=0,1 do
local p = {x=pos.x+dx, y=pos.y, z=pos.z+dz} local p = {x=pos.x+dx, y=pos.y, z=pos.z+dz}
local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz} local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
local n = minetest.get_node(p).name local n = minetest.env:get_node(p).name
if n ~= "witchcraft:fireball" and n ~="default:dirt_with_grass" if n ~= "witchcraft:fireball" and n ~="default:dirt_with_grass" and n ~="default:dirt_with_dry_grass" and n ~="default:stone" and n ~= "gauges:hp_bar" then
and n ~="default:dirt_with_dry_grass" and n ~="default:stone" then if minetest.registered_nodes[n].groups.flammable --[[or math.random(1, 100) <= 1]] then
if minetest.registered_nodes[n].groups.flammable --[[or math.random(1, 100) <= 1]] then minetest.env:set_node(t, {name="fire:basic_flame"})
minetest.set_node(t, {name="fire:basic_flame"}) self.object:remove()
self.object:remove() return
return end
end
end end
end end
end end
end
end
hit_node = function(self, pos, node) hit_node = function(self, pos, node)
-- local pos = self.object:getpos() -- local pos = self.object:getpos()
for dx=-4,4 do for dx=-4,4 do
for dy=-4,4 do for dy=-4,4 do
for dz=-4,4 do for dz=-4,4 do
local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz} local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz} local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
local n = minetest.get_node(pos).name local n = minetest.env:get_node(pos).name
if math.random(1, 50) <= 35 then if math.random(1, 50) <= 35 then
minetest.remove_node(p) minetest.env:remove_node(p)
end end
if minetest.registered_nodes[n].groups.flammable or math.random(1, 100) <=5 then if minetest.registered_nodes[n].groups.flammable or math.random(1, 100) <=5 then
minetest.set_node(t, {name="fire:basic_flame"}) minetest.env:set_node(t, {name="fire:basic_flame"})
end
end
end end
end end
end end
end
end
local apos = self.object:getpos() local apos = self.object:getpos()
local vec = self.object:getvelocity() local vec = self.object:getvelocity()
local part = minetest.add_particlespawner( local part = minetest.add_particlespawner(
6, --amount 6, --amount
0.3, --time 0.3, --time
{x=apos.x-0.3, y=apos.y-0.3, z=apos.z-0.3}, --minpos {x=apos.x-0.3, y=apos.y-0.3, z=apos.z-0.3}, --minpos
{x=apos.x+0.3, y=apos.y+0.3, z=apos.z+0.3}, --maxpos {x=apos.x+0.3, y=apos.y+0.3, z=apos.z+0.3}, --maxpos
{x=-0, y=-0, z=-0}, --minvel {x=-0, y=-0, z=-0}, --minvel
{x=0, y=0, z=0}, --maxvel {x=0, y=0, z=0}, --maxvel
{x=0,y=-0.5,z=0}, --minacc {x=0,y=-0.5,z=0}, --minacc
{x=-vec.x,y=-vec.y,z=-vec.z}, --maxacc {x=-vec.x,y=-vec.y,z=-vec.z}, --maxacc
0.1, --minexptime 0.1, --minexptime
0.3, --maxexptime 0.3, --maxexptime
1, --minsize 1, --minsize
2, --maxsize 2, --maxsize
false, --collisiondetection false, --collisiondetection
"witchcraft_flame.png" --texture "witchcraft_flame.png" --texture
) )
end, end,
}) })
minetest.register_entity( minetest.register_entity("witchcraft:tree", {
"witchcraft:tree", textures = {"witchcraft_skin.png"},
{ velocity = 1,
textures = {"witchcraft_skin.png"}, damage = 2,
velocity = 1, collisionbox = {0, 0, 0, 0, 0, 0},
damage = 2, on_step = function(self, obj, pos)
collisionbox = {0, 0, 0, 0, 0, 0}, local remove = minetest.after(2, function()
on_step = function(self, obj, pos) self.object:remove()
local remove = minetest.after( end)
2, local pos = self.object:getpos()
function() local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2)
self.object:remove()
end)
local pos = self.object:getpos()
local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2)
for k, obj in pairs(objs) do for k, obj in pairs(objs) do
if obj:get_luaentity() ~= nil then if obj:get_luaentity() ~= nil then
if obj:get_luaentity().name ~= "witchcraft:tree" if obj:get_luaentity().name ~= "witchcraft:tree" and obj:get_luaentity().name ~= "__builtin:item" and obj:get_luaentity().name ~= "gauges:hp_bar" then
and obj:get_luaentity().name ~= "__builtin:item"
and obj:get_luaentity().name ~= "gauges:hp_bar"
then
obj:remove() obj:remove()
local treepos = self.object:getpos() local treepos = self.object:getpos()
default.grow_new_jungle_tree(treepos) default.grow_new_jungle_tree(treepos)
self.object:remove() self.object:remove()
end end
end end
end end
for dx=0,1 do for dx=0,1 do
for dy=0,1 do for dy=0,1 do
for dz=0,1 do for dz=0,1 do
local p = {x=pos.x+dx, y=pos.y, z=pos.z+dz} local p = {x=pos.x+dx, y=pos.y, z=pos.z+dz}
local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz} local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
local n = minetest.get_node(p).name local n = minetest.env:get_node(p).name
if n ~= "witchcraft:tree" and n ~="air" then if n ~= "witchcraft:tree" and n ~="air" and n ~= "gauges:hp_bar" then
local treepos = self.object:getpos() local treepos = self.object:getpos()
default.grow_new_jungle_tree(treepos) default.grow_new_jungle_tree(treepos)
self.object:remove()
elseif n == "default:wood" or n =="default:tree" or n =="default:dirt_with_grass" or n =="default:dirt_with_dry_grass" then
self.hit_node(self, pos, node)
self.object:remove()
return
end
end
end
end
hit_node = function(self, pos, node)
local treepos = self.object:getpos()
default.grow_new_jungle_tree(treepos)
end
local apos = self.object:getpos()
local part = minetest.add_particlespawner(
6, --amount
0.3, --time
{x=apos.x-0.3, y=apos.y-0.3, z=apos.z-0.3}, --minpos
{x=apos.x+0.3, y=apos.y+0.3, z=apos.z+0.3}, --maxpos
{x=-0, y=-0, z=-0}, --minvel
{x=0, y=0, z=0}, --maxvel
{x=0,y=-0.5,z=0}, --minacc
{x=0.5,y=0.5,z=0.5}, --maxacc
0.1, --minexptime
0.3, --maxexptime
1, --minsize
2, --maxsize
false, --collisiondetection
"witchcraft_leaf_over.png" --texture
)
end,
})
minetest.register_entity(
"witchcraft:ice",
{
visual="sprite",
visual_size={x=1,y=1},
physical=false,
textures={"witchcraft_ice.png"},
velocity = 1,
rotate = 90,
auto_rotate = true,
damage = 2,
collisionbox = {0, 0, 0, 0, 0, 0},
on_step = function(self, obj, pos)
local remove = minetest.after(10, function()
self.object:remove()
end)
local pos = self.object:getpos()
local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2)
for k, obj in pairs(objs) do
if obj:get_luaentity() ~= nil then
if obj:get_luaentity().name ~= "witchcraft:ice"
and obj:get_luaentity().name ~= "__builtin:item"
and obj:get_luaentity().name ~= "gauges:hp_bar"
then
obj:punch(
self.object, 1.0,
{
full_punch_interval=1.0,
damage_groups={fleshy=1},
}, nil)
self.object:remove() self.object:remove()
end elseif n == "default:wood" or n =="default:tree" or n =="default:dirt_with_grass" or n =="default:dirt_with_dry_grass" then
end self.hit_node(self, pos, node)
for dx=0,1 do self.object:remove()
for dy=0,1 do return
for dz=0,1 do end
local p = {x=pos.x+dx, y=pos.y, z=pos.z+dz}
local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
local n = minetest.get_node(p).name
if n == "default:water_source" or n =="default:river_water_source" then
local pos = self.object:getpos()
minetest.set_node(pos, {name="default:ice"})
self.object:remove()
elseif n ~= "air" then
local velo = self.object:getvelocity()
self.object:setvelocity({x=velo.x*-1, y=velo.y*0, z=velo.z*1})
--self.object:remove()
return
end end
end end
end end
end hit_node = function(self, pos, node)
local treepos = self.object:getpos()
local apos = self.object:getpos() default.grow_new_jungle_tree(treepos)
local part = minetest.add_particlespawner(
10, --amount
0.3, --time
{x=apos.x-0.3, y=apos.y-0.3, z=apos.z-0.3}, --minpos
{x=apos.x+0.3, y=apos.y+0.3, z=apos.z+0.3}, --maxpos
{x=-0, y=-0, z=-0}, --minvel
{x=0, y=0, z=0}, --maxvel
{x=0,y=-0.5,z=0}, --minacc
{x=0.5,y=0.5,z=0.5}, --maxacc
0.1, --minexptime
0.3, --maxexptime
0.2, --minsize
0.5, --maxsize
false, --collisiondetection
"witchcraft_light_over.png" --texture
)
end
end end
local apos = self.object:getpos()
local part = minetest.add_particlespawner(
6, --amount
0.3, --time
{x=apos.x-0.3, y=apos.y-0.3, z=apos.z-0.3}, --minpos
{x=apos.x+0.3, y=apos.y+0.3, z=apos.z+0.3}, --maxpos
{x=-0, y=-0, z=-0}, --minvel
{x=0, y=0, z=0}, --maxvel
{x=0,y=-0.5,z=0}, --minacc
{x=0.5,y=0.5,z=0.5}, --maxacc
0.1, --minexptime
0.3, --maxexptime
1, --minsize
2, --maxsize
false, --collisiondetection
"witchcraft_leaf_over.png" --texture
)
end,
})
minetest.register_entity("witchcraft:ice", {
visual="sprite",
visual_size={x=1,y=1},
physical=false,
textures={"witchcraft_ice.png"},
velocity = 1,
rotate = 90,
auto_rotate = true,
damage = 2,
collisionbox = {0, 0, 0, 0, 0, 0},
on_step = function(self, obj, pos)
local remove = minetest.after(10, function()
self.object:remove()
end)
local pos = self.object:getpos()
local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2)
for k, obj in pairs(objs) do
if obj:get_luaentity() ~= nil then
if obj:get_luaentity().name ~= "witchcraft:ice" and obj:get_luaentity().name ~= "__builtin:item" and obj:get_luaentity().name ~= "gauges:hp_bar" then
obj:punch(self.object, 1.0, {
full_punch_interval=1.0,
damage_groups={fleshy=1},
}, nil)
self.object:remove()
end
end
for dx=0,1 do
for dy=0,1 do
for dz=0,1 do
local p = {x=pos.x+dx, y=pos.y, z=pos.z+dz}
local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
local n = minetest.env:get_node(p).name
if n == "default:water_source" or n =="default:river_water_source" then
local pos = self.object:getpos()
minetest.set_node(pos, {name="default:ice"})
self.object:remove()
elseif n ~= "air" and n ~= "gauges:hp_bar" then
local velo = self.object:getvelocity()
self.object:setvelocity({x=velo.x*-1, y=velo.y*0, z=velo.z*1})
--self.object:remove()
return
end
end
end
end
local apos = self.object:getpos()
local part = minetest.add_particlespawner(
10, --amount
0.3, --time
{x=apos.x-0.3, y=apos.y-0.3, z=apos.z-0.3}, --minpos
{x=apos.x+0.3, y=apos.y+0.3, z=apos.z+0.3}, --maxpos
{x=-0, y=-0, z=-0}, --minvel
{x=0, y=0, z=0}, --maxvel
{x=0,y=-0.5,z=0}, --minacc
{x=0.5,y=0.5,z=0.5}, --maxacc
0.1, --minexptime
0.3, --maxexptime
0.2, --minsize
0.5, --maxsize
false, --collisiondetection
"witchcraft_light_over.png" --texture
)
end
end
}) })

Binary file not shown.

Before

Width:  |  Height:  |  Size: 388 B

After

Width:  |  Height:  |  Size: 349 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 377 B

After

Width:  |  Height:  |  Size: 356 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 394 B

After

Width:  |  Height:  |  Size: 350 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 382 B

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 385 B

After

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 391 B

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 544 B

After

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 550 B

After

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 424 B

After

Width:  |  Height:  |  Size: 365 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 546 B

After

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 552 B

After

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 392 B

After

Width:  |  Height:  |  Size: 349 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 391 B

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 373 B

After

Width:  |  Height:  |  Size: 342 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 395 B

After

Width:  |  Height:  |  Size: 350 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 395 B

After

Width:  |  Height:  |  Size: 349 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 387 B

After

Width:  |  Height:  |  Size: 349 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 375 B

After

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 378 B

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 419 B

After

Width:  |  Height:  |  Size: 359 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 393 B

After

Width:  |  Height:  |  Size: 352 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 398 B

After

Width:  |  Height:  |  Size: 347 B