Porównaj commity
5 Commity
| Autor | SHA1 | Data | |
|---|---|---|---|
|
|
c129dea077 | ||
| a9cac59e4c | |||
| 11f39382ef | |||
|
|
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()
|
||||
|
||||
@@ -2,11 +2,12 @@ default
|
||||
vessels
|
||||
tnt
|
||||
fire
|
||||
player_physics
|
||||
playereffects
|
||||
player_monoids?
|
||||
farming?
|
||||
lightning?
|
||||
pmobs?
|
||||
hud_hunger?
|
||||
hunger_ng?
|
||||
moreplants?
|
||||
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
|
||||
BIN
screenshot.png
|
Przed Szerokość: | Wysokość: | Rozmiar: 95 KiB Po Szerokość: | Wysokość: | Rozmiar: 22 KiB |
502
scrolls.lua
@@ -1,21 +1,17 @@
|
||||
--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",
|
||||
{
|
||||
minetest.register_craftitem("witchcraft:scroll_night", {
|
||||
description = "Scroll of night",
|
||||
inventory_image = "witchcraft_scroll.png^witchcraft_moon_over.png",
|
||||
stack_max = 1,
|
||||
@@ -24,252 +20,230 @@ minetest.register_craftitem(
|
||||
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",
|
||||
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, 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})
|
||||
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, 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",
|
||||
{
|
||||
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();
|
||||
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",
|
||||
{
|
||||
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();
|
||||
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:setvelocity(vec)
|
||||
obj2:setvelocity(vec)
|
||||
obj3:setvelocity(vec)
|
||||
|
||||
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",
|
||||
{
|
||||
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();
|
||||
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:setvelocity(vec)
|
||||
|
||||
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",
|
||||
{
|
||||
minetest.register_craftitem("witchcraft:scroll", {
|
||||
description = "Blank Scroll",
|
||||
inventory_image = "witchcraft_scroll.png",
|
||||
})
|
||||
})
|
||||
|
||||
minetest.register_craftitem(
|
||||
"witchcraft:scroll_recipe",
|
||||
{
|
||||
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);
|
||||
"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(
|
||||
{
|
||||
minetest.register_craft({
|
||||
output = 'witchcraft:scroll_wild',
|
||||
recipe = {
|
||||
{'mobs:meat_raw'},
|
||||
{'witchcraft:scroll'},
|
||||
}
|
||||
})
|
||||
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_craft(
|
||||
{
|
||||
minetest.register_craft({
|
||||
output = 'witchcraft:scroll',
|
||||
recipe = {
|
||||
{'default:paper', 'default:paper', ''},
|
||||
{'default:paper', 'default:paper', ''},
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
minetest.register_craft(
|
||||
{
|
||||
minetest.register_craft({
|
||||
output = 'witchcraft:scroll_recipe',
|
||||
recipe = {
|
||||
{'dye:black'},
|
||||
{'witchcraft:scroll'},
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
minetest.register_craft(
|
||||
{
|
||||
minetest.register_craft({
|
||||
output = 'witchcraft:scroll_icicle',
|
||||
recipe = {
|
||||
{'default:ice'},
|
||||
{'default:diamond'},
|
||||
{'witchcraft:scroll'},
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
minetest.register_craft(
|
||||
{
|
||||
minetest.register_craft({
|
||||
output = 'witchcraft:scroll_fireball',
|
||||
recipe = {
|
||||
{'default:obsidian_shard'},
|
||||
{'default:diamond'},
|
||||
{'witchcraft:scroll'},
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
minetest.register_craft(
|
||||
{
|
||||
minetest.register_craft({
|
||||
output = 'witchcraft:scroll_nature',
|
||||
recipe = {
|
||||
{'default:leaves'},
|
||||
{'default:diamond'},
|
||||
{'witchcraft:scroll'},
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
minetest.register_craft(
|
||||
{
|
||||
minetest.register_craft({
|
||||
output = 'witchcraft:scroll_day',
|
||||
recipe = {
|
||||
{'default:torch'},
|
||||
{'default:diamond'},
|
||||
{'witchcraft:scroll'},
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
minetest.register_craft(
|
||||
{
|
||||
minetest.register_craft({
|
||||
output = 'witchcraft:scroll_night',
|
||||
recipe = {
|
||||
{'default:coal_lump'},
|
||||
{'default:diamond'},
|
||||
{'witchcraft:scroll'},
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
minetest.register_craft(
|
||||
{
|
||||
minetest.register_craft({
|
||||
output = 'witchcraft:scroll_lightning',
|
||||
recipe = {
|
||||
{'default:steel_ingot'},
|
||||
{'default:diamond'},
|
||||
{'witchcraft:scroll'},
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
--scroll powers
|
||||
|
||||
minetest.register_entity(
|
||||
"witchcraft:fireball",
|
||||
{
|
||||
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()
|
||||
local remove = minetest.after(2, function()
|
||||
self.object:remove()
|
||||
end)
|
||||
local pos = self.object:getpos()
|
||||
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() 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,
|
||||
{
|
||||
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
|
||||
@@ -279,9 +253,8 @@ minetest.register_entity(
|
||||
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
|
||||
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
|
||||
@@ -290,124 +263,77 @@ minetest.register_entity(
|
||||
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.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
|
||||
|
||||
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 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",
|
||||
{
|
||||
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()
|
||||
local remove = minetest.after(2, function()
|
||||
self.object:remove()
|
||||
end)
|
||||
local pos = self.object:getpos()
|
||||
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() then
|
||||
if obj:get_luaentity().name ~= "witchcraft:tree"
|
||||
and obj:get_luaentity().name ~= "__builtin:item"
|
||||
and obj:get_luaentity().name ~= "gauges:hp_bar"
|
||||
then
|
||||
and obj:get_luaentity().name ~= "gauges:hp_bar" then
|
||||
obj:remove()
|
||||
local treepos = self.object:getpos()
|
||||
default.grow_new_jungle_tree(treepos)
|
||||
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.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)
|
||||
|
||||
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
|
||||
)
|
||||
|
||||
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",
|
||||
{
|
||||
minetest.register_entity("witchcraft:ice", {
|
||||
visual="sprite",
|
||||
visual_size={x=1,y=1},
|
||||
physical=false,
|
||||
@@ -419,62 +345,68 @@ minetest.register_entity(
|
||||
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()
|
||||
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,
|
||||
{
|
||||
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
|
||||
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" 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
|
||||
|
||||
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
|
||||
})
|
||||
|
||||
|
Przed Szerokość: | Wysokość: | Rozmiar: 175 B Po Szerokość: | Wysokość: | Rozmiar: 159 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 217 B Po Szerokość: | Wysokość: | Rozmiar: 163 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 266 B Po Szerokość: | Wysokość: | Rozmiar: 185 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 228 B Po Szerokość: | Wysokość: | Rozmiar: 172 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 493 B Po Szerokość: | Wysokość: | Rozmiar: 333 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 458 B Po Szerokość: | Wysokość: | Rozmiar: 297 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 127 B Po Szerokość: | Wysokość: | Rozmiar: 124 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 162 B Po Szerokość: | Wysokość: | Rozmiar: 142 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 167 B Po Szerokość: | Wysokość: | Rozmiar: 142 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 683 B Po Szerokość: | Wysokość: | Rozmiar: 434 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 155 B Po Szerokość: | Wysokość: | Rozmiar: 127 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 227 B Po Szerokość: | Wysokość: | Rozmiar: 177 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 258 B Po Szerokość: | Wysokość: | Rozmiar: 176 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 193 B Po Szerokość: | Wysokość: | Rozmiar: 159 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 255 B Po Szerokość: | Wysokość: | Rozmiar: 196 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 137 B Po Szerokość: | Wysokość: | Rozmiar: 127 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 401 B Po Szerokość: | Wysokość: | Rozmiar: 225 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 338 B Po Szerokość: | Wysokość: | Rozmiar: 202 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 352 B Po Szerokość: | Wysokość: | Rozmiar: 204 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 143 B Po Szerokość: | Wysokość: | Rozmiar: 129 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 277 B Po Szerokość: | Wysokość: | Rozmiar: 233 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 230 B Po Szerokość: | Wysokość: | Rozmiar: 178 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 414 B Po Szerokość: | Wysokość: | Rozmiar: 296 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 438 B Po Szerokość: | Wysokość: | Rozmiar: 218 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 1.4 KiB Po Szerokość: | Wysokość: | Rozmiar: 218 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 4.9 KiB Po Szerokość: | Wysokość: | Rozmiar: 4.9 KiB |
|
Przed Szerokość: | Wysokość: | Rozmiar: 679 B Po Szerokość: | Wysokość: | Rozmiar: 340 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 698 B Po Szerokość: | Wysokość: | Rozmiar: 341 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 665 B Po Szerokość: | Wysokość: | Rozmiar: 340 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 86 B Po Szerokość: | Wysokość: | Rozmiar: 83 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 694 B Po Szerokość: | Wysokość: | Rozmiar: 340 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 683 B Po Szerokość: | Wysokość: | Rozmiar: 341 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 667 B Po Szerokość: | Wysokość: | Rozmiar: 340 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 1017 B Po Szerokość: | Wysokość: | Rozmiar: 548 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 961 B Po Szerokość: | Wysokość: | Rozmiar: 561 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 1.1 KiB Po Szerokość: | Wysokość: | Rozmiar: 838 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 968 B Po Szerokość: | Wysokość: | Rozmiar: 544 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 981 B Po Szerokość: | Wysokość: | Rozmiar: 570 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 693 B Po Szerokość: | Wysokość: | Rozmiar: 340 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 698 B Po Szerokość: | Wysokość: | Rozmiar: 340 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 674 B Po Szerokość: | Wysokość: | Rozmiar: 340 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 661 B Po Szerokość: | Wysokość: | Rozmiar: 340 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 658 B Po Szerokość: | Wysokość: | Rozmiar: 340 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 657 B Po Szerokość: | Wysokość: | Rozmiar: 340 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 643 B Po Szerokość: | Wysokość: | Rozmiar: 340 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 689 B Po Szerokość: | Wysokość: | Rozmiar: 340 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 285 B Po Szerokość: | Wysokość: | Rozmiar: 238 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 664 B Po Szerokość: | Wysokość: | Rozmiar: 361 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 351 B Po Szerokość: | Wysokość: | Rozmiar: 251 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 665 B Po Szerokość: | Wysokość: | Rozmiar: 340 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 679 B Po Szerokość: | Wysokość: | Rozmiar: 340 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 388 B Po Szerokość: | Wysokość: | Rozmiar: 218 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 377 B Po Szerokość: | Wysokość: | Rozmiar: 218 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 394 B Po Szerokość: | Wysokość: | Rozmiar: 218 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 382 B Po Szerokość: | Wysokość: | Rozmiar: 218 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 385 B Po Szerokość: | Wysokość: | Rozmiar: 218 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 391 B Po Szerokość: | Wysokość: | Rozmiar: 218 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 544 B Po Szerokość: | Wysokość: | Rozmiar: 272 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 550 B Po Szerokość: | Wysokość: | Rozmiar: 272 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 424 B Po Szerokość: | Wysokość: | Rozmiar: 295 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 546 B Po Szerokość: | Wysokość: | Rozmiar: 271 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 552 B Po Szerokość: | Wysokość: | Rozmiar: 272 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 392 B Po Szerokość: | Wysokość: | Rozmiar: 218 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 391 B Po Szerokość: | Wysokość: | Rozmiar: 218 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 373 B Po Szerokość: | Wysokość: | Rozmiar: 218 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 395 B Po Szerokość: | Wysokość: | Rozmiar: 218 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 395 B Po Szerokość: | Wysokość: | Rozmiar: 218 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 387 B Po Szerokość: | Wysokość: | Rozmiar: 218 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 375 B Po Szerokość: | Wysokość: | Rozmiar: 218 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 378 B Po Szerokość: | Wysokość: | Rozmiar: 218 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 419 B Po Szerokość: | Wysokość: | Rozmiar: 289 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 393 B Po Szerokość: | Wysokość: | Rozmiar: 218 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 398 B Po Szerokość: | Wysokość: | Rozmiar: 218 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 465 KiB Po Szerokość: | Wysokość: | Rozmiar: 300 KiB |
|
Przed Szerokość: | Wysokość: | Rozmiar: 216 KiB Po Szerokość: | Wysokość: | Rozmiar: 200 KiB |
|
Przed Szerokość: | Wysokość: | Rozmiar: 409 B Po Szerokość: | Wysokość: | Rozmiar: 374 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 242 B Po Szerokość: | Wysokość: | Rozmiar: 177 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 176 B Po Szerokość: | Wysokość: | Rozmiar: 154 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 1.2 KiB Po Szerokość: | Wysokość: | Rozmiar: 814 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 421 B Po Szerokość: | Wysokość: | Rozmiar: 339 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 428 B Po Szerokość: | Wysokość: | Rozmiar: 333 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 422 B Po Szerokość: | Wysokość: | Rozmiar: 339 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 423 B Po Szerokość: | Wysokość: | Rozmiar: 339 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 423 B Po Szerokość: | Wysokość: | Rozmiar: 345 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 425 B Po Szerokość: | Wysokość: | Rozmiar: 336 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 385 B Po Szerokość: | Wysokość: | Rozmiar: 315 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 403 B Po Szerokość: | Wysokość: | Rozmiar: 337 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 393 B Po Szerokość: | Wysokość: | Rozmiar: 316 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 406 B Po Szerokość: | Wysokość: | Rozmiar: 340 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 390 B Po Szerokość: | Wysokość: | Rozmiar: 337 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 425 B Po Szerokość: | Wysokość: | Rozmiar: 336 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 388 B Po Szerokość: | Wysokość: | Rozmiar: 318 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 307 B Po Szerokość: | Wysokość: | Rozmiar: 271 B |
|
Przed Szerokość: | Wysokość: | Rozmiar: 122 B Po Szerokość: | Wysokość: | Rozmiar: 119 B |