Compare commits
	
		
			10 Commits
		
	
	
		
			nalc-1.0
			...
			0cbc98900a
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 0cbc98900a | |||
| 0a06acc1d8 | |||
| 
						 | 
					c129dea077 | ||
| a9cac59e4c | |||
| 11f39382ef | |||
| b500873215 | |||
| 0e277c51fb | |||
| 36d76ca7fb | |||
| 
						 | 
					efe57c3137 | ||
| 
						 | 
					ee1eb7d8ce | 
@@ -13,7 +13,7 @@ minetest.register_node("witchcraft:brewing_stand", {
 | 
			
		||||
		"witchcraft_brewing_stand_side.png"
 | 
			
		||||
	},
 | 
			
		||||
	drawtype = "nodebox",
 | 
			
		||||
	use_texture_alpha = true,
 | 
			
		||||
	use_texture_alpha = "blend",
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	drop = {
 | 
			
		||||
		items = {
 | 
			
		||||
@@ -36,14 +36,14 @@ minetest.register_node("witchcraft:brewing_stand", {
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
	on_rightclick = function(pos, node, clicker, item, _)
 | 
			
		||||
		local wield_item = clicker:get_wielded_item():get_name()
 | 
			
		||||
		local wield_item = item:get_name()
 | 
			
		||||
		local new_item = wield_item.."_2"
 | 
			
		||||
		if minetest.get_item_group(wield_item, "potion") ~= 0 then
 | 
			
		||||
			minetest.set_node(pos, {name="witchcraft:brewing_stand_active", param2=node.param2})
 | 
			
		||||
			item:take_item()
 | 
			
		||||
			minetest.after(30, function()
 | 
			
		||||
			minetest.set_node(pos, {name="witchcraft:brewing_stand_unready", param2=node.param2})
 | 
			
		||||
			minetest.add_item(pos, new_item)
 | 
			
		||||
				minetest.set_node(pos, {name="witchcraft:brewing_stand_unready", param2=node.param2})
 | 
			
		||||
				minetest.add_item(pos, new_item)
 | 
			
		||||
			end)
 | 
			
		||||
		end
 | 
			
		||||
	end,
 | 
			
		||||
@@ -59,7 +59,7 @@ minetest.register_node("witchcraft:brewing_stand_active", {
 | 
			
		||||
		"witchcraft_brewing_stand_side.png"
 | 
			
		||||
	},
 | 
			
		||||
	drawtype = "nodebox",
 | 
			
		||||
	use_texture_alpha = true,
 | 
			
		||||
	use_texture_alpha = "blend",
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	light_source = 1, 
 | 
			
		||||
	drop = {
 | 
			
		||||
@@ -96,7 +96,7 @@ minetest.register_node("witchcraft:brewing_stand_unready", {
 | 
			
		||||
	},
 | 
			
		||||
	inventory_image = "witchcraft_brewing_stand_inv.png",
 | 
			
		||||
	drawtype = "nodebox",
 | 
			
		||||
	use_texture_alpha = true,
 | 
			
		||||
	use_texture_alpha = "blend",
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	light_source = 1, 
 | 
			
		||||
	drop = {
 | 
			
		||||
@@ -120,7 +120,7 @@ minetest.register_node("witchcraft:brewing_stand_unready", {
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
	on_rightclick = function(pos, node, clicker, item, _)
 | 
			
		||||
		local wield_item = clicker:get_wielded_item():get_name()
 | 
			
		||||
		local wield_item = item:get_name()
 | 
			
		||||
		if wield_item == "default:mese_crystal_fragment" then
 | 
			
		||||
			minetest.set_node(pos, {name="witchcraft:brewing_stand", param2=node.param2})
 | 
			
		||||
			item:take_item()
 | 
			
		||||
@@ -161,4 +161,4 @@ minetest.register_craft({
 | 
			
		||||
		{'group:stick', 'default:diamond', 'group:stick'},
 | 
			
		||||
		{'', 'default:obsidian_shard', ''},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
})
 | 
			
		||||
 
 | 
			
		||||
@@ -8,5 +8,6 @@ farming?
 | 
			
		||||
lightning?
 | 
			
		||||
pmobs?
 | 
			
		||||
hud_hunger?
 | 
			
		||||
hunger_ng?
 | 
			
		||||
moreplants?
 | 
			
		||||
horror?
 | 
			
		||||
horror?
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								mod.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,3 @@
 | 
			
		||||
name = witchcraft
 | 
			
		||||
depends = default,vessels,tnt,fire,playereffects
 | 
			
		||||
optional_depends = player_monoids,farming,lightning,pmobs,hud_hunger,hunger_ng,moreplants,horror
 | 
			
		||||
							
								
								
									
										666
									
								
								scrolls.lua
									
									
									
									
									
								
							
							
						
						@@ -1,426 +1,412 @@
 | 
			
		||||
--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,
 | 
			
		||||
		 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("witchcraft:scroll_night", {
 | 
			
		||||
	description = "Scroll of night",
 | 
			
		||||
	inventory_image = "witchcraft_scroll.png^witchcraft_moon_over.png",
 | 
			
		||||
	stack_max = 1,
 | 
			
		||||
	on_use = function(item)
 | 
			
		||||
	minetest.set_timeofday(0)
 | 
			
		||||
	item:take_item()
 | 
			
		||||
	return item
 | 
			
		||||
	end,
 | 
			
		||||
		description = "Scroll of night",
 | 
			
		||||
		inventory_image = "witchcraft_scroll.png^witchcraft_moon_over.png",
 | 
			
		||||
		stack_max = 1,
 | 
			
		||||
		on_use = function(item)
 | 
			
		||||
			minetest.set_timeofday(0)
 | 
			
		||||
			item:take_item()
 | 
			
		||||
			return item
 | 
			
		||||
		end,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
if minetest.get_modpath("pmobs")then
 | 
			
		||||
minetest.register_craftitem("witchcraft:scroll_wild", {
 | 
			
		||||
	description = "Scroll of Wild",
 | 
			
		||||
	inventory_image = "witchcraft_scroll.png^witchcraft_dark_over.png",
 | 
			
		||||
	stack_max = 1,
 | 
			
		||||
	on_use = function(item, placer)
 | 
			
		||||
	local pos = placer:getpos();
 | 
			
		||||
	minetest.env:add_entity(pos, "pmobs:dog")
 | 
			
		||||
	item:take_item()
 | 
			
		||||
	return item
 | 
			
		||||
	end,
 | 
			
		||||
})
 | 
			
		||||
	minetest.register_craftitem("witchcraft:scroll_wild", {
 | 
			
		||||
		description = "Scroll of Wild",
 | 
			
		||||
		inventory_image = "witchcraft_scroll.png^witchcraft_dark_over.png",
 | 
			
		||||
		stack_max = 1,
 | 
			
		||||
		on_use = function(item, placer)
 | 
			
		||||
			local pos = placer:get_pos()
 | 
			
		||||
			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.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,
 | 
			
		||||
		description = "Scroll of fireball",
 | 
			
		||||
		inventory_image = "witchcraft_scroll.png^witchcraft_fire_over.png",
 | 
			
		||||
		stack_max = 1,
 | 
			
		||||
		on_use = function(item, placer, pointed_thing)
 | 
			
		||||
			local dir = placer:get_look_dir()
 | 
			
		||||
			local playerpos = placer:get_pos()
 | 
			
		||||
			local entities = {}
 | 
			
		||||
			for i=1,4 do
 | 
			
		||||
				entities[i] = 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")
 | 
			
		||||
			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
 | 
			
		||||
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,
 | 
			
		||||
})
 | 
			
		||||
	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, pointed_thing)
 | 
			
		||||
				local playerpos = placer:get_pos()
 | 
			
		||||
				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,
 | 
			
		||||
		description = "Scroll of icicle",
 | 
			
		||||
		inventory_image = "witchcraft_scroll.png^witchcraft_ice_over.png",
 | 
			
		||||
		stack_max = 1,
 | 
			
		||||
		on_use = function(item, placer, pointed_thing)
 | 
			
		||||
			local dir = placer:get_look_dir()
 | 
			
		||||
			local playerpos = placer:get_pos()
 | 
			
		||||
			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:set_velocity(vec)
 | 
			
		||||
			obj2:set_velocity(vec)
 | 
			
		||||
			obj3:set_velocity(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,
 | 
			
		||||
		description = "Scroll of nature",
 | 
			
		||||
		inventory_image = "witchcraft_scroll.png^witchcraft_leaf_over.png",
 | 
			
		||||
		stack_max = 1,
 | 
			
		||||
		on_use = function(item, placer, pointed_thing)
 | 
			
		||||
			local dir = placer:get_look_dir()
 | 
			
		||||
			local playerpos = placer:get_pos()
 | 
			
		||||
			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:set_velocity(vec)
 | 
			
		||||
			item:take_item()
 | 
			
		||||
			return item
 | 
			
		||||
		end,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craftitem("witchcraft:scroll", {
 | 
			
		||||
	description = "Blank Scroll",
 | 
			
		||||
	inventory_image = "witchcraft_scroll.png",
 | 
			
		||||
		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,
 | 
			
		||||
		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'},
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
	minetest.register_craft({
 | 
			
		||||
			output = 'witchcraft:scroll_wild',
 | 
			
		||||
			recipe = {
 | 
			
		||||
				{'mobs:meat_raw'},
 | 
			
		||||
				{'witchcraft:scroll'},
 | 
			
		||||
			}
 | 
			
		||||
	})
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = 'witchcraft:scroll',
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{'default:paper', 'default:paper', ''},
 | 
			
		||||
		{'default:paper', 'default:paper', ''},
 | 
			
		||||
	}
 | 
			
		||||
		output = 'witchcraft:scroll',
 | 
			
		||||
		recipe = {
 | 
			
		||||
			{'default:paper', 'default:paper', ''},
 | 
			
		||||
			{'default:paper', 'default:paper', ''},
 | 
			
		||||
		}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = 'witchcraft:scroll_recipe',
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{'dye:black'},
 | 
			
		||||
		{'witchcraft:scroll'},
 | 
			
		||||
	}
 | 
			
		||||
		output = 'witchcraft:scroll_recipe',
 | 
			
		||||
		recipe = {
 | 
			
		||||
			{'dye:black'},
 | 
			
		||||
			{'witchcraft:scroll'},
 | 
			
		||||
		}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = 'witchcraft:scroll_icicle',
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{'default:ice'},
 | 
			
		||||
		{'default:diamond'},
 | 
			
		||||
		{'witchcraft:scroll'},
 | 
			
		||||
	}
 | 
			
		||||
		output = 'witchcraft:scroll_icicle',
 | 
			
		||||
		recipe = {
 | 
			
		||||
			{'default:ice'},
 | 
			
		||||
			{'default:diamond'},
 | 
			
		||||
			{'witchcraft:scroll'},
 | 
			
		||||
		}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = 'witchcraft:scroll_fireball',
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{'default:obsidian_shard'},
 | 
			
		||||
		{'default:diamond'},
 | 
			
		||||
		{'witchcraft:scroll'},
 | 
			
		||||
	}
 | 
			
		||||
		output = 'witchcraft:scroll_fireball',
 | 
			
		||||
		recipe = {
 | 
			
		||||
			{'default:obsidian_shard'},
 | 
			
		||||
			{'default:diamond'},
 | 
			
		||||
			{'witchcraft:scroll'},
 | 
			
		||||
		}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = 'witchcraft:scroll_nature',
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{'default:leaves'},
 | 
			
		||||
		{'default:diamond'},
 | 
			
		||||
		{'witchcraft:scroll'},
 | 
			
		||||
	}
 | 
			
		||||
		output = 'witchcraft:scroll_nature',
 | 
			
		||||
		recipe = {
 | 
			
		||||
			{'default:leaves'},
 | 
			
		||||
			{'default:diamond'},
 | 
			
		||||
			{'witchcraft:scroll'},
 | 
			
		||||
		}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = 'witchcraft:scroll_day',
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{'default:torch'},
 | 
			
		||||
		{'default:diamond'},
 | 
			
		||||
		{'witchcraft:scroll'},
 | 
			
		||||
	}
 | 
			
		||||
		output = 'witchcraft:scroll_day',
 | 
			
		||||
		recipe = {
 | 
			
		||||
			{'default:torch'},
 | 
			
		||||
			{'default:diamond'},
 | 
			
		||||
			{'witchcraft:scroll'},
 | 
			
		||||
		}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = 'witchcraft:scroll_night',
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{'default:coal_lump'},
 | 
			
		||||
		{'default:diamond'},
 | 
			
		||||
		{'witchcraft:scroll'},
 | 
			
		||||
	}
 | 
			
		||||
		output = 'witchcraft:scroll_night',
 | 
			
		||||
		recipe = {
 | 
			
		||||
			{'default:coal_lump'},
 | 
			
		||||
			{'default:diamond'},
 | 
			
		||||
			{'witchcraft:scroll'},
 | 
			
		||||
		}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = 'witchcraft:scroll_lightning',
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{'default:steel_ingot'},
 | 
			
		||||
		{'default:diamond'},
 | 
			
		||||
		{'witchcraft:scroll'},
 | 
			
		||||
	}
 | 
			
		||||
		output = 'witchcraft:scroll_lightning',
 | 
			
		||||
		recipe = {
 | 
			
		||||
			{'default:steel_ingot'},
 | 
			
		||||
			{'default:diamond'},
 | 
			
		||||
			{'witchcraft:scroll'},
 | 
			
		||||
		}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
--scroll powers
 | 
			
		||||
 | 
			
		||||
minetest.register_entity("witchcraft:fireball", {
 | 
			
		||||
	textures = {"tnt_boom.png"},
 | 
			
		||||
	velocity = 0.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:fireball" 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=3},
 | 
			
		||||
						}, nil)
 | 
			
		||||
		textures = {"tnt_boom.png"},
 | 
			
		||||
		velocity = 0.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:fireball"
 | 
			
		||||
						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=3},
 | 
			
		||||
							}, nil)
 | 
			
		||||
						self.object:remove()
 | 
			
		||||
						return
 | 
			
		||||
					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:fireball" and n ~="default:dirt_with_grass" and n ~="default:dirt_with_dry_grass" and n ~="default:stone" and n ~= "gauges:hp_bar" then	
 | 
			
		||||
									if minetest.registered_nodes[n].groups.flammable --[[or math.random(1, 100) <= 1]] then
 | 
			
		||||
										minetest.env:set_node(t, {name="fire:basic_flame"})
 | 
			
		||||
									self.object:remove()
 | 
			
		||||
									return
 | 
			
		||||
									end
 | 
			
		||||
								end
 | 
			
		||||
				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.get_node(p).name
 | 
			
		||||
						if n ~= "witchcraft:fireball" and n ~="default:dirt_with_grass" then	
 | 
			
		||||
							if minetest.registered_nodes[n].groups.flammable then
 | 
			
		||||
								minetest.set_node(t, {name="fire:basic_flame"})
 | 
			
		||||
								self.object:remove()
 | 
			
		||||
								return
 | 
			
		||||
							end
 | 
			
		||||
						end
 | 
			
		||||
					end
 | 
			
		||||
			hit_node = function(self, pos, node)
 | 
			
		||||
--	local pos = self.object:getpos()
 | 
			
		||||
		for dx=-4,4 do
 | 
			
		||||
			for dy=-4,4 do
 | 
			
		||||
				for dz=-4,4 do
 | 
			
		||||
					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 n = minetest.env:get_node(pos).name
 | 
			
		||||
					if math.random(1, 50) <= 35 then
 | 
			
		||||
						minetest.env:remove_node(p)
 | 
			
		||||
					end
 | 
			
		||||
					if minetest.registered_nodes[n].groups.flammable or math.random(1, 100) <=5 then
 | 
			
		||||
										minetest.env:set_node(t, {name="fire:basic_flame"})
 | 
			
		||||
					end
 | 
			
		||||
				end
 | 
			
		||||
			end
 | 
			
		||||
		end
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		local apos = self.object:getpos()
 | 
			
		||||
		local vec = self.object:getvelocity()
 | 
			
		||||
		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=-vec.x,y=-vec.y,z=-vec.z}, --maxacc
 | 
			
		||||
			0.1, --minexptime
 | 
			
		||||
			0.3, --maxexptime
 | 
			
		||||
			1, --minsize
 | 
			
		||||
			2, --maxsize
 | 
			
		||||
			false, --collisiondetection
 | 
			
		||||
			"witchcraft_flame.png" --texture
 | 
			
		||||
		)
 | 
			
		||||
		
 | 
			
		||||
	end,
 | 
			
		||||
			local vec = self.object:get_velocity()
 | 
			
		||||
			minetest.add_particlespawner({
 | 
			
		||||
				amount = 6,
 | 
			
		||||
				time = 0.3,
 | 
			
		||||
				minpos = {x=pos.x-0.3, y=pos.y-0.3, z=pos.z-0.3},
 | 
			
		||||
				maxpos = {x=pos.x+0.3, y=pos.y+0.3, z=pos.z+0.3},
 | 
			
		||||
				minvel = {x=-0, y=-0, z=-0},
 | 
			
		||||
				maxvel = {x=0, y=0, z=0},
 | 
			
		||||
				minacc = {x=0,y=-0.5,z=0},
 | 
			
		||||
				maxacc = {x=-vec.x,y=-vec.y,z=-vec.z},
 | 
			
		||||
				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: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" and obj:get_luaentity().name ~= "gauges:hp_bar" then
 | 
			
		||||
						obj:remove()
 | 
			
		||||
						local treepos = self.object:getpos()
 | 
			
		||||
						default.grow_new_jungle_tree(treepos)
 | 
			
		||||
		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
 | 
			
		||||
			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" and n ~= "gauges:hp_bar" 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
 | 
			
		||||
			
 | 
			
		||||
			local n = minetest.get_node(pos).name
 | 
			
		||||
			if n ~= "witchcraft:tree" and n ~="air" then	
 | 
			
		||||
				default.grow_new_jungle_tree(pos)
 | 
			
		||||
				self.object:remove()
 | 
			
		||||
			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.add_particlespawner({
 | 
			
		||||
				amount = 6,
 | 
			
		||||
				time = 0.3,
 | 
			
		||||
				minpos = {x=pos.x-0.3, y=pos.y-0.3, z=pos.z-0.3},
 | 
			
		||||
				maxpos = {x=pos.x+0.3, y=pos.y+0.3, z=pos.z+0.3},
 | 
			
		||||
				minvel = {x=-0, y=-0, z=-0},
 | 
			
		||||
				maxvel = {x=0, y=0, z=0},
 | 
			
		||||
				minacc = {x=0,y=-0.5,z=0},
 | 
			
		||||
				maxacc = {x=0.5,y=0.5,z=0.5},
 | 
			
		||||
				minexptime = 0.1,
 | 
			
		||||
				maxexptime = 0.3,
 | 
			
		||||
				minsize = 1,
 | 
			
		||||
				maxsize = 2,
 | 
			
		||||
				collisiondetection = false,
 | 
			
		||||
				texture = "witchcraft_leaf_over.png"
 | 
			
		||||
			})
 | 
			
		||||
		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)	
 | 
			
		||||
		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: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() ~= 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
 | 
			
		||||
					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()
 | 
			
		||||
						return
 | 
			
		||||
					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)}}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
		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
 | 
			
		||||
			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
 | 
			
		||||
 | 
			
		||||
			minetest.add_particlespawner({
 | 
			
		||||
				amount = 10,
 | 
			
		||||
				time = 0.3,
 | 
			
		||||
				minpos = {x=pos.x-0.3, y=pos.y-0.3, z=pos.z-0.3},
 | 
			
		||||
				maxpos = {x=pos.x+0.3, y=pos.y+0.3, z=pos.z+0.3},
 | 
			
		||||
				minvel = {x=-0, y=-0, z=-0},
 | 
			
		||||
				maxvel = {x=0, y=0, z=0},
 | 
			
		||||
				minacc = {x=0,y=-0.5,z=0},
 | 
			
		||||
				maxacc = {x=0.5,y=0.5,z=0.5},
 | 
			
		||||
				minexptime = 0.1,
 | 
			
		||||
				maxexptime = 0.3,
 | 
			
		||||
				minsize = 0.2,
 | 
			
		||||
				maxsize = 0.5,
 | 
			
		||||
				collisiondetection = false,
 | 
			
		||||
				texture = "witchcraft_light_over.png"
 | 
			
		||||
			})
 | 
			
		||||
		end
 | 
			
		||||
})
 | 
			
		||||
 
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 175 B After Width: | Height: | Size: 159 B  | 
| 
		 Before Width: | Height: | Size: 217 B After Width: | Height: | Size: 163 B  | 
