Vertaa committeja
	
		
			1 Commitit
		
	
	
		
			nalc-1.2.0
			...
			nalc-old
		
	
	| Tekijä | SHA1 | Päivämäärä | |
|---|---|---|---|
|  | 0d8fa05588 | 
| @@ -2,12 +2,11 @@ default | ||||
| vessels | ||||
| tnt | ||||
| fire | ||||
| player_physics | ||||
| playereffects | ||||
| player_monoids? | ||||
| farming? | ||||
| lightning? | ||||
| pmobs? | ||||
| hud_hunger? | ||||
| hunger_ng? | ||||
| moreplants? | ||||
| horror? | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								screenshot.png
									
									
									
									
									
								
							
							
						
						| Before Leveys: | Korkeus: | Koko: 22 KiB After Leveys: | Korkeus: | Koko: 95 KiB | 
							
								
								
									
										754
									
								
								scrolls.lua
									
									
									
									
									
								
							
							
						
						| @@ -1,426 +1,480 @@ | ||||
| --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("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( | ||||
| 	"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, | ||||
| 	}) | ||||
|  | ||||
| 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, | ||||
| }) | ||||
|  | ||||
| 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, | ||||
| }) | ||||
| 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.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, | ||||
| }) | ||||
| 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, | ||||
| }) | ||||
| 	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) | ||||
| 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, | ||||
| }) | ||||
| 			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) | ||||
| 			 | ||||
| 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, | ||||
| 	}) | ||||
|  | ||||
| 		item:take_item() | ||||
| 		return item | ||||
| 	end, | ||||
| }) | ||||
| minetest.register_craftitem( | ||||
| 	"witchcraft:scroll", | ||||
| 	{ | ||||
| 		description = "Blank Scroll", | ||||
| 		inventory_image = "witchcraft_scroll.png", | ||||
| 	}) | ||||
|  | ||||
| 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.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, | ||||
| }) | ||||
| 			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', ''}, | ||||
| 	} | ||||
| }) | ||||
| minetest.register_craft( | ||||
| 	{ | ||||
| 		output = 'witchcraft:scroll', | ||||
| 		recipe = { | ||||
| 			{'default:paper', 'default:paper', ''}, | ||||
| 			{'default:paper', 'default:paper', ''}, | ||||
| 		} | ||||
| 	}) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = 'witchcraft:scroll_recipe', | ||||
| 	recipe = { | ||||
| 		{'dye:black'}, | ||||
| 		{'witchcraft:scroll'}, | ||||
| 	} | ||||
| }) | ||||
| minetest.register_craft( | ||||
| 	{ | ||||
| 		output = 'witchcraft:scroll_recipe', | ||||
| 		recipe = { | ||||
| 			{'dye:black'}, | ||||
| 			{'witchcraft:scroll'}, | ||||
| 		} | ||||
| 	}) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = 'witchcraft:scroll_icicle', | ||||
| 	recipe = { | ||||
| 		{'default:ice'}, | ||||
| 		{'default:diamond'}, | ||||
| 		{'witchcraft:scroll'}, | ||||
| 	} | ||||
| }) | ||||
| minetest.register_craft( | ||||
| 	{ | ||||
| 		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'}, | ||||
| 	} | ||||
| }) | ||||
| minetest.register_craft( | ||||
| 	{ | ||||
| 		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'}, | ||||
| 	} | ||||
| }) | ||||
| minetest.register_craft( | ||||
| 	{ | ||||
| 		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'}, | ||||
| 	} | ||||
| }) | ||||
| minetest.register_craft( | ||||
| 	{ | ||||
| 		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'}, | ||||
| 	} | ||||
| }) | ||||
| minetest.register_craft( | ||||
| 	{ | ||||
| 		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'}, | ||||
| 	} | ||||
| }) | ||||
|  | ||||
| minetest.register_craft( | ||||
| 	{ | ||||
| 		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)	 | ||||
| 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) | ||||
| 					self.object:remove() | ||||
| 					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() | ||||
| 					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" | ||||
| 						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 | ||||
| 								minetest.set_node(t, {name="fire:basic_flame"}) | ||||
| 								self.object:remove() | ||||
| 								return | ||||
| 							end | ||||
| 						end | ||||
| 					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"}) | ||||
| 				--	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.get_node(pos).name | ||||
| 							if math.random(1, 50) <= 35 then | ||||
| 								minetest.remove_node(p) | ||||
| 							end | ||||
| 							if minetest.registered_nodes[n].groups.flammable or math.random(1, 100) <=5 then | ||||
| 								minetest.set_node(t, {name="fire:basic_flame"}) | ||||
| 							end | ||||
| 						end | ||||
| 					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 | ||||
| 		) | ||||
| 			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, | ||||
| }) | ||||
| 		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)	 | ||||
| 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 | ||||
| 					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) | ||||
| 					self.object:remove() | ||||
| 						self.object:remove() | ||||
| 					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 | ||||
| 				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: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 | ||||
| 				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 | ||||
| 		) | ||||
| 			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, | ||||
| }) | ||||
| 		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)	 | ||||
| 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() | ||||
| 					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 | ||||
| 				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	 | ||||
| 				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.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 | ||||
| 							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 | ||||
|  | ||||
| 		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 | ||||
| 				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 | ||||
| }) | ||||
|   | ||||
| Before Leveys: | Korkeus: | Koko: 349 B After Leveys: | Korkeus: | Koko: 388 B | 
| Before Leveys: | Korkeus: | Koko: 356 B After Leveys: | Korkeus: | Koko: 377 B | 
| Before Leveys: | Korkeus: | Koko: 350 B After Leveys: | Korkeus: | Koko: 394 B | 
| Before Leveys: | Korkeus: | Koko: 354 B After Leveys: | Korkeus: | Koko: 382 B | 
| Before Leveys: | Korkeus: | Koko: 355 B After Leveys: | Korkeus: | Koko: 385 B | 
| Before Leveys: | Korkeus: | Koko: 351 B After Leveys: | Korkeus: | Koko: 391 B | 
| Before Leveys: | Korkeus: | Koko: 374 B After Leveys: | Korkeus: | Koko: 544 B | 
| Before Leveys: | Korkeus: | Koko: 378 B After Leveys: | Korkeus: | Koko: 550 B | 
| Before Leveys: | Korkeus: | Koko: 365 B After Leveys: | Korkeus: | Koko: 424 B | 
| Before Leveys: | Korkeus: | Koko: 375 B After Leveys: | Korkeus: | Koko: 546 B | 
| Before Leveys: | Korkeus: | Koko: 377 B After Leveys: | Korkeus: | Koko: 552 B | 
| Before Leveys: | Korkeus: | Koko: 349 B After Leveys: | Korkeus: | Koko: 392 B | 
| Before Leveys: | Korkeus: | Koko: 351 B After Leveys: | Korkeus: | Koko: 391 B | 
| Before Leveys: | Korkeus: | Koko: 342 B After Leveys: | Korkeus: | Koko: 373 B | 
| Before Leveys: | Korkeus: | Koko: 350 B After Leveys: | Korkeus: | Koko: 395 B | 
| Before Leveys: | Korkeus: | Koko: 349 B After Leveys: | Korkeus: | Koko: 395 B | 
| Before Leveys: | Korkeus: | Koko: 349 B After Leveys: | Korkeus: | Koko: 387 B | 
| Before Leveys: | Korkeus: | Koko: 345 B After Leveys: | Korkeus: | Koko: 375 B | 
| Before Leveys: | Korkeus: | Koko: 354 B After Leveys: | Korkeus: | Koko: 378 B | 
| Before Leveys: | Korkeus: | Koko: 359 B After Leveys: | Korkeus: | Koko: 419 B | 
| Before Leveys: | Korkeus: | Koko: 352 B After Leveys: | Korkeus: | Koko: 393 B | 
| Before Leveys: | Korkeus: | Koko: 347 B After Leveys: | Korkeus: | Koko: 398 B |