Compare commits
No commits in common. "master" and "v0.2" have entirely different histories.
|
@ -13,7 +13,7 @@ minetest.register_node("witchcraft:brewing_stand", {
|
|||
"witchcraft_brewing_stand_side.png"
|
||||
},
|
||||
drawtype = "nodebox",
|
||||
use_texture_alpha = "blend",
|
||||
use_texture_alpha = true,
|
||||
paramtype = "light",
|
||||
drop = {
|
||||
items = {
|
||||
|
@ -36,14 +36,14 @@ minetest.register_node("witchcraft:brewing_stand", {
|
|||
}
|
||||
},
|
||||
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"
|
||||
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 = "blend",
|
||||
use_texture_alpha = true,
|
||||
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 = "blend",
|
||||
use_texture_alpha = true,
|
||||
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 = item:get_name()
|
||||
local wield_item = clicker:get_wielded_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', ''},
|
||||
}
|
||||
})
|
||||
})
|
|
@ -2,12 +2,8 @@ default
|
|||
vessels
|
||||
tnt
|
||||
fire
|
||||
playereffects
|
||||
player_monoids?
|
||||
farming?
|
||||
lightning?
|
||||
pmobs?
|
||||
hud_hunger?
|
||||
hunger_ng?
|
||||
moreplants?
|
||||
horror?
|
||||
moreplants?
|
|
@ -2,7 +2,7 @@
|
|||
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
|
||||
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
|
||||
---------------------------------------
|
||||
|
||||
CC-BY-SA 3.0 UNPORTED. Created by D00Med
|
||||
CC-BY-SA 3.0 UNPORTED. Created by DOOmed
|
||||
|
||||
All potion bottles derived from
|
||||
vessels_glass_bottle.png (by Authors)
|
||||
|
|
3
mod.conf
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
17
readme.txt
|
@ -62,19 +62,4 @@ Potion ingredients(may be slightly inaccurate):
|
|||
>gravel
|
||||
>bucket of water
|
||||
>bullrush
|
||||
>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.
|
||||
>bones
|
BIN
screenshot.png
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 95 KiB |
648
scrolls.lua
|
@ -1,412 +1,396 @@
|
|||
--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:get_pos()
|
||||
minetest.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:getpos();
|
||||
minetest.env:add_entity(pos, "pmobs:dog")
|
||||
item:take_item()
|
||||
return item
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_craftitem("witchcraft:scroll_fireball", {
|
||||
description = "Scroll of fireball",
|
||||
inventory_image = "witchcraft_scroll.png^witchcraft_fire_over.png",
|
||||
stack_max = 1,
|
||||
on_use = function(item, placer, 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,
|
||||
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 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:fireball")
|
||||
obj:setvelocity(vec)
|
||||
|
||||
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, 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,
|
||||
})
|
||||
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, 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,
|
||||
description = "Scroll of icicle",
|
||||
inventory_image = "witchcraft_scroll.png^witchcraft_ice_over.png",
|
||||
stack_max = 1,
|
||||
on_use = function(item, placer, pos)
|
||||
local dir = placer:get_look_dir();
|
||||
local playerpos = placer:getpos();
|
||||
local vec = {x=dir.x*7,y=dir.y*7,z=dir.z*7}
|
||||
local obj = minetest.env:add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:ice")
|
||||
local obj2 = minetest.env:add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+1+dir.z}, "witchcraft:ice")
|
||||
local obj3 = minetest.env:add_entity({x=playerpos.x+1+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:ice")
|
||||
obj:setvelocity(vec)
|
||||
obj2:setvelocity(vec)
|
||||
obj3:setvelocity(vec)
|
||||
|
||||
item:take_item()
|
||||
return item
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
minetest.register_craftitem("witchcraft:scroll_nature", {
|
||||
description = "Scroll of nature",
|
||||
inventory_image = "witchcraft_scroll.png^witchcraft_leaf_over.png",
|
||||
stack_max = 1,
|
||||
on_use = function(item, placer, 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,
|
||||
description = "Scroll of nature",
|
||||
inventory_image = "witchcraft_scroll.png^witchcraft_leaf_over.png",
|
||||
stack_max = 1,
|
||||
on_use = function(item, placer, pos)
|
||||
local dir = placer:get_look_dir();
|
||||
local playerpos = placer:getpos();
|
||||
local vec = {x=dir.x*6,y=dir.y*6,z=dir.z*6}
|
||||
local obj = minetest.env:add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:tree")
|
||||
obj:setvelocity(vec)
|
||||
|
||||
item:take_item()
|
||||
return item
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_craftitem("witchcraft:scroll", {
|
||||
description = "Blank Scroll",
|
||||
inventory_image = "witchcraft_scroll.png",
|
||||
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:diamond', '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'},
|
||||
{'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'},
|
||||
{'witchcraft:scroll'},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'witchcraft:scroll_nature',
|
||||
recipe = {
|
||||
{'default:leaves'},
|
||||
{'default:diamond'},
|
||||
{'witchcraft:scroll'},
|
||||
}
|
||||
output = 'witchcraft:scroll_nature',
|
||||
recipe = {
|
||||
{'default:leaves'},
|
||||
{'witchcraft:scroll'},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'witchcraft:scroll_day',
|
||||
recipe = {
|
||||
{'default:torch'},
|
||||
{'default:diamond'},
|
||||
{'witchcraft:scroll'},
|
||||
}
|
||||
output = 'witchcraft:scroll_day',
|
||||
recipe = {
|
||||
{'default:torch'},
|
||||
{'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'},
|
||||
{'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'},
|
||||
{'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:get_pos()
|
||||
local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2)
|
||||
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() then
|
||||
if obj:get_luaentity().name ~= "witchcraft:fireball"
|
||||
and obj:get_luaentity().name ~= "__builtin:item"
|
||||
and obj:get_luaentity().name ~= "gauges:hp_bar" then
|
||||
if obj:get_luaentity() ~= nil then
|
||||
if obj:get_luaentity().name ~= "witchcraft:fireball" and obj:get_luaentity().name ~= "__builtin:item" then
|
||||
obj:punch(self.object, 1.0, {
|
||||
full_punch_interval=1.0,
|
||||
damage_groups={fleshy=3},
|
||||
}, nil)
|
||||
self.object:remove()
|
||||
return
|
||||
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.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
|
||||
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" 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
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
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: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
|
||||
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
|
||||
|
||||
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
|
||||
end
|
||||
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,
|
||||
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_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
|
||||
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
|
||||
|
||||
local apos = self.object:getpos()
|
||||
local part = minetest.add_particlespawner(
|
||||
6, --amount
|
||||
0.3, --time
|
||||
{x=apos.x-0.3, y=apos.y-0.3, z=apos.z-0.3}, --minpos
|
||||
{x=apos.x+0.3, y=apos.y+0.3, z=apos.z+0.3}, --maxpos
|
||||
{x=-0, y=-0, z=-0}, --minvel
|
||||
{x=0, y=0, z=0}, --maxvel
|
||||
{x=0,y=-0.5,z=0}, --minacc
|
||||
{x=0.5,y=0.5,z=0.5}, --maxacc
|
||||
0.1, --minexptime
|
||||
0.3, --maxexptime
|
||||
1, --minsize
|
||||
2, --maxsize
|
||||
false, --collisiondetection
|
||||
"witchcraft_leaf_over.png" --texture
|
||||
)
|
||||
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_entity("witchcraft:ice", {
|
||||
visual="sprite",
|
||||
visual_size={x=1,y=1},
|
||||
physical=false,
|
||||
textures={"witchcraft_ice.png"},
|
||||
velocity = 1,
|
||||
rotate = 90,
|
||||
auto_rotate = true,
|
||||
damage = 2,
|
||||
collisionbox = {0, 0, 0, 0, 0, 0},
|
||||
on_step = function(self, obj, pos)
|
||||
local remove = minetest.after(10, function()
|
||||
self.object:remove()
|
||||
end)
|
||||
local pos = self.object:get_pos()
|
||||
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(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: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
|
||||
if obj:get_luaentity().name ~= "witchcraft:ice" and obj:get_luaentity().name ~= "__builtin:item" then
|
||||
obj:punch(self.object, 1.0, {
|
||||
full_punch_interval=1.0,
|
||||
damage_groups={fleshy=1},
|
||||
}, nil)
|
||||
self.object:remove()
|
||||
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
|
||||
|
||||
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
|
||||
})
|
||||
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 Width: | Height: | Size: 159 B After Width: | Height: | Size: 175 B |
Before Width: | Height: | Size: 163 B |
Before Width: | Height: | Size: 185 B |
Before Width: | Height: | Size: 172 B After Width: | Height: | Size: 228 B |
Before Width: | Height: | Size: 333 B After Width: | Height: | Size: 493 B |
Before Width: | Height: | Size: 297 B After Width: | Height: | Size: 458 B |
Before Width: | Height: | Size: 124 B After Width: | Height: | Size: 127 B |
Before Width: | Height: | Size: 142 B After Width: | Height: | Size: 162 B |
Before Width: | Height: | Size: 142 B After Width: | Height: | Size: 167 B |
Before Width: | Height: | Size: 303 B |
Before Width: | Height: | Size: 434 B |
Before Width: | Height: | Size: 172 B |
Before Width: | Height: | Size: 127 B After Width: | Height: | Size: 155 B |
Before Width: | Height: | Size: 306 B After Width: | Height: | Size: 133 B |
Before Width: | Height: | Size: 177 B |
Before Width: | Height: | Size: 176 B After Width: | Height: | Size: 258 B |
Before Width: | Height: | Size: 159 B |
Before Width: | Height: | Size: 196 B After Width: | Height: | Size: 255 B |
Before Width: | Height: | Size: 127 B After Width: | Height: | Size: 137 B |
Before Width: | Height: | Size: 225 B After Width: | Height: | Size: 401 B |
Before Width: | Height: | Size: 202 B After Width: | Height: | Size: 338 B |
Before Width: | Height: | Size: 204 B |
Before Width: | Height: | Size: 134 B |
Before Width: | Height: | Size: 129 B After Width: | Height: | Size: 143 B |
Before Width: | Height: | Size: 233 B |
Before Width: | Height: | Size: 178 B |
Before Width: | Height: | Size: 296 B |
Before Width: | Height: | Size: 218 B |
Before Width: | Height: | Size: 218 B |
Before Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 679 B |
Before Width: | Height: | Size: 341 B After Width: | Height: | Size: 698 B |
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 665 B |
Before Width: | Height: | Size: 83 B After Width: | Height: | Size: 86 B |
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 694 B |
Before Width: | Height: | Size: 341 B After Width: | Height: | Size: 683 B |
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 667 B |
Before Width: | Height: | Size: 548 B After Width: | Height: | Size: 1017 B |
Before Width: | Height: | Size: 561 B After Width: | Height: | Size: 961 B |
Before Width: | Height: | Size: 838 B |
Before Width: | Height: | Size: 544 B After Width: | Height: | Size: 968 B |
Before Width: | Height: | Size: 570 B After Width: | Height: | Size: 981 B |
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 693 B |
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 698 B |
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 674 B |
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 661 B |
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 658 B |
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 657 B |
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 643 B |
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 689 B |
Before Width: | Height: | Size: 238 B After Width: | Height: | Size: 285 B |
Before Width: | Height: | Size: 361 B |
Before Width: | Height: | Size: 251 B After Width: | Height: | Size: 351 B |
Before Width: | Height: | Size: 437 B After Width: | Height: | Size: 437 B |
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 665 B |
Before Width: | Height: | Size: 340 B After Width: | Height: | Size: 679 B |
Before Width: | Height: | Size: 218 B After Width: | Height: | Size: 388 B |
Before Width: | Height: | Size: 218 B After Width: | Height: | Size: 377 B |
Before Width: | Height: | Size: 218 B After Width: | Height: | Size: 394 B |
Before Width: | Height: | Size: 218 B After Width: | Height: | Size: 382 B |
Before Width: | Height: | Size: 218 B After Width: | Height: | Size: 385 B |
Before Width: | Height: | Size: 218 B After Width: | Height: | Size: 391 B |
Before Width: | Height: | Size: 272 B After Width: | Height: | Size: 544 B |
Before Width: | Height: | Size: 272 B After Width: | Height: | Size: 550 B |
Before Width: | Height: | Size: 295 B |
Before Width: | Height: | Size: 271 B After Width: | Height: | Size: 546 B |
Before Width: | Height: | Size: 272 B After Width: | Height: | Size: 552 B |
Before Width: | Height: | Size: 218 B After Width: | Height: | Size: 392 B |
Before Width: | Height: | Size: 218 B After Width: | Height: | Size: 391 B |
Before Width: | Height: | Size: 218 B After Width: | Height: | Size: 373 B |
Before Width: | Height: | Size: 218 B After Width: | Height: | Size: 395 B |
Before Width: | Height: | Size: 218 B After Width: | Height: | Size: 395 B |
Before Width: | Height: | Size: 218 B After Width: | Height: | Size: 387 B |
Before Width: | Height: | Size: 218 B After Width: | Height: | Size: 375 B |
Before Width: | Height: | Size: 218 B After Width: | Height: | Size: 378 B |
Before Width: | Height: | Size: 289 B |
Before Width: | Height: | Size: 218 B After Width: | Height: | Size: 393 B |
Before Width: | Height: | Size: 218 B After Width: | Height: | Size: 398 B |
Before Width: | Height: | Size: 300 KiB After Width: | Height: | Size: 215 KiB |
Before Width: | Height: | Size: 200 KiB |
Before Width: | Height: | Size: 374 B After Width: | Height: | Size: 409 B |
Before Width: | Height: | Size: 177 B |
Before Width: | Height: | Size: 154 B |
Before Width: | Height: | Size: 814 B After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 339 B |
Before Width: | Height: | Size: 333 B |
Before Width: | Height: | Size: 339 B |
Before Width: | Height: | Size: 339 B |