<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.runerealm.org/index.php?action=history&amp;feed=atom&amp;title=Module%3ALava_shard_chart</id>
	<title>Module:Lava shard chart - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.runerealm.org/index.php?action=history&amp;feed=atom&amp;title=Module%3ALava_shard_chart"/>
	<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Lava_shard_chart&amp;action=history"/>
	<updated>2026-05-03T16:52:54Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=Module:Lava_shard_chart&amp;diff=35029&amp;oldid=prev</id>
		<title>Alex: Created page with &quot;local chart = require( &#039;Module:Chart data&#039; )  local p = {}  function interp(low, high, level) 	local value = math.floor(low*(99-level)/98 + high*(level-1)/98 + 0.5) + 1 	return math.min(math.max(value / 256, 0), 1)	 end  function p._calculateDataSets(args) 	local dataSets = {} 	 	local data = {} 	local dataBoost = {} 	local shards3, shards4, shards5, shards6 	local roll1, roll2, roll3 	for x = 1, 99 do 		roll1 = interp(101, 301, x) 		roll2 = interp(58, 251, x) 		roll3 =...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:Lava_shard_chart&amp;diff=35029&amp;oldid=prev"/>
		<updated>2024-10-16T23:12:36Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local chart = require( &amp;#039;Module:Chart data&amp;#039; )  local p = {}  function interp(low, high, level) 	local value = math.floor(low*(99-level)/98 + high*(level-1)/98 + 0.5) + 1 	return math.min(math.max(value / 256, 0), 1)	 end  function p._calculateDataSets(args) 	local dataSets = {} 	 	local data = {} 	local dataBoost = {} 	local shards3, shards4, shards5, shards6 	local roll1, roll2, roll3 	for x = 1, 99 do 		roll1 = interp(101, 301, x) 		roll2 = interp(58, 251, x) 		roll3 =...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local chart = require( &amp;#039;Module:Chart data&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function interp(low, high, level)&lt;br /&gt;
	local value = math.floor(low*(99-level)/98 + high*(level-1)/98 + 0.5) + 1&lt;br /&gt;
	return math.min(math.max(value / 256, 0), 1)	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._calculateDataSets(args)&lt;br /&gt;
	local dataSets = {}&lt;br /&gt;
	&lt;br /&gt;
	local data = {}&lt;br /&gt;
	local dataBoost = {}&lt;br /&gt;
	local shards3, shards4, shards5, shards6&lt;br /&gt;
	local roll1, roll2, roll3&lt;br /&gt;
	for x = 1, 99 do&lt;br /&gt;
		roll1 = interp(101, 301, x)&lt;br /&gt;
		roll2 = interp(58, 251, x)&lt;br /&gt;
		roll3 = interp(-14, 254, x)&lt;br /&gt;
		&lt;br /&gt;
		shards3 = (1-roll1) * (1-roll2) * (1-roll3)  -- need to miss all rolls&lt;br /&gt;
		shards4 = roll1 * (1-roll2) * (1-roll3) + roll2 * (1-roll1) * (1-roll3) + roll3 * (1-roll1) * (1-roll2)  -- need to hit one roll&lt;br /&gt;
		shards5 = roll1 * roll2 * (1-roll3) + roll2 * roll3 * (1-roll1) + roll1 * roll3 * (1-roll2)  -- need to hit two rolls&lt;br /&gt;
		shards6 = roll1 * roll2 * roll3  -- need to hit all three rolls&lt;br /&gt;
		&lt;br /&gt;
		shardsTot = 3 * shards3 + 4 * shards4 + 5 * shards5 + 6 * shards6&lt;br /&gt;
		shardsTotBoost = 4 * shards3 + 6 * shards4 + 7 * shards5 + 9 * shards6&lt;br /&gt;
		&lt;br /&gt;
		table.insert(data, {x=x, y=shardsTot})&lt;br /&gt;
		table.insert(dataBoost, {x=x, y=shardsTotBoost})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table.insert(dataSets, {&lt;br /&gt;
        data = {},&lt;br /&gt;
        label = &amp;#039;Standard&amp;#039;,&lt;br /&gt;
    	borderDash = {5, 5},&lt;br /&gt;
        borderCapStyle = &amp;#039;round&amp;#039;,&lt;br /&gt;
        pointRadius = 0,&lt;br /&gt;
        baseColor = &amp;#039;brown&amp;#039;,&lt;br /&gt;
        pointStyleImg = &amp;#039;Lava scale.png&amp;#039;,&lt;br /&gt;
    })&lt;br /&gt;
	table.insert(dataSets, {&lt;br /&gt;
        data = data,&lt;br /&gt;
        label = &amp;#039;Standard&amp;#039;,&lt;br /&gt;
    	borderDash = {},&lt;br /&gt;
        borderCapStyle = &amp;#039;round&amp;#039;,&lt;br /&gt;
        pointRadius = 0,&lt;br /&gt;
        baseColor = &amp;#039;brown&amp;#039;,&lt;br /&gt;
    })&lt;br /&gt;
    table.insert(dataSets, {})&lt;br /&gt;
    &lt;br /&gt;
   	table.insert(dataSets, {&lt;br /&gt;
        data = {},&lt;br /&gt;
        label = &amp;#039;Hard Wilderness Diary&amp;#039;,&lt;br /&gt;
    	borderDash = {5, 5},&lt;br /&gt;
        borderCapStyle = &amp;#039;round&amp;#039;,&lt;br /&gt;
        pointRadius = 0,&lt;br /&gt;
        baseColor = &amp;#039;teal&amp;#039;,&lt;br /&gt;
        pointStyleImg = &amp;#039;Wilderness sword 3.png&amp;#039;,&lt;br /&gt;
    })&lt;br /&gt;
   	table.insert(dataSets, {&lt;br /&gt;
        data = dataBoost,&lt;br /&gt;
        label = &amp;#039;Hard Wilderness Diary&amp;#039;,&lt;br /&gt;
    	borderDash = {},&lt;br /&gt;
        borderCapStyle = &amp;#039;round&amp;#039;,&lt;br /&gt;
        pointRadius = 0,&lt;br /&gt;
        baseColor = &amp;#039;teal&amp;#039;,&lt;br /&gt;
    })&lt;br /&gt;
    table.insert(dataSets, {})&lt;br /&gt;
&lt;br /&gt;
	return dataSets&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = frame:getParent().args&lt;br /&gt;
	&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
&lt;br /&gt;
    local plot = chart.newChart{ type = &amp;#039;scatter&amp;#039; }&lt;br /&gt;
        :setTitle( args.label )&lt;br /&gt;
        :setDimensions( &amp;#039;540px&amp;#039;, &amp;#039;400px&amp;#039;, &amp;#039;540px&amp;#039;, &amp;#039;400px&amp;#039;, true )&lt;br /&gt;
        :setXLabel( args.xlabel or &amp;#039;Level&amp;#039; )&lt;br /&gt;
        :setYLabel( args.ylabel or &amp;#039;Success rate&amp;#039; )&lt;br /&gt;
        :setXLimits( nil, nil, 1 )&lt;br /&gt;
        :setYLimits( nil, nil, 1 )&lt;br /&gt;
        :setTitle(&amp;#039;Average yield&amp;#039;)&lt;br /&gt;
        :setXLabel(&amp;#039;Herblore level&amp;#039;)&lt;br /&gt;
        :setYLabel(&amp;#039;Lava scale shards&amp;#039;)&lt;br /&gt;
        :setTooltipFormat(&amp;#039;harvestLives&amp;#039;)&lt;br /&gt;
        :setDatasetsPerGroup(3)&lt;br /&gt;
    &lt;br /&gt;
	local dataSets = p._calculateDataSets(args)&lt;br /&gt;
	for i, dataSet in ipairs(dataSets) do&lt;br /&gt;
		plot:newDataSet(dataSet)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    return plot&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
</feed>