mirror of
https://git.minetest.land/VoxeLibre/VoxeLibre.git
synced 2024-11-22 18:41:09 +01:00
Fix indentations in mcl_potions/mcl_brewing
This commit is contained in:
parent
7104bbd2df
commit
a472c30163
7 changed files with 294 additions and 275 deletions
|
@ -152,22 +152,22 @@ local function brewing_stand_timer(pos, elapsed)
|
||||||
|
|
||||||
d = 0.5
|
d = 0.5
|
||||||
minetest.add_particlespawner({
|
minetest.add_particlespawner({
|
||||||
amount = 4,
|
amount = 4,
|
||||||
time = 1,
|
time = 1,
|
||||||
minpos = {x=pos.x-d, y=pos.y+0.5, z=pos.z-d},
|
minpos = {x=pos.x-d, y=pos.y+0.5, z=pos.z-d},
|
||||||
maxpos = {x=pos.x+d, y=pos.y+2, z=pos.z+d},
|
maxpos = {x=pos.x+d, y=pos.y+2, z=pos.z+d},
|
||||||
minvel = {x=-0.1, y=0, z=-0.1},
|
minvel = {x=-0.1, y=0, z=-0.1},
|
||||||
maxvel = {x=0.1, y=0.5, z=0.1},
|
maxvel = {x=0.1, y=0.5, z=0.1},
|
||||||
minacc = {x=-0.05, y=0, z=-0.05},
|
minacc = {x=-0.05, y=0, z=-0.05},
|
||||||
maxacc = {x=0.05, y=.1, z=0.05},
|
maxacc = {x=0.05, y=.1, z=0.05},
|
||||||
minexptime = 1,
|
minexptime = 1,
|
||||||
maxexptime = 2,
|
maxexptime = 2,
|
||||||
minsize = 0.5,
|
minsize = 0.5,
|
||||||
maxsize = 2,
|
maxsize = 2,
|
||||||
collisiondetection = true,
|
collisiondetection = true,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
texture = "mcl_brewing_bubble_sprite.png",
|
texture = "mcl_brewing_bubble_sprite.png",
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Replace the stand item with the brew result
|
-- Replace the stand item with the brew result
|
||||||
if stand_timer >= BREW_TIME then
|
if stand_timer >= BREW_TIME then
|
||||||
|
@ -231,7 +231,6 @@ local function brewing_stand_timer(pos, elapsed)
|
||||||
meta:set_float("fuel_timer", fuel_timer)
|
meta:set_float("fuel_timer", fuel_timer)
|
||||||
meta:set_float("stand_timer", stand_timer)
|
meta:set_float("stand_timer", stand_timer)
|
||||||
meta:set_float("fuel", fuel)
|
meta:set_float("fuel", fuel)
|
||||||
-- meta:set_list("stand_items", stand_list)
|
|
||||||
meta:set_string("formspec", formspec)
|
meta:set_string("formspec", formspec)
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
@ -317,11 +316,11 @@ local doc_string =
|
||||||
S("Different combinations of brewing materials and liquids will give different results. Try to experiment!")
|
S("Different combinations of brewing materials and liquids will give different results. Try to experiment!")
|
||||||
|
|
||||||
local tiles = {"mcl_brewing_top.png", --top
|
local tiles = {"mcl_brewing_top.png", --top
|
||||||
"mcl_brewing_base.png", --bottom
|
"mcl_brewing_base.png", --bottom
|
||||||
"mcl_brewing_side.png", --right
|
"mcl_brewing_side.png", --right
|
||||||
"mcl_brewing_side.png", --left
|
"mcl_brewing_side.png", --left
|
||||||
"mcl_brewing_side.png", --back
|
"mcl_brewing_side.png", --back
|
||||||
"mcl_brewing_side.png^[transformFX"} --front
|
"mcl_brewing_side.png^[transformFX"} --front
|
||||||
|
|
||||||
local allow_put = function(pos, listname, index, stack, player)
|
local allow_put = function(pos, listname, index, stack, player)
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
|
@ -856,7 +855,6 @@ minetest.register_node("mcl_brewing:stand_011", {
|
||||||
_mcl_blast_resistance = 1,
|
_mcl_blast_resistance = 1,
|
||||||
_mcl_hardness = 1,
|
_mcl_hardness = 1,
|
||||||
on_destruct = on_destruct,
|
on_destruct = on_destruct,
|
||||||
-- after_dig_node = after_dig,
|
|
||||||
allow_metadata_inventory_take = allow_take,
|
allow_metadata_inventory_take = allow_take,
|
||||||
allow_metadata_inventory_put = allow_put,
|
allow_metadata_inventory_put = allow_put,
|
||||||
on_metadata_inventory_put = on_put,
|
on_metadata_inventory_put = on_put,
|
||||||
|
|
|
@ -296,14 +296,15 @@ minetest.register_globalstep(function(dtime)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
||||||
local is_fire_node = { ["mcl_core:lava_flowing"]=true,
|
local is_fire_node = { ["mcl_core:lava_flowing"]=true,
|
||||||
["mcl_core:lava_source"]=true,
|
["mcl_core:lava_source"]=true,
|
||||||
["mcl_fire:eternal_fire"]=true,
|
["mcl_fire:eternal_fire"]=true,
|
||||||
["mcl_fire:fire"]=true,
|
["mcl_fire:fire"]=true,
|
||||||
["mcl_nether:magma"]=true,
|
["mcl_nether:magma"]=true,
|
||||||
["mcl_nether:nether_lava_source"]=true,
|
["mcl_nether:nether_lava_source"]=true,
|
||||||
["mcl_nether:nether_lava_flowing"]=true,
|
["mcl_nether:nether_lava_flowing"]=true,
|
||||||
["mcl_nether:nether_lava_source"]=true}
|
["mcl_nether:nether_lava_source"]=true
|
||||||
|
}
|
||||||
|
|
||||||
-- Prevent damage to player with Fire Resistance enabled
|
-- Prevent damage to player with Fire Resistance enabled
|
||||||
minetest.register_on_player_hpchange(function(player, hp_change, reason)
|
minetest.register_on_player_hpchange(function(player, hp_change, reason)
|
||||||
|
@ -314,8 +315,6 @@ minetest.register_on_player_hpchange(function(player, hp_change, reason)
|
||||||
-- it's worth noting that you don't take damage from players in this case...
|
-- it's worth noting that you don't take damage from players in this case...
|
||||||
local player_info = mcl_playerinfo[player:get_player_name()]
|
local player_info = mcl_playerinfo[player:get_player_name()]
|
||||||
|
|
||||||
-- if reason.type == "drown" then return hp_change
|
|
||||||
|
|
||||||
if is_fire_node[player_info.node_head] or is_fire_node[player_info.node_feet] or is_fire_node[player_info.node_stand] then
|
if is_fire_node[player_info.node_head] or is_fire_node[player_info.node_feet] or is_fire_node[player_info.node_stand] then
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
|
@ -347,7 +346,9 @@ end, true)
|
||||||
|
|
||||||
function mcl_potions._reset_player_effects(player)
|
function mcl_potions._reset_player_effects(player)
|
||||||
|
|
||||||
if not player:is_player() then return end
|
if not player:is_player() then
|
||||||
|
return
|
||||||
|
end
|
||||||
meta = player:get_meta()
|
meta = player:get_meta()
|
||||||
|
|
||||||
mcl_potions.make_invisible(player, false)
|
mcl_potions.make_invisible(player, false)
|
||||||
|
@ -375,7 +376,9 @@ end
|
||||||
|
|
||||||
function mcl_potions._save_player_effects(player)
|
function mcl_potions._save_player_effects(player)
|
||||||
|
|
||||||
if not player:is_player() then return end
|
if not player:is_player() then
|
||||||
|
return
|
||||||
|
end
|
||||||
meta = player:get_meta()
|
meta = player:get_meta()
|
||||||
|
|
||||||
meta:set_string("_is_invisible", minetest.serialize(is_invisible[player]))
|
meta:set_string("_is_invisible", minetest.serialize(is_invisible[player]))
|
||||||
|
@ -393,7 +396,9 @@ end
|
||||||
|
|
||||||
function mcl_potions._load_player_effects(player)
|
function mcl_potions._load_player_effects(player)
|
||||||
|
|
||||||
if not player:is_player() then return end
|
if not player:is_player() then
|
||||||
|
return
|
||||||
|
end
|
||||||
meta = player:get_meta()
|
meta = player:get_meta()
|
||||||
|
|
||||||
if minetest.deserialize(meta:get_string("_is_invisible")) then
|
if minetest.deserialize(meta:get_string("_is_invisible")) then
|
||||||
|
@ -487,7 +492,9 @@ function mcl_potions.is_obj_hit(self, pos)
|
||||||
|
|
||||||
if entity and entity.name ~= self.object:get_luaentity().name then
|
if entity and entity.name ~= self.object:get_luaentity().name then
|
||||||
|
|
||||||
if entity._cmi_is_mob then return true end
|
if entity._cmi_is_mob then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
elseif object:is_player() and self._thrower ~= object:get_player_name() then
|
elseif object:is_player() and self._thrower ~= object:get_player_name() then
|
||||||
return true
|
return true
|
||||||
|
@ -500,7 +507,9 @@ end
|
||||||
|
|
||||||
function mcl_potions.make_invisible(player, toggle)
|
function mcl_potions.make_invisible(player, toggle)
|
||||||
|
|
||||||
if not player then return false end
|
if not player then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
local is_player = player:is_player()
|
local is_player = player:is_player()
|
||||||
local entity = player:get_luaentity()
|
local entity = player:get_luaentity()
|
||||||
|
@ -533,22 +542,22 @@ function mcl_potions._use_potion(item, obj, color)
|
||||||
local pos = obj:get_pos()
|
local pos = obj:get_pos()
|
||||||
minetest.sound_play("mcl_potions_drinking", {pos = pos, max_hear_distance = 6, gain = 1})
|
minetest.sound_play("mcl_potions_drinking", {pos = pos, max_hear_distance = 6, gain = 1})
|
||||||
minetest.add_particlespawner({
|
minetest.add_particlespawner({
|
||||||
amount = 25,
|
amount = 25,
|
||||||
time = 1,
|
time = 1,
|
||||||
minpos = {x=pos.x-d, y=pos.y+1, z=pos.z-d},
|
minpos = {x=pos.x-d, y=pos.y+1, z=pos.z-d},
|
||||||
maxpos = {x=pos.x+d, y=pos.y+2, z=pos.z+d},
|
maxpos = {x=pos.x+d, y=pos.y+2, z=pos.z+d},
|
||||||
minvel = {x=-0.1, y=0, z=-0.1},
|
minvel = {x=-0.1, y=0, z=-0.1},
|
||||||
maxvel = {x=0.1, y=0.1, z=0.1},
|
maxvel = {x=0.1, y=0.1, z=0.1},
|
||||||
minacc = {x=-0.1, y=0, z=-0.1},
|
minacc = {x=-0.1, y=0, z=-0.1},
|
||||||
maxacc = {x=0.1, y=.1, z=0.1},
|
maxacc = {x=0.1, y=.1, z=0.1},
|
||||||
minexptime = 1,
|
minexptime = 1,
|
||||||
maxexptime = 5,
|
maxexptime = 5,
|
||||||
minsize = 0.5,
|
minsize = 0.5,
|
||||||
maxsize = 1,
|
maxsize = 1,
|
||||||
collisiondetection = true,
|
collisiondetection = true,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
texture = "mcl_potions_sprite.png^[colorize:"..color..":127",
|
texture = "mcl_potions_sprite.png^[colorize:"..color..":127",
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -556,22 +565,22 @@ function mcl_potions._add_spawner(obj, color)
|
||||||
local d = 0.2
|
local d = 0.2
|
||||||
local pos = obj:get_pos()
|
local pos = obj:get_pos()
|
||||||
minetest.add_particlespawner({
|
minetest.add_particlespawner({
|
||||||
amount = 1,
|
amount = 1,
|
||||||
time = 1,
|
time = 1,
|
||||||
minpos = {x=pos.x-d, y=pos.y+1, z=pos.z-d},
|
minpos = {x=pos.x-d, y=pos.y+1, z=pos.z-d},
|
||||||
maxpos = {x=pos.x+d, y=pos.y+2, z=pos.z+d},
|
maxpos = {x=pos.x+d, y=pos.y+2, z=pos.z+d},
|
||||||
minvel = {x=-0.1, y=0, z=-0.1},
|
minvel = {x=-0.1, y=0, z=-0.1},
|
||||||
maxvel = {x=0.1, y=0.1, z=0.1},
|
maxvel = {x=0.1, y=0.1, z=0.1},
|
||||||
minacc = {x=-0.1, y=0, z=-0.1},
|
minacc = {x=-0.1, y=0, z=-0.1},
|
||||||
maxacc = {x=0.1, y=.1, z=0.1},
|
maxacc = {x=0.1, y=.1, z=0.1},
|
||||||
minexptime = 0.5,
|
minexptime = 0.5,
|
||||||
maxexptime = 1,
|
maxexptime = 1,
|
||||||
minsize = 0.5,
|
minsize = 0.5,
|
||||||
maxsize = 1,
|
maxsize = 1,
|
||||||
collisiondetection = false,
|
collisiondetection = false,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
texture = "mcl_potions_sprite.png^[colorize:"..color..":127",
|
texture = "mcl_potions_sprite.png^[colorize:"..color..":127",
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -633,7 +642,9 @@ end
|
||||||
|
|
||||||
function mcl_potions.swiftness_func(player, factor, duration)
|
function mcl_potions.swiftness_func(player, factor, duration)
|
||||||
|
|
||||||
if not player:get_meta() then return false end
|
if not player:get_meta() then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
if not is_swift[player] then
|
if not is_swift[player] then
|
||||||
|
|
||||||
|
@ -654,7 +665,9 @@ end
|
||||||
|
|
||||||
function mcl_potions.leaping_func(player, factor, duration)
|
function mcl_potions.leaping_func(player, factor, duration)
|
||||||
|
|
||||||
if not player:get_meta() then return false end
|
if not player:get_meta() then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
if not is_leaping[player] then
|
if not is_leaping[player] then
|
||||||
|
|
||||||
|
|
|
@ -296,14 +296,14 @@ end
|
||||||
|
|
||||||
mcl_potions.register_splash("water", S("Splash Water Bottle"), "#0022FF", {
|
mcl_potions.register_splash("water", S("Splash Water Bottle"), "#0022FF", {
|
||||||
tt=S("Extinguishes fire and hurts some mobs"),
|
tt=S("Extinguishes fire and hurts some mobs"),
|
||||||
longdesc=S("A throwable water bottle that will shatter on impact, where it extinguishes nearby fire and hurts mobs that are vulnerable to water."),
|
longdesc=S("A throwable water bottle that will shatter on impact, where it extinguishes nearby fire and hurts mobs that are vulnerable to water."),
|
||||||
no_effect=true,
|
no_effect=true,
|
||||||
potion_fun=water_splash,
|
potion_fun=water_splash,
|
||||||
effect=1
|
effect=1
|
||||||
})
|
})
|
||||||
mcl_potions.register_lingering("water", S("Lingering Water Bottle"), "#0022FF", {
|
mcl_potions.register_lingering("water", S("Lingering Water Bottle"), "#0022FF", {
|
||||||
tt=S("Extinguishes fire and hurts some mobs"),
|
tt=S("Extinguishes fire and hurts some mobs"),
|
||||||
longdesc=S("A throwable water bottle that will shatter on impact, where it creates a cloud of water vapor that lingers on the ground for a while. This cloud extinguishes fire and hurts mobs that are vulnerable to water."),
|
longdesc=S("A throwable water bottle that will shatter on impact, where it creates a cloud of water vapor that lingers on the ground for a while. This cloud extinguishes fire and hurts mobs that are vulnerable to water."),
|
||||||
no_effect=true,
|
no_effect=true,
|
||||||
potion_fun=water_splash,
|
potion_fun=water_splash,
|
||||||
effect=1
|
effect=1
|
||||||
|
@ -366,23 +366,23 @@ local extension_table = {}
|
||||||
local potions = {}
|
local potions = {}
|
||||||
|
|
||||||
for i, potion in ipairs({"healing","harming","swiftness","slowness",
|
for i, potion in ipairs({"healing","harming","swiftness","slowness",
|
||||||
"leaping","poison","regeneration","invisibility","fire_resistance",
|
"leaping","poison","regeneration","invisibility","fire_resistance",
|
||||||
-- "weakness","strength",
|
-- "weakness","strength",
|
||||||
"water_breathing","night_vision"}) do
|
"water_breathing","night_vision"}) do
|
||||||
|
|
||||||
table.insert(potions, potion)
|
table.insert(potions, potion)
|
||||||
|
|
||||||
if potion ~= "invisibility" and potion ~= "night_vision" and potion ~= "weakness" and potion ~= "water_breathing" and potion ~= "fire_resistance" then
|
if potion ~= "invisibility" and potion ~= "night_vision" and potion ~= "weakness" and potion ~= "water_breathing" and potion ~= "fire_resistance" then
|
||||||
enhancement_table["mcl_potions:"..potion] = "mcl_potions:"..potion.."_2"
|
enhancement_table["mcl_potions:"..potion] = "mcl_potions:"..potion.."_2"
|
||||||
enhancement_table["mcl_potions:"..potion.."_splash"] = "mcl_potions:"..potion.."_2_splash"
|
enhancement_table["mcl_potions:"..potion.."_splash"] = "mcl_potions:"..potion.."_2_splash"
|
||||||
table.insert(potions, potion.."_2")
|
table.insert(potions, potion.."_2")
|
||||||
end
|
end
|
||||||
|
|
||||||
if potion ~= "healing" and potion ~= "harming" then
|
if potion ~= "healing" and potion ~= "harming" then
|
||||||
extension_table["mcl_potions:"..potion.."_splash"] = "mcl_potions:"..potion.."_plus_splash"
|
extension_table["mcl_potions:"..potion.."_splash"] = "mcl_potions:"..potion.."_plus_splash"
|
||||||
extension_table["mcl_potions:"..potion] = "mcl_potions:"..potion.."_plus"
|
extension_table["mcl_potions:"..potion] = "mcl_potions:"..potion.."_plus"
|
||||||
table.insert(potions, potion.."_plus")
|
table.insert(potions, potion.."_plus")
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -419,7 +419,7 @@ local splash_table = {}
|
||||||
local lingering_table = {}
|
local lingering_table = {}
|
||||||
|
|
||||||
for i, potion in ipairs(potions) do
|
for i, potion in ipairs(potions) do
|
||||||
splash_table["mcl_potions:"..potion] = "mcl_potions:"..potion.."_splash"
|
splash_table["mcl_potions:"..potion] = "mcl_potions:"..potion.."_splash"
|
||||||
lingering_table["mcl_potions:"..potion.."_splash"] = "mcl_potions:"..potion.."_lingering"
|
lingering_table["mcl_potions:"..potion.."_splash"] = "mcl_potions:"..potion.."_lingering"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -71,7 +71,9 @@ minetest.register_globalstep(function(dtime)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if vals.timer <= 0 then lingering_effect_at[pos] = nil end
|
if vals.timer <= 0 then
|
||||||
|
lingering_effect_at[pos] = nil
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
lingering_timer = 0
|
lingering_timer = 0
|
||||||
|
@ -82,93 +84,93 @@ end)
|
||||||
|
|
||||||
function mcl_potions.register_lingering(name, descr, color, def)
|
function mcl_potions.register_lingering(name, descr, color, def)
|
||||||
|
|
||||||
local id = "mcl_potions:"..name.."_lingering"
|
local id = "mcl_potions:"..name.."_lingering"
|
||||||
local longdesc = def.longdesc
|
local longdesc = def.longdesc
|
||||||
if not def.no_effect then
|
if not def.no_effect then
|
||||||
longdesc = S("A throwable potion that will shatter on impact, where it creates a magic cloud that lingers around for a while. Any player or mob inside the cloud will receive the potion's effect, possibly repeatedly.")
|
longdesc = S("A throwable potion that will shatter on impact, where it creates a magic cloud that lingers around for a while. Any player or mob inside the cloud will receive the potion's effect, possibly repeatedly.")
|
||||||
if def.longdesc then
|
if def.longdesc then
|
||||||
longdesc = longdesc .. "\n" .. def.longdesc
|
longdesc = longdesc .. "\n" .. def.longdesc
|
||||||
end
|
|
||||||
end
|
|
||||||
minetest.register_craftitem(id, {
|
|
||||||
description = descr,
|
|
||||||
_tt_help = def.tt,
|
|
||||||
_doc_items_longdesc = longdesc,
|
|
||||||
_doc_items_usagehelp = S("Use the “Punch” key to throw it."),
|
|
||||||
inventory_image = lingering_image(color),
|
|
||||||
groups = {brewitem=1, not_in_creative_inventory=0},
|
|
||||||
on_use = function(item, placer, pointed_thing)
|
|
||||||
local velocity = 10
|
|
||||||
local dir = placer:get_look_dir();
|
|
||||||
local pos = placer:getpos();
|
|
||||||
local obj = minetest.add_entity({x=pos.x+dir.x,y=pos.y+2+dir.y,z=pos.z+dir.z}, id.."_flying")
|
|
||||||
obj:setvelocity({x=dir.x*velocity,y=dir.y*velocity,z=dir.z*velocity})
|
|
||||||
obj:setacceleration({x=dir.x*-3, y=-9.8, z=dir.z*-3})
|
|
||||||
obj:get_luaentity()._thrower = placer:get_player_name()
|
|
||||||
if not minetest.is_creative_enabled(placer:get_player_name()) then
|
|
||||||
item:take_item()
|
|
||||||
end
|
|
||||||
return item
|
|
||||||
end,
|
|
||||||
stack_max = 1,
|
|
||||||
_on_dispense = function(stack, dispenserpos, droppos, dropnode, dropdir)
|
|
||||||
local s_pos = vector.add(dispenserpos, vector.multiply(dropdir, 0.51))
|
|
||||||
local obj = minetest.add_entity({x=s_pos.x+dropdir.x,y=s_pos.y+dropdir.y,z=s_pos.z+dropdir.z}, id.."_flying")
|
|
||||||
local velocity = 22
|
|
||||||
obj:set_velocity({x=dropdir.x*velocity,y=dropdir.y*velocity,z=dropdir.z*velocity})
|
|
||||||
obj:set_acceleration({x=dropdir.x*-3, y=-9.8, z=dropdir.z*-3})
|
|
||||||
end
|
end
|
||||||
})
|
end
|
||||||
|
minetest.register_craftitem(id, {
|
||||||
|
description = descr,
|
||||||
|
_tt_help = def.tt,
|
||||||
|
_doc_items_longdesc = longdesc,
|
||||||
|
_doc_items_usagehelp = S("Use the “Punch” key to throw it."),
|
||||||
|
inventory_image = lingering_image(color),
|
||||||
|
groups = {brewitem=1, not_in_creative_inventory=0},
|
||||||
|
on_use = function(item, placer, pointed_thing)
|
||||||
|
local velocity = 10
|
||||||
|
local dir = placer:get_look_dir();
|
||||||
|
local pos = placer:getpos();
|
||||||
|
local obj = minetest.add_entity({x=pos.x+dir.x,y=pos.y+2+dir.y,z=pos.z+dir.z}, id.."_flying")
|
||||||
|
obj:setvelocity({x=dir.x*velocity,y=dir.y*velocity,z=dir.z*velocity})
|
||||||
|
obj:setacceleration({x=dir.x*-3, y=-9.8, z=dir.z*-3})
|
||||||
|
obj:get_luaentity()._thrower = placer:get_player_name()
|
||||||
|
if not minetest.is_creative_enabled(placer:get_player_name()) then
|
||||||
|
item:take_item()
|
||||||
|
end
|
||||||
|
return item
|
||||||
|
end,
|
||||||
|
stack_max = 1,
|
||||||
|
_on_dispense = function(stack, dispenserpos, droppos, dropnode, dropdir)
|
||||||
|
local s_pos = vector.add(dispenserpos, vector.multiply(dropdir, 0.51))
|
||||||
|
local obj = minetest.add_entity({x=s_pos.x+dropdir.x,y=s_pos.y+dropdir.y,z=s_pos.z+dropdir.z}, id.."_flying")
|
||||||
|
local velocity = 22
|
||||||
|
obj:set_velocity({x=dropdir.x*velocity,y=dropdir.y*velocity,z=dropdir.z*velocity})
|
||||||
|
obj:set_acceleration({x=dropdir.x*-3, y=-9.8, z=dropdir.z*-3})
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
local w = 0.7
|
local w = 0.7
|
||||||
|
|
||||||
minetest.register_entity(id.."_flying",{
|
minetest.register_entity(id.."_flying",{
|
||||||
textures = {lingering_image(color)},
|
textures = {lingering_image(color)},
|
||||||
hp_max = 1,
|
hp_max = 1,
|
||||||
visual_size = {x=w/2,y=w/2},
|
visual_size = {x=w/2,y=w/2},
|
||||||
collisionbox = {-0.1,-0.1,-0.1,0.1,0.1,0.1},
|
collisionbox = {-0.1,-0.1,-0.1,0.1,0.1,0.1},
|
||||||
pointable = false,
|
pointable = false,
|
||||||
on_step = function(self, dtime)
|
on_step = function(self, dtime)
|
||||||
local pos = self.object:get_pos()
|
local pos = self.object:get_pos()
|
||||||
local node = minetest.get_node(pos)
|
local node = minetest.get_node(pos)
|
||||||
local n = node.name
|
local n = node.name
|
||||||
local g = minetest.get_node_group(n, "liquid")
|
local g = minetest.get_node_group(n, "liquid")
|
||||||
local d = 4
|
local d = 4
|
||||||
if n ~= "air" and n ~= "mcl_portals:portal" and n ~= "mcl_portals:portal_end" and g == 0 or mcl_potions.is_obj_hit(self, pos) then
|
if n ~= "air" and n ~= "mcl_portals:portal" and n ~= "mcl_portals:portal_end" and g == 0 or mcl_potions.is_obj_hit(self, pos) then
|
||||||
minetest.sound_play("mcl_potions_breaking_glass", {pos = pos, max_hear_distance = 16, gain = 1})
|
minetest.sound_play("mcl_potions_breaking_glass", {pos = pos, max_hear_distance = 16, gain = 1})
|
||||||
add_lingering_effect(pos, color, def, name == "water")
|
add_lingering_effect(pos, color, def, name == "water")
|
||||||
local texture, minacc, maxacc
|
local texture, minacc, maxacc
|
||||||
if name == "water" then
|
if name == "water" then
|
||||||
texture = "mcl_potions_droplet.png"
|
texture = "mcl_potions_droplet.png"
|
||||||
minacc = {x=-0.2, y=-0.05, z=-0.2}
|
minacc = {x=-0.2, y=-0.05, z=-0.2}
|
||||||
maxacc = {x=0.2, y=0.05, z=0.2}
|
maxacc = {x=0.2, y=0.05, z=0.2}
|
||||||
else
|
else
|
||||||
texture = "mcl_potions_sprite.png"
|
texture = "mcl_potions_sprite.png"
|
||||||
minacc = {x=-0.2, y=0, z=-0.2}
|
minacc = {x=-0.2, y=0, z=-0.2}
|
||||||
maxacc = {x=0.2, y=.05, z=0.2}
|
maxacc = {x=0.2, y=.05, z=0.2}
|
||||||
end
|
end
|
||||||
minetest.add_particlespawner({
|
minetest.add_particlespawner({
|
||||||
amount = 40,
|
amount = 40,
|
||||||
time = 1,
|
time = 1,
|
||||||
minpos = {x=pos.x-d, y=pos.y+0.5, z=pos.z-d},
|
minpos = {x=pos.x-d, y=pos.y+0.5, z=pos.z-d},
|
||||||
maxpos = {x=pos.x+d, y=pos.y+1, z=pos.z+d},
|
maxpos = {x=pos.x+d, y=pos.y+1, z=pos.z+d},
|
||||||
minvel = {x=-0.5, y=0, z=-0.5},
|
minvel = {x=-0.5, y=0, z=-0.5},
|
||||||
maxvel = {x=0.5, y=0.5, z=0.5},
|
maxvel = {x=0.5, y=0.5, z=0.5},
|
||||||
minacc = minacc,
|
minacc = minacc,
|
||||||
maxacc = maxacc,
|
maxacc = maxacc,
|
||||||
minexptime = 1,
|
minexptime = 1,
|
||||||
maxexptime = 2,
|
maxexptime = 2,
|
||||||
minsize = 1,
|
minsize = 1,
|
||||||
maxsize = 2,
|
maxsize = 2,
|
||||||
collisiondetection = true,
|
collisiondetection = true,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
texture = texture.."^[colorize:"..color..":127",
|
texture = texture.."^[colorize:"..color..":127",
|
||||||
})
|
})
|
||||||
if name == "water" then
|
if name == "water" then
|
||||||
mcl_potions._extinguish_nearby_fire(pos, d)
|
mcl_potions._extinguish_nearby_fire(pos, d)
|
||||||
end
|
end
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
|
@ -12,7 +12,9 @@ local how_to_drink = S("Use the “Place” key to drink it.")
|
||||||
local potion_intro = S("Drinking a potion gives you a particular effect.")
|
local potion_intro = S("Drinking a potion gives you a particular effect.")
|
||||||
|
|
||||||
local function time_string(dur)
|
local function time_string(dur)
|
||||||
if not dur then return nil end
|
if not dur then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
return math.floor(dur/60)..string.format(":%02d",math.floor(dur % 60))
|
return math.floor(dur/60)..string.format(":%02d",math.floor(dur % 60))
|
||||||
end
|
end
|
||||||
local function perc_string(num)
|
local function perc_string(num)
|
||||||
|
@ -55,12 +57,14 @@ local function register_potion(def)
|
||||||
end
|
end
|
||||||
|
|
||||||
local on_use = function (itemstack, user, pointed_thing)
|
local on_use = function (itemstack, user, pointed_thing)
|
||||||
if not def.on_use then return end
|
if not def.on_use then
|
||||||
def.on_use(user, def.effect, dur)
|
return
|
||||||
minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing)
|
end
|
||||||
mcl_potions._use_potion(itemstack, user, def.color)
|
def.on_use(user, def.effect, dur)
|
||||||
return itemstack
|
minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing)
|
||||||
end
|
mcl_potions._use_potion(itemstack, user, def.color)
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
|
||||||
local function get_tt(tt, effect, dur)
|
local function get_tt(tt, effect, dur)
|
||||||
local _tt
|
local _tt
|
||||||
|
@ -121,7 +125,7 @@ local function register_potion(def)
|
||||||
if not def.no_effect then
|
if not def.no_effect then
|
||||||
potion_longdesc = potion_intro .. "\n" .. def._longdesc
|
potion_longdesc = potion_intro .. "\n" .. def._longdesc
|
||||||
end
|
end
|
||||||
local potion_usagehelp
|
local potion_usagehelp
|
||||||
local basic_potion_tt
|
local basic_potion_tt
|
||||||
if def.name ~= "dragon_breath" then
|
if def.name ~= "dragon_breath" then
|
||||||
potion_usagehelp = how_to_drink
|
potion_usagehelp = how_to_drink
|
||||||
|
@ -218,11 +222,11 @@ local function register_potion(def)
|
||||||
end
|
end
|
||||||
|
|
||||||
local on_use = function (itemstack, user, pointed_thing)
|
local on_use = function (itemstack, user, pointed_thing)
|
||||||
def.on_use(user, effect_II, dur_2)
|
def.on_use(user, effect_II, dur_2)
|
||||||
minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing)
|
minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing)
|
||||||
mcl_potions._use_potion(itemstack, user, def.color)
|
mcl_potions._use_potion(itemstack, user, def.color)
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_craftitem("mcl_potions:"..def.name.."_2", {
|
minetest.register_craftitem("mcl_potions:"..def.name.."_2", {
|
||||||
description = S("@1 Potion@2", def.description, desc_mod),
|
description = S("@1 Potion@2", def.description, desc_mod),
|
||||||
|
@ -301,11 +305,11 @@ local function register_potion(def)
|
||||||
end
|
end
|
||||||
|
|
||||||
local on_use = function (itemstack, user, pointed_thing)
|
local on_use = function (itemstack, user, pointed_thing)
|
||||||
def.on_use(user, def.effect, dur_pl)
|
def.on_use(user, def.effect, dur_pl)
|
||||||
minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing)
|
minetest.do_item_eat(0, "mcl_potions:glass_bottle", itemstack, user, pointed_thing)
|
||||||
mcl_potions._use_potion(itemstack, user, def.color)
|
mcl_potions._use_potion(itemstack, user, def.color)
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_craftitem("mcl_potions:"..def.name.."_plus", {
|
minetest.register_craftitem("mcl_potions:"..def.name.."_plus", {
|
||||||
description = S("@1 + Potion", def.description),
|
description = S("@1 + Potion", def.description),
|
||||||
|
@ -565,9 +569,9 @@ local fire_resistance_def = {
|
||||||
|
|
||||||
|
|
||||||
local defs = { awkward_def, mundane_def, thick_def, dragon_breath_def,
|
local defs = { awkward_def, mundane_def, thick_def, dragon_breath_def,
|
||||||
healing_def, harming_def, night_vision_def, swiftness_def,
|
healing_def, harming_def, night_vision_def, swiftness_def,
|
||||||
slowness_def, leaping_def, poison_def, regeneration_def,
|
slowness_def, leaping_def, poison_def, regeneration_def,
|
||||||
invisibility_def, water_breathing_def, fire_resistance_def}
|
invisibility_def, water_breathing_def, fire_resistance_def}
|
||||||
|
|
||||||
for _, def in ipairs(defs) do
|
for _, def in ipairs(defs) do
|
||||||
register_potion(def)
|
register_potion(def)
|
||||||
|
|
|
@ -11,34 +11,34 @@ end
|
||||||
|
|
||||||
function mcl_potions.register_splash(name, descr, color, def)
|
function mcl_potions.register_splash(name, descr, color, def)
|
||||||
|
|
||||||
local id = "mcl_potions:"..name.."_splash"
|
local id = "mcl_potions:"..name.."_splash"
|
||||||
local longdesc = def.longdesc
|
local longdesc = def.longdesc
|
||||||
if not def.no_effect then
|
if not def.no_effect then
|
||||||
longdesc = S("A throwable potion that will shatter on impact, where it gives all nearby players and mobs a status effect.")
|
longdesc = S("A throwable potion that will shatter on impact, where it gives all nearby players and mobs a status effect.")
|
||||||
if def.longdesc then
|
if def.longdesc then
|
||||||
longdesc = longdesc .. "\n" .. def.longdesc
|
longdesc = longdesc .. "\n" .. def.longdesc
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
minetest.register_craftitem(id, {
|
minetest.register_craftitem(id, {
|
||||||
description = descr,
|
description = descr,
|
||||||
_tt_help = def.tt,
|
_tt_help = def.tt,
|
||||||
_doc_items_longdesc = longdesc,
|
_doc_items_longdesc = longdesc,
|
||||||
_doc_items_usagehelp = S("Use the “Punch” key to throw it."),
|
_doc_items_usagehelp = S("Use the “Punch” key to throw it."),
|
||||||
inventory_image = splash_image(color),
|
inventory_image = splash_image(color),
|
||||||
groups = {brewitem=1, not_in_creative_inventory=0},
|
groups = {brewitem=1, not_in_creative_inventory=0},
|
||||||
on_use = function(item, placer, pointed_thing)
|
on_use = function(item, placer, pointed_thing)
|
||||||
local velocity = 10
|
local velocity = 10
|
||||||
local dir = placer:get_look_dir();
|
local dir = placer:get_look_dir();
|
||||||
local pos = placer:get_pos();
|
local pos = placer:get_pos();
|
||||||
local obj = minetest.add_entity({x=pos.x+dir.x,y=pos.y+2+dir.y,z=pos.z+dir.z}, id.."_flying")
|
local obj = minetest.add_entity({x=pos.x+dir.x,y=pos.y+2+dir.y,z=pos.z+dir.z}, id.."_flying")
|
||||||
obj:set_velocity({x=dir.x*velocity,y=dir.y*velocity,z=dir.z*velocity})
|
obj:set_velocity({x=dir.x*velocity,y=dir.y*velocity,z=dir.z*velocity})
|
||||||
obj:set_acceleration({x=dir.x*-3, y=-9.8, z=dir.z*-3})
|
obj:set_acceleration({x=dir.x*-3, y=-9.8, z=dir.z*-3})
|
||||||
obj:get_luaentity()._thrower = placer:get_player_name()
|
obj:get_luaentity()._thrower = placer:get_player_name()
|
||||||
if not minetest.is_creative_enabled(placer:get_player_name()) then
|
if not minetest.is_creative_enabled(placer:get_player_name()) then
|
||||||
item:take_item()
|
item:take_item()
|
||||||
end
|
end
|
||||||
return item
|
return item
|
||||||
end,
|
end,
|
||||||
stack_max = 1,
|
stack_max = 1,
|
||||||
_on_dispense = function(stack, dispenserpos, droppos, dropnode, dropdir)
|
_on_dispense = function(stack, dispenserpos, droppos, dropnode, dropdir)
|
||||||
local s_pos = vector.add(dispenserpos, vector.multiply(dropdir, 0.51))
|
local s_pos = vector.add(dispenserpos, vector.multiply(dropdir, 0.51))
|
||||||
|
@ -47,70 +47,73 @@ function mcl_potions.register_splash(name, descr, color, def)
|
||||||
obj:set_velocity({x=dropdir.x*velocity,y=dropdir.y*velocity,z=dropdir.z*velocity})
|
obj:set_velocity({x=dropdir.x*velocity,y=dropdir.y*velocity,z=dropdir.z*velocity})
|
||||||
obj:set_acceleration({x=dropdir.x*-3, y=-9.8, z=dropdir.z*-3})
|
obj:set_acceleration({x=dropdir.x*-3, y=-9.8, z=dropdir.z*-3})
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
local w = 0.7
|
local w = 0.7
|
||||||
|
|
||||||
minetest.register_entity(id.."_flying",{
|
minetest.register_entity(id.."_flying",{
|
||||||
textures = {splash_image(color)},
|
textures = {splash_image(color)},
|
||||||
hp_max = 1,
|
hp_max = 1,
|
||||||
visual_size = {x=w/2,y=w/2},
|
visual_size = {x=w/2,y=w/2},
|
||||||
collisionbox = {-0.1,-0.1,-0.1,0.1,0.1,0.1},
|
collisionbox = {-0.1,-0.1,-0.1,0.1,0.1,0.1},
|
||||||
pointable = false,
|
pointable = false,
|
||||||
on_step = function(self, dtime)
|
on_step = function(self, dtime)
|
||||||
local pos = self.object:get_pos()
|
local pos = self.object:get_pos()
|
||||||
local node = minetest.get_node(pos)
|
local node = minetest.get_node(pos)
|
||||||
local n = node.name
|
local n = node.name
|
||||||
local g = minetest.get_node_group(n, "liquid")
|
local g = minetest.get_node_group(n, "liquid")
|
||||||
local d = 0.1
|
local d = 0.1
|
||||||
local redux_map = {7/8,0.5,0.25}
|
local redux_map = {7/8,0.5,0.25}
|
||||||
if n ~= "air" and n ~= "mcl_portals:portal" and n ~= "mcl_portals:portal_end" and g == 0 or mcl_potions.is_obj_hit(self, pos) then
|
if n ~= "air" and n ~= "mcl_portals:portal" and n ~= "mcl_portals:portal_end" and g == 0 or mcl_potions.is_obj_hit(self, pos) then
|
||||||
minetest.sound_play("mcl_potions_breaking_glass", {pos = pos, max_hear_distance = 16, gain = 1})
|
minetest.sound_play("mcl_potions_breaking_glass", {pos = pos, max_hear_distance = 16, gain = 1})
|
||||||
local texture, acc
|
local texture, acc
|
||||||
if name == "water" then
|
if name == "water" then
|
||||||
texture = "mcl_potions_droplet.png"
|
texture = "mcl_potions_droplet.png"
|
||||||
acc = {x=0, y=-GRAVITY, z=0}
|
acc = {x=0, y=-GRAVITY, z=0}
|
||||||
else
|
else
|
||||||
texture = "mcl_potions_sprite.png"
|
texture = "mcl_potions_sprite.png"
|
||||||
acc = {x=0, y=0, z=0}
|
acc = {x=0, y=0, z=0}
|
||||||
end
|
end
|
||||||
minetest.add_particlespawner({
|
minetest.add_particlespawner({
|
||||||
amount = 50,
|
amount = 50,
|
||||||
time = 0.1,
|
time = 0.1,
|
||||||
minpos = {x=pos.x-d, y=pos.y+0.5, z=pos.z-d},
|
minpos = {x=pos.x-d, y=pos.y+0.5, z=pos.z-d},
|
||||||
maxpos = {x=pos.x+d, y=pos.y+0.5+d, z=pos.z+d},
|
maxpos = {x=pos.x+d, y=pos.y+0.5+d, z=pos.z+d},
|
||||||
minvel = {x=-2, y=0, z=-2},
|
minvel = {x=-2, y=0, z=-2},
|
||||||
maxvel = {x=2, y=2, z=2},
|
maxvel = {x=2, y=2, z=2},
|
||||||
minacc = acc,
|
minacc = acc,
|
||||||
maxacc = acc,
|
maxacc = acc,
|
||||||
minexptime = 0.5,
|
minexptime = 0.5,
|
||||||
maxexptime = 1.25,
|
maxexptime = 1.25,
|
||||||
minsize = 1,
|
minsize = 1,
|
||||||
maxsize = 2,
|
maxsize = 2,
|
||||||
collisiondetection = true,
|
collisiondetection = true,
|
||||||
vertical = false,
|
vertical = false,
|
||||||
texture = texture.."^[colorize:"..color..":127"
|
texture = texture.."^[colorize:"..color..":127"
|
||||||
})
|
})
|
||||||
|
|
||||||
if name == "water" then
|
if name == "water" then
|
||||||
mcl_potions._extinguish_nearby_fire(pos)
|
mcl_potions._extinguish_nearby_fire(pos)
|
||||||
end
|
end
|
||||||
self.object:remove()
|
self.object:remove()
|
||||||
for _,obj in pairs(minetest.get_objects_inside_radius(pos, 4)) do
|
for _,obj in pairs(minetest.get_objects_inside_radius(pos, 4)) do
|
||||||
|
|
||||||
local entity = obj:get_luaentity()
|
local entity = obj:get_luaentity()
|
||||||
if obj:is_player() or entity._cmi_is_mob then
|
if obj:is_player() or entity._cmi_is_mob then
|
||||||
|
|
||||||
local pos2 = obj:get_pos()
|
local pos2 = obj:get_pos()
|
||||||
local rad = math.floor(math.sqrt((pos2.x-pos.x)^2 + (pos2.y-pos.y)^2 + (pos2.z-pos.z)^2))
|
local rad = math.floor(math.sqrt((pos2.x-pos.x)^2 + (pos2.y-pos.y)^2 + (pos2.z-pos.z)^2))
|
||||||
if rad > 0 then def.potion_fun(obj, redux_map[rad]) else def.potion_fun(obj, 1) end
|
if rad > 0 then
|
||||||
|
def.potion_fun(obj, redux_map[rad])
|
||||||
end
|
else
|
||||||
|
def.potion_fun(obj, 1)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end,
|
end
|
||||||
})
|
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
local function time_string(dur)
|
local function time_string(dur)
|
||||||
|
|
|
@ -19,12 +19,11 @@ local function arrow_image(colorstring, opacity)
|
||||||
opacity = 127
|
opacity = 127
|
||||||
end
|
end
|
||||||
return {"mcl_bows_arrow.png^[transformFX^(mcl_bows_arrow_overlay.png^[transformFX^[colorize:"..colorstring..":"..tostring(opacity)..")",
|
return {"mcl_bows_arrow.png^[transformFX^(mcl_bows_arrow_overlay.png^[transformFX^[colorize:"..colorstring..":"..tostring(opacity)..")",
|
||||||
"mcl_bows_arrow.png^[transformFX^(mcl_bows_arrow_overlay.png^[transformFX^[colorize:"..colorstring..":"..tostring(opacity)..")",
|
"mcl_bows_arrow.png^[transformFX^(mcl_bows_arrow_overlay.png^[transformFX^[colorize:"..colorstring..":"..tostring(opacity)..")",
|
||||||
"mcl_bows_arrow_back.png^[colorize:"..colorstring..":"..tostring(opacity),
|
"mcl_bows_arrow_back.png^[colorize:"..colorstring..":"..tostring(opacity),
|
||||||
"mcl_bows_arrow_front.png^[colorize:"..colorstring..":"..tostring(opacity),
|
"mcl_bows_arrow_front.png^[colorize:"..colorstring..":"..tostring(opacity),
|
||||||
"mcl_bows_arrow.png^(mcl_bows_arrow_overlay.png^[colorize:"..colorstring..":"..tostring(opacity)..")",
|
"mcl_bows_arrow.png^(mcl_bows_arrow_overlay.png^[colorize:"..colorstring..":"..tostring(opacity)..")",
|
||||||
"mcl_bows_arrow.png^[transformFX^(mcl_bows_arrow_overlay.png^[transformFX^[colorize:"..colorstring..":"..tostring(opacity)..")"}
|
"mcl_bows_arrow.png^[transformFX^(mcl_bows_arrow_overlay.png^[transformFX^[colorize:"..colorstring..":"..tostring(opacity)..")"}
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local how_to_shoot = minetest.registered_items["mcl_bows:arrow"]._doc_items_usagehelp
|
local how_to_shoot = minetest.registered_items["mcl_bows:arrow"]._doc_items_usagehelp
|
||||||
|
|
Loading…
Reference in a new issue