1
0
mirror of https://github.com/sys4-fr/server-nalc.git synced 2024-11-13 14:00:32 +01:00

Merge branch 'NALC2' into NALC

This commit is contained in:
sys4-fr 2017-04-05 15:42:08 +02:00
commit 0d5c914400
130 changed files with 7308 additions and 6 deletions

3
.gitmodules vendored
View File

@ -64,9 +64,6 @@
[submodule "mods/playereffects"]
path = mods/playereffects
url = git://repo.or.cz/minetest_playereffects.git
[submodule "mods/witchcraft"]
path = mods/witchcraft
url = https://github.com/D00Med/witchcraft.git
[submodule "mods/morefarming"]
path = mods/morefarming
url = https://github.com/sys4-fr/morefarming.git

View File

@ -0,0 +1,126 @@
local players = {}
player_physics = {}
function player_physics.check(playername)
if players[playername] == nil then
players[playername] = {speed = {}, jump = {}, gravity={}, temp={}}
end
end
minetest.register_on_joinplayer(function(player)
local playername = player:get_player_name()
player_physics.check(playername)
end)
minetest.register_on_leaveplayer(function(player)
local playername = player:get_player_name()
players[playername] = nil
end)
function player_physics.add(player, physicsname , name, value)
if physicsname ~= "speed" and physicsname ~= "jump" and physicsname ~= "gravity" then
return
end
local playername = player:get_player_name()
player_physics.check(playername)
players[playername][physicsname][name] = value
end
function player_physics.remove(player, physicsname, name)
if physicsname ~= "speed" and physicsname ~= "jump" and physicsname ~= "gravity" then
return
end
local playername = player:get_player_name()
player_physics.check(playername)
players[playername][physicsname][name] = nil
end
function player_physics.add_effect(player, physicsname, name, value, time)
if physicsname ~= "speed" and physicsname ~= "jump" and physicsname ~= "gravity" then
return
end
if type(value) ~= "number" or type(time) ~= "number" then
return
end
local playername = player:get_player_name()
player_physics.check(playername)
players[playername]["temp"][name] = {n=physicsname, v=value, t=time}
end
function player_physics.remove_effect(player, name)
local playername = player:get_player_name()
player_physics.check(playername)
players[playername]["temp"][name] = nil
end
minetest.register_globalstep(function(dtime)
for _,player in ipairs(minetest.get_connected_players()) do
local playername = player:get_player_name()
if playername ~= "" then
player_physics.check(playername)
local speed = 1
local jump = 1
local gravity = 1
for _, v in pairs(players[playername]["speed"]) do
speed = speed + v
end
for _, v in pairs(players[playername]["jump"]) do
jump = jump + v
end
for _, v in pairs(players[playername]["gravity"]) do
gravity = gravity + v
end
--temporary effect
for n, k in pairs(players[playername]["temp"]) do
if k.n == "speed" then
speed = speed + k.v
elseif k.n == "jump" then
jump = jump + k.v
elseif k.n == "gravity" then
gravity = gravity + k.v
end
t = k.t-dtime
if t > 0 then
players[playername]["temp"][n]["t"] = t
else
players[playername]["temp"][n] = nil
end
end
if speed > 4 then
speed = 4
elseif speed < 0 then
speed = 0
end
if jump > 3 then
jump = 3
elseif jump < 0 then
jump = 0
end
if gravity > 2 then
gravity = 2
elseif gravity < -2 then
gravity = -2
end
player:set_physics_override({speed=speed,jump=jump, gravity=gravity})
end
end
end)

View File

@ -1 +1,2 @@
hudbars?
player_physics

View File

