Modifications pour le serveur nalc.
- Ajout de la dépendance du mod player_physics de MFF. - Réindentaion du code
|
@ -2,8 +2,8 @@ default
|
|||
vessels
|
||||
tnt
|
||||
fire
|
||||
player_physics
|
||||
playereffects
|
||||
player_monoids?
|
||||
farming?
|
||||
lightning?
|
||||
pmobs?
|
||||
|
|
BIN
screenshot.png
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 95 KiB |
198
scrolls.lua
|
@ -1,7 +1,8 @@
|
|||
--scrolls
|
||||
|
||||
|
||||
minetest.register_craftitem("witchcraft:scroll_day", {
|
||||
minetest.register_craftitem(
|
||||
"witchcraft:scroll_day",
|
||||
{
|
||||
description = "Scroll of day",
|
||||
inventory_image = "witchcraft_scroll.png^witchcraft_sun_over.png",
|
||||
stack_max = 1,
|
||||
|
@ -10,9 +11,11 @@ minetest.register_craftitem("witchcraft:scroll_day", {
|
|||
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,
|
||||
|
@ -21,33 +24,45 @@ minetest.register_craftitem("witchcraft:scroll_night", {
|
|||
item:take_item()
|
||||
return item
|
||||
end,
|
||||
})
|
||||
})
|
||||
|
||||
if minetest.get_modpath("pmobs")then
|
||||
minetest.register_craftitem("witchcraft:scroll_wild", {
|
||||
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")
|
||||
minetest.add_entity(pos, "pmobs:dog")
|
||||
item:take_item()
|
||||
return item
|
||||
end,
|
||||
})
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_craftitem("witchcraft:scroll_fireball", {
|
||||
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")
|
||||
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})
|
||||
|
@ -55,10 +70,12 @@ minetest.register_craftitem("witchcraft:scroll_fireball", {
|
|||
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,
|
||||
|
@ -69,10 +86,12 @@ minetest.register_craftitem("witchcraft:scroll_lightning", {
|
|||
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,
|
||||
|
@ -80,9 +99,9 @@ minetest.register_craftitem("witchcraft:scroll_icicle", {
|
|||
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")
|
||||
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)
|
||||
|
@ -90,10 +109,11 @@ minetest.register_craftitem("witchcraft:scroll_icicle", {
|
|||
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,
|
||||
|
@ -101,132 +121,151 @@ minetest.register_craftitem("witchcraft:scroll_nature", {
|
|||
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")
|
||||
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)
|
||||
|
||||
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);
|
||||
|
||||
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()
|
||||
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, {
|
||||
if obj:get_luaentity().name ~= "witchcraft:fireball"
|
||||
and obj:get_luaentity().name ~= "__builtin:item"
|
||||
and obj:get_luaentity().name ~= "gauges:hp_bar"
|
||||
then
|
||||
obj:punch(
|
||||
self.object, 1.0,
|
||||
{
|
||||
full_punch_interval=1.0,
|
||||
damage_groups={fleshy=3},
|
||||
}, nil)
|
||||
|
@ -239,10 +278,11 @@ minetest.register_entity("witchcraft:fireball", {
|
|||
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
|
||||
local n = minetest.get_node(p).name
|
||||
if n ~= "witchcraft:fireball" and n ~="default:dirt_with_grass"
|
||||
and n ~="default:dirt_with_dry_grass" and n ~="default:stone" then
|
||||
if minetest.registered_nodes[n].groups.flammable --[[or math.random(1, 100) <= 1]] then
|
||||
minetest.env:set_node(t, {name="fire:basic_flame"})
|
||||
minetest.set_node(t, {name="fire:basic_flame"})
|
||||
self.object:remove()
|
||||
return
|
||||
end
|
||||
|
@ -251,18 +291,18 @@ minetest.register_entity("witchcraft:fireball", {
|
|||
end
|
||||
end
|
||||
hit_node = function(self, pos, node)
|
||||
-- local pos = self.object:getpos()
|
||||
-- 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
|
||||
local n = minetest.get_node(pos).name
|
||||
if math.random(1, 50) <= 35 then
|
||||
minetest.env:remove_node(p)
|
||||
minetest.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"})
|
||||
minetest.set_node(t, {name="fire:basic_flame"})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -289,24 +329,31 @@ minetest.register_entity("witchcraft:fireball", {
|
|||
)
|
||||
|
||||
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()
|
||||
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
|
||||
if obj:get_luaentity().name ~= "witchcraft:tree"
|
||||
and obj:get_luaentity().name ~= "__builtin:item"
|
||||
and obj:get_luaentity().name ~= "gauges:hp_bar"
|
||||
then
|
||||
obj:remove()
|
||||
local treepos = self.object:getpos()
|
||||
default.grow_new_jungle_tree(treepos)
|
||||
|
@ -319,7 +366,7 @@ minetest.register_entity("witchcraft:tree", {
|
|||
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
|
||||
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)
|
||||
|
@ -356,9 +403,11 @@ minetest.register_entity("witchcraft:tree", {
|
|||
)
|
||||
|
||||
end,
|
||||
})
|
||||
})
|
||||
|
||||
minetest.register_entity("witchcraft:ice", {
|
||||
minetest.register_entity(
|
||||
"witchcraft:ice",
|
||||
{
|
||||
visual="sprite",
|
||||
visual_size={x=1,y=1},
|
||||
physical=false,
|
||||
|
@ -376,8 +425,13 @@ minetest.register_entity("witchcraft:ice", {
|
|||
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, {
|
||||
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)
|
||||
|
@ -389,7 +443,7 @@ minetest.register_entity("witchcraft:ice", {
|
|||
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
|
||||
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"})
|
||||
|
|
Before Width: | Height: | Size: 349 B After Width: | Height: | Size: 388 B |
Before Width: | Height: | Size: 356 B After Width: | Height: | Size: 377 B |
Before Width: | Height: | Size: 350 B After Width: | Height: | Size: 394 B |
Before Width: | Height: | Size: 354 B After Width: | Height: | Size: 382 B |
Before Width: | Height: | Size: 355 B After Width: | Height: | Size: 385 B |
Before Width: | Height: | Size: 351 B After Width: | Height: | Size: 391 B |
Before Width: | Height: | Size: 374 B After Width: | Height: | Size: 544 B |
Before Width: | Height: | Size: 378 B After Width: | Height: | Size: 550 B |
Before Width: | Height: | Size: 365 B After Width: | Height: | Size: 424 B |
Before Width: | Height: | Size: 375 B After Width: | Height: | Size: 546 B |
Before Width: | Height: | Size: 377 B After Width: | Height: | Size: 552 B |
Before Width: | Height: | Size: 349 B After Width: | Height: | Size: 392 B |
Before Width: | Height: | Size: 351 B After Width: | Height: | Size: 391 B |
Before Width: | Height: | Size: 342 B After Width: | Height: | Size: 373 B |
Before Width: | Height: | Size: 350 B After Width: | Height: | Size: 395 B |
Before Width: | Height: | Size: 349 B After Width: | Height: | Size: 395 B |
Before Width: | Height: | Size: 349 B After Width: | Height: | Size: 387 B |
Before Width: | Height: | Size: 345 B After Width: | Height: | Size: 375 B |
Before Width: | Height: | Size: 354 B After Width: | Height: | Size: 378 B |
Before Width: | Height: | Size: 359 B After Width: | Height: | Size: 419 B |
Before Width: | Height: | Size: 352 B After Width: | Height: | Size: 393 B |
Before Width: | Height: | Size: 347 B After Width: | Height: | Size: 398 B |