1
0
mirror of https://github.com/D00Med/witchcraft.git synced 2024-09-28 23:30:20 +02:00

Compare commits

..

No commits in common. "master" and "v0.2" have entirely different histories.
master ... v0.2

114 changed files with 1578 additions and 2970 deletions

View File

@ -13,7 +13,7 @@ minetest.register_node("witchcraft:brewing_stand", {
"witchcraft_brewing_stand_side.png" "witchcraft_brewing_stand_side.png"
}, },
drawtype = "nodebox", drawtype = "nodebox",
use_texture_alpha = "blend", use_texture_alpha = true,
paramtype = "light", paramtype = "light",
drop = { drop = {
items = { items = {
@ -36,14 +36,14 @@ minetest.register_node("witchcraft:brewing_stand", {
} }
}, },
on_rightclick = function(pos, node, clicker, item, _) on_rightclick = function(pos, node, clicker, item, _)
local wield_item = item:get_name() local wield_item = clicker:get_wielded_item():get_name()
local new_item = wield_item.."_2" local new_item = wield_item.."_2"
if minetest.get_item_group(wield_item, "potion") ~= 0 then if minetest.get_item_group(wield_item, "potion") ~= 0 then
minetest.set_node(pos, {name="witchcraft:brewing_stand_active", param2=node.param2}) minetest.set_node(pos, {name="witchcraft:brewing_stand_active", param2=node.param2})
item:take_item() item:take_item()
minetest.after(30, function() minetest.after(30, function()
minetest.set_node(pos, {name="witchcraft:brewing_stand_unready", param2=node.param2}) minetest.set_node(pos, {name="witchcraft:brewing_stand_unready", param2=node.param2})
minetest.add_item(pos, new_item) minetest.add_item(pos, new_item)
end) end)
end end
end, end,
@ -59,7 +59,7 @@ minetest.register_node("witchcraft:brewing_stand_active", {
"witchcraft_brewing_stand_side.png" "witchcraft_brewing_stand_side.png"
}, },
drawtype = "nodebox", drawtype = "nodebox",
use_texture_alpha = "blend", use_texture_alpha = true,
paramtype = "light", paramtype = "light",
light_source = 1, light_source = 1,
drop = { drop = {
@ -96,7 +96,7 @@ minetest.register_node("witchcraft:brewing_stand_unready", {
}, },
inventory_image = "witchcraft_brewing_stand_inv.png", inventory_image = "witchcraft_brewing_stand_inv.png",
drawtype = "nodebox", drawtype = "nodebox",
use_texture_alpha = "blend", use_texture_alpha = true,
paramtype = "light", paramtype = "light",
light_source = 1, light_source = 1,
drop = { drop = {
@ -120,7 +120,7 @@ minetest.register_node("witchcraft:brewing_stand_unready", {
} }
}, },
on_rightclick = function(pos, node, clicker, item, _) on_rightclick = function(pos, node, clicker, item, _)
local wield_item = item:get_name() local wield_item = clicker:get_wielded_item():get_name()
if wield_item == "default:mese_crystal_fragment" then if wield_item == "default:mese_crystal_fragment" then
minetest.set_node(pos, {name="witchcraft:brewing_stand", param2=node.param2}) minetest.set_node(pos, {name="witchcraft:brewing_stand", param2=node.param2})
item:take_item() item:take_item()

View File

@ -2,12 +2,8 @@ default
vessels vessels
tnt tnt
fire fire
playereffects
player_monoids?
farming? farming?
lightning? lightning?
pmobs? pmobs?
hud_hunger? hud_hunger?
hunger_ng?
moreplants? moreplants?
horror?

3768
init.lua

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,7 @@
License for Code License for Code
---------------- ----------------
Copyright (C) 2016 D00Med <heiselong@gmx.com> Copyright (C) 2016 DOOmed <heiselong@gmx.com>
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by it under the terms of the GNU Lesser General Public License as published by
@ -21,7 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
License for Textures, Models and Sounds License for Textures, Models and Sounds
--------------------------------------- ---------------------------------------
CC-BY-SA 3.0 UNPORTED. Created by D00Med CC-BY-SA 3.0 UNPORTED. Created by DOOmed
All potion bottles derived from All potion bottles derived from
vessels_glass_bottle.png (by Authors) vessels_glass_bottle.png (by Authors)

View File

@ -1,3 +0,0 @@
name = witchcraft
depends = default,vessels,tnt,fire,playereffects
optional_depends = player_monoids,farming,lightning,pmobs,hud_hunger,hunger_ng,moreplants,horror

View File

@ -1,19 +0,0 @@
mtllib 3 4ths.mtl
o converted_out
v 0.375 -0.25 -0.375
v 0.375 -0.25 0.375
v 0.375 0.1875 0.375
v 0.375 0.1875 -0.375
v -0.375 -0.25 -0.375
v -0.375 -0.25 0.375
v -0.375 0.1875 0.375
v -0.375 0.1875 -0.375
usemtl none
s off
g nodebox21
f 1 2 3 4
f 5 6 7 8
f 1 4 8 5
f 2 3 7 6
f 1 2 6 5
f 4 3 7 8

View File

@ -1,19 +0,0 @@
mtllib 1 4th.mtl
o converted_out
v 0.375 -0.25 -0.375
v 0.375 -0.25 0.375
v 0.375 -0.0625 0.375
v 0.375 -0.0625 -0.375
v -0.375 -0.25 -0.375
v -0.375 -0.25 0.375
v -0.375 -0.0625 0.375
v -0.375 -0.0625 -0.375
usemtl none
s off
g nodebox21
f 1 2 3 4
f 5 6 7 8
f 1 4 8 5
f 2 3 7 6
f 1 2 6 5
f 4 3 7 8

View File

@ -1,19 +0,0 @@
mtllib full.mtl
o converted_out
v 0.375 -0.25 -0.375
v 0.375 -0.25 0.375
v 0.375 0.375 0.375
v 0.375 0.375 -0.375
v -0.375 -0.25 -0.375
v -0.375 -0.25 0.375
v -0.375 0.375 0.375
v -0.375 0.375 -0.375
usemtl none
s off
g nodebox21
f 1 2 3 4
f 5 6 7 8
f 1 4 8 5
f 2 3 7 6
f 1 2 6 5
f 4 3 7 8

View File

@ -1,19 +0,0 @@
mtllib half.mtl
o converted_out
v 0.375 -0.25 -0.375
v 0.375 -0.25 0.375
v 0.375 0.0625 0.375
v 0.375 0.0625 -0.375
v -0.375 -0.25 -0.375
v -0.375 -0.25 0.375
v -0.375 0.0625 0.375
v -0.375 0.0625 -0.375
usemtl none
s off
g nodebox21
f 1 2 3 4
f 5 6 7 8
f 1 4 8 5
f 2 3 7 6
f 1 2 6 5
f 4 3 7 8

View File

@ -63,18 +63,3 @@ Potion ingredients(may be slightly inaccurate):
>bucket of water >bucket of water
>bullrush >bullrush
>bones >bones
About the recipes:
init.lua contains the pot recipes. For each pot there is a line similar to the one below, in the 'witchraft.pot' table.
{"blue", "brown", "default:dirt", "blue2", "moreplants:bullrush", "red", "purple"},
{"potion name", "result1", "ingredient1", "result2", "ingredient2", "combine potion", "combine result"}
The first column of the table("blue"), is the color of the current potion pot. In the example, it is the blue pot, so the ingredients and results in the other columns
will apply to the blue pot, ie: the blue pot must be rightclicked. It is important that the name of the pot is in the name of it's texture, eg: a blue pot has the texture "witchraft_pot_blue.png"
The second and fourth columns are the two possible results after adding new ingredients. The last column is the result after combining the current potion with another.
The third and fifth columns are the ingredients required. The ingredient req. to make the potion in column 2 must be in column 3, and the ingredient req. to make the potion in columns 4 must be in columns 5.
The 6th column is the potion that can be combined with the current potion to make a new potion.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 95 KiB

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 B

After

Width:  |  Height:  |  Size: 175 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 B

After

Width:  |  Height:  |  Size: 228 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 333 B

After

Width:  |  Height:  |  Size: 493 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 297 B

After

Width:  |  Height:  |  Size: 458 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 B

After

Width:  |  Height:  |  Size: 127 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 B

After

Width:  |  Height:  |  Size: 162 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 B

After

Width:  |  Height:  |  Size: 167 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 303 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 434 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 B

After

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 306 B

After

Width:  |  Height:  |  Size: 133 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 176 B

After

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 B

After

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 B

After

Width:  |  Height:  |  Size: 137 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 225 B

After

Width:  |  Height:  |  Size: 401 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 B

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 B

After

Width:  |  Height:  |  Size: 143 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 679 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 341 B

After

Width:  |  Height:  |  Size: 698 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 665 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 B

After

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 694 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 341 B

After

Width:  |  Height:  |  Size: 683 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 667 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 548 B

After

Width:  |  Height:  |  Size: 1017 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 561 B

After

Width:  |  Height:  |  Size: 961 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 838 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 544 B

After

Width:  |  Height:  |  Size: 968 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 570 B

After

Width:  |  Height:  |  Size: 981 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 693 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 698 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 674 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 661 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 658 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 657 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 643 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 689 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 B

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 361 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 251 B

After

Width:  |  Height:  |  Size: 351 B

View File

Before

Width:  |  Height:  |  Size: 437 B

After

Width:  |  Height:  |  Size: 437 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 665 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 679 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

After

Width:  |  Height:  |  Size: 388 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

After

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

After

Width:  |  Height:  |  Size: 394 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

After

Width:  |  Height:  |  Size: 382 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

After

Width:  |  Height:  |  Size: 385 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

After

Width:  |  Height:  |  Size: 391 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 B

After

Width:  |  Height:  |  Size: 544 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 B

After

Width:  |  Height:  |  Size: 550 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 271 B

After

Width:  |  Height:  |  Size: 546 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 B

After

Width:  |  Height:  |  Size: 552 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

After

Width:  |  Height:  |  Size: 392 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

After

Width:  |  Height:  |  Size: 391 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

After

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

After

Width:  |  Height:  |  Size: 395 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

After

Width:  |  Height:  |  Size: 395 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

After

Width:  |  Height:  |  Size: 387 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

After

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

After

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

After

Width:  |  Height:  |  Size: 393 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

After

Width:  |  Height:  |  Size: 398 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 300 KiB

After

Width:  |  Height:  |  Size: 215 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 374 B

After

Width:  |  Height:  |  Size: 409 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 814 B

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 339 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 333 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 339 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 339 B

Some files were not shown because too many files have changed in this diff Show More