@ -208,9 +208,13 @@ function setSprinting(playerName, sprinting) --Sets the state of a player (0=sto
if sprint.players[playerName] then
sprint.players[playerName]["sprinting"] = sprinting
if sprinting == true then
player:set_physics_override({speed=SPRINT_SPEED + bonus_speed,jump=SPRINT_JUMP + bonus_jump})
-- player:set_physics_override({speed=SPRINT_SPEED + bonus_speed,jump=SPRINT_JUMP + bonus_jump})
player_physics.add(player, "speed", "sprint_speed", 0.35+ bonus_speed)
player_physics.add(player, "jump", "sprint_jump", 0.1+ bonus_jump)
elseif sprinting == false then
player:set_physics_override({speed=1.0 + bonus_speed,jump=1.0 + bonus_jump})
-- player:set_physics_override({speed=1.0 + bonus_speed,jump=1.0 + bonus_jump})
player_physics.add(player, "speed", "sprint_speed", bonus_speed)
player_physics.add(player, "jump", "sprint_jump", bonus_jump)
end
return true
end

@ -1 +0,0 @@
Subproject commit 0baf0cb53b89e34809e372abf4d8540242f0c450

View File

@ -0,0 +1,164 @@
--brewing stand and level 2 potions
-- GENERATED CODE
-- Node Box Editor, version 0.8.1 - Glass
minetest.register_node("witchcraft:brewing_stand", {
tiles = {
"witchcraft_brewing_stand_top.png",
"witchcraft_brewing_stand_top.png",
"witchcraft_brewing_stand_side.png",
"witchcraft_brewing_stand_side.png",
"witchcraft_brewing_stand_side.png",
"witchcraft_brewing_stand_side.png"
},
drawtype = "nodebox",
use_texture_alpha = true,
paramtype = "light",
drop = {
items = {
{items = {'witchcraft:brewing_stand_unready'}, rarity = 1},
}
},
groups = {cracky=1, oddly_breakable_by_hand=1},
node_box = {
type = "fixed",
fixed = {
{-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1
{-0.0625, -0.5, -0.0625, 0.0625, 0, 0.0625}, -- NodeBox2
{-0.5, 0, -0.125, 0.5, 0.0625, 0.125}, -- NodeBox3
{-0.4375, -0.1875, -0.0625, -0.3125, 0.375, 0.0625}, -- NodeBox4
{0.3125, -0.1875, -0.0625, 0.4375, 0.375, 0.0625}, -- NodeBox5
{-0.125, 0.0625, -0.125, 0.125, 0.125, 0.125}, -- NodeBox6
{-0.1875, 0.125, -0.125, 0.1875, 0.375, 0.125}, -- NodeBox7
{-0.125, 0.125, -0.1875, 0.125, 0.375, 0.1875}, -- NodeBox8
{-0.0625, 0.375, -0.0625, 0.0625, 0.5, 0.0625}, -- NodeBox9
}
},
on_rightclick = function(pos, node, clicker, item, _)
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)
end)
end
end,
})
minetest.register_node("witchcraft:brewing_stand_active", {
tiles = {
"witchcraft_brewing_stand_top.png",
"witchcraft_brewing_stand_top.png",
"witchcraft_brewing_stand_side.png",
"witchcraft_brewing_stand_side.png",
"witchcraft_brewing_stand_side.png",
"witchcraft_brewing_stand_side.png"
},
drawtype = "nodebox",
use_texture_alpha = true,
paramtype = "light",
light_source = 1,
drop = {
items = {
{items = {'witchcraft:brewing_stand_unready'}, rarity = 1},
}
},
groups = {cracky=1, oddly_breakable_by_hand=1},
node_box = {
type = "fixed",
fixed = {
{-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1
{-0.0625, -0.5, -0.0625, 0.0625, 0, 0.0625}, -- NodeBox2
{-0.5, 0, -0.125, 0.5, 0.0625, 0.125}, -- NodeBox3
{-0.4375, -0.1875, -0.0625, -0.3125, 0.375, 0.0625}, -- NodeBox4
{0.3125, -0.1875, -0.0625, 0.4375, 0.375, 0.0625}, -- NodeBox5
{-0.125, 0.0625, -0.125, 0.125, 0.125, 0.125}, -- NodeBox6
{-0.1875, 0.125, -0.125, 0.1875, 0.375, 0.125}, -- NodeBox7
{-0.125, 0.125, -0.1875, 0.125, 0.375, 0.1875}, -- NodeBox8
{-0.0625, 0.375, -0.0625, 0.0625, 0.5, 0.0625}, -- NodeBox9
}
}
})
minetest.register_node("witchcraft:brewing_stand_unready", {
description = "brewing stand",
tiles = {
"witchcraft_brewing_stand_top.png^[colorize:black:100",
"witchcraft_brewing_stand_top.png^[colorize:black:100",
"witchcraft_brewing_stand_side.png^[colorize:black:100",
"witchcraft_brewing_stand_side.png^[colorize:black:100",
"witchcraft_brewing_stand_side.png^[colorize:black:100",
"witchcraft_brewing_stand_side.png^[colorize:black:100"
},
inventory_image = "witchcraft_brewing_stand_inv.png",
drawtype = "nodebox",
use_texture_alpha = true,
paramtype = "light",
light_source = 1,
drop = {
items = {
{items = {'witchcraft:brewing_stand_unready'}, rarity = 1},
}
},
groups = {cracky=1, oddly_breakable_by_hand=1},
node_box = {
type = "fixed",
fixed = {
{-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1
{-0.0625, -0.5, -0.0625, 0.0625, 0, 0.0625}, -- NodeBox2
{-0.5, 0, -0.125, 0.5, 0.0625, 0.125}, -- NodeBox3
{-0.4375, -0.1875, -0.0625, -0.3125, 0.375, 0.0625}, -- NodeBox4
{0.3125, -0.1875, -0.0625, 0.4375, 0.375, 0.0625}, -- NodeBox5
{-0.125, 0.0625, -0.125, 0.125, 0.125, 0.125}, -- NodeBox6
{-0.1875, 0.125, -0.125, 0.1875, 0.375, 0.125}, -- NodeBox7
{-0.125, 0.125, -0.1875, 0.125, 0.375, 0.1875}, -- NodeBox8
{-0.0625, 0.375, -0.0625, 0.0625, 0.5, 0.0625}, -- NodeBox9
}
},
on_rightclick = function(pos, node, clicker, item, _)
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()
end
end,
})
--end of GENERATED CODE
minetest.register_abm({
nodenames = {"witchcraft:brewing_stand_active"},
interval = 0.5,
chance = 1,
action = function(pos, node)
minetest.add_particlespawner({
amount = 2,
time = 1,
minpos = {x=pos.x-0.1, y=pos.y, z=pos.z-0.1},
maxpos = {x=pos.x+0.1, y=pos.y, z=pos.z+0.1},
minvel = {x=0, y=0.5, z=0},
maxvel = {x=0, y=0.6, z=0},
minacc = {x=0, y=0.2, z=0},
maxacc = {x=0, y=0.3, z=0},
minexptime = 1,
maxexptime = 2,
minsize = 0.5,
maxsize = 1,
collisiondetection = false,
texture = "witchcraft_smoke.png"
})
end
})
minetest.register_craft({
output = 'witchcraft:brewing_stand_unready',
recipe = {
{'', '', ''},
{'group:stick', 'default:diamond', 'group:stick'},
{'', 'default:obsidian_shard', ''},
}
})

View File

@ -0,0 +1,12 @@
default
vessels
tnt
fire
player_physics
playereffects
farming?
lightning?
pmobs?
hud_hunger?
moreplants?
horror?

3919
mods/witchcraft/init.lua Normal file

File diff suppressed because it is too large Load Diff

2467
mods/witchcraft/init_old.lua Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,29 @@
License for Code
----------------
Copyright (C) 2016 D00Med <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
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
License for Textures, Models and Sounds
---------------------------------------
CC-BY-SA 3.0 UNPORTED. Created by D00Med
All potion bottles derived from
vessels_glass_bottle.png (by Authors)
kilbith (WTFPL)

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,80 @@
Witchcraft by D00Med
Some notes:
>farming_redo is required for the mod even though this is not shown in depends.txt
>mobs_redo is optionally required for the mod, but since pmobs requires it, it is assumed that if you have pmobs then you have mobs.
>Some potions are dangerous!
Some crafting recipes:
herbs(shapeless):
weed or groundfungus or bush
jar of eyes:
eye, X, X
eye, X. X
drinking glass, X, X
eyes(shapeless):
jar of eyes
magic cooking pot:
copper lump, X, copper lump
copper lump, X, copper lump
X, copper lump, X
the magic cooking pot cooks its contents without fire, so there is no need to light a fire underneath.
potion shelf:
wood, wood, wood
potion, potion, potion
wood, wood, wood
empty scroll:
paper, diamond, paper
paper, paper, paper
Need some slime? try scraping it out of an empty cauldron with a drinking glass.
Potion ingredients(may be slightly inaccurate):
>herbs
>jar of eyes
>diamond
>apple
>gold lumps
>mese crystal fragment
>obsidian shard
>jar of slime
>curlyfruit
>mushroom(moreplants)
>red mushroom(flowers)
>grass
>umbrella plant
>glass
>glass fragments
>flint
>tnt
>copper block
>steel block
>steel ingot
>lilypad
>dirt
>sand
>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.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

426
mods/witchcraft/scrolls.lua Normal file
View File

@ -0,0 +1,426 @@
--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_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,
})
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,
})
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,
})
end
minetest.register_craftitem("witchcraft:scroll_icicle", {
description = "Scroll of icicle",
inventory_image = "witchcraft_scroll.png^witchcraft_ice_over.png",
stack_max = 1,
on_use = function(item, placer, pos)
local dir = placer:get_look_dir();
local playerpos = placer:getpos();
local vec = {x=dir.x*7,y=dir.y*7,z=dir.z*7}
local obj = minetest.env:add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:ice")
local obj2 = minetest.env:add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+1+dir.z}, "witchcraft:ice")
local obj3 = minetest.env:add_entity({x=playerpos.x+1+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:ice")
obj:setvelocity(vec)
obj2:setvelocity(vec)
obj3:setvelocity(vec)
item:take_item()
return item
end,
})
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,
})
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.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'},
}
})
end
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_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_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_night',
recipe = {
{'default:coal_lump'},
{'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)
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" 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" 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
hit_node = function(self, pos, node)
-- local pos = self.object:getpos()
for dx=-4,4 do
for dy=-4,4 do
for dz=-4,4 do
local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
local n = minetest.env:get_node(pos).name
if math.random(1, 50) <= 35 then
minetest.env:remove_node(p)
end
if minetest.registered_nodes[n].groups.flammable or math.random(1, 100) <=5 then
minetest.env:set_node(t, {name="fire:basic_flame"})
end
end
end
end
end
local apos = self.object:getpos()
local vec = self.object:getvelocity()
local part = minetest.add_particlespawner(
6, --amount
0.3, --time
{x=apos.x-0.3, y=apos.y-0.3, z=apos.z-0.3}, --minpos
{x=apos.x+0.3, y=apos.y+0.3, z=apos.z+0.3}, --maxpos
{x=-0, y=-0, z=-0}, --minvel
{x=0, y=0, z=0}, --maxvel
{x=0,y=-0.5,z=0}, --minacc
{x=-vec.x,y=-vec.y,z=-vec.z}, --maxacc
0.1, --minexptime
0.3, --maxexptime
1, --minsize
2, --maxsize
false, --collisiondetection
"witchcraft_flame.png" --texture
)
end,
})
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: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" then
obj:punch(self.object, 1.0, {
full_punch_interval=1.0,
damage_groups={fleshy=1},
}, nil)
self.object:remove()
end
end
for dx=0,1 do
for dy=0,1 do
for dz=0,1 do
local p = {x=pos.x+dx, y=pos.y, z=pos.z+dz}
local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
local n = minetest.env:get_node(p).name
if n == "default:water_source" or n =="default:river_water_source" then
local pos = self.object:getpos()
minetest.set_node(pos, {name="default:ice"})
self.object:remove()
elseif n ~= "air" 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
})

View File

@ -0,0 +1,2 @@
Pop sound from www.freesfx.co.uk

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 493 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 303 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 683 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 438 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 679 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 698 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 665 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 694 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 683 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 667 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1017 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 961 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 968 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 981 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 693 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 698 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 674 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 661 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 658 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 689 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 664 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 665 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 679 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 382 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 385 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 391 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 424 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 546 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 392 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 391 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 B

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