<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.roatpkz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ACombat_level</id>
	<title>Module:Combat level - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.roatpkz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ACombat_level"/>
	<link rel="alternate" type="text/html" href="https://wiki.roatpkz.com/index.php?title=Module:Combat_level&amp;action=history"/>
	<updated>2026-04-28T19:35:35Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.roatpkz.com/index.php?title=Module:Combat_level&amp;diff=5280&amp;oldid=prev</id>
		<title>Hefner: Created page with &quot;-- Implements Calculator:Combat level/Template  local paramTest = require(&#039;Module:Paramtest&#039;)  local p = {}  function p.calc(frame)     local args = frame:getParent().args          local stats = { &#039;attack&#039;, &#039;strength&#039;, &#039;defence&#039;, &#039;ranged&#039;, &#039;magic&#039;, &#039;hitpoints&#039;, &#039;prayer&#039; }     local lvls = {}     for i, stat in pairs(stats) do     	if i == 6 then     		lvls[i] = paramTest.default_to( tonumber(args[stat]), 10 )     	else     		lvls[i] = paramTest.default_to( tonumber(args[...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.roatpkz.com/index.php?title=Module:Combat_level&amp;diff=5280&amp;oldid=prev"/>
		<updated>2024-03-31T20:22:58Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;-- Implements Calculator:Combat level/Template  local paramTest = require(&amp;#039;Module:Paramtest&amp;#039;)  local p = {}  function p.calc(frame)     local args = frame:getParent().args          local stats = { &amp;#039;attack&amp;#039;, &amp;#039;strength&amp;#039;, &amp;#039;defence&amp;#039;, &amp;#039;ranged&amp;#039;, &amp;#039;magic&amp;#039;, &amp;#039;hitpoints&amp;#039;, &amp;#039;prayer&amp;#039; }     local lvls = {}     for i, stat in pairs(stats) do     	if i == 6 then     		lvls[i] = paramTest.default_to( tonumber(args[stat]), 10 )     	else     		lvls[i] = paramTest.default_to( tonumber(args[...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Implements Calculator:Combat level/Template&lt;br /&gt;
&lt;br /&gt;
local paramTest = require(&amp;#039;Module:Paramtest&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.calc(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local stats = { &amp;#039;attack&amp;#039;, &amp;#039;strength&amp;#039;, &amp;#039;defence&amp;#039;, &amp;#039;ranged&amp;#039;, &amp;#039;magic&amp;#039;, &amp;#039;hitpoints&amp;#039;, &amp;#039;prayer&amp;#039; }&lt;br /&gt;
    local lvls = {}&lt;br /&gt;
    for i, stat in pairs(stats) do&lt;br /&gt;
    	if i == 6 then&lt;br /&gt;
    		lvls[i] = paramTest.default_to( tonumber(args[stat]), 10 )&lt;br /&gt;
    	else&lt;br /&gt;
    		lvls[i] = paramTest.default_to( tonumber(args[stat]), 1 )&lt;br /&gt;
    	end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return p.formatlvl( p._calc( unpack( lvls ) ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatlvl ( combatLevel, combatType, required )&lt;br /&gt;
	local nextCombatLevel = combatLevel + 1&lt;br /&gt;
	local output = &amp;#039;Your combat level is &amp;lt;b&amp;gt;&amp;#039; .. combatLevel .. &amp;#039;&amp;lt;/b&amp;gt;, &amp;#039; .. combatType .. &amp;#039;-based.\n&amp;#039;&lt;br /&gt;
    output = output .. &amp;#039;\nFor level &amp;#039; .. nextCombatLevel .. &amp;#039;, you need one of:&amp;#039;&lt;br /&gt;
    if required.attackStrength then&lt;br /&gt;
        output = output .. &amp;#039;\n* &amp;#039; .. required.attackStrength .. &amp;#039; [[Attack]] or [[Strength]] levels&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    if required.hitpointsDefence then&lt;br /&gt;
        output = output .. &amp;#039;\n* &amp;#039; .. required.hitpointsDefence .. &amp;#039; [[Hitpoints]] or [[Defence]] levels&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    if required.ranged then&lt;br /&gt;
        output = output .. &amp;#039;\n* &amp;#039; .. required.ranged .. &amp;#039; [[Ranged]] levels&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    if required.magic then&lt;br /&gt;
        output = output .. &amp;#039;\n* &amp;#039; .. required.magic .. &amp;#039; [[Magic]] levels&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    if required.prayer then&lt;br /&gt;
    	output = output .. &amp;#039;\n* &amp;#039; .. required.prayer .. &amp;#039; [[Prayer]] levels&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
    return output&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._calc ( attackLevel, strengthLevel, defenceLevel, rangedLevel, magicLevel, hitpointsLevel, prayerLevel )&lt;br /&gt;
    -- Used formulae from here: https://oldschool.runescape.wiki/w/Combat_level&lt;br /&gt;
    -- to calculate player&amp;#039;s current in-game combat level&lt;br /&gt;
    local baseLevel = 0.25 * (defenceLevel + hitpointsLevel + math.floor(prayerLevel / 2))&lt;br /&gt;
    local meleeCombatLevel = 0.325 * (attackLevel + strengthLevel)&lt;br /&gt;
    local magicCombatLevel = 0.325 * (math.floor(magicLevel / 2) + magicLevel)&lt;br /&gt;
    local rangedCombatLevel = 0.325 * (math.floor(rangedLevel / 2) + rangedLevel)&lt;br /&gt;
    local combatType = math.max(meleeCombatLevel, math.max(magicCombatLevel, rangedCombatLevel))&lt;br /&gt;
    local combatLevelDouble = baseLevel + combatType&lt;br /&gt;
    local combatLevel = math.floor(combatLevelDouble)&lt;br /&gt;
    local nextCombatLevel = combatLevel + 1&lt;br /&gt;
    &lt;br /&gt;
    local required = {}&lt;br /&gt;
    &lt;br /&gt;
    -- Combat level increases with an even number of levels of prayer levels&lt;br /&gt;
    -- 8 Levels of Prayer increases combat level by 1&lt;br /&gt;
    -- Calculate the current prayer level contribution to the combat level and invert&lt;br /&gt;
    required.prayer = 2 * math.ceil(-hitpointsLevel - defenceLevel + (4 * nextCombatLevel) - (4 * combatType)) - prayerLevel&lt;br /&gt;
    &lt;br /&gt;
    -- 4 Levels of Defence+Hitpoints increases combat level by 1&lt;br /&gt;
    -- Calculate the current Hitpoints+Defence level contribution to the combat level and invert&lt;br /&gt;
    required.hitpointsDefence = math.ceil((4 * nextCombatLevel) - math.floor(prayerLevel / 2) - (4 * combatType)) - hitpointsLevel - defenceLevel&lt;br /&gt;
    &lt;br /&gt;
    -- Calculate the current Attack+Strength level contribution to the combat level and invert&lt;br /&gt;
    required.attackStrength = math.ceil(-10 / 13 * (defenceLevel + hitpointsLevel + math.floor(prayerLevel / 2) - (4 * nextCombatLevel))) - strengthLevel - attackLevel&lt;br /&gt;
    -- Calculate the current Magic level contribution to the combat level and invert&lt;br /&gt;
    required.magic = math.ceil(2 / 3 * math.ceil(-10 / 13 * (hitpointsLevel + defenceLevel - (4 * nextCombatLevel) + math.floor(prayerLevel / 2)))) - magicLevel&lt;br /&gt;
    -- Calculate the current Ranged level contribution to the combat level and invert&lt;br /&gt;
    required.ranged = math.ceil(2 / 3 * math.ceil(-10 / 13 * (hitpointsLevel + defenceLevel - (4 * nextCombatLevel) + math.floor(prayerLevel / 2)))) - rangedLevel&lt;br /&gt;
&lt;br /&gt;
    if (attackLevel + strengthLevel + required.attackStrength) &amp;gt; (99 * 2) then&lt;br /&gt;
        required.attackStrength = nil&lt;br /&gt;
    end&lt;br /&gt;
    if (defenceLevel + hitpointsLevel + required.hitpointsDefence) &amp;gt; (99 * 2) then&lt;br /&gt;
        required.hitpointsDefence = nil&lt;br /&gt;
    end&lt;br /&gt;
    if (rangedLevel + required.ranged) &amp;gt; 99 then&lt;br /&gt;
        required.ranged = nil&lt;br /&gt;
    end&lt;br /&gt;
    if (magicLevel + required.magic) &amp;gt; 99 then&lt;br /&gt;
        required.magic = nil&lt;br /&gt;
    end&lt;br /&gt;
    if (prayerLevel + required.prayer) &amp;gt; 99 then&lt;br /&gt;
    	required.prayer = nil&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
	local combatTypeName&lt;br /&gt;
	if(combatType == meleeCombatLevel) then&lt;br /&gt;
		combatTypeName = &amp;#039;melee&amp;#039;&lt;br /&gt;
	elseif(combatType == magicCombatLevel) then&lt;br /&gt;
		combatTypeName = &amp;#039;magic&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		combatTypeName = &amp;#039;ranged&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
    return combatLevel, combatTypeName, required&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Hefner</name></author>
	</entry>
</feed>