<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.returnofreckoning.com/index.php?action=history&amp;feed=atom&amp;title=API%3APurchaseKeepUpgrade</id>
	<title>API:PurchaseKeepUpgrade - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.returnofreckoning.com/index.php?action=history&amp;feed=atom&amp;title=API%3APurchaseKeepUpgrade"/>
	<link rel="alternate" type="text/html" href="https://wiki.returnofreckoning.com/index.php?title=API:PurchaseKeepUpgrade&amp;action=history"/>
	<updated>2026-10-17T12:05:21Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.returnofreckoning.com/index.php?title=API:PurchaseKeepUpgrade&amp;diff=30652&amp;oldid=prev</id>
		<title>Maintenance script: UI Lua API import (WAR 1.4.8)</title>
		<link rel="alternate" type="text/html" href="https://wiki.returnofreckoning.com/index.php?title=API:PurchaseKeepUpgrade&amp;diff=30652&amp;oldid=prev"/>
		<updated>2026-10-16T19:47:57Z</updated>

		<summary type="html">&lt;p&gt;UI Lua API import (WAR 1.4.8)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{LuaApi|group=RvR}}&lt;br /&gt;
Asks the server to move a keep upgrade to a new level. The stock UI calls it from the keep upgrade interaction window.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PurchaseKeepUpgrade(upgradeId, targetLevel)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Arguments ==&lt;br /&gt;
;upgradeId : &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt; – Id of the keep upgrade. Only the low 16 bits are used.&lt;br /&gt;
;targetLevel : &amp;lt;code&amp;gt;number&amp;lt;/code&amp;gt; – Level the upgrade should go to. The stock UI uses the same call for raising and for lowering a level.&lt;br /&gt;
&lt;br /&gt;
== Returns ==&lt;br /&gt;
Nothing.&lt;br /&gt;
&lt;br /&gt;
== Details ==&lt;br /&gt;
* The request is sent as an interaction with the object the player last interacted with. Nothing is sent if there is no such object or if the network connection is not ready.&lt;br /&gt;
* The client does not check the id, the level, or the cost; the server decides.&lt;br /&gt;
* The stock keep upgrade window first calls [[API:CancelKeepUpgrade|CancelKeepUpgrade]] when an upgrade is running in the opposite direction, then calls this function.&lt;br /&gt;
* The function needs at least two arguments and only reads the last two.&lt;br /&gt;
&lt;br /&gt;
== Errors ==&lt;br /&gt;
None besides the generic &amp;#039;&amp;#039;Invalid Parameters&amp;#039;&amp;#039; message when an argument is not a number.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
From &amp;lt;code&amp;gt;default/ea_interactionwindow/source/interactionkeepupgrades.lua&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;EA_Window_InteractionKeepUpgrades.OnSave&amp;lt;/code&amp;gt;):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (keepUpgrade.targetLevel &amp;lt; keepUpgrade.currentLevel) then&lt;br /&gt;
    -- User is currently downgrading. We need to cancel the downgrade first.&lt;br /&gt;
    CancelKeepUpgrade(keepUpgrade.id)&lt;br /&gt;
end&lt;br /&gt;
...&lt;br /&gt;
EA_Window_InteractionKeepUpgrades.AddUpgradeToActiveList(keepUpgrade.id)&lt;br /&gt;
PurchaseKeepUpgrade(keepUpgrade.id, keepUpgrade.localTargetLevel)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[API:CancelKeepUpgrade|CancelKeepUpgrade]]&lt;br /&gt;
* [[API:GetKeepData|GetKeepData]]&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
</feed>