This commit is contained in:
Brandon 2020-08-05 20:03:56 -04:00
commit cfcaa4fa12
41 changed files with 883 additions and 200 deletions

View file

@ -1931,16 +1931,16 @@ local follow_flop = function(self)
if p.x > s.x then yaw = yaw + pi end
set_yaw(self, yaw, 6)
set_yaw(self, yaw, 2.35)
-- anyone but standing npc's can move along
if dist > self.reach
if dist > 3
and self.order ~= "stand" then
set_velocity(self, self.walk_velocity)
set_velocity(self, self.follow_velocity)
if self.walk_chance ~= 0 then
set_animation(self, "walk")
set_animation(self, "run")
end
else
set_velocity(self, 0)
@ -2179,7 +2179,7 @@ local do_states = function(self, dtime)
set_animation(self, "stand")
else
set_velocity(self, self.run_velocity)
set_animation(self, "walk")
set_animation(self, "run")
end
-- attack routines (explode, dogfight, shoot, dogshoot)
@ -2639,7 +2639,7 @@ local mob_punch = function(self, hitter, tflp, tool_capabilities, dir)
if self.do_punch then
-- when false skip going any further
if self.do_punch(self, hitter, tflp, tool_caps, dir) == false then
if self.do_punch(self, hitter, tflp, tool_capabilities, dir) == false then
return
end
end
@ -3472,6 +3472,7 @@ minetest.register_entity(name, {
sounds_child = def.sounds_child,
explosion_strength = def.explosion_strength,
suffocation_timer = 0,
follow_velocity = def.follow_velocity or 2.4,
-- End of MCL2 extensions
on_spawn = def.on_spawn,

View file

@ -241,6 +241,7 @@ functions needed for the mob to work properly which contains the following:
dir is mob's aiming direction
'sounds_child' same as sounds, but for childs. If not defined, childs will use same
sound as adults but with higher pitch
'follow_velocity' The speed at which a mob moves toward the player when they're holding the appropriate follow item.
Node Replacement

View file

@ -22,7 +22,7 @@ mobs:register_mob("mobs_mc:blaze", {
textures = {
{"mobs_mc_blaze.png"},
},
armor = { fleshy = 100, snowball_vulnerable = 100 },
armor = { fleshy = 100, snowball_vulnerable = 100, water_vulnerable = 100 },
visual_size = {x=3, y=3},
sounds = {
random = "mobs_mc_blaze_breath",

View file

@ -35,10 +35,11 @@ local cow_def = {
distance = 16,
},
animation = {
stand_speed = 25, walk_speed = 25, run_speed = 50,
stand_start = 0, stand_end = 0,
walk_start = 0, walk_end = 40,
run_start = 0, run_end = 40,
stand_speed = 25, walk_speed = 40,
run_speed = 60, stand_start = 0,
stand_end = 0, walk_start = 0,
walk_end = 40, run_start = 0,
run_end = 40,
},
follow = mobs_mc.follow.cow,
on_rightclick = function(self, clicker)

View file

@ -520,6 +520,7 @@ mobs:register_mob("mobs_mc:enderman", {
end
end
end,
armor = { fleshy = 100, water_vulnerable = 100 },
water_damage = 8,
view_range = 64,
fear_height = 4,

View file

@ -96,7 +96,7 @@ local horse = {
walk_speed = 25,
walk_start = 0,
walk_end = 40,
run_speed = 50,
run_speed = 60,
run_start = 0,
run_end = 40,
},

View file

@ -46,6 +46,7 @@ mobs:register_mob("mobs_mc:llama", {
runaway = true,
walk_velocity = 1,
run_velocity = 4.4,
follow_velocity = 4.4,
floats = 1,
drops = {
{name = mobs_mc.items.leather,
@ -61,6 +62,9 @@ mobs:register_mob("mobs_mc:llama", {
},
animation = {
speed_normal = 24,
run_speed = 60,
run_start = 0,
run_end = 40,
stand_start = 0,
stand_end = 0,
walk_start = 0,

View file

@ -41,6 +41,7 @@ local ocelot = {
walk_chance = default_walk_chance,
walk_velocity = 1,
run_velocity = 3,
follow_velocity = 1,
floats = 1,
runaway = true,
fall_damage = 0,
@ -52,7 +53,7 @@ local ocelot = {
},
animation = {
speed_normal = 25,
speed_run = 50,
run_speed = 50,
stand_start = 0,
stand_end = 0,
walk_start = 0,
@ -105,6 +106,7 @@ cat.order = "roam" -- "sit" or "roam"
cat.owner_loyal = true
cat.tamed = true
cat.runaway = false
cat.follow_velocity = 2.4
-- Automatically teleport cat to owner
cat.do_custom = mobs_mc.make_owner_teleport_function(12)
cat.sounds = {

View file

@ -20,6 +20,7 @@ mobs:register_mob("mobs_mc:pig", {
makes_footstep_sound = true,
walk_velocity = 1,
run_velocity = 3,
follow_velocity = 3.4,
drops = {
{name = mobs_mc.items.porkchop_raw,
chance = 1,
@ -36,7 +37,7 @@ mobs:register_mob("mobs_mc:pig", {
animation = {
stand_speed = 40,
walk_speed = 40,
run_speed = 50,
run_speed = 90,
stand_start = 0,
stand_end = 0,
walk_start = 0,
@ -45,7 +46,7 @@ mobs:register_mob("mobs_mc:pig", {
run_end = 40,
},
follow = mobs_mc.follow.pig,
view_range = 5,
view_range = 8,
do_custom = function(self, dtime)
-- set needed values if not already present

View file

@ -27,6 +27,7 @@ local rabbit = {
makes_footstep_sound = false,
walk_velocity = 1,
run_velocity = 3.7,
follow_velocity = 1.1,
floats = 1,
runaway = true,
jump = true,

View file

@ -76,8 +76,8 @@ mobs:register_mob("mobs_mc:sheep", {
distance = 16,
},
animation = {
speed_normal = 25, speed_run = 50,
stand_start = 40, stand_end = 80,
speed_normal = 25, run_speed = 65,
stand_start = 40, stand_end = 80,
walk_start = 0, walk_end = 40,
run_start = 0, run_end = 40,
},

View file

@ -75,6 +75,6 @@ mobs:register_arrow("mobs_mc:shulkerbullet", {
})
mobs:register_egg("mobs_mc:shulker", S("Schulker"), "mobs_mc_spawn_icon_shulker.png", 0)
mobs:register_egg("mobs_mc:shulker", S("Shulker"), "mobs_mc_spawn_icon_shulker.png", 0)
mobs:spawn_specific("mobs_mc:shulker", mobs_mc.spawn.end_city, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 5000, 2, mobs_mc.spawn_height.end_min, mobs_mc.spawn_height.end_max)

View file

@ -31,6 +31,7 @@ mobs:register_mob("mobs_mc:snowman", {
fall_damage = 0,
water_damage = 4,
rain_damage = 4,
armor = { fleshy = 100, water_vulnerable = 100 },
attacks_monsters = true,
collisionbox = {-0.35, -0.01, -0.35, 0.35, 1.89, 0.35},
visual = "mesh",

View file

@ -125,6 +125,7 @@ dog.owner = ""
-- TODO: Start sitting by default
dog.order = "roam"
dog.owner_loyal = true
dog.follow_velocity = 3.2
-- Automatically teleport dog to owner
dog.do_custom = mobs_mc.make_owner_teleport_function(12)
dog.follow = mobs_mc.follow.dog

View file

@ -129,9 +129,10 @@ mobs_mc.override.items = {
},
}
--Horses, Llamas, and Wolves shouldn't follow, but leaving this alone until leads are implemented.
mobs_mc.override.follow = {
chicken = { "mcl_farming:wheat_seeds", "mcl_farming:melon_seeds", "mcl_farming:pumpkin_seeds", "mcl_farming:beetroot_seeds", },
parrot = { "mcl_farming:seed_wheat", "mcl_farming:seed_beetroot", "mcl_farming:seed_pumpkin", "mcl_farming:seed_melon" }, -- seeds in general
parrot = { "mcl_farming:wheat_seeds", "mcl_farming:melon_seeds", "mcl_farming:pumpkin_seeds", "mcl_farming:beetroot_seeds", },
pig = { mobs_mc.override.items.potato, mobs_mc.override.items.carrot, "mcl_farming:beetroot_item", mobs_mc.override.items.carrot_on_a_stick},
ocelot = { mobs_mc.override.items.fish_raw, mobs_mc.override.items.salmon_raw, mobs_mc.override.items.clownfish_raw, mobs_mc.override.items.pufferfish_raw, },
sheep = { mobs_mc.override.items.wheat },

View file

@ -7,6 +7,7 @@ Building Blocks=Baublöcke
Decoration Blocks=Dekoblöcke
Redstone=Redstone
Transportation=Transport
Brewing=Gebräu
Miscellaneous=Sonstiges
Search Items=Gegenstände durchsuchen
Foodstuffs=Lebensmittel

View file

@ -7,6 +7,7 @@ Building Blocks=Bloques de construcción
Decoration Blocks=Bloques de decoración
Redstone=Redstone
Transportation=Transporte
Brewing=
Miscellaneous=Variado
Search Items=Buscar artículos
Foodstuffs=Productos alimenticios

View file

@ -7,6 +7,7 @@ Building Blocks=Blocs de Construction
Decoration Blocks=Blocs de Décoration
Redstone=Redstone
Transportation=Transport
Brewing=
Miscellaneous=Divers
Search Items=Rechercher des objets
Foodstuffs=Denrées alimentaires

View file

@ -7,6 +7,7 @@ Building Blocks=Строительные блоки
Decoration Blocks=Декоративные блоки
Redstone=Редстоун (красный камень)
Transportation=Транспорт
Brewing=
Miscellaneous=Прочее
Search Items=Искать предметы
Foodstuffs=Продовольствие

View file

@ -7,6 +7,7 @@ Building Blocks=
Decoration Blocks=
Redstone=
Transportation=
Brewing=
Miscellaneous=
Search Items=
Foodstuffs=

View file

@ -1,4 +1,4 @@
local S = minetest.get_translator("mcl_brewing_stand")
local S = minetest.get_translator("mcl_brewing")
local function active_brewing_formspec(fuel_percent, brew_percent)
@ -310,8 +310,11 @@ if minetest.get_modpath("screwdriver") then
end
local doc_string =
S("To use an brewing_stand, rightclick it.").."\n"
S("To brew, place fuel first and/or your ingredient last!")
S("To use a brewing stand, rightclick it.").."\n"..
S("To brew, you need blaze powder as fuel, a brewing material and at least 1 glass bottle filled with a liquid.").."\n"..
S("Place the blaze powder in the left slot, the brewing material in the middle slot and 1-3 bottles in the remaining slots.").."\n"..
S("When you have found a good comination, the brewing will commence automatically and steam starts to appear, using up the fuel and brewing material. The potions will soon be ready.").."\n"..
S("Different combinations of brewing materials and liquids will give different results. Try to experiment!")
local tiles = {"mcl_brewing_top.png", --top
"mcl_brewing_base.png", --bottom

View file

@ -0,0 +1,10 @@
# textdomain: mcl_brewing
Brewing Stand=Braustand
Inventory=Inventar
To use a brewing stand, rightclick it.=Um einen Braustand zu benutzen, rechtsklicken Sie ihn.
To brew, you need blaze powder as fuel, a brewing material and at least 1 glass bottle filled with a liquid.=Zum Brauen benötigt man Lohenstaub als Brennstoff, ein Braumaterial und mindestens 1 Glasflasche, die mit einer Flüssigkeit gefüllt ist.
Place the blaze powder in the left slot, the brewing material in the middle slot and 1-3 bottles in the remaining slots.=Platzieren Sie den Lohenstaub in den linken Plartz, das Braumaterial in den mittleren Platz und 1-3 Glasflaschen in die übrigen Plätze.
When you have found a good comination, the brewing will commence automatically and steam starts to appear, using up the fuel and brewing material. The potions will soon be ready.=Wenn Sie eine gute Kombination gefunden haben, beginnt der Brauvorgang automatisch, und es entsteht Dampf. Der Brennstoff und das Brühmaterial wird aufbraucht. Die Tränke werden bald fertig sein.
Different combinations of brewing materials and liquids will give different results. Try to experiment!=Unterschiedliche Kombinationen von Braumaterialien und Flüssigkeiten werden zu unterschiedlichen Ergebnissen führen. Experimentieren Sie!
The stand allows you to brew potions!=Der Stand ermöglicht das Brauen von Tränken.
Brew Potions=Tränke brauen

View file

@ -1,3 +1,10 @@
# textdomain: mcl_brewing
Brewing Stand=Варочный стенд
The brewing stand allows the creating of potions for the benefit of various effects. Stay tuned for developments, as you can only view the stand and interact with it, but not create potions.=Варочный стенд позволяет создавать зелья для достижения различных эффектов. Следите за разработкой, а пока вы можете только просматривать стенд и взаимодействовать с ним, но не создавать зелья.
Inventory=
To use a brewing stand, rightclick it.=
To brew, you need blaze powder as fuel, a brewing material and at least 1 glass bottle filled with a liquid.=
Place the blaze powder in the left slot, the brewing material in the middle slot and 1-3 bottles in the remaining slots.=
When you have found a good comination, the brewing will commence automatically and steam starts to appear, using up the fuel and brewing material. The potions will soon be ready.=
Different combinations of brewing materials and liquids will give different results. Try to experiment!=
The stand allows you to brew potions!=
Brew Potions=

View file

@ -1,3 +1,10 @@
# textdomain: mcl_brewing
Brewing Stand=
The brewing stand allows the creating of potions for the benefit of various effects. Stay tuned for developments, as you can only view the stand and interact with it, but not create potions.
Inventory=
To use a brewing stand, rightclick it.=
To brew, you need blaze powder as fuel, a brewing material and at least 1 glass bottle filled with a liquid.=
Place the blaze powder in the left slot, the brewing material in the middle slot and 1-3 bottles in the remaining slots.=
When you have found a good comination, the brewing will commence automatically and steam starts to appear, using up the fuel and brewing material. The potions will soon be ready.=
Different combinations of brewing materials and liquids will give different results. Try to experiment!=
The stand allows you to brew potions!=
Brew Potions=

View file

@ -134,7 +134,7 @@ minetest.register_node("mcl_end:chorus_flower", {
node_box = chorus_flower_box,
selection_box = { type = "regular" },
sounds = mcl_sounds.node_sound_wood_defaults(),
groups = {handy=1,axey=1, deco_block = 1, not_in_creative_inventory = 1, dig_by_piston = 1, destroy_by_lava_flow = 1,chorus_plant = 1},
groups = {handy=1,axey=1, deco_block = 1, dig_by_piston = 1, destroy_by_lava_flow = 1,chorus_plant = 1},
node_placement_prediction = "",
on_place = function(itemstack, placer, pointed_thing)
@ -207,7 +207,6 @@ minetest.register_node("mcl_end:chorus_flower", {
minetest.register_node("mcl_end:chorus_flower_dead", {
description = S("Dead Chorus Flower"),
_tt_help = S("Grows on end stone"),
_doc_items_longdesc = S("This is a part of a chorus plant. It doesn't grow. Chorus flowers die of old age or when they are unable to grow. A dead chorus flower can be harvested to obtain a fresh chorus flower which is able to grow again."),
tiles = {
"mcl_end_chorus_flower_dead.png",
@ -224,7 +223,7 @@ minetest.register_node("mcl_end:chorus_flower_dead", {
selection_box = { type = "regular" },
sounds = mcl_sounds.node_sound_wood_defaults(),
drop = "mcl_end:chorus_flower",
groups = {handy=1,axey=1, deco_block = 1, dig_by_piston = 1, destroy_by_lava_flow = 1,chorus_plant = 1},
groups = {handy=1,axey=1, deco_block = 1, dig_by_piston = 1, destroy_by_lava_flow = 1,chorus_plant = 1, not_in_creative_inventory=1},
after_dig_node = mcl_end.check_detach_chorus_plant,
on_blast = mcl_end.check_blast_chorus_plant,
_mcl_blast_resistance = 2,

View file

@ -212,6 +212,9 @@ minetest.register_node("mcl_fire:eternal_fire", {
while #airs > 0 do
local r = math.random(1, #airs)
if minetest.find_node_near(airs[r], 1, {"group:flammable"}) then
local node = minetest.get_node(airs[r])
local age = node.param2
local age_next = math.min(15, age + math.random(0, 1))
spawn_fire(airs[r], age_next)
break
else

View file

@ -1,7 +0,0 @@
mcl_core
mcl_farming
mcl_mobitems
mcl_fishing
mcl_bows
mcl_end
playerphysics

View file

@ -597,6 +597,10 @@ function mcl_potions.healing_func(player, hp)
if obj and obj.harmed_by_heal then hp = -hp end
if hp > 0 then
-- at least 1 HP
if hp < 1 then
hp = 1
end
if obj and obj._cmi_is_mob then
obj.health = math.max(obj.health + hp, obj.hp_max)
@ -604,7 +608,10 @@ function mcl_potions.healing_func(player, hp)
player:set_hp(math.min(player:get_hp() + hp, player:get_properties().hp_max), { type = "set_hp", other = "healing" })
end
else
elseif hp < 0 then
if hp > -1 then
hp = -1
end
if obj and obj._cmi_is_mob then
obj.health = obj.health + hp
@ -813,6 +820,46 @@ function mcl_potions.night_vision_func(player, null, duration)
end
function mcl_potions._extinguish_nearby_fire(pos, radius)
local epos = {x=pos.x, y=pos.y+0.5, z=pos.z}
local dnode = minetest.get_node({x=pos.x,y=pos.y-0.5,z=pos.z})
if minetest.get_item_group(dnode.name, "fire") ~= 0 then
epos.y = pos.y - 0.5
end
local exting = false
-- No radius: Splash, extinguish epos and 4 nodes around
if not radius then
local dirs = {
{x=0,y=0,z=0},
{x=0,y=0,z=-1},
{x=0,y=0,z=1},
{x=-1,y=0,z=0},
{x=1,y=0,z=0},
}
for d=1, #dirs do
local tpos = vector.add(epos, dirs[d])
local node = minetest.get_node(tpos)
if minetest.get_item_group(node.name, "fire") ~= 0 then
minetest.sound_play("fire_extinguish_flame", {pos = tpos, gain = 0.25, max_hear_distance = 16}, true)
minetest.remove_node(tpos)
exting = true
end
end
-- Has radius: lingering, extinguish all nodes in area
else
local nodes = minetest.find_nodes_in_area(
{x=epos.x-radius,y=epos.y,z=epos.z-radius},
{x=epos.x+radius,y=epos.y,z=epos.z+radius},
{"group:fire"})
for n=1, #nodes do
minetest.sound_play("fire_extinguish_flame", {pos = nodes[n], gain = 0.25, max_hear_distance = 16}, true)
minetest.remove_node(nodes[n])
exting = true
end
end
return exting
end
-- ░█████╗░██╗░░██╗░█████╗░████████╗  ░█████╗░░█████╗░███╗░░░███╗███╗░░░███╗░█████╗░███╗░░██╗██████╗░░██████╗
-- ██╔══██╗██║░░██║██╔══██╗╚══██╔══╝  ██╔══██╗██╔══██╗████╗░████║████╗░████║██╔══██╗████╗░██║██╔══██╗██╔════╝
@ -822,17 +869,17 @@ end
-- ░╚════╝░╚═╝░░╚═╝╚═╝░░╚═╝░░░╚═╝░░░  ░╚════╝░░╚════╝░╚═╝░░░░░╚═╝╚═╝░░░░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝╚═════╝░╚═════╝░
local get_function = {}
local get_chat_function = {}
get_function["poison"] = mcl_potions.poison_func
get_function["regeneration"] = mcl_potions.regeneration_func
get_function["invisibility"] = mcl_potions.invisiblility_func
get_function["fire_resistance"] = mcl_potions.fire_resistance_func
get_function["night_vision"] = mcl_potions.night_vision_func
get_function["water_breathing"] = mcl_potions.water_breathing_func
get_function["leaping"] = mcl_potions.leaping_func
get_function["swiftness"] = mcl_potions.swiftness_func
get_function["heal"] = mcl_potions.healing_func
get_chat_function["poison"] = mcl_potions.poison_func
get_chat_function["regeneration"] = mcl_potions.regeneration_func
get_chat_function["invisibility"] = mcl_potions.invisiblility_func
get_chat_function["fire_resistance"] = mcl_potions.fire_resistance_func
get_chat_function["night_vision"] = mcl_potions.night_vision_func
get_chat_function["water_breathing"] = mcl_potions.water_breathing_func
get_chat_function["leaping"] = mcl_potions.leaping_func
get_chat_function["swiftness"] = mcl_potions.swiftness_func
get_chat_function["heal"] = mcl_potions.healing_func
minetest.register_chatcommand("potion",{
params = "<params>",
@ -851,10 +898,10 @@ minetest.register_chatcommand("potion",{
P[3] = P[2]
end
if get_function[P[1]] then
get_function[P[1]](minetest.get_player_by_name(name), tonumber(P[2]), tonumber(P[3]))
if get_chat_function[P[1]] then
get_chat_function[P[1]](minetest.get_player_by_name(name), tonumber(P[2]), tonumber(P[3]))
else
minetest.chat_send_player(name, P[1].." is not an available potion effect.")
minetest.chat_send_player(name, P[1].." is not an available potion effect. Use /help potion as needed.")
end
end ,

View file

@ -31,8 +31,7 @@ minetest.register_craftitem("mcl_potions:fermented_spider_eye", {
_doc_items_longdesc = brewhelp,
wield_image = "mcl_potions_spider_eye_fermented.png",
inventory_image = "mcl_potions_spider_eye_fermented.png",
-- TODO: Reveal item when it's actually useful
groups = { brewitem = 1, not_in_creative_inventory = 0, not_in_craft_guide = 0 },
groups = { brewitem = 1, },
stack_max = 64,
})
@ -277,15 +276,44 @@ minetest.register_craftitem("mcl_potions:river_water", {
})
-- 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})
-- Hurt mobs
local water_splash = function(obj, damage)
if not obj then
return
end
if not damage or (damage > 0 and damage < 1) then
damage = 1
end
-- Damage mobs that are vulnerable to water
local lua = obj:get_luaentity()
if lua and lua._cmi_is_mob then
obj:punch(obj, 1.0, {
full_punch_interval = 1.0,
damage_groups = {water_vulnerable=damage},
}, nil)
end
end
mcl_potions.register_splash("water", S("Splash Water Bottle"), "#0022FF", {
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."),
no_effect=true,
potion_fun=water_splash,
effect=1
})
mcl_potions.register_lingering("water", S("Lingering Water Bottle"), "#0022FF", {
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."),
no_effect=true,
potion_fun=water_splash,
effect=1
})
minetest.register_craftitem("mcl_potions:speckled_melon", {
description = S("Glistering Melon"),
_doc_items_longdesc = S("This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else."),
stack_max = 64,
groups = { brewitem = 1, not_in_creative_inventory = 0, not_in_craft_guide = 0 },
groups = { brewitem = 1, },
inventory_image = "mcl_potions_melon_speckled.png",
})
@ -324,7 +352,6 @@ local awkward_table = {
["mcl_mobitems:ghast_tear"] = "mcl_potions:regeneration",
["mcl_mobitems:spider_eye"] = "mcl_potions:poison",
["mcl_mobitems:rabbit_foot"] = "mcl_potions:leaping",
["mcl_end:chorus_flower"] = "mcl_potions:dragon_breath", -- temporary until dragon's breath is obtainable
}
local output_table = {

View file

@ -10,9 +10,9 @@ end
local lingering_effect_at = {}
local function add_lingering_effect(pos, color, def)
local function add_lingering_effect(pos, color, def, is_water)
lingering_effect_at[pos] = {color = color, timer = 30, def = def}
lingering_effect_at[pos] = {color = color, timer = 30, def = def, is_water = is_water}
end
@ -27,32 +27,46 @@ minetest.register_globalstep(function(dtime)
vals.timer = vals.timer - lingering_timer
local d = 4 * (vals.timer / 30.0)
local texture
if vals.is_water then
texture = "mcl_potions_droplet.png"
else
texture = "mcl_potions_sprite.png"
end
minetest.add_particlespawner({
amount = 10 * d^2,
time = 1,
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},
minvel = {x=-0.5, y=0, z=-0.5},
maxvel = {x=0.5, y=0.5, z=0.5},
minacc = {x=-0.2, y=0, z=-0.2},
maxacc = {x=0.2, y=.05, z=0.2},
minexptime = 1,
maxexptime = 2,
minsize = 2,
maxsize = 4,
collisiondetection = true,
vertical = false,
texture = "mcl_potions_sprite.png^[colorize:"..vals.color..":127",
})
amount = 10 * d^2,
time = 1,
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},
minvel = {x=-0.5, y=0, z=-0.5},
maxvel = {x=0.5, y=0.5, z=0.5},
minacc = {x=-0.2, y=0, z=-0.2},
maxacc = {x=0.2, y=.05, z=0.2},
minexptime = 1,
maxexptime = 2,
minsize = 2,
maxsize = 4,
collisiondetection = true,
vertical = false,
texture = texture.."^[colorize:"..vals.color..":127",
})
-- Extinguish fire if water bottle
if vals.is_water then
if mcl_potions._extinguish_nearby_fire(pos, d) then
vals.timer = vals.timer - 3.25
end
end
-- Affect players and mobs
for _, obj in pairs(minetest.get_objects_inside_radius(pos, d)) do
local entity = obj:get_luaentity()
if obj:is_player() or entity._cmi_is_mob then
vals.def.potion_fun(obj)
vals.timer = vals.timer / 2
-- TODO: Apply timer penalty only if the potion effect was acutally applied
vals.timer = vals.timer - 3.25
end
end
@ -112,32 +126,46 @@ function mcl_potions.register_lingering(name, descr, color, def)
textures = {lingering_image(color)},
hp_max = 1,
visual_size = {x=w/2,y=w/2},
collisionbox = {0,0,0,0,0,0},
collisionbox = {-0.1,-0.1,-0.1,0.1,0.1,0.1},
pointable = false,
on_step = function(self, dtime)
local pos = self.object:getpos()
local pos = self.object:get_pos()
local node = minetest.get_node(pos)
local n = node.name
local d = 4
if n ~= "air" and n ~= "mcl_portals:portal" and n ~= "mcl_portals:portal_end" or mcl_potions.is_obj_hit(self, pos) then
minetest.sound_play("mcl_potions_breaking_glass", {pos = pos, max_hear_distance = 16, gain = 1})
add_lingering_effect(pos, color, def)
add_lingering_effect(pos, color, def, name == "water")
local texture, minacc, maxacc
if name == "water" then
texture = "mcl_potions_droplet.png"
minacc = {x=-0.2, y=-0.05, z=-0.2}
maxacc = {x=0.2, y=0.05, z=0.2}
else
texture = "mcl_potions_sprite.png"
minacc = {x=-0.2, y=0, z=-0.2}
maxacc = {x=0.2, y=.05, z=0.2}
end
minetest.add_particlespawner({
amount = 40,
time = 1,
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},
minvel = {x=-0.5, y=0, z=-0.5},
maxvel = {x=0.5, y=0.5, z=0.5},
minacc = {x=-0.2, y=0, z=-0.2},
maxacc = {x=0.2, y=.05, z=0.2},
minexptime = 1,
maxexptime = 2,
minsize = 1,
maxsize = 2,
collisiondetection = true,
vertical = false,
texture = "mcl_potions_sprite.png^[colorize:"..color..":127",
})
amount = 40,
time = 1,
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},
minvel = {x=-0.5, y=0, z=-0.5},
maxvel = {x=0.5, y=0.5, z=0.5},
minacc = minacc,
maxacc = maxacc,
minexptime = 1,
maxexptime = 2,
minsize = 1,
maxsize = 2,
collisiondetection = true,
vertical = false,
texture = texture.."^[colorize:"..color..":127",
})
if name == "water" then
mcl_potions._extinguish_nearby_fire(pos, d)
end
self.object:remove()
end
end,

View file

@ -1,25 +1,124 @@
# textdomain: mcl_potions
Put this item in an item frame for decoration. It's useless otherwise.=Platizeren Sie diesen Gegenstand in einen Rahmen als Deko. Ansonsten ist er nutzlos.
Fermented Spider Eye=Fermentiertes Spinnenauge
Glass Bottle=Glasflasche
Liquid container=Flüssigkeitsbehälter
A glass bottle is used as a container for liquids and can be used to collect water directly.=Eine Glasflasche wird als Behälter von Flüssigkeiten benutzt und kann Wasser direkt aufsammeln.
To collect water, use it on a cauldron with water (which removes a level of water) or any water source (which removes no water).=Um Wasser aufzusammen, benutzen Sie sie an einem Kessel mit Wasser (was etwas Wasser entfernt) oder einer Wasserquelle (was kein Wasser entfernt).
To collect water, use it on a cauldron with water (which removes a level of water) or any water source (which removes no water).=Um Wasser aufzusammeln, benutzen Sie sie an einem Kessel mit Wasser (was etwas Wasser entfernt) oder einer Wasserquelle (was kein Wasser entfernt).
Water Bottle=Wasserflasche
Water bottles can be used to fill cauldrons. Drinking water has no effect.=Wasserflaschen können benutzt werden, um Kessel aufzufüllen. Trinken hat keine Wirkung.
Rightclick to drink. Rightclick a cauldron to pour the water into the cauldron.=Rechtsklicken zum Trinken. Auf einem Kessel rechtsklicken, um das Wasser in den Kessel zu schütten.
Use the “Place” key to drink. Place this item on a cauldron to pour the water into the cauldron.=Benutzen Sie die „Platzieren“-Taste zum Trinken. Platzieren Sie diesen Gegenstand auf einen Kessel, um das Wasser in den Kessel zu schütten.
River Water Bottle=Flusswasserflasche
River water bottles can be used to fill cauldrons. Drinking it has no effect.=Flusswasserflaschen können benutzt werden, um Kessel aufzufüllen. Trinken hat keine Wirkung.
Awkward Potion=Seltsamer Trank
This potion has an awkward taste and is used for brewing more potions. Drinking it has no effect.=Dieser Trank schmeckt komisch. Er wird zum Brauen von Tränken benutzt. Trinken hat keine Wirkung.
Mundane Potion=Klarer Trank
This potion has a clean taste and is used for brewing more potions. Drinking it has no effect.=Dieser Trank hat einen klaren Geschmack und wird zum Brauen von Tränken benutzt. Trinken hat keine Wirkung.
Thick Potion=Bitterer Trank
This potion has a bitter taste and is used for brewing more potions. Drinking it has no effect.=Dieser Trank hat einen bitteren Geschmack und wird zum Brauen von Tränken benutzt. Trinken hat keine Wirkung.
Glistering Melon=Glitzermelone
This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else.=Diese glänzende Melone ist voller winziger Goldnuggets und sähe ganz nett in einem Rahmen aus. Er ist nicht essbar und auch sonst zu nichts zu gebrauchen.
Dragon's Breath=Drachenatem
Use the “Place” key to drink it.=Benutzen Sie die „Platzieren“-Taste zum Trinken.
Use the “Place” key to drink. Place this item on a cauldron to pour the water into the cauldron.=Benutzen Sie die „Platzieren“-Taste zum Trinken. Platzieren Sie diesen Gegenstand auf einen Kessel, um das Wasser in den Kessel zu schütten.
Use the “Place” key to drink. Place this item on a cauldron to pour the river water into the cauldron.=Benutzen Sie die „Platzieren“-Taste zum Trinken. Platzieren Sie diesen Gegenstand auf einen Kessel, um das Flusswasser in den Kessel zu schütten.
Liquid container=Flüssigkeitsbehälter
Splash Water Bottle=Wurfwasserflasche
Extinguishes fire and hurts some mobs=Löscht Feuer und verletzt einige Mobs
A throwable water bottle that will shatter on impact, where it extinguishes nearby fire and hurts mobs that are vulnerable to water.=Eine werfbare Wasserflasche, die beim Einschlag zerbrechen wird und nahes Feuer löschen und einige wasserempfindliche Mobs verletzen wird.
Lingering Water Bottle=Verweilwasserflasche
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.=Eine werfbare Wasserflasche, die beim Einschlag zerbrechen und eine Wolke aus Wasserdunst erzeugen wird, welche Feuer löscht und wasserempfindliche Mobs verletzt.
Glistering Melon=Glitzermelone
This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else.=Diese glänzende Melone ist voller winziger Goldnuggets und sähe ganz nett in einem Rahmen aus. Er ist nicht essbar und auch sonst zu nichts zu gebrauchen.
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.=Ein werfbarer Trank, der bei Kollision zerbrechen wird, wo er eine magische Wolke erzeugt, die für eine gewisse Zeit verweilen wird. Jeder Spieler und jede Mob in der Wolke wird die Trankwirkung erhalten, möglicherweise mehrmals.
Lingering Weakness Potion=Schwächeverweiltrank
Lingering Weakness Potion +=Schwächeverweiltrank +
Lingering Strength Potion=Stärkeverweiltrank
Lingering Strength Potion II=Stärkeverweiltrank II
Lingering Strength Potion +=Stärkeverweiltrank +
Use the “Punch” key to throw it.=Benutzen Sie die „Schlagen“-Taste zum Werfen.
Use the “Place” key to drink it.=Benutzen Sie die „Platzieren“-Taste zum Trinken.
Drinking a potion gives you a particular effect.=Das Trinken eines Tranks gibt Ihnen einen bestimmten Effekt.
1 HP/@1s | @2=1 TP/@1s | @2
@1 HP=@1 TP
@1 Potion=Trank der @1
Splash @1 Potion=Wurftrank der @1
Lingering @1 Potion=Verweiltrank der @1
Arrow of @1=Pfeil der @1
II= II
IV= IV
@1 Potion@2=Trank der @1@2
Splash @1@2 Potion=Wurftrank der @1@2
Lingering @1@2 Potion=Verweiltrank der @1@2
Arrow of @1@2=Pfeil der @1@2
@1 + Potion=Trank der @1 +
Splash @1 + Potion=Wurftrank der @1 +
Lingering @1 + Potion=Verweiltrank der @1 +
Arrow of @1 +=Pfeil der @1
Awkward Potion=Seltsamer Trank
Awkward Splash Potion=Seltsamer Wurftrank
Awkward Lingering Potion=Seltsamer Verweiltrank
Has an awkward taste and is used for brewing potions.=Hat einen seltsamen Geschmack und wird in der Trankherstellung benutzt.
Mundane Potion=Klarer Trank
Mundane Splash Potion=Klarer Wurftrank
Mundane Lingering Potion=Klarer Verweiltrank
Has a terrible taste and is not useful for brewing potions.=Hat einen furchtbaren Geschmack und ist nicht für die Trankherstellung brauchbar.
Thick Potion=Bitterer Trank
Thick Splash Potion=Bitterer Wurftrank
Thick Lingering Potion=Bitterer Verweiltrank
Has a bitter taste and is not useful for brewing potions.=Hat einen bitteren Geschmack und ist nicht für die Trankherstellung brauchbar.
Dragon's Breath=Drachenatem
This item is used in brewing and can be combined with splash potions to create lingering potions.=Dieser Objekt wird für die Trankherstellung benutzt und kann mit Wurftränken kombiniert werden, um Verweiltränke herzustellen.
Healing=Heilung
+4 HP=+4 TP
+8 HP=+8 TP
Instantly heals.=Heilt sofort.
Harming=Verletzung
-6 HP=-6 TP
-12 HP=-12 TP
Instantly deals damage.=Richtet sofort Schaden an.
Night Vision=Nachtsicht
Grants the ability to see in darkness.=Gibt die Fähigkeit, in der Dunkelheit zu sehen.
Swiftness=Schnelligkeit
Increases walking speed.=Erhöht Gehgeschwindigkeit.
Slowness=Langsamkeit
Decreases walking speed.=Verringert Gehgeschwindigkeit.
Leaping=Sprungkraft
Increases jump strength.=Erhöht Sprungstärke.
Poison=Vergiftung
Applies the poison effect which deals damage at a regular interval.=Gibt den Gifteffekt, der Schaden in regelmäßigen Abständen anrichtet.
Regeneration=Regenerierung
Regenerates health over time.=Regeneriert Gesundheit mit der Zeit.
Invisibility=Unsichtbarkeit
Grants invisibility.=Gibt Unsichtbarkeit.
Water Breathing=Wasseratmung
Grants limitless breath underwater.=Gibt unbegrenzten Atem im Wasser.
Fire Resistance=Feuerresistenz
Grants immunity to damage from heat sources like fire.=Gibt Immunität gegenüber Schaden von Hitzequellen wie Feuer.
Weakness=Schwäche
-4 HP damage | 1:30=-4 HP Schaden | 1:30
Weakness +=Schwäche +
-4 HP damage | 4:00=-4 HP Schaden | 4:00
Strength=Stärke
+3 HP damage | 3:00=+3 HP Schaden | 3:00
Strength II=Stärke II
+6 HP damage | 1:30=+6 HP Schaden | 1:30
Strength +=Stärke +
+3 HP damage | 8:00=+3 HP Schaden | 8:00
Try different combinations to create potions.=Probieren Sie Kombinationen aus, um Tränke herzustellen.
No effect=Keine Wirkung
A throwable potion that will shatter on impact, where it gives all nearby players and mobs a status effect.=Ein werfbarer Trank, der bei Kollision zerbrechen wird, wo er allen nahen Spielern und Mobs einen Statuseffekt geben wird.
Weakness Splash Potion=Schwächewurftrank
Weakness Splash Potion +=Schwächewurftrank +
Strength Splash Potion=Stärkewurftrank
Strength Splash Potion II=Stärkewurftrank II
Strength Splash Potion +=Stärkewurftrank +
This particular arrow is tipped and will give an effect when it hits a player or mob.=Diese Pfeilspitze dieses Pfeils in einem Trank getränkt und gibt einen Effekt, wenn er einen Spieler oder einen Mob trifft.

View file

@ -1,23 +1,123 @@
# textdomain: mcl_potions
Put this item in an item frame for decoration. It's useless otherwise.=Pon este artículo en un marco de artículo para la decoración.
Fermented Spider Eye=Ojo de araña fermentado
Glass Bottle=Frasco de cristal
Liquid container=
A glass bottle is used as a container for liquids and can be used to collect water directly.=El frasco de cristal se usa como recipiente para líquidos y se puede usar para recoger agua directamente.
To collect water, use it on a cauldron with water (which removes a level of water) or any water source (which removes no water).=Para recoger agua, colóquela en un caldero con agua (que elimina un nivel de agua) o cualquier fuente de agua (que no elimine agua).
Water Bottle=Frasco de cristal con agua
Water bottles can be used to fill cauldrons. Drinking water has no effect.=Las botellas de agua se pueden usar para llenar calderos. El agua potable no tiene efecto.
Rightclick to drink. Rightclick a cauldron to pour the water into the cauldron.=Haga clic derecho para beber. Haga clic derecho en un caldero para verter el agua en el caldero.
Use the “Place” key to drink. Place this item on a cauldron to pour the water into the cauldron.=Use la tecla "Acción" para beber. Coloque este artículo en un caldero para verter el agua en el caldero.
River Water Bottle=Frasco de cristal con agua de rio
River water bottles can be used to fill cauldrons. Drinking it has no effect.=Las botellas de agua de río se pueden usar para llenar calderos. Beberlo no tiene ningún efecto.
Awkward Potion=Poción incomoda
This potion has an awkward taste and is used for brewing more potions. Drinking it has no effect.=Esta poción tiene un sabor extraño y se usa para preparar más pociones. Beberlo no tiene ningún efecto.
Mundane Potion=Poción Mundana
This potion has a clean taste and is used for brewing more potions. Drinking it has no effect.=Esta poción tiene un sabor limpio y se usa para preparar más pociones. Beberlo no tiene ningún efecto.
Thick Potion=Poción densa
This potion has a bitter taste and is used for brewing more potions. Drinking it has no effect.=Esta poción tiene un sabor amargo y se usa para preparar más pociones. Beberlo no tiene ningún efecto.
Glistering Melon=Rodaja de sandía reluciente
This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else.=Esta sandía brillante está llena de pequeñas pepitas de oro y sería bueno en un marco de artículo. No es comestible y no es útil para nada más.
Dragon's Breath=Aliento de dragón
Use the “Place” key to drink it.=Use la tecla "Colocar" para beberlo.
Use the “Place” key to drink. Place this item on a cauldron to pour the water into the cauldron.=Use la tecla "Acción" para beber. Coloque este artículo en un caldero para verter el agua en el caldero.
Use the “Place” key to drink. Place this item on a cauldron to pour the river water into the cauldron.=Use la tecla "Acción" para beber. Coloque este artículo en un caldero para verter el agua de río en el caldero.
Splash Water Bottle=
Extinguishes fire and hurts some mobs=
A throwable water bottle that will shatter on impact, where it extinguishes nearby fire and hurts mobs that are vulnerable to water.=
Lingering Water Bottle=
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.=
Glistering Melon=Rodaja de sandía reluciente
This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else.=Esta sandía brillante está llena de pequeñas pepitas de oro y sería bueno en un marco de artículo. No es comestible y no es útil para nada má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.=
Lingering Weakness Potion=
Lingering Weakness Potion +=
Lingering Strength Potion=
Lingering Strength Potion II=
Lingering Strength Potion +=
Use the “Punch” key to throw it.=
Use the “Place” key to drink it.=Use la tecla "Colocar" para beberlo.
Drinking a potion gives you a particular effect.=
1 HP/@1s | @2=
@1 HP=
@1 Potion=
Splash @1 Potion=
Lingering @1 Potion=
Arrow of @1=
II=
IV=
@1 Potion@2=
Splash @1@2 Potion=
Lingering @1@2 Potion=
Arrow of @1@2=
@1 + Potion=
Splash @1 + Potion=
Lingering @1 + Potion=
Arrow of @1 +=
Awkward Potion=Poción incomoda
Awkward Splash Potion=
Awkward Lingering Potion=
Has an awkward taste and is used for brewing potions.=
Mundane Potion=Poción Mundana
Mundane Splash Potion=
Mundane Lingering Potion=
Has a terrible taste and is not useful for brewing potions.=
Thick Potion=Poción densa
Thick Splash Potion=
Thick Lingering Potion=
Has a bitter taste and is not useful for brewing potions.=
Dragon's Breath=Aliento de dragón
This item is used in brewing and can be combined with splash potions to create lingering potions.=
Healing=
+4 HP=
+8 HP=
Instantly heals.=
Harming=
-6 HP=
-12 HP=
Instantly deals damage.=
Night Vision=
Grants the ability to see in darkness.=
Swiftness=
Increases walking speed.=
Slowness=
Decreases walking speed.=
Leaping=
Increases jump strength.=
Poison=
Applies the poison effect which deals damage at a regular interval.=
Regeneration=
Regenerates health over time.=
Invisibility=
Grants invisibility.=
Water Breathing=
Grants limitless breath underwater.=
Fire Resistance=
Grants immunity to damage from heat sources like fire.=
Weakness=
-4 HP damage | 1:30=
Weakness +=
-4 HP damage | 4:00=
Strength=
+3 HP damage | 3:00=
Strength II=
+6 HP damage | 1:30=
Strength +=
+3 HP damage | 8:00=
Try different combinations to create potions.=
No effect=
A throwable potion that will shatter on impact, where it gives all nearby players and mobs a status effect.=
Weakness Splash Potion=
Weakness Splash Potion +=
Strength Splash Potion=
Strength Splash Potion II=
Strength Splash Potion +=
This particular arrow is tipped and will give an effect when it hits a player or mob.=

View file

@ -1,25 +1,123 @@
# textdomain: mcl_potions
Put this item in an item frame for decoration. It's useless otherwise.=Mettez cet élément dans un cadre à élément pour la décoration. C'est inutile sinon.
Fermented Spider Eye=Oeil d'araignée fermenté
Glass Bottle=Bouteille en verre
Liquid container=Récipient de liquide
A glass bottle is used as a container for liquids and can be used to collect water directly.=Une bouteille en verre est utilisée comme récipient pour les liquides et peut être utilisée pour collecter l'eau directement.
To collect water, use it on a cauldron with water (which removes a level of water) or any water source (which removes no water).=Pour collecter l'eau, poser la sur un chaudron avec de l'eau (qui enlève un niveau d'eau) ou toute source d'eau (qui n'enlève pas d'eau).
Water Bottle=Bouteille d'eau
Water bottles can be used to fill cauldrons. Drinking water has no effect.=Les bouteilles d'eau peuvent être utilisées pour remplir les chaudrons. L'eau potable n'a aucun effet.
Rightclick to drink. Rightclick a cauldron to pour the water into the cauldron.=Clic droit pour boire. Clic droit sur un chaudron pour verser l'eau dans le chaudron.
Use the “Place” key to drink. Place this item on a cauldron to pour the water into the cauldron.=Utilisez la touche "Utiliser" pour boire. Placez cet article sur un chaudron pour verser l'eau dans le chaudron.
River Water Bottle=Bouteille d'eau de rivière
River water bottles can be used to fill cauldrons. Drinking it has no effect.=Les bouteilles d'eau de rivière peuvent être utilisées pour remplir les chaudrons. Le boire n'a aucun effet.
Awkward Potion=Potion maladroite
This potion has an awkward taste and is used for brewing more potions. Drinking it has no effect.=Cette potion a un goût gênant et est utilisée pour préparer plus de potions. Le boire n'a aucun effet.
Mundane Potion=Potion mondaine
This potion has a clean taste and is used for brewing more potions. Drinking it has no effect.=Cette potion a un goût propre et est utilisée pour préparer plus de potions. Le boire n'a aucun effet.
Thick Potion=Potion épaisse
This potion has a bitter taste and is used for brewing more potions. Drinking it has no effect.=Cette potion a un goût amer et est utilisée pour préparer plus de potions. Le boire n'a aucun effet.
Glistering Melon=Melon étincelant
This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else.=Ce melon brillant est plein de minuscules pépites d'or et serait bien dans un cadre d'objet. Il n'est pas comestible et n'est utile à rien d'autre.
Dragon's Breath=Le souffle du dragon
Use the “Place” key to drink it.=Utilisez la touche "Utiliser" pour le boire.
Use the “Place” key to drink. Place this item on a cauldron to pour the water into the cauldron.=Utilisez la touche "Utiliser" pour boire. Placez cet article sur un chaudron pour verser l'eau dans le chaudron.
Use the “Place” key to drink. Place this item on a cauldron to pour the river water into the cauldron.=Utilisez la touche "Utiliser" pour boire. Placez cet objet sur un chaudron pour verser l'eau de la rivière dans le chaudron.
Liquid container=Récipient de liquide
Splash Water Bottle=
Extinguishes fire and hurts some mobs=
A throwable water bottle that will shatter on impact, where it extinguishes nearby fire and hurts mobs that are vulnerable to water.=
Lingering Water Bottle=
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.=
Glistering Melon=Melon étincelant
This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else.=Ce melon brillant est plein de minuscules pépites d'or et serait bien dans un cadre d'objet. Il n'est pas comestible et n'est utile à rien d'autre.
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.=
Lingering Weakness Potion=
Lingering Weakness Potion +=
Lingering Strength Potion=
Lingering Strength Potion II=
Lingering Strength Potion +=
Use the “Punch” key to throw it.=
Use the “Place” key to drink it.=Utilisez la touche "Utiliser" pour le boire.
Drinking a potion gives you a particular effect.=
1 HP/@1s | @2=
@1 HP=
@1 Potion=
Splash @1 Potion=
Lingering @1 Potion=
Arrow of @1=
II=
IV=
@1 Potion@2=
Splash @1@2 Potion=
Lingering @1@2 Potion=
Arrow of @1@2=
@1 + Potion=
Splash @1 + Potion=
Lingering @1 + Potion=
Arrow of @1 +=
Awkward Potion=Potion maladroite
Awkward Splash Potion=
Awkward Lingering Potion=
Has an awkward taste and is used for brewing potions.=
Mundane Potion=Potion mondaine
Mundane Splash Potion=
Mundane Lingering Potion=
Has a terrible taste and is not useful for brewing potions.=
Thick Potion=Potion épaisse
Thick Splash Potion=
Thick Lingering Potion=
Has a bitter taste and is not useful for brewing potions.=
Dragon's Breath=Le souffle du dragon
This item is used in brewing and can be combined with splash potions to create lingering potions.=
Healing=
+4 HP=
+8 HP=
Instantly heals.=
Harming=
-6 HP=
-12 HP=
Instantly deals damage.=
Night Vision=
Grants the ability to see in darkness.=
Swiftness=
Increases walking speed.=
Slowness=
Decreases walking speed.=
Leaping=
Increases jump strength.=
Poison=
Applies the poison effect which deals damage at a regular interval.=
Regeneration=
Regenerates health over time.=
Invisibility=
Grants invisibility.=
Water Breathing=
Grants limitless breath underwater.=
Fire Resistance=
Grants immunity to damage from heat sources like fire.=
Weakness=
-4 HP damage | 1:30=
Weakness +=
-4 HP damage | 4:00=
Strength=
+3 HP damage | 3:00=
Strength II=
+6 HP damage | 1:30=
Strength +=
+3 HP damage | 8:00=
Try different combinations to create potions.=
No effect=Aucun effet
A throwable potion that will shatter on impact, where it gives all nearby players and mobs a status effect.=
Weakness Splash Potion=
Weakness Splash Potion +=
Strength Splash Potion=
Strength Splash Potion II=
Strength Splash Potion +=
This particular arrow is tipped and will give an effect when it hits a player or mob.=

View file

@ -1,25 +1,123 @@
# textdomain: mcl_potions
Put this item in an item frame for decoration. It's useless otherwise.=Положите этот предмет в рамку для красоты. Для всего остального он бесполезен.
Fermented Spider Eye=Прокисший паучий глаз
Glass Bottle=Стеклянная бутылка
Liquid container=Контейнер для жидкостей
A glass bottle is used as a container for liquids and can be used to collect water directly.=Стеклянная бутылка используется для хранения жидкостей, её также можно использовать для сбора воды.
To collect water, use it on a cauldron with water (which removes a level of water) or any water source (which removes no water).=Воду в бутылку можно набрать из котла с помощью команды [Использовать] (это уменьшает уровень воды в котле) или из другого источника (уровень которого не уменьшится).
Water Bottle=Бутылка с водой
Water bottles can be used to fill cauldrons. Drinking water has no effect.=Бутылки с водой можно использовать для наполнения котлов. Выпивание воды не даст никакого эффекта.
Rightclick to drink. Rightclick a cauldron to pour the water into the cauldron.=Кликните правой, чтобы выпить. Правый клик по котлу выльет воду из бутылки в котёл.
Use the “Place” key to drink. Place this item on a cauldron to pour the water into the cauldron.=Используйте клавишу “Разместить”, чтобы выпить это. Поместите этот предмет на котёл, чтобы вылить воду в котёл.
River Water Bottle=Бутылка с речной водой
River water bottles can be used to fill cauldrons. Drinking it has no effect.=Бутылки с речной водой можно использовать для наполнения котлов. Выпивание воды не даст никакого эффекта.
Awkward Potion=Невкусное зелье
This potion has an awkward taste and is used for brewing more potions. Drinking it has no effect.=Невкусное зелье используется для приготовления других зелий. Приём внутрь не даёт никакого эффекта.
Mundane Potion=Успокоительное зелье
This potion has a clean taste and is used for brewing more potions. Drinking it has no effect.=Успокоительное зелье имеет чистый вкус и используется для приготовления других зелий. Приём внутрь не даёт никакого эффекта.
Thick Potion=Густое зелье
This potion has a bitter taste and is used for brewing more potions. Drinking it has no effect.=Густое зелье имеет горький вкус и используется для приготовления других зелий. Приём внутрь не даёт никакого эффекта.
Glistering Melon=Искрящаяся дыня
This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else.=Искрящаяся дыня полна маленьких золотых самородков и может отлично смотреться в рамке. Она несъедобна и не годится больше ни для чего.
Dragon's Breath=Дыхание дракона
Use the “Place” key to drink it.=Используйте клавишу “Разместить”, чтобы выпить это.
Use the “Place” key to drink. Place this item on a cauldron to pour the water into the cauldron.=Используйте клавишу “Разместить”, чтобы выпить это. Поместите этот предмет на котёл, чтобы вылить воду в котёл.
Use the “Place” key to drink. Place this item on a cauldron to pour the river water into the cauldron.=Используйте клавишу “Разместить”, чтобы выпить это. Поместите этот предмет на котёл, чтобы вылить речную воду в котёл.
Liquid container=Контейнер для жидкостей
Splash Water Bottle=
Extinguishes fire and hurts some mobs=
A throwable water bottle that will shatter on impact, where it extinguishes nearby fire and hurts mobs that are vulnerable to water.=
Lingering Water Bottle=
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.=
Glistering Melon=Искрящаяся дыня
This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else.=Искрящаяся дыня полна маленьких золотых самородков и может отлично смотреться в рамке. Она несъедобна и не годится больше ни для чего.
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.=
Lingering Weakness Potion=
Lingering Weakness Potion +=
Lingering Strength Potion=
Lingering Strength Potion II=
Lingering Strength Potion +=
Use the “Punch” key to throw it.=
Use the “Place” key to drink it.=Используйте клавишу “Разместить”, чтобы выпить это.
Drinking a potion gives you a particular effect.=
1 HP/@1s | @2=
@1 HP=
@1 Potion=
Splash @1 Potion=
Lingering @1 Potion=
Arrow of @1=
II=
IV=
@1 Potion@2=
Splash @1@2 Potion=
Lingering @1@2 Potion=
Arrow of @1@2=
@1 + Potion=
Splash @1 + Potion=
Lingering @1 + Potion=
Arrow of @1 +=
Awkward Potion=Невкусное зелье
Awkward Splash Potion=
Awkward Lingering Potion=
Has an awkward taste and is used for brewing potions.=
Mundane Potion=Успокоительное зелье
Mundane Splash Potion=
Mundane Lingering Potion=
Has a terrible taste and is not useful for brewing potions.=
Thick Potion=Густое зелье
Thick Splash Potion=
Thick Lingering Potion=
Has a bitter taste and is not useful for brewing potions.=
Dragon's Breath=Дыхание дракона
This item is used in brewing and can be combined with splash potions to create lingering potions.=
Healing=
+4 HP=
+8 HP=
Instantly heals.=
Harming=
-6 HP=
-12 HP=
Instantly deals damage.=
Night Vision=
Grants the ability to see in darkness.=
Swiftness=
Increases walking speed.=
Slowness=
Decreases walking speed.=
Leaping=
Increases jump strength.=
Poison=
Applies the poison effect which deals damage at a regular interval.=
Regeneration=
Regenerates health over time.=
Invisibility=
Grants invisibility.=
Water Breathing=
Grants limitless breath underwater.=
Fire Resistance=
Grants immunity to damage from heat sources like fire.=
Weakness=
-4 HP damage | 1:30=
Weakness +=
-4 HP damage | 4:00=
Strength=
+3 HP damage | 3:00=
Strength II=
+6 HP damage | 1:30=
Strength +=
+3 HP damage | 8:00=
Try different combinations to create potions.=
No effect=Не оказывает эффекта
A throwable potion that will shatter on impact, where it gives all nearby players and mobs a status effect.=
Weakness Splash Potion=
Weakness Splash Potion +=
Strength Splash Potion=
Strength Splash Potion II=
Strength Splash Potion +=
This particular arrow is tipped and will give an effect when it hits a player or mob.=

View file

@ -1,25 +1,123 @@
# textdomain: mcl_potions
Put this item in an item frame for decoration. It's useless otherwise.=
Fermented Spider Eye=
Glass Bottle=
Liquid container=
A glass bottle is used as a container for liquids and can be used to collect water directly.=
To collect water, use it on a cauldron with water (which removes a level of water) or any water source (which removes no water).=
Water Bottle=
Water bottles can be used to fill cauldrons. Drinking water has no effect.=
Rightclick to drink. Rightclick a cauldron to pour the water into the cauldron.=
Use the “Place” key to drink. Place this item on a cauldron to pour the water into the cauldron.=
River Water Bottle=
River water bottles can be used to fill cauldrons. Drinking it has no effect.=
Awkward Potion=
This potion has an awkward taste and is used for brewing more potions. Drinking it has no effect.=
Mundane Potion=
This potion has a clean taste and is used for brewing more potions. Drinking it has no effect.=
Thick Potion=
This potion has a bitter taste and is used for brewing more potions. Drinking it has no effect.=
Glistering Melon=
This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else.=
Dragon's Breath=
Use the “Place” key to drink it.=
Use the “Place” key to drink. Place this item on a cauldron to pour the water into the cauldron.=
Use the “Place” key to drink. Place this item on a cauldron to pour the river water into the cauldron.=
Liquid container=
Splash Water Bottle=
Extinguishes fire and hurts some mobs=
A throwable water bottle that will shatter on impact, where it extinguishes nearby fire and hurts mobs that are vulnerable to water.=
Lingering Water Bottle=
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.=
Glistering Melon=
This shiny melon is full of tiny gold nuggets and would be nice in an item frame. It isn't edible and not useful for anything else.=
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.=
Lingering Weakness Potion=
Lingering Weakness Potion +=
Lingering Strength Potion=
Lingering Strength Potion II=
Lingering Strength Potion +=
Use the “Punch” key to throw it.=
Use the “Place” key to drink it.=
Drinking a potion gives you a particular effect.=
1 HP/@1s | @2=
@1 HP=
@1 Potion=
Splash @1 Potion=
Lingering @1 Potion=
Arrow of @1=
II=
IV=
@1 Potion@2=
Splash @1@2 Potion=
Lingering @1@2 Potion=
Arrow of @1@2=
@1 + Potion=
Splash @1 + Potion=
Lingering @1 + Potion=
Arrow of @1 +=
Awkward Potion=
Awkward Splash Potion=
Awkward Lingering Potion=
Has an awkward taste and is used for brewing potions.=
Mundane Potion=
Mundane Splash Potion=
Mundane Lingering Potion=
Has a terrible taste and is not useful for brewing potions.=
Thick Potion=
Thick Splash Potion=
Thick Lingering Potion=
Has a bitter taste and is not useful for brewing potions.=
Dragon's Breath=
This item is used in brewing and can be combined with splash potions to create lingering potions.=
Healing=
+4 HP=
+8 HP=
Instantly heals.=
Harming=
-6 HP=
-12 HP=
Instantly deals damage.=
Night Vision=
Grants the ability to see in darkness.=
Swiftness=
Increases walking speed.=
Slowness=
Decreases walking speed.=
Leaping=
Increases jump strength.=
Poison=
Applies the poison effect which deals damage at a regular interval.=
Regeneration=
Regenerates health over time.=
Invisibility=
Grants invisibility.=
Water Breathing=
Grants limitless breath underwater.=
Fire Resistance=
Grants immunity to damage from heat sources like fire.=
Weakness=
-4 HP damage | 1:30=
Weakness +=
-4 HP damage | 4:00=
Strength=
+3 HP damage | 3:00=
Strength II=
+6 HP damage | 1:30=
Strength +=
+3 HP damage | 8:00=
Try different combinations to create potions.=
No effect=
A throwable potion that will shatter on impact, where it gives all nearby players and mobs a status effect.=
Weakness Splash Potion=
Weakness Splash Potion +=
Strength Splash Potion=
Strength Splash Potion II=
Strength Splash Potion +=
This particular arrow is tipped and will give an effect when it hits a player or mob.=

View file

@ -0,0 +1,2 @@
name = mcl_potions
depends = mcl_core, mcl_farming, mcl_mobitems, mcl_fishing, mcl_bows, mcl_end, playerphysics

View file

@ -67,10 +67,10 @@ 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.."s | "..time_string(dur)
_tt = S("1 HP/@1s | @2", effect, time_string(dur))
end
elseif def.name == "healing" or def.name == "harming" then
_tt = ((effect / 2) - ((effect / 2)% 0.5)).." hearts"
_tt = S("@1 HP", effect)
else
_tt = tt or time_string(dur) or S("No effect")
end
@ -109,7 +109,11 @@ local function register_potion(def)
local desc
if not def.no_potion then
desc = S("@1 Potion", def.description)
if def.description_potion then
desc = def.description_potion
else
desc = S("@1 Potion", def.description)
end
else
desc = def.description
end
@ -173,8 +177,19 @@ local function register_potion(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)
local desc
if def.description_splash then
desc = def.description_splash
else
desc = S("Splash @1 Potion", def.description)
end
mcl_potions.register_splash(def.name, desc, def.color, splash_def)
if def.description_lingering then
desc = def.description_lingering
else
desc = S("Lingering @1 Potion", def.description)
end
mcl_potions.register_lingering(def.name, desc, 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
@ -357,7 +372,9 @@ end
local awkward_def = {
name = "awkward",
description = S("Awkward"),
description_potion = S("Awkward Potion"),
description_splash = S("Awkward Splash Potion"),
description_lingering = S("Awkward Lingering Potion"),
no_arrow = true,
no_effect = true,
_tt = S("No effect"),
@ -369,7 +386,9 @@ local awkward_def = {
local mundane_def = {
name = "mundane",
description = S("Mundane"),
description_potion = S("Mundane Potion"),
description_splash = S("Mundane Splash Potion"),
description_lingering = S("Mundane Lingering Potion"),
no_arrow = true,
no_effect = true,
_tt = S("No effect"),
@ -380,7 +399,9 @@ local mundane_def = {
local thick_def = {
name = "thick",
description = S("Thick"),
description_potion = S("Thick Potion"),
description_splash = S("Thick Splash Potion"),
description_lingering = S("Thick Lingering Potion"),
no_arrow = true,
no_effect = true,
_tt = S("No effect"),
@ -406,8 +427,8 @@ local dragon_breath_def = {
local healing_def = {
name = "healing",
description = S("Healing"),
_tt = S("+2 hearts"),
_tt_2 = S("+4 hearts"),
_tt = S("+4 HP"),
_tt_2 = S("+8 HP"),
_longdesc = S("Instantly heals."),
color = "#CC0000",
effect = 4,
@ -419,8 +440,8 @@ local healing_def = {
local harming_def = {
name = "harming",
description = S("Harming"),
_tt = S("-3 hearts"),
_tt_II = S("-6 hearts"),
_tt = S("-6 HP"),
_tt_II = S("-12 HP"),
_longdesc = S("Instantly deals damage."),
color = "#660099",
effect = -6,

View file

@ -1,4 +1,5 @@
local S = minetest.get_translator("mcl_potions")
local GRAVITY = tonumber(minetest.settings:get("movement_gravity"))
local splash_image = function(colorstring, opacity)
if not opacity then
@ -54,32 +55,45 @@ function mcl_potions.register_splash(name, descr, color, def)
textures = {splash_image(color)},
hp_max = 1,
visual_size = {x=w/2,y=w/2},
collisionbox = {0,0,0,0,0,0},
collisionbox = {-0.1,-0.1,-0.1,0.1,0.1,0.1},
pointable = false,
on_step = function(self, dtime)
local pos = self.object:getpos()
local pos = self.object:get_pos()
local node = minetest.get_node(pos)
local n = node.name
local d = 2
local d = 0.1
local redux_map = {7/8,0.5,0.25}
if n ~= "air" and n ~= "mcl_portals:portal" and n ~= "mcl_portals:portal_end" or mcl_potions.is_obj_hit(self, pos) then
minetest.sound_play("mcl_potions_breaking_glass", {pos = pos, max_hear_distance = 16, gain = 1})
local texture, acc
if name == "water" then
texture = "mcl_potions_droplet.png"
acc = {x=0, y=-GRAVITY, z=0}
else
texture = "mcl_potions_sprite.png"
acc = {x=0, y=0, z=0}
end
minetest.add_particlespawner({
amount = 50,
time = 2,
minpos = {x=pos.x-d, y=pos.y+0.5, z=pos.z-d},
maxpos = {x=pos.x+d, y=pos.y+d, z=pos.z+d},
minvel = {x=-1, y=0, z=-1},
maxvel = {x=1, y=0.5, z=1},
minacc = {x=-0.5, y=0, z=-0.5},
maxacc = {x=0.5, y=.2, z=0.5},
minexptime = 1,
maxexptime = 3,
minsize = 2,
maxsize = 4,
collisiondetection = true,
vertical = false,
texture = "mcl_potions_sprite.png^[colorize:"..color..":127",
})
amount = 50,
time = 0.1,
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},
minvel = {x=-2, y=0, z=-2},
maxvel = {x=2, y=2, z=2},
minacc = acc,
maxacc = acc,
minexptime = 0.5,
maxexptime = 1.25,
minsize = 1,
maxsize = 2,
collisiondetection = true,
vertical = false,
texture = texture.."^[colorize:"..color..":127"
})
if name == "water" then
mcl_potions._extinguish_nearby_fire(pos)
end
self.object:remove()
for _,obj in pairs(minetest.get_objects_inside_radius(pos, 4)) do

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 B

View file

@ -32,16 +32,17 @@ local how_to_shoot = minetest.registered_items["mcl_bows:arrow"]._doc_items_usag
local mod_awards = minetest.get_modpath("awards") and minetest.get_modpath("mcl_achievements")
local mod_button = minetest.get_modpath("mesecons_button")
local arrow_longdesc = minetest.registered_items["mcl_bows:arrow"]._doc_items_longdesc or ""
local arrow_tt = minetest.registered_items["mcl_bows:arrow"]._tt_help or ""
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.").."\n"..
S("This particular arrow is tipped and will give an effect when it hits a player or mob.").."\n"..
_tt_help = arrow_tt .. "\n" .. def.tt,
_doc_items_longdesc = arrow_longdesc .. "\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)",

View file

@ -116,3 +116,11 @@ minetest.register_craft({
output = "mcl_core:gold_ingot 9",
recipe = {{ "mcl_core:emerald" }},
})
minetest.register_craft({
output = "mcl_potions:dragon_breath 3",
recipe = {
{"","mcl_end:chorus_flower",""},
{"mcl_potions:glass_bottle","mcl_potions:glass_bottle","mcl_potions:glass_bottle"},
}
})