mirror of
https://git.minetest.land/MineClone2/MineClone2.git
synced 2024-11-24 20:03:45 +01:00
Merge branch 'master' of https://git.minetest.land/Wuzzy/MineClone2
This commit is contained in:
commit
5e26cfcf3d
@ -80,3 +80,8 @@ Depending on what you add, the chances for inclusion vary:
|
||||
Report all bugs and missing Minecraft features here:
|
||||
|
||||
<https://git.minetest.land/Wuzzy/MineClone2/issues>
|
||||
|
||||
## Direct discussion
|
||||
We have an IRC channel! Join us on #mineclone2 in freenode.net.
|
||||
|
||||
<ircs://irc.freenode.net:6697/#mineclone2>
|
||||
|
@ -724,6 +724,42 @@ local is_at_cliff_or_danger = function(self)
|
||||
end
|
||||
|
||||
|
||||
-- copy the 'mob facing cliff_or_danger check' from above, and rework to avoid water
|
||||
local is_at_water_danger = function(self)
|
||||
|
||||
|
||||
if not self.object:get_luaentity() then
|
||||
return false
|
||||
end
|
||||
local yaw = self.object:get_yaw()
|
||||
local dir_x = -sin(yaw) * (self.collisionbox[4] + 0.5)
|
||||
local dir_z = cos(yaw) * (self.collisionbox[4] + 0.5)
|
||||
local pos = self.object:get_pos()
|
||||
local ypos = pos.y + self.collisionbox[2] -- just above floor
|
||||
|
||||
local free_fall, blocker = minetest.line_of_sight(
|
||||
{x = pos.x + dir_x, y = ypos, z = pos.z + dir_z},
|
||||
{x = pos.x + dir_x, y = ypos - 3, z = pos.z + dir_z})
|
||||
if free_fall then
|
||||
return true
|
||||
else
|
||||
local bnode = minetest.get_node(blocker)
|
||||
local waterdanger = is_node_waterhazard(self, bnode.name)
|
||||
if
|
||||
waterdanger and (is_node_waterhazard(self, self.standing_in) or is_node_waterhazard(self, self.standing_on)) then
|
||||
return false
|
||||
elseif waterdanger and (is_node_waterhazard(self, self.standing_in) or is_node_waterhazard(self, self.standing_on)) == false then
|
||||
return true
|
||||
else
|
||||
local def = minetest.registered_nodes[bnode.name]
|
||||
return (not def and def.walkable)
|
||||
end
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
|
||||
-- get node but use fallback for nil or unknown
|
||||
local node_ok = function(pos, fallback)
|
||||
|
||||
@ -2049,40 +2085,40 @@ local do_states = function(self, dtime)
|
||||
|
||||
local is_in_danger = false
|
||||
if lp then
|
||||
|
||||
local is_in_danger = false
|
||||
|
||||
-- if mob is flying, only check for node it is currently in (no contact with node below)
|
||||
if flight_check(self) then
|
||||
is_in_danger = is_node_dangerous(self, self.standing_in)
|
||||
elseif (is_node_dangerous(self, self.standing_in) or
|
||||
is_node_dangerous(self, self.standing_on)) or (is_node_waterhazard(self, self.standing_in) or is_node_waterhazard(self, self.standing_on)) then
|
||||
is_in_danger = true
|
||||
end
|
||||
|
||||
-- If mob in or on dangerous block, look for land
|
||||
if is_in_danger then
|
||||
lp = minetest.find_node_near(s, 5, {"group:solid"})
|
||||
if (is_node_dangerous(self, self.standing_in) or
|
||||
is_node_dangerous(self, self.standing_on)) or (is_node_waterhazard(self, self.standing_in) or is_node_waterhazard(self, self.standing_on)) and (not self.fly) then
|
||||
is_in_danger = true
|
||||
|
||||
-- did we find land?
|
||||
if lp then
|
||||
-- If mob in or on dangerous block, look for land
|
||||
if is_in_danger then
|
||||
-- Better way to find shore - copied from upstream
|
||||
lp = minetest.find_nodes_in_area_under_air(
|
||||
{x = s.x - 5, y = s.y - 0.5, z = s.z - 5},
|
||||
{x = s.x + 5, y = s.y + 1, z = s.z + 5},
|
||||
{"group:solid"})
|
||||
|
||||
local vec = {
|
||||
x = lp.x - s.x,
|
||||
z = lp.z - s.z
|
||||
}
|
||||
lp = #lp > 0 and lp[random(#lp)]
|
||||
|
||||
-- did we find land?
|
||||
if lp then
|
||||
|
||||
yaw = (atan(vec.z / vec.x) + pi / 2) - self.rotate
|
||||
local vec = {
|
||||
x = lp.x - s.x,
|
||||
z = lp.z - s.z
|
||||
}
|
||||
|
||||
if lp.x > s.x then yaw = yaw + pi end
|
||||
yaw = (atan(vec.z / vec.x) + pi / 2) - self.rotate
|
||||
|
||||
-- look towards land and jump/move in that direction
|
||||
yaw = set_yaw(self, yaw, 6)
|
||||
do_jump(self)
|
||||
set_velocity(self, self.walk_velocity)
|
||||
else
|
||||
yaw = yaw + random(-0.5, 0.5)
|
||||
end
|
||||
|
||||
if lp.x > s.x then yaw = yaw + pi end
|
||||
|
||||
-- look towards land and move in that direction
|
||||
yaw = set_yaw(self, yaw, 6)
|
||||
set_velocity(self, self.walk_velocity)
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
-- A danger is near but mob is not inside
|
||||
else
|
||||
@ -3218,8 +3254,6 @@ local mob_step = function(self, dtime)
|
||||
|
||||
breed(self)
|
||||
|
||||
follow_flop(self)
|
||||
|
||||
if do_states(self, dtime) then
|
||||
return
|
||||
end
|
||||
@ -3228,6 +3262,18 @@ local mob_step = function(self, dtime)
|
||||
|
||||
runaway_from(self)
|
||||
|
||||
if is_at_water_danger(self) and self.state ~= "attack" then
|
||||
if random(1, 10) <= 6 then
|
||||
set_velocity(self, 0)
|
||||
self.state = "stand"
|
||||
set_animation(self, "stand")
|
||||
yaw = yaw + random(-0.5, 0.5)
|
||||
yaw = set_yaw(self, yaw, 8)
|
||||
end
|
||||
end
|
||||
|
||||
follow_flop(self)
|
||||
|
||||
if is_at_cliff_or_danger(self) then
|
||||
set_velocity(self, 0)
|
||||
self.state = "stand"
|
||||
|
@ -83,7 +83,10 @@ local function lay_down(player, pos, bed_pos, state, skip)
|
||||
end
|
||||
|
||||
-- No sleeping while moving. Slightly different behaviour than in MC.
|
||||
if vector.length(player:get_player_velocity()) > 0.001 then
|
||||
-- FIXME: Velocity threshold should be 0.01 but Minetest 5.3.0
|
||||
-- sometimes reports incorrect Y speed. A velocity threshold
|
||||
-- of 0.125 still seems good enough.
|
||||
if vector.length(player:get_player_velocity()) > 0.125 then
|
||||
minetest.chat_send_player(name, S("You have to stop moving before going to bed!"))
|
||||
return false
|
||||
end
|
||||
@ -115,13 +118,16 @@ local function lay_down(player, pos, bed_pos, state, skip)
|
||||
mcl_beds.player[name] = nil
|
||||
player_in_bed = player_in_bed - 1
|
||||
end
|
||||
mcl_beds.pos[name] = nil
|
||||
mcl_beds.bed_pos[name] = nil
|
||||
if p then
|
||||
player:set_pos(p)
|
||||
end
|
||||
|
||||
-- skip here to prevent sending player specific changes (used for leaving players)
|
||||
if skip then
|
||||
return false
|
||||
end
|
||||
if p then
|
||||
player:set_pos(p)
|
||||
end
|
||||
|
||||
-- physics, eye_offset, etc
|
||||
player:set_eye_offset({x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0})
|
||||
@ -134,8 +140,6 @@ local function lay_down(player, pos, bed_pos, state, skip)
|
||||
player:get_meta():set_string("mcl_beds:sleeping", "false")
|
||||
hud_flags.wielditem = true
|
||||
mcl_player.player_set_animation(player, "stand" , 30)
|
||||
mcl_beds.pos[name] = nil
|
||||
mcl_beds.bed_pos[name] = nil
|
||||
|
||||
-- lay down
|
||||
else
|
||||
@ -198,8 +202,8 @@ local function lay_down(player, pos, bed_pos, state, skip)
|
||||
return true
|
||||
end
|
||||
|
||||
local function update_formspecs(finished)
|
||||
local ges = #minetest.get_connected_players()
|
||||
local function update_formspecs(finished, ges)
|
||||
local ges = ges or #minetest.get_connected_players()
|
||||
local form_n = "size[6,5;true]"
|
||||
local all_in_bed = ges == player_in_bed
|
||||
local night_skip = is_night_skip_enabled()
|
||||
@ -360,8 +364,14 @@ end)
|
||||
minetest.register_on_leaveplayer(function(player)
|
||||
local name = player:get_player_name()
|
||||
lay_down(player, nil, nil, false, true)
|
||||
mcl_beds.player[name] = nil
|
||||
if check_in_beds() then
|
||||
players = minetest.get_connected_players()
|
||||
for n, player in ipairs(players) do
|
||||
if player:get_player_name() == name then
|
||||
players[n] = nil
|
||||
break
|
||||
end
|
||||
end
|
||||
if check_in_beds(players) then
|
||||
minetest.after(5, function()
|
||||
if check_in_beds() then
|
||||
update_formspecs(is_night_skip_enabled())
|
||||
@ -369,7 +379,7 @@ minetest.register_on_leaveplayer(function(player)
|
||||
end
|
||||
end)
|
||||
end
|
||||
update_formspecs(false)
|
||||
update_formspecs(false, #players)
|
||||
end)
|
||||
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
|
@ -4,7 +4,6 @@ local function active_brewing_formspec(fuel_percent, brew_percent)
|
||||
|
||||
return "size[9,8.75]"..
|
||||
"background[-0.19,-0.25;9.5,9.5;mcl_brewing_inventory.png]"..
|
||||
-- "background[-0.19,-0.25;9.5,9.5;mcl_brewing_inventory_active.png]"..
|
||||
"label[4,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Brewing Stand"))).."]"..
|
||||
"label[0,4.0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]"..
|
||||
"list[current_player;main;0,4.5;9,3;9]"..
|
||||
@ -375,7 +374,7 @@ minetest.register_node("mcl_brewing:stand_000", {
|
||||
_doc_items_longdesc = S("The stand allows you to brew potions!"),
|
||||
_doc_items_usagehelp = doc_string,
|
||||
_tt_help = S("Brew Potions"),
|
||||
groups = {pickaxey=1, falling_node=1, brewitem=1, not_in_creative_inventory = 0, not_in_craft_guide = 0},
|
||||
groups = {pickaxey=1, falling_node=1, brewitem=1 },
|
||||
tiles = tiles,
|
||||
drop = "mcl_brewing:stand",
|
||||
paramtype = "light",
|
||||
@ -392,32 +391,16 @@ minetest.register_node("mcl_brewing:stand_000", {
|
||||
{-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base
|
||||
{-3/16, -8/16, 2/16, 3/16, -6/16, 8/16}, -- base
|
||||
|
||||
-- {-7/16, -6/16 ,-7/16 , -6/16, 1/16, -6/16 }, -- bottle 1
|
||||
-- {-6/16, -6/16 ,-6/16 , -5/16, 3/16, -5/16 }, -- bottle 1
|
||||
-- {-5/16, -6/16 ,-5/16 , -4/16, 3/16, -4/16 }, -- bottle 1
|
||||
-- {-4/16, -6/16 ,-4/16 , -3/16, 3/16, -3/16 }, -- bottle 1
|
||||
-- {-3/16, -6/16 ,-3/16 , -2/16, 1/16, -2/16 }, -- bottle 1
|
||||
|
||||
{-5/16, 3/16 ,-5/16 , -4/16, 7/16, -4/16 }, -- line 1
|
||||
{-4/16, 6/16 ,-4/16 , -3/16, 8/16, -3/16 }, -- line 1
|
||||
{-3/16, 7/16 ,-3/16 , -2/16, 8/16, -2/16 }, -- line 1
|
||||
{-2/16, 7/16 ,-2/16 , -1/16, 8/16, -1/16 }, -- line 1
|
||||
|
||||
|
||||
-- {7/16, -6/16 ,-7/16 , 6/16, 1/16, -6/16 }, -- bottle 2
|
||||
-- {6/16, -6/16 ,-6/16 , 5/16, 3/16, -5/16 }, -- bottle 2
|
||||
-- {5/16, -6/16 ,-5/16 , 4/16, 3/16, -4/16 }, -- bottle 2
|
||||
-- {4/16, -6/16 ,-4/16 , 3/16, 3/16, -3/16 }, -- bottle 2
|
||||
-- {3/16, -6/16 ,-3/16 , 2/16, 1/16, -2/16 }, -- bottle 2
|
||||
|
||||
{5/16, 3/16 ,-5/16 ,4/16, 7/16, -4/16 }, -- line 2
|
||||
{4/16, 6/16 ,-4/16 ,3/16, 8/16, -3/16 }, -- line 2
|
||||
{3/16, 7/16 ,-3/16 ,2/16, 8/16, -2/16 }, -- line 2
|
||||
{2/16, 7/16 ,-2/16 ,1/16, 8/16, -1/16 }, -- line 2
|
||||
|
||||
-- {0/16, -6/16 , 2/16 , 1/16, 1/16, 7/16 }, -- bottle 3
|
||||
-- {0/16, 1/16 , 3/16 , 1/16, 3/16, 6/16 }, -- bottle 3
|
||||
|
||||
{0/16, 7/16 , 1/16 , 1/16, 8/16, 3/16 }, -- line 3
|
||||
{0/16, 6/16 , 3/16 , 1/16, 7/16, 5/16 }, -- line 3
|
||||
{0/16, 3/16 , 4/16 , 1/16, 6/16, 5/16 }, -- line 3
|
||||
@ -427,7 +410,6 @@ minetest.register_node("mcl_brewing:stand_000", {
|
||||
_mcl_blast_resistance = 1,
|
||||
_mcl_hardness = 1,
|
||||
on_destruct = on_destruct,
|
||||
-- after_dig_node = after_dig,
|
||||
allow_metadata_inventory_take = allow_take,
|
||||
allow_metadata_inventory_put = allow_put,
|
||||
on_metadata_inventory_put = on_put,
|
||||
@ -458,7 +440,7 @@ minetest.register_node("mcl_brewing:stand_100", {
|
||||
description = S("Brewing Stand"),
|
||||
_doc_items_create_entry = false,
|
||||
_tt_help = S("Brew Potions"),
|
||||
groups = {pickaxey=1, falling_node=1, brewitem=0, not_in_creative_inventory = 1, not_in_craft_guide = 1},
|
||||
groups = {pickaxey=1, falling_node=1, not_in_creative_inventory = 1, not_in_craft_guide = 1},
|
||||
tiles = tiles,
|
||||
drop = "mcl_brewing:stand",
|
||||
paramtype = "light",
|
||||
@ -486,21 +468,11 @@ minetest.register_node("mcl_brewing:stand_100", {
|
||||
{-3/16, 7/16 ,-3/16 , -2/16, 8/16, -2/16 }, -- line 1
|
||||
{-2/16, 7/16 ,-2/16 , -1/16, 8/16, -1/16 }, -- line 1
|
||||
|
||||
|
||||
-- {7/16, -6/16 ,-7/16 , 6/16, 1/16, -6/16 }, -- bottle 2
|
||||
-- {6/16, -6/16 ,-6/16 , 5/16, 3/16, -5/16 }, -- bottle 2
|
||||
-- {5/16, -6/16 ,-5/16 , 4/16, 3/16, -4/16 }, -- bottle 2
|
||||
-- {4/16, -6/16 ,-4/16 , 3/16, 3/16, -3/16 }, -- bottle 2
|
||||
-- {3/16, -6/16 ,-3/16 , 2/16, 1/16, -2/16 }, -- bottle 2
|
||||
|
||||
{5/16, 3/16 ,-5/16 ,4/16, 7/16, -4/16 }, -- line 2
|
||||
{4/16, 6/16 ,-4/16 ,3/16, 8/16, -3/16 }, -- line 2
|
||||
{3/16, 7/16 ,-3/16 ,2/16, 8/16, -2/16 }, -- line 2
|
||||
{2/16, 7/16 ,-2/16 ,1/16, 8/16, -1/16 }, -- line 2
|
||||
|
||||
-- {0/16, -6/16 , 2/16 , 1/16, 1/16, 7/16 }, -- bottle 3
|
||||
-- {0/16, 1/16 , 3/16 , 1/16, 3/16, 6/16 }, -- bottle 3
|
||||
|
||||
{0/16, 7/16 , 1/16 , 1/16, 8/16, 3/16 }, -- line 3
|
||||
{0/16, 6/16 , 3/16 , 1/16, 7/16, 5/16 }, -- line 3
|
||||
{0/16, 3/16 , 4/16 , 1/16, 6/16, 5/16 }, -- line 3
|
||||
@ -510,7 +482,6 @@ minetest.register_node("mcl_brewing:stand_100", {
|
||||
_mcl_blast_resistance = 1,
|
||||
_mcl_hardness = 1,
|
||||
on_destruct = on_destruct,
|
||||
-- after_dig_node = after_dig,
|
||||
allow_metadata_inventory_take = allow_take,
|
||||
allow_metadata_inventory_put = allow_put,
|
||||
on_metadata_inventory_put = on_put,
|
||||
@ -541,7 +512,7 @@ minetest.register_node("mcl_brewing:stand_010", {
|
||||
description = S("Brewing Stand"),
|
||||
_doc_items_create_entry = false,
|
||||
_tt_help = S("Brew Potions"),
|
||||
groups = {pickaxey=1, falling_node=1, brewitem=0, not_in_creative_inventory = 1, not_in_craft_guide = 1},
|
||||
groups = {pickaxey=1, falling_node=1, not_in_creative_inventory = 1, not_in_craft_guide = 1},
|
||||
tiles = tiles,
|
||||
drop = "mcl_brewing:stand",
|
||||
paramtype = "light",
|
||||
@ -558,12 +529,6 @@ minetest.register_node("mcl_brewing:stand_010", {
|
||||
{-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base
|
||||
{-3/16, -8/16, 2/16, 3/16, -6/16, 8/16}, -- base
|
||||
|
||||
-- {-7/16, -6/16 ,-7/16 , -6/16, 1/16, -6/16 }, -- bottle 1
|
||||
-- {-6/16, -6/16 ,-6/16 , -5/16, 3/16, -5/16 }, -- bottle 1
|
||||
-- {-5/16, -6/16 ,-5/16 , -4/16, 3/16, -4/16 }, -- bottle 1
|
||||
-- {-4/16, -6/16 ,-4/16 , -3/16, 3/16, -3/16 }, -- bottle 1
|
||||
-- {-3/16, -6/16 ,-3/16 , -2/16, 1/16, -2/16 }, -- bottle 1
|
||||
|
||||
{-5/16, 3/16 ,-5/16 , -4/16, 7/16, -4/16 }, -- line 1
|
||||
{-4/16, 6/16 ,-4/16 , -3/16, 8/16, -3/16 }, -- line 1
|
||||
{-3/16, 7/16 ,-3/16 , -2/16, 8/16, -2/16 }, -- line 1
|
||||
@ -581,9 +546,6 @@ minetest.register_node("mcl_brewing:stand_010", {
|
||||
{3/16, 7/16 ,-3/16 ,2/16, 8/16, -2/16 }, -- line 2
|
||||
{2/16, 7/16 ,-2/16 ,1/16, 8/16, -1/16 }, -- line 2
|
||||
|
||||
-- {0/16, -6/16 , 2/16 , 1/16, 1/16, 7/16 }, -- bottle 3
|
||||
-- {0/16, 1/16 , 3/16 , 1/16, 3/16, 6/16 }, -- bottle 3
|
||||
|
||||
{0/16, 7/16 , 1/16 , 1/16, 8/16, 3/16 }, -- line 3
|
||||
{0/16, 6/16 , 3/16 , 1/16, 7/16, 5/16 }, -- line 3
|
||||
{0/16, 3/16 , 4/16 , 1/16, 6/16, 5/16 }, -- line 3
|
||||
@ -593,7 +555,6 @@ minetest.register_node("mcl_brewing:stand_010", {
|
||||
_mcl_blast_resistance = 1,
|
||||
_mcl_hardness = 1,
|
||||
on_destruct = on_destruct,
|
||||
-- after_dig_node = after_dig,
|
||||
allow_metadata_inventory_take = allow_take,
|
||||
allow_metadata_inventory_put = allow_put,
|
||||
on_metadata_inventory_put = on_put,
|
||||
@ -624,7 +585,7 @@ minetest.register_node("mcl_brewing:stand_001", {
|
||||
description = S("Brewing Stand"),
|
||||
_doc_items_create_entry = false,
|
||||
_tt_help = S("Brew Potions"),
|
||||
groups = {pickaxey=1, falling_node=1, brewitem=0, not_in_creative_inventory = 1, not_in_craft_guide = 1},
|
||||
groups = {pickaxey=1, falling_node=1, not_in_creative_inventory = 1, not_in_craft_guide = 1},
|
||||
tiles = tiles,
|
||||
drop = "mcl_brewing:stand",
|
||||
paramtype = "light",
|
||||
@ -641,24 +602,11 @@ minetest.register_node("mcl_brewing:stand_001", {
|
||||
{-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base
|
||||
{-3/16, -8/16, 2/16, 3/16, -6/16, 8/16}, -- base
|
||||
|
||||
-- {-7/16, -6/16 ,-7/16 , -6/16, 1/16, -6/16 }, -- bottle 1
|
||||
-- {-6/16, -6/16 ,-6/16 , -5/16, 3/16, -5/16 }, -- bottle 1
|
||||
-- {-5/16, -6/16 ,-5/16 , -4/16, 3/16, -4/16 }, -- bottle 1
|
||||
-- {-4/16, -6/16 ,-4/16 , -3/16, 3/16, -3/16 }, -- bottle 1
|
||||
-- {-3/16, -6/16 ,-3/16 , -2/16, 1/16, -2/16 }, -- bottle 1
|
||||
|
||||
{-5/16, 3/16 ,-5/16 , -4/16, 7/16, -4/16 }, -- line 1
|
||||
{-4/16, 6/16 ,-4/16 , -3/16, 8/16, -3/16 }, -- line 1
|
||||
{-3/16, 7/16 ,-3/16 , -2/16, 8/16, -2/16 }, -- line 1
|
||||
{-2/16, 7/16 ,-2/16 , -1/16, 8/16, -1/16 }, -- line 1
|
||||
|
||||
|
||||
-- {7/16, -6/16 ,-7/16 , 6/16, 1/16, -6/16 }, -- bottle 2
|
||||
-- {6/16, -6/16 ,-6/16 , 5/16, 3/16, -5/16 }, -- bottle 2
|
||||
-- {5/16, -6/16 ,-5/16 , 4/16, 3/16, -4/16 }, -- bottle 2
|
||||
-- {4/16, -6/16 ,-4/16 , 3/16, 3/16, -3/16 }, -- bottle 2
|
||||
-- {3/16, -6/16 ,-3/16 , 2/16, 1/16, -2/16 }, -- bottle 2
|
||||
|
||||
{5/16, 3/16 ,-5/16 ,4/16, 7/16, -4/16 }, -- line 2
|
||||
{4/16, 6/16 ,-4/16 ,3/16, 8/16, -3/16 }, -- line 2
|
||||
{3/16, 7/16 ,-3/16 ,2/16, 8/16, -2/16 }, -- line 2
|
||||
@ -676,7 +624,6 @@ minetest.register_node("mcl_brewing:stand_001", {
|
||||
_mcl_blast_resistance = 1,
|
||||
_mcl_hardness = 1,
|
||||
on_destruct = on_destruct,
|
||||
-- after_dig_node = after_dig,
|
||||
allow_metadata_inventory_take = allow_take,
|
||||
allow_metadata_inventory_put = allow_put,
|
||||
on_metadata_inventory_put = on_put,
|
||||
@ -707,7 +654,7 @@ minetest.register_node("mcl_brewing:stand_110", {
|
||||
description = S("Brewing Stand"),
|
||||
_doc_items_create_entry = false,
|
||||
_tt_help = S("Brew Potions"),
|
||||
groups = {pickaxey=1, falling_node=1, brewitem=0, not_in_creative_inventory = 1, not_in_craft_guide = 1},
|
||||
groups = {pickaxey=1, falling_node=1, not_in_creative_inventory = 1, not_in_craft_guide = 1},
|
||||
tiles = tiles,
|
||||
drop = "mcl_brewing:stand",
|
||||
paramtype = "light",
|
||||
@ -747,9 +694,6 @@ minetest.register_node("mcl_brewing:stand_110", {
|
||||
{3/16, 7/16 ,-3/16 ,2/16, 8/16, -2/16 }, -- line 2
|
||||
{2/16, 7/16 ,-2/16 ,1/16, 8/16, -1/16 }, -- line 2
|
||||
|
||||
-- {0/16, -6/16 , 2/16 , 1/16, 1/16, 7/16 }, -- bottle 3
|
||||
-- {0/16, 1/16 , 3/16 , 1/16, 3/16, 6/16 }, -- bottle 3
|
||||
|
||||
{0/16, 7/16 , 1/16 , 1/16, 8/16, 3/16 }, -- line 3
|
||||
{0/16, 6/16 , 3/16 , 1/16, 7/16, 5/16 }, -- line 3
|
||||
{0/16, 3/16 , 4/16 , 1/16, 6/16, 5/16 }, -- line 3
|
||||
@ -759,7 +703,6 @@ minetest.register_node("mcl_brewing:stand_110", {
|
||||
_mcl_blast_resistance = 1,
|
||||
_mcl_hardness = 1,
|
||||
on_destruct = on_destruct,
|
||||
-- after_dig_node = after_dig,
|
||||
allow_metadata_inventory_take = allow_take,
|
||||
allow_metadata_inventory_put = allow_put,
|
||||
on_metadata_inventory_put = on_put,
|
||||
@ -790,7 +733,7 @@ minetest.register_node("mcl_brewing:stand_101", {
|
||||
description = S("Brewing Stand"),
|
||||
_doc_items_create_entry = false,
|
||||
_tt_help = S("Brew Potions"),
|
||||
groups = {pickaxey=1, falling_node=1, brewitem=0, not_in_creative_inventory = 1, not_in_craft_guide = 1},
|
||||
groups = {pickaxey=1, falling_node=1, not_in_creative_inventory = 1, not_in_craft_guide = 1},
|
||||
tiles = tiles,
|
||||
drop = "mcl_brewing:stand",
|
||||
paramtype = "light",
|
||||
@ -818,13 +761,6 @@ minetest.register_node("mcl_brewing:stand_101", {
|
||||
{-3/16, 7/16 ,-3/16 , -2/16, 8/16, -2/16 }, -- line 1
|
||||
{-2/16, 7/16 ,-2/16 , -1/16, 8/16, -1/16 }, -- line 1
|
||||
|
||||
|
||||
-- {7/16, -6/16 ,-7/16 , 6/16, 1/16, -6/16 }, -- bottle 2
|
||||
-- {6/16, -6/16 ,-6/16 , 5/16, 3/16, -5/16 }, -- bottle 2
|
||||
-- {5/16, -6/16 ,-5/16 , 4/16, 3/16, -4/16 }, -- bottle 2
|
||||
-- {4/16, -6/16 ,-4/16 , 3/16, 3/16, -3/16 }, -- bottle 2
|
||||
-- {3/16, -6/16 ,-3/16 , 2/16, 1/16, -2/16 }, -- bottle 2
|
||||
|
||||
{5/16, 3/16 ,-5/16 ,4/16, 7/16, -4/16 }, -- line 2
|
||||
{4/16, 6/16 ,-4/16 ,3/16, 8/16, -3/16 }, -- line 2
|
||||
{3/16, 7/16 ,-3/16 ,2/16, 8/16, -2/16 }, -- line 2
|
||||
@ -842,7 +778,6 @@ minetest.register_node("mcl_brewing:stand_101", {
|
||||
_mcl_blast_resistance = 1,
|
||||
_mcl_hardness = 1,
|
||||
on_destruct = on_destruct,
|
||||
-- after_dig_node = after_dig,
|
||||
allow_metadata_inventory_take = allow_take,
|
||||
allow_metadata_inventory_put = allow_put,
|
||||
on_metadata_inventory_put = on_put,
|
||||
@ -873,7 +808,7 @@ minetest.register_node("mcl_brewing:stand_011", {
|
||||
description = S("Brewing Stand"),
|
||||
_doc_items_create_entry = false,
|
||||
_tt_help = S("Brew Potions"),
|
||||
groups = {pickaxey=1, falling_node=1, brewitem=0, not_in_creative_inventory = 1, not_in_craft_guide = 1},
|
||||
groups = {pickaxey=1, falling_node=1, not_in_creative_inventory = 1, not_in_craft_guide = 1},
|
||||
tiles = tiles,
|
||||
drop = "mcl_brewing:stand",
|
||||
paramtype = "light",
|
||||
@ -890,18 +825,11 @@ minetest.register_node("mcl_brewing:stand_011", {
|
||||
{-8/16, -8/16, -8/16, -2/16, -6/16, -2/16}, -- base
|
||||
{-3/16, -8/16, 2/16, 3/16, -6/16, 8/16}, -- base
|
||||
|
||||
-- {-7/16, -6/16 ,-7/16 , -6/16, 1/16, -6/16 }, -- bottle 1
|
||||
-- {-6/16, -6/16 ,-6/16 , -5/16, 3/16, -5/16 }, -- bottle 1
|
||||
-- {-5/16, -6/16 ,-5/16 , -4/16, 3/16, -4/16 }, -- bottle 1
|
||||
-- {-4/16, -6/16 ,-4/16 , -3/16, 3/16, -3/16 }, -- bottle 1
|
||||
-- {-3/16, -6/16 ,-3/16 , -2/16, 1/16, -2/16 }, -- bottle 1
|
||||
|
||||
{-5/16, 3/16 ,-5/16 , -4/16, 7/16, -4/16 }, -- line 1
|
||||
{-4/16, 6/16 ,-4/16 , -3/16, 8/16, -3/16 }, -- line 1
|
||||
{-3/16, 7/16 ,-3/16 , -2/16, 8/16, -2/16 }, -- line 1
|
||||
{-2/16, 7/16 ,-2/16 , -1/16, 8/16, -1/16 }, -- line 1
|
||||
|
||||
|
||||
{7/16, -6/16 ,-7/16 , 6/16, 1/16, -6/16 }, -- bottle 2
|
||||
{6/16, -6/16 ,-6/16 , 5/16, 3/16, -5/16 }, -- bottle 2
|
||||
{5/16, -6/16 ,-5/16 , 4/16, 3/16, -4/16 }, -- bottle 2
|
||||
@ -956,7 +884,7 @@ minetest.register_node("mcl_brewing:stand_111", {
|
||||
description = S("Brewing Stand"),
|
||||
_doc_items_create_entry = false,
|
||||
_tt_help = S("Brew Potions"),
|
||||
groups = {pickaxey=1, falling_node=1, brewitem=0, not_in_creative_inventory = 1, not_in_craft_guide = 1},
|
||||
groups = {pickaxey=1, falling_node=1, not_in_creative_inventory = 1, not_in_craft_guide = 1},
|
||||
tiles = tiles,
|
||||
drop = "mcl_brewing:stand",
|
||||
paramtype = "light",
|
||||
@ -1008,7 +936,6 @@ minetest.register_node("mcl_brewing:stand_111", {
|
||||
_mcl_blast_resistance = 1,
|
||||
_mcl_hardness = 1,
|
||||
on_destruct = on_destruct,
|
||||
-- after_dig_node = after_dig,
|
||||
allow_metadata_inventory_take = allow_take,
|
||||
allow_metadata_inventory_put = allow_put,
|
||||
on_metadata_inventory_put = on_put,
|
||||
|
@ -277,8 +277,9 @@ minetest.register_craftitem("mcl_potions:river_water", {
|
||||
|
||||
})
|
||||
|
||||
mcl_potions.register_splash("water", S("Splash Potion"), "#0022FF", {tt="No effect", potion_fun=function() end})
|
||||
mcl_potions.register_lingering("water", S("Lingering Potion"), "#0022FF", {tt="No effect", potion_fun=function() end})
|
||||
-- TODO: Extinguish fire, damage mobs
|
||||
mcl_potions.register_splash("water", S("Splash Water Bottle"), "#0022FF", {tt="No effect", potion_fun=function() end})
|
||||
mcl_potions.register_lingering("water", S("Lingering Water Bottle"), "#0022FF", {tt="No effect", potion_fun=function() end})
|
||||
|
||||
minetest.register_craftitem("mcl_potions:speckled_melon", {
|
||||
description = S("Glistering Melon"),
|
||||
|
@ -69,9 +69,18 @@ end)
|
||||
function mcl_potions.register_lingering(name, descr, color, def)
|
||||
|
||||
local id = "mcl_potions:"..name.."_lingering"
|
||||
local longdesc = def.longdesc
|
||||
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.")
|
||||
if def.longdesc then
|
||||
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)
|
||||
|
@ -9,6 +9,7 @@ local potion_image = function(colorstring, opacity)
|
||||
end
|
||||
|
||||
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 function time_string(dur)
|
||||
if not dur then return nil end
|
||||
@ -66,7 +67,7 @@ local function register_potion(def)
|
||||
if effect and def.is_dur then
|
||||
_tt = perc_string(effect).." | "..time_string(dur)
|
||||
if def.name == "poison" or def.name == "regeneration" then
|
||||
_tt = "1/2 Heart/"..effect.."sec | "..time_string(dur)
|
||||
_tt = "1/2 heart/"..effect.."s | "..time_string(dur)
|
||||
end
|
||||
elseif def.name == "healing" or def.name == "harming" then
|
||||
_tt = ((effect / 2) - ((effect / 2)% 0.5)).." Hearts"
|
||||
@ -106,15 +107,32 @@ local function register_potion(def)
|
||||
return function() end
|
||||
end
|
||||
|
||||
local desc
|
||||
if not def.no_potion then
|
||||
desc = S("@1 Potion", def.description)
|
||||
else
|
||||
desc = def.description
|
||||
end
|
||||
local potion_longdesc = def._longdesc
|
||||
if not def.no_effect then
|
||||
potion_longdesc = potion_intro .. "\n" .. def._longdesc
|
||||
end
|
||||
local potion_usagehelp
|
||||
local basic_potion_tt
|
||||
if def.name ~= "dragon_breath" then
|
||||
potion_usagehelp = how_to_drink
|
||||
basic_potion_tt = get_tt(def._tt, def.effect, dur)
|
||||
end
|
||||
|
||||
minetest.register_craftitem("mcl_potions:"..def.name, {
|
||||
description = S(def.description),
|
||||
_tt_help = get_tt(def._tt, def.effect, dur),
|
||||
_doc_items_longdesc = def._longdesc,
|
||||
_doc_items_usagehelp = how_to_drink,
|
||||
description = desc,
|
||||
_tt_help = basic_potion_tt,
|
||||
_doc_items_longdesc = potion_longdesc,
|
||||
_doc_items_usagehelp = potion_usagehelp,
|
||||
stack_max = def.stack_max or 1,
|
||||
inventory_image = def.image or potion_image(def.color),
|
||||
wield_image = def.image or potion_image(def.color),
|
||||
groups = def.groups or {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0},
|
||||
groups = def.groups or {brewitem=1, food=3, can_eat_when_full=1 },
|
||||
on_place = on_use,
|
||||
on_secondary_use = on_use,
|
||||
})
|
||||
@ -125,36 +143,46 @@ local function register_potion(def)
|
||||
|
||||
local splash_def = {
|
||||
tt = get_tt(def._tt, def.effect, splash_dur),
|
||||
longdesc = def._longdesc,
|
||||
potion_fun = get_splash_fun(def.effect, splash_dur),
|
||||
no_effect = def.no_effect,
|
||||
}
|
||||
|
||||
local ling_def
|
||||
if def.name == "healing" or def.name == "harming" then
|
||||
ling_def = {
|
||||
tt = get_tt(def._tt, def.effect*mcl_potions.LINGERING_FACTOR, ling_dur),
|
||||
longdesc = def._longdesc,
|
||||
potion_fun = get_lingering_fun(def.effect*mcl_potions.LINGERING_FACTOR, ling_dur),
|
||||
no_effect = def.no_effect,
|
||||
}
|
||||
else
|
||||
ling_def = {
|
||||
tt = get_tt(def._tt, def.effect, ling_dur),
|
||||
longdesc = def._longdesc,
|
||||
potion_fun = get_lingering_fun(def.effect, ling_dur),
|
||||
no_effect = def.no_effect,
|
||||
}
|
||||
end
|
||||
|
||||
local arrow_def = {
|
||||
tt = get_tt(def._tt, def.effect, dur/8.),
|
||||
longdesc = def._longdesc,
|
||||
potion_fun = get_arrow_fun(def.effect, dur/8.),
|
||||
no_effect = def.no_effect,
|
||||
}
|
||||
|
||||
if def.color and def.name ~= "dragon_breath" then -- dont' splash dragon's breath...
|
||||
mcl_potions.register_splash(def.name, S("Splash "..def.description), def.color, splash_def)
|
||||
mcl_potions.register_lingering(def.name, S("Lingering "..def.description), def.color, ling_def)
|
||||
mcl_potions.register_arrow(def.name, S("Arrow of "..def.description), def.color, arrow_def)
|
||||
if def.color and not def.no_throwable then
|
||||
mcl_potions.register_splash(def.name, S("Splash @1 Potion", def.description), def.color, splash_def)
|
||||
mcl_potions.register_lingering(def.name, S("Lingering @1 Potion", def.description), def.color, ling_def)
|
||||
if not def.no_arrow then
|
||||
mcl_potions.register_arrow(def.name, S("Arrow of @1", def.description), def.color, arrow_def)
|
||||
end
|
||||
end
|
||||
|
||||
if def.is_II then
|
||||
|
||||
local desc_mod = " II"
|
||||
local desc_mod = S(" II")
|
||||
|
||||
local effect_II
|
||||
if def.name == "healing" or def.name == "harming" then
|
||||
@ -171,7 +199,7 @@ local function register_potion(def)
|
||||
if def.name == "slowness" then
|
||||
dur_2 = 20
|
||||
effect_II = 0.40
|
||||
desc_mod = " IV"
|
||||
desc_mod = S(" IV")
|
||||
end
|
||||
|
||||
local on_use = function (itemstack, user, pointed_thing)
|
||||
@ -182,14 +210,14 @@ local function register_potion(def)
|
||||
end
|
||||
|
||||
minetest.register_craftitem("mcl_potions:"..def.name.."_2", {
|
||||
description = S(def.description..desc_mod),
|
||||
description = S("@1 Potion@2", def.description, desc_mod),
|
||||
_tt_help = get_tt(def._tt_2, effect_II, dur_2),
|
||||
_doc_items_longdesc = def._longdesc,
|
||||
_doc_items_usagehelp = how_to_drink,
|
||||
_doc_items_longdesc = potion_longdesc,
|
||||
_doc_items_usagehelp = potion_usagehelp,
|
||||
stack_max = def.stack_max or 1,
|
||||
inventory_image = def.image or potion_image(def.color),
|
||||
wield_image = def.image or potion_image(def.color),
|
||||
groups = def.groups or {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0},
|
||||
groups = def.groups or {brewitem=1, food=3, can_eat_when_full=1},
|
||||
on_place = on_use,
|
||||
on_secondary_use = on_use,
|
||||
})
|
||||
@ -202,12 +230,16 @@ local function register_potion(def)
|
||||
if def.name == "healing" then
|
||||
splash_def_2 = {
|
||||
tt = get_tt(def._tt_2, 7, splash_dur_2),
|
||||
longdesc = def._longdesc,
|
||||
potion_fun = get_splash_fun(7, splash_dur_2),
|
||||
no_effect = def.no_effect,
|
||||
}
|
||||
else
|
||||
splash_def_2 = {
|
||||
tt = get_tt(def._tt_2, effect_II, splash_dur_2),
|
||||
longdesc = def._longdesc,
|
||||
potion_fun = get_splash_fun(effect_II, splash_dur_2),
|
||||
no_effect = def.no_effect,
|
||||
}
|
||||
end
|
||||
|
||||
@ -216,24 +248,32 @@ local function register_potion(def)
|
||||
if def.name == "healing" or def.name == "harming" then
|
||||
ling_def_2 = {
|
||||
tt = get_tt(def._tt_2, effect_II*mcl_potions.LINGERING_FACTOR, ling_dur_2),
|
||||
longdesc = def._longdesc,
|
||||
potion_fun = get_lingering_fun(effect_II*mcl_potions.LINGERING_FACTOR, ling_dur_2),
|
||||
no_effect = def.no_effect,
|
||||
}
|
||||
else
|
||||
ling_def_2 = {
|
||||
tt = get_tt(def._tt_2, effect_II, ling_dur_2),
|
||||
longdesc = def._longdesc,
|
||||
potion_fun = get_lingering_fun(effect_II, ling_dur_2),
|
||||
no_effect = def.no_effect,
|
||||
}
|
||||
end
|
||||
|
||||
local arrow_def_2 = {
|
||||
tt = get_tt(def._tt_2, effect_II, dur_2/8.),
|
||||
longdesc = def._longdesc,
|
||||
potion_fun = get_arrow_fun(effect_II, dur_2/8.),
|
||||
no_effect = def.no_effect,
|
||||
}
|
||||
|
||||
if def.color then
|
||||
mcl_potions.register_splash(def.name.."_2", S("Splash "..def.description..desc_mod), def.color, splash_def_2)
|
||||
mcl_potions.register_lingering(def.name.."_2", S("Lingering "..def.description..desc_mod), def.color, ling_def_2)
|
||||
mcl_potions.register_arrow(def.name.."_2", S("Arrow of "..def.description..desc_mod), def.color, arrow_def_2)
|
||||
if def.color and not def.no_throwable then
|
||||
mcl_potions.register_splash(def.name.."_2", S("Splash @1@2 Potion", def.description, desc_mod), def.color, splash_def_2)
|
||||
mcl_potions.register_lingering(def.name.."_2", S("Lingering @1@2 Potion", def.description, desc_mod), def.color, ling_def_2)
|
||||
if not def.no_arrow then
|
||||
mcl_potions.register_arrow(def.name.."_2", S("Arrow of @1@2", def.description, desc_mod), def.color, arrow_def_2)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
@ -253,14 +293,14 @@ local function register_potion(def)
|
||||
end
|
||||
|
||||
minetest.register_craftitem("mcl_potions:"..def.name.."_plus", {
|
||||
description = S(def.description.." +"),
|
||||
description = S("@1 + Potion", def.description),
|
||||
_tt_help = get_tt(def._tt_plus, def.effect, dur_pl),
|
||||
_doc_items_longdesc = def._longdesc,
|
||||
_doc_items_usagehelp = how_to_drink,
|
||||
_doc_items_longdesc = potion_longdesc,
|
||||
_doc_items_usagehelp = potion_usagehelp,
|
||||
stack_max = 1,
|
||||
inventory_image = def.image or potion_image(def.color),
|
||||
wield_image = def.image or potion_image(def.color),
|
||||
groups = def.groups or {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0},
|
||||
groups = def.groups or {brewitem=1, food=3, can_eat_when_full=1},
|
||||
on_place = on_use,
|
||||
on_secondary_use = on_use,
|
||||
})
|
||||
@ -271,20 +311,28 @@ local function register_potion(def)
|
||||
|
||||
local splash_def_pl = {
|
||||
tt = get_tt(def._tt_plus, def.effect, splash_dur_pl),
|
||||
longdesc = def._longdesc,
|
||||
potion_fun = get_splash_fun(def.effect, splash_dur_pl),
|
||||
no_effect = def.no_effect,
|
||||
}
|
||||
local ling_def_pl = {
|
||||
tt = get_tt(def._tt_plus, def.effect, ling_dur_pl),
|
||||
longdesc = def._longdesc,
|
||||
potion_fun = get_lingering_fun(def.effect, ling_dur_pl),
|
||||
no_effect = def.no_effect,
|
||||
}
|
||||
local arrow_def_pl = {
|
||||
tt = get_tt(def._tt_pl, def.effect, dur_pl/8.),
|
||||
longdesc = def._longdesc,
|
||||
potion_fun = get_arrow_fun(def.effect, dur_pl/8.),
|
||||
no_effect = def.no_effect,
|
||||
}
|
||||
if def.color then
|
||||
mcl_potions.register_splash(def.name.."_plus", S("Splash "..def.description.." +"), def.color, splash_def_pl)
|
||||
mcl_potions.register_lingering(def.name.."_plus", S("Lingering "..def.description.." +"), def.color, ling_def_pl)
|
||||
mcl_potions.register_arrow(def.name.."_plus", S("Arrow of"..def.description.." +"), def.color, arrow_def_pl)
|
||||
if def.color and not def.no_throwable then
|
||||
mcl_potions.register_splash(def.name.."_plus", S("Splash @1 + Potion", def.description), def.color, splash_def_pl)
|
||||
mcl_potions.register_lingering(def.name.."_plus", S("Lingering @1 + Potion", def.description), def.color, ling_def_pl)
|
||||
if not def.no_arrow then
|
||||
mcl_potions.register_arrow(def.name.."_plus", S("Arrow of @1 +", def.description), def.color, arrow_def_pl)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
@ -309,26 +357,32 @@ end
|
||||
|
||||
local awkward_def = {
|
||||
name = "awkward",
|
||||
description = "Awkward Potion",
|
||||
description = S("Awkward"),
|
||||
no_arrow = true,
|
||||
no_effect = true,
|
||||
_tt = S("No effect"),
|
||||
_longdesc = S("Has an awkward taste and is used for brewing potions."),
|
||||
color = "#0000FF",
|
||||
groups = {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0},
|
||||
groups = {brewitem=1, food=3, can_eat_when_full=1},
|
||||
on_use = minetest.item_eat(0, "mcl_potions:glass_bottle"),
|
||||
}
|
||||
|
||||
local mundane_def = {
|
||||
name = "mundane",
|
||||
description = "Mundane Potion",
|
||||
description = S("Mundane"),
|
||||
no_arrow = true,
|
||||
no_effect = true,
|
||||
_tt = S("No effect"),
|
||||
longdesc = S("Has a terrible taste and is not useful for brewing potions."),
|
||||
_longdesc = S("Has a terrible taste and is not useful for brewing potions."),
|
||||
color = "#0000FF",
|
||||
on_use = minetest.item_eat(0, "mcl_potions:glass_bottle"),
|
||||
}
|
||||
|
||||
local thick_def = {
|
||||
name = "thick",
|
||||
description = "Thick Potion",
|
||||
description = S("Thick"),
|
||||
no_arrow = true,
|
||||
no_effect = true,
|
||||
_tt = S("No effect"),
|
||||
_longdesc = S("Has a bitter taste and is not useful for brewing potions."),
|
||||
color = "#0000FF",
|
||||
@ -337,21 +391,24 @@ local thick_def = {
|
||||
|
||||
local dragon_breath_def = {
|
||||
name = "dragon_breath",
|
||||
description = "Dragon's Breath",
|
||||
_tt = S("No effect"),
|
||||
_longdesc = S("Combine with Splash potions to create a Lingering effect"),
|
||||
description = S("Dragon's Breath"),
|
||||
no_arrow = true,
|
||||
no_potion = true,
|
||||
no_throwable = true,
|
||||
no_effect = true,
|
||||
_longdesc = S("This item is used in brewing and can be combined with splash potions to create lingering potions."),
|
||||
color = "#BF4567",
|
||||
groups = { brewitem = 1, not_in_creative_inventory = 0 },
|
||||
groups = { brewitem = 1 },
|
||||
on_use = nil,
|
||||
stack_max = 64,
|
||||
}
|
||||
|
||||
local healing_def = {
|
||||
name = "healing",
|
||||
description = "Healing Potion",
|
||||
_tt = S("+2 Hearts"),
|
||||
_tt_2 = S("+4 Hearts"),
|
||||
_longdesc = S("Drink to heal yourself"),
|
||||
description = S("Healing"),
|
||||
_tt = S("+2 hearts"),
|
||||
_tt_2 = S("+4 hearts"),
|
||||
_longdesc = S("Instantly heals."),
|
||||
color = "#CC0000",
|
||||
effect = 4,
|
||||
on_use = mcl_potions.healing_func,
|
||||
@ -361,10 +418,10 @@ local healing_def = {
|
||||
|
||||
local harming_def = {
|
||||
name = "harming",
|
||||
description = "Harming Potion",
|
||||
_tt = S("-3 Hearts"),
|
||||
_tt_II = S("-6 Hearts"),
|
||||
_longdesc = S("Drink to heal yourself"),
|
||||
description = S("Harming"),
|
||||
_tt = S("-3 hearts"),
|
||||
_tt_II = S("-6 hearts"),
|
||||
_longdesc = S("Instantly deals damage."),
|
||||
color = "#660099",
|
||||
effect = -6,
|
||||
on_use = mcl_potions.healing_func,
|
||||
@ -374,9 +431,9 @@ local harming_def = {
|
||||
|
||||
local night_vision_def = {
|
||||
name = "night_vision",
|
||||
description = "Night Vision Potion",
|
||||
description = S("Night Vision"),
|
||||
_tt = nil,
|
||||
_longdesc = S("Drink to see in the dark."),
|
||||
_longdesc = S("Grants the ability to see in darkness."),
|
||||
color = "#1010AA",
|
||||
effect = nil,
|
||||
is_dur = true,
|
||||
@ -386,9 +443,9 @@ local night_vision_def = {
|
||||
|
||||
local swiftness_def = {
|
||||
name = "swiftness",
|
||||
description = "Swiftness Potion",
|
||||
description = S("Swiftness"),
|
||||
_tt = nil,
|
||||
_longdesc = S("Drink to increase your speed."),
|
||||
_longdesc = S("Increases walking speed."),
|
||||
color = "#009999",
|
||||
effect = 1.2,
|
||||
is_dur = true,
|
||||
@ -399,9 +456,9 @@ local swiftness_def = {
|
||||
|
||||
local slowness_def = {
|
||||
name = "slowness",
|
||||
description = "Slowness Potion",
|
||||
description = S("Slowness"),
|
||||
_tt = nil,
|
||||
_longdesc = S("Drink to become sluggish"),
|
||||
_longdesc = S("Decreases walking speed."),
|
||||
color = "#000080",
|
||||
effect = 0.85,
|
||||
is_dur = true,
|
||||
@ -413,9 +470,9 @@ local slowness_def = {
|
||||
|
||||
local leaping_def = {
|
||||
name = "leaping",
|
||||
description = "Leaping Potion",
|
||||
description = S("Leaping"),
|
||||
_tt = nil,
|
||||
_longdesc = S("Drink to leap tall buildings in a single bound!"),
|
||||
_longdesc = S("Increases jump strength."),
|
||||
color = "#00CC33",
|
||||
effect = 1.15,
|
||||
is_dur = true,
|
||||
@ -426,9 +483,9 @@ local leaping_def = {
|
||||
|
||||
local poison_def = {
|
||||
name = "poison",
|
||||
description = "Poison Potion",
|
||||
description = S("Poison"),
|
||||
_tt = nil,
|
||||
_longdesc = S("Poison mobs or players with this dangerous potion."),
|
||||
_longdesc = S("Applies the poison effect which deals damage at a regular interval."),
|
||||
color = "#447755",
|
||||
effect = 2.5,
|
||||
is_dur = true,
|
||||
@ -440,9 +497,9 @@ local poison_def = {
|
||||
|
||||
local regeneration_def = {
|
||||
name = "regeneration",
|
||||
description = "Regeneration Potion",
|
||||
description = S("Regeneration"),
|
||||
_tt = nil,
|
||||
_longdesc = S("Regenerate mobs or players with this healing potion over time."),
|
||||
_longdesc = S("Regenerates health over time."),
|
||||
color = "#B52CC2",
|
||||
effect = 2.5,
|
||||
is_dur = true,
|
||||
@ -453,9 +510,9 @@ local regeneration_def = {
|
||||
|
||||
local invisibility_def = {
|
||||
name = "invisibility",
|
||||
description = "Invisibility Potion",
|
||||
description = S("Invisibility"),
|
||||
_tt = nil,
|
||||
_longdesc = S("Drink and become invisibile to mobs and players."),
|
||||
_longdesc = S("Grants invisibility."),
|
||||
color = "#B0B0B0",
|
||||
is_dur = true,
|
||||
on_use = mcl_potions.invisiblility_func,
|
||||
@ -464,9 +521,9 @@ local invisibility_def = {
|
||||
|
||||
local water_breathing_def = {
|
||||
name = "water_breathing",
|
||||
description = "Water Breathing Potion",
|
||||
description = S("Water Breathing"),
|
||||
_tt = nil,
|
||||
_longdesc = S("Drink and breath underwater."),
|
||||
_longdesc = S("Grants limitless breath underwater."),
|
||||
color = "#0000AA",
|
||||
is_dur = true,
|
||||
on_use = mcl_potions.water_breathing_func,
|
||||
@ -475,9 +532,9 @@ local water_breathing_def = {
|
||||
|
||||
local fire_resistance_def = {
|
||||
name = "fire_resistance",
|
||||
description = "Fire Resistance Potion",
|
||||
description = S("Fire Resistance"),
|
||||
_tt = nil,
|
||||
_longdesc = S("Drink and resist fire damage."),
|
||||
_longdesc = S("Grants immunity to damage from heat sources like fire."),
|
||||
color = "#D0A040",
|
||||
is_dur = true,
|
||||
on_use = mcl_potions.fire_resistance_func,
|
||||
@ -499,12 +556,12 @@ end
|
||||
|
||||
|
||||
-- minetest.register_craftitem("mcl_potions:weakness", {
|
||||
-- description = S("Weakness Potion"),
|
||||
-- description = S("Weakness"),
|
||||
-- _tt_help = S("-4 HP damage | 1:30"),
|
||||
-- _doc_items_longdesc = brewhelp,
|
||||
-- wield_image = potion_image("#6600AA"),
|
||||
-- inventory_image = potion_image("#6600AA"),
|
||||
-- groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 },
|
||||
-- groups = { brewitem=1, food=3, can_eat_when_full=1 },
|
||||
-- stack_max = 1,
|
||||
--
|
||||
-- on_place = function(itemstack, user, pointed_thing)
|
||||
@ -523,12 +580,12 @@ end
|
||||
-- })
|
||||
--
|
||||
-- minetest.register_craftitem("mcl_potions:weakness_plus", {
|
||||
-- description = S("Weakness Potion +"),
|
||||
-- description = S("Weakness +"),
|
||||
-- _tt_help = S("-4 HP damage | 4:00"),
|
||||
-- _doc_items_longdesc = brewhelp,
|
||||
-- wield_image = potion_image("#7700BB"),
|
||||
-- inventory_image = potion_image("#7700BB"),
|
||||
-- groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 },
|
||||
-- groups = { brewitem=1, food=3, can_eat_when_full=1 },
|
||||
-- stack_max = 1,
|
||||
--
|
||||
-- on_place = function(itemstack, user, pointed_thing)
|
||||
@ -547,12 +604,12 @@ end
|
||||
-- })
|
||||
--
|
||||
-- minetest.register_craftitem("mcl_potions:strength", {
|
||||
-- description = S("Strength Potion"),
|
||||
-- description = S("Strength"),
|
||||
-- _tt_help = S("+3 HP damage | 3:00"),
|
||||
-- _doc_items_longdesc = brewhelp,
|
||||
-- wield_image = potion_image("#D444D4"),
|
||||
-- inventory_image = potion_image("#D444D4"),
|
||||
-- groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 },
|
||||
-- groups = { brewitem=1, food=3, can_eat_when_full=1 },
|
||||
-- stack_max = 1,
|
||||
--
|
||||
-- on_place = function(itemstack, user, pointed_thing)
|
||||
@ -571,12 +628,12 @@ end
|
||||
-- })
|
||||
--
|
||||
-- minetest.register_craftitem("mcl_potions:strength_2", {
|
||||
-- description = S("Strength Potion II"),
|
||||
-- description = S("Strength II"),
|
||||
-- _tt_help = S("+6 HP damage | 1:30"),
|
||||
-- _doc_items_longdesc = brewhelp,
|
||||
-- wield_image = potion_image("#D444E4"),
|
||||
-- inventory_image = potion_image("#D444E4"),
|
||||
-- groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 },
|
||||
-- groups = { brewitem=1, food=3, can_eat_when_full=1 },
|
||||
-- stack_max = 1,
|
||||
--
|
||||
-- on_place = function(itemstack, user, pointed_thing)
|
||||
@ -595,12 +652,12 @@ end
|
||||
-- })
|
||||
--
|
||||
-- minetest.register_craftitem("mcl_potions:strength_plus", {
|
||||
-- description = S("Strength Potion +"),
|
||||
-- description = S("Strength +"),
|
||||
-- _tt_help = S("+3 HP damage | 8:00"),
|
||||
-- _doc_items_longdesc = brewhelp,
|
||||
-- wield_image = potion_image("#D444F4"),
|
||||
-- inventory_image = potion_image("#D444F4"),
|
||||
-- groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 },
|
||||
-- groups = { brewitem=1, food=3, can_eat_when_full=1 },
|
||||
-- stack_max = 1,
|
||||
--
|
||||
-- on_place = function(itemstack, user, pointed_thing)
|
||||
|
@ -11,9 +11,18 @@ end
|
||||
function mcl_potions.register_splash(name, descr, color, def)
|
||||
|
||||
local id = "mcl_potions:"..name.."_splash"
|
||||
local longdesc = def.longdesc
|
||||
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.")
|
||||
if def.longdesc then
|
||||
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 = splash_image(color),
|
||||
groups = {brewitem=1, not_in_creative_inventory=0},
|
||||
on_use = function(item, placer, pointed_thing)
|
||||
|
@ -27,19 +27,23 @@ local function arrow_image(colorstring, opacity)
|
||||
|
||||
end
|
||||
|
||||
local how_to_shoot = minetest.registered_items["mcl_bows:arrow"]._doc_items_usagehelp
|
||||
|
||||
local mod_awards = minetest.get_modpath("awards") and minetest.get_modpath("mcl_achievements")
|
||||
local mod_button = minetest.get_modpath("mesecons_button")
|
||||
|
||||
function mcl_potions.register_arrow(name, desc, color, def)
|
||||
|
||||
local longdesc = def.longdesc or ""
|
||||
minetest.register_craftitem("mcl_potions:"..name.."_arrow", {
|
||||
description = desc,
|
||||
_tt_help = S("Ammunition").."\n"..S("Damage from bow: 1-10").."\n"..S("Damage from dispenser: 3").."\n"..def.tt,
|
||||
_doc_items_longdesc = S("Arrows are ammunition for bows and dispensers.").."\n"..
|
||||
S("An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 20% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.").."\n"..
|
||||
S("Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons."),
|
||||
_doc_items_usagehelp = S("To use arrows as ammunition for a bow, just put them anywhere in your inventory, they will be used up automatically. To use arrows as ammunition for a dispenser, place them in the dispenser's inventory. To retrieve an arrow that sticks in a block, simply walk close to it."),
|
||||
S("An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 20% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.").."\n"..
|
||||
S("Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons.").."\n"..
|
||||
S("This particular arrow is tipped and will give an effect when it hits a player or mob.").."\n"..
|
||||
longdesc,
|
||||
_doc_items_usagehelp = how_to_shoot,
|
||||
inventory_image = "mcl_bows_arrow_inv.png^(mcl_potions_arrow_inv.png^[colorize:"..color..":100)",
|
||||
groups = { ammo=1, ammo_bow=1, brewitem=1},
|
||||
_on_dispense = function(itemstack, dispenserpos, droppos, dropnode, dropdir)
|
||||
|
@ -36,6 +36,8 @@ local wip_items = {
|
||||
-- "mcl_potions:strength_lingering",
|
||||
-- "mcl_potions:strength_plus_lingering",
|
||||
-- "mcl_potions:strength_2_lingering",
|
||||
"mcl_potions:night_vision_arrow",
|
||||
"mcl_potions:night_vision_plus_arrow",
|
||||
}
|
||||
local experimental_items = {
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user