Merge branch 'bzoss_brew' of https://git.minetest.land/Wuzzy/MineClone2 into bzoss_brew
@ -201,7 +201,11 @@ There are so many people to list (sorry). Check out the respective mod directori
|
|||||||
* [Rootyjr](https://github.com/Rootyjr): Fishing rod and bugfixes
|
* [Rootyjr](https://github.com/Rootyjr): Fishing rod and bugfixes
|
||||||
* [aligator](https://github.com/aligator): Improvement of doors
|
* [aligator](https://github.com/aligator): Improvement of doors
|
||||||
* [ryvnf](https://github.com/ryvnf): Explosion mechanics
|
* [ryvnf](https://github.com/ryvnf): Explosion mechanics
|
||||||
|
<<<<<<< HEAD
|
||||||
* MysticTempest: Bugfixes
|
* MysticTempest: Bugfixes
|
||||||
|
=======
|
||||||
|
* bzoss <brandonzoss@gmail.com>: Brewing Stand
|
||||||
|
>>>>>>> 56a89405107fd3cd9c913a3284f8c9974aa51f62
|
||||||
* Lots of other people: TO BE WRITTEN (see mod directories for details)
|
* Lots of other people: TO BE WRITTEN (see mod directories for details)
|
||||||
|
|
||||||
#### Mod credits (summary)
|
#### Mod credits (summary)
|
||||||
|
@ -343,7 +343,11 @@ local function trace_explode(pos, strength, raydirs, radius, drop_chance, fire,
|
|||||||
minetest.bulk_set_node(airs, {name="air"})
|
minetest.bulk_set_node(airs, {name="air"})
|
||||||
end
|
end
|
||||||
if #fires > 0 then
|
if #fires > 0 then
|
||||||
|
<<<<<<< HEAD
|
||||||
minetest.bulk_set_node(fires, {name="mcl_fire:fire"})
|
minetest.bulk_set_node(fires, {name="mcl_fire:fire"})
|
||||||
|
=======
|
||||||
|
minetest.bulk_set_node(fires, {name="mcl_core:fire"})
|
||||||
|
>>>>>>> 56a89405107fd3cd9c913a3284f8c9974aa51f62
|
||||||
end
|
end
|
||||||
-- Update falling nodes
|
-- Update falling nodes
|
||||||
for a=1, #airs do
|
for a=1, #airs do
|
||||||
|
7
mods/ITEMS/mcl_brewing/depends.txt
Executable file
@ -0,0 +1,7 @@
|
|||||||
|
mcl_init
|
||||||
|
mcl_formspec
|
||||||
|
mcl_sounds
|
||||||
|
mcl_potions
|
||||||
|
mcl_mobitems
|
||||||
|
mcl_core?
|
||||||
|
screwdriver?
|
1066
mods/ITEMS/mcl_brewing/init.lua
Executable file
3
mods/ITEMS/mcl_brewing/locale/template.txt
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
# 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.
|
1
mods/ITEMS/mcl_brewing/mod.conf
Executable file
@ -0,0 +1 @@
|
|||||||
|
name = mcl_brewing
|
BIN
mods/ITEMS/mcl_brewing/sounds/mcl_brewing_complete.ogg
Normal file
BIN
mods/ITEMS/mcl_brewing/textures/mcl_brewing_base.png
Normal file
After Width: | Height: | Size: 191 B |
BIN
mods/ITEMS/mcl_brewing/textures/mcl_brewing_bottle_bg.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
mods/ITEMS/mcl_brewing/textures/mcl_brewing_bubbles.png
Normal file
After Width: | Height: | Size: 193 B |
BIN
mods/ITEMS/mcl_brewing/textures/mcl_brewing_bubbles_active.png
Normal file
After Width: | Height: | Size: 194 B |
BIN
mods/ITEMS/mcl_brewing/textures/mcl_brewing_burner.png
Normal file
After Width: | Height: | Size: 147 B |
BIN
mods/ITEMS/mcl_brewing/textures/mcl_brewing_burner_active.png
Normal file
After Width: | Height: | Size: 157 B |
BIN
mods/ITEMS/mcl_brewing/textures/mcl_brewing_fuel_bg.png
Executable file
After Width: | Height: | Size: 250 B |
BIN
mods/ITEMS/mcl_brewing/textures/mcl_brewing_inventory.png
Executable file
After Width: | Height: | Size: 1.0 KiB |
BIN
mods/ITEMS/mcl_brewing/textures/mcl_brewing_potion_bg.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
mods/ITEMS/mcl_brewing/textures/mcl_brewing_side.png
Normal file
After Width: | Height: | Size: 392 B |
BIN
mods/ITEMS/mcl_brewing/textures/mcl_brewing_top.png
Normal file
After Width: | Height: | Size: 404 B |
@ -1,3 +1,5 @@
|
|||||||
mcl_core
|
mcl_core
|
||||||
mcl_farming
|
mcl_farming
|
||||||
mcl_mobitems
|
mcl_mobitems
|
||||||
|
mcl_fishing
|
||||||
|
playerphysics
|
||||||
|
67
mods/ITEMS/mcl_potions/functions.lua
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
local invisibility = {}
|
||||||
|
|
||||||
|
-- reset player invisibility if they go offline
|
||||||
|
minetest.register_on_leaveplayer(function(player)
|
||||||
|
|
||||||
|
local name = player:get_player_name()
|
||||||
|
if invisibility[name] then
|
||||||
|
invisibility[name] = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
end)
|
||||||
|
|
||||||
|
function mcl_potions.invisible(player, toggle)
|
||||||
|
|
||||||
|
if not player then return false end
|
||||||
|
|
||||||
|
invisibility[player:get_player_name()] = toggle
|
||||||
|
|
||||||
|
if toggle then -- hide player
|
||||||
|
player:set_properties({visual_size = {x = 0, y = 0}})
|
||||||
|
player:set_nametag_attributes({color = {a = 0}})
|
||||||
|
else -- show player
|
||||||
|
player:set_properties({visual_size = {x = 1, y = 1}})
|
||||||
|
player:set_nametag_attributes({color = {a = 255}})
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
function mcl_potions._use_potion(item)
|
||||||
|
item:replace("mcl_potions:glass_bottle")
|
||||||
|
minetest.sound_play("mcl_potions_drinking")
|
||||||
|
end
|
||||||
|
|
||||||
|
function mcl_potions.healing_func(player, hp) player:set_hp(player:get_hp() + hp) end
|
||||||
|
|
||||||
|
function mcl_potions.swiftness_func(player, factor, duration)
|
||||||
|
playerphysics.add_physics_factor(player, "speed", "swiftness", factor)
|
||||||
|
minetest.after(duration, function() playerphysics.remove_physics_factor(player, "speed", "swiftness") end )
|
||||||
|
end
|
||||||
|
|
||||||
|
function mcl_potions.leaping_func(player, factor, duration)
|
||||||
|
playerphysics.add_physics_factor(player, "jump", "leaping", factor)
|
||||||
|
minetest.after(duration, function() playerphysics.remove_physics_factor(player, "jump", "leaping") end )
|
||||||
|
end
|
||||||
|
|
||||||
|
function mcl_potions.weakness_func(player, factor, duration)
|
||||||
|
player:set_attribute("weakness", tostring(factor))
|
||||||
|
print(player:get_player_name().." ".."weakness = "..player:get_attribute("weakness"))
|
||||||
|
minetest.after(duration, function() player:set_attribute("weakness", tostring(0)) end )
|
||||||
|
end
|
||||||
|
|
||||||
|
function mcl_potions.poison_func(player, factor, duration)
|
||||||
|
player:set_attribute("poison", tostring(factor))
|
||||||
|
print(player:get_player_name().." ".."poison = "..player:get_attribute("poison"))
|
||||||
|
minetest.after(duration, function() player:set_attribute("poison", tostring(0)) end )
|
||||||
|
end
|
||||||
|
|
||||||
|
function mcl_potions.regeneration_func(player, factor, duration)
|
||||||
|
player:set_attribute("regeneration", tostring(factor))
|
||||||
|
print(player:get_player_name().." ".."regeneration = "..player:get_attribute("regeneration"))
|
||||||
|
minetest.after(duration, function() player:set_attribute("regeneration", tostring(0)) end )
|
||||||
|
end
|
||||||
|
|
||||||
|
function mcl_potions.invisiblility_func(player, duration)
|
||||||
|
mcl_potions.invisible(player, true)
|
||||||
|
minetest.after(duration, function() mcl_potions.invisible(player, false) end )
|
||||||
|
end
|
@ -1,4 +1,10 @@
|
|||||||
local S = minetest.get_translator("mcl_potions")
|
local S = minetest.get_translator("mcl_potions")
|
||||||
|
mcl_potions = {}
|
||||||
|
|
||||||
|
local modpath = minetest.get_modpath("mcl_potions")
|
||||||
|
dofile(modpath .. "/functions.lua")
|
||||||
|
dofile(modpath .. "/splash.lua")
|
||||||
|
dofile(modpath .. "/potions.lua")
|
||||||
|
|
||||||
local brewhelp = S("Put this item in an item frame for decoration. It's useless otherwise.")
|
local brewhelp = S("Put this item in an item frame for decoration. It's useless otherwise.")
|
||||||
|
|
||||||
@ -8,7 +14,7 @@ minetest.register_craftitem("mcl_potions:fermented_spider_eye", {
|
|||||||
wield_image = "mcl_potions_spider_eye_fermented.png",
|
wield_image = "mcl_potions_spider_eye_fermented.png",
|
||||||
inventory_image = "mcl_potions_spider_eye_fermented.png",
|
inventory_image = "mcl_potions_spider_eye_fermented.png",
|
||||||
-- TODO: Reveal item when it's actually useful
|
-- TODO: Reveal item when it's actually useful
|
||||||
groups = { brewitem = 1, not_in_creative_inventory = 1, not_in_craft_guide = 1 },
|
groups = { brewitem = 1, not_in_creative_inventory = 0, not_in_craft_guide = 0 },
|
||||||
stack_max = 64,
|
stack_max = 64,
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -33,7 +39,7 @@ minetest.register_craftitem("mcl_potions:glass_bottle", {
|
|||||||
local def = minetest.registered_nodes[node.name]
|
local def = minetest.registered_nodes[node.name]
|
||||||
|
|
||||||
-- Call on_rightclick if the pointed node defines it
|
-- Call on_rightclick if the pointed node defines it
|
||||||
if placer and not placer :get_player_control().sneak then
|
if placer and not placer:get_player_control().sneak then
|
||||||
if def and def.on_rightclick then
|
if def and def.on_rightclick then
|
||||||
return def.on_rightclick(pointed_thing.under, node, placer, itemstack) or itemstack
|
return def.on_rightclick(pointed_thing.under, node, placer, itemstack) or itemstack
|
||||||
end
|
end
|
||||||
@ -130,9 +136,11 @@ local potion_image = function(colorstring, opacity)
|
|||||||
if not opacity then
|
if not opacity then
|
||||||
opacity = 127
|
opacity = 127
|
||||||
end
|
end
|
||||||
return "mcl_potions_potion_bottle_drinkable.png^(mcl_potions_potion_overlay.png^[colorize:"..colorstring..":"..tostring(opacity)..")"
|
return "mcl_potions_potion_overlay.png^[colorize:"..colorstring..":"..tostring(opacity).."^mcl_potions_potion_bottle_drinkable.png"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Cauldron fill up rules:
|
-- Cauldron fill up rules:
|
||||||
-- Adding any water increases the water level by 1, preserving the current water type
|
-- Adding any water increases the water level by 1, preserving the current water type
|
||||||
local cauldron_levels = {
|
local cauldron_levels = {
|
||||||
@ -250,55 +258,11 @@ minetest.register_craftitem("mcl_potions:potion_river_water", {
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
local how_to_drink = S("Use the “Place” key to drink it.")
|
|
||||||
|
|
||||||
minetest.register_craftitem("mcl_potions:potion_awkward", {
|
|
||||||
description = S("Awkward Potion"),
|
|
||||||
_tt_help = S("No effect"),
|
|
||||||
_doc_items_longdesc = S("This potion has an awkward taste and is used for brewing more potions. Drinking it has no effect."),
|
|
||||||
_doc_items_usagehelp = how_to_drink,
|
|
||||||
stack_max = 1,
|
|
||||||
inventory_image = potion_image("#0000FF"),
|
|
||||||
wield_image = potion_image("#0000FF"),
|
|
||||||
-- TODO: Reveal item when it's actually useful
|
|
||||||
groups = {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=1},
|
|
||||||
on_place = minetest.item_eat(0, "mcl_potions:glass_bottle"),
|
|
||||||
on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"),
|
|
||||||
})
|
|
||||||
minetest.register_craftitem("mcl_potions:potion_mundane", {
|
|
||||||
description = S("Mundane Potion"),
|
|
||||||
_tt_help = S("No effect"),
|
|
||||||
_doc_items_longdesc = S("This potion has a clean taste and is used for brewing more potions. Drinking it has no effect."),
|
|
||||||
_doc_items_usagehelp = how_to_drink,
|
|
||||||
stack_max = 1,
|
|
||||||
inventory_image = potion_image("#0000FF"),
|
|
||||||
wield_image = potion_image("#0000FF"),
|
|
||||||
-- TODO: Reveal item when it's actually useful
|
|
||||||
groups = {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=1 },
|
|
||||||
on_place = minetest.item_eat(0, "mcl_potions:glass_bottle"),
|
|
||||||
on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"),
|
|
||||||
})
|
|
||||||
minetest.register_craftitem("mcl_potions:potion_thick", {
|
|
||||||
description = S("Thick Potion"),
|
|
||||||
_tt_help = S("No effect"),
|
|
||||||
_doc_items_longdesc = S("This potion has a bitter taste and is used for brewing more potions. Drinking it has no effect."),
|
|
||||||
_doc_items_usagehelp = how_to_drink,
|
|
||||||
stack_max = 1,
|
|
||||||
inventory_image = potion_image("#0000FF"),
|
|
||||||
wield_image = potion_image("#0000FF"),
|
|
||||||
-- TODO: Reveal item when it's actually useful
|
|
||||||
groups = {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=1 },
|
|
||||||
on_place = minetest.item_eat(0, "mcl_potions:glass_bottle"),
|
|
||||||
on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"),
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craftitem("mcl_potions:speckled_melon", {
|
minetest.register_craftitem("mcl_potions:speckled_melon", {
|
||||||
description = S("Glistering 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."),
|
_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,
|
stack_max = 64,
|
||||||
-- TODO: Reveal item when it's actually useful
|
groups = { brewitem = 1, not_in_creative_inventory = 0, not_in_craft_guide = 1 },
|
||||||
groups = { brewitem = 1, not_in_creative_inventory = 1, not_in_craft_guide = 1 },
|
|
||||||
inventory_image = "mcl_potions_melon_speckled.png",
|
inventory_image = "mcl_potions_melon_speckled.png",
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -311,12 +275,121 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craftitem("mcl_potions:dragon_breath", {
|
|
||||||
description = S("Dragon's Breath"),
|
-- duration effects of redstone are a factor of 8/3
|
||||||
_doc_items_longdesc = brewhelp,
|
-- duration effects of glowstone are a time factor of 1/2 and effect of 14/12
|
||||||
wield_image = "mcl_potions_dragon_breath.png",
|
-- splash potion effects are reduced by a factor of 3/4
|
||||||
inventory_image = "mcl_potions_dragon_breath.png",
|
|
||||||
-- TODO: Reveal item when it's actually useful
|
local water_table = {
|
||||||
groups = { brewitem = 1, not_in_creative_inventory = 1 },
|
["mcl_nether:nether_wart_item"] = "mcl_potions:awkward",
|
||||||
stack_max = 64,
|
["mcl_potions:fermented_spider_eye"] = "mcl_potions:weakness",
|
||||||
})
|
["mcl_potions:speckled_melon"] = "mcl_potions:mundane",
|
||||||
|
["mcl_core:sugar"] = "mcl_potions:mundane",
|
||||||
|
["mcl_mobitems:magma_cream"] = "mcl_potions:mundane",
|
||||||
|
["mcl_mobitems:blaze_powder"] = "mcl_potions:mundane",
|
||||||
|
["mesecons:wire_00000000_off"] = "mcl_potions:mundane",
|
||||||
|
["mcl_mobitems:ghast_tear"] = "mcl_potions:mundane",
|
||||||
|
["mcl_mobitems:spider_eye"] = "mcl_potions:mundane",
|
||||||
|
["mcl_mobitems:rabbit_foot"] = "mcl_potions:mundane"
|
||||||
|
}
|
||||||
|
|
||||||
|
local awkward_table = {
|
||||||
|
["mcl_potions:speckled_melon"] = "mcl_potions:healing",
|
||||||
|
["mcl_farming:carrot_item_gold"] = "mcl_potions:night_vision",
|
||||||
|
["mcl_core:sugar"] = "mcl_potions:swiftness",
|
||||||
|
["mcl_mobitems:magma_cream"] = "mcl_potions:fire_resistance", --add craft
|
||||||
|
["mcl_mobitems:blaze_powder"] = "mcl_potions:strength", --add craft
|
||||||
|
["mcl_fishing:pufferfish_raw"] = "mcl_potions:water_breathing", --add craft
|
||||||
|
["mcl_mobitems:ghast_tear"] = "mcl_potions:regeneration", --add craft
|
||||||
|
["mcl_mobitems:spider_eye"] = "mcl_potions:poison", --add craft
|
||||||
|
["mcl_mobitems:rabbit_foot"] = "mcl_potions:leaping", --add craft
|
||||||
|
}
|
||||||
|
|
||||||
|
local output_table = {
|
||||||
|
["mcl_potions:potion_river_water"] = water_table,
|
||||||
|
["mcl_potions:potion_water"] = water_table,
|
||||||
|
["mcl_potions:awkward"] = awkward_table,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
local enhancement_table = {}
|
||||||
|
local extension_table = {}
|
||||||
|
local potions = {"awkward", "mundane", "thick"}
|
||||||
|
for i, potion in ipairs({"healing","harming","swiftness","leaping","poison","regeneration","invisibility","weakness"}) do
|
||||||
|
|
||||||
|
table.insert(potions, potion)
|
||||||
|
|
||||||
|
if potion ~= "invisibility" and potion ~= "night_vision" and potion ~= "weakness" then
|
||||||
|
enhancement_table["mcl_potions:"..potion] = "mcl_potions:"..potion.."_2"
|
||||||
|
enhancement_table["mcl_potions:"..potion.."_splash"] = "mcl_potions:"..potion.."_2_splash"
|
||||||
|
table.insert(potions, potion.."_2")
|
||||||
|
end
|
||||||
|
|
||||||
|
if potion ~= "healing" and potion ~= "harming" then
|
||||||
|
extension_table["mcl_potions:"..potion.."_splash"] = "mcl_potions:"..potion.."_plus_splash"
|
||||||
|
extension_table["mcl_potions:"..potion] = "mcl_potions:"..potion.."_plus"
|
||||||
|
table.insert(potions, potion.."_plus")
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local inversion_table = {
|
||||||
|
["mcl_potions:healing"] = "mcl_potions:harming",
|
||||||
|
["mcl_potions:healing_2"] = "mcl_potions:harming_2",
|
||||||
|
["mcl_potions:swiftness"] = "mcl_potions:slowness",
|
||||||
|
["mcl_potions:swiftness_plus"] = "mlc_potions:slowness_plus",
|
||||||
|
["mcl_potions:leaping"] = "mcl_potions:slowness",
|
||||||
|
["mcl_potions:leaping_plus"] = "mcl_potions:slowness_plus",
|
||||||
|
["mcl_potions:night_vision"] = "mcl_potions:invisibility",
|
||||||
|
["mcl_potions:night_vision_plus"] = "mcl_potions:invisibility_plus",
|
||||||
|
["mcl_potions:poison"] = "mcl_potions:harming",
|
||||||
|
["mcl_potions:poison_2"] = "mcl_potions:harming_2",
|
||||||
|
["mcl_potions:healing_splash"] = "mcl_potions:harming_splash",
|
||||||
|
["mcl_potions:healing_2_splash"] = "mcl_potions:harming_2_splash",
|
||||||
|
["mcl_potions:swiftness_splash"] = "mcl_potions:slowness_splash",
|
||||||
|
["mcl_potions:swiftness_plus_splash"] = "mlc_potions:slowness_plus_splash",
|
||||||
|
["mcl_potions:leaping_splash"] = "mcl_potions:slowness_splash",
|
||||||
|
["mcl_potions:leaping_plus_splash"] = "mcl_potions:slowness_plus_splash",
|
||||||
|
["mcl_potions:night_vision_splash"] = "mcl_potions:invisibility_splash",
|
||||||
|
["mcl_potions:night_vision_plus_splash"] = "mcl_potions:invisibility_plus_splash",
|
||||||
|
["mcl_potions:poison_splash"] = "mcl_potions:harming_splash",
|
||||||
|
["mcl_potions:poison_2_splash"] = "mcl_potions:harming_2_splash",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
local splash_table = {}
|
||||||
|
local lingering_table = {}
|
||||||
|
|
||||||
|
for i, potion in ipairs(potions) do
|
||||||
|
splash_table["mcl_potions:"..potion] = "mcl_potions:"..potion.."_splash"
|
||||||
|
lingering_table["mcl_potions:"..potion.."_splash"] = "mcl_potions:"..potion.."_lingering"
|
||||||
|
end
|
||||||
|
|
||||||
|
local mod_table = {
|
||||||
|
["mesecons:wire_00000000_off"] = extension_table,
|
||||||
|
["mcl_potions:fermented_spider_eye"] = inversion_table,
|
||||||
|
["mcl_nether:glowstone_dust"] = enhancement_table,
|
||||||
|
["mcl_mobitems:gunpowder"] = splash_table,
|
||||||
|
["mcl_potions:dragon_breath"] = lingering_table,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Compare two ingredients for compatable alchemy
|
||||||
|
function mcl_potions.get_alchemy(ingr, pot)
|
||||||
|
|
||||||
|
if output_table[pot] ~= nil then
|
||||||
|
local brew_table = output_table[pot]
|
||||||
|
if brew_table[ingr] ~= nil then
|
||||||
|
return brew_table[ingr]
|
||||||
|
end
|
||||||
|
|
||||||
|
elseif mod_table[ingr] ~= nil then
|
||||||
|
local brew_table = mod_table[ingr]
|
||||||
|
if brew_table[pot] ~= nil then
|
||||||
|
return brew_table[pot]
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
549
mods/ITEMS/mcl_potions/potions.lua
Normal file
@ -0,0 +1,549 @@
|
|||||||
|
local S = minetest.get_translator("mcl_potions")
|
||||||
|
|
||||||
|
local potion_image = function(colorstring, opacity)
|
||||||
|
if not opacity then
|
||||||
|
opacity = 127
|
||||||
|
end
|
||||||
|
return "mcl_potions_potion_overlay.png^[colorize:"..colorstring..":"..tostring(opacity).."^mcl_potions_potion_bottle_drinkable.png"
|
||||||
|
end
|
||||||
|
|
||||||
|
local how_to_drink = S("Use the “Place” key to drink it.")
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:awkward", {
|
||||||
|
description = S("Awkward Potion"),
|
||||||
|
_tt_help = S("No effect"),
|
||||||
|
_doc_items_longdesc = S("This potion has an awkward taste and is used for brewing more potions. Drinking it has no effect."),
|
||||||
|
_doc_items_usagehelp = how_to_drink,
|
||||||
|
stack_max = 1,
|
||||||
|
inventory_image = potion_image("#0000FF"),
|
||||||
|
wield_image = potion_image("#0000FF"),
|
||||||
|
-- TODO: Reveal item when it's actually useful
|
||||||
|
groups = {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=1},
|
||||||
|
on_place = minetest.item_eat(0, "mcl_potions:glass_bottle"),
|
||||||
|
on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"),
|
||||||
|
})
|
||||||
|
minetest.register_craftitem("mcl_potions:mundane", {
|
||||||
|
description = S("Mundane Potion"),
|
||||||
|
_tt_help = S("No effect"),
|
||||||
|
_doc_items_longdesc = S("This potion has a clean taste and is used for brewing more potions. Drinking it has no effect."),
|
||||||
|
_doc_items_usagehelp = how_to_drink,
|
||||||
|
stack_max = 1,
|
||||||
|
inventory_image = potion_image("#0000FF"),
|
||||||
|
wield_image = potion_image("#0000FF"),
|
||||||
|
-- TODO: Reveal item when it's actually useful
|
||||||
|
groups = {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=1 },
|
||||||
|
on_place = minetest.item_eat(0, "mcl_potions:glass_bottle"),
|
||||||
|
on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"),
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:thick", {
|
||||||
|
description = S("Thick Potion"),
|
||||||
|
_tt_help = S("No effect"),
|
||||||
|
_doc_items_longdesc = S("This potion has a bitter taste and is used for brewing more potions. Drinking it has no effect."),
|
||||||
|
_doc_items_usagehelp = how_to_drink,
|
||||||
|
stack_max = 1,
|
||||||
|
inventory_image = potion_image("#0000FF"),
|
||||||
|
wield_image = potion_image("#0000FF"),
|
||||||
|
-- TODO: Reveal item when it's actually useful
|
||||||
|
groups = {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 },
|
||||||
|
on_place = minetest.item_eat(0, "mcl_potions:glass_bottle"),
|
||||||
|
on_secondary_use = minetest.item_eat(0, "mcl_potions:glass_bottle"),
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:dragon_breath", {
|
||||||
|
description = S("Dragon's Breath"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = "mcl_potions_dragon_breath.png",
|
||||||
|
inventory_image = "mcl_potions_dragon_breath.png",
|
||||||
|
groups = { brewitem = 1, not_in_creative_inventory = 0 },
|
||||||
|
stack_max = 1,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:healing", {
|
||||||
|
description = S("Healing Potion"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = potion_image("#CC0000"),
|
||||||
|
inventory_image = potion_image("#CC0000"),
|
||||||
|
groups = { brewitem = 1, food=3, can_eat_when_full=1 },
|
||||||
|
stack_max = 1,
|
||||||
|
|
||||||
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.healing_func(user, 4)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.healing_func(user, 4)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:healing_2", {
|
||||||
|
description = S("Healing Potion II"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = potion_image("#DD0000"),
|
||||||
|
inventory_image = potion_image("#DD0000"),
|
||||||
|
groups = { brewitem = 1, food=3, can_eat_when_full=1 },
|
||||||
|
stack_max = 1,
|
||||||
|
|
||||||
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.healing_func(user, 8)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.healing_func(user, 8)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:harming", {
|
||||||
|
description = S("Harming Potion"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = potion_image("#660099"),
|
||||||
|
inventory_image = potion_image("#660099"),
|
||||||
|
groups = { brewitem = 1, food=3, can_eat_when_full=1 },
|
||||||
|
stack_max = 1,
|
||||||
|
|
||||||
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.healing_func(user, -6)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.healing_func(user, -6)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:harming_2", {
|
||||||
|
description = S("Harming Potion II"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = potion_image("#330066"),
|
||||||
|
inventory_image = potion_image("#330066"),
|
||||||
|
groups = { brewitem = 1, food=3, can_eat_when_full=1 },
|
||||||
|
stack_max = 1,
|
||||||
|
|
||||||
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.healing_func(user, -12)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.healing_func(user, -12)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:night_vision", {
|
||||||
|
description = S("Night Vision Potion"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = "mcl_potions_night_vision.png",
|
||||||
|
inventory_image = "mcl_potions_night_vision.png",
|
||||||
|
groups = { brewitem = 1, food=0},
|
||||||
|
stack_max = 1,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:swiftness", {
|
||||||
|
description = S("Swiftness Potion"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = potion_image("#009999"),
|
||||||
|
inventory_image = potion_image("#009999"),
|
||||||
|
groups = { brewitem = 1, food=0},
|
||||||
|
stack_max = 1,
|
||||||
|
|
||||||
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.swiftness_func(user, 1.2, 180)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.swiftness_func(user, 1.2, 180)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:swiftness_2", {
|
||||||
|
description = S("Swiftness Potion II"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = potion_image("#00BBBB"),
|
||||||
|
inventory_image = potion_image("#00BBBB"),
|
||||||
|
groups = { brewitem = 1, food=0},
|
||||||
|
stack_max = 1,
|
||||||
|
|
||||||
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.swiftness_func(user, 1.4, 90)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.swiftness_func(user, 1.4, 90)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:swiftness_plus", {
|
||||||
|
description = S("Swiftness Potion +"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = potion_image("#00AAAA"),
|
||||||
|
inventory_image = potion_image("#00AAAA"),
|
||||||
|
groups = { brewitem = 1, food=0},
|
||||||
|
stack_max = 1,
|
||||||
|
|
||||||
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.swiftness_func(user, 1.2, 480)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.swiftness_func(user, 1.2, 480)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:slowness", {
|
||||||
|
description = S("Slowness Potion"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = potion_image("#000080"),
|
||||||
|
inventory_image = potion_image("#000080"),
|
||||||
|
groups = { brewitem = 1, food=0},
|
||||||
|
stack_max = 1,
|
||||||
|
|
||||||
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.swiftness_func(user, 0.85, 90)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.swiftness_func(user, 0.85, 90)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:slowness_plus", {
|
||||||
|
description = S("Slowness Potion +"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = potion_image("#000066"),
|
||||||
|
inventory_image = potion_image("#000066"),
|
||||||
|
groups = { brewitem = 1, food=0},
|
||||||
|
stack_max = 1,
|
||||||
|
|
||||||
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.swiftness_func(user, 0.85, 240)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.swiftness_func(user, 0.85, 240)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:leaping", {
|
||||||
|
description = S("Leaping Potion"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = potion_image("#00CC33"),
|
||||||
|
inventory_image = potion_image("#00CC33"),
|
||||||
|
groups = { brewitem = 1, food=0},
|
||||||
|
stack_max = 1,
|
||||||
|
|
||||||
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.leaping_func(user, 1.2, 180)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.leaping_func(user, 1.2, 180)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:leaping_2", {
|
||||||
|
description = S("Leaping Potion II"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = potion_image("#00EE33"),
|
||||||
|
inventory_image = potion_image("#00EE33"),
|
||||||
|
groups = { brewitem = 1, food=0},
|
||||||
|
stack_max = 1,
|
||||||
|
|
||||||
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.leaping_func(user, 1.4, 90)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.leaping_func(user, 1.4, 90)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:leaping_plus", {
|
||||||
|
description = S("Leaping Potion +"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = potion_image("#00DD33"),
|
||||||
|
inventory_image = potion_image("#00DD33"),
|
||||||
|
groups = { brewitem = 1, food=0},
|
||||||
|
stack_max = 1,
|
||||||
|
|
||||||
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.leaping_func(user, 1.2, 480)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.leaping_func(user, 1.2, 480)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:weakness", {
|
||||||
|
description = S("Weakness Potion"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = potion_image("#6600AA"),
|
||||||
|
inventory_image = potion_image("#6600AA"),
|
||||||
|
groups = { brewitem = 1, food=0},
|
||||||
|
stack_max = 1,
|
||||||
|
|
||||||
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.weakness_func(user, 1.2, 90)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.weakness_func(user, 1.2, 90)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:weakness_plus", {
|
||||||
|
description = S("Weakness Potion +"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = potion_image("#7700BB"),
|
||||||
|
inventory_image = potion_image("#7700BB"),
|
||||||
|
groups = { brewitem = 1, food=0},
|
||||||
|
stack_max = 1,
|
||||||
|
|
||||||
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.weakness_func(user, 1.4, 240)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.weakness_func(user, 1.4, 240)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:poison", {
|
||||||
|
description = S("Poison Potion"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = potion_image("#225533"),
|
||||||
|
inventory_image = potion_image("#225533"),
|
||||||
|
groups = { brewitem = 1, food = 0 },
|
||||||
|
stack_max = 1,
|
||||||
|
|
||||||
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.poison_func(user, 2.5, 45)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.poison_func(user, 2.5, 45)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:poison_2", {
|
||||||
|
description = S("Poison Potion II"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = potion_image("#447755"),
|
||||||
|
inventory_image = potion_image("#447755"),
|
||||||
|
groups = { brewitem = 1, food = 0 },
|
||||||
|
stack_max = 1,
|
||||||
|
|
||||||
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.poison_func(user, 1.2, 21)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.poison_func(user, 1.2, 21)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:poison_plus", {
|
||||||
|
description = S("Poison Potion +"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = potion_image("#336644"),
|
||||||
|
inventory_image = potion_image("#336644"),
|
||||||
|
groups = { brewitem = 1, food = 0 },
|
||||||
|
stack_max = 1,
|
||||||
|
|
||||||
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.poison_func(user, 2.5, 90)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.poison_func(user, 2.5, 90)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:regeneration", {
|
||||||
|
description = S("Regeneration Potion"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = potion_image("#A52BB2"),
|
||||||
|
inventory_image = potion_image("#A52BB2"),
|
||||||
|
groups = { brewitem = 1, food = 0 },
|
||||||
|
stack_max = 1,
|
||||||
|
|
||||||
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.regeneration_func(user, 2.5, 45)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.regeneration_func(user, 2.5, 45)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:regeneration_2", {
|
||||||
|
description = S("Regeneration Potion II"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = potion_image("#B52CC2"),
|
||||||
|
inventory_image = potion_image("#B52CC2"),
|
||||||
|
groups = { brewitem = 1, food = 0 },
|
||||||
|
stack_max = 1,
|
||||||
|
|
||||||
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.regeneration_func(user, 1.2, 21)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.regeneration_func(user, 1.2, 21)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:regeneration_plus", {
|
||||||
|
description = S("Regeneration Potion +"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = potion_image("#C53DD3"),
|
||||||
|
inventory_image = potion_image("#C53DD3"),
|
||||||
|
groups = { brewitem = 1, food = 0 },
|
||||||
|
stack_max = 1,
|
||||||
|
|
||||||
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.regeneration_func(user, 2.5, 90)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.regeneration_func(user, 2.5, 90)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:invisibility", {
|
||||||
|
description = S("Invisibility Potion"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = potion_image("#B0B0B0"),
|
||||||
|
inventory_image = potion_image("#B0B0B0"),
|
||||||
|
groups = { brewitem = 1, food = 0 },
|
||||||
|
stack_max = 1,
|
||||||
|
|
||||||
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.invisiblility_func(user, 180)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.invisiblility_func(user, 180)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craftitem("mcl_potions:invisibility_plus", {
|
||||||
|
description = S("Invisibility Potion +"),
|
||||||
|
_doc_items_longdesc = brewhelp,
|
||||||
|
wield_image = potion_image("#A0A0A0"),
|
||||||
|
inventory_image = potion_image("#A0A0A0"),
|
||||||
|
groups = { brewitem = 1, food = 0 },
|
||||||
|
stack_max = 1,
|
||||||
|
|
||||||
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.invisiblility_func(user, 480)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end,
|
||||||
|
|
||||||
|
on_secondary_use = function(itemstack, user, pointed_thing)
|
||||||
|
mcl_potions.invisiblility_func(user, 480)
|
||||||
|
mcl_potions._use_potion(itemstack)
|
||||||
|
return itemstack
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Look into reducing attack on punch
|
||||||
|
minetest.register_on_punchnode(function(pos, node, puncher, pointed_thing)
|
||||||
|
if puncher:get_attribute("weakness") then
|
||||||
|
print("Weakness Active")
|
||||||
|
end
|
||||||
|
end)
|
BIN
mods/ITEMS/mcl_potions/sounds/mcl_potions_breaking_glass.ogg
Executable file
BIN
mods/ITEMS/mcl_potions/sounds/mcl_potions_drinking.ogg
Normal file
175
mods/ITEMS/mcl_potions/splash.lua
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
local splash_image = function(colorstring, opacity)
|
||||||
|
if not opacity then
|
||||||
|
opacity = 127
|
||||||
|
end
|
||||||
|
return "mcl_potions_splash_overlay.png^[colorize:"..colorstring..":"..tostring(opacity).."^mcl_potions_splash_bottle.png"
|
||||||
|
end
|
||||||
|
|
||||||
|
local function register_splash(name, descr, color, def)
|
||||||
|
|
||||||
|
local id = "mcl_potions:"..name.."_splash"
|
||||||
|
minetest.register_craftitem(id, {
|
||||||
|
description = descr,
|
||||||
|
inventory_image = splash_image(color),
|
||||||
|
on_use = function(item, placer, pointed_thing)
|
||||||
|
--weapons_shot(itemstack, placer, pointed_thing, def.velocity, name)
|
||||||
|
local velocity = 10
|
||||||
|
local dir = placer:get_look_dir();
|
||||||
|
local pos = placer:getpos();
|
||||||
|
local obj = minetest.env:add_entity({x=pos.x+dir.x,y=pos.y+2+dir.y,z=pos.z+dir.z}, id.."_flying")
|
||||||
|
obj:setvelocity({x=dir.x*velocity,y=dir.y*velocity,z=dir.z*velocity})
|
||||||
|
obj:setacceleration({x=0, y=-9.8, z=0})
|
||||||
|
item:take_item()
|
||||||
|
return item
|
||||||
|
end,
|
||||||
|
stack_max = 1,
|
||||||
|
})
|
||||||
|
|
||||||
|
local w = 0.7
|
||||||
|
|
||||||
|
minetest.register_entity(id.."_flying",{
|
||||||
|
textures = {splash_image(color)},
|
||||||
|
hp_max = 1,
|
||||||
|
visual_size = {x=w/2,y=w/2},
|
||||||
|
collisionbox = {0,0,0,0,0,0},
|
||||||
|
on_step = function(self, dtime)
|
||||||
|
local pos = self.object:getpos()
|
||||||
|
local node = minetest.get_node(pos)
|
||||||
|
local n = node.name
|
||||||
|
local d = 2
|
||||||
|
local redux_map = {7/8,0.5,0.25}
|
||||||
|
if n ~= "air" then
|
||||||
|
minetest.sound_play("mcl_potions_breaking_glass")
|
||||||
|
minetest.add_particlespawner({
|
||||||
|
amount = 40,
|
||||||
|
time = 2,
|
||||||
|
minpos = {x=pos.x-d, y=pos.y, z=pos.z-d},
|
||||||
|
maxpos = {x=pos.x+d, y=pos.y+1, 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 = 5,
|
||||||
|
minsize = 2,
|
||||||
|
maxsize = 4,
|
||||||
|
collisiondetection = false,
|
||||||
|
vertical = false,
|
||||||
|
texture = "mcl_potions_sprite.png^[colorize:"..color..":127",
|
||||||
|
})
|
||||||
|
self.object:remove()
|
||||||
|
for i, obj in ipairs(minetest.get_objects_inside_radius(pos, 4)) do
|
||||||
|
|
||||||
|
if minetest.is_player(obj) then
|
||||||
|
|
||||||
|
pos2 = obj:get_pos()
|
||||||
|
local rad = math.floor(math.sqrt((pos2.x-pos.x)^2 + (pos2.y-pos.y)^2 + (pos2.z-pos.z)^2))
|
||||||
|
if rad > 0 then def.potion_fun(obj, redux_map[rad]) else def.potion_fun(obj, 1) end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
register_splash("awkward", "Splash Awkward Potion", "#0000FF", {
|
||||||
|
potion_fun = function(player, redx) end,
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("mundane", "Splash Mundane Potion", "#0000FF", {
|
||||||
|
potion_fun = function(player, redx) end,
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("thick", "Splash Thick Potion", "#0000FF", {
|
||||||
|
potion_fun = function(player, redx) end,
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("healing", "Splash Healing", "#AA0000", {
|
||||||
|
potion_fun = function(player, redx) player:set_hp(player:get_hp() + 3*redx) end,
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("healing_2", "Splash Healing II", "#DD0000", {
|
||||||
|
potion_fun = function(player, redx) player:set_hp(player:get_hp() + 6*redx) end,
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("harming", "Splash Harming", "#660099", {
|
||||||
|
potion_fun = function(player, redx) mcl_potions.healing_func(player, -4*redx) end,
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("harming_2", "Splash Harming II", "#330066", {
|
||||||
|
potion_fun = function(player, redx) mcl_potions.healing_func(player, -6*redx) end,
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("leaping", "Splash Leaping", "#00CC33", {
|
||||||
|
potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.2, 135*redx) end
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("leaping_2", "Splash Leaping II", "#00EE33", {
|
||||||
|
potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.4, 135*redx) end
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("leaping_plus", "Splash Leaping +", "#00DD33", {
|
||||||
|
potion_fun = function(player, redx) mcl_potions.leaping_func(player, 1.2, 360*redx) end
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("swiftness", "Splash Swiftness", "#009999", {
|
||||||
|
potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.2, 135*redx) end
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("swiftness_2", "Splash Swiftness II", "#00BBBB", {
|
||||||
|
potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.4, 135*redx) end
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("swiftness_plus", "Splash Swiftness +", "#00BBBB", {
|
||||||
|
potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 1.2, 360*redx) end
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("slowness", "Splash Slowness ", "#000080", {
|
||||||
|
potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.85, 68*redx) end
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("slowness_plus", "Splash Slowness +", "#000066", {
|
||||||
|
potion_fun = function(player, redx) mcl_potions.swiftness_func(player, 0.85, 180*redx) end
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("poison", "Splash Poison", "#335544", {
|
||||||
|
potion_fun = function(player, redx) mcl_potions.poison_func(player, 0.85, 180*redx) end
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("poison_2", "Splash Poison II", "#446655", {
|
||||||
|
potion_fun = function(player, redx) mcl_potions.poison_func(player, 0.85, 180*redx) end
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("poison_plus", "Splash Poison +", "#557766", {
|
||||||
|
potion_fun = function(player, redx) mcl_potions.poison_func(player, 0.85, 180*redx) end
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("regeneration", "Splash Regeneration", "#A52BB2", {
|
||||||
|
potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 0.85, 180*redx) end
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("regeneration_2", "Splash Regeneration II", "#B52CC2", {
|
||||||
|
potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 0.85, 180*redx) end
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("regeneration_plus", "Splash Regeneration +", "#C53DD3", {
|
||||||
|
potion_fun = function(player, redx) mcl_potions.regeneration_func(player, 0.85, 300*redx) end
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("invisibility", "Splash Invisibility", "#B0B0B0", {
|
||||||
|
potion_fun = function(player, redx) mcl_potions.invisiblility_func(player, 135*redx) end
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("invisibility_plus", "Splash Invisibility +", "#A0A0A0", {
|
||||||
|
potion_fun = function(player, redx) mcl_potions.invisiblility_func(player, 300*redx) end
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("weakness", "Splash Weakness", "#6600AA", {
|
||||||
|
potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.2, 68*redx) end
|
||||||
|
})
|
||||||
|
|
||||||
|
register_splash("weakness_plus", "Splash Weakness +", "#7700BB", {
|
||||||
|
potion_fun = function(player, redx) mcl_potions.weakness_func(player, 1.4, 180*redx) end
|
||||||
|
})
|
BIN
mods/ITEMS/mcl_potions/textures/hb_potion_bar.png
Normal file
After Width: | Height: | Size: 91 B |
BIN
mods/ITEMS/mcl_potions/textures/hb_swiftness_bgicon.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
mods/ITEMS/mcl_potions/textures/hb_swiftness_icon.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
mods/ITEMS/mcl_potions/textures/mcl_potions_healing.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
mods/ITEMS/mcl_potions/textures/mcl_potions_night_vision.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
mods/ITEMS/mcl_potions/textures/mcl_potions_splash_bottle.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
mods/ITEMS/mcl_potions/textures/mcl_potions_splash_overlay.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
mods/ITEMS/mcl_potions/textures/mcl_potions_sprite.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
mods/ITEMS/mcl_potions/textures/mcl_potions_swiftness.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
mods/ITEMS/mcl_potions/textures/mcl_potions_weakness.png
Normal file
After Width: | Height: | Size: 1.2 KiB |