From c63028801b0f802e11805935529905bd71828efc Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sat, 1 Aug 2020 03:20:52 +0200 Subject: [PATCH] Write potion help texts --- mods/ITEMS/mcl_potions/lingering.lua | 9 +++ mods/ITEMS/mcl_potions/potions.lua | 100 ++++++++++++++++-------- mods/ITEMS/mcl_potions/splash.lua | 9 +++ mods/ITEMS/mcl_potions/tipped_arrow.lua | 10 ++- 4 files changed, 94 insertions(+), 34 deletions(-) diff --git a/mods/ITEMS/mcl_potions/lingering.lua b/mods/ITEMS/mcl_potions/lingering.lua index 15e0f732a1..318d51a68e 100644 --- a/mods/ITEMS/mcl_potions/lingering.lua +++ b/mods/ITEMS/mcl_potions/lingering.lua @@ -69,9 +69,18 @@ end) function mcl_potions.register_lingering(name, descr, color, def) local id = "mcl_potions:"..name.."_lingering" + local longdesc = def.longdesc + if not def.no_effect then + longdesc = S("A throwable potion that will shatter on impact, where it creates a magic cloud that lingers around for a while. Any player or mob inside the cloud will receive the potion's effect, possibly repeatedly.") + if def.longdesc then + longdesc = longdesc .. "\n" .. def.longdesc + end + end minetest.register_craftitem(id, { description = descr, _tt_help = def.tt, + _doc_items_longdesc = longdesc, + _doc_items_usagehelp = S("Use the “Punch” key to throw it."), inventory_image = lingering_image(color), groups = {brewitem=1, not_in_creative_inventory=0}, on_use = function(item, placer, pointed_thing) diff --git a/mods/ITEMS/mcl_potions/potions.lua b/mods/ITEMS/mcl_potions/potions.lua index c82d4ef1d8..2f83a1c197 100644 --- a/mods/ITEMS/mcl_potions/potions.lua +++ b/mods/ITEMS/mcl_potions/potions.lua @@ -9,6 +9,7 @@ local potion_image = function(colorstring, opacity) end local how_to_drink = S("Use the “Place” key to drink it.") +local potion_intro = S("Drinking a potion gives you a particular effect.") local function time_string(dur) if not dur then return nil end @@ -112,16 +113,26 @@ local function register_potion(def) else desc = def.description end + local potion_longdesc = def._longdesc + if not def.no_effect then + potion_longdesc = potion_intro .. "\n" .. def._longdesc + end + local potion_usagehelp + local basic_potion_tt + if def.name ~= "dragon_breath" then + potion_usagehelp = how_to_drink + basic_potion_tt = get_tt(def._tt, def.effect, dur) + end minetest.register_craftitem("mcl_potions:"..def.name, { description = desc, - _tt_help = get_tt(def._tt, def.effect, dur), - _doc_items_longdesc = def._longdesc, - _doc_items_usagehelp = how_to_drink, + _tt_help = basic_potion_tt, + _doc_items_longdesc = potion_longdesc, + _doc_items_usagehelp = potion_usagehelp, stack_max = def.stack_max or 1, inventory_image = def.image or potion_image(def.color), wield_image = def.image or potion_image(def.color), - groups = def.groups or {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0}, + groups = def.groups or {brewitem=1, food=3, can_eat_when_full=1 }, on_place = on_use, on_secondary_use = on_use, }) @@ -132,25 +143,33 @@ local function register_potion(def) local splash_def = { tt = get_tt(def._tt, def.effect, splash_dur), + longdesc = def._longdesc, potion_fun = get_splash_fun(def.effect, splash_dur), + no_effect = def.no_effect, } local ling_def if def.name == "healing" or def.name == "harming" then ling_def = { tt = get_tt(def._tt, def.effect*mcl_potions.LINGERING_FACTOR, ling_dur), + longdesc = def._longdesc, potion_fun = get_lingering_fun(def.effect*mcl_potions.LINGERING_FACTOR, ling_dur), + no_effect = def.no_effect, } else ling_def = { tt = get_tt(def._tt, def.effect, ling_dur), + longdesc = def._longdesc, potion_fun = get_lingering_fun(def.effect, ling_dur), + no_effect = def.no_effect, } end local arrow_def = { tt = get_tt(def._tt, def.effect, dur/8.), + longdesc = def._longdesc, potion_fun = get_arrow_fun(def.effect, dur/8.), + no_effect = def.no_effect, } if def.color and not def.no_throwable then @@ -193,12 +212,12 @@ local function register_potion(def) minetest.register_craftitem("mcl_potions:"..def.name.."_2", { description = S("@1 Potion@2", def.description, desc_mod), _tt_help = get_tt(def._tt_2, effect_II, dur_2), - _doc_items_longdesc = def._longdesc, - _doc_items_usagehelp = how_to_drink, + _doc_items_longdesc = potion_longdesc, + _doc_items_usagehelp = potion_usagehelp, stack_max = def.stack_max or 1, inventory_image = def.image or potion_image(def.color), wield_image = def.image or potion_image(def.color), - groups = def.groups or {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0}, + groups = def.groups or {brewitem=1, food=3, can_eat_when_full=1}, on_place = on_use, on_secondary_use = on_use, }) @@ -211,12 +230,16 @@ local function register_potion(def) if def.name == "healing" then splash_def_2 = { tt = get_tt(def._tt_2, 7, splash_dur_2), + longdesc = def._longdesc, potion_fun = get_splash_fun(7, splash_dur_2), + no_effect = def.no_effect, } else splash_def_2 = { tt = get_tt(def._tt_2, effect_II, splash_dur_2), + longdesc = def._longdesc, potion_fun = get_splash_fun(effect_II, splash_dur_2), + no_effect = def.no_effect, } end @@ -225,18 +248,24 @@ local function register_potion(def) if def.name == "healing" or def.name == "harming" then ling_def_2 = { tt = get_tt(def._tt_2, effect_II*mcl_potions.LINGERING_FACTOR, ling_dur_2), + longdesc = def._longdesc, potion_fun = get_lingering_fun(effect_II*mcl_potions.LINGERING_FACTOR, ling_dur_2), + no_effect = def.no_effect, } else ling_def_2 = { tt = get_tt(def._tt_2, effect_II, ling_dur_2), + longdesc = def._longdesc, potion_fun = get_lingering_fun(effect_II, ling_dur_2), + no_effect = def.no_effect, } end local arrow_def_2 = { tt = get_tt(def._tt_2, effect_II, dur_2/8.), + longdesc = def._longdesc, potion_fun = get_arrow_fun(effect_II, dur_2/8.), + no_effect = def.no_effect, } if def.color and not def.no_throwable then @@ -266,12 +295,12 @@ local function register_potion(def) minetest.register_craftitem("mcl_potions:"..def.name.."_plus", { description = S("@1 + Potion", def.description), _tt_help = get_tt(def._tt_plus, def.effect, dur_pl), - _doc_items_longdesc = def._longdesc, - _doc_items_usagehelp = how_to_drink, + _doc_items_longdesc = potion_longdesc, + _doc_items_usagehelp = potion_usagehelp, stack_max = 1, inventory_image = def.image or potion_image(def.color), wield_image = def.image or potion_image(def.color), - groups = def.groups or {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0}, + groups = def.groups or {brewitem=1, food=3, can_eat_when_full=1}, on_place = on_use, on_secondary_use = on_use, }) @@ -282,15 +311,21 @@ local function register_potion(def) local splash_def_pl = { tt = get_tt(def._tt_plus, def.effect, splash_dur_pl), + longdesc = def._longdesc, potion_fun = get_splash_fun(def.effect, splash_dur_pl), + no_effect = def.no_effect, } local ling_def_pl = { tt = get_tt(def._tt_plus, def.effect, ling_dur_pl), + longdesc = def._longdesc, potion_fun = get_lingering_fun(def.effect, ling_dur_pl), + no_effect = def.no_effect, } local arrow_def_pl = { tt = get_tt(def._tt_pl, def.effect, dur_pl/8.), + longdesc = def._longdesc, potion_fun = get_arrow_fun(def.effect, dur_pl/8.), + no_effect = def.no_effect, } if def.color and not def.no_throwable then mcl_potions.register_splash(def.name.."_plus", S("Splash @1 + Potion", def.description), def.color, splash_def_pl) @@ -324,10 +359,11 @@ local awkward_def = { name = "awkward", description = S("Awkward"), no_arrow = true, + no_effect = true, _tt = S("No effect"), _longdesc = S("Has an awkward taste and is used for brewing potions."), color = "#0000FF", - groups = {brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0}, + groups = {brewitem=1, food=3, can_eat_when_full=1}, on_use = minetest.item_eat(0, "mcl_potions:glass_bottle"), } @@ -335,8 +371,9 @@ local mundane_def = { name = "mundane", description = S("Mundane"), no_arrow = true, + no_effect = true, _tt = S("No effect"), - longdesc = S("Has a terrible taste and is not useful for brewing potions."), + _longdesc = S("Has a terrible taste and is not useful for brewing potions."), color = "#0000FF", on_use = minetest.item_eat(0, "mcl_potions:glass_bottle"), } @@ -345,6 +382,7 @@ local thick_def = { name = "thick", description = S("Thick"), no_arrow = true, + no_effect = true, _tt = S("No effect"), _longdesc = S("Has a bitter taste and is not useful for brewing potions."), color = "#0000FF", @@ -357,10 +395,10 @@ local dragon_breath_def = { no_arrow = true, no_potion = true, no_throwable = true, - _tt = S("No effect"), - _longdesc = S("Combine with Splash potions to create a Lingering effect"), + no_effect = true, + _longdesc = S("This item is used in brewing and can be combined with splash potions to create lingering potions."), color = "#BF4567", - groups = { brewitem = 1, not_in_creative_inventory = 0 }, + groups = { brewitem = 1 }, on_use = nil, stack_max = 64, } @@ -370,7 +408,7 @@ local healing_def = { description = S("Healing"), _tt = S("+2 hearts"), _tt_2 = S("+4 hearts"), - _longdesc = S("Drink to heal yourself"), + _longdesc = S("Instantly heals."), color = "#CC0000", effect = 4, on_use = mcl_potions.healing_func, @@ -383,7 +421,7 @@ local harming_def = { description = S("Harming"), _tt = S("-3 hearts"), _tt_II = S("-6 hearts"), - _longdesc = S("Drink to heal yourself"), + _longdesc = S("Instantly deals damage."), color = "#660099", effect = -6, on_use = mcl_potions.healing_func, @@ -395,7 +433,7 @@ local night_vision_def = { name = "night_vision", description = S("Night Vision"), _tt = nil, - _longdesc = S("Drink to see in the dark."), + _longdesc = S("Grants the ability to see in darkness."), color = "#1010AA", effect = nil, is_dur = true, @@ -407,7 +445,7 @@ local swiftness_def = { name = "swiftness", description = S("Swiftness"), _tt = nil, - _longdesc = S("Drink to increase your speed."), + _longdesc = S("Increases walking speed."), color = "#009999", effect = 1.2, is_dur = true, @@ -420,7 +458,7 @@ local slowness_def = { name = "slowness", description = S("Slowness"), _tt = nil, - _longdesc = S("Drink to become sluggish"), + _longdesc = S("Decreases walking speed."), color = "#000080", effect = 0.85, is_dur = true, @@ -434,7 +472,7 @@ local leaping_def = { name = "leaping", description = S("Leaping"), _tt = nil, - _longdesc = S("Drink to leap tall buildings in a single bound!"), + _longdesc = S("Increases jump strength."), color = "#00CC33", effect = 1.15, is_dur = true, @@ -447,7 +485,7 @@ local poison_def = { name = "poison", description = S("Poison"), _tt = nil, - _longdesc = S("Poison mobs or players with this dangerous potion."), + _longdesc = S("Applies the poison effect which deals damage at a regular interval."), color = "#447755", effect = 2.5, is_dur = true, @@ -461,7 +499,7 @@ local regeneration_def = { name = "regeneration", description = S("Regeneration"), _tt = nil, - _longdesc = S("Regenerate mobs or players with this healing potion over time."), + _longdesc = S("Regenerates health over time."), color = "#B52CC2", effect = 2.5, is_dur = true, @@ -474,7 +512,7 @@ local invisibility_def = { name = "invisibility", description = S("Invisibility"), _tt = nil, - _longdesc = S("Drink and become invisibile to mobs and players."), + _longdesc = S("Grants invisibility."), color = "#B0B0B0", is_dur = true, on_use = mcl_potions.invisiblility_func, @@ -485,7 +523,7 @@ local water_breathing_def = { name = "water_breathing", description = S("Water Breathing"), _tt = nil, - _longdesc = S("Drink and breath underwater."), + _longdesc = S("Grants limitless breath underwater."), color = "#0000AA", is_dur = true, on_use = mcl_potions.water_breathing_func, @@ -496,7 +534,7 @@ local fire_resistance_def = { name = "fire_resistance", description = S("Fire Resistance"), _tt = nil, - _longdesc = S("Drink and resist fire damage."), + _longdesc = S("Grants immunity to damage from heat sources like fire."), color = "#D0A040", is_dur = true, on_use = mcl_potions.fire_resistance_func, @@ -523,7 +561,7 @@ end -- _doc_items_longdesc = brewhelp, -- wield_image = potion_image("#6600AA"), -- inventory_image = potion_image("#6600AA"), --- groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, +-- groups = { brewitem=1, food=3, can_eat_when_full=1 }, -- stack_max = 1, -- -- on_place = function(itemstack, user, pointed_thing) @@ -547,7 +585,7 @@ end -- _doc_items_longdesc = brewhelp, -- wield_image = potion_image("#7700BB"), -- inventory_image = potion_image("#7700BB"), --- groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, +-- groups = { brewitem=1, food=3, can_eat_when_full=1 }, -- stack_max = 1, -- -- on_place = function(itemstack, user, pointed_thing) @@ -571,7 +609,7 @@ end -- _doc_items_longdesc = brewhelp, -- wield_image = potion_image("#D444D4"), -- inventory_image = potion_image("#D444D4"), --- groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, +-- groups = { brewitem=1, food=3, can_eat_when_full=1 }, -- stack_max = 1, -- -- on_place = function(itemstack, user, pointed_thing) @@ -595,7 +633,7 @@ end -- _doc_items_longdesc = brewhelp, -- wield_image = potion_image("#D444E4"), -- inventory_image = potion_image("#D444E4"), --- groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, +-- groups = { brewitem=1, food=3, can_eat_when_full=1 }, -- stack_max = 1, -- -- on_place = function(itemstack, user, pointed_thing) @@ -619,7 +657,7 @@ end -- _doc_items_longdesc = brewhelp, -- wield_image = potion_image("#D444F4"), -- inventory_image = potion_image("#D444F4"), --- groups = { brewitem=1, food=3, can_eat_when_full=1, not_in_creative_inventory=0 }, +-- groups = { brewitem=1, food=3, can_eat_when_full=1 }, -- stack_max = 1, -- -- on_place = function(itemstack, user, pointed_thing) diff --git a/mods/ITEMS/mcl_potions/splash.lua b/mods/ITEMS/mcl_potions/splash.lua index 8fa2051099..779c75ac32 100644 --- a/mods/ITEMS/mcl_potions/splash.lua +++ b/mods/ITEMS/mcl_potions/splash.lua @@ -11,9 +11,18 @@ end function mcl_potions.register_splash(name, descr, color, def) local id = "mcl_potions:"..name.."_splash" + local longdesc = def.longdesc + if not def.no_effect then + longdesc = S("A throwable potion that will shatter on impact, where it gives all nearby players and mobs a status effect.") + if def.longdesc then + longdesc = longdesc .. "\n" .. def.longdesc + end + end minetest.register_craftitem(id, { description = descr, _tt_help = def.tt, + _doc_items_longdesc = longdesc, + _doc_items_usagehelp = S("Use the “Punch” key to throw it."), inventory_image = splash_image(color), groups = {brewitem=1, not_in_creative_inventory=0}, on_use = function(item, placer, pointed_thing) diff --git a/mods/ITEMS/mcl_potions/tipped_arrow.lua b/mods/ITEMS/mcl_potions/tipped_arrow.lua index 3e935ab390..b338a18e1e 100644 --- a/mods/ITEMS/mcl_potions/tipped_arrow.lua +++ b/mods/ITEMS/mcl_potions/tipped_arrow.lua @@ -27,19 +27,23 @@ local function arrow_image(colorstring, opacity) end +local how_to_shoot = minetest.registered_items["mcl_bows:arrow"]._doc_items_usagehelp local mod_awards = minetest.get_modpath("awards") and minetest.get_modpath("mcl_achievements") local mod_button = minetest.get_modpath("mesecons_button") function mcl_potions.register_arrow(name, desc, color, def) + local longdesc = def.longdesc or "" minetest.register_craftitem("mcl_potions:"..name.."_arrow", { description = desc, _tt_help = S("Ammunition").."\n"..S("Damage from bow: 1-10").."\n"..S("Damage from dispenser: 3").."\n"..def.tt, _doc_items_longdesc = S("Arrows are ammunition for bows and dispensers.").."\n".. - S("An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 20% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.").."\n".. - S("Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons."), - _doc_items_usagehelp = S("To use arrows as ammunition for a bow, just put them anywhere in your inventory, they will be used up automatically. To use arrows as ammunition for a dispenser, place them in the dispenser's inventory. To retrieve an arrow that sticks in a block, simply walk close to it."), + S("An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 20% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.").."\n".. + S("Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons.").."\n".. + S("This particular arrow is tipped and will give an effect when it hits a player or mob.").."\n".. + longdesc, + _doc_items_usagehelp = how_to_shoot, inventory_image = "mcl_bows_arrow_inv.png^(mcl_potions_arrow_inv.png^[colorize:"..color..":100)", groups = { ammo=1, ammo_bow=1, brewitem=1}, _on_dispense = function(itemstack, dispenserpos, droppos, dropnode, dropdir)