| 
		 Before Width: | Height: | Size: 266 B After Width: | Height: | Size: 185 B  | 
| 
		 Before Width: | Height: | Size: 228 B After Width: | Height: | Size: 172 B  | 
| 
		 Before Width: | Height: | Size: 493 B After Width: | Height: | Size: 333 B  | 
| 
		 Before Width: | Height: | Size: 458 B After Width: | Height: | Size: 297 B  | 
| 
		 Before Width: | Height: | Size: 127 B After Width: | Height: | Size: 124 B  | 
| 
		 Before Width: | Height: | Size: 162 B After Width: | Height: | Size: 142 B  | 
| 
		 Before Width: | Height: | Size: 167 B After Width: | Height: | Size: 142 B  | 
| 
		 Before Width: | Height: | Size: 683 B After Width: | Height: | Size: 434 B  | 
| 
		 Before Width: | Height: | Size: 155 B After Width: | Height: | Size: 127 B  | 
| 
		 Before Width: | Height: | Size: 227 B After Width: | Height: | Size: 177 B  | 
| 
		 Before Width: | Height: | Size: 258 B After Width: | Height: | Size: 176 B  | 
| 
		 Before Width: | Height: | Size: 193 B After Width: | Height: | Size: 159 B  | 
| 
		 Before Width: | Height: | Size: 255 B After Width: | Height: | Size: 196 B  | 
