Initial commit (import from tt)
commit
4eb6411204
|
@ -0,0 +1,19 @@
|
|||
This mod is for the Extended Tooltips [tt] mod to extend item tooltips with the following
|
||||
basic info:
|
||||
|
||||
* Tool digging times
|
||||
* Weapon stats
|
||||
* Food stats
|
||||
* Node damage
|
||||
* Node light level
|
||||
* Node info: climbable, slippery, bouncy, jumping restriction
|
||||
|
||||
This mod assumes that the default gameplay behavior of Minetest is used.
|
||||
|
||||
This mod introduces support for new item definition fields:
|
||||
|
||||
* `_tt_food`: If `true`, item is a food item that can be consumed by the player
|
||||
* `_tt_food_hp`: Health increase (in HP) for player when consuming food item
|
||||
|
||||
Because there is no standard way in Minetest (yet) to mark an item as food, these fields
|
||||
are required for food items to be recognized as such.
|
|
@ -0,0 +1,190 @@
|
|||
local S = minetest.get_translator("tt_base")
|
||||
|
||||
local function get_min_digtime(caps)
|
||||
local mintime
|
||||
local unique = true
|
||||
local maxlevel = caps.maxlevel
|
||||
if not maxlevel then
|
||||
maxlevel = 1
|
||||
end
|
||||
if maxlevel > 1 then
|
||||
unique = false
|
||||
end
|
||||
if caps.times then
|
||||
for r=1,3 do
|
||||
local time = caps.times[r]
|
||||
if time and maxlevel > 1 then
|
||||
time = time / maxlevel
|
||||
end
|
||||
if time and ((not mintime) or (time < mintime)) then
|
||||
if mintime and (time < mintime) then
|
||||
unique = false
|
||||
end
|
||||
mintime = time
|
||||
end
|
||||
end
|
||||
end
|
||||
return mintime, unique
|
||||
end
|
||||
|
||||
local function newline(str)
|
||||
if str ~= "" then
|
||||
str = str .. "\n"
|
||||
end
|
||||
return str
|
||||
end
|
||||
|
||||
-- Tool information (digging times, weapon stats)
|
||||
tt.register_snippet(function(itemstring)
|
||||
local def = minetest.registered_items[itemstring]
|
||||
local desc = ""
|
||||
if def.tool_capabilities then
|
||||
-- Digging times
|
||||
local digs = ""
|
||||
local d
|
||||
if def.tool_capabilities.groupcaps then
|
||||
for group, caps in pairs(def.tool_capabilities.groupcaps) do
|
||||
local mintime, unique_mintime
|
||||
if caps.times then
|
||||
mintime, unique_mintime = get_min_digtime(caps)
|
||||
if mintime and (mintime > 0 or (not unique_mintime)) then
|
||||
d = S("Digs @1 blocks", group) .. "\n"
|
||||
d = d .. S("Minimum dig time: @1s", string.format("%.2f", mintime))
|
||||
digs = newline(digs)
|
||||
digs = digs .. d
|
||||
elseif mintime and mintime == 0 then
|
||||
d = S("Digs @1 blocks instantly", group)
|
||||
digs = newline(digs)
|
||||
digs = digs .. d
|
||||
end
|
||||
end
|
||||
end
|
||||
if digs ~= "" then
|
||||
desc = desc .. digs
|
||||
end
|
||||
end
|
||||
-- Weapon stats
|
||||
if def.tool_capabilities.damage_groups then
|
||||
for group, damage in pairs(def.tool_capabilities.damage_groups) do
|
||||
local msg
|
||||
if group == "fleshy" then
|
||||
if damage >= 0 then
|
||||
msg = S("Damage: @1", damage)
|
||||
else
|
||||
msg = S("Healing: @1", math.abs(damage))
|
||||
end
|
||||
else
|
||||
if damage >= 0 then
|
||||
msg = S("Damage (@1): @2", group, damage)
|
||||
else
|
||||
msg = S("Healing (@1): @2", group, math.abs(damage))
|
||||
end
|
||||
end
|
||||
desc = newline(desc)
|
||||
desc = desc .. msg
|
||||
end
|
||||
local full_punch_interval = def.tool_capabilities.full_punch_interval
|
||||
if not full_punch_interval then
|
||||
full_punch_interval = 1
|
||||
end
|
||||
desc = newline(desc)
|
||||
desc = desc .. S("Full punch interval: @1s", string.format("%.2f", full_punch_interval))
|
||||
end
|
||||
end
|
||||
if desc == "" then
|
||||
desc = nil
|
||||
end
|
||||
return desc
|
||||
end)
|
||||
|
||||
-- Food
|
||||
tt.register_snippet(function(itemstring)
|
||||
local def = minetest.registered_items[itemstring]
|
||||
local desc
|
||||
if def._tt_food then
|
||||
desc = S("Food item")
|
||||
if def._tt_food_hp then
|
||||
local msg = S("+@1 food points", def._tt_food_hp)
|
||||
desc = desc .. "\n" .. msg
|
||||
end
|
||||
end
|
||||
return desc
|
||||
end)
|
||||
|
||||
-- Node info
|
||||
tt.register_snippet(function(itemstring)
|
||||
local def = minetest.registered_items[itemstring]
|
||||
local desc = ""
|
||||
|
||||
-- Health-related node facts
|
||||
if def.damage_per_second then
|
||||
if def.damage_per_second > 0 then
|
||||
desc = newline(desc)
|
||||
desc = desc .. minetest.colorize(tt.COLOR_DANGER, S("Contact damage: @1 per second", def.damage_per_second))
|
||||
elseif def.damage_per_second < 0 then
|
||||
desc = newline(desc)
|
||||
desc = desc .. minetest.colorize(tt.COLOR_GOOD, S("Contact healing: @1 per second", math.abs(def.damage_per_second)))
|
||||
end
|
||||
end
|
||||
if def.drowning and def.drowning ~= 0 then
|
||||
desc = newline(desc)
|
||||
desc = desc .. minetest.colorize(tt.COLOR_DANGER, S("Drowning damage: @1", def.drowning))
|
||||
end
|
||||
local tmp = minetest.get_item_group(itemstring, "fall_damage_add_percent")
|
||||
if tmp > 0 then
|
||||
desc = newline(desc)
|
||||
desc = desc .. minetest.colorize(tt.COLOR_DANGER, S("Fall damage: +@1%", tmp))
|
||||
elseif tmp == -100 then
|
||||
desc = newline(desc)
|
||||
desc = desc .. minetest.colorize(tt.COLOR_GOOD, S("No fall damage"))
|
||||
elseif tmp < 0 then
|
||||
desc = newline(desc)
|
||||
desc = desc .. minetest.colorize(tt.COLOR_DEFAULT, S("Fall damage: @1%", tmp))
|
||||
end
|
||||
|
||||
-- Movement-related node facts
|
||||
if minetest.get_item_group(itemstring, "disable_jump") == 1 and not def.climbable then
|
||||
if def.liquidtype == "none" then
|
||||
desc = newline(desc)
|
||||
desc = desc .. minetest.colorize(tt.COLOR_DEFAULT, S("No jumping"))
|
||||
elseif minetest.get_item_group(itemstring, "fake_liquid") == 0 then
|
||||
desc = newline(desc)
|
||||
desc = desc .. minetest.colorize(tt.COLOR_DEFAULT, S("No swimming upwards"))
|
||||
else
|
||||
desc = newline(desc)
|
||||
desc = desc .. minetest.colorize(tt.COLOR_DEFAULT, S("No rising"))
|
||||
end
|
||||
end
|
||||
if def.climbable then
|
||||
if minetest.get_item_group(itemstring, "disable_jump") == 1 then
|
||||
desc = newline(desc)
|
||||
desc = desc .. minetest.colorize(tt.COLOR_DEFAULT, S("Climbable (only downwards)"))
|
||||
else
|
||||
desc = newline(desc)
|
||||
desc = desc .. minetest.colorize(tt.COLOR_DEFAULT, S("Climbable"))
|
||||
end
|
||||
end
|
||||
if minetest.get_item_group(itemstring, "slippery") >= 1 then
|
||||
desc = newline(desc)
|
||||
desc = desc .. minetest.colorize(tt.COLOR_DEFAULT, S("Slippery"))
|
||||
end
|
||||
local tmp = minetest.get_item_group(itemstring, "bouncy")
|
||||
if tmp >= 1 then
|
||||
desc = newline(desc)
|
||||
desc = desc .. minetest.colorize(tt.COLOR_DEFAULT, S("Bouncy (@1%)", tmp))
|
||||
end
|
||||
|
||||
-- Node appearance
|
||||
tmp = def.light_source
|
||||
if tmp and tmp >= 1 then
|
||||
desc = newline(desc)
|
||||
desc = desc .. minetest.colorize(tt.COLOR_DEFAULT, S("Luminance: @1", tmp))
|
||||
end
|
||||
|
||||
|
||||
if desc == "" then
|
||||
desc = nil
|
||||
end
|
||||
return desc, false
|
||||
end)
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
# textdomain:tt
|
||||
Damage: @1=
|
||||
Damage (@1): @2=
|
||||
Healing: @1=
|
||||
Healing (@1): @2=
|
||||
Full punch interval: @1s=
|
||||
Food item=
|
||||
+@1 satiation=
|
||||
@1 satiation=
|
||||
+@1 food points=
|
||||
Contact damage: @1 per second=
|
||||
Contact healing: @1 per second=
|
||||
Drowning damage: @1=
|
||||
Bouncy (@1%)=
|
||||
Luminance: @1=
|
||||
Slippery=
|
||||
Climbable=
|
||||
Climbable (only downwards)=
|
||||
No jumping=
|
||||
No swimming upwards=
|
||||
No rising=
|
||||
Fall damage: @1%=
|
||||
Fall damage: +@1%=
|
||||
No fall damage=
|
||||
Digs @1 blocks=
|
||||
Digs @1 blocks instantly=
|
||||
Minimum dig time: @1s=
|
|
@ -0,0 +1,27 @@
|
|||
# textdomain:tt_base
|
||||
Damage: @1=Schaden: @1
|
||||
Damage (@1): @2=Schaden (@1): @2
|
||||
Healing: @1=Heilung: @1
|
||||
Healing (@1): @2=Heilung (@1): @2
|
||||
Full punch interval: @1s=Zeit zum Ausholen: @1s
|
||||
Food item=Lebensmittel
|
||||
+@1 satiation=+@1 Sättigung
|
||||
@1 satiation=@1 Sättigung
|
||||
+@1 food points=+@1 Nahrungspunkte
|
||||
Contact damage: @1 per second=Kontaktschaden: @1 pro Sekunde
|
||||
Contact healing: @1 per second=Kontaktheilung: @1 pro Sekunde
|
||||
Drowning damage: @1=Ertrinkensschaden: @1
|
||||
Bouncy (@1%)=Sprunghaft (@1%)
|
||||
Luminance: @1=Lichtstärke: @1
|
||||
Slippery=Rutschig
|
||||
Climbable=Erkletterbar
|
||||
Climbable (only downwards)=Erkletterbar (nur nach unten)
|
||||
No jumping=Kein Springen
|
||||
No swimming upwards=Kein nach oben schwimmen
|
||||
No rising=Kein Aufsteigen
|
||||
Fall damage: @1%=Fallschaden: @1%
|
||||
Fall damage: +@1%=Fallschaden: +@1%
|
||||
No fall damage=Kein Fallschaden
|
||||
Digs @1 blocks=Gräbt „@1“-Blöcke
|
||||
Digs @1 blocks instantly=Gräbt „@1“-Blöcke sofort
|
||||
Minimum dig time: @1s=Minimale Grabezeit: @1s
|
Loading…
Reference in New Issue