<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://wiki.legnes.com/index.php?action=history&amp;feed=atom&amp;title=%D0%A1%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B3%D0%B0%D0%BC%D0%BF_%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8_%D1%80%D1%83%D0%BD_%28Custom_gump_runebook%29</id>
	<title>Собственный гамп книги рун (Custom gump runebook) - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.legnes.com/index.php?action=history&amp;feed=atom&amp;title=%D0%A1%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B3%D0%B0%D0%BC%D0%BF_%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8_%D1%80%D1%83%D0%BD_%28Custom_gump_runebook%29"/>
	<link rel="alternate" type="text/html" href="http://wiki.legnes.com/index.php?title=%D0%A1%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B3%D0%B0%D0%BC%D0%BF_%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8_%D1%80%D1%83%D0%BD_(Custom_gump_runebook)&amp;action=history"/>
	<updated>2026-08-26T19:23:52Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>http://wiki.legnes.com/index.php?title=%D0%A1%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B3%D0%B0%D0%BC%D0%BF_%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8_%D1%80%D1%83%D0%BD_(Custom_gump_runebook)&amp;diff=2797&amp;oldid=prev</id>
		<title>Support в 14:28, 9 декабря 2024</title>
		<link rel="alternate" type="text/html" href="http://wiki.legnes.com/index.php?title=%D0%A1%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B3%D0%B0%D0%BC%D0%BF_%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8_%D1%80%D1%83%D0%BD_(Custom_gump_runebook)&amp;diff=2797&amp;oldid=prev"/>
		<updated>2024-12-09T14:28:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 17:28, 9 декабря 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l68&quot;&gt;Строка 68:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 68:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	gump.AddResizepic(0, 0, &amp;#039;0x09D8&amp;#039;, CustomRunebookWidth + 26 + 34, CustomRunebookHeight + 36 + 40);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	gump.AddResizepic(0, 0, &amp;#039;0x09D8&amp;#039;, CustomRunebookWidth + 26 + 34, CustomRunebookHeight + 36 + 40);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	gump.AddText(36, 10, &#039;0&#039;, &quot;The &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Abyss &lt;/del&gt;Runebook v1.0&quot;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	gump.AddText(36, 10, &#039;0&#039;, &quot;The &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Legnes &lt;/ins&gt;Runebook v1.0&quot;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	gump.AddText(36, CustomRunebookHeight + 46, &amp;#039;0&amp;#039;, &amp;quot;by Hotride&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	gump.AddText(36, CustomRunebookHeight + 46, &amp;#039;0&amp;#039;, &amp;quot;by Hotride&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l265&quot;&gt;Строка 265:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 265:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	gump.AddResizepic(0, 0, &amp;#039;0x09D8&amp;#039;, CustomRunebookWidth + 26 + 34, CustomRunebookHeight + 36 + 40);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	gump.AddResizepic(0, 0, &amp;#039;0x09D8&amp;#039;, CustomRunebookWidth + 26 + 34, CustomRunebookHeight + 36 + 40);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	gump.AddText(36, 10, &#039;0&#039;, &quot;The &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Abyss &lt;/del&gt;Runebook v1.0&quot;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	gump.AddText(36, 10, &#039;0&#039;, &quot;The &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Legnes &lt;/ins&gt;Runebook v1.0&quot;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	gump.AddText(36, CustomRunebookHeight + 46, &amp;#039;0&amp;#039;, &amp;quot;by Hotride&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	gump.AddText(36, CustomRunebookHeight + 46, &amp;#039;0&amp;#039;, &amp;quot;by Hotride&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Support</name></author>
	</entry>
	<entry>
		<id>http://wiki.legnes.com/index.php?title=%D0%A1%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B3%D0%B0%D0%BC%D0%BF_%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8_%D1%80%D1%83%D0%BD_(Custom_gump_runebook)&amp;diff=2796&amp;oldid=prev</id>
		<title>Support: Новая страница: «Скрипт для Legnes/Orion Assist. Скрипт позволяет настроить гамп книги рун Rune book, как нужно именно вам.  &lt;p&gt;Автор скрипта: &#039;&#039;&#039;[https://legnes.com/user/Hotride Hotride ]&#039;&#039;&#039;&lt;/p&gt; &lt;syntaxhighlight lang=&quot;javascript&quot;&gt; // -------- User options -------- // File path to store runebook data var CustomRunebookFilePath = Orion.CurrentScriptDirPath() + &#039;/runebook_&#039; + Player.Serial()...»</title>
		<link rel="alternate" type="text/html" href="http://wiki.legnes.com/index.php?title=%D0%A1%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B3%D0%B0%D0%BC%D0%BF_%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8_%D1%80%D1%83%D0%BD_(Custom_gump_runebook)&amp;diff=2796&amp;oldid=prev"/>
		<updated>2024-12-09T14:27:26Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «Скрипт для Legnes/Orion Assist. Скрипт позволяет настроить гамп книги рун &lt;a href=&quot;/index.php?title=Runebook&amp;amp;action=tinymceedit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Runebook (страница не существует)&quot;&gt;Rune book&lt;/a&gt;, как нужно именно вам.  &amp;lt;p&amp;gt;Автор скрипта: &amp;#039;&amp;#039;&amp;#039;[https://legnes.com/user/Hotride Hotride ]&amp;#039;&amp;#039;&amp;#039;&amp;lt;/p&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt; // -------- User options -------- // File path to store runebook data var CustomRunebookFilePath = Orion.CurrentScriptDirPath() + &amp;#039;/runebook_&amp;#039; + Player.Serial()...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Скрипт для Legnes/Orion Assist.&lt;br /&gt;
Скрипт позволяет настроить гамп книги рун [[Runebook|Rune book]], как нужно именно вам.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Автор скрипта: &amp;#039;&amp;#039;&amp;#039;[https://legnes.com/user/Hotride Hotride ]&amp;#039;&amp;#039;&amp;#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// -------- User options --------&lt;br /&gt;
// File path to store runebook data&lt;br /&gt;
var CustomRunebookFilePath = Orion.CurrentScriptDirPath() + &amp;#039;/runebook_&amp;#039; + Player.Serial() + &amp;#039;.json&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
// Gump width&lt;br /&gt;
var CustomRunebookWidth = 260;&lt;br /&gt;
&lt;br /&gt;
// Gump height&lt;br /&gt;
var CustomRunebookHeight = 400;&lt;br /&gt;
&lt;br /&gt;
// Array of HTML colors (&amp;#039;#ARGB&amp;#039; or &amp;#039;colorname&amp;#039;) for runes background, minimum 1 color&lt;br /&gt;
var CustomRunebookBackgroundColors = [ &amp;#039;#0FFFFFFF&amp;#039;, &amp;#039;#0F111111&amp;#039; ];&lt;br /&gt;
//var CustomRunebookBackgroundColors = [ &amp;#039;#0FFF0000&amp;#039;, &amp;#039;#0F00FF00&amp;#039;, &amp;#039;#0F0000FF&amp;#039; ];&lt;br /&gt;
&lt;br /&gt;
// Font number (which the client used), used for adaptive text offsets&lt;br /&gt;
var CustomRunebookFontIndex = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// -------- Don&amp;#039;t touch this options please :) -------- &lt;br /&gt;
var CustomRunebookSerial = 666;&lt;br /&gt;
var CustomRunebookGroupOffset = 100;&lt;br /&gt;
var CustomRunebookAddButtonOffset = 1000;&lt;br /&gt;
var CustomRunebookRecallButtonOffset = 2000;&lt;br /&gt;
var CustomRunebookGateButtonOffset = 3000;&lt;br /&gt;
var CustomRunebookMarkButtonOffset = 4000;&lt;br /&gt;
var CustomRunebookRemoveButtonOffset = 5000;&lt;br /&gt;
var CustomRunebookUpdateNameButtonOffset = 6000;&lt;br /&gt;
var DefaultCustomRunebook = { groups: [ { name: &amp;quot;default group&amp;quot;, opened: 1, runes: [] } ] };&lt;br /&gt;
&lt;br /&gt;
// Create custom runebook gump&lt;br /&gt;
function CustomRunebook()&lt;br /&gt;
{&lt;br /&gt;
	//First initialization&lt;br /&gt;
	if (!Shared.GetVar(&amp;#039;CustomRunebookInitialized&amp;#039;, 0))&lt;br /&gt;
	{&lt;br /&gt;
		InitializeCustomRunebook(0);&lt;br /&gt;
		Shared.AddVar(&amp;#039;CustomRunebookInitialized&amp;#039;, 1);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Create new custom gump&lt;br /&gt;
	var gump = Orion.CreateCustomGump(CustomRunebookSerial);&lt;br /&gt;
&lt;br /&gt;
	// This gump will be no closible by a right mouse click&lt;br /&gt;
	gump.SetNoClose(true);&lt;br /&gt;
&lt;br /&gt;
	// Clear gump contents (for rebuilds)&lt;br /&gt;
	gump.Clear();&lt;br /&gt;
&lt;br /&gt;
	// Set callback function&lt;br /&gt;
	gump.SetCallback(&amp;#039;HandleCustomRunebook&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	// Default page must be 1&lt;br /&gt;
	gump.SetPage(1);&lt;br /&gt;
&lt;br /&gt;
	gump.AddPage(1);&lt;br /&gt;
&lt;br /&gt;
	// Minimizer&lt;br /&gt;
	gump.AddButton(4, CustomRunebookWidth / 2 + 20, -19, &amp;#039;0x082D&amp;#039;, &amp;#039;0x082D&amp;#039;, &amp;#039;0x082D&amp;#039;, &amp;#039;0&amp;#039;, 0, 2);&lt;br /&gt;
	gump.AddTooltip(&amp;#039;Minimize the gump&amp;#039;);&lt;br /&gt;
	&lt;br /&gt;
	// Background&lt;br /&gt;
	gump.AddResizepic(0, 0, &amp;#039;0x09D8&amp;#039;, CustomRunebookWidth + 26 + 34, CustomRunebookHeight + 36 + 40);&lt;br /&gt;
&lt;br /&gt;
	gump.AddText(36, 10, &amp;#039;0&amp;#039;, &amp;quot;The Abyss Runebook v1.0&amp;quot;);&lt;br /&gt;
	gump.AddText(36, CustomRunebookHeight + 46, &amp;#039;0&amp;#039;, &amp;quot;by Hotride&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	// Manage options button&lt;br /&gt;
	if (CustomRunebookFontIndex == 1)&lt;br /&gt;
	{&lt;br /&gt;
		gump.AddResizepic(CustomRunebookWidth - 50, CustomRunebookHeight + 46, &amp;#039;0x24EA&amp;#039;, 96, 20, 2, 1);&lt;br /&gt;
		gump.AddText(CustomRunebookWidth - 42, CustomRunebookHeight + 46, &amp;#039;0&amp;#039;, &amp;quot;Manage groups&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	else&lt;br /&gt;
	{&lt;br /&gt;
		gump.AddResizepic(CustomRunebookWidth - 74, CustomRunebookHeight + 46, &amp;#039;0x24EA&amp;#039;, 120, 20, 2, 1);&lt;br /&gt;
		gump.AddText(CustomRunebookWidth - 66, CustomRunebookHeight + 46, &amp;#039;0&amp;#039;, &amp;quot;Manage groups&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// HTML gump with runes&lt;br /&gt;
	gump.AddHtmlGump(1, 26, 36, CustomRunebookWidth, CustomRunebookHeight, &amp;#039;0x0BB8&amp;#039;, 0);&lt;br /&gt;
&lt;br /&gt;
	//Get custom runebook content&lt;br /&gt;
	var runebook = Shared.GetVar(&amp;#039;CustomRunebookData&amp;#039;, DefaultCustomRunebook);&lt;br /&gt;
&lt;br /&gt;
	// Loop for groups&lt;br /&gt;
	for (var g = 0; g &amp;lt; runebook.groups.length; g++)&lt;br /&gt;
	{&lt;br /&gt;
		gump.Select(&amp;#039;htmlgump&amp;#039;, 1);&lt;br /&gt;
		var group = runebook.groups[g];&lt;br /&gt;
		gump.AddSpoiler(g + CustomRunebookGroupOffset, 0, g * 22, group.opened ? 0 : 1, CustomRunebookWidth - 12, &amp;#039;0x0827&amp;#039;, &amp;#039;0x0827&amp;#039;, &amp;#039;0x0827&amp;#039;, &amp;#039;0x0826&amp;#039;, &amp;#039;0x0826&amp;#039;, &amp;#039;0x0826&amp;#039;);&lt;br /&gt;
		gump.SetSpoilerText(group.name, &amp;#039;0&amp;#039;, &amp;#039;0x0035&amp;#039;, &amp;#039;0x0021&amp;#039;);&lt;br /&gt;
		gump.Select(&amp;#039;spoiler&amp;#039;, g + CustomRunebookGroupOffset);&lt;br /&gt;
&lt;br /&gt;
		gump.AddButton(g + CustomRunebookAddButtonOffset, CustomRunebookWidth - 84, 0, &amp;#039;0x099C&amp;#039;, &amp;#039;0x099E&amp;#039;, &amp;#039;0x099D&amp;#039;, &amp;#039;0&amp;#039;);&lt;br /&gt;
		gump.AddText(CustomRunebookWidth - (CustomRunebookFontIndex == 1 ? 164 : 180), -4, &amp;#039;0&amp;#039;, &amp;quot;Add new rune&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		// Pack group offset&lt;br /&gt;
		var groupOffset = (g &amp;lt;&amp;lt; 24);&lt;br /&gt;
		var y = 20;&lt;br /&gt;
&lt;br /&gt;
		for (var rune = 0; rune &amp;lt; group.runes.length; rune++)&lt;br /&gt;
		{&lt;br /&gt;
			gump.AddLine(-18, y - 2, CustomRunebookWidth - 34, y - 2, &amp;#039;black&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			gump.AddText(-18, y, &amp;#039;0&amp;#039;, &amp;#039;&amp;lt;img src=&amp;quot;gump:0x08DF&amp;quot; width=20 height=20&amp;gt;&amp;#039;);&lt;br /&gt;
			gump.AddHitBox(CustomRunebookRecallButtonOffset + groupOffset + rune, -18, y, 20, 20, 1);&lt;br /&gt;
			gump.AddTooltip(&amp;#039;Recall&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			gump.AddText(4, y, &amp;#039;0&amp;#039;, &amp;#039;&amp;lt;img src=&amp;quot;gump:0x08F3&amp;quot; width=20 height=20&amp;gt;&amp;#039;);&lt;br /&gt;
			gump.AddHitBox(CustomRunebookGateButtonOffset + groupOffset + rune, 4, y, 20, 20, 1);&lt;br /&gt;
			gump.AddTooltip(&amp;#039;Open gate&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			gump.AddText(CustomRunebookWidth - 58, y, &amp;#039;0&amp;#039;, &amp;#039;&amp;lt;img src=&amp;quot;gump:0x08EC&amp;quot; width=20 height=20&amp;gt;&amp;#039;);&lt;br /&gt;
			gump.AddHitBox(CustomRunebookMarkButtonOffset + groupOffset + rune, CustomRunebookWidth - 58, y, 20, 20, 1);&lt;br /&gt;
			gump.AddTooltip(&amp;#039;Mark&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			gump.AddBlending(1);&lt;br /&gt;
			gump.AddColoredPolygone(25, y + 1, CustomRunebookWidth - 84, 20, CustomRunebookBackgroundColors[rune % CustomRunebookBackgroundColors.length]);&lt;br /&gt;
			gump.AddBlending(0);&lt;br /&gt;
			gump.AddText(26, y, &amp;#039;0&amp;#039;, group.runes[rune].name);&lt;br /&gt;
			&lt;br /&gt;
			y += 26;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		//Reset selection to gump and reselect HTML gump&lt;br /&gt;
		gump.Select(&amp;#039;gump&amp;#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	gump.AddPage(2);&lt;br /&gt;
&lt;br /&gt;
	// Maximizer&lt;br /&gt;
	if (CustomRunebookFontIndex == 1)&lt;br /&gt;
		gump.AddResizepic(0, 0, &amp;#039;0x24EA&amp;#039;, 66, 20, 5, 1);&lt;br /&gt;
	else&lt;br /&gt;
		gump.AddResizepic(0, 0, &amp;#039;0x24EA&amp;#039;, 78, 20, 5, 1);&lt;br /&gt;
	gump.AddText(8, 1, &amp;#039;0&amp;#039;, &amp;quot;Runebook&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	// Commit gump changes and update it in client&lt;br /&gt;
	gump.Update();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Custom runebook gump response handler&lt;br /&gt;
function HandleCustomRunebook(_private)&lt;br /&gt;
{&lt;br /&gt;
	var code = CustomGumpResponse.ReturnCode();&lt;br /&gt;
	var runebook = Shared.GetVar(&amp;#039;CustomRunebookData&amp;#039;, DefaultCustomRunebook);&lt;br /&gt;
&lt;br /&gt;
	// Cache spoilers status&lt;br /&gt;
	for (var g = 0; g &amp;lt; runebook.groups.length; g++)&lt;br /&gt;
	{&lt;br /&gt;
		runebook.groups[g].opened = (CustomGumpResponse.Spoiler(g + CustomRunebookGroupOffset) ? 1 : 0);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (code == 0) // Close the gump (unused now)&lt;br /&gt;
	{&lt;br /&gt;
		var gump = Orion.CreateCustomGump(CustomRunebookSerial);&lt;br /&gt;
		gump.Close();&lt;br /&gt;
	}&lt;br /&gt;
	else if (code == 2) // Manage groups&lt;br /&gt;
	{&lt;br /&gt;
		Shared.AddVar(&amp;#039;CustomRunebookData&amp;#039;, runebook);&lt;br /&gt;
		SaveCustomRunebook(0);&lt;br /&gt;
		ManageCustomRunebook(0);&lt;br /&gt;
	}&lt;br /&gt;
	else if (code == 5) // Maximize the gump&lt;br /&gt;
	{&lt;br /&gt;
		var gump = Orion.CreateCustomGump(CustomRunebookSerial);&lt;br /&gt;
		gump.SetPage(1);&lt;br /&gt;
		gump.Update();&lt;br /&gt;
	}&lt;br /&gt;
	else if (code &amp;gt;= CustomRunebookAddButtonOffset &amp;amp;&amp;amp; code &amp;lt; CustomRunebookRecallButtonOffset) // Add rune&lt;br /&gt;
	{&lt;br /&gt;
		Orion.Print(&amp;#039;Select a recall rune to save it in the runebook.&amp;#039;);&lt;br /&gt;
		//Selected is not a game object&lt;br /&gt;
		if (Orion.WaitForAddObject(&amp;#039;temprune&amp;#039;) != 1)&lt;br /&gt;
			return;&lt;br /&gt;
&lt;br /&gt;
		var group = code - CustomRunebookAddButtonOffset;&lt;br /&gt;
&lt;br /&gt;
		if (group &amp;gt;= 0 &amp;amp;&amp;amp; group &amp;lt; runebook.groups.length)&lt;br /&gt;
		{&lt;br /&gt;
			var runeSerial = Orion.GetSerial(&amp;#039;temprune&amp;#039;);&lt;br /&gt;
			&lt;br /&gt;
			for (var i = 0; i &amp;lt; runebook.groups[group].runes.length; i++)&lt;br /&gt;
			{&lt;br /&gt;
				if (runebook.groups[group].runes[i].serial == runeSerial)&lt;br /&gt;
				{&lt;br /&gt;
					Orion.Print(&amp;#039;0x0021&amp;#039;, &amp;#039;Rune is already added in this group: #&amp;#039; + (i + 1) + &amp;#039; &amp;#039; + runebook.groups[group].runes[i].name);&lt;br /&gt;
					return;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			Orion.ResetName(runeSerial);&lt;br /&gt;
			var runeName = Orion.RequestName(runeSerial, 1000);&lt;br /&gt;
			runebook.groups[group].runes.push({ serial: runeSerial, name: runeName });&lt;br /&gt;
			Shared.AddVar(&amp;#039;CustomRunebookData&amp;#039;, runebook);&lt;br /&gt;
			SaveCustomRunebook(0);&lt;br /&gt;
			CustomRunebook();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	else&lt;br /&gt;
	{&lt;br /&gt;
		// Unpack group offset&lt;br /&gt;
		var group = (code &amp;gt;&amp;gt; 24) &amp;amp; 0xFF;&lt;br /&gt;
&lt;br /&gt;
		if (group &amp;gt;= 0 &amp;amp;&amp;amp; group &amp;lt; runebook.groups.length)&lt;br /&gt;
		{&lt;br /&gt;
			code = code &amp;amp; 0x00FFFFFF;&lt;br /&gt;
&lt;br /&gt;
			if (code &amp;gt;= CustomRunebookRecallButtonOffset &amp;amp;&amp;amp; code &amp;lt; CustomRunebookUpdateNameButtonOffset) // Recall/Gate Travel/Mark/Remove/UpdateName&lt;br /&gt;
			{&lt;br /&gt;
				var spell = &amp;#039;Recall&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
				if (code &amp;gt;= CustomRunebookMarkButtonOffset)&lt;br /&gt;
				{&lt;br /&gt;
					spell = &amp;#039;Mark&amp;#039;;&lt;br /&gt;
					code -= CustomRunebookMarkButtonOffset;&lt;br /&gt;
				}&lt;br /&gt;
				else if (code &amp;gt;= CustomRunebookGateButtonOffset)&lt;br /&gt;
				{&lt;br /&gt;
					spell = &amp;#039;Gate Travel&amp;#039;;&lt;br /&gt;
					code -= CustomRunebookGateButtonOffset;&lt;br /&gt;
				}&lt;br /&gt;
				else //if (code &amp;gt;= CustomRunebookRecallButtonOffset)&lt;br /&gt;
					code -= CustomRunebookRecallButtonOffset;&lt;br /&gt;
&lt;br /&gt;
				// Unpack rune offset&lt;br /&gt;
				var rune = code &amp;amp; 0x00FFFFFF;&lt;br /&gt;
&lt;br /&gt;
				if (rune &amp;gt;= 0 &amp;amp;&amp;amp; rune &amp;lt; runebook.groups[group].runes.length)&lt;br /&gt;
				{&lt;br /&gt;
					Orion.Cast(spell, runebook.groups[group].runes[rune].serial);&lt;br /&gt;
					Shared.AddVar(&amp;#039;CustomRunebookData&amp;#039;, runebook);&lt;br /&gt;
					SaveCustomRunebook(0);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Create custom runebook manage gump&lt;br /&gt;
function ManageCustomRunebook(_private)&lt;br /&gt;
{&lt;br /&gt;
	// Create new custom gump&lt;br /&gt;
	var gump = Orion.CreateCustomGump(CustomRunebookSerial);&lt;br /&gt;
&lt;br /&gt;
	// This gump will be no closible by a right mouse click&lt;br /&gt;
	gump.SetNoClose(true);&lt;br /&gt;
&lt;br /&gt;
	gump.SetPage(0);&lt;br /&gt;
&lt;br /&gt;
	// Clear gump contents (for rebuilds)&lt;br /&gt;
	gump.Clear();&lt;br /&gt;
&lt;br /&gt;
	// Set callback function&lt;br /&gt;
	gump.SetCallback(&amp;#039;HandleManageCustomRunebook&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	// Background&lt;br /&gt;
	gump.AddResizepic(0, 0, &amp;#039;0x09D8&amp;#039;, CustomRunebookWidth + 26 + 34, CustomRunebookHeight + 36 + 40);&lt;br /&gt;
&lt;br /&gt;
	gump.AddText(36, 10, &amp;#039;0&amp;#039;, &amp;quot;The Abyss Runebook v1.0&amp;quot;);&lt;br /&gt;
	gump.AddText(36, CustomRunebookHeight + 46, &amp;#039;0&amp;#039;, &amp;quot;by Hotride&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	if (CustomRunebookFontIndex == 1)&lt;br /&gt;
	{&lt;br /&gt;
		gump.AddResizepic(CustomRunebookWidth - 30, 9, &amp;#039;0x24EA&amp;#039;, 72, 20, 2, 1);&lt;br /&gt;
		gump.AddText(CustomRunebookWidth - 22, 9, &amp;#039;0&amp;#039;, &amp;quot;Add group&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	else&lt;br /&gt;
	{&lt;br /&gt;
		gump.AddResizepic(CustomRunebookWidth - 40, 9, &amp;#039;0x24EA&amp;#039;, 82, 20, 2, 1);&lt;br /&gt;
		gump.AddText(CustomRunebookWidth - 32, 9, &amp;#039;0&amp;#039;, &amp;quot;Add group&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Close editor button&lt;br /&gt;
	gump.AddResizepic(CustomRunebookWidth / 2 + 4, CustomRunebookHeight + 46, &amp;#039;0x24EA&amp;#039;, 46, 20, 3, 1);&lt;br /&gt;
	gump.AddText(CustomRunebookWidth / 2 + 12, CustomRunebookHeight + 46, &amp;#039;0&amp;#039;, &amp;quot;Close&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	// HTML gump section&lt;br /&gt;
	gump.AddHtmlGump(1, 26, 36, CustomRunebookWidth, CustomRunebookHeight, &amp;#039;0x0BB8&amp;#039;, 0);&lt;br /&gt;
&lt;br /&gt;
	//Get custom runebook content&lt;br /&gt;
	var runebook = Shared.GetVar(&amp;#039;CustomRunebookData&amp;#039;, DefaultCustomRunebook);&lt;br /&gt;
&lt;br /&gt;
	for (var g = 0; g &amp;lt; runebook.groups.length; g++)&lt;br /&gt;
	{&lt;br /&gt;
		gump.Select(&amp;#039;htmlgump&amp;#039;, 1);&lt;br /&gt;
		var groups = runebook.groups[g];&lt;br /&gt;
		gump.AddSpoiler(g + CustomRunebookGroupOffset, 0, g * 22, groups.opened ? 0 : 1, CustomRunebookWidth - 12, &amp;#039;0x0827&amp;#039;, &amp;#039;0x0827&amp;#039;, &amp;#039;0x0827&amp;#039;, &amp;#039;0x0826&amp;#039;, &amp;#039;0x0826&amp;#039;, &amp;#039;0x0826&amp;#039;);&lt;br /&gt;
		gump.Select(&amp;#039;spoiler&amp;#039;, g + CustomRunebookGroupOffset);&lt;br /&gt;
&lt;br /&gt;
		gump.AddResizepic(0, -14, &amp;#039;0x0BB8&amp;#039;, CustomRunebookWidth - 38 - 35, 18);&lt;br /&gt;
		gump.AddTextEntry(g + CustomRunebookGroupOffset, 3, -15, &amp;#039;0x0035&amp;#039;, groups.name, CustomRunebookWidth - 44 - 35, 16);&lt;br /&gt;
		gump.SetTextEntryPlaceholderText(&amp;#039;Group name&amp;#039;, &amp;#039;0x0022&amp;#039;);&lt;br /&gt;
		gump.AddTooltip(&amp;#039;Group name&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		gump.AddButton(g + CustomRunebookGroupOffset, CustomRunebookWidth - 70, - 17, &amp;#039;0x0FB1&amp;#039;, &amp;#039;0x0FB2&amp;#039;, &amp;#039;0x0FB3&amp;#039;, &amp;#039;0&amp;#039;);&lt;br /&gt;
		gump.AddTooltip(&amp;#039;Remove this group&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		// Pack group offset&lt;br /&gt;
		var groupOffset = (g &amp;lt;&amp;lt; 24);&lt;br /&gt;
		var y = 10;&lt;br /&gt;
&lt;br /&gt;
		for (var rune = 0; rune &amp;lt; groups.runes.length; rune++)&lt;br /&gt;
		{&lt;br /&gt;
			gump.AddLine(-19, y - 2, CustomRunebookWidth - 34, y - 2, &amp;#039;black&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			gump.AddButton(CustomRunebookRemoveButtonOffset + groupOffset + rune, -20, y - 2, &amp;#039;0x0FB1&amp;#039;, &amp;#039;0x0FB2&amp;#039;, &amp;#039;0x0FB3&amp;#039;, &amp;#039;0&amp;#039;);&lt;br /&gt;
			gump.AddTooltip(&amp;#039;Remove this rune&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			gump.AddResizepic(12, y, &amp;#039;0x0BB8&amp;#039;, CustomRunebookWidth - 50 - 32, 18);&lt;br /&gt;
			gump.AddTextEntry(CustomRunebookRecallButtonOffset + groupOffset + rune, 15, y, &amp;#039;0x0052&amp;#039;, groups.runes[rune].name, CustomRunebookWidth - 56 - 32, 16);&lt;br /&gt;
			gump.SetTextEntryPlaceholderText(&amp;#039;Rune name&amp;#039;);&lt;br /&gt;
			gump.AddTooltip(&amp;#039;Rune name&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			gump.AddButton(CustomRunebookUpdateNameButtonOffset + groupOffset + rune, CustomRunebookWidth - 32 - 36, y - 2, &amp;#039;0x0FBA&amp;#039;, &amp;#039;0x0FBB&amp;#039;, &amp;#039;0x0FBC&amp;#039;, &amp;#039;0&amp;#039;);&lt;br /&gt;
			gump.AddTooltip(&amp;#039;Update this rune name (rune must be in your pack)&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			y += 24;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		//Reset selection to gump and reselect HTML gump&lt;br /&gt;
		gump.Select(&amp;#039;gump&amp;#039;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Commit gump changes and update it in client&lt;br /&gt;
	gump.Update();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Manage custom runebook gump response handler&lt;br /&gt;
function HandleManageCustomRunebook(_private)&lt;br /&gt;
{&lt;br /&gt;
	var code = CustomGumpResponse.ReturnCode();&lt;br /&gt;
	var runebook = Shared.GetVar(&amp;#039;CustomRunebookData&amp;#039;, DefaultCustomRunebook);&lt;br /&gt;
	var removeGroupIndex = -1;&lt;br /&gt;
	var neerRebuild = false;&lt;br /&gt;
&lt;br /&gt;
	// Cache spoilers statuses and groups/runes names&lt;br /&gt;
	for (var g = 0; g &amp;lt; runebook.groups.length; g++)&lt;br /&gt;
	{&lt;br /&gt;
		// Clicked on remove group button&lt;br /&gt;
		if (code == g + CustomRunebookGroupOffset)&lt;br /&gt;
		{&lt;br /&gt;
			removeGroupIndex = g;&lt;br /&gt;
			neerRebuild = true;&lt;br /&gt;
			continue;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		runebook.groups[g].opened = (CustomGumpResponse.Spoiler(g + CustomRunebookGroupOffset) ? 1 : 0);&lt;br /&gt;
		runebook.groups[g].name = CustomGumpResponse.Text(g + CustomRunebookGroupOffset);&lt;br /&gt;
		var groupOffset = (g &amp;lt;&amp;lt; 24);&lt;br /&gt;
		var removeIndex = -1;&lt;br /&gt;
&lt;br /&gt;
		for (var rune = 0; rune &amp;lt; runebook.groups[g].runes.length; rune++)&lt;br /&gt;
		{&lt;br /&gt;
			// Clicked on remove rune button&lt;br /&gt;
			if (code == CustomRunebookRemoveButtonOffset + groupOffset + rune)&lt;br /&gt;
				removeIndex = rune;&lt;br /&gt;
			// Clicked on remove rune button&lt;br /&gt;
			else if (code == CustomRunebookUpdateNameButtonOffset + groupOffset + rune)&lt;br /&gt;
			{&lt;br /&gt;
				Orion.CancelWaitPrompt();&lt;br /&gt;
				Orion.WaitPrompt(runebook.groups[g].runes[rune].name);&lt;br /&gt;
				Orion.UseObject(runebook.groups[g].runes[rune].serial);&lt;br /&gt;
			} &lt;br /&gt;
			else&lt;br /&gt;
				runebook.groups[g].runes[rune].name = CustomGumpResponse.Text(CustomRunebookRecallButtonOffset + groupOffset + rune);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		if (removeIndex != -1)&lt;br /&gt;
		{&lt;br /&gt;
			runebook.groups[g].runes.splice(removeIndex, 1);&lt;br /&gt;
			neerRebuild = true;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (removeGroupIndex != -1)&lt;br /&gt;
		runebook.groups.splice(removeGroupIndex, 1);&lt;br /&gt;
&lt;br /&gt;
	if (code == 2) // Add new group&lt;br /&gt;
	{&lt;br /&gt;
		runebook.groups.push({ name: &amp;quot;new group&amp;quot;, opened: 1, runes: [] });&lt;br /&gt;
		Shared.AddVar(&amp;#039;CustomRunebookData&amp;#039;, runebook);&lt;br /&gt;
		SaveCustomRunebook(0);&lt;br /&gt;
		ManageCustomRunebook(0);&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	Shared.AddVar(&amp;#039;CustomRunebookData&amp;#039;, runebook);&lt;br /&gt;
	SaveCustomRunebook(0);&lt;br /&gt;
&lt;br /&gt;
	if (code == 0 || code == 3) // Close gump&lt;br /&gt;
		CustomRunebook();&lt;br /&gt;
	else if (neerRebuild)&lt;br /&gt;
		ManageCustomRunebook(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// First initialization for custom runebook gump&lt;br /&gt;
function InitializeCustomRunebook(_private)&lt;br /&gt;
{&lt;br /&gt;
	var runebook = Shared.GetVar(&amp;#039;CustomRunebookData&amp;#039;, DefaultCustomRunebook);&lt;br /&gt;
	var file = Orion.NewFile();&lt;br /&gt;
&lt;br /&gt;
	if (file.Open(CustomRunebookFilePath, true))&lt;br /&gt;
	{&lt;br /&gt;
		var temp = JSON.parse(file.ReadAll());&lt;br /&gt;
		file.Close();&lt;br /&gt;
		&lt;br /&gt;
		if (temp.groups.length &amp;gt; 0)&lt;br /&gt;
			runebook = temp;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	Shared.AddVar(&amp;#039;CustomRunebookData&amp;#039;, runebook);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Save cached runebook in to the file&lt;br /&gt;
function SaveCustomRunebook(_private)&lt;br /&gt;
{&lt;br /&gt;
	var file = Orion.NewFile();&lt;br /&gt;
	file.Remove(CustomRunebookFilePath);&lt;br /&gt;
&lt;br /&gt;
	if (file.Open(CustomRunebookFilePath))&lt;br /&gt;
	{&lt;br /&gt;
		file.Write(JSON.stringify(Shared.GetVar(&amp;#039;CustomRunebookData&amp;#039;, DefaultCustomRunebook)));&lt;br /&gt;
		file.Close();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:LegnesAssistScripts]]&lt;/div&gt;</summary>
		<author><name>Support</name></author>
	</entry>
</feed>