| 
		 Before Width: | Height: | Size: 137 B After Width: | Height: | Size: 127 B  | 
| 
		 Before Width: | Height: | Size: 401 B After Width: | Height: | Size: 225 B  | 
| 
		 Before Width: | Height: | Size: 338 B After Width: | Height: | Size: 202 B  | 
| 
		 Before Width: | Height: | Size: 352 B After Width: | Height: | Size: 204 B  | 
| 
		 Before Width: | Height: | Size: 143 B After Width: | Height: | Size: 129 B  | 
| 
		 Before Width: | Height: | Size: 277 B After Width: | Height: | Size: 233 B  | 
| 
		 Before Width: | Height: | Size: 230 B After Width: | Height: | Size: 178 B  | 
| 
		 Before Width: | Height: | Size: 414 B After Width: | Height: | Size: 296 B  | 
| 
		 Before Width: | Height: | Size: 438 B After Width: | Height: | Size: 218 B  | 
| 
		 Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 218 B  | 
| 
		 Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB  | 
| 
		 Before Width: | Height: | Size: 679 B After Width: | Height: | Size: 340 B  | 
| 
		 Before Width: | Height: | Size: 698 B After Width: | Height: | Size: 341 B  | 
| 
		 Before Width: | Height: | Size: 665 B After Width: | Height: | Size: 340 B  | 
