<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.teriock.com/index.php?action=history&amp;feed=atom&amp;title=Module%3AFoundry</id>
	<title>Module:Foundry - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.teriock.com/index.php?action=history&amp;feed=atom&amp;title=Module%3AFoundry"/>
	<link rel="alternate" type="text/html" href="https://wiki.teriock.com/index.php?title=Module:Foundry&amp;action=history"/>
	<updated>2026-05-11T02:47:46Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.teriock.com/index.php?title=Module:Foundry&amp;diff=8930&amp;oldid=prev</id>
		<title>Gpe: // via Wikitext Extension for VSCode</title>
		<link rel="alternate" type="text/html" href="https://wiki.teriock.com/index.php?title=Module:Foundry&amp;diff=8930&amp;oldid=prev"/>
		<updated>2025-06-23T00:25:43Z</updated>

		<summary type="html">&lt;p&gt;// via Wikitext Extension for VSCode&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.data(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local data = {&lt;br /&gt;
        base = {},&lt;br /&gt;
        proficient = {},&lt;br /&gt;
        fluent = {}&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    -- Parse base consequences&lt;br /&gt;
    for key, value in pairs(args) do&lt;br /&gt;
        local parts = {}&lt;br /&gt;
        for part in key:gmatch(&amp;quot;[^_]+&amp;quot;) do&lt;br /&gt;
            table.insert(parts, part)&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
        if #parts &amp;gt;= 3 then&lt;br /&gt;
            local level = parts[1] -- base, proficient, fluent&lt;br /&gt;
            local target = parts[2] -- hit, miss, etc.&lt;br /&gt;
            local property = table.concat(parts, &amp;quot;_&amp;quot;, 3) -- damage, crit_double, etc.&lt;br /&gt;
            &lt;br /&gt;
            if not data[level][target] then&lt;br /&gt;
                data[level][target] = createEmptyConsequence()&lt;br /&gt;
            end&lt;br /&gt;
            &lt;br /&gt;
            setConsequenceProperty(data[level][target], property, value)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local json = mw.text.jsonEncode(data)&lt;br /&gt;
    return &amp;quot;&amp;lt;!-- FOUNDRY_DATA_START\n&amp;quot; .. json .. &amp;quot;\nFOUNDRY_DATA_END --&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function createEmptyConsequence()&lt;br /&gt;
    return {&lt;br /&gt;
        default = {&lt;br /&gt;
            instant = { rolls = {}, hacks = {} },&lt;br /&gt;
            ongoing = {&lt;br /&gt;
                statuses = {},&lt;br /&gt;
                changes = {},&lt;br /&gt;
                duration = nil,&lt;br /&gt;
                expirations = {&lt;br /&gt;
                    turn = { who = &amp;quot;target&amp;quot;, when = &amp;quot;end&amp;quot;, how = &amp;quot;auto&amp;quot; },&lt;br /&gt;
                    movement = false,&lt;br /&gt;
                    dawn = false,&lt;br /&gt;
                    sustained = false&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        crit = {&lt;br /&gt;
            overrides = {},&lt;br /&gt;
            mutations = { double = false }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function setConsequenceProperty(consequence, property, value)&lt;br /&gt;
    if property == &amp;quot;damage&amp;quot; then&lt;br /&gt;
        consequence.default.instant.rolls.damage = {value}&lt;br /&gt;
    elseif property == &amp;quot;crit_double&amp;quot; then&lt;br /&gt;
        consequence.crit.mutations.double = (value == &amp;quot;true&amp;quot;)&lt;br /&gt;
    elseif property == &amp;quot;heightened_damage&amp;quot; then&lt;br /&gt;
        if not consequence.heightened then&lt;br /&gt;
            consequence.heightened = {&lt;br /&gt;
                overrides = {},&lt;br /&gt;
                scaling = { rolls = {}, duration = { value = 0, rounding = 1 } }&lt;br /&gt;
            }&lt;br /&gt;
        end&lt;br /&gt;
        consequence.heightened.scaling.rolls.damage = {value}&lt;br /&gt;
    end&lt;br /&gt;
    -- Add more property mappings as needed&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Gpe</name></author>
	</entry>
</feed>