Codebase list minetest-mod-3d-armor / ec71bc18-8778-4c0b-a99a-221e314657c8/upstream
Import upstream version 0.4.14+git20210801.1.8dcbc42 Debian Janitor 2 years ago
60 changed file(s) with 3578 addition(s) and 2824 deletion(s). Raw diff Collapse all Expand all
0 .* export-ignore
1 gendoc.sh export-ignore
2 integration-test.sh export-ignore
3 preview_gen.py export-ignore
4 screenshot.xcf export-ignore
00 name: integration-test
11
2 on: [push]
2 on: [push, pull_request]
33
44 jobs:
55 build:
00 name: luacheck
11
2 on: [push]
2 on: [push, pull_request]
33
44 jobs:
55 build:
0 name: Build Reference
1
2 on:
3 push:
4 branches:
5 - master
6
7 jobs:
8 build:
9 name: Build
10 runs-on: ubuntu-latest
11 steps:
12 - name: Checkout
13 uses: actions/checkout@v2
14 - name: Setup Lua
15 uses: leafo/gh-actions-lua@v8
16 with:
17 luaVersion: 5.4
18 - name: Setup Lua Rocks
19 uses: leafo/gh-actions-luarocks@v4
20 - name: Setup LDoc dependencies
21 run: luarocks install --only-deps https://raw.githubusercontent.com/lunarmodules/LDoc/master/ldoc-scm-3.rockspec
22 - name: Setup LDoc
23 run: git clone --single-branch --branch=custom https://github.com/AntumDeluge/ldoc.git .ldoc/ldoc && chmod +x .ldoc/ldoc/ldoc.lua
24 - name: Generate docs
25 run: chmod +x .ldoc/gendoc.sh && ./.ldoc/gendoc.sh
26 - name: Deploy
27 uses: peaceiris/actions-gh-pages@v3
28 with:
29 github_token: ${{ secrets.GITHUB_TOKEN }}
30 publish_dir: ./3d_armor/docs
0
1 -- place this file in mod ".ldoc" directory
2
3 local print, type, string, table, tostring, tonumber, error, pairs, ipairs
4 if import then
5 print = import("print")
6 type = import("type")
7 string = import("string")
8 table = import("table")
9 tostring = import("tostring")
10 tonumber = import("tonumber")
11 error = import("error")
12 pairs = import("pairs")
13 ipairs = import("ipairs")
14 end
15
16 project = "3d_armor"
17 title = "3D Armor"
18 format = "markdown"
19 not_luadoc = true
20 boilerplate = false
21 wrap = false
22 style = true
23 favicon = "https://www.minetest.net/media/icon.svg"
24
25 file = {
26 "3d_armor/api.lua",
27 ".ldoc/settings.luadoc",
28 --".ldoc/armors.luadoc",
29 ".ldoc/helmets.luadoc",
30 ".ldoc/chestplates.luadoc",
31 ".ldoc/leggings.luadoc",
32 ".ldoc/boots.luadoc",
33 --".ldoc/shields.luadoc",
34 "shields/init.lua",
35 ".ldoc/crafting.luadoc",
36 }
37
38
39 new_type("setting", "Settings")
40 new_type("armor", "Armors")
41 new_type("craft", "Craft Recipes")
42
43 alias("helmet", "armor")
44 alias("chestplate", "armor")
45 alias("leggings", "armor")
46 alias("boots", "armor")
47 alias("shield", "armor")
48 alias("grp", "group")
49
50 -- function declarations
51 local format_text
52 local format_group
53
54 custom_tags = {
55 -- settings
56 {
57 "settype",
58 title = "Type",
59 hidden = true,
60 },
61 {
62 "min",
63 title = "Minimum Value",
64 hidden = true,
65 },
66 {
67 "max",
68 title = "Maximum Value",
69 hidden = true,
70 },
71 {
72 "default",
73 title = "Default Value",
74 hidden = true,
75 },
76 -- craft items/tools
77 {
78 -- specify image basename only
79 "img",
80 title = "Inventory Image",
81 format = function(value)
82 return "<img src=\"../data/" .. value .. "\" style=\"width:32px; height:32px;\" />"
83 end,
84 },
85 {
86 -- specify full (relative or absolute) image path
87 "image",
88 title = "Image",
89 format = function(value)
90 return "<img src=\"" .. value .. "\" style=\"width:32px; height:32px;\" />"
91 end,
92 },
93 {
94 "group",
95 title = "Groups",
96 format = function(value)
97 return format_group(value)
98 end,
99 },
100 {
101 "armorgrp",
102 title = "Armor Groups",
103 format = function(value)
104 return format_group(value)
105 end,
106 },
107 {
108 "damagegrp",
109 title = "Damage Groups",
110 format = function(value)
111 return format_group(value)
112 end,
113 },
114 }
115
116
117 if string then
118 string.trim = function(st, delim)
119 if not delim then
120 delim = " "
121 end
122
123 while string.find(st, delim) == 1 do
124 st = st:sub(2)
125 end
126
127 while string.sub(st, string.len(st)) == delim do
128 st = st:sub(1, string.len(st)-1)
129 end
130
131 return st
132 end
133
134 string.split = function(st, delim)
135 local list = {}
136
137 local idx = string.find(st, delim)
138 while idx do
139 table.insert(list, st:sub(1, idx-1))
140 st = st:sub(idx+1)
141 idx = string.find(st, delim)
142 end
143 -- add remaining item
144 table.insert(list, st)
145
146 return list
147 end
148 end
149
150 if table then
151 if not table.copy then
152 table.copy = function(orig_table)
153 local new_table = {}
154 for k, v in pairs(orig_table) do
155 new_table[k] = v
156 end
157
158 return new_table
159 end
160 end
161 end
162
163 format_text = function(text, flags)
164 local ret = "<"
165 local ttype = "span"
166 if flags.code then
167 ttype = "code"
168 end
169
170 ret = ret .. ttype .. " style=\""
171
172 if flags.size then
173 ret = ret .. "font-size:" .. flags.size .. ";"
174 end
175 if flags.mono then
176 ret = ret .. "font-family:monospace;"
177 end
178 if flags.italic then
179 ret = ret .. "font-style:italic;"
180 end
181 if flags.bold then
182 ret = ret .. "font-weight:bold;"
183 end
184 if flags.color then
185 ret = ret .. "color:" .. flags.color .. ";"
186 end
187 if flags.bgcolor then
188 ret = ret .. "background-color:" .. flags.bgcolor .. ";"
189 end
190
191 ret = ret .. "\">" .. text .. "</" .. ttype .. ">"
192
193 return ret
194 end
195
196 format_group = function(text)
197 if string then
198 local idx, k, v = string.find(text, " ")
199 if idx then
200 text = format_text(string.sub(text, 1, idx-1) .. ": ", {mono=true, color="darkgreen"})
201 .. string.sub(text, idx)
202 end
203 end
204
205 return text
206 end
207
208
209 local function format_setting_tag(desc, value)
210 return "\n- <span style=\"font-size:80%;\">`" .. desc .. ":`</span> `" .. value .. "`"
211 end
212
213
214 local registered = {
215 settings = {},
216 }
217
218 local function setting_handler(item)
219 -- avoid parsing again
220 if registered.settings[item.name] then
221 return item
222 end
223
224 if not ipairs or not type then
225 return item
226 end
227
228 local tags = {
229 {"settype", "type"},
230 {"default"},
231 {"min", "minimum value"},
232 {"max", "maximum value"},
233 }
234
235 local def = {
236 ["settype"] = format_setting_tag("type", "string"),
237 }
238
239 for _, t in ipairs(tags) do
240 local name = t[1]
241 local desc = t[2]
242 if not desc then desc = name end
243
244 local value = item.tags[name]
245 if type(value) == "table" then
246 if #value > 1 then
247 local msg = item.file.filename .. " (line " .. item.lineno
248 .. "): multiple instances of tag \"" .. name .. "\" found"
249 if error then
250 error(msg)
251 elseif print then
252 print("WARNING: " .. msg)
253 end
254 end
255
256 if value[1] then
257 def[name] = format_setting_tag(desc, value[1])
258 end
259 end
260 end
261
262 item.description = item.description .. "\n\n**Definition:**\n" .. def.settype
263 for _, t in ipairs({def.default, def.min, def.max}) do
264 if t then
265 item.description = item.description .. t
266 end
267 end
268
269 registered.settings[item.name] = true
270
271 return item
272 end
273
274 function custom_display_name_handler(item, default_handler)
275 if item.type == "setting" then
276 item = setting_handler(item)
277 end
278
279 if item then
280 return default_handler(item)
281 end
282 end
283
284
285 local custom_see_links = {
286 ["ObjectRef"] = "https://minetest.gitlab.io/minetest/class-reference/#objectref",
287 ["PlayerMetaRef"] = "https://minetest.gitlab.io/minetest/class-reference/#playermetaref",
288 ["ItemDef"] = "https://minetest.gitlab.io/minetest/definition-tables/#item-definition",
289 ["ItemStack"] = "https://minetest.gitlab.io/minetest/class-reference/#itemstack",
290 ["groups"] = "https://minetest.gitlab.io/minetest/groups/",
291 ["entity_damage_mechanism"] = "https://minetest.gitlab.io/minetest/entity-damage-mechanism/",
292 ["vector"] = "https://minetest.gitlab.io/minetest/representations-of-simple-things/#positionvector",
293 }
294
295 local function format_custom_see(name, section)
296 local url = custom_see_links[name]
297 if not url then
298 url = ""
299 end
300
301 if not name then
302 name = ""
303 end
304
305 return name, url
306 end
307
308 custom_see_handler("^(ObjectRef)$", function(name, section)
309 return format_custom_see(name, section)
310 end)
311
312 custom_see_handler("^(PlayerMetaRef)$", function(name, section)
313 return format_custom_see(name, section)
314 end)
315
316 custom_see_handler("^(ItemDef)$", function(name, section)
317 return format_custom_see(name, section)
318 end)
319
320 custom_see_handler("^(groups)$", function(name, section)
321 return format_custom_see(name, section)
322 end)
323
324 custom_see_handler("^(entity_damage_mechanism)$", function(name, section)
325 return format_custom_see(name, section)
326 end)
327
328 custom_see_handler("^(ItemStack)$", function(name, section)
329 return format_custom_see(name, section)
330 end)
331
332 custom_see_handler("^(vector)$", function(name, section)
333 return name, "https://minetest.gitlab.io/minetest/representations-of-simple-things/#positionvector"
334 end)
0 #!/usr/bin/env bash
1
2 # Place this file in mod ".ldoc" directory.
3 #
4 # To change output directory set the `d_export` environment variable.
5 # Example:
6 # $ d_export=/custom/path ./gendoc.sh
7
8
9 d_ldoc="$(dirname $(readlink -f $0))"
10 f_config="${d_ldoc}/config.ld"
11
12 cd "${d_ldoc}/.."
13
14 d_root="$(pwd)"
15 d_export="${d_export:-${d_root}/3d_armor/docs/reference}"
16 d_data="${d_export}/data"
17
18 cmd_ldoc="${d_ldoc}/ldoc/ldoc.lua"
19 if test -f "${cmd_ldoc}"; then
20 if test ! -x "${cmd_ldoc}"; then
21 chmod +x "${cmd_ldoc}"
22 fi
23 else
24 cmd_ldoc="ldoc"
25 fi
26
27
28 # clean old files
29 rm -rf "${d_export}"
30
31 # generate items, settings, & crafts topics temp files
32 echo -e "\ngenerating temp files ..."
33 for script in "src" "settings" "crafts"; do
34 script="${d_ldoc}/parse_${script}.py"
35 if test ! -f "${script}"; then
36 echo "ERROR: script doesn't exist: ${script}"
37 else
38 # check script's executable bit
39 if test ! -x "${script}"; then
40 chmod +x "${script}"
41 fi
42 # execute script
43 "${script}"
44 fi
45 done
46
47 echo
48
49 # generate new doc files
50 "${cmd_ldoc}" --UNSAFE_NO_SANDBOX -c "${f_config}" -d "${d_export}" "${d_root}"; retval=$?
51
52 # check exit status
53 if test ${retval} -ne 0; then
54 echo -e "\nan error occurred (ldoc return code: ${retval})"
55 exit ${retval}
56 fi
57
58 echo -e "\ncleaning temp files ..."
59 rm -vf "${d_ldoc}/"*.luadoc
60
61 # HACK: ldoc does not seem to like the "shields:" prefix
62 echo -e "\ncompensating for LDoc's issue with \"shields:\" prefix ..."
63 sed -i \
64 -e 's/<strong>shield_/<strong>shields:shield_/' \
65 -e 's/<td class="name\(.*\)>shield_/<td class="name\1>shields:shield_/' \
66 -e 's/<a href="#shield_/<a href="#shields:shield_/' \
67 -e 's/<a name.*"shield_/<a name="shields:shield_/' \
68 "${d_export}/topics/shields.html"
69
70 # copy textures to data directory
71 printf "\ncopying textures ..."
72 mkdir -p "${d_data}"
73 texture_count=0
74 for d_mod in "3d_armor" "shields"; do
75 printf "\rcopying textures from ${d_mod} ...\n"
76 for png in $(find "${d_root}/${d_mod}/textures" -maxdepth 1 -type f -name "*.png"); do
77 if test -f "${d_data}/$(basename ${png})"; then
78 echo "WARNING: not overwriting existing file: ${png}"
79 else
80 cp "${png}" "${d_data}"
81 texture_count=$((texture_count + 1))
82 printf "\rcopied ${texture_count} textures"
83 fi
84 done
85 done
86
87 echo -e "\n\nDone!"
0 /* BEGIN RESET
1
2 Copyright (c) 2010, Yahoo! Inc. All rights reserved.
3 Code licensed under the BSD License:
4 http://developer.yahoo.com/yui/license.html
5 version: 2.8.2r1
6 */
7 html {
8 color: #000;
9 background: #FFF;
10 }
11 body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td {
12 margin: 0;
13 padding: 0;
14 }
15 table {
16 border-collapse: collapse;
17 border-spacing: 0;
18 }
19 fieldset,img {
20 border: 0;
21 }
22 address,caption,cite,code,dfn,em,strong,th,var,optgroup {
23 font-style: inherit;
24 font-weight: inherit;
25 }
26 del,ins {
27 text-decoration: none;
28 }
29 li {
30 margin-left: 20px;
31 }
32 caption,th {
33 text-align: left;
34 }
35 h1,h2,h3,h4,h5,h6 {
36 font-size: 100%;
37 font-weight: bold;
38 }
39 q:before,q:after {
40 content: '';
41 }
42 abbr,acronym {
43 border: 0;
44 font-variant: normal;
45 }
46 sup {
47 vertical-align: baseline;
48 }
49 sub {
50 vertical-align: baseline;
51 }
52 legend {
53 color: #000;
54 }
55 input,button,textarea,select,optgroup,option {
56 font-family: inherit;
57 font-size: inherit;
58 font-style: inherit;
59 font-weight: inherit;
60 }
61 input,button,textarea,select {*font-size:100%;
62 }
63 /* END RESET */
64
65 body {
66 margin-left: 1em;
67 margin-right: 1em;
68 font-family: arial, helvetica, geneva, sans-serif;
69 background-color: #ffffff; margin: 0px;
70 }
71
72 code, tt { font-family: monospace; font-size: 1.1em; }
73 span.parameter { font-family:monospace; }
74 span.parameter:after { content:":"; }
75 span.types:before { content:"("; }
76 span.types:after { content:")"; }
77 .type { font-weight: bold; font-style:italic }
78
79 body, p, td, th { font-size: .95em; line-height: 1.2em;}
80
81 p, ul { margin: 10px 0 0 0px;}
82
83 strong { font-weight: bold;}
84
85 em { font-style: italic;}
86
87 h1 {
88 font-size: 1.5em;
89 margin: 20px 0 20px 0;
90 }
91 h2, h3, h4 { margin: 15px 0 10px 0; }
92 h2 { font-size: 1.25em; }
93 h3 { font-size: 1.15em; }
94 h4 { font-size: 1.06em; }
95
96 a:link { font-weight: bold; color: #004080; text-decoration: none; }
97 a:visited { font-weight: bold; color: #006699; text-decoration: none; }
98 a:link:hover { text-decoration: underline; }
99
100 hr {
101 color:#cccccc;
102 background: #00007f;
103 height: 1px;
104 }
105
106 blockquote { margin-left: 3em; }
107
108 ul { list-style-type: disc; }
109
110 p.name {
111 font-family: "Andale Mono", monospace;
112 padding-top: 1em;
113 }
114
115 pre {
116 background-color: rgb(245, 245, 245);
117 border: 1px solid #C0C0C0; /* silver */
118 padding: 10px;
119 margin: 10px 0 10px 0;
120 overflow: auto;
121 font-family: "Andale Mono", monospace;
122 }
123
124 pre.example {
125 font-size: .85em;
126 }
127
128 table.index { border: 1px #00007f; }
129 table.index td { text-align: left; vertical-align: top; }
130
131 #container {
132 margin-left: 1em;
133 margin-right: 1em;
134 background-color: #f0f0f0;
135 }
136
137 #product {
138 text-align: center;
139 border-bottom: 1px solid #cccccc;
140 background-color: #ffffff;
141 }
142
143 #product big {
144 font-size: 2em;
145 }
146
147 #main {
148 background-color: #f0f0f0;
149 border-left: 2px solid #cccccc;
150 }
151
152 #navigation {
153 float: left;
154 width: 14em;
155 vertical-align: top;
156 background-color: #f0f0f0;
157 overflow: visible;
158 position: fixed;
159 }
160
161 #navigation h2 {
162 background-color:#e7e7e7;
163 font-size:1.1em;
164 color:#000000;
165 text-align: left;
166 padding:0.2em;
167 border-top:1px solid #dddddd;
168 border-bottom:1px solid #dddddd;
169 }
170
171 #navigation ul
172 {
173 font-size:1em;
174 list-style-type: none;
175 margin: 1px 1px 10px 1px;
176 }
177
178 #navigation li {
179 text-indent: -1em;
180 display: block;
181 margin: 3px 0px 0px 22px;
182 }
183
184 #navigation li li a {
185 margin: 0px 3px 0px -1em;
186 }
187
188 #content {
189 margin-left: 14em;
190 padding: 1em;
191 width: 700px;
192 border-left: 2px solid #cccccc;
193 border-right: 2px solid #cccccc;
194 background-color: #ffffff;
195 min-height: 425px;
196 }
197
198 #about {
199 clear: both;
200 padding: 5px;
201 border-top: 2px solid #cccccc;
202 background-color: #ffffff;
203 }
204
205 @media print {
206 body {
207 font: 12pt "Times New Roman", "TimeNR", Times, serif;
208 }
209 a { font-weight: bold; color: #004080; text-decoration: underline; }
210
211 #main {
212 background-color: #ffffff;
213 border-left: 0px;
214 }
215
216 #container {
217 margin-left: 2%;
218 margin-right: 2%;
219 background-color: #ffffff;
220 }
221
222 #content {
223 padding: 1em;
224 background-color: #ffffff;
225 }
226
227 #navigation {
228 display: none;
229 }
230 pre.example {
231 font-family: "Andale Mono", monospace;
232 font-size: 10pt;
233 page-break-inside: avoid;
234 }
235 }
236
237 table.module_list {
238 border-width: 1px;
239 border-style: solid;
240 border-color: #cccccc;
241 border-collapse: collapse;
242 }
243 table.module_list td {
244 border-width: 1px;
245 padding: 3px;
246 border-style: solid;
247 border-color: #cccccc;
248 }
249 table.module_list td.name { background-color: #f0f0f0; min-width: 200px; }
250 table.module_list td.summary { width: 100%; }
251
252
253 table.function_list {
254 border-width: 1px;
255 border-style: solid;
256 border-color: #cccccc;
257 border-collapse: collapse;
258 }
259 table.function_list td {
260 border-width: 1px;
261 padding: 3px;
262 border-style: solid;
263 border-color: #cccccc;
264 }
265 table.function_list td.name { background-color: #f0f0f0; min-width: 200px; }
266 table.function_list td.summary { width: 100%; }
267
268 ul.nowrap {
269 overflow:auto;
270 white-space:nowrap;
271 }
272
273 dl.table dt, dl.function dt {border-top: 1px solid #ccc; padding-top: 1em;}
274 dl.table dd, dl.function dd {padding-bottom: 1em; margin: 10px 0 0 20px;}
275 dl.table h3, dl.function h3 {font-size: .95em;}
276
277 /* stop sublists from having initial vertical space */
278 ul ul { margin-top: 0px; }
279 ol ul { margin-top: 0px; }
280 ol ol { margin-top: 0px; }
281 ul ol { margin-top: 0px; }
282
283 /* make the target distinct; helps when we're navigating to a function */
284 a:target + * {
285 background-color: #FF9;
286 }
287
288
289 /* styles for prettification of source */
290 pre .comment { color: #558817; }
291 pre .constant { color: #a8660d; }
292 pre .escape { color: #844631; }
293 pre .keyword { color: #aa5050; font-weight: bold; }
294 pre .library { color: #0e7c6b; }
295 pre .marker { color: #512b1e; background: #fedc56; font-weight: bold; }
296 pre .string { color: #8080ff; }
297 pre .number { color: #f8660d; }
298 pre .operator { color: #2239a8; font-weight: bold; }
299 pre .preprocessor, pre .prepro { color: #a33243; }
300 pre .global { color: #800080; }
301 pre .user-keyword { color: #800080; }
302 pre .prompt { color: #558817; }
303 pre .url { color: #272fc2; text-decoration: underline; }
304
0 #!/usr/bin/env python
1
2 # This script will parse source files for craft recipes.
3
4 import sys, os, codecs, errno
5
6
7 path = os.path.realpath(__file__)
8 script = os.path.basename(path)
9 d_root = os.path.dirname(os.path.dirname(path))
10 d_ldoc = os.path.join(d_root, ".ldoc")
11
12 craftfile = os.path.realpath(os.path.join(d_root, "3d_armor/armor.lua"))
13 if not os.path.isfile(craftfile):
14 print("ERROR: craft file does not exist for parsing: {}".format(craftfile))
15 sys.exit(errnor.ENOENT)
16
17 buffer = codecs.open(craftfile, "r", "utf-8")
18 if not buffer:
19 print("ERROR: could not open file for reading: {}".format(craftfile))
20 sys.exit(errno.EIO)
21
22 data_in = buffer.read()
23 buffer.close()
24
25 craft = ""
26
27 data_in = data_in.replace("\r\n", "\n").replace("\r", "\n")
28 for sect in data_in.split("\n---"):
29 if "@craft armor" in sect:
30 sect = "---{}".format(sect)
31 for li in sect.split("\n"):
32 if li.startswith("--"):
33 craft = "{}\n{}".format(craft, li)
34
35 outfile = os.path.join(d_ldoc, "crafting.luadoc")
36
37 buffer = codecs.open(outfile, "w", "utf-8")
38 if not buffer:
39 print("ERROR: could not open file for writing: {}".format(outfile))
40 sys.exit(errno.EIO)
41
42 buffer.write("\n--- 3D Armor Crafting\n--\n-- @topic crafting\n\n{}\n".format(craft))
43 buffer.close()
44
45 print("crafts exported to\t{}".format(outfile))
0 #!/usr/bin/env python
1
2 # This script will format "settingtypes.txt" file found at the root
3 # of 3d_armor modpack into a format readable by LDoc.
4
5 import sys, os, errno, codecs
6
7
8 path = os.path.realpath(__file__)
9 script = os.path.basename(path)
10 d_root = os.path.dirname(os.path.dirname(path))
11 d_ldoc = os.path.join(d_root, ".ldoc")
12 f_settings = os.path.join(d_root, "settingtypes.txt")
13
14 if not os.path.isfile(f_settings):
15 print("settingtypes.txt does not exist")
16 sys.exit(errno.ENOENT)
17
18 i_stream = codecs.open(f_settings, "r", "utf-8")
19 data_in = i_stream.read()
20 i_stream.close()
21
22 data_in = data_in.replace("\r", "")
23
24 sets = data_in.split("\n\n")
25
26 for idx in reversed(range(len(sets))):
27 set = sets[idx]
28 lines = set.split("\n")
29 for idx2 in reversed(range(len(lines))):
30 li = lines[idx2].strip(" \t")
31 if li == "" or li[0] == "[":
32 lines.pop(idx2)
33
34 if len(lines) == 0:
35 sets.pop(idx)
36 else:
37 sets[idx] = "\n".join(lines)
38
39 filtered = []
40
41 for set in sets:
42 comment = False
43 lines = set.split("\n")
44 new_lines = []
45 for li in lines:
46 if li[0] == "#":
47 new_lines.append(li)
48 else:
49 new_lines.append(li)
50 filtered.append("\n".join(new_lines))
51 new_lines = []
52
53 settings = []
54
55 def parse_setting(set):
56 desc = []
57 setting = summary = stype = sdefault = soptions = None
58
59 for li in set.split("\n"):
60 if li[0] == "#":
61 desc.append("-- {}".format(li.lstrip(" #")))
62 else:
63 setting = li.split(" ")[0]
64 summary = li.split(")")[0].split("(")[-1]
65 li = li.split(")")[-1].strip()
66 rem = li.split(" ")
67 stype = rem[0]
68 rem.pop(0)
69
70 if len(rem) > 0:
71 sdefault = rem[0]
72 rem.pop(0)
73
74 if len(rem) > 0:
75 soptions = " ".join(rem)
76
77 if not setting:
78 return
79
80 st = "---"
81 if summary:
82 if summary[-1] != ".":
83 summary = "{}.".format(summary)
84 st = "{} {}".format(st, summary)
85
86 st = "{}\n--".format(st)
87
88 if len(desc) > 0:
89 st = "{}\n{}\n--".format(st, "\n".join(desc))
90
91 st = "{}\n-- @setting {}".format(st, setting)
92
93 if stype:
94 st = "{}\n-- @settype {}".format(st, stype)
95
96 if sdefault:
97 st = "{}\n-- @default {}".format(st, sdefault)
98
99 # TODO: add options
100
101 settings.append(st)
102
103 for f in filtered:
104 parse_setting(f)
105
106 outfile = os.path.join(d_ldoc, "settings.luadoc")
107 data_out = "\n--- 3D Armor Settings\n--\n-- @topic settings\n\n\n{}\n".format("\n\n".join(settings))
108
109 o_stream = codecs.open(outfile, "w", "utf-8")
110 if not o_stream:
111 print("ERROR: could not open file for writing: {}".format(outfile))
112 sys.exit(errno.EIO)
113
114 o_stream.write(data_out)
115 o_stream.close()
116
117 print("settings exported to\t{}".format(outfile))
0 #!/usr/bin/env python
1
2 # This script will parse source files for docstring.
3
4 import os, codecs
5
6
7 path = os.path.realpath(__file__)
8 script = os.path.basename(path)
9 d_root = os.path.dirname(os.path.dirname(path))
10 d_ldoc = os.path.join(d_root, ".ldoc")
11
12
13 armor_types = {
14 "armor": {"topic": "Armors", "values": []},
15 "helmet": {"topic": "Helmets", "values": []},
16 "chestplate": {"topic": "Chestplates", "values": []},
17 "leggings": {"topic": "Leggings", "values": []},
18 "boots": {"topic": "Boots", "values": []},
19 #"shield": {"topic": "Shields", "values": []},
20 }
21
22 def parse_file(f):
23 buffer = codecs.open(f, "r", "utf-8")
24 if not buffer:
25 print("ERROR: could not open file for reading: {}".format(f))
26 return
27
28 data_in = buffer.read()
29 buffer.close()
30
31 # format to LF (Unix)
32 data_in = data_in.replace("\r\n", "\n").replace("\r", "\n")
33
34 current_item = []
35 item_type = None
36 new_item = False
37 for li in data_in.split("\n"):
38 li = li.strip()
39 if li.startswith("---"):
40 new_item = True
41 elif not li.startswith("--"):
42 new_item = False
43
44 if new_item:
45 current_item.append(li)
46 if not item_type:
47 for a_type in armor_types:
48 if "@{} ".format(a_type) in li:
49 item_type = a_type
50 break
51 elif item_type and len(current_item):
52 armor_types[item_type]["values"].append("\n".join(current_item))
53 item_type = None
54 current_item = []
55 else:
56 current_item = []
57
58 to_parse = []
59
60 for obj in os.listdir(d_root):
61 fullpath = os.path.join(d_root, obj)
62 if not obj.startswith(".") and os.path.isdir(fullpath):
63 for root, dirs, files in os.walk(fullpath):
64 for f in files:
65 if f.endswith(".lua"):
66 to_parse.append(os.path.join(root, f))
67
68 for p in to_parse:
69 if not os.path.isfile(p):
70 print("ERROR: {} is not a file".format(p))
71 else:
72 parse_file(p)
73
74 for t in armor_types:
75 topic = armor_types[t]["topic"]
76 items = armor_types[t]["values"]
77
78 if len(items):
79 outfile = os.path.join(d_ldoc, "{}.luadoc".format(topic.lower()))
80
81 buffer = codecs.open(outfile, "w", "utf-8")
82 if not buffer:
83 print("ERROR: could not open file for writing: {}".format(outfile))
84 continue
85
86 buffer.write("\n--- 3D Armor {}\n--\n-- @topic {}\n\n\n{}\n".format(topic, topic.lower(), "\n\n".join(items)))
87 buffer.close()
88
89 print("{} exported to\t{}".format(topic.lower(), outfile))
33 globals = {
44 "wieldview",
55 "armor",
6 "armor_i18n",
76 "inventory_plus"
87 }
98
2019 "default",
2120 "minetest",
2221 "unified_inventory",
23 "intllib",
2422 "wardrobe",
2523 "player_monoids",
2624 "armor_monoid",
0 # [mod] Visible Player Armor [3d_armor]
1
2 | | | | |
3 |--|--|--|--|
4 |-[Overview](#overview) |||-[API](#api)
5 |-[Armor Configuration](#armor-configuration) |||- - [3d_Armor Item Storage](#3d_armor-item-storage)
6 |- - [disable_specific_materials](#to-disable-individual-armor-materials) |||- - [Armor Registration](#armor-registration)
7 |- - [armor_init_delay](#initialization-glitches-when-a-player-first-joins) |||- - [Registering Armor Groups](#registering-armor-groups)
8 |- - [armor_init_times](#number-of-initialization-attempts) |||- - [Groups used by 3d_Armor](#groups-used-by-3d_armor)
9 |- - [armor_bones_delay](#armor-not-in-bones-due-to-server-lag) |||- - - [Elements](#elements)
10 |- - [armor_update_time](#how-often-player-armor-items-are-updated) |||- - - [Attributes](#attributes)
11 |- - [armor_drop](#drop-armor-when-a-player-dies) |||- - - [Physics](#physics)
12 |- - [armor_destroy](#destroy-armor-when-a-player-dies) |||- - - [Durability](#durability)
13 |- - [armor_level_multiplier](#armor-level-multiplyer) |||- - - [Armor Material](#armor-material)
14 |- - [armor_heal_multiplier](#armor-healing-multiplyer) |||- - [Armour Functions](#armor-functions)
15 |- - [armor_set_elements](#allows-the-customisation-of-armor-set) |||- - - [armor:set_player_armor](#armor-set_player_armor)
16 |- - [armor_set_bonus](#armor-set-bonus-multiplier) |||- - - [armor:punch](#armor-punch)
17 |- - [armor_water_protect](#enable-water-protection) |||- - - [armor:damage](#armor-damage)
18 |- - [armor_fire_protect](#enable-fire-protection) |||- - - [armor:remove_all](#armor-remove_all)
19 |- - [armor_punch_damage](#enable-punch-damage-effects) |||- - - [armor:equip](#armor-equip)
20 |- - [armor_migrate_old_inventory](#migration-of-old-armor-inventories) |||- - - [armor:unequip](#armor-unequip)
21 |- - [wieldview_update_time](#how-often-player-wield-items-are-updated) |||- - - [armor:update_skin](#armor-update_skin)
22 |-[Credits](#credits) |||- - [Callbacks](#Callbacks)
23 | |||- - - [Item callbacks](#item-callbacks)
24 | |||- - - [Global callbacks](#global-callbacks)
25
26 # Overview
27
28 **Depends:** default
29
30 **Recommends:** sfinv, unified_inventory or smart_inventory (use only one to avoid conflicts)
31
32 **Supports:** player_monoids, armor_monoid and POVA
33
34 Adds craftable armor that is visible to other players. Each armor item worn contributes to
35 a player's armor group level making them less vulnerable to weapons.
36
37 Armor takes damage when a player is hurt but also offers a percentage chance of healing.
38 Overall level is boosted by 10% when wearing a full matching set.
39
40 # Armor Configuration
41
42 Change the following default settings by going to Main Menu>>Settings(Tab)>>All Settings(Button)>>Mods>>minetest-3d_Armor>>3d_Armor
43
44 ### To disable individual armor materials
45 **set the below to false**
46
47 armor_material_wood = true
48 armor_material_cactus = true
49 armor_material_steel = true
50 armor_material_bronze = true
51 armor_material_diamond = true
52 armor_material_gold = true
53 armor_material_mithril = true
54 armor_material_crystal = true
55
56 ### Initialization glitches when a player first joins
57 **Increase to prevent glitches**
58
59 armor_init_delay = 2
60
61 ### Number of initialization attempts
62 **Increase to prevent glitches - Use in conjunction with armor_init_delay if initialization problems persist.**
63
64 armor_init_times = 10
65
66 ### Armor not in bones due to server lag
67 **Increase to help resolve**
68
69 armor_bones_delay = 1
70
71 ### How often player armor items are updated
72 **Number represents how often per second update is performed, higher value means less performance hit for servers but armor items maybe delayed in updating when switching.Fractional seconds also supported eg 0.1**
73
74 armor_update_time = 1
75
76 ### Drop armor when a player dies
77 **Uses bones mod if present, otherwise items are dropped around the player when false.**
78
79 armor_drop = true
80
81 ### Destroy armor when a player dies
82 **overrides armor_drop.**
83
84 armor_destroy = false
85
86 ### Armor level multiplyer
87 **Increase to make armor more effective and decrease to make armor less effective**
88 **eg: level_multiplier = 0.5 will reduce armor level by half.**
89
90 armor_level_multiplier = 1
91
92 ### Armor healing multiplyer
93 **Increase to make armor healing more effective and decrease to make healing less effective**
94 **eg: armor_heal_multiplier = 0 will disable healing altogether.**
95
96 armor_heal_multiplier = 1
97
98 ### Allows the customisation of armor set
99 **Shields already configured as need to be worn to complete an armor set**
100 **These names come from [Element names](#groups-used-by-3d_armor), the second half of the element name only is used eg armor_head is head**
101
102 armor_set_elements = head torso legs feet shield
103
104 ### Armor set bonus multiplier
105 **Set to 1 to disable set bonus**
106
107 armor_set_multiplier = 1.1
108
109 ### Enable water protection
110 **periodically restores breath when activated**
111
112 armor_water_protect = true
113
114 ### Enable fire protection
115 **defaults to true if using ethereal mod**
116
117 armor_fire_protect = false
118
119 ### Fire protection enabled, disable torch fire damage
120 **when fire protection is enabled allows you to disable fire damage from torches**
121 **defaults to true if using ethereal mod**
122
123 armor_fire_protect_torch = false
124
125 ### Enable punch damage effects
126
127 armor_punch_damage = true
128
129 ### Migration of old armor inventories
130
131 armor_migrate_old_inventory = true
132
133 ### How often player wield items are updated
134 **Number represents how often per second update is performed, higher value means less performance hit for servers but wield items maybe delayed in updating when switching. Fractional seconds also supported eg 0.1**
135 ***Note this is MT engine functionality but included for completness***
136
137 wieldview_update_time = 1
138
139 # API
140
141 ## 3d_Armor item storage
142 3d_Armor stores each armor piece a player currently has equiped in a ***detached*** inventory. The easiest way to access this inventory if needed is using this line of code
143
144 local _, armor_inv = armor:get_valid_player(player, "3d_armor")
145
146 **Example**
147
148 armor:register_on_equip(function(player, index, stack)
149 local _, armor_inv = armor:get_valid_player(player, "3d_armor")
150 for i = 1, 6 do
151 local stack = armor_inv:get_stack("armor", i)
152 if stack:get_name() == "3d_armor:chestplate_gold" then
153 minetest.chat_send_player(player:get_player_name(),"Got to love the Bling!!!")
154 end
155 end
156 end)
157
158 ## Armor Registration
159
160 armor:register_armor(name, def)
161
162 Wrapper function for `minetest.register_tool`, which enables the easy registration of new armor items. While registering armor as a tool item is still supported, this may be deprecated in future so all armor items should be registered using *armor:register_armor(name,def)*.
163
164 ### Additional fields supported by 3d_armor
165
166 texture = <filename>
167 preview = <filename>
168 armor_groups = <table>
169 damage_groups = <table>
170 reciprocate_damage = <bool>
171 on_equip = <function>
172 on_unequip = <function>
173 on_destroy = <function>
174 on_damage = <function>
175 on_punched = <function>
176
177 ***Reciprocal tool*** damage will apply damage back onto the attacking tool/weapon, however this will only be done by the first armor inventory item with `reciprocate_damage = true`, damage does not stack.
178
179 **Example Simple:**
180
181 armor:register_armor("mod_name:chestplate_leather", {
182 description = "Leather Chestplate",
183 inventory_image = "mod_name_inv_chestplate_leather.png",
184 texture = "mod_name_leather_chestplate.png",
185 preview = "mod_name_leather_chestplate_preview.png",
186 groups = {armor_torso=1, armor_heal=0, armor_use=2000, flammable=1},
187 armor_groups = {fleshy=10},
188 damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1}
189 })
190 *See ***armor.lua*** under **3d_armor>>3d_armor** for further examples*
191
192 **Extended functionality**
193 The values for ***texture*** and ***preview*** do not need to be included when registering armor if they follow the naming convention in the textures mod folder of:
194 ***texture:*** *mod_name_leather_chestplate.png*
195 ***preview:*** *mod_name_leather_chestplate_preview.png*
196
197 ## Registering Armor Groups
198 3d armor has a built in armor group which is ***fleshy*** all players base vulnerability to being fleshy is ***100***.
199 3d armour allows for the easy registration/addition of new armor groups::
200
201 armor:register_armor_group(group, base)
202
203 ***group:*** Is the name of the new armor group
204 ***base*** Is the starting vulnerability that all players have to that new group. This dosent need to be 100.
205
206 **Example**
207
208 armor:register_armor_group("radiation", 100)
209
210 New armor group is registered called *radiation* and all players start off with a base vulnerability of *100* to radiation.
211
212 **Example** *Showing armor reg, new group usage and custom function*
213
214 armor:register_armor("mod_name:speed_boots", {
215 description = "Speed Boots",
216 inventory_image = "mod_name_speed_boots_inv.png",
217 texture = "mod_name_speed_boots.png",
218 preview = "mod_name_speed_boots_preview.png",
219 groups = {armor_feet=1, armor_use=500, physics_speed=1.2, flammable=1},
220 armor_groups = {fleshy=10, radiation=10},
221 damage_groups = {cracky=3, snappy=3, choppy=3, crumbly=3, level=1},
222 reciprocate_damage = true,
223 on_destroy = function(player, index, stack)
224 local pos = player:get_pos()
225 if pos then
226 minetest.sound_play({
227 name = "mod_name_break_sound",
228 pos = pos,
229 gain = 0.5,
230 })
231 end
232 end,
233 })
234
235 ### Tools/weapons and new armor groups
236 The above allows armor to block/prevent new damage types but you also need to assign the new damage group to a tool/weapon or even a node (see technic mod) to make wearing the armor item meaningful. Simply add the ***armor_groups*** name to the tool items ***damage_groups***.
237
238 **Example**
239
240 minetest.register_tool("mod_name:glowing_sword", {
241 description = "Glowing Sword",
242 inventory_image = "mod_name_tool_glowingsword.png",
243 tool_capabilities = {full_punch_interval = 1.2,max_drop_level=0,
244 groupcaps={
245 cracky = {times={[3]=1.60}, uses=10, maxlevel=1},},
246 damage_groups = {fleshy=10,radiation=20},
247 },
248 sound = {breaks = "default_tool_breaks"},
249 groups = {pickaxe = 1, flammable = 2}
250 })
251
252 ## Groups used by 3d_Armor
253 3d_armor has many default groups already registered, these are categorized under 4 main headings
254 - **Elements:** armor_head, armor_torso, armor_legs, armor_feet
255 - **Attributes:** armor_heal, armor_fire, armor_water
256 - **Physics:** physics_jump, physics_speed, physics_gravity
257 - **Durability:** armor_use, flammable
258
259 ***Note: for calculation purposes "Attributes" and "Physics" values stack***
260
261 ### Elements
262 Additional armor elements can be added by dependant mods, for example shields adds the group armor_shield which has by default a limit that only 1 shield can be worn at a time.
263
264 Adding Elements is more complex but the below code can be used to add new elements;
265
266 if minetest.global_exists("armor") and armor.elements then
267 table.insert(armor.elements, "hands")
268 end
269 **1st line** not strictly needed but checks that the global table "armor" and subtable "elements" exists
270 **2nd line** adds a new value to the armor.elements table called "hands"
271
272 See ***init.lua*** under **3d_armor>>shields** for a further example
273
274 The new armor item can now be registered using the new element
275 **Example**
276
277 armor:register_armor("mod_name:gloves_wood", {
278 description = "Wood Gauntlets",
279 inventory_image = "mod_name_inv_gloves_wood.png",
280 texture = "mod_name_gloves_wood.png",
281 preview = "mod_name_gloves_wood_preview.png",
282 groups = {armor_hands=1, armor_heal=0, armor_use=2000, flammable=1},
283 armor_groups = {fleshy=5},
284 damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
285 })
286
287 ### Attributes
288 Three attributes are avaliable in 3d_armor these are armor_heal, armor_fire and armor_water. Although possible to add additional attributes they would do nothing as code needs to be provide to specifiy the behaviour this could be done in a dependant mod
289
290 #### Armor_heal
291 This isn't how much the armor will heal but relates to the chance the armor will completely block the damage. For each point of ***armor_heal*** there is a 1% chance that damage will be completely blocked, this value will stack between all armor pieces
292
293 **Example**
294 The below Diamond chestplate has a 12% chance to completely block all damage (armor_heal=12), however so do boots, helmet and trousers so if the player was wearing all 4 pieces they would have a 48% chance of blocking all damage each attack.
295
296 armor:register_armor("3d_armor:chestplate_diamond", {
297 description = S("Diamond Chestplate"),
298 inventory_image = "3d_armor_inv_chestplate_diamond.png",
299 groups = {armor_torso=1, armor_heal=12, armor_use=200},
300 armor_groups = {fleshy=20},
301 damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
302 })
303
304 #### Armor_fire
305 ***"Armor_fire"*** provides 5 levels of fire protection
306 - level 1 protects against torches
307 - level 2 protects against crystal spike (Ethereal mod)
308 - level 3 protects against fire
309 - level 4 unused
310 - level 5 protects against lava
311
312 **Example**
313
314 armor:register_armor("mod_name:fire_proof_jacket", {
315 description = "Fire Proof Jacket",
316 inventory_image = "mod_name_inv_fire_proof_jacket.png",
317 groups = {armor_torso=1, armor_fire=3, armor_use=1000},
318 armor_groups = {fleshy=10},
319 damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
320 })
321
322 #### Armor_water
323 ***"Armor_water"*** will periodically restore a players breath when underwater. This only has one level or state, which is armor_water=1
324
325 **Example**
326
327 armor:register_armor("mod_name:helmet_underwater_breath", {
328 description = "Helmet of Underwater Breathing",
329 inventory_image = "mod_name_inv_helmet_underwater_breath.png",
330 groups = {armor_head=1, armor_water=1, armor_use=1000},
331 armor_groups = {fleshy=5},
332 damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
333 })
334
335 ### Physics
336 The physics attributes supported by 3d_armor are ***physics_jump, physics_speed and physics_gravity***. Although 3d_armor supports the use of this with no other mods it is recommended that the mod [player_monoids](https://forum.minetest.net/viewtopic.php?t=14895) is used to help with intermod compatability.
337
338 ***physics_jump*** - Will increase/decrease the jump strength of the player so they can jump more/less. The base number is "1" and any value is added or subtracted, supports fractional so "physics_jump=1" will increase jump strength by 100%. "physics_jump= -0.5" will decrease jump by 50%.
339
340 ***physics_speed*** - Will increase/decrease the walk speed of the player so they walk faster/slower. The base number is "1" and any value is added or subtracted, supports fractional so "physics_speed=1.5" will increase speed by 150%, "physics_speed= -0.5" will decrease speed by 50%.
341
342 ***physics_gravity*** - Will increase/decrease gravity the player experiences so it's higher/lower. The base number is "1" and any value is added or subtracted, supports fractional so "physics_gravity=2" will increase gravity by 200%, "physics_gravity= -1" will decrease gravity by 100%.
343
344 *Note: The player physics modifications won't be applied via `set_physics_override` if `player_physics_locked` is set to 1 in the respective player's meta.*
345
346 ### Durability
347 Durability is determined by the value assigned to the group ***armor_use***. The higher the ***armor_use*** value the faster/more quickly it is damaged/degrades. This is calculated using the formula:
348
349 Total uses = approx(65535/armor_use)
350
351 **Example**
352 All wood armor items have an ***armor_use=2000***;
353
354 65535/2000 = 32.76 (32)
355 After 32 uses(hits) the armor item will break.
356
357 All diamond armor items have an ***armor_use=200***;
358
359 65535/2000 = 327.6 (327)
360 After 327 uses(hits) the armor item will break.
361
362 ### Armor Material
363 The material the armor is made from is defined by adding the material to the end of registered armor item name. It is very important the material is the last item in the registered item name and it is preceeded by an "_" eg "_materialname".
364 The material name is what 3d_armor uses to determine if a player is wearing a set of armor. To recieve the set bonus all items worn must be made of the same material.
365 So to get a set bonus under the default set settings the players armor items listed below must be made of the same material:
366 * head - Helmet
367 * torso - Chestplate
368 * legs - Leggings
369 * feet - Boots
370 * shield - Shields
371
372 If all of the above were made of material "wood" the player would recieve an ***armor_set_bonus*** of armor_level * 1.1, essentially +10%
373
374 **Example One**
375
376 armor:register_armor("3d_armor:helmet_bronze", {
377 description = S("Bronze Helmet"),
378 inventory_image = "3d_armor_inv_helmet_bronze.png",
379 groups = {armor_head=1, armor_heal=6, armor_use=400, physics_speed=-0.01, physics_gravity=0.01},
380 armor_groups = {fleshy=10},
381 damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2},
382 })
383
384 **Example Two**
385
386 armor:register_armor("new_mod:helmet_spartan_bronze", {
387 description = S("Spartan Helmet"),
388 inventory_image = "new_mod_inv_helmet_spartan_bronze.png",
389 groups = {armor_head=1, armor_heal=6, armor_use=350, physics_speed=-0.01, physics_gravity=0.01},
390 armor_groups = {fleshy=12},
391 damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2},
392 })
393
394 ***Note: At the moment an armor item can only be made of one material***
395
396 ## Armor Functions
397
398 See also: [API Reference](https://minetest-mods.github.io/3d_armor/reference/)
399
400 ### armor set_player_armor
401
402 armor:set_player_armor(player)
403
404 Primarily an internal function but can be called externally to apply any
405 changes that might not otherwise get handled.
406
407 ### armor punch
408
409 armor:punch(player, hitter, time_from_last_punch, tool_capabilities)
410
411 Used to apply damage to all equipped armor based on the damage groups of
412 each individual item.`hitter`, `time_from_last_punch` and `tool_capabilities`
413 are optional but should be valid if included.
414
415 ### armor damage
416
417 armor:damage(player, index, stack, use)
418
419 Adds wear to a single armor itemstack, triggers `on_damage` callbacks and
420 updates the necessary inventories. Also handles item destruction callbacks
421 and so should NOT be called from `on_unequip` to avoid an infinite loop.
422
423 ### armor remove_all
424
425 armor:remove_all(player)
426
427 Removes all armors from the player's inventory without triggering any callback.
428
429 ### armor equip
430
431 armor:equip(player, armor_name)
432
433 Equip the armor, removing the itemstack from the main inventory if there's one.
434
435 ### armor unequip
436
437 armor:unequip(player, armor_name)
438
439 Unequip the armor, adding the itemstack to the main inventory.
440
441 ### armor update_skin
442
443 armor:update_skin(player_name)
444
445 Triggers a skin update with the same action as if a field with `skins_set` was submitted.
446
447 ## Callbacks
448
449 ### Item Callbacks
450
451 In all of the below when armor is destroyed `stack` will contain a copy of the previous stack.
452
453 *unsure what this note means may apply to all item callbacks or just on_punched*
454 Return `false` to override armor damage effects.
455
456 #### on_equip
457
458 on_equip = func(player, index, stack)
459
460 #### on_unequip
461
462 on_unequip = func(player, index, stack)
463
464 #### on_destroy
465
466 on_destroy = func(player, index, stack)
467
468 #### on_damage
469
470 on_damage = func(player, index, stack)
471
472 #### on_punched
473
474 on_punched = func(player, hitter, time_from_last_punch, tool_capabilities)
475
476 `on_punched` is called every time a player is punched or takes damage, `hitter`, `time_from_last_punch` and `tool_capabilities` can be `nil` and will be in the case of fall damage.
477 When fire protection is enabled, hitter == "fire" in the event of fire damage.
478
479
480 ### Global Callbacks
481
482 #### armor register_on_update
483
484 armor:register_on_update(function(player))
485
486 #### armor register_on_equip
487
488 armor:register_on_equip(function(player, index, stack))
489
490 #### armor register_on_unequip
491
492 armor:register_on_unequip(function(player, index, stack))
493
494 #### armor register_on_destroy
495 armor:register_on_destroy(function(player, index, stack))
496
497 **Example**
498
499 armor:register_on_update(function(player)
500 print(player:get_player_name().." armor updated!")
501 end)
502
503
504 # Credits
505
506 ### The below have added too, tested or in other ways contributed to the development and ongoing support of 3d_Armor
507
508 |Stu |Stujones11 |Stu |Github Ghosts |
509 |:---------------:|:---------------:|:---------------:|:---------------:|
510 |Pavel_S |BlockMen |Tenplus1 |donat-b |
511 |JPRuehmann |BrandonReese |Megaf |Zeg9 |
512 |poet.nohit |Echoes91 |Adimgar |Khonkhortisan |
513 |VanessaE |CraigyDavi |proller |Thomasrudin |
514 |Byakuren |kilbith (jp) |afflatus |G1ov4 |
515 |Thomas-S |Dragonop |Napiophelios |Emojigit |
516 |rubenwardy |daviddoesminetest|bell07 |OgelGames |
517 |tobyplowy |crazyginger72 |fireglow |bhree |
518 |Lone_Wolf(HT) |Wuzzy(2) |numberZero |Monte48 |
519 |AntumDeluge |Terumoc |runsy |Dacmot |
520 |codexp |davidthecreator |SmallJoker |orbea |
521 |BuckarooBanzay |daret |Exeterdad |Calinou |
522 |Pilcrow182 |indriApollo |HybridDog |CraigyDavi |
523 |Paly-2 |Diogogomes | | |
524
525 *Note: Names gathered from 3d_armor forum thread and github, I may have missed some people, apologises if I have - S01*
+0
-191
3d_armor/README.txt less more
0 [mod] Visible Player Armor [3d_armor]
1 =====================================
2
3 Depends: default
4
5 Recommends: sfinv, unified_inventory or smart_inventory (use only one to avoid conflicts)
6
7 Supports: player_monoids and armor_monoid
8
9 Adds craftable armor that is visible to other players. Each armor item worn contributes to
10 a player's armor group level making them less vulnerable to weapons.
11
12 Armor takes damage when a player is hurt but also offers a percentage chance of healing.
13 Overall level is boosted by 10% when wearing a full matching set.
14
15 Fire protection added by TenPlus1 when using crystal armor if Ethereal mod active, level 1
16 protects against torches, level 2 for crystal spike, level 3 for fire, level 5 for lava.
17
18 Armor Configuration
19 -------------------
20
21 Override the following default settings by adding them to your minetest.conf file.
22
23 -- Set false to disable individual armor materials.
24 armor_material_wood = true
25 armor_material_cactus = true
26 armor_material_steel = true
27 armor_material_bronze = true
28 armor_material_diamond = true
29 armor_material_gold = true
30 armor_material_mithril = true
31 armor_material_crystal = true
32
33 -- Increase this if you get initialization glitches when a player first joins.
34 armor_init_delay = 2
35
36 -- Number of initialization attempts.
37 -- Use in conjunction with armor_init_delay if initialization problems persist.
38 armor_init_times = 10
39
40 -- Increase this if armor is not getting into bones due to server lag.
41 armor_bones_delay = 1
42
43 -- How often player armor items are updated.
44 armor_update_time = 1
45
46 -- Drop armor when a player dies.
47 -- Uses bones mod if present, otherwise items are dropped around the player.
48 armor_drop = true
49
50 -- Pulverise armor when a player dies, overrides armor_drop.
51 armor_destroy = false
52
53 -- You can use this to increase or decrease overall armor effectiveness,
54 -- eg: level_multiplier = 0.5 will reduce armor level by half.
55 armor_level_multiplier = 1
56
57 -- You can use this to increase or decrease overall armor healing,
58 -- eg: armor_heal_multiplier = 0 will disable healing altogether.
59 armor_heal_multiplier = 1
60
61 -- Enable water protection (periodically restores breath when activated)
62 armor_water_protect = true
63
64 -- Enable fire protection (defaults true if using ethereal mod)
65 armor_fire_protect = false
66
67 -- Enable punch damage effects.
68 armor_punch_damage = true
69
70 -- Enable migration of old armor inventories
71 armor_migrate_old_inventory = true
72
73 API
74 ---
75
76 Armor Registration:
77
78 armor:register_armor(name, def)
79
80 Wrapper function for `minetest.register_tool`, while registering armor as
81 a tool item is still supported, this may be deprecated in future so new code
82 should use this method.
83
84 Additional fields supported by 3d_armor:
85
86 texture = <filename>
87 preview = <filename>
88 armor_groups = <table>
89 damage_groups = <table>
90 reciprocate_damage = <bool>
91 on_equip = <function>
92 on_unequip = <function>
93 on_destroy = <function>
94 on_damage = <function>
95 on_punched = <function>
96
97 armor:register_armor_group(group, base)
98
99 Example:
100
101 armor:register_armor_group("radiation", 100)
102
103 armor:register_armor("mod_name:speed_boots", {
104 description = "Speed Boots",
105 inventory_image = "mod_name_speed_boots_inv.png",
106 texture = "mod_name_speed_boots.png",
107 preview = "mod_name_speed_boots_preview.png",
108 groups = {armor_feet=1, armor_use=500, physics_speed=1.2, flammable=1},
109 armor_groups = {fleshy=10, radiation=10},
110 damage_groups = {cracky=3, snappy=3, choppy=3, crumbly=3, level=1},
111 reciprocate_damage = true,
112 on_destroy = function(player, index, stack)
113 local pos = player:get_pos()
114 if pos then
115 minetest.sound_play({
116 name = "mod_name_break_sound",
117 pos = pos,
118 gain = 0.5,
119 })
120 end
121 end,
122 })
123
124 See armor.lua, technic_armor and shields mods for more examples.
125
126 Default groups:
127
128 Elements: armor_head, armor_torso, armor_legs, armor_feet
129 Attributes: armor_heal, armor_fire, armor_water
130 Physics: physics_jump, physics_speed, physics_gravity
131 Durability: armor_use, flammable
132
133 Notes:
134
135 Elements may be modified by dependent mods, eg shields adds armor_shield.
136 Attributes and physics values are 'stackable', durability is determined
137 by the level of armor_use, total uses == approx (65535/armor_use), non-fleshy
138 damage groups need to be defined in the tool/weapon used against the player.
139
140 Reciprocal tool damage will be done only by the first armor inventory item
141 with `reciprocate_damage = true`
142
143 Armor Functions:
144
145 armor:set_player_armor(player)
146
147 Primarily an internal function but can be called externally to apply any
148 changes that might not otherwise get handled.
149
150 armor:punch(player, hitter, time_from_last_punch, tool_capabilities)
151
152 Used to apply damage to all equipped armor based on the damage groups of
153 each individual item.`hitter`, `time_from_last_punch` and `tool_capabilities`
154 are optional but should be valid if included.
155
156 armor:damage(player, index, stack, use)
157
158 Adds wear to a single armor itemstack, triggers `on_damage` callbacks and
159 updates the necessary inventories. Also handles item destruction callbacks
160 and so should NOT be called from `on_unequip` to avoid an infinite loop.
161
162 Item Callbacks:
163
164 on_equip = func(player, index, stack)
165 on_unequip = func(player, index, stack)
166 on_destroy = func(player, index, stack)
167 on_damage = func(player, index, stack)
168 on_punched = func(player, hitter, time_from_last_punch, tool_capabilities)
169
170 Notes:
171
172 `on_punched` is called every time a player is punched or takes damage, `hitter`,
173 `time_from_last_punch` and `tool_capabilities` can be `nil` and will be in the
174 case of fall damage, etc. When fire protection is enabled, hitter == "fire"
175 in the event of fire damage. Return `false` to override armor damage effects.
176 When armor is destroyed `stack` will contain a copy of the previous stack.
177
178 Global Callbacks:
179
180 armor:register_on_update(func(player))
181 armor:register_on_equip(func(player, index, stack))
182 armor:register_on_unequip(func(player, index, stack))
183 armor:register_on_destroy(func(player, index, stack))
184
185 Global Callback Example:
186
187 armor:register_on_update(function(player)
188 print(player:get_player_name().." armor updated!")
189 end)
190
0
1 --- 3D Armor API
2 --
3 -- @topic api
4
5
6 local transparent_armor = minetest.settings:get_bool("armor_transparent", false)
7
8
9 --- Tables
10 --
11 -- @section tables
12
13 --- Armor definition table used for registering armor.
14 --
15 -- @table ArmorDef
16 -- @tfield string description Human-readable name/description.
17 -- @tfield string inventory_image Image filename used for icon.
18 -- @tfield table groups See: `ArmorDef.groups`
19 -- @tfield table armor_groups See: `ArmorDef.armor_groups`
20 -- @tfield table damage_groups See: `ArmorDef.damage_groups`
21 -- @see ItemDef
22 -- @usage local def = {
23 -- description = "Wood Helmet",
24 -- inventory_image = "3d_armor_inv_helmet_wood.png",
25 -- groups = {armor_head=1, armor_heal=0, armor_use=2000, flammable=1},
26 -- armor_groups = {fleshy=5},
27 -- damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
28 -- }
29
30 --- Groups table.
31 --
32 -- General groups defining item behavior.
33 --
34 -- Some commonly used groups: ***armor\_&lt;type&gt;***, ***armor\_heal***, ***armor\_use***
35 --
36 -- @table ArmorDef.groups
37 -- @tfield int armor_type The armor type. "head", "torso", "hands", "shield", etc.
38 -- (**Note:** replace "type" with actual type).
39 -- @tfield int armor_heal Healing value of armor when equipped.
40 -- @tfield int armor_use Amount of uses/damage before armor "breaks".
41 -- @see groups
42 -- @usage groups = {
43 -- armor_head = 1,
44 -- armor_heal = 5,
45 -- armor_use = 2000,
46 -- flammable = 1,
47 -- }
48
49 --- Armor groups table.
50 --
51 -- Groups that this item is effective against when taking damage.
52 --
53 -- Some commonly used groups: ***fleshy***
54 --
55 -- @table ArmorDef.armor_groups
56 -- @usage armor_groups = {
57 -- fleshy = 5,
58 -- }
59
60 --- Damage groups table.
61 --
62 -- Groups that this item is effective on when used as a weapon/tool.
63 --
64 -- Some commonly used groups: ***cracky***, ***snappy***, ***choppy***, ***crumbly***, ***level***
65 --
66 -- @table ArmorDef.damage_groups
67 -- @see entity_damage_mechanism
68 -- @usage damage_groups = {
69 -- cracky = 3,
70 -- snappy = 2,
71 -- choppy = 3,
72 -- crumbly = 2,
73 -- level = 1,
74 -- }
75
76 --- @section end
77
78
079 -- support for i18n
1 local S = armor_i18n.gettext
80 local S = minetest.get_translator(minetest.get_current_modname())
281
382 local skin_previews = {}
483 local use_player_monoids = minetest.global_exists("player_monoids")
54133 crystal = "ethereal:crystal_ingot",
55134 },
56135 fire_nodes = {
136 {"nether:lava_source", 5, 8},
57137 {"default:lava_source", 5, 8},
58138 {"default:lava_flowing", 5, 8},
59139 {"fire:basic_flame", 3, 4},
60140 {"fire:permanent_flame", 3, 4},
61141 {"ethereal:crystal_spike", 2, 1},
62142 {"ethereal:fire_flower", 2, 1},
143 {"nether:lava_crust", 2, 1},
63144 {"default:torch", 1, 1},
64145 {"default:torch_ceiling", 1, 1},
65146 {"default:torch_wall", 1, 1},
73154 on_destroy = {},
74155 },
75156 migrate_old_inventory = true,
76 version = "0.4.13",
157 version = "0.4.13",
158 get_translator = S
77159 }
78160
79161 armor.config = {
93175 material_gold = true,
94176 material_mithril = true,
95177 material_crystal = true,
178 set_elements = "head torso legs feet shield",
179 set_multiplier = 1.1,
96180 water_protect = true,
97181 fire_protect = minetest.get_modpath("ethereal") ~= nil,
182 fire_protect_torch = minetest.get_modpath("ethereal") ~= nil,
98183 punch_damage = true,
99184 }
100185
101 -- Armor Registration
102
186
187 --- Methods
188 --
189 -- @section methods
190
191 --- Registers a new armor item.
192 --
193 -- @function armor:register_armor
194 -- @tparam string name Armor item technical name (ex: "3d\_armor:helmet\_gold").
195 -- @tparam ArmorDef def Armor definition table.
196 -- @usage armor:register_armor("3d_armor:helmet_wood", {
197 -- description = "Wood Helmet",
198 -- inventory_image = "3d_armor_inv_helmet_wood.png",
199 -- groups = {armor_head=1, armor_heal=0, armor_use=2000, flammable=1},
200 -- armor_groups = {fleshy=5},
201 -- damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
202 -- })
103203 armor.register_armor = function(self, name, def)
204 def.on_secondary_use = function(itemstack, player)
205 return armor:equip(player, itemstack)
206 end
207 def.on_place = function(itemstack, player, pointed_thing)
208 if pointed_thing.type == "node" and player and not player:get_player_control().sneak then
209 local node = minetest.get_node(pointed_thing.under)
210 local ndef = minetest.registered_nodes[node.name]
211 if ndef and ndef.on_rightclick then
212 return ndef.on_rightclick(pointed_thing.under, node, player, itemstack, pointed_thing)
213 end
214 end
215 return armor:equip(player, itemstack)
216 end
217 -- The below is a very basic check to try and see if a material name exists as part
218 -- of the item name. However this check is very simple and just checks theres "_something"
219 -- at the end of the item name and logging an error to debug if not.
220 local check_mat_exists = string.match(name, "%:.+_(.+)$")
221 if check_mat_exists == nil then
222 minetest.log("warning:[3d_armor] Registered armor "..name..
223 " does not have \"_material\" specified at the end of the item registration name")
224 end
104225 minetest.register_tool(name, def)
105226 end
106227
228 --- Registers a new armor group.
229 --
230 -- @function armor:register_armor_group
231 -- @tparam string group Group ID.
232 -- @tparam int base Base armor value.
107233 armor.register_armor_group = function(self, group, base)
108234 base = base or 100
109235 self.registered_groups[group] = base
112238 end
113239 end
114240
115 -- Armor callbacks
116
241 --- Armor Callbacks Registration
242 --
243 -- @section callbacks
244
245 --- Registers a callback for when player visuals are update.
246 --
247 -- @function armor:register_on_update
248 -- @tparam function func Function to be executed.
249 -- @see armor:update_player_visuals
250 -- @usage armor:register_on_update(function(player, index, stack)
251 -- -- code to execute
252 -- end)
117253 armor.register_on_update = function(self, func)
118254 if type(func) == "function" then
119255 table.insert(self.registered_callbacks.on_update, func)
120256 end
121257 end
122258
259 --- Registers a callback for when armor is equipped.
260 --
261 -- @function armor:register_on_equip
262 -- @tparam function func Function to be executed.
263 -- @usage armor:register_on_equip(function(player, index, stack)
264 -- -- code to execute
265 -- end)
123266 armor.register_on_equip = function(self, func)
124267 if type(func) == "function" then
125268 table.insert(self.registered_callbacks.on_equip, func)
126269 end
127270 end
128271
272 --- Registers a callback for when armor is unequipped.
273 --
274 -- @function armor:register_on_unequip
275 -- @tparam function func Function to be executed.
276 -- @usage armor:register_on_unequip(function(player, index, stack)
277 -- -- code to execute
278 -- end)
129279 armor.register_on_unequip = function(self, func)
130280 if type(func) == "function" then
131281 table.insert(self.registered_callbacks.on_unequip, func)
132282 end
133283 end
134284
285 --- Registers a callback for when armor is damaged.
286 --
287 -- @function armor:register_on_damage
288 -- @tparam function func Function to be executed.
289 -- @see armor:damage
290 -- @usage armor:register_on_damage(function(player, index, stack)
291 -- -- code to execute
292 -- end)
135293 armor.register_on_damage = function(self, func)
136294 if type(func) == "function" then
137295 table.insert(self.registered_callbacks.on_damage, func)
138296 end
139297 end
140298
299 --- Registers a callback for when armor is destroyed.
300 --
301 -- @function armor:register_on_destroy
302 -- @tparam function func Function to be executed.
303 -- @see armor:damage
304 -- @usage armor:register_on_destroy(function(player, index, stack)
305 -- -- code to execute
306 -- end)
141307 armor.register_on_destroy = function(self, func)
142308 if type(func) == "function" then
143309 table.insert(self.registered_callbacks.on_destroy, func)
144310 end
145311 end
146312
313 --- @section end
314
315
316 --- Methods
317 --
318 -- @section methods
319
320 --- Runs callbacks.
321 --
322 -- @function armor:run_callbacks
323 -- @tparam function callback Function to execute.
324 -- @tparam ObjectRef player First parameter passed to callback.
325 -- @tparam int index Second parameter passed to callback.
326 -- @tparam ItemStack stack Callback owner.
147327 armor.run_callbacks = function(self, callback, player, index, stack)
148328 if stack then
149329 local def = stack:get_definition() or {}
159339 end
160340 end
161341
342 --- Updates visuals.
343 --
344 -- @function armor:update_player_visuals
345 -- @tparam ObjectRef player
162346 armor.update_player_visuals = function(self, player)
163347 if not player then
164348 return
174358 self:run_callbacks("on_update", player)
175359 end
176360
361 --- Sets player's armor attributes.
362 --
363 -- @function armor:set_player_armor
364 -- @tparam ObjectRef player
177365 armor.set_player_armor = function(self, player)
178366 local name, armor_inv = self:get_valid_player(player, "[set_player_armor]")
179367 if not name then
181369 end
182370 local state = 0
183371 local count = 0
184 local material = {count=1}
185372 local preview = armor:get_preview(name)
186373 local texture = "3d_armor_trans.png"
187374 local physics = {}
189376 local levels = {}
190377 local groups = {}
191378 local change = {}
379 local set_worn = {}
380 local armor_multi = 0
381 local worn_armor = armor:get_weared_armor_elements(player)
192382 for _, phys in pairs(self.physics) do
193383 physics[phys] = 1
194384 end
230420 tex = tex:gsub(".png$", "")
231421 local prev = def.preview or tex.."_preview"
232422 prev = prev:gsub(".png$", "")
233 texture = texture.."^"..tex..".png"
423 if not transparent_armor then
424 texture = texture.."^"..tex..".png"
425 end
234426 preview = preview.."^"..prev..".png"
235427 state = state + stack:get_wear()
236428 count = count + 1
242434 local value = def.groups["armor_"..attr] or 0
243435 attributes[attr] = attributes[attr] + value
244436 end
245 local mat = string.match(item, "%:.+_(.+)$")
246 if material.name then
247 if material.name == mat then
248 material.count = material.count + 1
437 end
438 end
439 -- The following code compares player worn armor items against requirements
440 -- of which armor pieces are needed to be worn to meet set bonus requirements
441 for loc,item in pairs(worn_armor) do
442 local item_mat = string.match(item, "%:.+_(.+)$")
443 local worn_key = item_mat or "unknown"
444
445 -- Perform location checks to ensure the armor is worn correctly
446 for k,set_loc in pairs(armor.config.set_elements)do
447 if set_loc == loc then
448 if set_worn[worn_key] == nil then
449 set_worn[worn_key] = 0
450 set_worn[worn_key] = set_worn[worn_key] + 1
451 else
452 set_worn[worn_key] = set_worn[worn_key] + 1
249453 end
250 else
251 material.name = mat
252 end
454 end
455 end
456 end
457
458 -- Apply the armor multiplier only if the player is wearing a full set of armor
459 for mat_name,arm_piece_num in pairs(set_worn) do
460 if arm_piece_num == #armor.config.set_elements then
461 armor_multi = armor.config.set_multiplier
253462 end
254463 end
255464 for group, level in pairs(levels) do
256465 if level > 0 then
257466 level = level * armor.config.level_multiplier
258 if material.name and material.count == #self.elements then
259 level = level * 1.1
467 if armor_multi ~= 0 then
468 level = level * armor.config.set_multiplier
260469 end
261470 end
262471 local base = self.registered_groups[group]
300509 })
301510 pova.do_override(player)
302511 else
303 player:set_physics_override(physics)
512 local player_physics_locked = player:get_meta():get_int("player_physics_locked")
513 if player_physics_locked == nil or player_physics_locked == 0 then
514 player:set_physics_override(physics)
515 end
304516 end
305517 self.textures[name].armor = texture
306518 self.textures[name].preview = preview
310522 self:update_player_visuals(player)
311523 end
312524
525 --- Action when armor is punched.
526 --
527 -- @function armor:punch
528 -- @tparam ObjectRef player Player wearing the armor.
529 -- @tparam ObjectRef hitter Entity attacking player.
530 -- @tparam[opt] int time_from_last_punch Time in seconds since last punch action.
531 -- @tparam[opt] table tool_capabilities See `entity_damage_mechanism`.
313532 armor.punch = function(self, player, hitter, time_from_last_punch, tool_capabilities)
314533 local name, armor_inv = self:get_valid_player(player, "[punch]")
315534 if not name then
338557 local groupcaps = tool_capabilities.groupcaps or {}
339558 local uses = 0
340559 damage = false
560 if next(groupcaps) == nil then
561 damage = true
562 end
341563 for group, caps in pairs(groupcaps) do
342564 local maxlevel = caps.maxlevel or 0
343565 local diff = maxlevel - level
392614 self.def[name].count = count
393615 end
394616
617 --- Action when armor is damaged.
618 --
619 -- @function armor:damage
620 -- @tparam ObjectRef player
621 -- @tparam int index Inventory index where armor is equipped.
622 -- @tparam ItemStack stack Armor item receiving damaged.
623 -- @tparam int use Amount of wear to add to armor item.
395624 armor.damage = function(self, player, index, stack, use)
396625 local old_stack = ItemStack(stack)
626 local worn_armor = armor:get_weared_armor_elements(player)
627 local armor_worn_cnt = 0
628 for k,v in pairs(worn_armor) do
629 armor_worn_cnt = armor_worn_cnt + 1
630 end
631 use = math.ceil(use/armor_worn_cnt)
397632 stack:add_wear(use)
398633 self:run_callbacks("on_damage", player, index, stack)
399634 self:set_inventory_stack(player, index, stack)
404639 end
405640 end
406641
642 --- Get elements of equipped armor.
643 --
644 -- @function armor:get_weared_armor_elements
645 -- @tparam ObjectRef player
646 -- @treturn table List of equipped armors.
647 armor.get_weared_armor_elements = function(self, player)
648 local name, inv = self:get_valid_player(player, "[get_weared_armor]")
649 local weared_armor = {}
650 if not name then
651 return
652 end
653 for i=1, inv:get_size("armor") do
654 local item_name = inv:get_stack("armor", i):get_name()
655 local element = self:get_element(item_name)
656 if element ~= nil then
657 weared_armor[element] = item_name
658 end
659 end
660 return weared_armor
661 end
662
663 --- Equips a piece of armor to a player.
664 --
665 -- @function armor:equip
666 -- @tparam ObjectRef player Player to whom item is equipped.
667 -- @tparam ItemStack itemstack Armor item to be equipped.
668 -- @treturn ItemStack Leftover item stack.
669 armor.equip = function(self, player, itemstack)
670 local name, armor_inv = self:get_valid_player(player, "[equip]")
671 local armor_element = self:get_element(itemstack:get_name())
672 if name and armor_element then
673 local index
674 for i=1, armor_inv:get_size("armor") do
675 local stack = armor_inv:get_stack("armor", i)
676 if self:get_element(stack:get_name()) == armor_element then
677 index = i
678 self:unequip(player, armor_element)
679 break
680 elseif not index and stack:is_empty() then
681 index = i
682 end
683 end
684 local stack = itemstack:take_item()
685 armor_inv:set_stack("armor", index, stack)
686 self:run_callbacks("on_equip", player, index, stack)
687 self:set_player_armor(player)
688 self:save_armor_inventory(player)
689 end
690 return itemstack
691 end
692
693 --- Unequips a piece of armor from a player.
694 --
695 -- @function armor:unequip
696 -- @tparam ObjectRef player Player from whom item is removed.
697 -- @tparam string armor_element Armor type identifier associated with the item
698 -- to be removed ("head", "torso", "hands", "shield", "legs", "feet", etc.).
699 armor.unequip = function(self, player, armor_element)
700 local name, armor_inv = self:get_valid_player(player, "[unequip]")
701 if not name then
702 return
703 end
704 for i=1, armor_inv:get_size("armor") do
705 local stack = armor_inv:get_stack("armor", i)
706 if self:get_element(stack:get_name()) == armor_element then
707 armor_inv:set_stack("armor", i, "")
708 minetest.after(0, function()
709 local inv = player:get_inventory()
710 if inv:room_for_item("main", stack) then
711 inv:add_item("main", stack)
712 else
713 minetest.add_item(player:get_pos(), stack)
714 end
715 end)
716 self:run_callbacks("on_unequip", player, i, stack)
717 self:set_player_armor(player)
718 self:save_armor_inventory(player)
719 return
720 end
721 end
722 end
723
724 --- Removes all armor worn by player.
725 --
726 -- @function armor:remove_all
727 -- @tparam ObjectRef player
728 armor.remove_all = function(self, player)
729 local name, inv = self:get_valid_player(player, "[remove_all]")
730 if not name then
731 return
732 end
733 inv:set_list("armor", {})
734 self:set_player_armor(player)
735 self:save_armor_inventory(player)
736 end
737
738 local skin_mod
739
740 --- Retrieves player's current skin.
741 --
742 -- @function armor:get_player_skin
743 -- @tparam string name Player name.
744 -- @treturn string Skin filename.
407745 armor.get_player_skin = function(self, name)
408 if (self.skin_mod == "skins" or self.skin_mod == "simple_skins") and skins.skins[name] then
746 if (skin_mod == "skins" or skin_mod == "simple_skins") and skins.skins[name] then
409747 return skins.skins[name]..".png"
410 elseif self.skin_mod == "u_skins" and u_skins.u_skins[name] then
748 elseif skin_mod == "u_skins" and u_skins.u_skins[name] then
411749 return u_skins.u_skins[name]..".png"
412 elseif self.skin_mod == "wardrobe" and wardrobe.playerSkins and wardrobe.playerSkins[name] then
750 elseif skin_mod == "wardrobe" and wardrobe.playerSkins and wardrobe.playerSkins[name] then
413751 return wardrobe.playerSkins[name]
414752 end
415753 return armor.default_skin..".png"
416754 end
417755
756 --- Updates skin.
757 --
758 -- @function armor:update_skin
759 -- @tparam string name Player name.
760 armor.update_skin = function(self, name)
761 minetest.after(0, function()
762 local pplayer = minetest.get_player_by_name(name)
763 if pplayer then
764 self.textures[name].skin = self:get_player_skin(name)
765 self:set_player_armor(pplayer)
766 end
767 end)
768 end
769
770 --- Adds preview for armor inventory.
771 --
772 -- @function armor:add_preview
773 -- @tparam string preview Preview image filename.
418774 armor.add_preview = function(self, preview)
419775 skin_previews[preview] = true
420776 end
421777
778 --- Retrieves preview for armor inventory.
779 --
780 -- @function armor:get_preview
781 -- @tparam string name Player name.
782 -- @treturn string Preview image filename.
422783 armor.get_preview = function(self, name)
423784 local preview = string.gsub(armor:get_player_skin(name), ".png", "_preview.png")
424785 if skin_previews[preview] then
427788 return "character_preview.png"
428789 end
429790
791 --- Retrieves armor formspec.
792 --
793 -- @function armor:get_armor_formspec
794 -- @tparam string name Player name.
795 -- @tparam[opt] bool listring Use `listring` formspec element (default: `false`).
796 -- @treturn string Formspec formatted string.
430797 armor.get_armor_formspec = function(self, name, listring)
431798 if armor.def[name].init_time == 0 then
432799 return "label[0,0;Armor not initialized!]"
449816 return formspec
450817 end
451818
819 --- Retrieves element.
820 --
821 -- @function armor:get_element
822 -- @tparam string item_name
823 -- @return Armor element.
452824 armor.get_element = function(self, item_name)
453825 for _, element in pairs(armor.elements) do
454826 if minetest.get_item_group(item_name, "armor_"..element) > 0 then
457829 end
458830 end
459831
832 --- Serializes armor inventory.
833 --
834 -- @function armor:serialize_inventory_list
835 -- @tparam table list Inventory contents.
836 -- @treturn string
460837 armor.serialize_inventory_list = function(self, list)
461838 local list_table = {}
462839 for _, stack in ipairs(list) do
465842 return minetest.serialize(list_table)
466843 end
467844
845 --- Deserializes armor inventory.
846 --
847 -- @function armor:deserialize_inventory_list
848 -- @tparam string list_string Serialized inventory contents.
849 -- @treturn table
468850 armor.deserialize_inventory_list = function(self, list_string)
469851 local list_table = minetest.deserialize(list_string)
470852 local list = {}
474856 return list
475857 end
476858
859 --- Loads armor inventory.
860 --
861 -- @function armor:load_armor_inventory
862 -- @tparam ObjectRef player
863 -- @treturn bool
477864 armor.load_armor_inventory = function(self, player)
478865 local _, inv = self:get_valid_player(player, "[load_armor_inventory]")
479866 if inv then
487874 end
488875 end
489876
877 --- Saves armor inventory.
878 --
879 -- Inventory is stored in `PlayerMetaRef` string "3d\_armor\_inventory".
880 --
881 -- @function armor:save_armor_inventory
882 -- @tparam ObjectRef player
490883 armor.save_armor_inventory = function(self, player)
491884 local _, inv = self:get_valid_player(player, "[save_armor_inventory]")
492885 if inv then
496889 end
497890 end
498891
892 --- Updates inventory.
893 --
894 -- DEPRECATED: Legacy inventory support.
895 --
896 -- @function armor:update_inventory
897 -- @param player
499898 armor.update_inventory = function(self, player)
500899 -- DEPRECATED: Legacy inventory support
501900 end
502901
902 --- Sets inventory stack.
903 --
904 -- @function armor:set_inventory_stack
905 -- @tparam ObjectRef player
906 -- @tparam int i Armor inventory index.
907 -- @tparam ItemStack stack Armor item.
503908 armor.set_inventory_stack = function(self, player, i, stack)
504909 local _, inv = self:get_valid_player(player, "[set_inventory_stack]")
505910 if inv then
508913 end
509914 end
510915
916 --- Checks for a player that can use armor.
917 --
918 -- @function armor:get_valid_player
919 -- @tparam ObjectRef player
920 -- @tparam string msg Additional info for log messages.
921 -- @treturn list Player name & armor inventory.
922 -- @usage local name, inv = armor:get_valid_player(player, "[equip]")
511923 armor.get_valid_player = function(self, player, msg)
512924 msg = msg or ""
513925 if not player then
514 minetest.log("warning", S("3d_armor: Player reference is nil @1", msg))
926 minetest.log("warning", ("3d_armor%s: Player reference is nil"):format(msg))
515927 return
516928 end
517929 local name = player:get_player_name()
518930 if not name then
519 minetest.log("warning", S("3d_armor: Player name is nil @1", msg))
931 minetest.log("warning", ("3d_armor%s: Player name is nil"):format(msg))
520932 return
521933 end
522934 local inv = minetest.get_inventory({type="detached", name=name.."_armor"})
523935 if not inv then
524 minetest.log("warning", S("3d_armor: Detached armor inventory is nil @1", msg))
936 -- This check may fail when called inside `on_joinplayer`
937 -- in that case, the armor will be initialized/updated later on
938 minetest.log("warning", ("3d_armor%s: Detached armor inventory is nil"):format(msg))
525939 return
526940 end
527941 return name, inv
528942 end
529943
944 --- Drops armor item at given position.
945 --
946 -- @tparam vector pos
947 -- @tparam ItemStack stack Armor item to be dropped.
530948 armor.drop_armor = function(pos, stack)
531949 local node = minetest.get_node_or_nil(pos)
532950 if node then
536954 end
537955 end
538956 end
957
958 --- Allows skin mod to be set manually.
959 --
960 -- Useful for skin mod forks that do not use the same name.
961 --
962 -- @tparam string mod Name of skin mod. Recognized names are "simple\_skins", "u\_skins", & "wardrobe".
963 armor.set_skin_mod = function(mod)
964 skin_mod = mod
965 end
0
1 --- Registered armors.
2 --
3 -- @topic armor
4
5
06 -- support for i18n
1 local S = armor_i18n.gettext
2
7 local S = armor.get_translator
8
9
10 --- Admin Helmet
11 --
12 -- @helmet 3d_armor:helmet_admin
13 -- @img 3d_armor_inv_helmet_admin.png
14 -- @grp armor_head 1
15 -- @grp armor_heal 100
16 -- @grp armor_use 0
17 -- @grp armor_water 1
18 -- @grp not_in_creative_inventory 1
19 -- @armorgrp fleshy 100
320 armor:register_armor("3d_armor:helmet_admin", {
421 description = S("Admin Helmet"),
522 inventory_image = "3d_armor_inv_helmet_admin.png",
1128 end,
1229 })
1330
31 --- Admin Chestplate
32 --
33 -- @chestplate 3d_armor:chestplate_admin
34 -- @img 3d_armor_inv_chestplate_admin.png
35 -- @grp armor_torso 1
36 -- @grp armor_heal 100
37 -- @grp armor_use 0
38 -- @grp not_in_creative_inventory 1
39 -- @armorgrp fleshy 100
1440 armor:register_armor("3d_armor:chestplate_admin", {
1541 description = S("Admin Chestplate"),
1642 inventory_image = "3d_armor_inv_chestplate_admin.png",
2248 end,
2349 })
2450
51 --- Admin Leggings
52 --
53 -- @leggings 3d_armor:leggings_admin
54 -- @img 3d_armor_inv_leggings_admin.png
55 -- @grp armor_legs 1
56 -- @grp armor_heal 100
57 -- @grp armor_use 0
58 -- @grp not_in_creative_inventory 1
59 -- @armorgrp fleshy 100
2560 armor:register_armor("3d_armor:leggings_admin", {
2661 description = S("Admin Leggings"),
2762 inventory_image = "3d_armor_inv_leggings_admin.png",
3368 end,
3469 })
3570
71 --- Admin Boots
72 --
73 -- @boots 3d_armor:boots_admin
74 -- @img 3d_armor_inv_boots_admin.png
75 -- @grp armor_feet 1
76 -- @grp armor_heal 100
77 -- @grp armor_use 0
78 -- @grp not_in_creative_inventory 1
79 -- @armorgrp fleshy 100
3680 armor:register_armor("3d_armor:boots_admin", {
3781 description = S("Admin Boots"),
3882 inventory_image = "3d_armor_inv_boots_admin.png",
4993 minetest.register_alias("adminchestplate", "3d_armor:chestplate_admin")
5094 minetest.register_alias("adminleggings", "3d_armor:leggings_admin")
5195
96
97 --- Wood
98 --
99 -- Requires setting `armor_material_wood`.
100 --
101 -- @section wood
102
52103 if armor.materials.wood then
104 --- Wood Helmet
105 --
106 -- @helmet 3d_armor:helmet_wood
107 -- @img 3d_armor_inv_helmet_wood.png
108 -- @grp armor_head 1
109 -- @grp armor_heal 0
110 -- @grp armor_use 2000
111 -- @grp flammable 1
112 -- @armorgrp fleshy 5
113 -- @damagegrp cracky 3
114 -- @damagegrp snappy 2
115 -- @damagegrp choppy 3
116 -- @damagegrp crumbly 2
117 -- @damagegrp level 1
53118 armor:register_armor("3d_armor:helmet_wood", {
54119 description = S("Wood Helmet"),
55120 inventory_image = "3d_armor_inv_helmet_wood.png",
57122 armor_groups = {fleshy=5},
58123 damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
59124 })
125 --- Wood Chestplate
126 --
127 -- @chestplate 3d_armor:chestplate_wood
128 -- @img 3d_armor_inv_chestplate_wood.png
129 -- @grp armor_torso 1
130 -- @grp armor_heal 0
131 -- @grp armor_use 2000
132 -- @grp flammable 1
133 -- @armorgrp fleshy 10
134 -- @damagegrp cracky 3
135 -- @damagegrp snappy 2
136 -- @damagegrp choppy 3
137 -- @damagegrp crumbly 2
138 -- @damagegrp level 1
60139 armor:register_armor("3d_armor:chestplate_wood", {
61140 description = S("Wood Chestplate"),
62141 inventory_image = "3d_armor_inv_chestplate_wood.png",
64143 armor_groups = {fleshy=10},
65144 damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
66145 })
146 --- Wood Leggings
147 --
148 -- @leggings 3d_armor:leggings_wood
149 -- @img 3d_armor_inv_leggings_wood.png
150 -- @grp armor_legs 1
151 -- @grp armor_heal 0
152 -- @grp armor_use 1000
153 -- @grp flammable 1
154 -- @armorgrp fleshy 10
155 -- @damagegrp cracky 3
156 -- @damagegrp snappy 2
157 -- @damagegrp choppy 3
158 -- @damagegrp crumbly 2
159 -- @damagegrp level 1
67160 armor:register_armor("3d_armor:leggings_wood", {
68161 description = S("Wood Leggings"),
69162 inventory_image = "3d_armor_inv_leggings_wood.png",
71164 armor_groups = {fleshy=10},
72165 damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
73166 })
167 --- Wood Boots
168 --
169 -- @boots 3d_armor:boots_wood
170 -- @img 3d_armor_inv_boots_wood.png
171 -- @grp armor_feet 1
172 -- @grp armor_heal 0
173 -- @grp armor_use 2000
174 -- @grp flammable 1
175 -- @armorgrp fleshy 5
176 -- @damagegrp cracky 3
177 -- @damagegrp snappy 2
178 -- @damagegrp choppy 3
179 -- @damagegrp crumbly 2
180 -- @damagegrp level 1
74181 armor:register_armor("3d_armor:boots_wood", {
75182 description = S("Wood Boots"),
76183 inventory_image = "3d_armor_inv_boots_wood.png",
93200 end
94201 end
95202
203
204 --- Cactus
205 --
206 -- Requires setting `armor_material_cactus`.
207 --
208 -- @section cactus
209
96210 if armor.materials.cactus then
211 --- Cactus Helmet
212 --
213 -- @helmet 3d_armor:helmet_cactus
214 -- @img 3d_armor_inv_helmet_cactus.png
215 -- @grp armor_head 1
216 -- @grp armor_heal 0
217 -- @grp armor_use 1000
218 -- @armorgrp fleshy 5
219 -- @damagegrp cracky 3
220 -- @damagegrp snappy 3
221 -- @damagegrp choppy 2
222 -- @damagegrp crumbly 2
223 -- @damagegrp level 1
97224 armor:register_armor("3d_armor:helmet_cactus", {
98225 description = S("Cactus Helmet"),
99226 inventory_image = "3d_armor_inv_helmet_cactus.png",
101228 armor_groups = {fleshy=5},
102229 damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1},
103230 })
231 --- Cactus Chestplate
232 --
233 -- @chestplate 3d_armor:chestplate_cactus
234 -- @img 3d_armor_inv_chestplate_cactus.png
235 -- @grp armor_torso 1
236 -- @grp armor_heal 0
237 -- @grp armor_use 1000
238 -- @armorgrp fleshy 10
239 -- @damagegrp cracky 3
240 -- @damagegrp snappy 3
241 -- @damagegrp choppy 2
242 -- @damagegrp crumbly 2
243 -- @damagegrp level 1
104244 armor:register_armor("3d_armor:chestplate_cactus", {
105245 description = S("Cactus Chestplate"),
106246 inventory_image = "3d_armor_inv_chestplate_cactus.png",
108248 armor_groups = {fleshy=10},
109249 damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1},
110250 })
251 --- Cactus Leggings
252 --
253 -- @leggings 3d_armor:leggings_cactus
254 -- @img 3d_armor_inv_leggings_cactus.png
255 -- @grp armor_legs 1
256 -- @grp armor_heal 0
257 -- @grp armor_use 1000
258 -- @armorgrp fleshy 10
259 -- @damagegrp cracky 3
260 -- @damagegrp snappy 3
261 -- @damagegrp choppy 2
262 -- @damagegrp crumbly 2
263 -- @damagegrp level 1
111264 armor:register_armor("3d_armor:leggings_cactus", {
112265 description = S("Cactus Leggings"),
113266 inventory_image = "3d_armor_inv_leggings_cactus.png",
115268 armor_groups = {fleshy=10},
116269 damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1},
117270 })
271 --- Cactus Boots
272 --
273 -- @boots 3d_armor:boots_cactus
274 -- @img 3d_armor_inv_boots_cactus.png
275 -- @grp armor_feet 1
276 -- @grp armor_heal 0
277 -- @grp armor_use 1000
278 -- @armorgrp fleshy 5
279 -- @damagegrp cracky 3
280 -- @damagegrp snappy 3
281 -- @damagegrp choppy 2
282 -- @damagegrp crumbly 2
283 -- @damagegrp level 1
118284 armor:register_armor("3d_armor:boots_cactus", {
119285 description = S("Cactus Boots"),
120286 inventory_image = "3d_armor_inv_boots_cactus.png",
137303 end
138304 end
139305
306
307 --- Steel
308 --
309 -- Requires setting `armor_material_steel`.
310 --
311 -- @section steel
312
140313 if armor.materials.steel then
314 --- Steel Helmet
315 --
316 -- @helmet 3d_armor:helmet_steel
317 -- @img 3d_armor_inv_helmet_steel.png
318 -- @grp armor_head 1
319 -- @grp armor_heal 0
320 -- @grp armor_use 800
321 -- @grp physics_speed -0.01
322 -- @grp physica_gravity 0.01
323 -- @armorgrp fleshy 10
324 -- @damagegrp cracky 2
325 -- @damagegrp snappy 3
326 -- @damagegrp choppy 2
327 -- @damagegrp crumbly 1
328 -- @damagegrp level 2
141329 armor:register_armor("3d_armor:helmet_steel", {
142330 description = S("Steel Helmet"),
143331 inventory_image = "3d_armor_inv_helmet_steel.png",
146334 armor_groups = {fleshy=10},
147335 damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
148336 })
337 --- Steel Chestplate
338 --
339 -- @chestplate 3d_armor:chestplate_steel
340 -- @img 3d_armor_inv_chestplate_steel.png
341 -- @grp armor_torso 1
342 -- @grp armor_heal 0
343 -- @grp armor_use 800
344 -- @grp physics_speed
345 -- @grp physics_gravity
346 -- @armorgrp fleshy
347 -- @damagegrp cracky 2
348 -- @damagegrp snappy 3
349 -- @damagegrp choppy 2
350 -- @damagegrp crumbly 1
351 -- @damagegrp level 2
149352 armor:register_armor("3d_armor:chestplate_steel", {
150353 description = S("Steel Chestplate"),
151354 inventory_image = "3d_armor_inv_chestplate_steel.png",
154357 armor_groups = {fleshy=15},
155358 damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
156359 })
360 --- Steel Leggings
361 --
362 -- @leggings 3d_armor:leggings_steel
363 -- @img 3d_armor_inv_leggings_steel.png
364 -- @grp armor_legs 1
365 -- @grp armor_heal 0
366 -- @grp armor_use 800
367 -- @grp physics_speed -0.03
368 -- @grp physics_gravity 0.03
369 -- @armorgrp fleshy 15
370 -- @damagegrp cracky 2
371 -- @damagegrp snappy 3
372 -- @damagegrp choppy 2
373 -- @damagegrp crumbly 1
374 -- @damagegrp level 2
157375 armor:register_armor("3d_armor:leggings_steel", {
158376 description = S("Steel Leggings"),
159377 inventory_image = "3d_armor_inv_leggings_steel.png",
162380 armor_groups = {fleshy=15},
163381 damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
164382 })
383 --- Steel Boots
384 --
385 -- @boots 3d_armor:boots_steel
386 -- @img 3d_armor_inv_boots_steel.png
387 -- @grp armor_feet 1
388 -- @grp armor_heal 0
389 -- @grp armor_use 800
390 -- @grp physics_speed -0.01
391 -- @grp physics_gravity 0.01
392 -- @armorgrp fleshy 10
393 -- @damagegrp cracky 2
394 -- @damagegrp snappy 3
395 -- @damagegrp choppy 2
396 -- @damagegrp crumbly 1
397 -- @damagegrp level 2
165398 armor:register_armor("3d_armor:boots_steel", {
166399 description = S("Steel Boots"),
167400 inventory_image = "3d_armor_inv_boots_steel.png",
172405 })
173406 end
174407
408
409 --- Bronze
410 --
411 -- Requires setting `armor_material_bronze`.
412 --
413 -- @section bronze
414
175415 if armor.materials.bronze then
416 --- Bronze Helmet
417 --
418 -- @helmet 3d_armor:helmet_bronze
419 -- @img 3d_armor_inv_helmet_bronze.png
420 -- @grp armor_head 1
421 -- @grp armor_heal 6
422 -- @grp armor_use 400
423 -- @grp physics_speed -0.01
424 -- @grp physics_gravity 0.01
425 -- @armorgrp fleshy 10
426 -- @damagegrp cracky 3
427 -- @damagegrp snappy 2
428 -- @damagegrp choppy 2
429 -- @damagegrp crumbly 1
430 -- @damagegrp level 2
176431 armor:register_armor("3d_armor:helmet_bronze", {
177432 description = S("Bronze Helmet"),
178433 inventory_image = "3d_armor_inv_helmet_bronze.png",
181436 armor_groups = {fleshy=10},
182437 damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2},
183438 })
439 --- Bronze Chestplate
440 --
441 -- @chestplate 3d_armor:chestplate_bronze
442 -- @img 3d_armor_inv_chestplate_bronze.png
443 -- @grp armor_torso 1
444 -- @grp armor_heal 6
445 -- @grp armor_use 400
446 -- @grp physics_speed -0.04
447 -- @grp physics_gravity 0.04
448 -- @armorgrp fleshy 15
449 -- @damagegrp cracky 3
450 -- @damagegrp snappy 2
451 -- @damagegrp choppy 2
452 -- @damagegrp crumbly 1
453 -- @damagegrp level 2
184454 armor:register_armor("3d_armor:chestplate_bronze", {
185455 description = S("Bronze Chestplate"),
186456 inventory_image = "3d_armor_inv_chestplate_bronze.png",
189459 armor_groups = {fleshy=15},
190460 damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2},
191461 })
462 --- Bronze Leggings
463 --
464 -- @leggings 3d_armor:leggings_bronze
465 -- @img 3d_armor_inv_leggings_bronze.png
466 -- @grp armor_legs 1
467 -- @grp armor_heal 6
468 -- @grp armor_use 400
469 -- @grp physics_speed -0.03
470 -- @grp physics_gravity 0.03
471 -- @armorgrp fleshy 15
472 -- @damagegrp cracky 3
473 -- @damagegrp snappy 2
474 -- @damagegrp choppy 2
475 -- @damagegrp crumbly 1
476 -- @damagegrp level 2
192477 armor:register_armor("3d_armor:leggings_bronze", {
193478 description = S("Bronze Leggings"),
194479 inventory_image = "3d_armor_inv_leggings_bronze.png",
197482 armor_groups = {fleshy=15},
198483 damage_groups = {cracky=3, snappy=2, choppy=2, crumbly=1, level=2},
199484 })
485 --- Bronze Boots
486 --
487 -- @boots 3d_armor:boots_bronze
488 -- @img 3d_armor_inv_boots_bronze.png
489 -- @grp armor_feet 1
490 -- @grp armor_heal 6
491 -- @grp armor_use 400
492 -- @grp physics_speed -0.01
493 -- @grp physics_gravity 0.01
494 -- @armorgrp fleshy 10
495 -- @damagegrp cracky 3
496 -- @damagegrp snappy 2
497 -- @damagegrp choppy 2
498 -- @damagegrp crumbly 1
499 -- @damagegrp level 2
200500 armor:register_armor("3d_armor:boots_bronze", {
201501 description = S("Bronze Boots"),
202502 inventory_image = "3d_armor_inv_boots_bronze.png",
207507 })
208508 end
209509
510
511 --- Diamond
512 --
513 -- Requires setting `armor_material_diamond`.
514 --
515 -- @section diamond
516
210517 if armor.materials.diamond then
518 --- Diamond Helmet
519 --
520 -- @helmet 3d_armor:helmet_diamond
521 -- @img 3d_armor_inv_helmet_diamond.png
522 -- @grp armor_head 1
523 -- @grp armor_heal 12
524 -- @grp armor_use 200
525 -- @armorgrp fleshy 15
526 -- @damagegrp cracky 2
527 -- @damagegrp snappy 1
528 -- @damagegrp choppy 1
529 -- @damagegrp level 3
211530 armor:register_armor("3d_armor:helmet_diamond", {
212531 description = S("Diamond Helmet"),
213532 inventory_image = "3d_armor_inv_helmet_diamond.png",
215534 armor_groups = {fleshy=15},
216535 damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
217536 })
537 --- Diamond Chestplate
538 --
539 -- @chestplate 3d_armor:chestplate_diamond
540 -- @img 3d_armor_inv_chestplate_diamond.png
541 -- @grp armor_torso 1
542 -- @grp armor_heal 12
543 -- @grp armor_use 200
544 -- @armorgrp fleshy 20
545 -- @damagegrp cracky 2
546 -- @damagegrp snappy 1
547 -- @damagegrp choppy 1
548 -- @damagegrp level 3
218549 armor:register_armor("3d_armor:chestplate_diamond", {
219550 description = S("Diamond Chestplate"),
220551 inventory_image = "3d_armor_inv_chestplate_diamond.png",
222553 armor_groups = {fleshy=20},
223554 damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
224555 })
556 --- Diamond Leggings
557 --
558 -- @leggings 3d_armor:leggings_diamond
559 -- @img 3d_armor_inv_leggings_diamond.png
560 -- @grp armor_legs 1
561 -- @grp armor_heal 12
562 -- @grp armor_use 200
563 -- @armorgrp fleshy 20
564 -- @damagegrp cracky 2
565 -- @damagegrp snappy 1
566 -- @damagegrp choppy 1
567 -- @damagegrp level 3
225568 armor:register_armor("3d_armor:leggings_diamond", {
226569 description = S("Diamond Leggings"),
227570 inventory_image = "3d_armor_inv_leggings_diamond.png",
229572 armor_groups = {fleshy=20},
230573 damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
231574 })
575 --- Diamond Boots
576 --
577 -- @boots 3d_armor:boots_diamond
578 -- @img 3d_armor_inv_boots_diamond.png
579 -- @grp armor_feet 1
580 -- @grp armor_heal 12
581 -- @grp armor_use 200
582 -- @armorgrp fleshy 15
583 -- @damagegrp cracky 2
584 -- @damagegrp snappy 1
585 -- @damagegrp choppy 1
586 -- @damagegrp level 3
232587 armor:register_armor("3d_armor:boots_diamond", {
233588 description = S("Diamond Boots"),
234589 inventory_image = "3d_armor_inv_boots_diamond.png",
238593 })
239594 end
240595
596
597 --- Gold
598 --
599 -- Requires `armor_material_gold`.
600 --
601 -- @section gold
602
241603 if armor.materials.gold then
604 --- Gold Helmet
605 --
606 -- @helmet 3d_armor:helmet_gold
607 -- @img 3d_armor_inv_helmet_gold.png
608 -- @grp armor_head 1
609 -- @grp armor_heal 6
610 -- @grp armor_use 300
611 -- @grp physics_speed -0.02
612 -- @grp physics_gravity 0.02
613 -- @armorgrp fleshy 10
614 -- @damagegrp cracky 1
615 -- @damagegrp snappy 2
616 -- @damagegrp choppy 2
617 -- @damagegrp crumbly 3
618 -- @damagegrp level 2
242619 armor:register_armor("3d_armor:helmet_gold", {
243620 description = S("Gold Helmet"),
244621 inventory_image = "3d_armor_inv_helmet_gold.png",
247624 armor_groups = {fleshy=10},
248625 damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2},
249626 })
627 --- Gold Chestplate
628 --
629 -- @chestplate 3d_armor:chestplate_gold
630 -- @img 3d_armor_inv_chestplate_gold.png
631 -- @grp armor_torso 1
632 -- @grp armor_heal 6
633 -- @grp armor_use 300
634 -- @grp physics_speed -0.05
635 -- @grp physics_gravity 0.05
636 -- @armorgrp fleshy 15
637 -- @damagegrp cracky 1
638 -- @damagegrp snappy 2
639 -- @damagegrp choppy 2
640 -- @damagegrp crumbly 3
641 -- @damagegrp level 2
250642 armor:register_armor("3d_armor:chestplate_gold", {
251643 description = S("Gold Chestplate"),
252644 inventory_image = "3d_armor_inv_chestplate_gold.png",
255647 armor_groups = {fleshy=15},
256648 damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2},
257649 })
650 --- Gold Leggings
651 --
652 -- @leggings 3d_armor:leggings_gold
653 -- @img 3d_armor_inv_leggings_gold.png
654 -- @grp armor_legs 1
655 -- @grp armor_heal 6
656 -- @grp armor_use 300
657 -- @grp physics_speed -0.04
658 -- @grp physics_gravity 0.04
659 -- @armorgrp fleshy 15
660 -- @damagegrp cracky 1
661 -- @damagegrp snappy 2
662 -- @damagegrp choppy 2
663 -- @damagegrp crumbly 3
664 -- @damagegrp level 2
258665 armor:register_armor("3d_armor:leggings_gold", {
259666 description = S("Gold Leggings"),
260667 inventory_image = "3d_armor_inv_leggings_gold.png",
263670 armor_groups = {fleshy=15},
264671 damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2},
265672 })
673 --- Gold Boots
674 --
675 -- @boots 3d_armor:boots_gold
676 -- @img 3d_armor_inv_boots_gold.png
677 -- @grp armor_feet 1
678 -- @grp armor_heal 6
679 -- @grp armor_use 300
680 -- @grp physics_speed -0.02
681 -- @grp physics_gravity 0.02
682 -- @armorgrp fleshy 10
683 -- @damagegrp cracky 1
684 -- @damagegrp snappy 2
685 -- @damagegrp choppy 2
686 -- @damagegrp crumbly 3
687 -- @damagegrp level 2
266688 armor:register_armor("3d_armor:boots_gold", {
267689 description = S("Gold Boots"),
268690 inventory_image = "3d_armor_inv_boots_gold.png",
273695 })
274696 end
275697
698
699 --- Mithril
700 --
701 -- Requires `armor_material_mithril`.
702 --
703 -- @section mithril
704
276705 if armor.materials.mithril then
706 --- Mithril Helmet
707 --
708 -- @helmet 3d_armor:helmet_mithril
709 -- @img 3d_armor_inv_helmet_mithril.png
710 -- @grp armor_head 1
711 -- @grp armor_heal 12
712 -- @grp armor_use 100
713 -- @armorgrp fleshy 15
714 -- @damagegrp cracky 2
715 -- @damagegrp snappy 1
716 -- @damagegrp level 3
277717 armor:register_armor("3d_armor:helmet_mithril", {
278718 description = S("Mithril Helmet"),
279719 inventory_image = "3d_armor_inv_helmet_mithril.png",
281721 armor_groups = {fleshy=15},
282722 damage_groups = {cracky=2, snappy=1, level=3},
283723 })
724 --- Mithril Chestplate
725 --
726 -- @chestplate 3d_armor:chestplate_mithril
727 -- @img 3d_armor_inv_chestplate_mithril.png
728 -- @grp armor_torso 1
729 -- @grp armor_heal 12
730 -- @grp armor_use 100
731 -- @armorgrp fleshy 20
732 -- @damagegrp cracky 2
733 -- @damagegrp snappy 1
734 -- @damagegrp level 3
284735 armor:register_armor("3d_armor:chestplate_mithril", {
285736 description = S("Mithril Chestplate"),
286737 inventory_image = "3d_armor_inv_chestplate_mithril.png",
288739 armor_groups = {fleshy=20},
289740 damage_groups = {cracky=2, snappy=1, level=3},
290741 })
742 --- Mithril Leggings
743 --
744 -- @leggings 3d_armor:leggings_mithril
745 -- @img 3d_armor_inv_leggings_mithril.png
746 -- @grp armor_legs 1
747 -- @grp armor_heal 12
748 -- @grp armor_use 100
749 -- @armorgrp fleshy 20
750 -- @damagegrp cracky 2
751 -- @damagegrp snappy 1
752 -- @damagegrp level 3
291753 armor:register_armor("3d_armor:leggings_mithril", {
292754 description = S("Mithril Leggings"),
293755 inventory_image = "3d_armor_inv_leggings_mithril.png",
295757 armor_groups = {fleshy=20},
296758 damage_groups = {cracky=2, snappy=1, level=3},
297759 })
760 --- Mithril Boots
761 --
762 -- @boots 3d_armor:boots_mithril
763 -- @img 3d_armor_inv_boots_mithril.png
764 -- @grp armor_feet 1
765 -- @grp armor_heal 12
766 -- @grp armor_use 100
767 -- @armorgrp fleshy 15
768 -- @damagegrp cracky 2
769 -- @damagegrp snappy 1
770 -- @damagegrp level 3
298771 armor:register_armor("3d_armor:boots_mithril", {
299772 description = S("Mithril Boots"),
300773 inventory_image = "3d_armor_inv_boots_mithril.png",
304777 })
305778 end
306779
780
781 --- Crystal
782 --
783 -- Requires `armor_material_crystal`.
784 --
785 -- @section crystal
786
307787 if armor.materials.crystal then
788 --- Crystal Helmet
789 --
790 -- @helmet 3d_armor:helmet_crystal
791 -- @img 3d_armor_inv_helmet_crystal.png
792 -- @grp armor_head 1
793 -- @grp armor_heal 12
794 -- @grp armor_use 100
795 -- @grp armor_fire 1
796 -- @armorgrp fleshy 15
797 -- @damagegrp cracky 2
798 -- @damagegrp snappy 1
799 -- @damagegrp level 3
308800 armor:register_armor("3d_armor:helmet_crystal", {
309801 description = S("Crystal Helmet"),
310802 inventory_image = "3d_armor_inv_helmet_crystal.png",
312804 armor_groups = {fleshy=15},
313805 damage_groups = {cracky=2, snappy=1, level=3},
314806 })
807 --- Crystal Chestplate
808 --
809 -- @chestplate 3d_armor:chestplate_crystal
810 -- @img 3d_armor_inv_chestplate_crystal.png
811 -- @grp armor_torso 1
812 -- @grp armor_heal 12
813 -- @grp armor_use 100
814 -- @grp armor_fire 1
815 -- @armorgrp fleshy 20
816 -- @damagegrp cracky 2
817 -- @damagegrp snappy 1
818 -- @damagegrp level 3
315819 armor:register_armor("3d_armor:chestplate_crystal", {
316820 description = S("Crystal Chestplate"),
317821 inventory_image = "3d_armor_inv_chestplate_crystal.png",
319823 armor_groups = {fleshy=20},
320824 damage_groups = {cracky=2, snappy=1, level=3},
321825 })
826 --- Crystal Leggings
827 --
828 -- @leggings 3d_armor:leggings_crystal
829 -- @img 3d_armor_inv_leggings_crystal.png
830 -- @grp armor_legs 1
831 -- @grp armor_heal 12
832 -- @grp armor_use 100
833 -- @grp armor_fire 1
834 -- @armorgrp fleshy 20
835 -- @damagegrp cracky 2
836 -- @damagegrp snappy 1
837 -- @damagegrp level 3
322838 armor:register_armor("3d_armor:leggings_crystal", {
323839 description = S("Crystal Leggings"),
324840 inventory_image = "3d_armor_inv_leggings_crystal.png",
326842 armor_groups = {fleshy=20},
327843 damage_groups = {cracky=2, snappy=1, level=3},
328844 })
845 --- Crystal Boots
846 --
847 -- @boots 3d_armor:boots_crystal
848 -- @img 3d_armor_inv_boots_crystal.png
849 -- @grp armor_feet 1
850 -- @grp armor_heal 12
851 -- @grp armor_use 100
852 -- @grp physics_speed 1
853 -- @grp physics_jump 0.5
854 -- @grp armor_fire 1
855 -- @armorgrp fleshy 15
856 -- @damagegrp cracky 2
857 -- @damagegrp snappy 1
858 -- @damagegrp level 3
329859 armor:register_armor("3d_armor:boots_crystal", {
330860 description = S("Crystal Boots"),
331861 inventory_image = "3d_armor_inv_boots_crystal.png",
335865 damage_groups = {cracky=2, snappy=1, level=3},
336866 })
337867 end
868
869
870 --- Crafting
871 --
872 -- @section craft
873
874 --- Craft recipes for helmets, chestplates, leggings, boots, & shields.
875 --
876 -- @craft armor
877 -- @usage
878 -- Key:
879 -- - m: material
880 -- - wood: group:wood
881 -- - cactus: default:cactus
882 -- - steel: default:steel_ingot
883 -- - bronze: default:bronze_ingot
884 -- - diamond: default:diamond
885 -- - gold: default:gold_ingot
886 -- - mithril: moreores:mithril_ingot
887 -- - crystal: ethereal:crystal_ingot
888 --
889 -- helmet: chestplate: leggings:
890 -- ┌───┬───┬───┐ ┌───┬───┬───┐ ┌───┬───┬───┐
891 -- │ m │ m │ m │ │ m │ │ m │ │ m │ m │ m │
892 -- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
893 -- │ m │ │ m │ │ m │ m │ m │ │ m │ │ m │
894 -- ├───┼───┼───┤ ├───┼───┼───┤ ├───┼───┼───┤
895 -- │ │ │ │ │ m │ m │ m │ │ m │ │ m │
896 -- └───┴───┴───┘ └───┴───┴───┘ └───┴───┴───┘
897 --
898 -- boots: shield:
899 -- ┌───┬───┬───┐ ┌───┬───┬───┐
900 -- │ │ │ │ │ m │ m │ m │
901 -- ├───┼───┼───┤ ├───┼───┼───┤
902 -- │ m │ │ m │ │ m │ m │ m │
903 -- ├───┼───┼───┤ ├───┼───┼───┤
904 -- │ m │ │ m │ │ │ m │ │
905 -- └───┴───┴───┘ └───┴───┴───┘
338906
339907 for k, v in pairs(armor.materials) do
340908 minetest.register_craft({
44 fire?
55 ethereal?
66 bakedclay?
7 intllib?
7 moreores?
44 local pending_players = {}
55 local timer = 0
66
7 -- support for i18n
8 armor_i18n = { }
9 armor_i18n.gettext, armor_i18n.ngettext = dofile(modpath.."/intllib.lua")
7 dofile(modpath.."/api.lua")
108
119 -- local functions
12 local S = armor_i18n.gettext
1310 local F = minetest.formspec_escape
14
15 dofile(modpath.."/api.lua")
11 local S = armor.get_translator
1612
1713 -- integration test
1814 if minetest.settings:get_bool("enable_3d_armor_integration_test") then
19 dofile(modpath.."/integration_test.lua")
15 dofile(modpath.."/integration_test.lua")
2016 end
2117
2218
5147 local setting = minetest.settings:get("armor_"..name)
5248 if type(config) == "number" then
5349 setting = tonumber(setting)
50 elseif type(config) == "string" then
51 setting = tostring(setting)
5452 elseif type(config) == "boolean" then
5553 setting = minetest.settings:get_bool("armor_"..name)
5654 end
6563 end
6664 end
6765
66 -- Convert set_elements to a Lua table splitting on blank spaces
67 local t_set_elements = armor.config.set_elements
68 armor.config.set_elements = string.split(t_set_elements, " ")
69
70 -- Remove torch damage if fire_protect_torch == false
71 if armor.config.fire_protect_torch == false and armor.config.fire_protect == true then
72 for k,v in pairs(armor.fire_nodes) do
73 for k2,v2 in pairs(v) do
74 if string.find (v2,"torch") then
75 armor.fire_nodes[k] = nil
76 end
77 end
78 end
79 end
80
6881 -- Mod Compatibility
6982
7083 if minetest.get_modpath("technic") then
7184 armor.formspec = armor.formspec..
72 "label[5,2.5;"..F(S("Radiation"))..": armor_group_radiation]"
85 "label[5,2.5;"..F(S("Radiation"))..": armor_group_radiation]"
7386 armor:register_armor_group("radiation")
7487 end
7588 local skin_mods = {"skins", "u_skins", "simple_skins", "wardrobe"}
8295 armor:add_preview(fn)
8396 end
8497 end
85 armor.skin_mod = mod
98 armor.set_skin_mod(mod)
8699 end
87100 end
88101 if not minetest.get_modpath("moreores") then
98111
99112 armor.formspec = armor.formspec..
100113 "label[5,1;"..F(S("Level"))..": armor_level]"..
101 "label[5,1.5;"..F(S("Heal"))..": armor_attr_heal]"
114 "label[5,1.5;"..F(S("Heal"))..": armor_attr_heal]"
102115 if armor.config.fire_protect then
103 armor.formspec = armor.formspec.."label[5,2;"..F(S("Fire"))..": armor_attr_fire]"
116 armor.formspec = armor.formspec.."label[5,2;"..F(S("Fire"))..": armor_attr_fire]"
104117 end
105118 armor:register_on_damage(function(player, index, stack)
106119 local name = player:get_player_name()
196209 armor:set_player_armor(player)
197210 end,
198211 allow_put = function(inv, listname, index, put_stack, player)
212 if player:get_player_name() ~= name then
213 return 0
214 end
199215 local element = armor:get_element(put_stack:get_name())
200216 if not element then
201217 return 0
211227 return 1
212228 end,
213229 allow_take = function(inv, listname, index, stack, player)
230 if player:get_player_name() ~= name then
231 return 0
232 end
214233 return stack:get_count()
215234 end,
216235 allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
236 if player:get_player_name() ~= name then
237 return 0
238 end
217239 return count
218240 end,
219241 }, name)
295317 if not name then
296318 return
297319 end
298 local player_name = player:get_player_name()
320 local player_name = player:get_player_name()
299321 for field, _ in pairs(fields) do
300322 if string.find(field, "skins_set") then
301 minetest.after(0, function()
302 local pplayer = minetest.get_player_by_name(player_name)
303 if player then
304 local skin = armor:get_player_skin(name)
305 armor.textures[name].skin = skin
306 armor:set_player_armor(pplayer)
307 end
308 end)
323 armor:update_skin(player_name)
309324 end
310325 end
311326 end)
312327
313328 minetest.register_on_joinplayer(function(player)
314329 default.player_set_model(player, "3d_armor_character.b3d")
315 local player_name = player:get_player_name()
330 local player_name = player:get_player_name()
316331
317332 minetest.after(0, function()
318 local pplayer = minetest.get_player_by_name(player_name)
333 -- TODO: Added in 7566ecc - What's the prupose?
334 local pplayer = minetest.get_player_by_name(player_name)
319335 if pplayer and init_player_armor(pplayer) == false then
320336 pending_players[pplayer] = 0
321337 end
379395 end)
380396 end
381397 end)
398 else -- reset un-dropped armor and it's effects
399 minetest.register_on_respawnplayer(function(player)
400 armor:set_player_armor(player)
401 end)
382402 end
383403
384404 if armor.config.punch_damage == true then
385405 minetest.register_on_punchplayer(function(player, hitter,
386406 time_from_last_punch, tool_capabilities)
387407 local name = player:get_player_name()
388 if name then
408 local hit_ip = hitter:is_player()
409 if name and hit_ip and minetest.is_protected(player:get_pos(), "") then
410 return
411 elseif name then
389412 armor:punch(player, hitter, time_from_last_punch, tool_capabilities)
390413 last_punch_time[name] = minetest.get_gametime()
391414 end
413436
414437 minetest.register_globalstep(function(dtime)
415438 timer = timer + dtime
416 if timer > armor.config.init_delay then
417 for player, count in pairs(pending_players) do
418 local remove = init_player_armor(player) == true
419 pending_players[player] = count + 1
420 if remove == false and count > armor.config.init_times then
421 minetest.log("warning", S("3d_armor: Failed to initialize player"))
422 remove = true
423 end
424 if remove == true then
425 pending_players[player] = nil
426 end
427 end
428 timer = 0
439 if timer <= armor.config.init_delay then
440 return
441 end
442 timer = 0
443
444 for player, count in pairs(pending_players) do
445 local remove = init_player_armor(player) == true
446 pending_players[player] = count + 1
447 if remove == false and count > armor.config.init_times then
448 minetest.log("warning", S("3d_armor: Failed to initialize player"))
449 remove = true
450 end
451 if remove == true then
452 pending_players[player] = nil
453 end
454 end
455
456 -- water breathing protection, added by TenPlus1
457 if armor.config.water_protect == true then
458 for _,player in pairs(minetest.get_connected_players()) do
459 local name = player:get_player_name()
460 if armor.def[name].water > 0 and
461 player:get_breath() < 10 then
462 player:set_breath(10)
463 end
464 end
429465 end
430466 end)
431467
432 -- Fire Protection and water breathing, added by TenPlus1.
433
468 -- Fire Protection, added by TenPlus1.
434469 if armor.config.fire_protect == true then
435 -- override hot nodes so they do not hurt player anywhere but mod
470 -- override any hot nodes that do not already deal damage
436471 for _, row in pairs(armor.fire_nodes) do
437472 if minetest.registered_nodes[row[1]] then
438 minetest.override_item(row[1], {damage_per_second = 0})
473 local damage = minetest.registered_nodes[row[1]].damage_per_second
474 if not damage or damage == 0 then
475 minetest.override_item(row[1], {damage_per_second = row[3]})
476 end
439477 end
440478 end
441479 else
442 print (S("[3d_armor] Fire Nodes disabled"))
443 end
444
445 if armor.config.water_protect == true or armor.config.fire_protect == true then
446 minetest.register_globalstep(function(dtime)
447 armor.timer = armor.timer + dtime
448 if armor.timer < armor.config.update_time then
449 return
450 end
451 for _,player in pairs(minetest.get_connected_players()) do
452 local name = player:get_player_name()
453 local pos = player:get_pos()
454 local hp = player:get_hp()
455 if not name or not pos or not hp then
456 return
457 end
458 -- water breathing
459 if armor.config.water_protect == true then
460 if armor.def[name].water > 0 and
461 player:get_breath() < 10 then
462 player:set_breath(10)
463 end
464 end
480 print ("[3d_armor] Fire Nodes disabled")
481 end
482
483 if armor.config.fire_protect == true then
484 minetest.register_on_player_hpchange(function(player, hp_change, reason)
485
486 if reason.type == "node_damage" and reason.node then
465487 -- fire protection
466 if armor.config.fire_protect == true then
467 local fire_damage = true
468 pos.y = pos.y + 1.4 -- head level
469 local node_head = minetest.get_node(pos).name
470 pos.y = pos.y - 1.2 -- feet level
471 local node_feet = minetest.get_node(pos).name
472 -- is player inside a hot node?
473 for _, row in pairs(armor.fire_nodes) do
474 -- check fire protection, if not enough then get hurt
475 if row[1] == node_head or row[1] == node_feet then
476 if fire_damage == true then
488 if armor.config.fire_protect == true and hp_change < 0 then
489 local name = player:get_player_name()
490 for _,igniter in pairs(armor.fire_nodes) do
491 if reason.node == igniter[1] then
492 if armor.def[name].fire < igniter[2] then
477493 armor:punch(player, "fire")
478 last_punch_time[name] = minetest.get_gametime()
479 fire_damage = false
480 end
481 if hp > 0 and armor.def[name].fire < row[2] then
482 hp = hp - row[3] * armor.config.update_time
483 player:set_hp(hp)
484 break
494 else
495 hp_change = 0
485496 end
486497 end
487498 end
488499 end
489500 end
490 armor.timer = 0
491 end)
492 end
501 return hp_change
502 end, true)
503 end
+0
-45
3d_armor/intllib.lua less more
0
1 -- Fallback functions for when `intllib` is not installed.
2 -- Code released under Unlicense <http://unlicense.org>.
3
4 -- Get the latest version of this file at:
5 -- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
6
7 local function format(str, ...)
8 local args = { ... }
9 local function repl(escape, open, num, close)
10 if escape == "" then
11 local replacement = tostring(args[tonumber(num)])
12 if open == "" then
13 replacement = replacement..close
14 end
15 return replacement
16 else
17 return "@"..open..num..close
18 end
19 end
20 return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
21 end
22
23 local gettext, ngettext
24 if minetest.get_modpath("intllib") then
25 if intllib.make_gettext_pair then
26 -- New method using gettext.
27 gettext, ngettext = intllib.make_gettext_pair()
28 else
29 -- Old method using text files.
30 gettext = intllib.Getter()
31 end
32 end
33
34 -- Fill in missing functions.
35
36 gettext = gettext or function(msgid, ...)
37 return format(msgid, ...)
38 end
39
40 ngettext = ngettext or function(msgid, msgid_plural, n, ...)
41 return format(n==1 and msgid or msgid_plural, ...)
42 end
43
44 return gettext, ngettext
0 # textdomain: 3d_armor
1
2
3 ### api.lua ###
4
5 3d_armor: Detached armor inventory is nil @1=3d_armor: La armadura desconectada es nula @1
6 3d_armor: Player name is nil @1=3d_armor: El nombre del jugador es nulo @1
7 3d_armor: Player reference is nil @1=3d_armor: La referencia del jugador es nula @1
8
9 ### armor.lua ###
10
11 Admin Boots=Botas de admin
12 Admin Chestplate=Peto de admin
13 Admin Helmet=Casco de admin
14 Admin Leggings=Grebas de admin
15 Bronze Boots=Botas de bronce
16 Bronze Chestplate=Peto de bronce
17 Bronze Helmet=Casco de bronce
18 Bronze Leggings=Grebas de bronce
19 Cactus Boots=Botas de cactus
20 Cactus Chestplate=Peto de cactus
21 Cactus Helmet=Casco de cactus
22 Cactus Leggings=Grebas de cactus
23 Crystal Boots=Botas de cristal
24 Crystal Chestplate=Peto de cristal
25 Crystal Helmet=Casco de cristal
26 Crystal Leggings=Grebas de cristal
27 Diamond Boots=Botas de diamante
28 Diamond Chestplate=Peto de diamante
29 Diamond Helmet=Casco de diamante
30 Diamond Leggings=Grebas de diamante
31 Gold Boots=Botas de oro
32 Gold Chestplate=Peto de oro
33 Gold Helmet=Casco de oro
34 Gold Leggings=Grebas de oro
35 Mithril Boots=Botas de mitrilo
36 Mithril Chestplate=Peto de mitrilo
37 Mithril Helmet=Casco de mitrilo
38 Mithril Leggings=Grebas de mitrilo
39 Steel Boots=Botas de acero
40 Steel Chestplate=Peto de acero
41 Steel Helmet=Casco de acero
42 Steel Leggings=Grebas de acero
43 Wood Boots=Botas de madera
44 Wood Chestplate=Peto de madera
45 Wood Helmet=Casco de madera
46 Wood Leggings=Grebas de madera
47
48 ### init.lua ###
49
50 3d_armor: Failed to initialize player=3d_armor: Fallo en la inicialización del jugador
51 Fire=Fuego
52 Heal=Salud
53 Level=Nivel
54 Radiation=Radiación
55 Your @1 got destroyed!=¡Tu @1 fue destruído!
56 Your @1 is almost broken!=¡Tu @1 esta a punto de romperse!
57 [3d_armor] Fire Nodes disabled=[3d_armor] Nodos de fuego desabilitados
0 # textdomain: 3d_armor
1
2
3 ### api.lua ###
4
5 3d_armor: Detached armor inventory is nil @1=3d_armor : Inventaire détaché pour l'armure non trouvé @1
6 3d_armor: Player name is nil @1=3d_armor : Nom du joueur non trouvé @1
7 3d_armor: Player reference is nil @1=3d_armor : Référence au joueur non trouvée @1
8
9 ### armor.lua ###
10
11 Admin Boots=Bottes d'admin
12 Admin Chestplate=Cuirasse d'admin
13 Admin Helmet=Casque d'admin
14 Admin Leggings=Jambières d'admin
15 Bronze Boots=Bottes en bronze
16 Bronze Chestplate=Cuirasse en bronze
17 Bronze Helmet=Casque en bronze
18 Bronze Leggings=Jambières en bronze
19 Cactus Boots=Bottes en cactus
20 Cactus Chestplate=Cuirasse en cactus
21 Cactus Helmet=Casque en cactus
22 Cactus Leggings=Jambières en cactus
23 Crystal Boots=Bottes en cristal
24 Crystal Chestplate=Cuirasse en cristal
25 Crystal Helmet=Casque en cristal
26 Crystal Leggings=Jambières en cristal
27 Diamond Boots=Bottes en diamant
28 Diamond Chestplate=Cuirasse en diamant
29 Diamond Helmet=Casque en diamant
30 Diamond Leggings=Jambières en diamant
31 Gold Boots=Bottes en or
32 Gold Chestplate=Cuirasse en or
33 Gold Helmet=Casque en or
34 Gold Leggings=Jambières en or
35 Mithril Boots=Bottes en mithril
36 Mithril Chestplate=Cuirasse en mithril
37 Mithril Helmet=Casque en mithril
38 Mithril Leggings=Jambières en mithril
39 Steel Boots=Bottes en acier
40 Steel Chestplate=Cuirasse en acier
41 Steel Helmet=Casque en acier
42 Steel Leggings=Jambières en acier
43 Wood Boots=Bottes en bois
44 Wood Chestplate=Cuirasse en bois
45 Wood Helmet=Casque en bois
46 Wood Leggings=Jambières en bois
47
48 ### init.lua ###
49
50 3d_armor: Failed to initialize player=3d_armor : Impossible d'initialiser le joueur
51 Fire=Fire
52 Heal=Soins
53 Level=Niveau
54 Radiation=Radiation
55 Your @1 got destroyed!=Une partie de votre armure a été détruite : @1 !
56 Your @1 is almost broken!=Une partie de votre armure est presque détruite : @1 !
57 [3d_armor] Fire Nodes disabled=[3d_armor] Nœuds de type feu désactivés
0 # textdomain: 3d_armor
1
2
3 ### api.lua ###
4
5 3d_armor: Detached armor inventory is nil @1=3d_armor: L'inventario separato dell'armatura è nullo @1
6 3d_armor: Player name is nil @1=3d_armor: Il nome dell'utente è nullo @1
7 3d_armor: Player reference is nil @1=3d_armor: Il riferimento all'utente è nullo @1
8
9 ### armor.lua ###
10
11 Admin Boots=Stivali dell'amministratrice/tore
12 Admin Chestplate=Corazza dell'amministratrice/tore
13 Admin Helmet=Elmo dell'amministratrice/tore
14 Admin Leggings=Gambali dell'amministratrice/tore
15 Bronze Boots=Stivali di bronzo
16 Bronze Chestplate=Corazza di bronzo
17 Bronze Helmet=Elmo di bronzo
18 Bronze Leggings=Gambali di bronzo
19 Cactus Boots=Stivali di cactus
20 Cactus Chestplate=Corazza di cactus
21 Cactus Helmet=Elmo di cactus
22 Cactus Leggings=Gambali di cactus
23 Crystal Boots=Stivali di cristallo
24 Crystal Chestplate=Corazza di cristallo
25 Crystal Helmet=Elmo di cristallo
26 Crystal Leggings=Gambali di cristallo
27 Diamond Boots=Stivali di diamante
28 Diamond Chestplate=Corazza di diamante
29 Diamond Helmet=Elmo di diamante
30 Diamond Leggings=Gambali di diamante
31 Gold Boots=Stivali d'oro
32 Gold Chestplate=Corazza d'oro
33 Gold Helmet=Elmo d'oro
34 Gold Leggings=Gambali d'oro
35 Mithril Boots=Stivali di mithril
36 Mithril Chestplate=Corazza di mithril
37 Mithril Helmet=Elmo di mithril
38 Mithril Leggings=Gambali di mithril
39 Steel Boots=Stivali d'acciaio
40 Steel Chestplate=Corazza d'acciaio
41 Steel Helmet=Elmo d'acciaio
42 Steel Leggings=Gambali d'acciaio
43 Wood Boots=Stivali di legno
44 Wood Chestplate=Corazza di legno
45 Wood Helmet=Elmo di legno
46 Wood Leggings=Gambali di legno
47
48 ### init.lua ###
49
50 3d_armor: Failed to initialize player=3d_armor: Inizializzazione dell'utente fallita
51 Fire=Fuoco
52 Heal=Guarigione
53 Level=Livello
54 Radiation=Radiazione
55 Your @1 got destroyed!=@1 in frantumi!
56 Your @1 is almost broken!=@1 quasi in frantumi!
57 [3d_armor] Fire Nodes disabled=[3d_armor] Nodi fuoco disabilitati
58
59
60 ##### not used anymore #####
61
62 3d_armor_ip: Mod loaded but unused.=3d_armor_ip: Mod caricata ma inutilizzata.
63 Back=Indietro
64 Armor=Armatura
65 3d_armor_sfinv: Mod loaded but unused.=3d_armor_sfinv: Mod caricata ma inutilizzata.
66 Armor stand top=Parte superiore del supporto per armatura
67 Armor stand=Supporto per armatura
68 Armor Stand=Supporto per armatura
69 Locked Armor stand=Supporto per armatura chiuso a chiave
70 Armor Stand (owned by @1)=Supporto per armatura (di proprietà di @1)
71 3d_armor_ui: Mod loaded but unused.=3d_armor_ui: Mod caricata ma inutilizzata.
72 3d Armor=Armatura 3D
73 Armor not initialized!=Armatura non inizializzata!
74 Admin Shield=Scudo dell'amministratrice/tore
75 Wooden Shield=Scudo di legno
76 Enhanced Wood Shield=Scudo di legno migliorato
77 Cactus Shield=Scudo di cactus
78 Enhanced Cactus Shield=Scudo di cactus migliorato
79 Steel Shield=Scudo d'acciaio
80 Bronze Shield=Scudo di bronzo
81 Diamond Shield=Scudo di diamante
82 Gold Shield=Scudo d'oro
83 Mithril Shield=Scudo di mithril
84 Crystal Shield=Scudo di cristallo
0 # textdomain: 3d_armor
1
2
3 ### api.lua ###
4
5 3d_armor: Detached armor inventory is nil @1=3d_armor: Inventori perisai terpisah tiada nilai @1
6 3d_armor: Player name is nil @1=3d_armor: Nama pemain tiada nilai @1
7 3d_armor: Player reference is nil @1=3d_armor: Rujukan pemain tiada nilai @1
8
9 ### armor.lua ###
10
11 Admin Boots=But Pentadbir
12 Admin Chestplate=Perisai Dada Pentadbir
13 Admin Helmet=Helmet Pentadbir
14 Admin Leggings=Perisai Kaki Pentadbir
15 Bronze Boots=But Gangsa
16 Bronze Chestplate=Perisai Dada Gangsa
17 Bronze Helmet=Helmet Gangsa
18 Bronze Leggings=Perisai Kaki Gangsa
19 Cactus Boots=But Kaktus
20 Cactus Chestplate=Perisai Dada Kaktus
21 Cactus Helmet=Helmet Kaktus
22 Cactus Leggings=Perisai Kaki Kaktus
23 Crystal Boots=But Kristal
24 Crystal Chestplate=Perisai Dada Kristal
25 Crystal Helmet=Helmet Kristal
26 Crystal Leggings=Perisai Kaki Kristal
27 Diamond Boots=But Intan
28 Diamond Chestplate=Perisai Dada Intan
29 Diamond Helmet=Helmet Intan
30 Diamond Leggings=Perisai Kaki Intan
31 Gold Boots=But Emas
32 Gold Chestplate=Perisai Dada Emas
33 Gold Helmet=Helmet Emas
34 Gold Leggings=Perisai Kaki Emas
35 Mithril Boots=But Mithril
36 Mithril Chestplate=Perisai Dada Mithril
37 Mithril Helmet=Helmet Mithril
38 Mithril Leggings=Perisai Kaki Mithril
39 Steel Boots=But Keluli
40 Steel Chestplate=Perisai Dada Keluli
41 Steel Helmet=Helmet Keluli
42 Steel Leggings=Perisai Kaki Keluli
43 Wood Boots=But Kayu
44 Wood Chestplate=Perisai Dada Kayu
45 Wood Helmet=Helmet Kayu
46 Wood Leggings=Perisai Kaki Kayu
47
48 ### init.lua ###
49
50 3d_armor: Failed to initialize player=3d_armor: Gagal mengasalkan pemain
51 Fire=Api
52 Heal=Pulih
53 Level=Tahap
54 Radiation=Radiasi
55 Your @1 got destroyed!=@1 anda telah musnah!
56 Your @1 is almost broken!=
57 [3d_armor] Fire Nodes disabled=[3d_armor] Nod-nod Api dilumpuhkan
58
59
60 ##### not used anymore #####
61
62 3d_armor_ip: Mod loaded but unused.=3d_armor_ip: Mods dimuatkan tetapi tidak digunakan.
63 Back=Kembali
64 Armor=Perisai
65 3d_armor_sfinv: Mod loaded but unused.=3d_armor_sfinv: Mods dimuatkan tetapi tidak digunakan.
66 Armor stand top=Bhg atas dirian perisai
67 Armor stand=Dirian perisai
68 Armor Stand=Dirian Perisai
69 Locked Armor stand=Dirian perisai Berkunci
70 Armor Stand (owned by @1)=Dirian Perisai (milik @1)
71 3d_armor_ui: Mod loaded but unused.=3d_armor_ui: Mods dimuatkan tetapi tidak digunakan.
72 3d Armor=Perisai 3d
73 Armor not initialized!=Perisai tidak diasalkan!
74 Admin Shield=Perisai Pegang Pentadbir
75 Wooden Shield=Perisai Pegang Kayu
76 Enhanced Wood Shield=Perisai Pegang Kayu Kukuh
77 Cactus Shield=Perisai Pegang Kaktus
78 Enhanced Cactus Shield=Perisai Pegang Kaktus Kukuh
79 Steel Shield=Perisai Pegang Keluli
80 Bronze Shield=Perisai Pegang Gangsa
81 Diamond Shield=Perisai Pegang Intan
82 Gold Shield=Perisai Pegang Emas
83 Mithril Shield=Perisai Pegang Mithril
84 Crystal Shield=Perisai Pegang Kristal
0 # textdomain: 3d_armor
1
2
3 ### api.lua ###
4
5 3d_armor: Detached armor inventory is nil @1=3d_armor: Inventario avulso de armadura é nulo @1
6 3d_armor: Player name is nil @1=3d_armor: Nome de jogador é nulo @1
7 3d_armor: Player reference is nil @1=3d_armor: Referência Jogador é nula @1
8
9 ### armor.lua ###
10
11 Admin Boots=Botas de Administrador
12 Admin Chestplate=Peitoral de Administrador
13 Admin Helmet=Capacete de Administrador
14 Admin Leggings=Calças de Administrador
15 Bronze Boots=Botas de Bronze
16 Bronze Chestplate=Peitoral de Bronze
17 Bronze Helmet=Capacete de Bronze
18 Bronze Leggings=Calças de Bronze
19 Cactus Boots=Botas de Madeira
20 Cactus Chestplate=Peitoral de Cacto
21 Cactus Helmet=Capacete de Cacto
22 Cactus Leggings=Calças de Cacto
23 Crystal Boots=Botas de Cristal
24 Crystal Chestplate=Peitoral de Cristal
25 Crystal Helmet=Capacete de Cristal
26 Crystal Leggings=Calças de Cristal
27 Diamond Boots=Botas de Diamante
28 Diamond Chestplate=Peitoral de Diamante
29 Diamond Helmet=Capacete de Diamante
30 Diamond Leggings=Calças de Diamante
31 Gold Boots=Botas de Ouro
32 Gold Chestplate=Peitoral de Ouro
33 Gold Helmet=Capacete de Ouro
34 Gold Leggings=Calças de Ouro
35 Mithril Boots=Botas de Mithril
36 Mithril Chestplate=Peitoral de Mithril
37 Mithril Helmet=Capacete de Mithril
38 Mithril Leggings=Calças de Mithril
39 Steel Boots=Botas de Aço
40 Steel Chestplate=Peitoral de Aço
41 Steel Helmet=Capacete de Aço
42 Steel Leggings=Calças de Aço
43 Wood Boots=Botas de Madeira
44 Wood Chestplate=Peitoral de Madeira
45 Wood Helmet=Capacete de Madeira
46 Wood Leggings=Calças de Madeira
47
48 ### init.lua ###
49
50 3d_armor: Failed to initialize player=3d_armor: Falha ao inicializar jogador
51 Fire=Fogo
52 Heal=Saúde
53 Level=Nível
54 Radiation=Radiação
55 Your @1 got destroyed!=@1 foi destruído(a)!
56 Your @1 is almost broken!=
57 [3d_armor] Fire Nodes disabled=[3d_armor] Nodes de gofo desabilitados
58
59
60 ##### not used anymore #####
61
62 3d_armor_ip: Mod loaded but unused.=3d_armor_ip: Mod carregado mas inoperante.
63 Back=Voltar
64 Armor=Armadura
65 3d_armor_sfinv: Mod loaded but unused.=3d_armor_sfinv: Mod carregado mas inoperante.
66 Armor stand top=Topo de estande de armadura
67 Armor stand=Estande de armadura
68 Armor Stand=Estande de Armadura
69 Locked Armor stand=Estande de Armadura Trancada
70 Armor Stand (owned by @1)=Estande de Armadura (pertente a @1)
71 3d_armor_ui: Mod loaded but unused.=3d_armor_ui: Mod carregado mas inoperante.
72 3d Armor=3d Armor
73 Armor not initialized!=Armadura não inicializada!
74 Admin Shield=Escudo de Administrador
75 Wooden Shield=Escudo de Madeira
76 Enhanced Wood Shield=Escudo de Madeira Melhorado
77 Cactus Shield=Escudo de Cacto
78 Enhanced Cactus Shield=Escudo de Cacto Melhorado
79 Steel Shield=Escudo de Aço
80 Bronze Shield=Escudo de Bronze
81 Diamond Shield=Escudo de Diamante
82 Gold Shield=Escudo de Ouro
83 Mithril Shield=Escudo de Mithril
84 Crystal Shield=Escudo de Cristal
0 # textdomain: 3d_armor
1
2
3 ### api.lua ###
4
5 3d_armor: Detached armor inventory is nil @1=3d_armor: Inventario avulso de armadura é nulo @1
6 3d_armor: Player name is nil @1=3d_armor: Nome de jogador é nulo @1
7 3d_armor: Player reference is nil @1=3d_armor: Referência Jogador é nula @1
8
9 ### armor.lua ###
10
11 Admin Boots=Botas de Administrador
12 Admin Chestplate=Peitoral de Administrador
13 Admin Helmet=Capacete de Administrador
14 Admin Leggings=Calças de Administrador
15 Bronze Boots=Botas de Bronze
16 Bronze Chestplate=Peitoral de Bronze
17 Bronze Helmet=Capacete de Bronze
18 Bronze Leggings=Calças de Bronze
19 Cactus Boots=Botas de Madeira
20 Cactus Chestplate=Peitoral de Cacto
21 Cactus Helmet=Capacete de Cacto
22 Cactus Leggings=Calças de Cacto
23 Crystal Boots=Botas de Cristal
24 Crystal Chestplate=Peitoral de Cristal
25 Crystal Helmet=Capacete de Cristal
26 Crystal Leggings=Calças de Cristal
27 Diamond Boots=Botas de Diamante
28 Diamond Chestplate=Peitoral de Diamante
29 Diamond Helmet=Capacete de Diamante
30 Diamond Leggings=Calças de Diamante
31 Gold Boots=Botas de Ouro
32 Gold Chestplate=Peitoral de Ouro
33 Gold Helmet=Capacete de Ouro
34 Gold Leggings=Calças de Ouro
35 Mithril Boots=Botas de Mithril
36 Mithril Chestplate=Peitoral de Mithril
37 Mithril Helmet=Capacete de Mithril
38 Mithril Leggings=Calças de Mithril
39 Steel Boots=Botas de Aço
40 Steel Chestplate=Peitoral de Aço
41 Steel Helmet=Capacete de Aço
42 Steel Leggings=Calças de Aço
43 Wood Boots=Botas de Madeira
44 Wood Chestplate=Peitoral de Madeira
45 Wood Helmet=Capacete de Madeira
46 Wood Leggings=Calças de Madeira
47
48 ### init.lua ###
49
50 3d_armor: Failed to initialize player=3d_armor: Falha ao inicializar jogador
51 Fire=Fogo
52 Heal=Saúde
53 Level=Nível
54 Radiation=Radiação
55 Your @1 got destroyed!=@1 foi destruído(a)!
56 Your @1 is almost broken!=
57 [3d_armor] Fire Nodes disabled=[3d_armor] Nodes de gofo desabilitados
58
59
60 ##### not used anymore #####
61
62 3d_armor_ip: Mod loaded but unused.=3d_armor_ip: Mod carregado mas inoperante.
63 Back=Voltar
64 Armor=Armadura
65 3d_armor_sfinv: Mod loaded but unused.=3d_armor_sfinv: Mod carregado mas inoperante.
66 Armor stand top=Topo de estande de armadura
67 Armor stand=Estande de armadura
68 Armor Stand=Estande de Armadura
69 Locked Armor stand=Estande de Armadura Trancada
70 Armor Stand (owned by @1)=Estande de Armadura (pertente a @1)
71 3d_armor_ui: Mod loaded but unused.=3d_armor_ui: Mod carregado mas inoperante.
72 3d Armor=3d Armor
73 Armor not initialized!=Armadura não inicializada!
74 Admin Shield=Escudo de Administrador
75 Wooden Shield=Escudo de Madeira
76 Enhanced Wood Shield=Escudo de Madeira Melhorado
77 Cactus Shield=Escudo de Cacto
78 Enhanced Cactus Shield=Escudo de Cacto Melhorado
79 Steel Shield=Escudo de Aço
80 Bronze Shield=Escudo de Bronze
81 Diamond Shield=Escudo de Diamante
82 Gold Shield=Escudo de Ouro
83 Mithril Shield=Escudo de Mithril
84 Crystal Shield=Escudo de Cristal
0 # textdomain: 3d_armor
1
2
3 ### api.lua ###
4
5 3d_armor: Detached armor inventory is nil @1=3d_armor: Отдельный инвентарь брони является nil @1
6 3d_armor: Player name is nil @1=3d_armor: Имя игрока является nil @1
7 3d_armor: Player reference is nil @1=3d_armor: Ссылка игрока является nil @1
8
9 ### armor.lua ###
10
11 Admin Boots=ботинки админа
12 Admin Chestplate=бронежилет админа
13 Admin Helmet=шлем админа
14 Admin Leggings=гамаши админа
15 Bronze Boots=бронзовые ботинки
16 Bronze Chestplate=бронзовый бронежилет
17 Bronze Helmet=бронзовый шлем
18 Bronze Leggings=бронзовые гамаши
19 Cactus Boots=кактусовые ботинки
20 Cactus Chestplate=кактусовый бронежилет
21 Cactus Helmet=кактусовый шлем
22 Cactus Leggings=кактусовые гамаши
23 Crystal Boots=кристалловые ботинки
24 Crystal Chestplate=кристалловый бронежилет
25 Crystal Helmet=кристалловый шлем
26 Crystal Leggings=кристалловые гамаши
27 Diamond Boots=алмазные ботинки
28 Diamond Chestplate=алмазный бронежилет
29 Diamond Helmet=алмазный шлем
30 Diamond Leggings=алмазные гамаши
31 Gold Boots=золотые ботинки
32 Gold Chestplate=золотой бронежилет
33 Gold Helmet=золотой шлем
34 Gold Leggings=золотые гамаши
35 Mithril Boots=мифриловые ботинки
36 Mithril Chestplate=мифриловый бронежилет
37 Mithril Helmet=мифриловый шлем
38 Mithril Leggings=мифриловые гамаши
39 Steel Boots=стальные ботинки
40 Steel Chestplate=стальной бронежилет
41 Steel Helmet=стальной шлем
42 Steel Leggings=стальные гамаши
43 Wood Boots=деревянные ботинки
44 Wood Chestplate=деревянный бронежилет
45 Wood Helmet=деревянный шлем
46 Wood Leggings=деревянные гамаши
47
48 ### init.lua ###
49
50 3d_armor: Failed to initialize player=3d_armor: не смог подготовить игрока
51 Fire=огонь
52 Heal=исцеление
53 Level=уровень
54 Radiation=излучение
55 Your @1 got destroyed!=твой(и) @1 был(и) разрушен(ы)!
56 Your @1 is almost broken!=
57 [3d_armor] Fire Nodes disabled=[3d_armor] блоки огня отключены
58
59
60 ##### not used anymore #####
61
62 3d_armor_ip: Mod loaded but unused.=3d_armor_ip: мод загружен но не используется.
63 Back=назад
64 Armor=бронь
65 3d_armor_sfinv: Mod loaded but unused.=3d_armor_sfinv: мод загружен но не используется.
66 Armor stand top=стойка для брони (верх)
67 Armor stand=стойка для брони
68 Armor Stand=стойка для брони
69 Locked Armor stand=защищенная стойка для брони
70 Armor Stand (owned by @1)=стойка для брони (принадлежит @1)
71 3d_armor_ui: Mod loaded but unused.=3d_armor_ui: мод загружен но не используется.
72 3d Armor=3D бронь
73 Armor not initialized!=бронь не подготовлена!
74 Admin Shield=щит админа
75 Wooden Shield=деревянный щит
76 Enhanced Wood Shield=улучшенный деревянный щит
77 Cactus Shield=кактусный щит
78 Enhanced Cactus Shield=улучшенный кактусный щит
79 Steel Shield=стальной щит
80 Bronze Shield=бронзовый щит
81 Diamond Shield=алмазный щит
82 Gold Shield=золотой щит
83 Mithril Shield=мифриловый щит
84 Crystal Shield=кристалловый щит
+0
-384
3d_armor/locale/es.po less more
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 #
5 #, fuzzy
6 msgid ""
7 msgstr ""
8 "Project-Id-Version: PACKAGE VERSION\n"
9 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2017-08-06 18:20+0200\n"
11 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13 "Language-Team: LANGUAGE <LL@li.org>\n"
14 "Language: es\n"
15 "MIME-Version: 1.0\n"
16 "Content-Type: text/plain; charset=UTF-8\n"
17 "Content-Transfer-Encoding: 8bit\n"
18 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
19
20 #: ../3d_armor/api.lua
21 msgid "3d_armor: Player name is nil @1"
22 msgstr "3d_armor: El nombre del jugador es nulo @1"
23
24 #: ../3d_armor/api.lua
25 msgid "3d_armor: Player inventory is nil @1"
26 msgstr "3d_armor: El inventario del jugador es nulo @1"
27
28 #: ../3d_armor/api.lua
29 msgid "3d_armor: Detached armor inventory is nil @1"
30 msgstr "3d_armor: La armadura desconectada es nula @1"
31
32 #: ../3d_armor/api.lua
33 msgid "3d_armor: Player reference is nil @1"
34 msgstr "3d_armor: La referencia del jugador es nula @1"
35
36 #: ../3d_armor/armor.lua
37 msgid "Admin Helmet"
38 msgstr "Casco de admin"
39
40 #: ../3d_armor/armor.lua
41 msgid "Admin Chestplate"
42 msgstr "Peto de admin"
43
44 #: ../3d_armor/armor.lua
45 msgid "Admin Leggings"
46 msgstr "Polainas de admin"
47
48 #: ../3d_armor/armor.lua
49 msgid "Admin Boots"
50 msgstr "Botas de admin"
51
52 #: ../3d_armor/armor.lua
53 msgid "Wood Helmet"
54 msgstr "Casco de madera"
55
56 #: ../3d_armor/armor.lua
57 msgid "Wood Chestplate"
58 msgstr "Peto de madera"
59
60 #: ../3d_armor/armor.lua
61 msgid "Wood Leggings"
62 msgstr "Polainas de madera"
63
64 #: ../3d_armor/armor.lua
65 msgid "Wood Boots"
66 msgstr "Botas de madera"
67
68 #: ../3d_armor/armor.lua
69 msgid "Cactus Helmet"
70 msgstr "Casco de cactus"
71
72 #: ../3d_armor/armor.lua
73 msgid "Cactus Chestplate"
74 msgstr "Peto de cactus"
75
76 #: ../3d_armor/armor.lua
77 msgid "Cactus Leggings"
78 msgstr "Polainas de cactus"
79
80 #: ../3d_armor/armor.lua
81 msgid "Cactus Boots"
82 msgstr "Botas de cactus"
83
84 #: ../3d_armor/armor.lua
85 msgid "Steel Helmet"
86 msgstr "Casco de acero"
87
88 #: ../3d_armor/armor.lua
89 msgid "Steel Chestplate"
90 msgstr "Peto de acero"
91
92 #: ../3d_armor/armor.lua
93 msgid "Steel Leggings"
94 msgstr "Polainas de acero"
95
96 #: ../3d_armor/armor.lua
97 msgid "Steel Boots"
98 msgstr "Botas de acero"
99
100 #: ../3d_armor/armor.lua
101 msgid "Bronze Helmet"
102 msgstr "Casco de bronce"
103
104 #: ../3d_armor/armor.lua
105 msgid "Bronze Chestplate"
106 msgstr "Peto de bronce"
107
108 #: ../3d_armor/armor.lua
109 msgid "Bronze Leggings"
110 msgstr "Polainas de bronce"
111
112 #: ../3d_armor/armor.lua
113 msgid "Bronze Boots"
114 msgstr "Botas de bronce"
115
116 #: ../3d_armor/armor.lua
117 msgid "Diamond Helmet"
118 msgstr "Casco de diamante"
119
120 #: ../3d_armor/armor.lua
121 msgid "Diamond Chestplate"
122 msgstr "Peto de diamante"
123
124 #: ../3d_armor/armor.lua
125 msgid "Diamond Leggings"
126 msgstr "Polainas de diamante"
127
128 #: ../3d_armor/armor.lua
129 msgid "Diamond Boots"
130 msgstr "Botas de diamante"
131
132 #: ../3d_armor/armor.lua
133 msgid "Gold Helmet"
134 msgstr "Casco de oro"
135
136 #: ../3d_armor/armor.lua
137 msgid "Gold Chestplate"
138 msgstr "Peto de oro"
139
140 #: ../3d_armor/armor.lua
141 msgid "Gold Leggings"
142 msgstr "Polainas de oro"
143
144 #: ../3d_armor/armor.lua
145 msgid "Gold Boots"
146 msgstr "Botas de oro"
147
148 #: ../3d_armor/armor.lua
149 msgid "Mithril Helmet"
150 msgstr "Casco de mitrilo"
151
152 #: ../3d_armor/armor.lua
153 msgid "Mithril Chestplate"
154 msgstr "Peto de mitrilo"
155
156 #: ../3d_armor/armor.lua
157 msgid "Mithril Leggings"
158 msgstr "Polainas de mitrilo"
159
160 #: ../3d_armor/armor.lua
161 msgid "Mithril Boots"
162 msgstr "Botas de mitrilo"
163
164 #: ../3d_armor/armor.lua
165 msgid "Crystal Helmet"
166 msgstr "Casco de cristal"
167
168 #: ../3d_armor/armor.lua
169 msgid "Crystal Chestplate"
170 msgstr "Peto de cristal"
171
172 #: ../3d_armor/armor.lua
173 msgid "Crystal Leggings"
174 msgstr "Polainas de cristal"
175
176 #: ../3d_armor/armor.lua
177 msgid "Crystal Boots"
178 msgstr "Botas de cristal"
179
180 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
181 msgid "Radiation"
182 msgstr "Radiación"
183
184 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
185 msgid "Level"
186 msgstr "Nivel"
187
188 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
189 msgid "Heal"
190 msgstr "Salud"
191
192 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
193 msgid "Fire"
194 msgstr "Fuego"
195
196 #: ../3d_armor/init.lua
197 msgid "Your @1 got destroyed!"
198 msgstr "¡Tu @1 fue destruído!"
199
200 #: ../3d_armor/init.lua
201 msgid "3d_armor: Failed to initialize player"
202 msgstr "3d_armor: Fallo en la inicialización del jugador"
203
204 #: ../3d_armor/init.lua
205 msgid "[3d_armor] Fire Nodes disabled"
206 msgstr "[3d_armor] Nodos de fuego desabilitados"
207
208 #: ../3d_armor_ip/init.lua
209 msgid "3d_armor_ip: Mod loaded but unused."
210 msgstr "3d_armor_ip: Mod cargado, pero sin ser usado."
211
212 #: ../3d_armor_ip/init.lua
213 msgid "Back"
214 msgstr "Volver"
215
216 #: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua
217 msgid "Armor"
218 msgstr "Armadura"
219
220 #: ../3d_armor_sfinv/init.lua
221 msgid "3d_armor_sfinv: Mod loaded but unused."
222 msgstr "3d_armor_sfinv: Mod cargado, pero sin ser usado."
223
224 #: ../3d_armor_stand/init.lua
225 msgid "Armor stand top"
226 msgstr "Parte arriba maniquí armadura"
227
228 #: ../3d_armor_stand/init.lua
229 msgid "Armor stand"
230 msgstr "Maniquí para armadura"
231
232 #: ../3d_armor_stand/init.lua
233 msgid "Armor Stand"
234 msgstr "Maniquí para armadura"
235
236 #: ../3d_armor_stand/init.lua
237 msgid "Locked Armor stand"
238 msgstr "Maniquí para armadura (bloqueado)"
239
240 #: ../3d_armor_stand/init.lua
241 msgid "Armor Stand (owned by @1)"
242 msgstr "Maniquí para armadura (propiedad de @1)"
243
244 #: ../3d_armor_ui/init.lua
245 msgid "3d_armor_ui: Mod loaded but unused."
246 msgstr "3d_armor_ui: Mod cargado, pero sin ser usado."
247
248 #: ../3d_armor_ui/init.lua
249 msgid "3d Armor"
250 msgstr "Armadura 3d"
251
252 #: ../3d_armor_ui/init.lua
253 msgid "Armor not initialized!"
254 msgstr "¡Armadura no inicializada!"
255
256 #: ../hazmat_suit/init.lua
257 msgid "hazmat_suit: Mod loaded but unused."
258 msgstr "hazmat_suit: Mod cargado, pero sin ser usado."
259
260 #: ../hazmat_suit/init.lua
261 msgid "Hazmat Helmet"
262 msgstr "Casco de hazmat"
263
264 #: ../hazmat_suit/init.lua
265 msgid "Hazmat Chestplate"
266 msgstr "Peto de hazmat"
267
268 #: ../hazmat_suit/init.lua
269 msgid "Hazmat Sleeve"
270 msgstr "Manga de hazmat"
271
272 #: ../hazmat_suit/init.lua
273 msgid "Hazmat Leggins"
274 msgstr "Polainas de hazmat"
275
276 #: ../hazmat_suit/init.lua
277 msgid "Hazmat Boots"
278 msgstr "Botas de hazmat"
279
280 #: ../hazmat_suit/init.lua
281 msgid "Hazmat Suit"
282 msgstr "Traje de hazmat"
283
284 #: ../shields/init.lua
285 msgid "Admin Shield"
286 msgstr "Escudo de admin"
287
288 #: ../shields/init.lua
289 msgid "Wooden Shield"
290 msgstr "Escudo de madera"
291
292 #: ../shields/init.lua
293 msgid "Enhanced Wood Shield"
294 msgstr "Escudo de madera mejorado"
295
296 #: ../shields/init.lua
297 msgid "Cactus Shield"
298 msgstr "Escudo de cactus"
299
300 #: ../shields/init.lua
301 msgid "Enhanced Cactus Shield"
302 msgstr "Escudo de cactus mejorado"
303
304 #: ../shields/init.lua
305 msgid "Steel Shield"
306 msgstr "Escudo de acero"
307
308 #: ../shields/init.lua
309 msgid "Bronze Shield"
310 msgstr "Escudo de bronce"
311
312 #: ../shields/init.lua
313 msgid "Diamond Shield"
314 msgstr "Escudo de diamante"
315
316 #: ../shields/init.lua
317 msgid "Gold Shield"
318 msgstr "Escudo de oro"
319
320 #: ../shields/init.lua
321 msgid "Mithril Shield"
322 msgstr "Escudo de mitrilo"
323
324 #: ../shields/init.lua
325 msgid "Crystal Shield"
326 msgstr "Escudo de cristal"
327
328 #: ../technic_armor/init.lua
329 msgid "technic_armor: Mod loaded but unused."
330 msgstr "technic_armor: Mod cargado, pero no usado."
331
332 #: ../technic_armor/init.lua
333 msgid "Lead"
334 msgstr "Plomo"
335
336 #: ../technic_armor/init.lua
337 msgid "Brass"
338 msgstr "Latón"
339
340 #: ../technic_armor/init.lua
341 msgid "Cast Iron"
342 msgstr "Hierro fundido"
343
344 #: ../technic_armor/init.lua
345 msgid "Carbon Steel"
346 msgstr "Acero carbono"
347
348 #: ../technic_armor/init.lua
349 msgid "Stainless Steel"
350 msgstr "Acero inoxidable"
351
352 #: ../technic_armor/init.lua
353 msgid "Tin"
354 msgstr "Estaño"
355
356 #: ../technic_armor/init.lua
357 msgid "Silver"
358 msgstr "Plata"
359
360 #: ../technic_armor/init.lua
361 msgid "Helmet"
362 msgstr "Casco"
363
364 #: ../technic_armor/init.lua
365 msgid "Chestplate"
366 msgstr "Peto"
367
368 #: ../technic_armor/init.lua
369 msgid "Leggins"
370 msgstr "Polainas"
371
372 #: ../technic_armor/init.lua
373 msgid "Boots"
374 msgstr "Botas"
375
376 #: ../technic_armor/init.lua
377 msgid "Shield"
378 msgstr "Escudo"
379
380 #. Translators: @1 stands for material and @2 for part of the armor, so that you could use a conjunction if in your language part name comes first then material (e.g. in french 'Silver Boots' is translated in 'Bottes en argent' by using '@2 en @1' as translated string)
381 #: ../technic_armor/init.lua
382 msgid "@1 @2"
383 msgstr "@2 de @1"
+0
-295
3d_armor/locale/fr.po less more
0 # French translation for 3D ARMOR MOD
1 # Copyright (C) 2018 by Stuart Jones
2 # This file is distributed under the same license as the 3D ARMOR MOD package.
3 # fat115 <fat115@framasoft.org>, 2017.
4 #
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: \n"
8 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-07-23 21:24+0200\n"
10 "PO-Revision-Date: 2018-07-23 21:30+0200\n"
11 "Last-Translator: fat115 <fat115@framasoft.org>\n"
12 "Language-Team: \n"
13 "Language: fr\n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17 "X-Generator: Poedit 1.8.12\n"
18 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
19
20 #: ../3d_armor/api.lua
21 msgid "3d_armor: Player reference is nil @1"
22 msgstr "3d_armor : Référence au joueur non trouvée @1"
23
24 #: ../3d_armor/api.lua
25 msgid "3d_armor: Player name is nil @1"
26 msgstr "3d_armor : Nom du joueur non trouvé @1"
27
28 #: ../3d_armor/api.lua
29 msgid "3d_armor: Detached armor inventory is nil @1"
30 msgstr "3d_armor : Inventaire détaché pour l'armure non trouvé @1"
31
32 #: ../3d_armor/armor.lua
33 msgid "Admin Helmet"
34 msgstr "Casque d'admin"
35
36 #: ../3d_armor/armor.lua
37 msgid "Admin Chestplate"
38 msgstr "Cuirasse d'admin"
39
40 #: ../3d_armor/armor.lua
41 msgid "Admin Leggings"
42 msgstr "Jambières d'admin"
43
44 #: ../3d_armor/armor.lua
45 msgid "Admin Boots"
46 msgstr "Bottes d'admin"
47
48 #: ../3d_armor/armor.lua
49 msgid "Wood Helmet"
50 msgstr "Casque en bois"
51
52 #: ../3d_armor/armor.lua
53 msgid "Wood Chestplate"
54 msgstr "Cuirasse en bois"
55
56 #: ../3d_armor/armor.lua
57 msgid "Wood Leggings"
58 msgstr "Jambières en bois"
59
60 #: ../3d_armor/armor.lua
61 msgid "Wood Boots"
62 msgstr "Bottes en bois"
63
64 #: ../3d_armor/armor.lua
65 msgid "Cactus Helmet"
66 msgstr "Casque en cactus"
67
68 #: ../3d_armor/armor.lua
69 msgid "Cactus Chestplate"
70 msgstr "Cuirasse en cactus"
71
72 #: ../3d_armor/armor.lua
73 msgid "Cactus Leggings"
74 msgstr "Jambières en cactus"
75
76 #: ../3d_armor/armor.lua
77 msgid "Cactus Boots"
78 msgstr "Bottes en cactus"
79
80 #: ../3d_armor/armor.lua
81 msgid "Steel Helmet"
82 msgstr "Casque en acier"
83
84 #: ../3d_armor/armor.lua
85 msgid "Steel Chestplate"
86 msgstr " = Cuirasse en acier"
87
88 #: ../3d_armor/armor.lua
89 msgid "Steel Leggings"
90 msgstr "Jambières en acier"
91
92 #: ../3d_armor/armor.lua
93 msgid "Steel Boots"
94 msgstr "Bottes en acier"
95
96 #: ../3d_armor/armor.lua
97 msgid "Bronze Helmet"
98 msgstr "Casque en bronze"
99
100 #: ../3d_armor/armor.lua
101 msgid "Bronze Chestplate"
102 msgstr "Cuirasse en bronze"
103
104 #: ../3d_armor/armor.lua
105 msgid "Bronze Leggings"
106 msgstr "Jambières en bronze"
107
108 #: ../3d_armor/armor.lua
109 msgid "Bronze Boots"
110 msgstr "Bottes en bronze"
111
112 #: ../3d_armor/armor.lua
113 msgid "Diamond Helmet"
114 msgstr "Casque en diamant"
115
116 #: ../3d_armor/armor.lua
117 msgid "Diamond Chestplate"
118 msgstr "Cuirasse en diamant"
119
120 #: ../3d_armor/armor.lua
121 msgid "Diamond Leggings"
122 msgstr "Jambières en diamant"
123
124 #: ../3d_armor/armor.lua
125 msgid "Diamond Boots"
126 msgstr "Bottes en diamant"
127
128 #: ../3d_armor/armor.lua
129 msgid "Gold Helmet"
130 msgstr "Casque en or"
131
132 #: ../3d_armor/armor.lua
133 msgid "Gold Chestplate"
134 msgstr "Cuirasse en or"
135
136 #: ../3d_armor/armor.lua
137 msgid "Gold Leggings"
138 msgstr "Jambières en or"
139
140 #: ../3d_armor/armor.lua
141 msgid "Gold Boots"
142 msgstr "Bottes en or"
143
144 #: ../3d_armor/armor.lua
145 msgid "Mithril Helmet"
146 msgstr "Casque en mithril"
147
148 #: ../3d_armor/armor.lua
149 msgid "Mithril Chestplate"
150 msgstr "Cuirasse en mithril"
151
152 #: ../3d_armor/armor.lua
153 msgid "Mithril Leggings"
154 msgstr "Jambières en mithril"
155
156 #: ../3d_armor/armor.lua
157 msgid "Mithril Boots"
158 msgstr "Bottes en mithril"
159
160 #: ../3d_armor/armor.lua
161 msgid "Crystal Helmet"
162 msgstr "Casque en cristal"
163
164 #: ../3d_armor/armor.lua
165 msgid "Crystal Chestplate"
166 msgstr "Cuirasse en cristal"
167
168 #: ../3d_armor/armor.lua
169 msgid "Crystal Leggings"
170 msgstr "Jambières en cristal"
171
172 #: ../3d_armor/armor.lua
173 msgid "Crystal Boots"
174 msgstr "Bottes en cristal"
175
176 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
177 msgid "Radiation"
178 msgstr "Radiation"
179
180 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
181 msgid "Level"
182 msgstr "Niveau"
183
184 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
185 msgid "Heal"
186 msgstr "Soins"
187
188 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
189 msgid "Fire"
190 msgstr "Fire"
191
192 #: ../3d_armor/init.lua
193 msgid "Your @1 got destroyed!"
194 msgstr "Une partie de votre armure a été détruite : @1 !"
195
196 #: ../3d_armor/init.lua
197 msgid "3d_armor: Failed to initialize player"
198 msgstr "3d_armor : Impossible d'initialiser le joueur"
199
200 #: ../3d_armor/init.lua
201 msgid "[3d_armor] Fire Nodes disabled"
202 msgstr "[3d_armor] Noeuds de type feu désactivés"
203
204 #: ../3d_armor_ip/init.lua
205 msgid "3d_armor_ip: Mod loaded but unused."
206 msgstr "3d_armor_ip : Mod chargé mais inutilisé."
207
208 #: ../3d_armor_ip/init.lua
209 msgid "Back"
210 msgstr "Retour"
211
212 #: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua
213 msgid "Armor"
214 msgstr "Armure"
215
216 #: ../3d_armor_sfinv/init.lua
217 msgid "3d_armor_sfinv: Mod loaded but unused."
218 msgstr "3d_armor_sfinv : Mod chargé mais inutilisé."
219
220 #: ../3d_armor_stand/init.lua
221 msgid "Armor stand top"
222 msgstr "Haut de support d'armure"
223
224 #: ../3d_armor_stand/init.lua
225 msgid "Armor stand"
226 msgstr "Support d'armure"
227
228 #: ../3d_armor_stand/init.lua
229 msgid "Armor Stand"
230 msgstr "Support d'armure"
231
232 #: ../3d_armor_stand/init.lua
233 msgid "Locked Armor stand"
234 msgstr "Support d'armure verrouillé"
235
236 #: ../3d_armor_stand/init.lua
237 msgid "Armor Stand (owned by @1)"
238 msgstr "Support d'armure (propriété de @1)"
239
240 #: ../3d_armor_ui/init.lua
241 msgid "3d_armor_ui: Mod loaded but unused."
242 msgstr "3d_armor_ui : Mod chargé mais inutilisé."
243
244 #: ../3d_armor_ui/init.lua
245 msgid "3d Armor"
246 msgstr "Armure 3d"
247
248 #: ../3d_armor_ui/init.lua
249 msgid "Armor not initialized!"
250 msgstr "Armure non initialisée !"
251
252 #: ../shields/init.lua
253 msgid "Admin Shield"
254 msgstr "Bouclier d'admin"
255
256 #: ../shields/init.lua
257 msgid "Wooden Shield"
258 msgstr "Bouclier en bois"
259
260 #: ../shields/init.lua
261 msgid "Enhanced Wood Shield"
262 msgstr "Bouclier en bois amélioré"
263
264 #: ../shields/init.lua
265 msgid "Cactus Shield"
266 msgstr "Bouclier en cactus"
267
268 #: ../shields/init.lua
269 msgid "Enhanced Cactus Shield"
270 msgstr "Bouclier en cactus amélioré"
271
272 #: ../shields/init.lua
273 msgid "Steel Shield"
274 msgstr "Bouclier en acier"
275
276 #: ../shields/init.lua
277 msgid "Bronze Shield"
278 msgstr "Bouclier en bronze"
279
280 #: ../shields/init.lua
281 msgid "Diamond Shield"
282 msgstr "Bouclier en diamant"
283
284 #: ../shields/init.lua
285 msgid "Gold Shield"
286 msgstr "Bouclier en or"
287
288 #: ../shields/init.lua
289 msgid "Mithril Shield"
290 msgstr "Bouclier en mithril"
291
292 #: ../shields/init.lua
293 msgid "Crystal Shield"
294 msgstr "Bouclier en cristal"
+0
-295
3d_armor/locale/it.po less more
0 # Italian translation for 3D ARMOR MOD
1 # Copyright (C) 2018 by Stuart Jones
2 # This file is distributed under the same license as the 3D ARMOR MOD package.
3 # Hamlet <h4mlet@riseup.net>, 2017.
4 #
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: Italian localization file for the 3D Armor module\n"
8 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-07-23 21:24+0200\n"
10 "PO-Revision-Date: 2018-07-23 21:30+0200\n"
11 "Last-Translator: H4mlet <h4mlet@riseup.net>\n"
12 "Language-Team: ITALIANO\n"
13 "Language: it\n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18 "X-Generator: Poedit 1.6.10\n"
19
20 #: ../3d_armor/api.lua
21 msgid "3d_armor: Player reference is nil @1"
22 msgstr "3d_armor: Il riferimento alla/al giocatrice/tore è nullo @1"
23
24 #: ../3d_armor/api.lua
25 msgid "3d_armor: Player name is nil @1"
26 msgstr "3d_armor: Il nome della/del gicatrice/tore è nullo @1"
27
28 #: ../3d_armor/api.lua
29 msgid "3d_armor: Detached armor inventory is nil @1"
30 msgstr "3d_armor: L'inventario staccato dell'armatura è nullo @1"
31
32 #: ../3d_armor/armor.lua
33 msgid "Admin Helmet"
34 msgstr "Elmo dell'amministratrice/tore"
35
36 #: ../3d_armor/armor.lua
37 msgid "Admin Chestplate"
38 msgstr "Corazza dell'amministratrice/tore"
39
40 #: ../3d_armor/armor.lua
41 msgid "Admin Leggings"
42 msgstr "Gambali dell'amministratrice/tore"
43
44 #: ../3d_armor/armor.lua
45 msgid "Admin Boots"
46 msgstr "Stivali dell'amministratrice/tore"
47
48 #: ../3d_armor/armor.lua
49 msgid "Wood Helmet"
50 msgstr "Elmo di legno"
51
52 #: ../3d_armor/armor.lua
53 msgid "Wood Chestplate"
54 msgstr "Corazza di legno"
55
56 #: ../3d_armor/armor.lua
57 msgid "Wood Leggings"
58 msgstr "Gambali di legno"
59
60 #: ../3d_armor/armor.lua
61 msgid "Wood Boots"
62 msgstr "Stivali di legno"
63
64 #: ../3d_armor/armor.lua
65 msgid "Cactus Helmet"
66 msgstr "Elmo di cactus"
67
68 #: ../3d_armor/armor.lua
69 msgid "Cactus Chestplate"
70 msgstr "Corazza di cactus"
71
72 #: ../3d_armor/armor.lua
73 msgid "Cactus Leggings"
74 msgstr "Gambali di cactus"
75
76 #: ../3d_armor/armor.lua
77 msgid "Cactus Boots"
78 msgstr "Stivali di cactus"
79
80 #: ../3d_armor/armor.lua
81 msgid "Steel Helmet"
82 msgstr "Elmo di acciaio"
83
84 #: ../3d_armor/armor.lua
85 msgid "Steel Chestplate"
86 msgstr "Corazza di acciaio"
87
88 #: ../3d_armor/armor.lua
89 msgid "Steel Leggings"
90 msgstr "Gambali di acciaio"
91
92 #: ../3d_armor/armor.lua
93 msgid "Steel Boots"
94 msgstr "Stivali di acciaio"
95
96 #: ../3d_armor/armor.lua
97 msgid "Bronze Helmet"
98 msgstr "Elmo di bronzo"
99
100 #: ../3d_armor/armor.lua
101 msgid "Bronze Chestplate"
102 msgstr "Corazza di bronzo"
103
104 #: ../3d_armor/armor.lua
105 msgid "Bronze Leggings"
106 msgstr "Gambali di bronzo"
107
108 #: ../3d_armor/armor.lua
109 msgid "Bronze Boots"
110 msgstr "Stivali di bronzo"
111
112 #: ../3d_armor/armor.lua
113 msgid "Diamond Helmet"
114 msgstr "Elmo di diamante"
115
116 #: ../3d_armor/armor.lua
117 msgid "Diamond Chestplate"
118 msgstr "Corazza di diamante"
119
120 #: ../3d_armor/armor.lua
121 msgid "Diamond Leggings"
122 msgstr "Gambali di diamante"
123
124 #: ../3d_armor/armor.lua
125 msgid "Diamond Boots"
126 msgstr "Stivali di diamante"
127
128 #: ../3d_armor/armor.lua
129 msgid "Gold Helmet"
130 msgstr "Elmo d'oro"
131
132 #: ../3d_armor/armor.lua
133 msgid "Gold Chestplate"
134 msgstr "Corazza d'oro"
135
136 #: ../3d_armor/armor.lua
137 msgid "Gold Leggings"
138 msgstr "Gambali d'oro"
139
140 #: ../3d_armor/armor.lua
141 msgid "Gold Boots"
142 msgstr "Stivali d'oro"
143
144 #: ../3d_armor/armor.lua
145 msgid "Mithril Helmet"
146 msgstr "Elmo di mithril"
147
148 #: ../3d_armor/armor.lua
149 msgid "Mithril Chestplate"
150 msgstr "Corazza di mithril"
151
152 #: ../3d_armor/armor.lua
153 msgid "Mithril Leggings"
154 msgstr "Gambali di mithril"
155
156 #: ../3d_armor/armor.lua
157 msgid "Mithril Boots"
158 msgstr "Stivali di mithril"
159
160 #: ../3d_armor/armor.lua
161 msgid "Crystal Helmet"
162 msgstr "Elmo di cristallo"
163
164 #: ../3d_armor/armor.lua
165 msgid "Crystal Chestplate"
166 msgstr "Corazza di cristallo"
167
168 #: ../3d_armor/armor.lua
169 msgid "Crystal Leggings"
170 msgstr "Gambali di cristallo"
171
172 #: ../3d_armor/armor.lua
173 msgid "Crystal Boots"
174 msgstr "Stivali di cristallo"
175
176 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
177 msgid "Radiation"
178 msgstr "Radiazione"
179
180 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
181 msgid "Level"
182 msgstr "Livello"
183
184 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
185 msgid "Heal"
186 msgstr "Guarigione"
187
188 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
189 msgid "Fire"
190 msgstr "Fuoco"
191
192 #: ../3d_armor/init.lua
193 msgid "Your @1 got destroyed!"
194 msgstr "Il/i vostro/i @1 è/sono stato/i distrutto/i!"
195
196 #: ../3d_armor/init.lua
197 msgid "3d_armor: Failed to initialize player"
198 msgstr "3d_armor: Inizializzazione della/del giocatrice/tore fallita"
199
200 #: ../3d_armor/init.lua
201 msgid "[3d_armor] Fire Nodes disabled"
202 msgstr "[3d_armor] Nodi fuoco disabilitati"
203
204 #: ../3d_armor_ip/init.lua
205 msgid "3d_armor_ip: Mod loaded but unused."
206 msgstr "3d_armor_ip: Mod caricato ma inutilizzato."
207
208 #: ../3d_armor_ip/init.lua
209 msgid "Back"
210 msgstr "Indietro"
211
212 #: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua
213 msgid "Armor"
214 msgstr "Armatura"
215
216 #: ../3d_armor_sfinv/init.lua
217 msgid "3d_armor_sfinv: Mod loaded but unused."
218 msgstr "3d_armor_sfinv: Mod caricato ma inutilizzato."
219
220 #: ../3d_armor_stand/init.lua
221 msgid "Armor stand top"
222 msgstr "Parte superiore del supporto per armatura"
223
224 #: ../3d_armor_stand/init.lua
225 msgid "Armor stand"
226 msgstr "Supporto per armatura"
227
228 #: ../3d_armor_stand/init.lua
229 msgid "Armor Stand"
230 msgstr "Supporto per armatura"
231
232 #: ../3d_armor_stand/init.lua
233 msgid "Locked Armor stand"
234 msgstr "Supporto per armatura chiuso a chiave"
235
236 #: ../3d_armor_stand/init.lua
237 msgid "Armor Stand (owned by @1)"
238 msgstr "Supporto per armatura (di proprietà di @1)"
239
240 #: ../3d_armor_ui/init.lua
241 msgid "3d_armor_ui: Mod loaded but unused."
242 msgstr "3d_armor_ui: Mod caricato ma inutilizzato."
243
244 #: ../3d_armor_ui/init.lua
245 msgid "3d Armor"
246 msgstr "Armatura 3D"
247
248 #: ../3d_armor_ui/init.lua
249 msgid "Armor not initialized!"
250 msgstr "Armatura non inizializzata!"
251
252 #: ../shields/init.lua
253 msgid "Admin Shield"
254 msgstr "Scudo dell'amministratrice/tore"
255
256 #: ../shields/init.lua
257 msgid "Wooden Shield"
258 msgstr "Scudo di legno"
259
260 #: ../shields/init.lua
261 msgid "Enhanced Wood Shield"
262 msgstr "Scudo di legno migliorato"
263
264 #: ../shields/init.lua
265 msgid "Cactus Shield"
266 msgstr "Scudo di cactus"
267
268 #: ../shields/init.lua
269 msgid "Enhanced Cactus Shield"
270 msgstr "Scudo di cactus migliorato"
271
272 #: ../shields/init.lua
273 msgid "Steel Shield"
274 msgstr "Scudo di acciaio"
275
276 #: ../shields/init.lua
277 msgid "Bronze Shield"
278 msgstr "Scudo di bronzo"
279
280 #: ../shields/init.lua
281 msgid "Diamond Shield"
282 msgstr "Scudo di diamante"
283
284 #: ../shields/init.lua
285 msgid "Gold Shield"
286 msgstr "Scudo d'oro"
287
288 #: ../shields/init.lua
289 msgid "Mithril Shield"
290 msgstr "Scudo di mithril"
291
292 #: ../shields/init.lua
293 msgid "Crystal Shield"
294 msgstr "Scudo di cristallo"
+0
-296
3d_armor/locale/ms.po less more
0 # Malay translation for 3D ARMOR MOD
1 # Copyright (C) 2018 by Stuart Jones
2 # This file is distributed under the same license as the 3D ARMOR MOD package.
3 # MuhdNurHidayat (MNH48) <mnh48mail@gmail.com>, 2018.
4 #
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: \n"
8 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-07-23 21:21+0200\n"
10 "PO-Revision-Date: 2018-07-23 21:30+0200\n"
11 "Last-Translator: MuhdNurHidayat (MNH48) <mnh48mail@gmail.com>\n"
12 "Language-Team: \n"
13 "Language: ms\n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17 "X-Generator: Poedit 2.0.6\n"
18 "Plural-Forms: nplurals=1; plural=0;\n"
19
20 #: ../3d_armor/api.lua
21 msgid "3d_armor: Player reference is nil @1"
22 msgstr "3d_armor: Rujukan pemain tiada nilai @1"
23
24 #: ../3d_armor/api.lua
25 msgid "3d_armor: Player name is nil @1"
26 msgstr "3d_armor: Nama pemain tiada nilai @1"
27
28 #: ../3d_armor/api.lua
29 msgid "3d_armor: Detached armor inventory is nil @1"
30 msgstr "3d_armor: Inventori perisai terpisah tiada nilai @1"
31
32 #: ../3d_armor/armor.lua
33 msgid "Admin Helmet"
34 msgstr "Helmet Pentadbir"
35
36 #: ../3d_armor/armor.lua
37 msgid "Admin Chestplate"
38 msgstr "Perisai Dada Pentadbir"
39
40 #: ../3d_armor/armor.lua
41 msgid "Admin Leggings"
42 msgstr "Perisai Kaki Pentadbir"
43
44 #: ../3d_armor/armor.lua
45 msgid "Admin Boots"
46 msgstr "But Pentadbir"
47
48 #: ../3d_armor/armor.lua
49 msgid "Wood Helmet"
50 msgstr "Helmet Kayu"
51
52 #: ../3d_armor/armor.lua
53 msgid "Wood Chestplate"
54 msgstr "Perisai Dada Kayu"
55
56 #: ../3d_armor/armor.lua
57 msgid "Wood Leggings"
58 msgstr "Perisai Kaki Kayu"
59
60 #: ../3d_armor/armor.lua
61 msgid "Wood Boots"
62 msgstr "But Kayu"
63
64 #: ../3d_armor/armor.lua
65 msgid "Cactus Helmet"
66 msgstr "Helmet Kaktus"
67
68 #: ../3d_armor/armor.lua
69 msgid "Cactus Chestplate"
70 msgstr "Perisai Dada Kaktus"
71
72 #: ../3d_armor/armor.lua
73 msgid "Cactus Leggings"
74 msgstr "Perisai Kaki Kaktus"
75
76 #: ../3d_armor/armor.lua
77 msgid "Cactus Boots"
78 msgstr "But Kaktus"
79
80 #: ../3d_armor/armor.lua
81 msgid "Steel Helmet"
82 msgstr "Helmet Keluli"
83
84 #: ../3d_armor/armor.lua
85 msgid "Steel Chestplate"
86 msgstr "Perisai Dada Keluli"
87
88 #: ../3d_armor/armor.lua
89 msgid "Steel Leggings"
90 msgstr "Perisai Kaki Keluli"
91
92 #: ../3d_armor/armor.lua
93 msgid "Steel Boots"
94 msgstr "But Keluli"
95
96 #: ../3d_armor/armor.lua
97 msgid "Bronze Helmet"
98 msgstr "Helmet Gangsa"
99
100 #: ../3d_armor/armor.lua
101 msgid "Bronze Chestplate"
102 msgstr "Perisai Dada Gangsa"
103
104 #: ../3d_armor/armor.lua
105 msgid "Bronze Leggings"
106 msgstr "Perisai Kaki Gangsa"
107
108 #: ../3d_armor/armor.lua
109 msgid "Bronze Boots"
110 msgstr "But Gangsa"
111
112 # 'Diamond' should be translated as 'intan' because the more common word 'berlian' is only specifically used for the gemstone diamond.
113 #: ../3d_armor/armor.lua
114 msgid "Diamond Helmet"
115 msgstr "Helmet Intan"
116
117 #: ../3d_armor/armor.lua
118 msgid "Diamond Chestplate"
119 msgstr "Perisai Dada Intan"
120
121 #: ../3d_armor/armor.lua
122 msgid "Diamond Leggings"
123 msgstr "Perisai Kaki Intan"
124
125 #: ../3d_armor/armor.lua
126 msgid "Diamond Boots"
127 msgstr "But Intan"
128
129 #: ../3d_armor/armor.lua
130 msgid "Gold Helmet"
131 msgstr "Helmet Emas"
132
133 #: ../3d_armor/armor.lua
134 msgid "Gold Chestplate"
135 msgstr "Perisai Dada Emas"
136
137 #: ../3d_armor/armor.lua
138 msgid "Gold Leggings"
139 msgstr "Perisai Kaki Emas"
140
141 #: ../3d_armor/armor.lua
142 msgid "Gold Boots"
143 msgstr "But Emas"
144
145 #: ../3d_armor/armor.lua
146 msgid "Mithril Helmet"
147 msgstr "Helmet Mithril"
148
149 #: ../3d_armor/armor.lua
150 msgid "Mithril Chestplate"
151 msgstr "Perisai Dada Mithril"
152
153 #: ../3d_armor/armor.lua
154 msgid "Mithril Leggings"
155 msgstr "Perisai Kaki Mithril"
156
157 #: ../3d_armor/armor.lua
158 msgid "Mithril Boots"
159 msgstr "But Mithril"
160
161 #: ../3d_armor/armor.lua
162 msgid "Crystal Helmet"
163 msgstr "Helmet Kristal"
164
165 #: ../3d_armor/armor.lua
166 msgid "Crystal Chestplate"
167 msgstr "Perisai Dada Kristal"
168
169 #: ../3d_armor/armor.lua
170 msgid "Crystal Leggings"
171 msgstr "Perisai Kaki Kristal"
172
173 #: ../3d_armor/armor.lua
174 msgid "Crystal Boots"
175 msgstr "But Kristal"
176
177 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
178 msgid "Radiation"
179 msgstr "Radiasi"
180
181 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
182 msgid "Level"
183 msgstr "Tahap"
184
185 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
186 msgid "Heal"
187 msgstr "Pulih"
188
189 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
190 msgid "Fire"
191 msgstr "Api"
192
193 #: ../3d_armor/init.lua
194 msgid "Your @1 got destroyed!"
195 msgstr "@1 anda telah musnah!"
196
197 #: ../3d_armor/init.lua
198 msgid "3d_armor: Failed to initialize player"
199 msgstr "3d_armor: Gagal mengasalkan pemain"
200
201 #: ../3d_armor/init.lua
202 msgid "[3d_armor] Fire Nodes disabled"
203 msgstr "[3d_armor] Nod-nod Api dilumpuhkan"
204
205 #: ../3d_armor_ip/init.lua
206 msgid "3d_armor_ip: Mod loaded but unused."
207 msgstr "3d_armor_ip: Mods dimuatkan tetapi tidak digunakan."
208
209 #: ../3d_armor_ip/init.lua
210 msgid "Back"
211 msgstr "Kembali"
212
213 #: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua
214 msgid "Armor"
215 msgstr "Perisai"
216
217 #: ../3d_armor_sfinv/init.lua
218 msgid "3d_armor_sfinv: Mod loaded but unused."
219 msgstr "3d_armor_sfinv: Mods dimuatkan tetapi tidak digunakan."
220
221 #: ../3d_armor_stand/init.lua
222 msgid "Armor stand top"
223 msgstr "Bhg atas dirian perisai"
224
225 #: ../3d_armor_stand/init.lua
226 msgid "Armor stand"
227 msgstr "Dirian perisai"
228
229 #: ../3d_armor_stand/init.lua
230 msgid "Armor Stand"
231 msgstr "Dirian Perisai"
232
233 #: ../3d_armor_stand/init.lua
234 msgid "Locked Armor stand"
235 msgstr "Dirian perisai Berkunci"
236
237 #: ../3d_armor_stand/init.lua
238 msgid "Armor Stand (owned by @1)"
239 msgstr "Dirian Perisai (milik @1)"
240
241 #: ../3d_armor_ui/init.lua
242 msgid "3d_armor_ui: Mod loaded but unused."
243 msgstr "3d_armor_ui: Mods dimuatkan tetapi tidak digunakan."
244
245 #: ../3d_armor_ui/init.lua
246 msgid "3d Armor"
247 msgstr "Perisai 3d"
248
249 #: ../3d_armor_ui/init.lua
250 msgid "Armor not initialized!"
251 msgstr "Perisai tidak diasalkan!"
252
253 #: ../shields/init.lua
254 msgid "Admin Shield"
255 msgstr "Perisai Pegang Pentadbir"
256
257 #: ../shields/init.lua
258 msgid "Wooden Shield"
259 msgstr "Perisai Pegang Kayu"
260
261 #: ../shields/init.lua
262 msgid "Enhanced Wood Shield"
263 msgstr "Perisai Pegang Kayu Kukuh"
264
265 #: ../shields/init.lua
266 msgid "Cactus Shield"
267 msgstr "Perisai Pegang Kaktus"
268
269 #: ../shields/init.lua
270 msgid "Enhanced Cactus Shield"
271 msgstr "Perisai Pegang Kaktus Kukuh"
272
273 #: ../shields/init.lua
274 msgid "Steel Shield"
275 msgstr "Perisai Pegang Keluli"
276
277 #: ../shields/init.lua
278 msgid "Bronze Shield"
279 msgstr "Perisai Pegang Gangsa"
280
281 #: ../shields/init.lua
282 msgid "Diamond Shield"
283 msgstr "Perisai Pegang Intan"
284
285 #: ../shields/init.lua
286 msgid "Gold Shield"
287 msgstr "Perisai Pegang Emas"
288
289 #: ../shields/init.lua
290 msgid "Mithril Shield"
291 msgstr "Perisai Pegang Mithril"
292
293 #: ../shields/init.lua
294 msgid "Crystal Shield"
295 msgstr "Perisai Pegang Kristal"
+0
-295
3d_armor/locale/pt.po less more
0 # LANGUAGE translation for 3D ARMOR MOD
1 # Copyright (C) 2018 by Stuart Jones
2 # This file is distributed under the same license as the 3D ARMOR MOD package.
3 # BrunoMine <borgesdossantosbruno@gmail.com>, 2018.
4 #
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: 3d_armor\n"
8 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-07-23 21:24+0200\n"
10 "PO-Revision-Date: 2018-11-08 13:12-0200\n"
11 "Language-Team: \n"
12 "MIME-Version: 1.0\n"
13 "Content-Type: text/plain; charset=UTF-8\n"
14 "Content-Transfer-Encoding: 8bit\n"
15 "X-Generator: Poedit 2.0.6\n"
16 "Last-Translator: BrunoMine <borgesdossantosbruno@gmail.com>\n"
17 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18 "Language: pt\n"
19
20 #: ../3d_armor/api.lua
21 msgid "3d_armor: Player reference is nil @1"
22 msgstr "3d_armor: Referência Jogador é nula @1"
23
24 #: ../3d_armor/api.lua
25 msgid "3d_armor: Player name is nil @1"
26 msgstr "3d_armor: Nome de jogador é nulo @1"
27
28 #: ../3d_armor/api.lua
29 msgid "3d_armor: Detached armor inventory is nil @1"
30 msgstr "3d_armor: Inventario avulso de armadura é nulo @1"
31
32 #: ../3d_armor/armor.lua
33 msgid "Admin Helmet"
34 msgstr "Capacete de Administrador"
35
36 #: ../3d_armor/armor.lua
37 msgid "Admin Chestplate"
38 msgstr "Peitoral de Administrador"
39
40 #: ../3d_armor/armor.lua
41 msgid "Admin Leggings"
42 msgstr "Calças de Administrador"
43
44 #: ../3d_armor/armor.lua
45 msgid "Admin Boots"
46 msgstr "Botas de Administrador"
47
48 #: ../3d_armor/armor.lua
49 msgid "Wood Helmet"
50 msgstr "Capacete de Madeira"
51
52 #: ../3d_armor/armor.lua
53 msgid "Wood Chestplate"
54 msgstr "Peitoral de Madeira"
55
56 #: ../3d_armor/armor.lua
57 msgid "Wood Leggings"
58 msgstr "Calças de Madeira"
59
60 #: ../3d_armor/armor.lua
61 msgid "Wood Boots"
62 msgstr "Botas de Madeira"
63
64 #: ../3d_armor/armor.lua
65 msgid "Cactus Helmet"
66 msgstr "Capacete de Cacto"
67
68 #: ../3d_armor/armor.lua
69 msgid "Cactus Chestplate"
70 msgstr "Peitoral de Cacto"
71
72 #: ../3d_armor/armor.lua
73 msgid "Cactus Leggings"
74 msgstr "Calças de Cacto"
75
76 #: ../3d_armor/armor.lua
77 msgid "Cactus Boots"
78 msgstr "Botas de Madeira"
79
80 #: ../3d_armor/armor.lua
81 msgid "Steel Helmet"
82 msgstr "Capacete de Aço"
83
84 #: ../3d_armor/armor.lua
85 msgid "Steel Chestplate"
86 msgstr "Peitoral de Aço"
87
88 #: ../3d_armor/armor.lua
89 msgid "Steel Leggings"
90 msgstr "Calças de Aço"
91
92 #: ../3d_armor/armor.lua
93 msgid "Steel Boots"
94 msgstr "Botas de Aço"
95
96 #: ../3d_armor/armor.lua
97 msgid "Bronze Helmet"
98 msgstr "Capacete de Bronze"
99
100 #: ../3d_armor/armor.lua
101 msgid "Bronze Chestplate"
102 msgstr "Peitoral de Bronze"
103
104 #: ../3d_armor/armor.lua
105 msgid "Bronze Leggings"
106 msgstr "Calças de Bronze"
107
108 #: ../3d_armor/armor.lua
109 msgid "Bronze Boots"
110 msgstr "Botas de Bronze"
111
112 #: ../3d_armor/armor.lua
113 msgid "Diamond Helmet"
114 msgstr "Capacete de Diamante"
115
116 #: ../3d_armor/armor.lua
117 msgid "Diamond Chestplate"
118 msgstr "Peitoral de Diamante"
119
120 #: ../3d_armor/armor.lua
121 msgid "Diamond Leggings"
122 msgstr "Calças de Diamante"
123
124 #: ../3d_armor/armor.lua
125 msgid "Diamond Boots"
126 msgstr "Botas de Diamante"
127
128 #: ../3d_armor/armor.lua
129 msgid "Gold Helmet"
130 msgstr "Capacete de Ouro"
131
132 #: ../3d_armor/armor.lua
133 msgid "Gold Chestplate"
134 msgstr "Peitoral de Ouro"
135
136 #: ../3d_armor/armor.lua
137 msgid "Gold Leggings"
138 msgstr "Calças de Ouro"
139
140 #: ../3d_armor/armor.lua
141 msgid "Gold Boots"
142 msgstr "Botas de Ouro"
143
144 #: ../3d_armor/armor.lua
145 msgid "Mithril Helmet"
146 msgstr "Capacete de Mithril"
147
148 #: ../3d_armor/armor.lua
149 msgid "Mithril Chestplate"
150 msgstr "Peitoral de Mithril"
151
152 #: ../3d_armor/armor.lua
153 msgid "Mithril Leggings"
154 msgstr "Calças de Mithril"
155
156 #: ../3d_armor/armor.lua
157 msgid "Mithril Boots"
158 msgstr "Botas de Mithril"
159
160 #: ../3d_armor/armor.lua
161 msgid "Crystal Helmet"
162 msgstr "Capacete de Cristal"
163
164 #: ../3d_armor/armor.lua
165 msgid "Crystal Chestplate"
166 msgstr "Peitoral de Cristal"
167
168 #: ../3d_armor/armor.lua
169 msgid "Crystal Leggings"
170 msgstr "Calças de Cristal"
171
172 #: ../3d_armor/armor.lua
173 msgid "Crystal Boots"
174 msgstr "Botas de Cristal"
175
176 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
177 msgid "Radiation"
178 msgstr "Radiação"
179
180 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
181 msgid "Level"
182 msgstr "Nível"
183
184 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
185 msgid "Heal"
186 msgstr "Saúde"
187
188 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
189 msgid "Fire"
190 msgstr "Fogo"
191
192 #: ../3d_armor/init.lua
193 msgid "Your @1 got destroyed!"
194 msgstr "@1 foi destruído(a)!"
195
196 #: ../3d_armor/init.lua
197 msgid "3d_armor: Failed to initialize player"
198 msgstr "3d_armor: Falha ao inicializar jogador"
199
200 #: ../3d_armor/init.lua
201 msgid "[3d_armor] Fire Nodes disabled"
202 msgstr "[3d_armor] Nodes de gofo desabilitados"
203
204 #: ../3d_armor_ip/init.lua
205 msgid "3d_armor_ip: Mod loaded but unused."
206 msgstr "3d_armor_ip: Mod carregado mas inoperante."
207
208 #: ../3d_armor_ip/init.lua
209 msgid "Back"
210 msgstr "Voltar"
211
212 #: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua
213 msgid "Armor"
214 msgstr "Armadura"
215
216 #: ../3d_armor_sfinv/init.lua
217 msgid "3d_armor_sfinv: Mod loaded but unused."
218 msgstr "3d_armor_sfinv: Mod carregado mas inoperante."
219
220 #: ../3d_armor_stand/init.lua
221 msgid "Armor stand top"
222 msgstr "Topo de estande de armadura"
223
224 #: ../3d_armor_stand/init.lua
225 msgid "Armor stand"
226 msgstr "Estande de armadura"
227
228 #: ../3d_armor_stand/init.lua
229 msgid "Armor Stand"
230 msgstr "Estande de Armadura"
231
232 #: ../3d_armor_stand/init.lua
233 msgid "Locked Armor stand"
234 msgstr "Estande de Armadura Trancada"
235
236 #: ../3d_armor_stand/init.lua
237 msgid "Armor Stand (owned by @1)"
238 msgstr "Estande de Armadura (pertente a @1)"
239
240 #: ../3d_armor_ui/init.lua
241 msgid "3d_armor_ui: Mod loaded but unused."
242 msgstr "3d_armor_ui: Mod carregado mas inoperante."
243
244 #: ../3d_armor_ui/init.lua
245 msgid "3d Armor"
246 msgstr "3d Armor"
247
248 #: ../3d_armor_ui/init.lua
249 msgid "Armor not initialized!"
250 msgstr "Armadura não inicializada!"
251
252 #: ../shields/init.lua
253 msgid "Admin Shield"
254 msgstr "Escudo de Administrador"
255
256 #: ../shields/init.lua
257 msgid "Wooden Shield"
258 msgstr "Escudo de Madeira"
259
260 #: ../shields/init.lua
261 msgid "Enhanced Wood Shield"
262 msgstr "Escudo de Madeira Melhorado"
263
264 #: ../shields/init.lua
265 msgid "Cactus Shield"
266 msgstr "Escudo de Cacto"
267
268 #: ../shields/init.lua
269 msgid "Enhanced Cactus Shield"
270 msgstr "Escudo de Cacto Melhorado"
271
272 #: ../shields/init.lua
273 msgid "Steel Shield"
274 msgstr "Escudo de Aço"
275
276 #: ../shields/init.lua
277 msgid "Bronze Shield"
278 msgstr "Escudo de Bronze"
279
280 #: ../shields/init.lua
281 msgid "Diamond Shield"
282 msgstr "Escudo de Diamante"
283
284 #: ../shields/init.lua
285 msgid "Gold Shield"
286 msgstr "Escudo de Ouro"
287
288 #: ../shields/init.lua
289 msgid "Mithril Shield"
290 msgstr "Escudo de Mithril"
291
292 #: ../shields/init.lua
293 msgid "Crystal Shield"
294 msgstr "Escudo de Cristal"
+0
-295
3d_armor/locale/pt_BR.po less more
0 # LANGUAGE translation for 3D ARMOR MOD
1 # Copyright (C) 2018 by Stuart Jones
2 # This file is distributed under the same license as the 3D ARMOR MOD package.
3 # BrunoMine <borgesdossantosbruno@gmail.com>, 2018.
4 #
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: 3d_armor\n"
8 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-07-23 21:24+0200\n"
10 "PO-Revision-Date: 2018-11-08 13:12-0200\n"
11 "Language-Team: \n"
12 "MIME-Version: 1.0\n"
13 "Content-Type: text/plain; charset=UTF-8\n"
14 "Content-Transfer-Encoding: 8bit\n"
15 "X-Generator: Poedit 2.0.6\n"
16 "Last-Translator: BrunoMine <borgesdossantosbruno@gmail.com>\n"
17 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18 "Language: pt_BR\n"
19
20 #: ../3d_armor/api.lua
21 msgid "3d_armor: Player reference is nil @1"
22 msgstr "3d_armor: Referência Jogador é nula @1"
23
24 #: ../3d_armor/api.lua
25 msgid "3d_armor: Player name is nil @1"
26 msgstr "3d_armor: Nome de jogador é nulo @1"
27
28 #: ../3d_armor/api.lua
29 msgid "3d_armor: Detached armor inventory is nil @1"
30 msgstr "3d_armor: Inventario avulso de armadura é nulo @1"
31
32 #: ../3d_armor/armor.lua
33 msgid "Admin Helmet"
34 msgstr "Capacete de Administrador"
35
36 #: ../3d_armor/armor.lua
37 msgid "Admin Chestplate"
38 msgstr "Peitoral de Administrador"
39
40 #: ../3d_armor/armor.lua
41 msgid "Admin Leggings"
42 msgstr "Calças de Administrador"
43
44 #: ../3d_armor/armor.lua
45 msgid "Admin Boots"
46 msgstr "Botas de Administrador"
47
48 #: ../3d_armor/armor.lua
49 msgid "Wood Helmet"
50 msgstr "Capacete de Madeira"
51
52 #: ../3d_armor/armor.lua
53 msgid "Wood Chestplate"
54 msgstr "Peitoral de Madeira"
55
56 #: ../3d_armor/armor.lua
57 msgid "Wood Leggings"
58 msgstr "Calças de Madeira"
59
60 #: ../3d_armor/armor.lua
61 msgid "Wood Boots"
62 msgstr "Botas de Madeira"
63
64 #: ../3d_armor/armor.lua
65 msgid "Cactus Helmet"
66 msgstr "Capacete de Cacto"
67
68 #: ../3d_armor/armor.lua
69 msgid "Cactus Chestplate"
70 msgstr "Peitoral de Cacto"
71
72 #: ../3d_armor/armor.lua
73 msgid "Cactus Leggings"
74 msgstr "Calças de Cacto"
75
76 #: ../3d_armor/armor.lua
77 msgid "Cactus Boots"
78 msgstr "Botas de Madeira"
79
80 #: ../3d_armor/armor.lua
81 msgid "Steel Helmet"
82 msgstr "Capacete de Aço"
83
84 #: ../3d_armor/armor.lua
85 msgid "Steel Chestplate"
86 msgstr "Peitoral de Aço"
87
88 #: ../3d_armor/armor.lua
89 msgid "Steel Leggings"
90 msgstr "Calças de Aço"
91
92 #: ../3d_armor/armor.lua
93 msgid "Steel Boots"
94 msgstr "Botas de Aço"
95
96 #: ../3d_armor/armor.lua
97 msgid "Bronze Helmet"
98 msgstr "Capacete de Bronze"
99
100 #: ../3d_armor/armor.lua
101 msgid "Bronze Chestplate"
102 msgstr "Peitoral de Bronze"
103
104 #: ../3d_armor/armor.lua
105 msgid "Bronze Leggings"
106 msgstr "Calças de Bronze"
107
108 #: ../3d_armor/armor.lua
109 msgid "Bronze Boots"
110 msgstr "Botas de Bronze"
111
112 #: ../3d_armor/armor.lua
113 msgid "Diamond Helmet"
114 msgstr "Capacete de Diamante"
115
116 #: ../3d_armor/armor.lua
117 msgid "Diamond Chestplate"
118 msgstr "Peitoral de Diamante"
119
120 #: ../3d_armor/armor.lua
121 msgid "Diamond Leggings"
122 msgstr "Calças de Diamante"
123
124 #: ../3d_armor/armor.lua
125 msgid "Diamond Boots"
126 msgstr "Botas de Diamante"
127
128 #: ../3d_armor/armor.lua
129 msgid "Gold Helmet"
130 msgstr "Capacete de Ouro"
131
132 #: ../3d_armor/armor.lua
133 msgid "Gold Chestplate"
134 msgstr "Peitoral de Ouro"
135
136 #: ../3d_armor/armor.lua
137 msgid "Gold Leggings"
138 msgstr "Calças de Ouro"
139
140 #: ../3d_armor/armor.lua
141 msgid "Gold Boots"
142 msgstr "Botas de Ouro"
143
144 #: ../3d_armor/armor.lua
145 msgid "Mithril Helmet"
146 msgstr "Capacete de Mithril"
147
148 #: ../3d_armor/armor.lua
149 msgid "Mithril Chestplate"
150 msgstr "Peitoral de Mithril"
151
152 #: ../3d_armor/armor.lua
153 msgid "Mithril Leggings"
154 msgstr "Calças de Mithril"
155
156 #: ../3d_armor/armor.lua
157 msgid "Mithril Boots"
158 msgstr "Botas de Mithril"
159
160 #: ../3d_armor/armor.lua
161 msgid "Crystal Helmet"
162 msgstr "Capacete de Cristal"
163
164 #: ../3d_armor/armor.lua
165 msgid "Crystal Chestplate"
166 msgstr "Peitoral de Cristal"
167
168 #: ../3d_armor/armor.lua
169 msgid "Crystal Leggings"
170 msgstr "Calças de Cristal"
171
172 #: ../3d_armor/armor.lua
173 msgid "Crystal Boots"
174 msgstr "Botas de Cristal"
175
176 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
177 msgid "Radiation"
178 msgstr "Radiação"
179
180 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
181 msgid "Level"
182 msgstr "Nível"
183
184 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
185 msgid "Heal"
186 msgstr "Saúde"
187
188 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
189 msgid "Fire"
190 msgstr "Fogo"
191
192 #: ../3d_armor/init.lua
193 msgid "Your @1 got destroyed!"
194 msgstr "@1 foi destruído(a)!"
195
196 #: ../3d_armor/init.lua
197 msgid "3d_armor: Failed to initialize player"
198 msgstr "3d_armor: Falha ao inicializar jogador"
199
200 #: ../3d_armor/init.lua
201 msgid "[3d_armor] Fire Nodes disabled"
202 msgstr "[3d_armor] Nodes de gofo desabilitados"
203
204 #: ../3d_armor_ip/init.lua
205 msgid "3d_armor_ip: Mod loaded but unused."
206 msgstr "3d_armor_ip: Mod carregado mas inoperante."
207
208 #: ../3d_armor_ip/init.lua
209 msgid "Back"
210 msgstr "Voltar"
211
212 #: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua
213 msgid "Armor"
214 msgstr "Armadura"
215
216 #: ../3d_armor_sfinv/init.lua
217 msgid "3d_armor_sfinv: Mod loaded but unused."
218 msgstr "3d_armor_sfinv: Mod carregado mas inoperante."
219
220 #: ../3d_armor_stand/init.lua
221 msgid "Armor stand top"
222 msgstr "Topo de estande de armadura"
223
224 #: ../3d_armor_stand/init.lua
225 msgid "Armor stand"
226 msgstr "Estande de armadura"
227
228 #: ../3d_armor_stand/init.lua
229 msgid "Armor Stand"
230 msgstr "Estande de Armadura"
231
232 #: ../3d_armor_stand/init.lua
233 msgid "Locked Armor stand"
234 msgstr "Estande de Armadura Trancada"
235
236 #: ../3d_armor_stand/init.lua
237 msgid "Armor Stand (owned by @1)"
238 msgstr "Estande de Armadura (pertente a @1)"
239
240 #: ../3d_armor_ui/init.lua
241 msgid "3d_armor_ui: Mod loaded but unused."
242 msgstr "3d_armor_ui: Mod carregado mas inoperante."
243
244 #: ../3d_armor_ui/init.lua
245 msgid "3d Armor"
246 msgstr "3d Armor"
247
248 #: ../3d_armor_ui/init.lua
249 msgid "Armor not initialized!"
250 msgstr "Armadura não inicializada!"
251
252 #: ../shields/init.lua
253 msgid "Admin Shield"
254 msgstr "Escudo de Administrador"
255
256 #: ../shields/init.lua
257 msgid "Wooden Shield"
258 msgstr "Escudo de Madeira"
259
260 #: ../shields/init.lua
261 msgid "Enhanced Wood Shield"
262 msgstr "Escudo de Madeira Melhorado"
263
264 #: ../shields/init.lua
265 msgid "Cactus Shield"
266 msgstr "Escudo de Cacto"
267
268 #: ../shields/init.lua
269 msgid "Enhanced Cactus Shield"
270 msgstr "Escudo de Cacto Melhorado"
271
272 #: ../shields/init.lua
273 msgid "Steel Shield"
274 msgstr "Escudo de Aço"
275
276 #: ../shields/init.lua
277 msgid "Bronze Shield"
278 msgstr "Escudo de Bronze"
279
280 #: ../shields/init.lua
281 msgid "Diamond Shield"
282 msgstr "Escudo de Diamante"
283
284 #: ../shields/init.lua
285 msgid "Gold Shield"
286 msgstr "Escudo de Ouro"
287
288 #: ../shields/init.lua
289 msgid "Mithril Shield"
290 msgstr "Escudo de Mithril"
291
292 #: ../shields/init.lua
293 msgid "Crystal Shield"
294 msgstr "Escudo de Cristal"
+0
-294
3d_armor/locale/ru.po less more
0 # Russian translation for 3D ARMOR MOD
1 # Copyright (C) 2018 by Stuart Jones
2 # This file is distributed under the same license as the 3D ARMOR MOD package.
3 # CodeXP <codexp@gmx.net>, 2018.
4 #
5 #, fuzzy
6 msgid ""
7 msgstr ""
8 "Project-Id-Version: 3d_armor\n"
9 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2018-07-23 21:21+0200\n"
11 "PO-Revision-Date: 2018-07-23 21:30+0200\n"
12 "Last-Translator: CodeXP <codexp@gmx.net>\n"
13 "Language-Team: \n"
14 "Language: ru\n"
15 "MIME-Version: 1.0\n"
16 "Content-Type: text/plain; charset=UTF-8\n"
17 "Content-Transfer-Encoding: 8bit\n"
18
19 #: ../3d_armor/api.lua
20 msgid "3d_armor: Player reference is nil @1"
21 msgstr "3d_armor: Ссылка игрока является nil @1"
22
23 #: ../3d_armor/api.lua
24 msgid "3d_armor: Player name is nil @1"
25 msgstr "3d_armor: Имя игрока является nil @1"
26
27 #: ../3d_armor/api.lua
28 msgid "3d_armor: Detached armor inventory is nil @1"
29 msgstr "3d_armor: Отдельный инвентарь брони является nil @1"
30
31 #: ../3d_armor/armor.lua
32 msgid "Admin Helmet"
33 msgstr "шлем админа"
34
35 #: ../3d_armor/armor.lua
36 msgid "Admin Chestplate"
37 msgstr "бронежилет админа"
38
39 #: ../3d_armor/armor.lua
40 msgid "Admin Leggings"
41 msgstr "гамаши админа"
42
43 #: ../3d_armor/armor.lua
44 msgid "Admin Boots"
45 msgstr "ботинки админа"
46
47 #: ../3d_armor/armor.lua
48 msgid "Wood Helmet"
49 msgstr "деревянный шлем"
50
51 #: ../3d_armor/armor.lua
52 msgid "Wood Chestplate"
53 msgstr "деревянный бронежилет"
54
55 #: ../3d_armor/armor.lua
56 msgid "Wood Leggings"
57 msgstr "деревянные гамаши"
58
59 #: ../3d_armor/armor.lua
60 msgid "Wood Boots"
61 msgstr "деревянные ботинки"
62
63 #: ../3d_armor/armor.lua
64 msgid "Cactus Helmet"
65 msgstr "кактусовый шлем"
66
67 #: ../3d_armor/armor.lua
68 msgid "Cactus Chestplate"
69 msgstr "кактусовый бронежилет"
70
71 #: ../3d_armor/armor.lua
72 msgid "Cactus Leggings"
73 msgstr "кактусовые гамаши"
74
75 #: ../3d_armor/armor.lua
76 msgid "Cactus Boots"
77 msgstr "кактусовые ботинки"
78
79 #: ../3d_armor/armor.lua
80 msgid "Steel Helmet"
81 msgstr "стальной шлем"
82
83 #: ../3d_armor/armor.lua
84 msgid "Steel Chestplate"
85 msgstr "стальной бронежилет"
86
87 #: ../3d_armor/armor.lua
88 msgid "Steel Leggings"
89 msgstr "стальные гамаши"
90
91 #: ../3d_armor/armor.lua
92 msgid "Steel Boots"
93 msgstr "стальные ботинки"
94
95 #: ../3d_armor/armor.lua
96 msgid "Bronze Helmet"
97 msgstr "бронзовый шлем"
98
99 #: ../3d_armor/armor.lua
100 msgid "Bronze Chestplate"
101 msgstr "бронзовый бронежилет"
102
103 #: ../3d_armor/armor.lua
104 msgid "Bronze Leggings"
105 msgstr "бронзовые гамаши"
106
107 #: ../3d_armor/armor.lua
108 msgid "Bronze Boots"
109 msgstr "бронзовые ботинки"
110
111 #: ../3d_armor/armor.lua
112 msgid "Diamond Helmet"
113 msgstr "алмазный шлем"
114
115 #: ../3d_armor/armor.lua
116 msgid "Diamond Chestplate"
117 msgstr "алмазный бронежилет"
118
119 #: ../3d_armor/armor.lua
120 msgid "Diamond Leggings"
121 msgstr "алмазные гамаши"
122
123 #: ../3d_armor/armor.lua
124 msgid "Diamond Boots"
125 msgstr "алмазные ботинки"
126
127 #: ../3d_armor/armor.lua
128 msgid "Gold Helmet"
129 msgstr "золотой шлем"
130
131 #: ../3d_armor/armor.lua
132 msgid "Gold Chestplate"
133 msgstr "золотой бронежилет"
134
135 #: ../3d_armor/armor.lua
136 msgid "Gold Leggings"
137 msgstr "золотые гамаши"
138
139 #: ../3d_armor/armor.lua
140 msgid "Gold Boots"
141 msgstr "золотые ботинки"
142
143 #: ../3d_armor/armor.lua
144 msgid "Mithril Helmet"
145 msgstr "мифриловый шлем"
146
147 #: ../3d_armor/armor.lua
148 msgid "Mithril Chestplate"
149 msgstr "мифриловый бронежилет"
150
151 #: ../3d_armor/armor.lua
152 msgid "Mithril Leggings"
153 msgstr "мифриловые гамаши"
154
155 #: ../3d_armor/armor.lua
156 msgid "Mithril Boots"
157 msgstr "мифриловые ботинки"
158
159 #: ../3d_armor/armor.lua
160 msgid "Crystal Helmet"
161 msgstr "кристалловый шлем"
162
163 #: ../3d_armor/armor.lua
164 msgid "Crystal Chestplate"
165 msgstr "кристалловый бронежилет"
166
167 #: ../3d_armor/armor.lua
168 msgid "Crystal Leggings"
169 msgstr "кристалловые гамаши"
170
171 #: ../3d_armor/armor.lua
172 msgid "Crystal Boots"
173 msgstr "кристалловые ботинки"
174
175 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
176 msgid "Radiation"
177 msgstr "излучение"
178
179 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
180 msgid "Level"
181 msgstr "уровень"
182
183 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
184 msgid "Heal"
185 msgstr "исцеление"
186
187 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
188 msgid "Fire"
189 msgstr "огонь"
190
191 #: ../3d_armor/init.lua
192 msgid "Your @1 got destroyed!"
193 msgstr "твой(и) @1 был(и) разрушен(ы)!"
194
195 #: ../3d_armor/init.lua
196 msgid "3d_armor: Failed to initialize player"
197 msgstr "3d_armor: не смог подготовить игрока"
198
199 #: ../3d_armor/init.lua
200 msgid "[3d_armor] Fire Nodes disabled"
201 msgstr "[3d_armor] блоки огня отключены"
202
203 #: ../3d_armor_ip/init.lua
204 msgid "3d_armor_ip: Mod loaded but unused."
205 msgstr "3d_armor_ip: мод загружен но не используется."
206
207 #: ../3d_armor_ip/init.lua
208 msgid "Back"
209 msgstr "назад"
210
211 #: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua
212 msgid "Armor"
213 msgstr "бронь"
214
215 #: ../3d_armor_sfinv/init.lua
216 msgid "3d_armor_sfinv: Mod loaded but unused."
217 msgstr "3d_armor_sfinv: мод загружен но не используется."
218
219 #: ../3d_armor_stand/init.lua
220 msgid "Armor stand top"
221 msgstr "стойка для брони (верх)"
222
223 #: ../3d_armor_stand/init.lua
224 msgid "Armor stand"
225 msgstr "стойка для брони"
226
227 #: ../3d_armor_stand/init.lua
228 msgid "Armor Stand"
229 msgstr "стойка для брони"
230
231 #: ../3d_armor_stand/init.lua
232 msgid "Locked Armor stand"
233 msgstr "защищенная стойка для брони"
234
235 #: ../3d_armor_stand/init.lua
236 msgid "Armor Stand (owned by @1)"
237 msgstr "стойка для брони (принадлежит @1)"
238
239 #: ../3d_armor_ui/init.lua
240 msgid "3d_armor_ui: Mod loaded but unused."
241 msgstr "3d_armor_ui: мод загружен но не используется."
242
243 #: ../3d_armor_ui/init.lua
244 msgid "3d Armor"
245 msgstr "3D бронь"
246
247 #: ../3d_armor_ui/init.lua
248 msgid "Armor not initialized!"
249 msgstr "бронь не подготовлена!"
250
251 #: ../shields/init.lua
252 msgid "Admin Shield"
253 msgstr "щит админа"
254
255 #: ../shields/init.lua
256 msgid "Wooden Shield"
257 msgstr "деревянный щит"
258
259 #: ../shields/init.lua
260 msgid "Enhanced Wood Shield"
261 msgstr "улучшенный деревянный щит"
262
263 #: ../shields/init.lua
264 msgid "Cactus Shield"
265 msgstr "кактусный щит"
266
267 #: ../shields/init.lua
268 msgid "Enhanced Cactus Shield"
269 msgstr "улучшенный кактусный щит"
270
271 #: ../shields/init.lua
272 msgid "Steel Shield"
273 msgstr "стальной щит"
274
275 #: ../shields/init.lua
276 msgid "Bronze Shield"
277 msgstr "бронзовый щит"
278
279 #: ../shields/init.lua
280 msgid "Diamond Shield"
281 msgstr "алмазный щит"
282
283 #: ../shields/init.lua
284 msgid "Gold Shield"
285 msgstr "золотой щит"
286
287 #: ../shields/init.lua
288 msgid "Mithril Shield"
289 msgstr "мифриловый щит"
290
291 #: ../shields/init.lua
292 msgid "Crystal Shield"
293 msgstr "кристалловый щит"
+0
-294
3d_armor/locale/template.pot less more
0 # LANGUAGE translation for 3D ARMOR MOD
1 # Copyright (C) 2018 by Stuart Jones
2 # This file is distributed under the same license as the 3D ARMOR MOD package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 #
5 #, fuzzy
6 msgid ""
7 msgstr ""
8 "Project-Id-Version: PACKAGE VERSION\n"
9 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2018-07-23 21:24+0200\n"
11 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13 "Language-Team: LANGUAGE <LL@li.org>\n"
14 "Language: \n"
15 "MIME-Version: 1.0\n"
16 "Content-Type: text/plain; charset=CHARSET\n"
17 "Content-Transfer-Encoding: 8bit\n"
18
19 #: ../3d_armor/api.lua
20 msgid "3d_armor: Player reference is nil @1"
21 msgstr ""
22
23 #: ../3d_armor/api.lua
24 msgid "3d_armor: Player name is nil @1"
25 msgstr ""
26
27 #: ../3d_armor/api.lua
28 msgid "3d_armor: Detached armor inventory is nil @1"
29 msgstr ""
30
31 #: ../3d_armor/armor.lua
32 msgid "Admin Helmet"
33 msgstr ""
34
35 #: ../3d_armor/armor.lua
36 msgid "Admin Chestplate"
37 msgstr ""
38
39 #: ../3d_armor/armor.lua
40 msgid "Admin Leggings"
41 msgstr ""
42
43 #: ../3d_armor/armor.lua
44 msgid "Admin Boots"
45 msgstr ""
46
47 #: ../3d_armor/armor.lua
48 msgid "Wood Helmet"
49 msgstr ""
50
51 #: ../3d_armor/armor.lua
52 msgid "Wood Chestplate"
53 msgstr ""
54
55 #: ../3d_armor/armor.lua
56 msgid "Wood Leggings"
57 msgstr ""
58
59 #: ../3d_armor/armor.lua
60 msgid "Wood Boots"
61 msgstr ""
62
63 #: ../3d_armor/armor.lua
64 msgid "Cactus Helmet"
65 msgstr ""
66
67 #: ../3d_armor/armor.lua
68 msgid "Cactus Chestplate"
69 msgstr ""
70
71 #: ../3d_armor/armor.lua
72 msgid "Cactus Leggings"
73 msgstr ""
74
75 #: ../3d_armor/armor.lua
76 msgid "Cactus Boots"
77 msgstr ""
78
79 #: ../3d_armor/armor.lua
80 msgid "Steel Helmet"
81 msgstr ""
82
83 #: ../3d_armor/armor.lua
84 msgid "Steel Chestplate"
85 msgstr ""
86
87 #: ../3d_armor/armor.lua
88 msgid "Steel Leggings"
89 msgstr ""
90
91 #: ../3d_armor/armor.lua
92 msgid "Steel Boots"
93 msgstr ""
94
95 #: ../3d_armor/armor.lua
96 msgid "Bronze Helmet"
97 msgstr ""
98
99 #: ../3d_armor/armor.lua
100 msgid "Bronze Chestplate"
101 msgstr ""
102
103 #: ../3d_armor/armor.lua
104 msgid "Bronze Leggings"
105 msgstr ""
106
107 #: ../3d_armor/armor.lua
108 msgid "Bronze Boots"
109 msgstr ""
110
111 #: ../3d_armor/armor.lua
112 msgid "Diamond Helmet"
113 msgstr ""
114
115 #: ../3d_armor/armor.lua
116 msgid "Diamond Chestplate"
117 msgstr ""
118
119 #: ../3d_armor/armor.lua
120 msgid "Diamond Leggings"
121 msgstr ""
122
123 #: ../3d_armor/armor.lua
124 msgid "Diamond Boots"
125 msgstr ""
126
127 #: ../3d_armor/armor.lua
128 msgid "Gold Helmet"
129 msgstr ""
130
131 #: ../3d_armor/armor.lua
132 msgid "Gold Chestplate"
133 msgstr ""
134
135 #: ../3d_armor/armor.lua
136 msgid "Gold Leggings"
137 msgstr ""
138
139 #: ../3d_armor/armor.lua
140 msgid "Gold Boots"
141 msgstr ""
142
143 #: ../3d_armor/armor.lua
144 msgid "Mithril Helmet"
145 msgstr ""
146
147 #: ../3d_armor/armor.lua
148 msgid "Mithril Chestplate"
149 msgstr ""
150
151 #: ../3d_armor/armor.lua
152 msgid "Mithril Leggings"
153 msgstr ""
154
155 #: ../3d_armor/armor.lua
156 msgid "Mithril Boots"
157 msgstr ""
158
159 #: ../3d_armor/armor.lua
160 msgid "Crystal Helmet"
161 msgstr ""
162
163 #: ../3d_armor/armor.lua
164 msgid "Crystal Chestplate"
165 msgstr ""
166
167 #: ../3d_armor/armor.lua
168 msgid "Crystal Leggings"
169 msgstr ""
170
171 #: ../3d_armor/armor.lua
172 msgid "Crystal Boots"
173 msgstr ""
174
175 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
176 msgid "Radiation"
177 msgstr ""
178
179 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
180 msgid "Level"
181 msgstr ""
182
183 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
184 msgid "Heal"
185 msgstr ""
186
187 #: ../3d_armor/init.lua ../3d_armor_ui/init.lua
188 msgid "Fire"
189 msgstr ""
190
191 #: ../3d_armor/init.lua
192 msgid "Your @1 got destroyed!"
193 msgstr ""
194
195 #: ../3d_armor/init.lua
196 msgid "3d_armor: Failed to initialize player"
197 msgstr ""
198
199 #: ../3d_armor/init.lua
200 msgid "[3d_armor] Fire Nodes disabled"
201 msgstr ""
202
203 #: ../3d_armor_ip/init.lua
204 msgid "3d_armor_ip: Mod loaded but unused."
205 msgstr ""
206
207 #: ../3d_armor_ip/init.lua
208 msgid "Back"
209 msgstr ""
210
211 #: ../3d_armor_ip/init.lua ../3d_armor_sfinv/init.lua ../3d_armor_ui/init.lua
212 msgid "Armor"
213 msgstr ""
214
215 #: ../3d_armor_sfinv/init.lua
216 msgid "3d_armor_sfinv: Mod loaded but unused."
217 msgstr ""
218
219 #: ../3d_armor_stand/init.lua
220 msgid "Armor stand top"
221 msgstr ""
222
223 #: ../3d_armor_stand/init.lua
224 msgid "Armor stand"
225 msgstr ""
226
227 #: ../3d_armor_stand/init.lua
228 msgid "Armor Stand"
229 msgstr ""
230
231 #: ../3d_armor_stand/init.lua
232 msgid "Locked Armor stand"
233 msgstr ""
234
235 #: ../3d_armor_stand/init.lua
236 msgid "Armor Stand (owned by @1)"
237 msgstr ""
238
239 #: ../3d_armor_ui/init.lua
240 msgid "3d_armor_ui: Mod loaded but unused."
241 msgstr ""
242
243 #: ../3d_armor_ui/init.lua
244 msgid "3d Armor"
245 msgstr ""
246
247 #: ../3d_armor_ui/init.lua
248 msgid "Armor not initialized!"
249 msgstr ""
250
251 #: ../shields/init.lua
252 msgid "Admin Shield"
253 msgstr ""
254
255 #: ../shields/init.lua
256 msgid "Wooden Shield"
257 msgstr ""
258
259 #: ../shields/init.lua
260 msgid "Enhanced Wood Shield"
261 msgstr ""
262
263 #: ../shields/init.lua
264 msgid "Cactus Shield"
265 msgstr ""
266
267 #: ../shields/init.lua
268 msgid "Enhanced Cactus Shield"
269 msgstr ""
270
271 #: ../shields/init.lua
272 msgid "Steel Shield"
273 msgstr ""
274
275 #: ../shields/init.lua
276 msgid "Bronze Shield"
277 msgstr ""
278
279 #: ../shields/init.lua
280 msgid "Diamond Shield"
281 msgstr ""
282
283 #: ../shields/init.lua
284 msgid "Gold Shield"
285 msgstr ""
286
287 #: ../shields/init.lua
288 msgid "Mithril Shield"
289 msgstr ""
290
291 #: ../shields/init.lua
292 msgid "Crystal Shield"
293 msgstr ""
0 # textdomain: 3d_armor
1
2
3 ### api.lua ###
4
5 3d_armor: Detached armor inventory is nil @1=
6 3d_armor: Player name is nil @1=
7 3d_armor: Player reference is nil @1=
8
9 ### armor.lua ###
10
11 Admin Boots=
12 Admin Chestplate=
13 Admin Helmet=
14 Admin Leggings=
15 Bronze Boots=
16 Bronze Chestplate=
17 Bronze Helmet=
18 Bronze Leggings=
19 Cactus Boots=
20 Cactus Chestplate=
21 Cactus Helmet=
22 Cactus Leggings=
23 Crystal Boots=
24 Crystal Chestplate=
25 Crystal Helmet=
26 Crystal Leggings=
27 Diamond Boots=
28 Diamond Chestplate=
29 Diamond Helmet=
30 Diamond Leggings=
31 Gold Boots=
32 Gold Chestplate=
33 Gold Helmet=
34 Gold Leggings=
35 Mithril Boots=
36 Mithril Chestplate=
37 Mithril Helmet=
38 Mithril Leggings=
39 Steel Boots=
40 Steel Chestplate=
41 Steel Helmet=
42 Steel Leggings=
43 Wood Boots=
44 Wood Chestplate=
45 Wood Helmet=
46 Wood Leggings=
47
48 ### init.lua ###
49
50 3d_armor: Failed to initialize player=
51 Fire=
52 Heal=
53 Level=
54 Radiation=
55 Your @1 got destroyed!=
56 Your @1 is almost broken!=
57 [3d_armor] Fire Nodes disabled=
00 name = 3d_armor
11 depends = default
2 optional_depends = player_monoids, armor_monoid, pova, fire, ethereal, bakedclay, intllib
2 optional_depends = player_monoids, armor_monoid, pova, fire, ethereal, bakedclay, moreores
33 description = Adds craftable armor that is visible to other players.
3d_armor/textures/3d_armor_ui_form.png less more
Binary diff not shown
00 -- support for i18n
1 local S = armor_i18n.gettext
1 local S = minetest.get_translator(minetest.get_current_modname())
22 local F = minetest.formspec_escape
33
44 if not minetest.global_exists("inventory_plus") then
0 # textdomain: 3d_armor_ip
1
2
3 ### init.lua ###
4
5 3d_armor_ip: Mod loaded but unused.=3d_armor_ip : Mod chargé mais inutilisé.
6 Armor=Armure
7 Back=Retour
0 # textdomain: 3d_armor_ip
1
2
3 ### init.lua ###
4
5 3d_armor_ip: Mod loaded but unused.=
6 Armor=
7 Back=
00 -- support for i18n
1 local S = armor_i18n.gettext
1 local S = minetest.get_translator(minetest.get_current_modname())
22
33 if not minetest.global_exists("sfinv") then
44 minetest.log("warning", S("3d_armor_sfinv: Mod loaded but unused."))
0 # textdomain: 3d_armor_sfinv
1
2
3 ### init.lua ###
4
5 3d_armor_sfinv: Mod loaded but unused.=3d_armor_sfinv : Mod cargado pero no activado.
6 Armor=Armadura
0 # textdomain: 3d_armor_sfinv
1
2
3 ### init.lua ###
4
5 3d_armor_sfinv: Mod loaded but unused.=3d_armor_sfinv : Mod chargé mais inutilisé.
6 Armor=Armure
0 # textdomain: 3d_armor_sfinv
1
2
3 ### init.lua ###
4
5 3d_armor_sfinv: Mod loaded but unused.=
6 Armor=
00 -- support for i18n
1 local S = armor_i18n.gettext
1 local S = minetest.get_translator(minetest.get_current_modname())
22
33 local armor_stand_formspec = "size[8,7]" ..
44 default.gui_bg ..
152152 drawtype = "mesh",
153153 mesh = "3d_armor_stand.obj",
154154 tiles = {"3d_armor_stand.png"},
155 use_texture_alpha = "clip",
155156 paramtype = "light",
156157 paramtype2 = "facedir",
157158 walkable = false,
220221 drawtype = "mesh",
221222 mesh = "3d_armor_stand.obj",
222223 tiles = {"3d_armor_stand_locked.png"},
224 use_texture_alpha = "clip",
223225 paramtype = "light",
224226 paramtype2 = "facedir",
225227 walkable = false,
0 # textdomain: 3d_armor_stand
1
2
3 ### init.lua ###
4
5 Armor Stand=Support d'armure
6 Armor Stand (owned by @1)=Support d'armure (propriété de @1)
7 Armor stand=Support d'armure
8 Armor stand top=Haut de support d'armure
9 Locked Armor stand=Support d'armure verrouillé
0 # textdomain: 3d_armor_stand
1
2
3 ### init.lua ###
4
5 Armor Stand=
6 Armor Stand (owned by @1)=
7 Armor stand=
8 Armor stand top=
9 Locked Armor stand=
00 -- support for i18n
1 local S = armor_i18n.gettext
1 local S = minetest.get_translator(minetest.get_current_modname())
22 local F = minetest.formspec_escape
33 local has_technic = minetest.get_modpath("technic") ~= nil
44
55 if not minetest.global_exists("unified_inventory") then
6 minetest.log("warning", S("3d_armor_ui: Mod loaded but unused."))
6 minetest.log("warning", "3d_armor_ui: Mod loaded but unused.")
77 return
88 end
99
10 if unified_inventory.sfinv_compat_layer then
10 local ui = unified_inventory
11 if ui.sfinv_compat_layer then
1112 return
1213 end
1314
2627
2728 unified_inventory.register_page("armor", {
2829 get_formspec = function(player, perplayer_formspec)
29 local fy = perplayer_formspec.formspec_y
30 local fy = perplayer_formspec.form_header_y + 0.5
31 local gridx = perplayer_formspec.std_inv_x
32 local gridy = 0.6
33
3034 local name = player:get_player_name()
3135 if armor.def[name].init_time == 0 then
3236 return {formspec="label[0,0;"..F(S("Armor not initialized!")).."]"}
3337 end
34 local formspec = "background[0.06,"..fy..";7.92,7.52;3d_armor_ui_form.png]"..
35 "label[0,0;"..F(S("Armor")).."]"..
36 "list[detached:"..name.."_armor;armor;0,"..fy..";2,3;]"..
37 "image[2.5,"..(fy - 0.25)..";2,4;"..armor.textures[name].preview.."]"..
38 "label[5.0,"..(fy + 0.0)..";"..F(S("Level"))..": "..armor.def[name].level.."]"..
39 "label[5.0,"..(fy + 0.5)..";"..F(S("Heal"))..": "..armor.def[name].heal.."]"..
38 local formspec = perplayer_formspec.standard_inv_bg..
39 perplayer_formspec.standard_inv..
40 ui.make_inv_img_grid(gridx, gridy, 2, 3)..
41 string.format("label[%f,%f;%s]",
42 perplayer_formspec.form_header_x, perplayer_formspec.form_header_y, F(S("Armor")))..
43 string.format("list[detached:%s_armor;armor;%f,%f;2,3;]",
44 name, gridx + ui.list_img_offset, gridy + ui.list_img_offset) ..
45 "image[3.5,"..(fy - 0.25)..";2,4;"..armor.textures[name].preview.."]"..
46 "label[6.0,"..(fy + 0.0)..";"..F(S("Level"))..": "..armor.def[name].level.."]"..
47 "label[6.0,"..(fy + 0.5)..";"..F(S("Heal"))..": "..armor.def[name].heal.."]"..
4048 "listring[current_player;main]"..
4149 "listring[detached:"..name.."_armor;armor]"
4250 if armor.config.fire_protect then
43 formspec = formspec.."label[5.0,"..(fy + 1.0)..";"..
51 formspec = formspec.."label[6.0,"..(fy + 1.0)..";"..
4452 F(S("Fire"))..": "..armor.def[name].fire.."]"
4553 end
4654 if has_technic then
47 formspec = formspec.."label[5.0,"..(fy + 1.5)..";"..
55 formspec = formspec.."label[6.0,"..(fy + 1.5)..";"..
4856 F(S("Radiation"))..": "..armor.def[name].groups["radiation"].."]"
4957 end
5058 return {formspec=formspec}
0 # textdomain: 3d_armor_ui
1
2
3 ### init.lua ###
4
5 3d Armor=Armure 3d
6 Armor=Armure
7 Armor not initialized!=Armure non initialisée !
8 Fire=Feu
9 Heal=Soins
10 Level=Niveau
11 Radiation=Radiation
0 # textdomain: 3d_armor_ui
1
2
3 ### init.lua ###
4
5 3d Armor=
6 Armor=
7 Armor not initialized!=
8 Fire=
9 Heal=
10 Level=
11 Radiation=
11 depends = 3d_armor
22 optional_depends = unified_inventory
33 description = Adds 3d_armor page to the unified inventory.
4 min_minetest_version = 5.4.0
00 Modpack - 3d Armor [0.4.13]
11 ===========================
2 ![3d_armor screenshot](https://github.com/minetest-mods/3d_armor/blob/master/screenshot.png)
3
24
35 ![](https://github.com/minetest-mods/3d_armor/workflows/luacheck/badge.svg)
46 ![](https://github.com/minetest-mods/3d_armor/workflows/integration-test/badge.svg)
4850
4951 For mod installation instructions, please visit: http://wiki.minetest.com/wiki/Installing_Mods
5052
53 [API Reference](https://minetest-mods.github.io/3d_armor/reference/)
54
5155 [mod] Visible Wielded Items [wieldview]
5256 ---------------------------------------
5357
0 name = minetest-3d_armor
10 description = Visible player armor & wielded items.
Binary diff not shown
Binary diff not shown
0
10 [3d_armor]
21
32 armor_material_wood (Enable wood armor) bool true
3736 # eg: armor_heal_multiplier = 0 will disable healing altogether.
3837 armor_heal_multiplier (Armor healing multiplier) float 1
3938
39 # Armor set item names, remove or add items to include them or remove them from whats considered an Armor set.
40 armor_set_elements (Armor set items) string head torso legs feet shield
41
42 # Bonus multiplier when wearing armor set, set to the same as armor_level_multiplier to disable
43 armor_set_multiplier (Armor Set Bonus multiplier) float 1.1
44
4045 # Enable water protection (periodically restores breath when activated).
4146 armor_water_protect (Enable water protection) bool true
4247
4348 # Enable fire protection (defaults true if using ethereal mod).
4449 armor_fire_protect (Enable fire protection) bool false
4550
51 # Enable fire damage from torches (defaults true if using ethereal mod).
52 armor_fire_protect_torch (Enable fire protection torch damage) bool false
53
4654 # Enable punch damage effects.
4755 armor_punch_damage (Enable damage effects) bool true
4856
4957 # Enable migration of old armor inventories.
5058 armor_migrate_old_inventory (Migrate old armor inventories) bool true
59
60 # Armor is not visible on player model when enabled.
61 armor_transparent (Transparent armor) bool false
5162
5263
5364 [shields]
0
1 --- 3D Armor Shields
2 --
3 -- @topic shields
4
5
06 -- support for i18n
1 local S = armor_i18n.gettext
7 local S = minetest.get_translator(minetest.get_current_modname())
28
39 local disable_sounds = minetest.settings:get_bool("shields_disable_sounds")
410 local function play_sound_effect(player, name)
1622
1723 if minetest.global_exists("armor") and armor.elements then
1824 table.insert(armor.elements, "shield")
19 local mult = armor.config.level_multiplier or 1
20 armor.config.level_multiplier = mult * 0.9
2125 end
2226
2327 -- Regisiter Shields
2428
29 --- Admin Shield
30 --
31 -- @shield shields:shield_admin
32 -- @img shields_inv_shield_admin.png
33 -- @grp armor_shield 1000
34 -- @grp armor_heal 100
35 -- @grp armor_use 0
36 -- @grp not_int_creative_inventory 1
2537 armor:register_armor("shields:shield_admin", {
2638 description = S("Admin Shield"),
2739 inventory_image = "shields_inv_shield_admin.png",
3042
3143 minetest.register_alias("adminshield", "shields:shield_admin")
3244
45
3346 if armor.materials.wood then
47 --- Wood Shield
48 --
49 -- @shield shields:shield_wood
50 -- @img shields_inv_shield_wood.png
51 -- @grp armor_shield 1
52 -- @grp armor_heal 0
53 -- @grp armor_use 2000
54 -- @grp flammable 1
55 -- @armorgrp fleshy 5
56 -- @damagegrp cracky 3
57 -- @damagegrp snappy 2
58 -- @damagegrp choppy 3
59 -- @damagegrp crumbly 2
60 -- @damagegrp level 1
3461 armor:register_armor("shields:shield_wood", {
3562 description = S("Wooden Shield"),
3663 inventory_image = "shields_inv_shield_wood.png",
4572 play_sound_effect(player, "default_wood_footstep")
4673 end,
4774 })
75 --- Enhanced Wood Shield
76 --
77 -- @shield shields:shield_enhanced_wood
78 -- @img shields_inv_shield_enhanced_wood.png
79 -- @grp armor_shield 1
80 -- @grp armor_heal 0
81 -- @grp armor_use 2000
82 -- @armorgrp fleshy 8
83 -- @damagegrp cracky 3
84 -- @damagegrp snappy 2
85 -- @damagegrp choppy 3
86 -- @damagegrp crumbly 2
87 -- @damagegrp level 2
4888 armor:register_armor("shields:shield_enhanced_wood", {
4989 description = S("Enhanced Wood Shield"),
5090 inventory_image = "shields_inv_shield_enhanced_wood.png",
75115 end
76116
77117 if armor.materials.cactus then
118 --- Cactus Shield
119 --
120 -- @shield shields:shield_cactus
121 -- @img shields_inv_shield_cactus.png
122 -- @grp armor_shield 1
123 -- @grp armor_heal 0
124 -- @grp armor_use 1000
125 -- @armorgrp fleshy 5
126 -- @damagegrp cracky 3
127 -- @damagegrp snappy 3
128 -- @damagegrp choppy 2
129 -- @damagegrp crumbly 2
130 -- @damagegrp level 1
78131 armor:register_armor("shields:shield_cactus", {
79132 description = S("Cactus Shield"),
80133 inventory_image = "shields_inv_shield_cactus.png",
89142 play_sound_effect(player, "default_wood_footstep")
90143 end,
91144 })
145 --- Enhanced Cactus Shield
146 --
147 -- @shield shields:shield_enhanced_cactus
148 -- @img shields_inv_shield_enhanced_cactus.png
149 -- @grp armor_shield 1
150 -- @grp armor_heal 0
151 -- @grp armor_use 1000
152 -- @armorgrp fleshy 8
153 -- @damagegrp cracky 3
154 -- @damagegrp snappy 3
155 -- @damagegrp choppy 2
156 -- @damagegrp crumbly 2
157 -- @damagegrp level 2
92158 armor:register_armor("shields:shield_enhanced_cactus", {
93159 description = S("Enhanced Cactus Shield"),
94160 inventory_image = "shields_inv_shield_enhanced_cactus.png",
119185 end
120186
121187 if armor.materials.steel then
188 --- Steel Shield
189 --
190 -- @shield shields:shield_steel
191 -- @img shields_inv_shield_steel.png
192 -- @grp armor_shield 1
193 -- @grp armor_heal 0
194 -- @grp armor_use 800
195 -- @grp physics_speed -0.03
196 -- @grp physics_gravity 0.03
197 -- @armorgrp fleshy 10
198 -- @damagegrp cracky 2
199 -- @damagegrp snappy 3
200 -- @damagegrp choppy 2
201 -- @damagegrp crumbly 1
202 -- @damagegrp level 2
122203 armor:register_armor("shields:shield_steel", {
123204 description = S("Steel Shield"),
124205 inventory_image = "shields_inv_shield_steel.png",
137218 end
138219
139220 if armor.materials.bronze then
221 --- Bronze Shield
222 --
223 -- @shield shields:shield_bronze
224 -- @img shields_inv_shield_bronze.png
225 -- @grp armor_shield 1
226 -- @grp armor_heal 6
227 -- @grp armor_use 400
228 -- @grp physics_speed -0.03
229 -- @grp physics_gravity 0.03
230 -- @armorgrp fleshy 10
231 -- @damagegrp cracky 2
232 -- @damagegrp snappy 3
233 -- @damagegrp choppy 2
234 -- @damagegrp crumbly 1
235 -- @damagegrp level 2
140236 armor:register_armor("shields:shield_bronze", {
141237 description = S("Bronze Shield"),
142238 inventory_image = "shields_inv_shield_bronze.png",
155251 end
156252
157253 if armor.materials.diamond then
254 --- Diamond Shield
255 --
256 -- @shield shields:shield_diamond
257 -- @img shields_inv_shield_diamond.png
258 -- @grp armor_shield 1
259 -- @grp armor_heal 12
260 -- @grp armor_use 200
261 -- @armorgrp fleshy 15
262 -- @damagegrp cracky 2
263 -- @damagegrp snappy 1
264 -- @damagegrp choppy 1
265 -- @damagegrp level 3
158266 armor:register_armor("shields:shield_diamond", {
159267 description = S("Diamond Shield"),
160268 inventory_image = "shields_inv_shield_diamond.png",
172280 end
173281
174282 if armor.materials.gold then
283 --- Gold Shield
284 --
285 -- @shield shields:shield_gold
286 -- @img shields_inv_shield_gold.png
287 -- @grp armor_shield 1
288 -- @grp armor_heal 6
289 -- @grp armor_use 300
290 -- @grp physics_speed -0.04
291 -- @grp physics_gravity 0.04
292 -- @armorgrp fleshy 10
293 -- @damagegrp cracky 1
294 -- @damagegrp snappy 2
295 -- @damagegrp choppy 2
296 -- @damagegrp crumbly 3
297 -- @damagegrp level 2
175298 armor:register_armor("shields:shield_gold", {
176299 description = S("Gold Shield"),
177300 inventory_image = "shields_inv_shield_gold.png",
190313 end
191314
192315 if armor.materials.mithril then
316 --- Mithril Shield
317 --
318 -- @shield shields:shield_mithril
319 -- @img shields_inv_shield_mithril.png
320 -- @grp armor_shield 1
321 -- @grp armor_heal 12
322 -- @grp armor_use 100
323 -- @armorgrp fleshy 15
324 -- @damagegrp cracky 2
325 -- @damagegrp snappy 1
326 -- @damagegrp level 3
193327 armor:register_armor("shields:shield_mithril", {
194328 description = S("Mithril Shield"),
195329 inventory_image = "shields_inv_shield_mithril.png",
207341 end
208342
209343 if armor.materials.crystal then
344 --- Crystal Shield
345 --
346 -- @shield shields:shield_crystal
347 -- @img shields_inv_shield_crystal.png
348 -- @grp armor_shield 1
349 -- @grp armor_heal 12
350 -- @grp armor_use 100
351 -- @grp armor_fire 1
352 -- @armorgrp fleshy 15
353 -- @damagegrp cracky 2
354 -- @damagegrp snappy 1
355 -- @damagegrp level 3
210356 armor:register_armor("shields:shield_crystal", {
211357 description = S("Crystal Shield"),
212358 inventory_image = "shields_inv_shield_crystal.png",
0 # textdomain: shields
1
2
3 ### init.lua ###
4
5 Admin Shield=Bouclier d'admin
6 Bronze Shield=Bouclier en bronze
7 Cactus Shield=Bouclier en cactus
8 Crystal Shield=Bouclier en cristal
9 Diamond Shield=Bouclier en diamant
10 Enhanced Cactus Shield=Bouclier en cactus amélioré
11 Enhanced Wood Shield=Bouclier en bois amélioré
12 Gold Shield=Bouclier en or
13 Mithril Shield=Bouclier en mithril
14 Steel Shield=Bouclier en acier
15 Wooden Shield=Bouclier en bois
0 # textdomain: shields
1
2
3 ### init.lua ###
4
5 Admin Shield=
6 Bronze Shield=
7 Cactus Shield=
8 Crystal Shield=
9 Diamond Shield=
10 Enhanced Cactus Shield=
11 Enhanced Wood Shield=
12 Gold Shield=
13 Mithril Shield=
14 Steel Shield=
15 Wooden Shield=
2020 hand, add the group “wieldview_transform” to the item definition. The group
2121 rating equals one of the numbers used for the [transform texture modifier
2222 of the Lua API.
23
24 Disabling the feature in-game: If you want to hide the wielded item
25 you can add an INT metadata to the player called "show_wielded_item" and set
26 it to 2 (any other value will show the wielded item again).
5353 return
5454 end
5555 if self.wielded_item[name] then
56 if player:get_meta():get_int("show_wielded_item") == 2 then
57 item = ""
58 end
5659 if self.wielded_item[name] == item then
5760 return
5861 end
6568 minetest.register_on_joinplayer(function(player)
6669 local name = player:get_player_name()
6770 wieldview.wielded_item[name] = ""
68 minetest.after(0, function()
69 local pplayer = minetest.get_player_by_name(name)
70 if player then
71 minetest.after(0, function(pname)
72 local pplayer = minetest.get_player_by_name(pname)
73 if pplayer then
7174 wieldview:update_wielded_item(pplayer)
7275 end
73 end)
76 end, name)
7477 end)
7578
7679 minetest.register_globalstep(function(dtime)