| 
		 Before Width: | Height: | Size: 86 B After Width: | Height: | Size: 83 B  | 
| 
		 Before Width: | Height: | Size: 694 B After Width: | Height: | Size: 340 B  | 
| 
		 Before Width: | Height: | Size: 683 B After Width: | Height: | Size: 341 B  | 
| 
		 Before Width: | Height: | Size: 667 B After Width: | Height: | Size: 340 B  | 
| 
		 Before Width: | Height: | Size: 1017 B After Width: | Height: | Size: 548 B  | 
| 
		 Before Width: | Height: | Size: 961 B After Width: | Height: | Size: 561 B  | 
| 
		 Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 838 B  | 
| 
		 Before Width: | Height: | Size: 968 B After Width: | Height: | Size: 544 B  | 
| 
		 Before Width: | Height: | Size: 981 B After Width: | Height: | Size: 570 B  | 
| 
		 Before Width: | Height: | Size: 693 B After Width: | Height: | Size: 340 B  | 
| 
		 Before Width: | Height: | Size: 698 B After Width: | Height: | Size: 340 B  | 
| 
		 Before Width: | Height: | Size: 674 B After Width: | Height: | Size: 340 B  | 
| 
		 Before Width: | Height: | Size: 661 B After Width: | Height: | Size: 340 B  | 
