{"description":"Welcome to the best place to find Luanti mods, games, and texture packs","expired":false,"feed_url":"https://content.luanti.ru/packages/giov4/skills/releases_feed.json","home_page_url":"https://content.luanti.ru/","icon":"https://content.luanti.ru/favicon-128.png","items":[{"author":{"avatar":"https://content.luanti.ru/uploads/77ec1af36d.png","name":"giov4","url":"https://content.luanti.ru/users/giov4/"},"content_html":"<ul>\n<li>Added translation using Weblate (Dutch)</li>\n<li>.tr -&gt; .po</li>\n<li>fix: update min_minetest_version to 5.10</li>\n<li>refactor: enhance userdata handling in data table</li>\n</ul>\n","date_published":"2026-04-09T02:14:47Z","id":"https://content.luanti.ru/packages/giov4/skills/releases/36077/","image":"https://content.luanti.ru/thumbnails/4/8265e57645.png","language":"en","summary":"2.1.1","tags":["release"],"title":"\"Skills & States API\" updated: 2.1.1","url":"https://content.luanti.ru/packages/giov4/skills/releases/36077/"},{"author":{"avatar":"https://content.luanti.ru/uploads/77ec1af36d.png","name":"giov4","url":"https://content.luanti.ru/users/giov4/"},"content_html":"<ul>\n<li>Fixed some typos in DOCS</li>\n<li>Improved docs for for_each_player_in_db()</li>\n<li>Translated using Weblate</li>\n<li>Automatic  testing CI and some fixes along the way</li>\n<li>Improved expiring entities handling: it was conflicting with mods like mtobjid</li>\n<li>docs: add README for Docker test harness setup and usage</li>\n<li>docs: add __last_start_timestamp parameter to skill function documentation</li>\n<li>add is_running method to skill metatable</li>\n<li>fix: prevent duplicate layer application in register_skill function</li>\n<li>Bring the types in!</li>\n<li>\n<ul>\n<li>new field: loop_params.extend_duration_on_restart</li>\n</ul>\n</li>\n<li>...I forgot DOCS</li>\n<li>refactor: enhance type definitions with DynamicValue support in LoopParams and SoundSpec</li>\n<li>CRASHFIX: dynamic values in physics were crashing when iterating the dynamic table + better dynamic varargs handling</li>\n</ul>\n","date_published":"2026-01-19T02:15:07Z","id":"https://content.luanti.ru/packages/giov4/skills/releases/34574/","image":"https://content.luanti.ru/thumbnails/4/8265e57645.png","language":"en","summary":"2.1.0","tags":["release"],"title":"\"Skills & States API\" updated: 2.1.0","url":"https://content.luanti.ru/packages/giov4/skills/releases/34574/"},{"author":{"avatar":"https://content.luanti.ru/uploads/77ec1af36d.png","name":"giov4","url":"https://content.luanti.ru/users/giov4/"},"content_html":"<ul>\n<li>Fix typo in documentation regarding custom user-defined parameters naming convention</li>\n<li>Added some logs and fixed dynamic properties metatable overriding skills original metatable</li>\n<li>Removing states from DB in case they got saved from previous versions of mods</li>\n<li>Oops, last commit didn't work</li>\n</ul>\n","date_published":"2025-09-29T02:15:35Z","id":"https://content.luanti.ru/packages/giov4/skills/releases/32942/","image":"https://content.luanti.ru/thumbnails/4/8265e57645.png","language":"en","summary":"2.0.1","tags":["release"],"title":"\"Skills & States API\" updated: 2.0.1","url":"https://content.luanti.ru/packages/giov4/skills/releases/32942/"},{"author":{"avatar":"https://content.luanti.ru/uploads/77ec1af36d.png","name":"giov4","url":"https://content.luanti.ru/users/giov4/"},"content_html":"<p><a href='https://content.luanti.ru/packages/giov4/skills/releases/32230/'>Read more</a></p>","date_published":"2025-08-03T02:12:40Z","id":"https://content.luanti.ru/packages/giov4/skills/releases/32230/","image":"https://content.luanti.ru/thumbnails/4/8265e57645.png","language":"en","summary":"2.0","tags":["release"],"title":"\"Skills & States API\" updated: 2.0","url":"https://content.luanti.ru/packages/giov4/skills/releases/32230/"},{"author":{"avatar":"https://content.luanti.ru/uploads/77ec1af36d.png","name":"giov4","url":"https://content.luanti.ru/users/giov4/"},"content_html":"<p><strong>Changelog</strong></p>\n<ul>\n<li>BUGFIX: avoid removing skills of unloaded mods from db</li>\n<li>Dynamic values can now be used everywhere in the skill definition, allowing a greater flexibility</li>\n<li>Added <strong>states</strong>: temporary players alterations that are defined just like skills but are not persistent and don't require unlocking</li>\n<li>A more rigorous testing suite that led to more bug fixes</li>\n</ul>\n<p><strong>BREAKING CHANGES</strong></p>\n<ul>\n<li>all previous internal params that started with a single underscore now start with two of them</li>\n<li><code>blocks_other_skills</code> is now a table and <code>can_be_blocked_by_other_skills</code> has been removed in favor of a more flexible system</li>\n</ul>\n","date_published":"2025-08-02T14:50:03Z","id":"https://content.luanti.ru/packages/giov4/skills/releases/32224/","image":"https://content.luanti.ru/thumbnails/4/8265e57645.png","language":"en","summary":"2.0 - States!","tags":["release"],"title":"\"Skills & States API\" updated: 2.0 - States!","url":"https://content.luanti.ru/packages/giov4/skills/releases/32224/"},{"author":{"avatar":"https://content.luanti.ru/uploads/77ec1af36d.png","name":"giov4","url":"https://content.luanti.ru/users/giov4/"},"content_html":"<ul>\n<li>small refactoring</li>\n<li>Refactored core.lua (closes #28)</li>\n<li>I don't know why and how and when skills.register_on_unlock disappeared from the code...</li>\n<li>Formatted files with Lua language server formatter (and attached a config for it)</li>\n<li>Added base_layers (closes #25)</li>\n<li>nil checks on join def</li>\n<li>fixed crash in register_skill_based_on</li>\n<li>Added monoids support</li>\n<li>minetest.(...) -&gt; core.(...)</li>\n<li>set min version to Luanti 5.3</li>\n<li>Translated using Weblate (French)</li>\n<li>Fixed missing params from DOCS (closes #29)</li>\n<li>README: Minetest -&gt; Luanti</li>\n<li>Added newline in cmd description</li>\n<li>DOCS: Minetest -&gt; Luanti</li>\n<li>added get_active_skills, and a bunch of tests that lead to some bug fixes (e.g. monoids ref was actually not rightly referred to, get_unlocked_skills was returning the definitions instead of the instances, stop_on_death missing default)</li>\n<li>Formatted tests.lua</li>\n<li>Improved DOCS and renamed entities remove callback to on_remove</li>\n<li>added can_start function</li>\n<li>specified on_stop takes self as first argument</li>\n<li>removed redundant can_start check in skills.cast function</li>\n<li>corrected particles storage reference in DOCS</li>\n<li>added skill.__dtime and fixed can_start not applying to non-looped skills regression</li>\n<li>Clarified dtime goal</li>\n<li>possibility to use branches in monoids (closes #27)</li>\n<li>Refactor resolve_monoid_ref function to use assertions for error handling</li>\n<li>Translated using Weblate</li>\n<li>CRASHFIX: avoid initializiation of monoids field in register</li>\n<li>better handling of monoids assertion</li>\n</ul>\n","date_published":"2025-06-09T02:12:38Z","id":"https://content.luanti.ru/packages/giov4/skills/releases/31544/","image":"https://content.luanti.ru/thumbnails/4/8265e57645.png","language":"en","summary":"1.6.0","tags":["release"],"title":"\"Skills & States API\" updated: 1.6.0","url":"https://content.luanti.ru/packages/giov4/skills/releases/31544/"},{"author":{"avatar":"https://content.luanti.ru/uploads/77ec1af36d.png","name":"giov4","url":"https://content.luanti.ru/users/giov4/"},"content_html":"<ul>\n<li>fixed undeclared global (closes #24)</li>\n</ul>\n","date_published":"2025-01-25T02:14:51Z","id":"https://content.luanti.ru/packages/giov4/skills/releases/29477/","image":"https://content.luanti.ru/thumbnails/4/8265e57645.png","language":"en","summary":"1.5.1","tags":["release"],"title":"\"Skills & States API\" updated: 1.5.1","url":"https://content.luanti.ru/packages/giov4/skills/releases/29477/"},{"author":{"avatar":"https://content.luanti.ru/uploads/77ec1af36d.png","name":"giov4","url":"https://content.luanti.ru/users/giov4/"},"content_html":"<ul>\n<li>Implemented non-attached expiring entities</li>\n<li>Fixed crash when sound &quot;object&quot; property was set false</li>\n<li>Separated README from DOCS, and improved the latter</li>\n<li>Added link to dev docs in the readme</li>\n<li>Fixed spacing in the DOCS</li>\n<li>DOCS: indexed examples section and un-inlined two functions</li>\n<li>chatcmdbuilder is now an external dependency</li>\n<li>Documented &quot;celestial_vault&quot; property, that was missing for some reason</li>\n<li>Dynamic properties</li>\n<li>Fixed dynamic property example spacing in DOCS</li>\n<li>Section 2 was missing from DOCS</li>\n<li>some refactoring</li>\n<li>removed chatcmdbuilder dofile</li>\n<li>Added mod logging</li>\n</ul>\n","date_published":"2024-12-05T02:12:30Z","id":"https://content.luanti.ru/packages/giov4/skills/releases/28754/","image":"https://content.luanti.ru/thumbnails/4/8265e57645.png","language":"en","summary":"1.5.0","tags":["release"],"title":"\"Skills & States API\" updated: 1.5.0","url":"https://content.luanti.ru/packages/giov4/skills/releases/28754/"},{"author":{"avatar":"https://content.luanti.ru/uploads/77ec1af36d.png","name":"giov4","url":"https://content.luanti.ru/users/giov4/"},"content_html":"<ul>\n<li>Added a skill creation guidelines section to the readme</li>\n<li>avoid initializing passive and cooldown in the def, or they will always be overwritten in skills bottom layers</li>\n<li>Introducing layers + now returning false in cast() will automatically stop a looped skill</li>\n<li>Added layered skills visual representation</li>\n<li>Updated layered skill example</li>\n<li>Specify that all functions will be merged in layered skills</li>\n<li>Improved documentation and updated links</li>\n<li>BUGFIX: particles, huds and sounds weren't removed if a skill returning false in the on_start was called two times in the same step</li>\n<li>Update LICENSE to AGPL instead of GPL</li>\n<li>Properly translate mod using Minetest util script</li>\n<li>Implemented can_cast (closes #21)</li>\n<li>Added stop_on_death parameter</li>\n<li>Added data._stop_job</li>\n<li>Smarter builtin data handling and more async-proof cast system</li>\n<li>oops, removed logs</li>\n<li>stop_on_death wasn't settable to false, and can_cast was breaking looped skills</li>\n<li>Avoid casting when is_stopping is true</li>\n</ul>\n","date_published":"2024-08-01T02:12:59Z","id":"https://content.luanti.ru/packages/giov4/skills/releases/26307/","image":"https://content.luanti.ru/thumbnails/4/8265e57645.png","language":"en","summary":"1.4.0","tags":["release"],"title":"\"Skills & States API\" updated: 1.4.0","url":"https://content.luanti.ru/packages/giov4/skills/releases/26307/"},{"author":{"avatar":"https://content.luanti.ru/uploads/77ec1af36d.png","name":"giov4","url":"https://content.luanti.ru/users/giov4/"},"content_html":"<p><a href='https://content.luanti.ru/packages/giov4/skills/releases/24514/'>Read more</a></p>","date_published":"2024-04-03T02:13:00Z","id":"https://content.luanti.ru/packages/giov4/skills/releases/24514/","image":"https://content.luanti.ru/thumbnails/4/8265e57645.png","language":"en","summary":"1.3.2","tags":["release"],"title":"\"Skills & States API\" updated: 1.3.2","url":"https://content.luanti.ru/packages/giov4/skills/releases/24514/"},{"author":{"avatar":"https://content.luanti.ru/uploads/77ec1af36d.png","name":"giov4","url":"https://content.luanti.ru/users/giov4/"},"content_html":"<p><a href='https://content.luanti.ru/packages/giov4/skills/releases/24272/'>Read more</a></p>","date_published":"2024-03-21T02:13:05Z","id":"https://content.luanti.ru/packages/giov4/skills/releases/24272/","image":"https://content.luanti.ru/thumbnails/4/8265e57645.png","language":"en","summary":"1.3.1","tags":["release"],"title":"\"Skills & States API\" updated: 1.3.1","url":"https://content.luanti.ru/packages/giov4/skills/releases/24272/"},{"author":{"avatar":"https://content.luanti.ru/uploads/77ec1af36d.png","name":"giov4","url":"https://content.luanti.ru/users/giov4/"},"content_html":"<p><a href='https://content.luanti.ru/packages/giov4/skills/releases/22306/'>Read more</a></p>","date_published":"2023-12-12T02:19:58Z","id":"https://content.luanti.ru/packages/giov4/skills/releases/22306/","image":"https://content.luanti.ru/thumbnails/4/8265e57645.png","language":"en","summary":"1.3","tags":["release"],"title":"\"Skills & States API\" updated: 1.3","url":"https://content.luanti.ru/packages/giov4/skills/releases/22306/"},{"author":{"avatar":"https://content.luanti.ru/uploads/77ec1af36d.png","name":"giov4","url":"https://content.luanti.ru/users/giov4/"},"content_html":"<p><a href='https://content.luanti.ru/packages/giov4/skills/releases/22224/'>Read more</a></p>","date_published":"2023-12-08T02:15:34Z","id":"https://content.luanti.ru/packages/giov4/skills/releases/22224/","image":"https://content.luanti.ru/thumbnails/4/8265e57645.png","language":"en","summary":"1.2","tags":["release"],"title":"\"Skills & States API\" updated: 1.2","url":"https://content.luanti.ru/packages/giov4/skills/releases/22224/"},{"author":{"avatar":"https://content.luanti.ru/uploads/77ec1af36d.png","name":"giov4","url":"https://content.luanti.ru/users/giov4/"},"content_html":"<p><a href='https://content.luanti.ru/packages/giov4/skills/releases/21771/'>Read more</a></p>","date_published":"2023-11-15T02:12:50Z","id":"https://content.luanti.ru/packages/giov4/skills/releases/21771/","image":"https://content.luanti.ru/thumbnails/4/8265e57645.png","language":"en","summary":"1.1","tags":["release"],"title":"\"Skills & States API\" updated: 1.1","url":"https://content.luanti.ru/packages/giov4/skills/releases/21771/"},{"author":{"avatar":"https://content.luanti.ru/uploads/77ec1af36d.png","name":"giov4","url":"https://content.luanti.ru/users/giov4/"},"content_html":"<p><a href='https://content.luanti.ru/packages/giov4/skills/releases/20142/'>Read more</a></p>","date_published":"2023-08-08T02:16:31Z","id":"https://content.luanti.ru/packages/giov4/skills/releases/20142/","image":"https://content.luanti.ru/thumbnails/4/8265e57645.png","language":"en","summary":"1.0.1","tags":["release"],"title":"\"Skills & States API\" updated: 1.0.1","url":"https://content.luanti.ru/packages/giov4/skills/releases/20142/"},{"author":{"avatar":"https://content.luanti.ru/uploads/77ec1af36d.png","name":"giov4","url":"https://content.luanti.ru/users/giov4/"},"content_html":"<p><a href='https://content.luanti.ru/packages/giov4/skills/releases/17305/'>Read more</a></p>","date_published":"2023-03-01T02:15:36Z","id":"https://content.luanti.ru/packages/giov4/skills/releases/17305/","image":"https://content.luanti.ru/thumbnails/4/8265e57645.png","language":"en","summary":"1.0","tags":["release"],"title":"\"Skills & States API\" updated: 1.0","url":"https://content.luanti.ru/packages/giov4/skills/releases/17305/"},{"author":{"avatar":"https://content.luanti.ru/uploads/77ec1af36d.png","name":"giov4","url":"https://content.luanti.ru/users/giov4/"},"content_html":"<p><a href='https://content.luanti.ru/packages/giov4/skills/releases/16290/'>Read more</a></p>","date_published":"2023-01-02T02:16:20Z","id":"https://content.luanti.ru/packages/giov4/skills/releases/16290/","image":"https://content.luanti.ru/thumbnails/4/8265e57645.png","language":"en","summary":"0.3.0","tags":["release"],"title":"\"Skills & States API\" updated: 0.3.0","url":"https://content.luanti.ru/packages/giov4/skills/releases/16290/"},{"author":{"avatar":"https://content.luanti.ru/uploads/77ec1af36d.png","name":"giov4","url":"https://content.luanti.ru/users/giov4/"},"content_html":"<p><a href='https://content.luanti.ru/packages/giov4/skills/releases/16005/'>Read more</a></p>","date_published":"2022-12-18T02:17:35Z","id":"https://content.luanti.ru/packages/giov4/skills/releases/16005/","image":"https://content.luanti.ru/thumbnails/4/8265e57645.png","language":"en","summary":"0.2.0","tags":["release"],"title":"\"Skills & States API\" updated: 0.2.0","url":"https://content.luanti.ru/packages/giov4/skills/releases/16005/"},{"author":{"avatar":"https://content.luanti.ru/uploads/77ec1af36d.png","name":"giov4","url":"https://content.luanti.ru/users/giov4/"},"content_html":"<p><a href='https://content.luanti.ru/packages/giov4/skills/releases/15271/'>Read more</a></p>","date_published":"2022-11-17T02:16:58Z","id":"https://content.luanti.ru/packages/giov4/skills/releases/15271/","image":"https://content.luanti.ru/thumbnails/4/8265e57645.png","language":"en","summary":"0.1.2","tags":["release"],"title":"\"Skills & States API\" updated: 0.1.2","url":"https://content.luanti.ru/packages/giov4/skills/releases/15271/"},{"author":{"avatar":"https://content.luanti.ru/uploads/77ec1af36d.png","name":"giov4","url":"https://content.luanti.ru/users/giov4/"},"content_html":"<p><a href='https://content.luanti.ru/packages/giov4/skills/releases/15253/'>Read more</a></p>","date_published":"2022-11-16T19:51:20Z","id":"https://content.luanti.ru/packages/giov4/skills/releases/15253/","image":"https://content.luanti.ru/thumbnails/4/8265e57645.png","language":"en","summary":"0.1.1","tags":["release"],"title":"\"Skills & States API\" updated: 0.1.1","url":"https://content.luanti.ru/packages/giov4/skills/releases/15253/"},{"author":{"avatar":"https://content.luanti.ru/uploads/77ec1af36d.png","name":"giov4","url":"https://content.luanti.ru/users/giov4/"},"content_html":"<p><a href='https://content.luanti.ru/packages/giov4/skills/releases/15181/'>Read more</a></p>","date_published":"2022-11-14T16:03:32Z","id":"https://content.luanti.ru/packages/giov4/skills/releases/15181/","image":"https://content.luanti.ru/thumbnails/4/8265e57645.png","language":"en","summary":"0.1","tags":["release"],"title":"\"Skills & States API\" updated: 0.1","url":"https://content.luanti.ru/packages/giov4/skills/releases/15181/"}],"title":"ContentDB package updates","version":"https://jsonfeed.org/version/1"}