| 
		 Before Width: | Height: | Size: 658 B After Width: | Height: | Size: 340 B  | 
| 
		 Before Width: | Height: | Size: 657 B After Width: | Height: | Size: 340 B  | 
| 
		 Before Width: | Height: | Size: 643 B After Width: | Height: | Size: 340 B  | 
| 
		 Before Width: | Height: | Size: 689 B After Width: | Height: | Size: 340 B  | 
| 
		 Before Width: | Height: | Size: 285 B After Width: | Height: | Size: 238 B  | 
| 
		 Before Width: | Height: | Size: 664 B After Width: | Height: | Size: 361 B  | 
| 
		 Before Width: | Height: | Size: 351 B After Width: | Height: | Size: 251 B  | 
| 
		 Before Width: | Height: | Size: 665 B After Width: | Height: | Size: 340 B  | 
| 
		 Before Width: | Height: | Size: 679 B After Width: | Height: | Size: 340 B  | 
| 
		 Before Width: | Height: | Size: 349 B After Width: | Height: | Size: 218 B  | 
| 
		 Before Width: | Height: | Size: 356 B After Width: | Height: | Size: 218 B  | 
| 
		 Before Width: | Height: | Size: 350 B After Width: | Height: | Size: 218 B  | 
| 
		 Before Width: | Height: | Size: 354 B After Width: | Height: | Size: 218 B  | 
| 
		 Before Width: | Height: | Size: 355 B After Width: | Height: | Size: 218 B  | 
| 
		 Before Width: | Height: | Size: 351 B After Width: | Height: | Size: 218 B  | 
| 
		 Before Width: | Height: | Size: 374 B After Width: | Height: | Size: 272 B  | 
| 
		 Before Width: | Height: | Size: 378 B After Width: | Height: | Size: 272 B  | 
| 
		 Before Width: | Height: | Size: 365 B After Width: | Height: | Size: 295 B  | 
| 
		 Before Width: | Height: | Size: 375 B After Width: | Height: | Size: 271 B  | 
| 
		 Before Width: | Height: | Size: 377 B After Width: | Height: | Size: 272 B  | 
| 
		 Before Width: | Height: | Size: 349 B After Width: | Height: | Size: 218 B  | 
| 
		 Before Width: | Height: | Size: 351 B After Width: | Height: | Size: 218 B  | 
| 
		 Before Width: | Height: | Size: 342 B After Width: | Height: | Size: 218 B  | 
| 
		 Before Width: | Height: | Size: 350 B After Width: | Height: | Size: 218 B  | 
| 
		 Before Width: | Height: | Size: 349 B After Width: | Height: | Size: 218 B  | 
| 
		 Before Width: | Height: | Size: 349 B After Width: | Height: | Size: 218 B  | 
| 
		 Before Width: | Height: | Size: 345 B After Width: | Height: | Size: 218 B  | 
| 
		 Before Width: | Height: | Size: 354 B After Width: | Height: | Size: 218 B  | 
| 
		 Before Width: | Height: | Size: 359 B After Width: | Height: | Size: 289 B  | 
| 
		 Before Width: | Height: | Size: 352 B After Width: | Height: | Size: 218 B  | 
| 
		 Before Width: | Height: | Size: 347 B After Width: | Height: | Size: 218 B  | 
| 
		 Before Width: | Height: | Size: 465 KiB After Width: | Height: | Size: 300 KiB  | 
| 
		 Before Width: | Height: | Size: 216 KiB After Width: | Height: | Size: 200 KiB  | 
| 
		 Before Width: | Height: | Size: 409 B After Width: | Height: | Size: 374 B  | 
| 
		 Before Width: | Height: | Size: 242 B After Width: | Height: | Size: 177 B  | 
| 
		 Before Width: | Height: | Size: 176 B After Width: | Height: | Size: 154 B  | 
| 
		 Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 814 B  | 
| 
		 Before Width: | Height: | Size: 421 B After Width: | Height: | Size: 339 B  | 
| 
		 Before Width: | Height: | Size: 428 B After Width: | Height: | Size: 333 B  | 
| 
		 Before Width: | Height: | Size: 422 B After Width: | Height: | Size: 339 B  | 
| 
		 Before Width: | Height: | Size: 423 B After Width: | Height: | Size: 339 B  | 
| 
		 Before Width: | Height: | Size: 423 B After Width: | Height: | Size: 345 B  | 
| 
		 Before Width: | Height: | Size: 425 B After Width: | Height: | Size: 336 B  | 
| 
		 Before Width: | Height: | Size: 385 B After Width: | Height: | Size: 315 B  | 
| 
		 Before Width: | Height: | Size: 403 B After Width: | Height: | Size: 337 B  | 
| 
		 Before Width: | Height: | Size: 393 B After Width: | Height: | Size: 316 B  | 
| 
		 Before Width: | Height: | Size: 406 B After Width: | Height: | Size: 340 B  | 
| 
		 Before Width: | Height: | Size: 390 B After Width: | Height: | Size: 337 B  | 
| 
		 Before Width: | Height: | Size: 425 B After Width: | Height: | Size: 336 B  | 
| 
		 Before Width: | Height: | Size: 388 B After Width: | Height: | Size: 318 B  | 
| 
		 Before Width: | Height: | Size: 307 B After Width: | Height: | Size: 271 B  | 
| 
		 Before Width: | Height: | Size: 122 B After Width: | Height: | Size: 119 B  | 
| 
		 Before Width: | Height: | Size: 246 B After Width: | Height: | Size: 194 B  |