<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://war.app/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DanWL60</id>
	<title>War.app Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://war.app/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DanWL60"/>
	<link rel="alternate" type="text/html" href="https://war.app/wiki/Special:Contributions/DanWL60"/>
	<updated>2026-04-18T16:01:33Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://war.app/wiki/index.php?title=Category:Free_Mods&amp;diff=7470</id>
		<title>Category:Free Mods</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Category:Free_Mods&amp;diff=7470"/>
		<updated>2025-05-18T07:53:02Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: Created page with &amp;quot;Category:Mod Categories&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Mod Categories]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Mod_Categories&amp;diff=7469</id>
		<title>Mod Categories</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Mod_Categories&amp;diff=7469"/>
		<updated>2025-05-18T07:52:00Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Mods]] have 6 main categories:&lt;br /&gt;
* [[:Category:Free Mods|Free]] - anyone can create games with them, including non-members&lt;br /&gt;
* [[:Category:Promoted Mods|Promoted]] - mod available for public use. Can be used in [[Quickmatch]] or [[tournaments]].&lt;br /&gt;
* [[:Category:Standard Mods|Standard]] - mod available for public use. Can be used in [[Quickmatch]] or [[tournaments]].&lt;br /&gt;
* [[:Category:Experimental Mods|Experimental]] - mod available for public use (may have bugs; &#039;rarely&#039; used)&lt;br /&gt;
* Development -&lt;br /&gt;
** Non-public - mod still being made. Allows for multiplayer testing. Mod code obtained from GitHub (how mods run normally).&lt;br /&gt;
** Local - mod still being made. Code runs from local files for use in single-player only.&lt;br /&gt;
* [[:Category:Deleted Mods|Deleted]] - mod was created and potentially made public but the mod author has since deleted it. Anyone could [[Mod Developers Guide|recreate or copy the mod]] and make it [[Public Mods|public]] again.&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod Categories]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Picks_swap&amp;diff=7468</id>
		<title>Picks swap</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Picks_swap&amp;diff=7468"/>
		<updated>2025-05-18T07:51:15Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: Change category from promoted to free&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Mod infobox&lt;br /&gt;
|name=Picks Swap&lt;br /&gt;
|creatorToken=706629919&lt;br /&gt;
|creatorName=Krzysztof&lt;br /&gt;
|madePublicOnYear=2017&lt;br /&gt;
|madePublicOnMonth=04&lt;br /&gt;
|madePublicOnDay=05&lt;br /&gt;
|madePublicOnRef={{ref|https://github.com/kszyhoop/WarlightModPicksSwap/commits/master/}}&lt;br /&gt;
|madePublicOnAlt=&amp;amp;nbsp;- {{Mod infobox/date|2017|04|08|{{ref|https://www.warzone.com/Forum/254676-mods-v002-live}}}}&lt;br /&gt;
|category=Free&lt;br /&gt;
|tags={{modtag|Strategic}}&lt;br /&gt;
|appversion=5.21&lt;br /&gt;
|source=https://github.com/kszyhoop/WarlightModPicksSwap&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
This [[mod]] allows you to make [[manual distribution|picks]] for you opponent and them to make picks for you.&lt;br /&gt;
&lt;br /&gt;
This was the first mod that was able to be used by non-members when creating a game.{{ref|https://www.warzone.com/blog/index.php/2023/01/update-5-23-tags-show-who-is-online-3d-maps-for-all-swap-picks-for-all/}}&lt;br /&gt;
&lt;br /&gt;
Players should aim to pick territories that take a long time to complete such as bonuses with lots of territories or [[wastelands]].&lt;br /&gt;
&lt;br /&gt;
== Compatibility ==&lt;br /&gt;
* This mod only works for 2-player games&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Mods&amp;diff=7467</id>
		<title>Mods</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Mods&amp;diff=7467"/>
		<updated>2025-05-18T07:49:48Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: /* List of published mods (not exhaustive) */ move picks swap to free mods&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Mods]] are a way of modifying/expanding the Warzone core gameplay beyond what is possible using the built-in configuration options. Modded games can be created only by [[Membership|members]], however you may ask a member to create a game for you.&lt;br /&gt;
&lt;br /&gt;
Mods are easy to use! When joining a game with mods, Warzone automatically downloads the mod. No installation is required. Simply join or create a game that has mods enabled. Since no installation is required, mods are fully supported on all Warzone platforms, including Android and iOS!&lt;br /&gt;
&lt;br /&gt;
Some mods have a menu where users can interact with the mod. To open this menu, from a game go to Game &amp;gt; Mod: &amp;lt;mod name&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Create your own Mod ==&lt;br /&gt;
See the [[Mod Developers Guide]] for details on how to get started making your own mod.&lt;br /&gt;
&lt;br /&gt;
To check if a mod idea is possible to implement, check [[Mod Framework Capabilities]].&lt;br /&gt;
&lt;br /&gt;
== List of published mods (not exhaustive) ==&lt;br /&gt;
Please note some mods may have bugs. Contact the mod developer (by [https://discord.gg/hqGkVXagyt Discord], private message or using the [[forum]]) to report a bug. Note that if a mod takes more than 10 seconds to run, a crash message will appear. This should only happen if a map that is too big (in terms of number of territories or bonuses).&lt;br /&gt;
&lt;br /&gt;
=== [[Mod Categories|Free Mods]] ===&lt;br /&gt;
* [[Picks swap]]&lt;br /&gt;
&lt;br /&gt;
=== [[Mod Categories|Promoted Mods]] ===&lt;br /&gt;
* [[Buy Neutral]]&lt;br /&gt;
* [[Diplomacy (mod)|Diplomacy]]&lt;br /&gt;
* [[Gift Armies]]&lt;br /&gt;
* [[Gift Gold]]&lt;br /&gt;
* [[Randomized Bonuses]]&lt;br /&gt;
* [[Randomized Wastelands]]&lt;br /&gt;
&lt;br /&gt;
=== [[Mod Categories|Standard Mods]] ===&lt;br /&gt;
* [[Advanced Diplo Mod V4]]&lt;br /&gt;
* [[Airports]]&lt;br /&gt;
* [[AI&#039;s don&#039;t play cards]]&lt;br /&gt;
* [[AIs don&#039;t deploy]]&lt;br /&gt;
* [[Buy Cards]]&lt;br /&gt;
* [[Commerce Plus]]&lt;br /&gt;
* [[Diplomacy 2 (mod)|Diplomacy 2]]&lt;br /&gt;
* [[Essentials (mod)|Essentials]]&lt;br /&gt;
* [[Late Airlifts]]&lt;br /&gt;
* [[Limited Attacks]]&lt;br /&gt;
* [[Limited Multiattacks]]&lt;br /&gt;
* [[Meteor Strike]]&lt;br /&gt;
* [[Neutral Moves]]&lt;br /&gt;
* [[Safe Start]]&lt;br /&gt;
* [[Swap Territories]]&lt;br /&gt;
* [[Take Turns]]&lt;br /&gt;
&lt;br /&gt;
=== [[Mod Categories|Experimental Mods]] ===&lt;br /&gt;
* [[(Beta) BetterCities and group Chat|&amp;lt;nowiki&amp;gt;[Beta] BetterCities and group Chat&amp;lt;/nowiki&amp;gt;]]&lt;br /&gt;
* [[Advanced Card Distribution (CS+)]]&lt;br /&gt;
* [[Advanced Card Distribution (per player)]]&lt;br /&gt;
* [[AI Central]]&lt;br /&gt;
* [[AIs don&#039;t attack]]&lt;br /&gt;
* [[Allow Guard to be Killed]]&lt;br /&gt;
* [[Army Caches]]&lt;br /&gt;
* [[Army Recruiter]]&lt;br /&gt;
* [[Artillery Strike]]&lt;br /&gt;
* [[Better don&#039;t fail an attack]]&lt;br /&gt;
* [[Bomb Card+]]&lt;br /&gt;
* [[Bomb Reduces Cities]]&lt;br /&gt;
* [[Bonus Airlift]]&lt;br /&gt;
* [[BonusValue QuickOverrider]]&lt;br /&gt;
* [[Buy Cards v2]]&lt;br /&gt;
* [[Capitalist]]&lt;br /&gt;
* [[Capture The Flag]]&lt;br /&gt;
* [[Card Caches]]&lt;br /&gt;
* [[CardPack - Card Actions]]&lt;br /&gt;
* [[CardPack - Disasters]]&lt;br /&gt;
* [[CardPack - OG]]&lt;br /&gt;
* [[CardPack - Utility]]&lt;br /&gt;
* [[CivLight]]&lt;br /&gt;
* [[Clock (mod)|Clock]]&lt;br /&gt;
* [[Combo Income]]&lt;br /&gt;
* [[Connected Commanders]]&lt;br /&gt;
* [[Connected Territories]]&lt;br /&gt;
* [[ConstructionWorker Unit]]&lt;br /&gt;
* [[Custom Card Package]]&lt;br /&gt;
* [[Decoy Card]]&lt;br /&gt;
* [[Deployment Limit]]&lt;br /&gt;
* [[Diplomat]]&lt;br /&gt;
* [[Don&#039;t lose a territory]]&lt;br /&gt;
* [[Dragons]]&lt;br /&gt;
* [[Draw Resolver]]&lt;br /&gt;
* [[Dreadful Hypothermia 4]]&lt;br /&gt;
* [[Dynamic Bonuses]]&lt;br /&gt;
* [[Encirclement]]&lt;br /&gt;
* [[Exclude From Auto Dist]]&lt;br /&gt;
* [[Expansion+]]&lt;br /&gt;
* [[Extended Randomized Bonuses]]&lt;br /&gt;
* [[Extended Winning Conditions]]&lt;br /&gt;
* [[Factions (mod)|Factions (V2.3)]]&lt;br /&gt;
* [[Force Vote to End]]&lt;br /&gt;
* [[Forced LD Card]]&lt;br /&gt;
* [[Fort Tactics (mod)|Fort Tactics]]&lt;br /&gt;
* [[Forts]]&lt;br /&gt;
* [[FreeExpansion]]&lt;br /&gt;
* [[Gift Armies 2]]&lt;br /&gt;
* [[Gift Gold Ultra 3]]&lt;br /&gt;
* [[Gold Reserves]]&lt;br /&gt;
* [[Goldmines (Commerce+)]]&lt;br /&gt;
* [[Highest Income Disadvantage]]&lt;br /&gt;
* [[Hospitals (mod)|Hospitals]]&lt;br /&gt;
* [[Host can Spy on &amp;amp; Eliminate players]]&lt;br /&gt;
* [[Hybrid Distribution]]&lt;br /&gt;
* [[Hybrid Distribution 2]]&lt;br /&gt;
* [[I.S. Agencies]]&lt;br /&gt;
* [[I.S. Character Pack ( Antiquity )]]&lt;br /&gt;
* [[I.S. Character Pack ( Ship Props )]]&lt;br /&gt;
* [[I.S. City Manager]]&lt;br /&gt;
* [[I.S. Terrain Types 2]]&lt;br /&gt;
* [[I.S. Zombie Slot]]&lt;br /&gt;
* [[Income Threshold]]&lt;br /&gt;
* [[Informations for spectators]]&lt;br /&gt;
* [[INSS Bonuses]]&lt;br /&gt;
* [[King of the Hill]]&lt;br /&gt;
* [[Late Gifts]]&lt;br /&gt;
* [[Late Wastelands]]&lt;br /&gt;
* [[Limited Multimove (multi-attack + multi-transfer)]]&lt;br /&gt;
* [[Local Deployment Helper (V3.0)]]&lt;br /&gt;
* [[Locked Down Regions]]&lt;br /&gt;
* [[Lotto Mod - Instant Random Winner|Lotto Mod -&amp;amp;gt; Instant Random Winner]]&lt;br /&gt;
* [[Medics]]&lt;br /&gt;
* [[Meteor Strike 2]]&lt;br /&gt;
* [[More_Distributions]]&lt;br /&gt;
* [[Mystery Card]]&lt;br /&gt;
* [[Negative Base Income]]&lt;br /&gt;
* [[No income for odd/even number of territories]]&lt;br /&gt;
* [[No Wrapped Attacks]]&lt;br /&gt;
* [[One Way Connections]]&lt;br /&gt;
* [[Orders Cost Income]]&lt;br /&gt;
* [[Order Notes]]&lt;br /&gt;
* [[Player Manager]]&lt;br /&gt;
* [[Portals]]&lt;br /&gt;
* [[Press This Button]]&lt;br /&gt;
* [[Priests]]&lt;br /&gt;
* [[Private Notes (mod)|Private Notes]]&lt;br /&gt;
* [[Random settings generator]]&lt;br /&gt;
* [[Random Starting Cities]]&lt;br /&gt;
* [[Randomized Orderlist]]&lt;br /&gt;
* [[Read Game Settings]]&lt;br /&gt;
* [[Resurrection Card]]&lt;br /&gt;
* [[Reverse Income]]&lt;br /&gt;
* [[Reversed Bonus Armies Per Territory]]&lt;br /&gt;
* [[Runtime Wastelands]]&lt;br /&gt;
* [[Spaced Out Starts]]&lt;br /&gt;
* [[Spawnbarriers]]&lt;br /&gt;
* [[Smoke Bomb Card]]&lt;br /&gt;
* [[Special units are Medics]]&lt;br /&gt;
* [[Spectator Mode]]&lt;br /&gt;
* [[Stack Limit]]&lt;br /&gt;
* [[Stationary commanders]]&lt;br /&gt;
* [[Structures Distribution (CS+)]]&lt;br /&gt;
* [[Surveillance Card+]]&lt;br /&gt;
* [[Swap Territories 2]]&lt;br /&gt;
* [[Tank Card]]&lt;br /&gt;
* [[Tanks]]&lt;br /&gt;
* [[Territories without armies become neutral]]&lt;br /&gt;
* [[TerritoryLimit]]&lt;br /&gt;
* [[Transport Only Airlift]]&lt;br /&gt;
* [[Villages]]&lt;br /&gt;
* [[VillagesV2]]&lt;br /&gt;
* [[Wastelands+]]&lt;br /&gt;
* [[Weaken blockades]]&lt;br /&gt;
* [[Where Am I?]]&lt;br /&gt;
&lt;br /&gt;
== Restrictions == &lt;br /&gt;
Single-player modded games are always free for members.  Likewise, multi-player games where all players are members are also free. Members can create a modded game for non-members by using the special &amp;quot;Allow non-members to join&amp;quot; check-box on the mods page. Using this special checkbox is free once per week to members, (restarts Monday), but after that it will cost a small fee (2 coins per player, member or not, in the game). This fee exists since mods can run on the server, and modded games are significantly more CPU-intensive for the Warzone server to run than non-modded games.&lt;br /&gt;
&lt;br /&gt;
[[Category:Mods|!]][[Category:Game Settings]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Mod_Categories&amp;diff=7466</id>
		<title>Mod Categories</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Mod_Categories&amp;diff=7466"/>
		<updated>2025-05-18T07:47:52Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: Add free mods&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Mods]] have 6 main categories:&lt;br /&gt;
* [[:Category:Free Mods|Free Mods]] - anyone can create games with them, including non-members&lt;br /&gt;
* [[:Category:Promoted Mods|Promoted]] - mod available for public use. Can be used in [[Quickmatch]] or [[tournaments]].&lt;br /&gt;
* [[:Category:Standard Mods|Standard]] - mod available for public use. Can be used in [[Quickmatch]] or [[tournaments]].&lt;br /&gt;
* [[:Category:Experimental Mods|Experimental]] - mod available for public use (may have bugs; &#039;rarely&#039; used)&lt;br /&gt;
* Development -&lt;br /&gt;
** Non-public - mod still being made. Allows for multiplayer testing. Mod code obtained from GitHub (how mods run normally).&lt;br /&gt;
** Local - mod still being made. Code runs from local files for use in single-player only.&lt;br /&gt;
* [[:Category:Deleted Mods|Deleted]] - mod was created and potentially made public but the mod author has since deleted it. Anyone could [[Mod Developers Guide|recreate or copy the mod]] and make it [[Public Mods|public]] again.&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod Categories]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Mod_API_Reference&amp;diff=7465</id>
		<title>Mod API Reference</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Mod_API_Reference&amp;diff=7465"/>
		<updated>2025-05-18T07:37:57Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: /* Newer API features */ 5.36 changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This explains how to use Warzone&#039;s [[Mods|mod]] API and links to the documentation for each object type.&lt;br /&gt;
&lt;br /&gt;
== Types ==&lt;br /&gt;
&lt;br /&gt;
When writing a mod, you&#039;ll encounter variables/objects of three basic types:&lt;br /&gt;
* Primitives: strings, numbers, booleans, etc.&lt;br /&gt;
* Tables: collections of key/value pairs.  A table is a lot like a hashmap or dictionary in other languages. Note that in Warzone, the key of a table will always be either a string or an integer.  Some places in this reference will refer to Arrays which are just tables with numeric keys starting at 1.&lt;br /&gt;
* Proxy objects: Discussed in the next section.&lt;br /&gt;
&lt;br /&gt;
== Proxy Objects ==&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;proxy object&#039;&#039;&#039; proxies information back and forth between your mod and Warzone.  You can tell if an object is a proxy object by looking for a &amp;lt;code&amp;gt;proxyType&amp;lt;/code&amp;gt; field.  All proxy objects always have the following fields:&lt;br /&gt;
&lt;br /&gt;
* proxyType: A string identifying the type of proxy object.&lt;br /&gt;
* readOnly: False if you&#039;re allowed to make changes to this proxy object, or true if it&#039;s read-only.&lt;br /&gt;
* readableKeys: An array containing all fields you&#039;re allowed to read from this object.&lt;br /&gt;
* writableKeys: An array containing all fields you&#039;re allowed to change on this object if readOnly is False.&lt;br /&gt;
&lt;br /&gt;
To read a field, simply read it like a property: &amp;lt;code&amp;gt;obj.field&amp;lt;/code&amp;gt;.  Similarly, to write to a proxy object, just assign to that field: &amp;lt;code&amp;gt;obj.field = newVal&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a handy function you can include in your mod to print out everything on a proxy object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow: auto&amp;quot;&amp;gt;&lt;br /&gt;
function PrintProxyInfo(obj)&lt;br /&gt;
    print(&#039;type=&#039; .. obj.proxyType .. &#039; readOnly=&#039; .. tostring(obj.readonly) .. &#039; readableKeys=&#039; .. table.concat(obj.readableKeys, &#039;,&#039;) .. &#039; writableKeys=&#039; .. table.concat(obj.writableKeys, &#039;,&#039;));&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Writing Tables ==&lt;br /&gt;
&lt;br /&gt;
If a writable Warzone proxy object exposes a table, and you wish to make changes to that table, you must assign the table back to the proxy object.  For example, assume you have a &amp;lt;code&amp;gt;GameStanding&amp;lt;/code&amp;gt; object named &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; which exposes the &amp;lt;code&amp;gt;Cards&amp;lt;/code&amp;gt; table, and you want to add something at index 9:&lt;br /&gt;
&lt;br /&gt;
  standing.Cards[9] = something  --WRONG!&lt;br /&gt;
&lt;br /&gt;
This code won&#039;t work since the proxy object isn&#039;t having anything assigned to it.  Proxy objects are only aware of changes when something is directly assigned into them.  To make this work, you must assign the table into the proxy object&#039;s field:&lt;br /&gt;
  local cards = standing.Cards&lt;br /&gt;
  cards[9] = something&lt;br /&gt;
  standing.Cards = cards; --Right&lt;br /&gt;
&lt;br /&gt;
Note: If you use lua&#039;s &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; function, proxy objects will identify themselves as tables.  However, that should be considered an implementation detail.  For the purposes of this wiki, proxy objects aren&#039;t considered tables.&lt;br /&gt;
&lt;br /&gt;
== API Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[Mod API Reference:ActiveCard|ActiveCard]]&lt;br /&gt;
* [[Mod API Reference:ActiveCardWoreOff|ActiveCardWoreOff]]&lt;br /&gt;
* [[Mod API Reference:Armies|Armies]]&lt;br /&gt;
* [[Mod API Reference:BonusDetails|BonusDetails]]&lt;br /&gt;
* [[Mod API Reference:Boss1|Boss1]]&lt;br /&gt;
* [[Mod API Reference:Boss2|Boss2]]&lt;br /&gt;
* [[Mod API Reference:Boss3|Boss3]]&lt;br /&gt;
* [[Mod API Reference:Boss4|Boss4]]&lt;br /&gt;
* [[Mod API Reference:CardGame|CardGame]]&lt;br /&gt;
* [[Mod API Reference:CardGameAbandon|CardGameAbandon]]&lt;br /&gt;
* [[Mod API Reference:CardGameAirlift|CardGameAirlift]]&lt;br /&gt;
* [[Mod API Reference:CardGameBlockade|CardGameBlockade]]&lt;br /&gt;
* [[Mod API Reference:CardGameBomb|CardGameBomb]]&lt;br /&gt;
* [[Mod API Reference:CardGameCustom|CardGameCustom]]&lt;br /&gt;
* [[Mod API Reference:CardGameDiplomacy|CardGameDiplomacy]]&lt;br /&gt;
* [[Mod API Reference:CardGameGift|CardGameGift]]&lt;br /&gt;
* [[Mod API Reference:CardGameOrderDelay|CardGameOrderDelay]]&lt;br /&gt;
* [[Mod API Reference:CardGameOrderPriority|CardGameOrderPriority]]&lt;br /&gt;
* [[Mod API Reference:CardGameReconnaissance|CardGameReconnaissance]]&lt;br /&gt;
* [[Mod API Reference:CardGameReinforcement|CardGameReinforcement]]&lt;br /&gt;
* [[Mod API Reference:CardGameSanctions|CardGameSanctions]]&lt;br /&gt;
* [[Mod API Reference:CardGameSpy|CardGameSpy]]&lt;br /&gt;
* [[Mod API Reference:CardGameSurveillance|CardGameSurveillance]]&lt;br /&gt;
* [[Mod API Reference:CardInstance|CardInstance]]&lt;br /&gt;
* [[Mod API Reference:ClanPlayerInfo|ClanPlayerInfo]]&lt;br /&gt;
* [[Mod API Reference:ClientGame|ClientGame]]&lt;br /&gt;
* [[Mod API Reference:Commander|Commander]]&lt;br /&gt;
* [[Mod API Reference:CustomScenario|CustomScenario]]&lt;br /&gt;
* [[Mod API Reference:CustomScenarioTerritory|CustomScenarioTerritory]]&lt;br /&gt;
* [[Mod API Reference:DistributionMode|DistributionMode]]&lt;br /&gt;
* [[Mod API Reference:Game|Game]]&lt;br /&gt;
* [[Mod API Reference:GameColor|GameColor]]&lt;br /&gt;
* [[Mod API Reference:GameOpenSeat|GameOpenSeat]]&lt;br /&gt;
* [[Mod API Reference:GameOrder|GameOrder]]&lt;br /&gt;
* [[Mod API Reference:GameOrderAttackTransfer|GameOrderAttackTransfer]]&lt;br /&gt;
* [[Mod API Reference:GameOrderAttackTransferResult|GameOrderAttackTransferResult]]&lt;br /&gt;
* [[Mod API Reference:GameOrderBossEvent|GameOrderBossEvent]]&lt;br /&gt;
* [[Mod API Reference:GameOrderCustom|GameOrderCustom]]&lt;br /&gt;
* [[Mod API Reference:GameOrderDeploy|GameOrderDeploy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderDiscard|GameOrderDiscard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderEvent|GameOrderEvent]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCard|GameOrderPlayCard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAbandon|GameOrderPlayCardAbandon]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAirlift|GameOrderPlayCardAirlift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAirliftResult|GameOrderPlayCardAirliftResult]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBlockade|GameOrderPlayCardBlockade]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBomb|GameOrderPlayCardBomb]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardCustom|GameOrderPlayCardCustom]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardDiplomacy|GameOrderPlayCardDiplomacy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardFogged|GameOrderPlayCardFogged]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardGift|GameOrderPlayCardGift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderDelay|GameOrderPlayCardOrderDelay]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderPriority|GameOrderPlayCardOrderPriority]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReconnaissance|GameOrderPlayCardReconnaissance]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReinforcement|GameOrderPlayCardReinforcement]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSanctions|GameOrderPlayCardSanctions]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSpy|GameOrderPlayCardSpy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSurveillance|GameOrderPlayCardSurveillance]]&lt;br /&gt;
* [[Mod API Reference:GameOrderReceiveCard|GameOrderReceiveCard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderStateTransition|GameOrderStateTransition]]&lt;br /&gt;
* [[Mod API Reference:GamePlayer|GamePlayer]]&lt;br /&gt;
* [[Mod API Reference:GameSettings|GameSettings]]&lt;br /&gt;
* [[Mod API Reference:GameStanding|GameStanding]]&lt;br /&gt;
* [[Mod API Reference:GameWL|GameWL]]&lt;br /&gt;
* [[Mod API Reference:IncomeMod|IncomeMod]]&lt;br /&gt;
* [[Mod API Reference:IsVersionOrHigher|IsVersionOrHigher]]&lt;br /&gt;
* [[Mod API Reference:MapDetails|MapDetails]]&lt;br /&gt;
* [[Mod API Reference:MapFamily|MapFamily]]&lt;br /&gt;
* [[Mod API Reference:NoParameterCardInstance|NoParameterCardInstance]]&lt;br /&gt;
* [[Mod API Reference:PendingStateTransition|PendingStateTransition]]&lt;br /&gt;
* [[Mod API Reference:PlayerCards|PlayerCards]]&lt;br /&gt;
* [[Mod API Reference:PlayerInfo2|PlayerInfo2]]&lt;br /&gt;
* [[Mod API Reference:ReinforcementCardInstance|ReinforcementCardInstance]]&lt;br /&gt;
* [[Mod API Reference:ServerGame|ServerGame]]&lt;br /&gt;
* [[Mod API Reference:SpecialUnit|SpecialUnit]]&lt;br /&gt;
* [[Mod API Reference:TerritoryConnection|TerritoryConnection]]&lt;br /&gt;
* [[Mod API Reference:TerritoryDetails|TerritoryDetails]]&lt;br /&gt;
* [[Mod API Reference:TerritoryModification|TerritoryModification]]&lt;br /&gt;
* [[Mod API Reference:TerritoryStanding|TerritoryStanding]]&lt;br /&gt;
* [[Mod API Reference:TickCount|TickCount]]&lt;br /&gt;
* [[Mod API Reference:UI|UI]]&lt;br /&gt;
* [[Mod API Reference:WL|WL]]&lt;br /&gt;
&lt;br /&gt;
== Newer API features ==&lt;br /&gt;
Some features were introduced after the first version of the Mod API framework and should be checked for using [[Mod_API_Reference:IsVersionOrHigher|IsVersionOrHigher]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
| Features&lt;br /&gt;
|-&lt;br /&gt;
| 5.36&lt;br /&gt;
| Transferring or airlifting a special unit to a teammate now updates the unit&#039;s owner&amp;lt;br&amp;gt;Added new tags: Special Units, Cards, Random&amp;lt;br&amp;gt;Fixed not being able to assign owner of a special unit to neutral&amp;lt;br&amp;gt;Fixed deployment not updating properly if a mod changed orders from Client_GameOrderCreated&amp;lt;br&amp;gt;Fixed Feature.png not showing correctly while mod was in development&lt;br /&gt;
|-&lt;br /&gt;
| 5.35&lt;br /&gt;
| Added mod browser, with sort/filter/search options, for easily finding or sorting through mods. It&#039;s viewable at https://www.warzone.com/Mods/, or integrated into the Create Game page when you click Change Mods.&amp;lt;br&amp;gt;Mega games now allow mods&amp;lt;br&amp;gt;Added a dedicated page for each mod, to replace the small mod info dialog&amp;lt;br&amp;gt;Mods can now have icons and images to show themselves off to players when browsing mods&amp;lt;br&amp;gt;Territory annotations now show in a faded form on the map when the order is not selected&amp;lt;br&amp;gt;Fixed a bug that caused an error if a mod sent a custom message without having a custom message handler, and at least one other mod in the game did have a custom message handler&amp;lt;br&amp;gt;Fixed annotation font sizes&amp;lt;br&amp;gt;Fixed guids so they&#039;re consistently converted to strings on different platforms&amp;lt;br&amp;gt;Fixed multi-attack games assuming no special units exist if commanders were turned off&lt;br /&gt;
|-&lt;br /&gt;
| 5.34.1&lt;br /&gt;
| [[Mod Hooks#Client Hooks|Client_CreateGame]]&amp;lt;br&amp;gt;Add &amp;lt;em&amp;gt;TerritoryAnnotationsOpt&amp;lt;/em&amp;gt; to [[Mod API Reference:GameOrderEvent|GameOrderEvent]], [[Mod API Reference:GameOrderCustom|GameOrderCustom]] and [[Mod API Reference:GameOrderPlayCardCustom|GameOrderPlayCardCustom]]&amp;lt;br&amp;gt;Add &amp;lt;em&amp;gt;JumpToActionSpotOpt&amp;lt;/em&amp;gt; to [[Mod API Reference:GameOrderCustom|GameOrderCustom]] and [[Mod API Reference:GameOrderPlayCardCustom|GameOrderPlayCardCustom]]&amp;lt;br&amp;gt;Add parameter 9 (&amp;lt;em&amp;gt;ActiveCardExpireBehaviorOptions&amp;lt;/em&amp;gt;) to &amp;lt;em&amp;gt;addCard&amp;lt;/em&amp;gt; when using [[Mod API Reference:Custom Cards|Custom Cards]]&amp;lt;br&amp;gt;Add optional parameters 4 and 5 to &amp;lt;em&amp;gt;playCard&amp;lt;/em&amp;gt; when using [[Mod API Reference:Custom Cards|Custom Cards]]&amp;lt;br&amp;gt;Add &amp;lt;em&amp;gt;MinWidth&amp;lt;/em&amp;gt; and &amp;lt;em&amp;gt;MinHeight&amp;lt;/em&amp;gt; to all [[Mod API Reference:UI|UI]] elements&amp;lt;br&amp;gt;Add &amp;lt;em&amp;gt;Alignment&amp;lt;/em&amp;gt; to UI Label element&amp;lt;br&amp;gt;Fixed a bug that caused stack traces to not show up in mod errors in some cases in Unity&amp;lt;br&amp;gt;Fixed fog mods on No-Fog games from giving errors&amp;lt;br&amp;gt;Fixed skipping of deploy orders in Client_GameOrderCreated making the deployment status report incorrectly&amp;lt;br&amp;gt;Fixed copying a game that used a mod that used the Server_Created hook&lt;br /&gt;
|-&lt;br /&gt;
| 5.34&lt;br /&gt;
| Create [[Mod_API_Reference:UI|radio buttons]]&amp;lt;br&amp;gt;Lua errors in the browser now give stack traces with line numbers in the mod-crashed dialog&amp;lt;br&amp;gt;[[Mod API Reference:Custom Cards|Client_PresentPlayCardUI]] now gives mods the ability to close the cards dialog - &amp;lt;em&amp;gt;closeCardsDialog&amp;lt;/em&amp;gt;&amp;lt;br&amp;gt;Fixed [[Mod Hooks#Client Hooks|Client_GameOrderCreated]] not being able to read territory picks in manual distribution games&amp;lt;br&amp;gt;Fixed WL.enumtype.ToString() functions&amp;lt;br&amp;gt;Fixed [[Mod API Reference:Custom Cards|Client_PresentPlayCardUI]] not registering [[Mod Game Data Storage|Mod]] and [[Mod API Reference:UI|UI]] hooks if it was called before other client hooks&amp;lt;br&amp;gt;Fixed an error if you set number of card pieces to 0 or negative&amp;lt;br&amp;gt;Fixed [[Mod API Reference:GameOrderAirliftResult|GameOrderAirliftResult]].Results throwing an error instead of returning nil when there are no results yet&amp;lt;br&amp;gt;Fixed allowing [[Mod API Reference:GameOrderAttackTransferResult|GameOrderAttackTransferResult]].ActualArmies to be set to a negative number&amp;lt;br&amp;gt;Fixed &amp;quot;can&#039;t transfer to a neutral&amp;quot; error that occurred when a mod resurrected a failed transfer&lt;br /&gt;
|-&lt;br /&gt;
| 5.33&lt;br /&gt;
| [[Mod API Reference:FogMod|WL.FogMod]]&amp;lt;br&amp;gt;[[Mod API Reference:GameOrderEvent|GameOrderEvent.FogModsOpt]]&amp;lt;br&amp;gt;[[Mod API Reference:GameOrderEvent|GameOrderEvent.RemoveFogModsOpt]]&amp;lt;br&amp;gt;[[Mod API Reference:GameStanding|GameStanding.IncomeMods]]&amp;lt;br&amp;gt;Fixed the AI trying to move its commander even if it doesn&#039;t control the territory the commander is on (which can happen with mods)&amp;lt;br&amp;gt;Fixed a bug that could make a generic Warzone error instead of a mod failed error if you tried to set a property on a destroyed object (for example, Button&#039;s SetInteractable)&lt;br /&gt;
|-&lt;br /&gt;
| 5.32.0.1&lt;br /&gt;
| &amp;quot;addCard&amp;quot; callback function now returns the card ID of the newly added card&amp;lt;br&amp;gt;Fixed a bug with custom cards that made old clients produce an error&lt;br /&gt;
|-&lt;br /&gt;
| 5.32&lt;br /&gt;
| [[Mod_Hooks#Client_Hooks|Client_GameOrderCreated]]&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_GameCommit]]&amp;lt;br&amp;gt;[[Mod API Reference:Custom Cards|Custom Cards]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.31&lt;br /&gt;
| Proper support for Neutral Special Units&amp;lt;br&amp;gt;Fixed GameOrderCustom.TurnPhase not correctly persisting in multi-player&amp;lt;br&amp;gt;Fixed Lua global state not persisting in some cases on the website&amp;lt;br&amp;gt;Note: this update &amp;lt;em&amp;gt;may have&amp;lt;/em&amp;gt; prevented the use of custom turn phases&lt;br /&gt;
|-&lt;br /&gt;
| 5.26&lt;br /&gt;
| Use [[Mod_API_Reference:ServerGame|ServerGame.SetPlayerResource]] in [[Mod_Hooks#Server_Hooks|Server_StartGame]]&amp;lt;br&amp;gt;Fixed a bug with airlifting special units that are set to always visible&lt;br /&gt;
|-&lt;br /&gt;
| 5.24.2&lt;br /&gt;
| [[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit.Health]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.24.1&lt;br /&gt;
| [[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TickCount|WL.TickCount]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.22.2&lt;br /&gt;
| [[Mod_API_Reference:Boss1|Boss1.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss2|Boss2.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss3|Boss3.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss4|Boss4.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Commander|Commander.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:CustomSpecialUnitBuilder|CustomSpecialUnitBuilder.Health]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.22&lt;br /&gt;
| [[Mod_API_Reference:GameOrderCustom|GameOrderCustom.OccursInPhaseOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.RemoveSpecialUnitsOpt]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.21&lt;br /&gt;
| [[Mod_Hooks#Client_Hooks|Client_PresentCommercePurchaseUI]]&amp;lt;br&amp;gt;[[Mod_API_Reference:ClientGame|ClientGame.CreateLocatorCircle]]&amp;lt;br&amp;gt;[[Mod_API_Reference:ClientGame|ClientGame.HighlightTerritories]]&amp;lt;br&amp;gt;[[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.JumpToActionSpotOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEventResult|GameOrderEventResult.CardInstancesCreated]]&amp;lt;br&amp;gt;[[Mod_API Reference:UI|UI.IsDestroyed]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|WL.CancelClickIntercept]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.20&lt;br /&gt;
| Setting [[Mod_API_Reference:TerritoryStanding|TerritoryStanding]].OwnerPlayerID to [[Mod_API_Reference:PlayerID|WL.PlayerID.AvailableForDistribution]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.AddCardPiecesOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.AddResourceOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.RemoveWholeCardsOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.AddArmies]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.AddStructuresOpt]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.17&lt;br /&gt;
| Using argument two of &amp;lt;code&amp;gt;addNewOrder&amp;lt;/code&amp;gt; in [[Mod_Hooks#Server_Hooks|Server_AdvanceTurn_Order]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.IncomeMods]]&amp;lt;br&amp;gt;[[Mod_API_Reference:IncomeMod|IncomeMod]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI.InterceptNextBonusLinkClick]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI.InterceptNextTerritoryClick]]&amp;lt;br&amp;gt;[[Mod_API_Reference:IsVersionOrHigher|WL.IsVersionOrHigher]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Arena]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ArmyCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ArmyCamp]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Attack]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Crafter]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.DigSite]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Draft]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Hospital]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Market]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.MercenaryCamp]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Mine]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.MoneyCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Mortar]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Power]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Recipe]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ResourceCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Smelter]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is a chance that a player has a version of the app that pre-dates the introduction of the [[Mod_API_Reference:IsVersionOrHigher|IsVersionOrHigher]] function. Many features were added after the first version of the Mod API Framework, but before the introduction of the function:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! Features&lt;br /&gt;
|-&lt;br /&gt;
| Up to 4.14.2&lt;br /&gt;
| Various bug fixes / performance enhancements relating to mods. No other changes made to mod API framework until version 5.17.&lt;br /&gt;
|-&lt;br /&gt;
| 3.20.2&lt;br /&gt;
| Mod support for Commerce games (Commerce added in 3.20.0)&lt;br /&gt;
|-&lt;br /&gt;
| 3.19.3&lt;br /&gt;
| Bug fixes for GameOrderPlayCard, Armies.Add, Armies.Subtract&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_GameRefresh]]&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_PresentMenuUI]]&amp;lt;br&amp;gt;[[Mod_Game_Data_Storage|Data storage]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Game|Game]].CreateDialog&amp;lt;br&amp;gt;[[Mod_API_Reference:Game|Game]].SendGameCustomMessage&amp;lt;br&amp;gt;[[Mod_API_Reference:GamePlayer|GamePlayer]].Income&amp;lt;br&amp;gt;[[Mod_Hooks#Server_Hooks|Server_GameCustomMessage]]&lt;br /&gt;
|-&lt;br /&gt;
| 3.19.2&lt;br /&gt;
| [[Mod_API_Reference:GameOrderCustom|GameOrderCustom]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI]].Alert&amp;lt;br&amp;gt;UI.Destroy&amp;lt;br&amp;gt;UI.PromptFromList&lt;br /&gt;
|-&lt;br /&gt;
| 3.18.2&lt;br /&gt;
| Moved all WarLight mod classes into the global &amp;quot;WL&amp;quot; namespace. For example, to create an Armies object instead of just saying &amp;quot;Armies()&amp;quot;, you now say WL.Armies.Create()&lt;br /&gt;
|-&lt;br /&gt;
| 3.18.0&lt;br /&gt;
| Mod API Framework added&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod Developers Guide]][[Category:Mod API Reference|!]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Mod_API_Reference&amp;diff=7462</id>
		<title>Mod API Reference</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Mod_API_Reference&amp;diff=7462"/>
		<updated>2025-04-22T14:57:21Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: /* Newer API features */ 5.35 features&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This explains how to use Warzone&#039;s [[Mods|mod]] API and links to the documentation for each object type.&lt;br /&gt;
&lt;br /&gt;
== Types ==&lt;br /&gt;
&lt;br /&gt;
When writing a mod, you&#039;ll encounter variables/objects of three basic types:&lt;br /&gt;
* Primitives: strings, numbers, booleans, etc.&lt;br /&gt;
* Tables: collections of key/value pairs.  A table is a lot like a hashmap or dictionary in other languages. Note that in Warzone, the key of a table will always be either a string or an integer.  Some places in this reference will refer to Arrays which are just tables with numeric keys starting at 1.&lt;br /&gt;
* Proxy objects: Discussed in the next section.&lt;br /&gt;
&lt;br /&gt;
== Proxy Objects ==&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;proxy object&#039;&#039;&#039; proxies information back and forth between your mod and Warzone.  You can tell if an object is a proxy object by looking for a &amp;lt;code&amp;gt;proxyType&amp;lt;/code&amp;gt; field.  All proxy objects always have the following fields:&lt;br /&gt;
&lt;br /&gt;
* proxyType: A string identifying the type of proxy object.&lt;br /&gt;
* readOnly: False if you&#039;re allowed to make changes to this proxy object, or true if it&#039;s read-only.&lt;br /&gt;
* readableKeys: An array containing all fields you&#039;re allowed to read from this object.&lt;br /&gt;
* writableKeys: An array containing all fields you&#039;re allowed to change on this object if readOnly is False.&lt;br /&gt;
&lt;br /&gt;
To read a field, simply read it like a property: &amp;lt;code&amp;gt;obj.field&amp;lt;/code&amp;gt;.  Similarly, to write to a proxy object, just assign to that field: &amp;lt;code&amp;gt;obj.field = newVal&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a handy function you can include in your mod to print out everything on a proxy object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow: auto&amp;quot;&amp;gt;&lt;br /&gt;
function PrintProxyInfo(obj)&lt;br /&gt;
    print(&#039;type=&#039; .. obj.proxyType .. &#039; readOnly=&#039; .. tostring(obj.readonly) .. &#039; readableKeys=&#039; .. table.concat(obj.readableKeys, &#039;,&#039;) .. &#039; writableKeys=&#039; .. table.concat(obj.writableKeys, &#039;,&#039;));&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Writing Tables ==&lt;br /&gt;
&lt;br /&gt;
If a writable Warzone proxy object exposes a table, and you wish to make changes to that table, you must assign the table back to the proxy object.  For example, assume you have a &amp;lt;code&amp;gt;GameStanding&amp;lt;/code&amp;gt; object named &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; which exposes the &amp;lt;code&amp;gt;Cards&amp;lt;/code&amp;gt; table, and you want to add something at index 9:&lt;br /&gt;
&lt;br /&gt;
  standing.Cards[9] = something  --WRONG!&lt;br /&gt;
&lt;br /&gt;
This code won&#039;t work since the proxy object isn&#039;t having anything assigned to it.  Proxy objects are only aware of changes when something is directly assigned into them.  To make this work, you must assign the table into the proxy object&#039;s field:&lt;br /&gt;
  local cards = standing.Cards&lt;br /&gt;
  cards[9] = something&lt;br /&gt;
  standing.Cards = cards; --Right&lt;br /&gt;
&lt;br /&gt;
Note: If you use lua&#039;s &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; function, proxy objects will identify themselves as tables.  However, that should be considered an implementation detail.  For the purposes of this wiki, proxy objects aren&#039;t considered tables.&lt;br /&gt;
&lt;br /&gt;
== API Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[Mod API Reference:ActiveCard|ActiveCard]]&lt;br /&gt;
* [[Mod API Reference:ActiveCardWoreOff|ActiveCardWoreOff]]&lt;br /&gt;
* [[Mod API Reference:Armies|Armies]]&lt;br /&gt;
* [[Mod API Reference:BonusDetails|BonusDetails]]&lt;br /&gt;
* [[Mod API Reference:Boss1|Boss1]]&lt;br /&gt;
* [[Mod API Reference:Boss2|Boss2]]&lt;br /&gt;
* [[Mod API Reference:Boss3|Boss3]]&lt;br /&gt;
* [[Mod API Reference:Boss4|Boss4]]&lt;br /&gt;
* [[Mod API Reference:CardGame|CardGame]]&lt;br /&gt;
* [[Mod API Reference:CardGameAbandon|CardGameAbandon]]&lt;br /&gt;
* [[Mod API Reference:CardGameAirlift|CardGameAirlift]]&lt;br /&gt;
* [[Mod API Reference:CardGameBlockade|CardGameBlockade]]&lt;br /&gt;
* [[Mod API Reference:CardGameBomb|CardGameBomb]]&lt;br /&gt;
* [[Mod API Reference:CardGameCustom|CardGameCustom]]&lt;br /&gt;
* [[Mod API Reference:CardGameDiplomacy|CardGameDiplomacy]]&lt;br /&gt;
* [[Mod API Reference:CardGameGift|CardGameGift]]&lt;br /&gt;
* [[Mod API Reference:CardGameOrderDelay|CardGameOrderDelay]]&lt;br /&gt;
* [[Mod API Reference:CardGameOrderPriority|CardGameOrderPriority]]&lt;br /&gt;
* [[Mod API Reference:CardGameReconnaissance|CardGameReconnaissance]]&lt;br /&gt;
* [[Mod API Reference:CardGameReinforcement|CardGameReinforcement]]&lt;br /&gt;
* [[Mod API Reference:CardGameSanctions|CardGameSanctions]]&lt;br /&gt;
* [[Mod API Reference:CardGameSpy|CardGameSpy]]&lt;br /&gt;
* [[Mod API Reference:CardGameSurveillance|CardGameSurveillance]]&lt;br /&gt;
* [[Mod API Reference:CardInstance|CardInstance]]&lt;br /&gt;
* [[Mod API Reference:ClanPlayerInfo|ClanPlayerInfo]]&lt;br /&gt;
* [[Mod API Reference:ClientGame|ClientGame]]&lt;br /&gt;
* [[Mod API Reference:Commander|Commander]]&lt;br /&gt;
* [[Mod API Reference:CustomScenario|CustomScenario]]&lt;br /&gt;
* [[Mod API Reference:CustomScenarioTerritory|CustomScenarioTerritory]]&lt;br /&gt;
* [[Mod API Reference:DistributionMode|DistributionMode]]&lt;br /&gt;
* [[Mod API Reference:Game|Game]]&lt;br /&gt;
* [[Mod API Reference:GameColor|GameColor]]&lt;br /&gt;
* [[Mod API Reference:GameOpenSeat|GameOpenSeat]]&lt;br /&gt;
* [[Mod API Reference:GameOrder|GameOrder]]&lt;br /&gt;
* [[Mod API Reference:GameOrderAttackTransfer|GameOrderAttackTransfer]]&lt;br /&gt;
* [[Mod API Reference:GameOrderAttackTransferResult|GameOrderAttackTransferResult]]&lt;br /&gt;
* [[Mod API Reference:GameOrderBossEvent|GameOrderBossEvent]]&lt;br /&gt;
* [[Mod API Reference:GameOrderCustom|GameOrderCustom]]&lt;br /&gt;
* [[Mod API Reference:GameOrderDeploy|GameOrderDeploy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderDiscard|GameOrderDiscard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderEvent|GameOrderEvent]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCard|GameOrderPlayCard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAbandon|GameOrderPlayCardAbandon]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAirlift|GameOrderPlayCardAirlift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAirliftResult|GameOrderPlayCardAirliftResult]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBlockade|GameOrderPlayCardBlockade]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBomb|GameOrderPlayCardBomb]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardCustom|GameOrderPlayCardCustom]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardDiplomacy|GameOrderPlayCardDiplomacy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardFogged|GameOrderPlayCardFogged]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardGift|GameOrderPlayCardGift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderDelay|GameOrderPlayCardOrderDelay]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderPriority|GameOrderPlayCardOrderPriority]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReconnaissance|GameOrderPlayCardReconnaissance]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReinforcement|GameOrderPlayCardReinforcement]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSanctions|GameOrderPlayCardSanctions]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSpy|GameOrderPlayCardSpy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSurveillance|GameOrderPlayCardSurveillance]]&lt;br /&gt;
* [[Mod API Reference:GameOrderReceiveCard|GameOrderReceiveCard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderStateTransition|GameOrderStateTransition]]&lt;br /&gt;
* [[Mod API Reference:GamePlayer|GamePlayer]]&lt;br /&gt;
* [[Mod API Reference:GameSettings|GameSettings]]&lt;br /&gt;
* [[Mod API Reference:GameStanding|GameStanding]]&lt;br /&gt;
* [[Mod API Reference:GameWL|GameWL]]&lt;br /&gt;
* [[Mod API Reference:IncomeMod|IncomeMod]]&lt;br /&gt;
* [[Mod API Reference:IsVersionOrHigher|IsVersionOrHigher]]&lt;br /&gt;
* [[Mod API Reference:MapDetails|MapDetails]]&lt;br /&gt;
* [[Mod API Reference:MapFamily|MapFamily]]&lt;br /&gt;
* [[Mod API Reference:NoParameterCardInstance|NoParameterCardInstance]]&lt;br /&gt;
* [[Mod API Reference:PendingStateTransition|PendingStateTransition]]&lt;br /&gt;
* [[Mod API Reference:PlayerCards|PlayerCards]]&lt;br /&gt;
* [[Mod API Reference:PlayerInfo2|PlayerInfo2]]&lt;br /&gt;
* [[Mod API Reference:ReinforcementCardInstance|ReinforcementCardInstance]]&lt;br /&gt;
* [[Mod API Reference:ServerGame|ServerGame]]&lt;br /&gt;
* [[Mod API Reference:SpecialUnit|SpecialUnit]]&lt;br /&gt;
* [[Mod API Reference:TerritoryConnection|TerritoryConnection]]&lt;br /&gt;
* [[Mod API Reference:TerritoryDetails|TerritoryDetails]]&lt;br /&gt;
* [[Mod API Reference:TerritoryModification|TerritoryModification]]&lt;br /&gt;
* [[Mod API Reference:TerritoryStanding|TerritoryStanding]]&lt;br /&gt;
* [[Mod API Reference:TickCount|TickCount]]&lt;br /&gt;
* [[Mod API Reference:UI|UI]]&lt;br /&gt;
* [[Mod API Reference:WL|WL]]&lt;br /&gt;
&lt;br /&gt;
== Newer API features ==&lt;br /&gt;
Some features were introduced after the first version of the Mod API framework and should be checked for using [[Mod_API_Reference:IsVersionOrHigher|IsVersionOrHigher]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
| Features&lt;br /&gt;
|-&lt;br /&gt;
| 5.35&lt;br /&gt;
| Added mod browser, with sort/filter/search options, for easily finding or sorting through mods. It&#039;s viewable at https://www.warzone.com/Mods/, or integrated into the Create Game page when you click Change Mods.&amp;lt;br&amp;gt;Mega games now allow mods&amp;lt;br&amp;gt;Added a dedicated page for each mod, to replace the small mod info dialog&amp;lt;br&amp;gt;Mods can now have icons and images to show themselves off to players when browsing mods&amp;lt;br&amp;gt;Territory annotations now show in a faded form on the map when the order is not selected&amp;lt;br&amp;gt;Fixed a bug that caused an error if a mod sent a custom message without having a custom message handler, and at least one other mod in the game did have a custom message handler&amp;lt;br&amp;gt;Fixed annotation font sizes&amp;lt;br&amp;gt;Fixed guids so they&#039;re consistently converted to strings on different platforms&amp;lt;br&amp;gt;Fixed multi-attack games assuming no special units exist if commanders were turned off&lt;br /&gt;
|-&lt;br /&gt;
| 5.34.1&lt;br /&gt;
| [[Mod Hooks#Client Hooks|Client_CreateGame]]&amp;lt;br&amp;gt;Add &amp;lt;em&amp;gt;TerritoryAnnotationsOpt&amp;lt;/em&amp;gt; to [[Mod API Reference:GameOrderEvent|GameOrderEvent]], [[Mod API Reference:GameOrderCustom|GameOrderCustom]] and [[Mod API Reference:GameOrderPlayCardCustom|GameOrderPlayCardCustom]]&amp;lt;br&amp;gt;Add &amp;lt;em&amp;gt;JumpToActionSpotOpt&amp;lt;/em&amp;gt; to [[Mod API Reference:GameOrderCustom|GameOrderCustom]] and [[Mod API Reference:GameOrderPlayCardCustom|GameOrderPlayCardCustom]]&amp;lt;br&amp;gt;Add parameter 9 (&amp;lt;em&amp;gt;ActiveCardExpireBehaviorOptions&amp;lt;/em&amp;gt;) to &amp;lt;em&amp;gt;addCard&amp;lt;/em&amp;gt; when using [[Mod API Reference:Custom Cards|Custom Cards]]&amp;lt;br&amp;gt;Add optional parameters 4 and 5 to &amp;lt;em&amp;gt;playCard&amp;lt;/em&amp;gt; when using [[Mod API Reference:Custom Cards|Custom Cards]]&amp;lt;br&amp;gt;Add &amp;lt;em&amp;gt;MinWidth&amp;lt;/em&amp;gt; and &amp;lt;em&amp;gt;MinHeight&amp;lt;/em&amp;gt; to all [[Mod API Reference:UI|UI]] elements&amp;lt;br&amp;gt;Add &amp;lt;em&amp;gt;Alignment&amp;lt;/em&amp;gt; to UI Label element&amp;lt;br&amp;gt;Fixed a bug that caused stack traces to not show up in mod errors in some cases in Unity&amp;lt;br&amp;gt;Fixed fog mods on No-Fog games from giving errors&amp;lt;br&amp;gt;Fixed skipping of deploy orders in Client_GameOrderCreated making the deployment status report incorrectly&amp;lt;br&amp;gt;Fixed copying a game that used a mod that used the Server_Created hook&lt;br /&gt;
|-&lt;br /&gt;
| 5.34&lt;br /&gt;
| Create [[Mod_API_Reference:UI|radio buttons]]&amp;lt;br&amp;gt;Lua errors in the browser now give stack traces with line numbers in the mod-crashed dialog&amp;lt;br&amp;gt;[[Mod API Reference:Custom Cards|Client_PresentPlayCardUI]] now gives mods the ability to close the cards dialog - &amp;lt;em&amp;gt;closeCardsDialog&amp;lt;/em&amp;gt;&amp;lt;br&amp;gt;Fixed [[Mod Hooks#Client Hooks|Client_GameOrderCreated]] not being able to read territory picks in manual distribution games&amp;lt;br&amp;gt;Fixed WL.enumtype.ToString() functions&amp;lt;br&amp;gt;Fixed [[Mod API Reference:Custom Cards|Client_PresentPlayCardUI]] not registering [[Mod Game Data Storage|Mod]] and [[Mod API Reference:UI|UI]] hooks if it was called before other client hooks&amp;lt;br&amp;gt;Fixed an error if you set number of card pieces to 0 or negative&amp;lt;br&amp;gt;Fixed [[Mod API Reference:GameOrderAirliftResult|GameOrderAirliftResult]].Results throwing an error instead of returning nil when there are no results yet&amp;lt;br&amp;gt;Fixed allowing [[Mod API Reference:GameOrderAttackTransferResult|GameOrderAttackTransferResult]].ActualArmies to be set to a negative number&amp;lt;br&amp;gt;Fixed &amp;quot;can&#039;t transfer to a neutral&amp;quot; error that occurred when a mod resurrected a failed transfer&lt;br /&gt;
|-&lt;br /&gt;
| 5.33&lt;br /&gt;
| [[Mod API Reference:FogMod|WL.FogMod]]&amp;lt;br&amp;gt;[[Mod API Reference:GameOrderEvent|GameOrderEvent.FogModsOpt]]&amp;lt;br&amp;gt;[[Mod API Reference:GameOrderEvent|GameOrderEvent.RemoveFogModsOpt]]&amp;lt;br&amp;gt;[[Mod API Reference:GameStanding|GameStanding.IncomeMods]]&amp;lt;br&amp;gt;Fixed the AI trying to move its commander even if it doesn&#039;t control the territory the commander is on (which can happen with mods)&amp;lt;br&amp;gt;Fixed a bug that could make a generic Warzone error instead of a mod failed error if you tried to set a property on a destroyed object (for example, Button&#039;s SetInteractable)&lt;br /&gt;
|-&lt;br /&gt;
| 5.32.0.1&lt;br /&gt;
| &amp;quot;addCard&amp;quot; callback function now returns the card ID of the newly added card&amp;lt;br&amp;gt;Fixed a bug with custom cards that made old clients produce an error&lt;br /&gt;
|-&lt;br /&gt;
| 5.32&lt;br /&gt;
| [[Mod_Hooks#Client_Hooks|Client_GameOrderCreated]]&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_GameCommit]]&amp;lt;br&amp;gt;[[Mod API Reference:Custom Cards|Custom Cards]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.31&lt;br /&gt;
| Proper support for Neutral Special Units&amp;lt;br&amp;gt;Fixed GameOrderCustom.TurnPhase not correctly persisting in multi-player&amp;lt;br&amp;gt;Fixed Lua global state not persisting in some cases on the website&amp;lt;br&amp;gt;Note: this update &amp;lt;em&amp;gt;may have&amp;lt;/em&amp;gt; prevented the use of custom turn phases&lt;br /&gt;
|-&lt;br /&gt;
| 5.26&lt;br /&gt;
| Use [[Mod_API_Reference:ServerGame|ServerGame.SetPlayerResource]] in [[Mod_Hooks#Server_Hooks|Server_StartGame]]&amp;lt;br&amp;gt;Fixed a bug with airlifting special units that are set to always visible&lt;br /&gt;
|-&lt;br /&gt;
| 5.24.2&lt;br /&gt;
| [[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit.Health]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.24.1&lt;br /&gt;
| [[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TickCount|WL.TickCount]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.22.2&lt;br /&gt;
| [[Mod_API_Reference:Boss1|Boss1.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss2|Boss2.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss3|Boss3.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss4|Boss4.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Commander|Commander.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:CustomSpecialUnitBuilder|CustomSpecialUnitBuilder.Health]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.22&lt;br /&gt;
| [[Mod_API_Reference:GameOrderCustom|GameOrderCustom.OccursInPhaseOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.RemoveSpecialUnitsOpt]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.21&lt;br /&gt;
| [[Mod_Hooks#Client_Hooks|Client_PresentCommercePurchaseUI]]&amp;lt;br&amp;gt;[[Mod_API_Reference:ClientGame|ClientGame.CreateLocatorCircle]]&amp;lt;br&amp;gt;[[Mod_API_Reference:ClientGame|ClientGame.HighlightTerritories]]&amp;lt;br&amp;gt;[[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.JumpToActionSpotOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEventResult|GameOrderEventResult.CardInstancesCreated]]&amp;lt;br&amp;gt;[[Mod_API Reference:UI|UI.IsDestroyed]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|WL.CancelClickIntercept]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.20&lt;br /&gt;
| Setting [[Mod_API_Reference:TerritoryStanding|TerritoryStanding]].OwnerPlayerID to [[Mod_API_Reference:PlayerID|WL.PlayerID.AvailableForDistribution]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.AddCardPiecesOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.AddResourceOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.RemoveWholeCardsOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.AddArmies]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.AddStructuresOpt]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.17&lt;br /&gt;
| Using argument two of &amp;lt;code&amp;gt;addNewOrder&amp;lt;/code&amp;gt; in [[Mod_Hooks#Server_Hooks|Server_AdvanceTurn_Order]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.IncomeMods]]&amp;lt;br&amp;gt;[[Mod_API_Reference:IncomeMod|IncomeMod]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI.InterceptNextBonusLinkClick]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI.InterceptNextTerritoryClick]]&amp;lt;br&amp;gt;[[Mod_API_Reference:IsVersionOrHigher|WL.IsVersionOrHigher]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Arena]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ArmyCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ArmyCamp]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Attack]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Crafter]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.DigSite]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Draft]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Hospital]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Market]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.MercenaryCamp]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Mine]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.MoneyCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Mortar]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Power]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Recipe]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ResourceCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Smelter]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is a chance that a player has a version of the app that pre-dates the introduction of the [[Mod_API_Reference:IsVersionOrHigher|IsVersionOrHigher]] function. Many features were added after the first version of the Mod API Framework, but before the introduction of the function:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! Features&lt;br /&gt;
|-&lt;br /&gt;
| Up to 4.14.2&lt;br /&gt;
| Various bug fixes / performance enhancements relating to mods. No other changes made to mod API framework until version 5.17.&lt;br /&gt;
|-&lt;br /&gt;
| 3.20.2&lt;br /&gt;
| Mod support for Commerce games (Commerce added in 3.20.0)&lt;br /&gt;
|-&lt;br /&gt;
| 3.19.3&lt;br /&gt;
| Bug fixes for GameOrderPlayCard, Armies.Add, Armies.Subtract&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_GameRefresh]]&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_PresentMenuUI]]&amp;lt;br&amp;gt;[[Mod_Game_Data_Storage|Data storage]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Game|Game]].CreateDialog&amp;lt;br&amp;gt;[[Mod_API_Reference:Game|Game]].SendGameCustomMessage&amp;lt;br&amp;gt;[[Mod_API_Reference:GamePlayer|GamePlayer]].Income&amp;lt;br&amp;gt;[[Mod_Hooks#Server_Hooks|Server_GameCustomMessage]]&lt;br /&gt;
|-&lt;br /&gt;
| 3.19.2&lt;br /&gt;
| [[Mod_API_Reference:GameOrderCustom|GameOrderCustom]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI]].Alert&amp;lt;br&amp;gt;UI.Destroy&amp;lt;br&amp;gt;UI.PromptFromList&lt;br /&gt;
|-&lt;br /&gt;
| 3.18.2&lt;br /&gt;
| Moved all WarLight mod classes into the global &amp;quot;WL&amp;quot; namespace. For example, to create an Armies object instead of just saying &amp;quot;Armies()&amp;quot;, you now say WL.Armies.Create()&lt;br /&gt;
|-&lt;br /&gt;
| 3.18.0&lt;br /&gt;
| Mod API Framework added&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod Developers Guide]][[Category:Mod API Reference|!]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Idle_Premium&amp;diff=7461</id>
		<title>Idle Premium</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Idle_Premium&amp;diff=7461"/>
		<updated>2025-04-20T14:51:27Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: add category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Idle Premium&#039;&#039;&#039; is a subscription for Warzone Idle that gives the following benefits:&lt;br /&gt;
&lt;br /&gt;
* Ad-watching benefits are permanently enabled. You’ll never have to watch an advertisement again! The ad-watch benefits are additional army camp production, additional smelter speed, additional crafter speed, or additional ore production. One of these four benefits will always be enabled for premium customers, and you can switch between the four at any time instantly. They’ll also work on platforms that don’t support ads, like the website and standalone client.&lt;br /&gt;
* Free coin wheel spin every day, without ever watching an advertisement and without needing to win a Warzone Classic game! Like the above benefit, this also enables the coin wheel on platforms without ads like the website and standalone client.&lt;br /&gt;
* You get a tank in your idle levels! You’ll see your tank appear on the territory you start on in the level. The tank can move to an adjacent territory once per hour, and whenever it moves onto an unconquered territory it instantly conquers that territory at zero army cost. This is a great way to take down those stubborn big territories.&lt;br /&gt;
* You can also queue up tank movement so it can move on its own while you’re idle. Time warping can help you move the tank even faster.&lt;br /&gt;
* You can also name your tank, to give it a personal charm as it tears your enemy to shreds.&lt;br /&gt;
* +12 hours max idle time&lt;br /&gt;
* Hospitals upgrade 100 times faster&lt;br /&gt;
* Mortars load instantly&lt;br /&gt;
* Your artifact dig crews can dig for artifacts 20% faster&lt;br /&gt;
* +2000 free Warzone coins (one-time)&lt;br /&gt;
* +5 of EVERY Warzone Power (one-time)&lt;br /&gt;
* Access to the [[Standalone Client]]&lt;br /&gt;
&lt;br /&gt;
Idle Premium can be purchased in the iOS app, Android app, or at https://www.warzone.com/Idle/Premium&lt;br /&gt;
&lt;br /&gt;
[[Category:Warzone Idle]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Template:Mod_infobox/row/icon&amp;diff=7460</id>
		<title>Template:Mod infobox/row/icon</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Template:Mod_infobox/row/icon&amp;diff=7460"/>
		<updated>2025-04-20T14:44:04Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{Mod infobox/row|Mod icon|{{{1|Icon}}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
For use on these templates:&lt;br /&gt;
* [[Template:Mod infobox main|Mod infobox main]]&lt;br /&gt;
* [[Template:Mod infobox|Mod infobox]]&lt;br /&gt;
&lt;br /&gt;
If an icon for the mod does not exist, do not use this template.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
|icon={{Mod infobox/row/icon|&amp;lt;icon URL&amp;gt;}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get an &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;icon URL&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;:&lt;br /&gt;
# Open the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;source&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; page&lt;br /&gt;
# Click the Icon.png file&lt;br /&gt;
# Right-click the image&lt;br /&gt;
# Select &amp;quot;Open Image in New Tab&amp;quot;&lt;br /&gt;
# A new tab should open&lt;br /&gt;
# Copy the URL of the new tab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Template:Mod_infobox/row/icon&amp;diff=7459</id>
		<title>Template:Mod infobox/row/icon</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Template:Mod_infobox/row/icon&amp;diff=7459"/>
		<updated>2025-04-20T14:43:12Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: add instructions on how to get icon urls&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{Mod infobox/row|Mod icon|{{{1|Icon}}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
For use on these templates:&lt;br /&gt;
* [[Template:Mod infobox main|Mod infobox main]]&lt;br /&gt;
* [[Template:Mod infobox|Mod infobox]]&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
|icon={{Mod infobox/row/icon|&amp;lt;icon URL&amp;gt;}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get an &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;icon URL&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;:&lt;br /&gt;
# Open the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;source&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; page&lt;br /&gt;
# Click the Icon.png file&lt;br /&gt;
# Right-click the image&lt;br /&gt;
# Select &amp;quot;Open Image in New Tab&amp;quot;&lt;br /&gt;
# A new tab should open&lt;br /&gt;
# Copy the URL of the new tab&lt;br /&gt;
&lt;br /&gt;
If an icon for the mod does not exist, do not use this template.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Buy_Neutral&amp;diff=7458</id>
		<title>Buy Neutral</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Buy_Neutral&amp;diff=7458"/>
		<updated>2025-04-19T21:43:54Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Mod infobox&lt;br /&gt;
|icon={{Mod infobox/row/icon|https://raw.githubusercontent.com/FizzerWL/ExampleMods/refs/heads/master/BuyNeutralMod/Icon.png}}&lt;br /&gt;
|creatorToken=62456969&lt;br /&gt;
|creatorName=Fizzer&lt;br /&gt;
|madePublicOnYear=2017&lt;br /&gt;
|madePublicOnMonth=08&lt;br /&gt;
|madePublicOnDay=08&lt;br /&gt;
&amp;lt;!-- assuming mods made by fizzer are instantly public --&amp;gt;&lt;br /&gt;
|category=Promoted&lt;br /&gt;
|tags={{modtag|Diplomacy}}&amp;lt;br&amp;gt;{{modtag|Strategic}}&amp;lt;br&amp;gt;{{modtag|Commerce}}&lt;br /&gt;
|appversion=5.21&lt;br /&gt;
|source=https://github.com/FizzerWL/ExampleMods/tree/master/BuyNeutralMod&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
This [[mod]] allows players to purchase neutral territories with [[gold]] in [[commerce]] games. Game creators can configure how expensive neutral territories are to purchase, per army. The game is not automatically made into a commerce one if commerce is not enabled.&lt;br /&gt;
&lt;br /&gt;
To a purchase a territory:&lt;br /&gt;
# Open the mod menu (Game &amp;gt; Mod: Buy Neutral) or open the Build menu and visit Buy Neutral.&lt;br /&gt;
# Select the territory (the territory must be fully visible - the territory owner and number of armies on the territory must be known). [[Spy, Reconnaissance, and Surveillance Cards|Spy, Reconnaissance or Surveillance cards]] should be played in games that use fog levels greater than normal [[fog]] to make the territory fully visible. There must not be any [[special unit]]s on the territory.&lt;br /&gt;
# A purchase order will be inserted into the [[orders list]].&lt;br /&gt;
# The purchase will complete when the turn advances.&lt;br /&gt;
&lt;br /&gt;
Purchasing neutral territories can happen during &amp;lt;em&amp;gt;any&amp;lt;/em&amp;gt; [[Turn phases|turn phase]]. If the territory is no longer neutral by the time the purchase order is processed, the purchase order will be cancelled and the gold spent on the order will be carried forward. If the cost of the territory is greater than the cost of the territory by the time the order is processed (like if there more armies are on the territory than when building orders), the purchase will not happen but the player will not get their gold back. If there are any special units on the territory by the time the order is processed, the purchase order will not be cancelled&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Template:Mod_infobox/row/icon&amp;diff=7457</id>
		<title>Template:Mod infobox/row/icon</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Template:Mod_infobox/row/icon&amp;diff=7457"/>
		<updated>2025-04-19T21:11:47Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{Mod infobox/row|Mod icon|{{{1|Icon}}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
For use on these templates:&lt;br /&gt;
* [[Template:Mod infobox main|Mod infobox main]]&lt;br /&gt;
* [[Template:Mod infobox|Mod infobox]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Template:Mod_infobox_main&amp;diff=7456</id>
		<title>Template:Mod infobox main</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Template:Mod_infobox_main&amp;diff=7456"/>
		<updated>2025-04-19T21:11:19Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;infobox&amp;quot;&amp;gt;{{Mod infobox/row|Mod name|&amp;lt;strong&amp;gt;{{{name|{{FULLPAGENAME}}}}}&amp;lt;/strong&amp;gt;}}{{{icon|}}}{{Mod infobox/row|Mod creator|{{{1|[https://www.warzone.com/Profile?p={{{creatorToken|creatorToken}}} {{{creatorName|creatorName}}}]}}}}}{{Mod infobox/row|[[:Category:Mods made public by year|Made public on]]|{{Mod infobox/date|{{{madePublicOnYear|????}}}|{{{madePublicOnMonth|??}}}|{{{madePublicOnDay|??}}}|{{{madePublicOnRef|}}}}}{{{madePublicOnAlt|}}}}}{{Mod infobox/row|[[Mod Categories|Category]]|[[:Category:{{{category|Deleted}}} Mods|{{{category|Deleted}}}]]}}{{Mod infobox/row|[[:Category:Mods by tag|Tags]]|{{{tags|tags}}}}}{{Mod infobox/row|Requires Warzone version|{{{appversion|4.14.2}}}+}}{{Mod infobox/row|Source code|[{{{source|https://example.com}}} {{{sourcehost|GitHub}}}]}}&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
This template should only be used by [[Template:Mod infobox]] or [[:Category:Deleted Mods|deleted mods]]. [[Template:Deleted Mod]] should be used at the top of the page, before the template is included: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Deleted Mod}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{Mod infobox main&lt;br /&gt;
|name=(name of mod, defaults to page name)&lt;br /&gt;
|creatorToken=(the ?p=&amp;lt;numbers&amp;gt; on a player URL)&lt;br /&gt;
|creatorName=(name of player who created the mod)&lt;br /&gt;
|madePublicOnYear=yyyy (forced)&lt;br /&gt;
|madePublicOnMonth=mm (defaults to ??)&lt;br /&gt;
|madePublicOnDay=dd (defaults to ??)&lt;br /&gt;
|madePublicOnRef=(optional)&lt;br /&gt;
|madePublicOnAlt=(optional)&lt;br /&gt;
|category=(one of Promoted, Standard, Experimental or Deleted, defaults to Deleted)&lt;br /&gt;
|tags={{ModtagMain|Tag1}}&amp;lt;br&amp;gt;{{ModtagMain|Tag2}}&amp;lt;br&amp;gt;{{ModtagMain|Tag3}}&lt;br /&gt;
|appversion=(optional, defaults to 4.14.2)&lt;br /&gt;
|source=url&lt;br /&gt;
|sourcehost=(optional, defaults to GitHub)&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is an optional &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;icon&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; field that appears underneath &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;name&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. See [[Template:Mod infobox/row/icon]] for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;noinclude&amp;gt;[[Category:Infobox Templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Buy_Neutral&amp;diff=7455</id>
		<title>Buy Neutral</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Buy_Neutral&amp;diff=7455"/>
		<updated>2025-04-19T21:10:10Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Mod infobox&lt;br /&gt;
|icon={{Mod infobox/row/icon|https://raw.githubusercontent.com/FizzerWL/ExampleMods/refs/heads/master/BuyNeutralMod/Icon.png&lt;br /&gt;
|creatorToken=62456969}}&lt;br /&gt;
|creatorName=Fizzer&lt;br /&gt;
|madePublicOnYear=2017&lt;br /&gt;
|madePublicOnMonth=08&lt;br /&gt;
|madePublicOnDay=08&lt;br /&gt;
&amp;lt;!-- assuming mods made by fizzer are instantly public --&amp;gt;&lt;br /&gt;
|category=Promoted&lt;br /&gt;
|tags={{modtag|Diplomacy}}&amp;lt;br&amp;gt;{{modtag|Strategic}}&amp;lt;br&amp;gt;{{modtag|Commerce}}&lt;br /&gt;
|appversion=5.21&lt;br /&gt;
|source=https://github.com/FizzerWL/ExampleMods/tree/master/BuyNeutralMod&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
This [[mod]] allows players to purchase neutral territories with [[gold]] in [[commerce]] games. Game creators can configure how expensive neutral territories are to purchase, per army. The game is not automatically made into a commerce one if commerce is not enabled.&lt;br /&gt;
&lt;br /&gt;
To a purchase a territory:&lt;br /&gt;
# Open the mod menu (Game &amp;gt; Mod: Buy Neutral) or open the Build menu and visit Buy Neutral.&lt;br /&gt;
# Select the territory (the territory must be fully visible - the territory owner and number of armies on the territory must be known). [[Spy, Reconnaissance, and Surveillance Cards|Spy, Reconnaissance or Surveillance cards]] should be played in games that use fog levels greater than normal [[fog]] to make the territory fully visible. There must not be any [[special unit]]s on the territory.&lt;br /&gt;
# A purchase order will be inserted into the [[orders list]].&lt;br /&gt;
# The purchase will complete when the turn advances.&lt;br /&gt;
&lt;br /&gt;
Purchasing neutral territories can happen during &amp;lt;em&amp;gt;any&amp;lt;/em&amp;gt; [[Turn phases|turn phase]]. If the territory is no longer neutral by the time the purchase order is processed, the purchase order will be cancelled and the gold spent on the order will be carried forward. If the cost of the territory is greater than the cost of the territory by the time the order is processed (like if there more armies are on the territory than when building orders), the purchase will not happen but the player will not get their gold back. If there are any special units on the territory by the time the order is processed, the purchase order will not be cancelled&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Buy_Neutral&amp;diff=7454</id>
		<title>Buy Neutral</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Buy_Neutral&amp;diff=7454"/>
		<updated>2025-04-19T21:09:52Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: add mod icon&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Mod infobox&lt;br /&gt;
|icon={{Mod infoxbox/row/icon|https://raw.githubusercontent.com/FizzerWL/ExampleMods/refs/heads/master/BuyNeutralMod/Icon.png&lt;br /&gt;
|creatorToken=62456969}}&lt;br /&gt;
|creatorName=Fizzer&lt;br /&gt;
|madePublicOnYear=2017&lt;br /&gt;
|madePublicOnMonth=08&lt;br /&gt;
|madePublicOnDay=08&lt;br /&gt;
&amp;lt;!-- assuming mods made by fizzer are instantly public --&amp;gt;&lt;br /&gt;
|category=Promoted&lt;br /&gt;
|tags={{modtag|Diplomacy}}&amp;lt;br&amp;gt;{{modtag|Strategic}}&amp;lt;br&amp;gt;{{modtag|Commerce}}&lt;br /&gt;
|appversion=5.21&lt;br /&gt;
|source=https://github.com/FizzerWL/ExampleMods/tree/master/BuyNeutralMod&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
This [[mod]] allows players to purchase neutral territories with [[gold]] in [[commerce]] games. Game creators can configure how expensive neutral territories are to purchase, per army. The game is not automatically made into a commerce one if commerce is not enabled.&lt;br /&gt;
&lt;br /&gt;
To a purchase a territory:&lt;br /&gt;
# Open the mod menu (Game &amp;gt; Mod: Buy Neutral) or open the Build menu and visit Buy Neutral.&lt;br /&gt;
# Select the territory (the territory must be fully visible - the territory owner and number of armies on the territory must be known). [[Spy, Reconnaissance, and Surveillance Cards|Spy, Reconnaissance or Surveillance cards]] should be played in games that use fog levels greater than normal [[fog]] to make the territory fully visible. There must not be any [[special unit]]s on the territory.&lt;br /&gt;
# A purchase order will be inserted into the [[orders list]].&lt;br /&gt;
# The purchase will complete when the turn advances.&lt;br /&gt;
&lt;br /&gt;
Purchasing neutral territories can happen during &amp;lt;em&amp;gt;any&amp;lt;/em&amp;gt; [[Turn phases|turn phase]]. If the territory is no longer neutral by the time the purchase order is processed, the purchase order will be cancelled and the gold spent on the order will be carried forward. If the cost of the territory is greater than the cost of the territory by the time the order is processed (like if there more armies are on the territory than when building orders), the purchase will not happen but the player will not get their gold back. If there are any special units on the territory by the time the order is processed, the purchase order will not be cancelled&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Template:Mod_infobox&amp;diff=7453</id>
		<title>Template:Mod infobox</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Template:Mod_infobox&amp;diff=7453"/>
		<updated>2025-04-19T21:08:44Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: make icon field actually optional&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;[[Category:Mods]][[Category:Mods made public during {{{madePublicOnYear|????}}}]][[Category:{{{category|Experimental}}} Mods]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{Mod infobox main&lt;br /&gt;
|name={{{name|{{FULLPAGENAME}}}}}&lt;br /&gt;
|icon={{{icon|}}}&lt;br /&gt;
|creatorToken={{{creatorToken|creatorToken}}}&lt;br /&gt;
|creatorName={{{creatorName|creatorName}}}&lt;br /&gt;
|madePublicOnYear={{{madePublicOnYear|????}}}&lt;br /&gt;
|madePublicOnMonth={{{madePublicOnMonth|??}}}&lt;br /&gt;
|madePublicOnDay={{{madePublicOnDay|??}}}&lt;br /&gt;
|madePublicOnRef={{{madePublicOnRef|}}}&lt;br /&gt;
|madePublicOnAlt={{{madePublicOnAlt|}}}&lt;br /&gt;
|category={{{category|Experimental}}}&lt;br /&gt;
|tags={{{tags|tags}}}&lt;br /&gt;
|appversion={{{appversion|4.14.2}}}&lt;br /&gt;
|source={{{source|https://example.com}}}&lt;br /&gt;
|sourcehost={{{sourcehost|GitHub}}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For giving info about available public mods. [[:Category:Deleted Mods|Deleted mods]] should use [[Template:Mod infobox main]], as categories will not be automatically included using that template, unlike this one.&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{Mod infobox&lt;br /&gt;
|name=(name of mod, defaults to page name)&lt;br /&gt;
|creatorToken=(the ?p=&amp;lt;numbers&amp;gt; on a player URL)&lt;br /&gt;
|creatorName=(name of player who created the mod)&lt;br /&gt;
|madePublicOnYear=yyyy (forced)&lt;br /&gt;
|madePublicOnMonth=mm (defaults to ??)&lt;br /&gt;
|madePublicOnDay=dd (defaults to ??)&lt;br /&gt;
|madePublicOnRef=(optional)&lt;br /&gt;
|madePublicOnAlt=(optional)&lt;br /&gt;
|category=(one of Promoted, Standard or Experimental, defaults to Experimental)&lt;br /&gt;
|tags={{modtag|Tag1}}&amp;lt;br&amp;gt;{{modtag|Tag2}}&amp;lt;br&amp;gt;{{modtag|Tag3}}&lt;br /&gt;
|appversion=(optional, defaults to 4.14.2)&lt;br /&gt;
|source=url&lt;br /&gt;
|sourcehost=(optional, defaults to GitHub)&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is an optional &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;icon&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; field that appears underneath &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;name&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. See [[Template:Mod infobox/row/icon]] for details.&lt;br /&gt;
&lt;br /&gt;
[[Tanks|Tank]] example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{Mod infobox&lt;br /&gt;
|creatorToken=62456969&lt;br /&gt;
|creatorName=Fizzer&lt;br /&gt;
|madePublicOnYear=2022&lt;br /&gt;
|madePublicOnMonth=10&lt;br /&gt;
|madePublicOnDay=26&lt;br /&gt;
|madePublicOnRef={{ref|https://www.warzone.com/blog/index.php/2022/10/update-5-21-tanks-mod-improvements-commander-improvements/}}&lt;br /&gt;
|tags={{modtag|Diplomacy}}&amp;lt;br&amp;gt;{{modtag|Strategic}}&amp;lt;br&amp;gt;{{modtag|Commerce}}&lt;br /&gt;
|appversion=5.24.1&lt;br /&gt;
|source=https://github.com/FizzerWL/ExampleMods/tree/master/TanksMod&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the mod was announced public but there isn&#039;t a way to verify it using means which require having certain accounts or access to other places outside of Warzone such as Discord servers, you should still include the date but include a comment such as one of the below beneath the &amp;lt;code&amp;gt;madePublicOn&amp;lt;/code&amp;gt; fields:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- assuming mods made by fizzer are instantly public --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord archives finished-mod-list --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord finished-mod-list --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord community-hangout-chat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord public-modders-chat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord archives mod-suggestions --&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Do not use links to them in the &amp;lt;code&amp;gt;madePublicOnRef&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;madePublicOnAlt&amp;lt;/code&amp;gt; is for if a mod was made not public after being made public and then made public again. Add dates using [[Template:Mod infobox/date]].&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;noinclude&amp;gt;[[Category:Infobox Templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Template:Mod_infobox&amp;diff=7452</id>
		<title>Template:Mod infobox</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Template:Mod_infobox&amp;diff=7452"/>
		<updated>2025-04-19T21:04:49Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;[[Category:Mods]][[Category:Mods made public during {{{madePublicOnYear|????}}}]][[Category:{{{category|Experimental}}} Mods]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{Mod infobox main&lt;br /&gt;
|name={{{name|{{FULLPAGENAME}}}}}&lt;br /&gt;
|icon={{Mod infobox/row/icon|{{{icon|}}}}}&lt;br /&gt;
|creatorToken={{{creatorToken|creatorToken}}}&lt;br /&gt;
|creatorName={{{creatorName|creatorName}}}&lt;br /&gt;
|madePublicOnYear={{{madePublicOnYear|????}}}&lt;br /&gt;
|madePublicOnMonth={{{madePublicOnMonth|??}}}&lt;br /&gt;
|madePublicOnDay={{{madePublicOnDay|??}}}&lt;br /&gt;
|madePublicOnRef={{{madePublicOnRef|}}}&lt;br /&gt;
|madePublicOnAlt={{{madePublicOnAlt|}}}&lt;br /&gt;
|category={{{category|Experimental}}}&lt;br /&gt;
|tags={{{tags|tags}}}&lt;br /&gt;
|appversion={{{appversion|4.14.2}}}&lt;br /&gt;
|source={{{source|https://example.com}}}&lt;br /&gt;
|sourcehost={{{sourcehost|GitHub}}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For giving info about available public mods. [[:Category:Deleted Mods|Deleted mods]] should use [[Template:Mod infobox main]], as categories will not be automatically included using that template, unlike this one.&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{Mod infobox&lt;br /&gt;
|name=(name of mod, defaults to page name)&lt;br /&gt;
|creatorToken=(the ?p=&amp;lt;numbers&amp;gt; on a player URL)&lt;br /&gt;
|creatorName=(name of player who created the mod)&lt;br /&gt;
|madePublicOnYear=yyyy (forced)&lt;br /&gt;
|madePublicOnMonth=mm (defaults to ??)&lt;br /&gt;
|madePublicOnDay=dd (defaults to ??)&lt;br /&gt;
|madePublicOnRef=(optional)&lt;br /&gt;
|madePublicOnAlt=(optional)&lt;br /&gt;
|category=(one of Promoted, Standard or Experimental, defaults to Experimental)&lt;br /&gt;
|tags={{modtag|Tag1}}&amp;lt;br&amp;gt;{{modtag|Tag2}}&amp;lt;br&amp;gt;{{modtag|Tag3}}&lt;br /&gt;
|appversion=(optional, defaults to 4.14.2)&lt;br /&gt;
|source=url&lt;br /&gt;
|sourcehost=(optional, defaults to GitHub)&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is an optional &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;icon&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; field that appears underneath &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;name&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. See [[Template:Mod infobox/row/icon]] for details.&lt;br /&gt;
&lt;br /&gt;
[[Tanks|Tank]] example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{Mod infobox&lt;br /&gt;
|creatorToken=62456969&lt;br /&gt;
|creatorName=Fizzer&lt;br /&gt;
|madePublicOnYear=2022&lt;br /&gt;
|madePublicOnMonth=10&lt;br /&gt;
|madePublicOnDay=26&lt;br /&gt;
|madePublicOnRef={{ref|https://www.warzone.com/blog/index.php/2022/10/update-5-21-tanks-mod-improvements-commander-improvements/}}&lt;br /&gt;
|tags={{modtag|Diplomacy}}&amp;lt;br&amp;gt;{{modtag|Strategic}}&amp;lt;br&amp;gt;{{modtag|Commerce}}&lt;br /&gt;
|appversion=5.24.1&lt;br /&gt;
|source=https://github.com/FizzerWL/ExampleMods/tree/master/TanksMod&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the mod was announced public but there isn&#039;t a way to verify it using means which require having certain accounts or access to other places outside of Warzone such as Discord servers, you should still include the date but include a comment such as one of the below beneath the &amp;lt;code&amp;gt;madePublicOn&amp;lt;/code&amp;gt; fields:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- assuming mods made by fizzer are instantly public --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord archives finished-mod-list --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord finished-mod-list --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord community-hangout-chat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord public-modders-chat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord archives mod-suggestions --&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Do not use links to them in the &amp;lt;code&amp;gt;madePublicOnRef&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;madePublicOnAlt&amp;lt;/code&amp;gt; is for if a mod was made not public after being made public and then made public again. Add dates using [[Template:Mod infobox/date]].&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;noinclude&amp;gt;[[Category:Infobox Templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Template:Mod_infobox&amp;diff=7451</id>
		<title>Template:Mod infobox</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Template:Mod_infobox&amp;diff=7451"/>
		<updated>2025-04-19T21:00:48Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;[[Category:Mods]][[Category:Mods made public during {{{madePublicOnYear|????}}}]][[Category:{{{category|Experimental}}} Mods]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{Mod infobox main&lt;br /&gt;
|name={{{name|{{FULLPAGENAME}}}}}&lt;br /&gt;
|creatorToken={{{creatorToken|creatorToken}}}&lt;br /&gt;
|creatorName={{{creatorName|creatorName}}}&lt;br /&gt;
|madePublicOnYear={{{madePublicOnYear|????}}}&lt;br /&gt;
|madePublicOnMonth={{{madePublicOnMonth|??}}}&lt;br /&gt;
|madePublicOnDay={{{madePublicOnDay|??}}}&lt;br /&gt;
|madePublicOnRef={{{madePublicOnRef|}}}&lt;br /&gt;
|madePublicOnAlt={{{madePublicOnAlt|}}}&lt;br /&gt;
|category={{{category|Experimental}}}&lt;br /&gt;
|tags={{{tags|tags}}}&lt;br /&gt;
|appversion={{{appversion|4.14.2}}}&lt;br /&gt;
|source={{{source|https://example.com}}}&lt;br /&gt;
|sourcehost={{{sourcehost|GitHub}}}&lt;br /&gt;
}}{{{icon|Mod infobox/row/icon|{{{icon}}}}}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For giving info about available public mods. [[:Category:Deleted Mods|Deleted mods]] should use [[Template:Mod infobox main]], as categories will not be automatically included using that template, unlike this one.&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{Mod infobox&lt;br /&gt;
|name=(name of mod, defaults to page name)&lt;br /&gt;
|creatorToken=(the ?p=&amp;lt;numbers&amp;gt; on a player URL)&lt;br /&gt;
|creatorName=(name of player who created the mod)&lt;br /&gt;
|madePublicOnYear=yyyy (forced)&lt;br /&gt;
|madePublicOnMonth=mm (defaults to ??)&lt;br /&gt;
|madePublicOnDay=dd (defaults to ??)&lt;br /&gt;
|madePublicOnRef=(optional)&lt;br /&gt;
|madePublicOnAlt=(optional)&lt;br /&gt;
|category=(one of Promoted, Standard or Experimental, defaults to Experimental)&lt;br /&gt;
|tags={{modtag|Tag1}}&amp;lt;br&amp;gt;{{modtag|Tag2}}&amp;lt;br&amp;gt;{{modtag|Tag3}}&lt;br /&gt;
|appversion=(optional, defaults to 4.14.2)&lt;br /&gt;
|source=url&lt;br /&gt;
|sourcehost=(optional, defaults to GitHub)&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is an optional &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;icon&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; field that appears underneath &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;name&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. See [[Template:Mod infobox/row/icon]] for details.&lt;br /&gt;
&lt;br /&gt;
[[Tanks|Tank]] example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{Mod infobox&lt;br /&gt;
|creatorToken=62456969&lt;br /&gt;
|creatorName=Fizzer&lt;br /&gt;
|madePublicOnYear=2022&lt;br /&gt;
|madePublicOnMonth=10&lt;br /&gt;
|madePublicOnDay=26&lt;br /&gt;
|madePublicOnRef={{ref|https://www.warzone.com/blog/index.php/2022/10/update-5-21-tanks-mod-improvements-commander-improvements/}}&lt;br /&gt;
|tags={{modtag|Diplomacy}}&amp;lt;br&amp;gt;{{modtag|Strategic}}&amp;lt;br&amp;gt;{{modtag|Commerce}}&lt;br /&gt;
|appversion=5.24.1&lt;br /&gt;
|source=https://github.com/FizzerWL/ExampleMods/tree/master/TanksMod&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the mod was announced public but there isn&#039;t a way to verify it using means which require having certain accounts or access to other places outside of Warzone such as Discord servers, you should still include the date but include a comment such as one of the below beneath the &amp;lt;code&amp;gt;madePublicOn&amp;lt;/code&amp;gt; fields:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- assuming mods made by fizzer are instantly public --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord archives finished-mod-list --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord finished-mod-list --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord community-hangout-chat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord public-modders-chat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord archives mod-suggestions --&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Do not use links to them in the &amp;lt;code&amp;gt;madePublicOnRef&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;madePublicOnAlt&amp;lt;/code&amp;gt; is for if a mod was made not public after being made public and then made public again. Add dates using [[Template:Mod infobox/date]].&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;noinclude&amp;gt;[[Category:Infobox Templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Template:Mod_infobox&amp;diff=7450</id>
		<title>Template:Mod infobox</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Template:Mod_infobox&amp;diff=7450"/>
		<updated>2025-04-19T21:00:00Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;[[Category:Mods]][[Category:Mods made public during {{{madePublicOnYear|????}}}]][[Category:{{{category|Experimental}}} Mods]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{Mod infobox main&lt;br /&gt;
|name={{{name|{{FULLPAGENAME}}}}}&lt;br /&gt;
{{{icon|Mod infobox/row/icon|{{{icon}}}}}}&lt;br /&gt;
|creatorToken={{{creatorToken|creatorToken}}}&lt;br /&gt;
|creatorName={{{creatorName|creatorName}}}&lt;br /&gt;
|madePublicOnYear={{{madePublicOnYear|????}}}&lt;br /&gt;
|madePublicOnMonth={{{madePublicOnMonth|??}}}&lt;br /&gt;
|madePublicOnDay={{{madePublicOnDay|??}}}&lt;br /&gt;
|madePublicOnRef={{{madePublicOnRef|}}}&lt;br /&gt;
|madePublicOnAlt={{{madePublicOnAlt|}}}&lt;br /&gt;
|category={{{category|Experimental}}}&lt;br /&gt;
|tags={{{tags|tags}}}&lt;br /&gt;
|appversion={{{appversion|4.14.2}}}&lt;br /&gt;
|source={{{source|https://example.com}}}&lt;br /&gt;
|sourcehost={{{sourcehost|GitHub}}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For giving info about available public mods. [[:Category:Deleted Mods|Deleted mods]] should use [[Template:Mod infobox main]], as categories will not be automatically included using that template, unlike this one.&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{Mod infobox&lt;br /&gt;
|name=(name of mod, defaults to page name)&lt;br /&gt;
|creatorToken=(the ?p=&amp;lt;numbers&amp;gt; on a player URL)&lt;br /&gt;
|creatorName=(name of player who created the mod)&lt;br /&gt;
|madePublicOnYear=yyyy (forced)&lt;br /&gt;
|madePublicOnMonth=mm (defaults to ??)&lt;br /&gt;
|madePublicOnDay=dd (defaults to ??)&lt;br /&gt;
|madePublicOnRef=(optional)&lt;br /&gt;
|madePublicOnAlt=(optional)&lt;br /&gt;
|category=(one of Promoted, Standard or Experimental, defaults to Experimental)&lt;br /&gt;
|tags={{modtag|Tag1}}&amp;lt;br&amp;gt;{{modtag|Tag2}}&amp;lt;br&amp;gt;{{modtag|Tag3}}&lt;br /&gt;
|appversion=(optional, defaults to 4.14.2)&lt;br /&gt;
|source=url&lt;br /&gt;
|sourcehost=(optional, defaults to GitHub)&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is an optional &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;icon&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; field that appears underneath &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;name&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. See [[Template:Mod infobox/row/icon]] for details.&lt;br /&gt;
&lt;br /&gt;
[[Tanks|Tank]] example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{Mod infobox&lt;br /&gt;
|creatorToken=62456969&lt;br /&gt;
|creatorName=Fizzer&lt;br /&gt;
|madePublicOnYear=2022&lt;br /&gt;
|madePublicOnMonth=10&lt;br /&gt;
|madePublicOnDay=26&lt;br /&gt;
|madePublicOnRef={{ref|https://www.warzone.com/blog/index.php/2022/10/update-5-21-tanks-mod-improvements-commander-improvements/}}&lt;br /&gt;
|tags={{modtag|Diplomacy}}&amp;lt;br&amp;gt;{{modtag|Strategic}}&amp;lt;br&amp;gt;{{modtag|Commerce}}&lt;br /&gt;
|appversion=5.24.1&lt;br /&gt;
|source=https://github.com/FizzerWL/ExampleMods/tree/master/TanksMod&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the mod was announced public but there isn&#039;t a way to verify it using means which require having certain accounts or access to other places outside of Warzone such as Discord servers, you should still include the date but include a comment such as one of the below beneath the &amp;lt;code&amp;gt;madePublicOn&amp;lt;/code&amp;gt; fields:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- assuming mods made by fizzer are instantly public --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord archives finished-mod-list --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord finished-mod-list --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord community-hangout-chat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord public-modders-chat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord archives mod-suggestions --&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Do not use links to them in the &amp;lt;code&amp;gt;madePublicOnRef&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;madePublicOnAlt&amp;lt;/code&amp;gt; is for if a mod was made not public after being made public and then made public again. Add dates using [[Template:Mod infobox/date]].&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;noinclude&amp;gt;[[Category:Infobox Templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Template:Mod_infobox&amp;diff=7449</id>
		<title>Template:Mod infobox</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Template:Mod_infobox&amp;diff=7449"/>
		<updated>2025-04-19T20:59:29Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: possible icon row fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;[[Category:Mods]][[Category:Mods made public during {{{madePublicOnYear|????}}}]][[Category:{{{category|Experimental}}} Mods]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{Mod infobox main&lt;br /&gt;
|name={{{name|{{FULLPAGENAME}}}}}&lt;br /&gt;
{{{icon|Mod infobox/row/icon|{{{icon}}}}}&lt;br /&gt;
|creatorToken={{{creatorToken|creatorToken}}}&lt;br /&gt;
|creatorName={{{creatorName|creatorName}}}&lt;br /&gt;
|madePublicOnYear={{{madePublicOnYear|????}}}&lt;br /&gt;
|madePublicOnMonth={{{madePublicOnMonth|??}}}&lt;br /&gt;
|madePublicOnDay={{{madePublicOnDay|??}}}&lt;br /&gt;
|madePublicOnRef={{{madePublicOnRef|}}}&lt;br /&gt;
|madePublicOnAlt={{{madePublicOnAlt|}}}&lt;br /&gt;
|category={{{category|Experimental}}}&lt;br /&gt;
|tags={{{tags|tags}}}&lt;br /&gt;
|appversion={{{appversion|4.14.2}}}&lt;br /&gt;
|source={{{source|https://example.com}}}&lt;br /&gt;
|sourcehost={{{sourcehost|GitHub}}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For giving info about available public mods. [[:Category:Deleted Mods|Deleted mods]] should use [[Template:Mod infobox main]], as categories will not be automatically included using that template, unlike this one.&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{Mod infobox&lt;br /&gt;
|name=(name of mod, defaults to page name)&lt;br /&gt;
|creatorToken=(the ?p=&amp;lt;numbers&amp;gt; on a player URL)&lt;br /&gt;
|creatorName=(name of player who created the mod)&lt;br /&gt;
|madePublicOnYear=yyyy (forced)&lt;br /&gt;
|madePublicOnMonth=mm (defaults to ??)&lt;br /&gt;
|madePublicOnDay=dd (defaults to ??)&lt;br /&gt;
|madePublicOnRef=(optional)&lt;br /&gt;
|madePublicOnAlt=(optional)&lt;br /&gt;
|category=(one of Promoted, Standard or Experimental, defaults to Experimental)&lt;br /&gt;
|tags={{modtag|Tag1}}&amp;lt;br&amp;gt;{{modtag|Tag2}}&amp;lt;br&amp;gt;{{modtag|Tag3}}&lt;br /&gt;
|appversion=(optional, defaults to 4.14.2)&lt;br /&gt;
|source=url&lt;br /&gt;
|sourcehost=(optional, defaults to GitHub)&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is an optional &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;icon&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; field that appears underneath &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;name&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. See [[Template:Mod infobox/row/icon]] for details.&lt;br /&gt;
&lt;br /&gt;
[[Tanks|Tank]] example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{Mod infobox&lt;br /&gt;
|creatorToken=62456969&lt;br /&gt;
|creatorName=Fizzer&lt;br /&gt;
|madePublicOnYear=2022&lt;br /&gt;
|madePublicOnMonth=10&lt;br /&gt;
|madePublicOnDay=26&lt;br /&gt;
|madePublicOnRef={{ref|https://www.warzone.com/blog/index.php/2022/10/update-5-21-tanks-mod-improvements-commander-improvements/}}&lt;br /&gt;
|tags={{modtag|Diplomacy}}&amp;lt;br&amp;gt;{{modtag|Strategic}}&amp;lt;br&amp;gt;{{modtag|Commerce}}&lt;br /&gt;
|appversion=5.24.1&lt;br /&gt;
|source=https://github.com/FizzerWL/ExampleMods/tree/master/TanksMod&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the mod was announced public but there isn&#039;t a way to verify it using means which require having certain accounts or access to other places outside of Warzone such as Discord servers, you should still include the date but include a comment such as one of the below beneath the &amp;lt;code&amp;gt;madePublicOn&amp;lt;/code&amp;gt; fields:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- assuming mods made by fizzer are instantly public --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord archives finished-mod-list --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord finished-mod-list --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord community-hangout-chat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord public-modders-chat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord archives mod-suggestions --&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Do not use links to them in the &amp;lt;code&amp;gt;madePublicOnRef&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;madePublicOnAlt&amp;lt;/code&amp;gt; is for if a mod was made not public after being made public and then made public again. Add dates using [[Template:Mod infobox/date]].&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;noinclude&amp;gt;[[Category:Infobox Templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Template:Mod_infobox_main&amp;diff=7448</id>
		<title>Template:Mod infobox main</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Template:Mod_infobox_main&amp;diff=7448"/>
		<updated>2025-04-19T20:53:22Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;infobox&amp;quot;&amp;gt;{{Mod infobox/row|Mod name|&amp;lt;strong&amp;gt;{{{name|{{FULLPAGENAME}}}}}&amp;lt;/strong&amp;gt;}}{{{icon|}}}{{Mod infobox/row|Creator|{{{1|[https://www.warzone.com/Profile?p={{{creatorToken|creatorToken}}} {{{creatorName|creatorName}}}]}}}}}{{Mod infobox/row|[[:Category:Mods made public by year|Made public on]]|{{Mod infobox/date|{{{madePublicOnYear|????}}}|{{{madePublicOnMonth|??}}}|{{{madePublicOnDay|??}}}|{{{madePublicOnRef|}}}}}{{{madePublicOnAlt|}}}}}{{Mod infobox/row|[[Mod Categories|Category]]|[[:Category:{{{category|Deleted}}} Mods|{{{category|Deleted}}}]]}}{{Mod infobox/row|[[:Category:Mods by tag|Tags]]|{{{tags|tags}}}}}{{Mod infobox/row|Requires Warzone version|{{{appversion|4.14.2}}}+}}{{Mod infobox/row|Source code|[{{{source|https://example.com}}} {{{sourcehost|GitHub}}}]}}&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
This template should only be used by [[Template:Mod infobox]] or [[:Category:Deleted Mods|deleted mods]]. [[Template:Deleted Mod]] should be used at the top of the page, before the template is included: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Deleted Mod}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{Mod infobox main&lt;br /&gt;
|name=(name of mod, defaults to page name)&lt;br /&gt;
|creatorToken=(the ?p=&amp;lt;numbers&amp;gt; on a player URL)&lt;br /&gt;
|creatorName=(name of player who created the mod)&lt;br /&gt;
|madePublicOnYear=yyyy (forced)&lt;br /&gt;
|madePublicOnMonth=mm (defaults to ??)&lt;br /&gt;
|madePublicOnDay=dd (defaults to ??)&lt;br /&gt;
|madePublicOnRef=(optional)&lt;br /&gt;
|madePublicOnAlt=(optional)&lt;br /&gt;
|category=(one of Promoted, Standard, Experimental or Deleted, defaults to Deleted)&lt;br /&gt;
|tags={{ModtagMain|Tag1}}&amp;lt;br&amp;gt;{{ModtagMain|Tag2}}&amp;lt;br&amp;gt;{{ModtagMain|Tag3}}&lt;br /&gt;
|appversion=(optional, defaults to 4.14.2)&lt;br /&gt;
|source=url&lt;br /&gt;
|sourcehost=(optional, defaults to GitHub)&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is an optional &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;icon&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; field that appears underneath &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;name&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. See [[Template:Mod infobox/row/icon]] for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;noinclude&amp;gt;[[Category:Infobox Templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Template:Mod_infobox&amp;diff=7447</id>
		<title>Template:Mod infobox</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Template:Mod_infobox&amp;diff=7447"/>
		<updated>2025-04-19T20:52:54Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;[[Category:Mods]][[Category:Mods made public during {{{madePublicOnYear|????}}}]][[Category:{{{category|Experimental}}} Mods]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{Mod infobox main&lt;br /&gt;
|name={{{name|{{FULLPAGENAME}}}}}&lt;br /&gt;
|icon={{{icon|}}}&lt;br /&gt;
|creatorToken={{{creatorToken|creatorToken}}}&lt;br /&gt;
|creatorName={{{creatorName|creatorName}}}&lt;br /&gt;
|madePublicOnYear={{{madePublicOnYear|????}}}&lt;br /&gt;
|madePublicOnMonth={{{madePublicOnMonth|??}}}&lt;br /&gt;
|madePublicOnDay={{{madePublicOnDay|??}}}&lt;br /&gt;
|madePublicOnRef={{{madePublicOnRef|}}}&lt;br /&gt;
|madePublicOnAlt={{{madePublicOnAlt|}}}&lt;br /&gt;
|category={{{category|Experimental}}}&lt;br /&gt;
|tags={{{tags|tags}}}&lt;br /&gt;
|appversion={{{appversion|4.14.2}}}&lt;br /&gt;
|source={{{source|https://example.com}}}&lt;br /&gt;
|sourcehost={{{sourcehost|GitHub}}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For giving info about available public mods. [[:Category:Deleted Mods|Deleted mods]] should use [[Template:Mod infobox main]], as categories will not be automatically included using that template, unlike this one.&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{Mod infobox&lt;br /&gt;
|name=(name of mod, defaults to page name)&lt;br /&gt;
|creatorToken=(the ?p=&amp;lt;numbers&amp;gt; on a player URL)&lt;br /&gt;
|creatorName=(name of player who created the mod)&lt;br /&gt;
|madePublicOnYear=yyyy (forced)&lt;br /&gt;
|madePublicOnMonth=mm (defaults to ??)&lt;br /&gt;
|madePublicOnDay=dd (defaults to ??)&lt;br /&gt;
|madePublicOnRef=(optional)&lt;br /&gt;
|madePublicOnAlt=(optional)&lt;br /&gt;
|category=(one of Promoted, Standard or Experimental, defaults to Experimental)&lt;br /&gt;
|tags={{modtag|Tag1}}&amp;lt;br&amp;gt;{{modtag|Tag2}}&amp;lt;br&amp;gt;{{modtag|Tag3}}&lt;br /&gt;
|appversion=(optional, defaults to 4.14.2)&lt;br /&gt;
|source=url&lt;br /&gt;
|sourcehost=(optional, defaults to GitHub)&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is an optional &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;icon&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; field that appears underneath &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;name&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. See [[Template:Mod infobox/row/icon]] for details.&lt;br /&gt;
&lt;br /&gt;
[[Tanks|Tank]] example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{Mod infobox&lt;br /&gt;
|creatorToken=62456969&lt;br /&gt;
|creatorName=Fizzer&lt;br /&gt;
|madePublicOnYear=2022&lt;br /&gt;
|madePublicOnMonth=10&lt;br /&gt;
|madePublicOnDay=26&lt;br /&gt;
|madePublicOnRef={{ref|https://www.warzone.com/blog/index.php/2022/10/update-5-21-tanks-mod-improvements-commander-improvements/}}&lt;br /&gt;
|tags={{modtag|Diplomacy}}&amp;lt;br&amp;gt;{{modtag|Strategic}}&amp;lt;br&amp;gt;{{modtag|Commerce}}&lt;br /&gt;
|appversion=5.24.1&lt;br /&gt;
|source=https://github.com/FizzerWL/ExampleMods/tree/master/TanksMod&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the mod was announced public but there isn&#039;t a way to verify it using means which require having certain accounts or access to other places outside of Warzone such as Discord servers, you should still include the date but include a comment such as one of the below beneath the &amp;lt;code&amp;gt;madePublicOn&amp;lt;/code&amp;gt; fields:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- assuming mods made by fizzer are instantly public --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord archives finished-mod-list --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord finished-mod-list --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord community-hangout-chat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord public-modders-chat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord archives mod-suggestions --&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Do not use links to them in the &amp;lt;code&amp;gt;madePublicOnRef&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;madePublicOnAlt&amp;lt;/code&amp;gt; is for if a mod was made not public after being made public and then made public again. Add dates using [[Template:Mod infobox/date]].&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;noinclude&amp;gt;[[Category:Infobox Templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Template:Mod_infobox&amp;diff=7446</id>
		<title>Template:Mod infobox</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Template:Mod_infobox&amp;diff=7446"/>
		<updated>2025-04-19T20:52:19Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: add icon field support&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;[[Category:Mods]][[Category:Mods made public during {{{madePublicOnYear|????}}}]][[Category:{{{category|Experimental}}} Mods]]&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{Mod infobox main&lt;br /&gt;
|name={{{name|{{FULLPAGENAME}}}}}&lt;br /&gt;
|icon={{{icon|}}}&lt;br /&gt;
|creatorToken={{{creatorToken|creatorToken}}}&lt;br /&gt;
|creatorName={{{creatorName|creatorName}}}&lt;br /&gt;
|madePublicOnYear={{{madePublicOnYear|????}}}&lt;br /&gt;
|madePublicOnMonth={{{madePublicOnMonth|??}}}&lt;br /&gt;
|madePublicOnDay={{{madePublicOnDay|??}}}&lt;br /&gt;
|madePublicOnRef={{{madePublicOnRef|}}}&lt;br /&gt;
|madePublicOnAlt={{{madePublicOnAlt|}}}&lt;br /&gt;
|category={{{category|Experimental}}}&lt;br /&gt;
|tags={{{tags|tags}}}&lt;br /&gt;
|appversion={{{appversion|4.14.2}}}&lt;br /&gt;
|source={{{source|https://example.com}}}&lt;br /&gt;
|sourcehost={{{sourcehost|GitHub}}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is an optional &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;icon&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; field that appears underneath &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;name&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. See [[Template:Mod infobox/row/icon]] for details.&lt;br /&gt;
&lt;br /&gt;
For giving info about available public mods. [[:Category:Deleted Mods|Deleted mods]] should use [[Template:Mod infobox main]], as categories will not be automatically included using that template, unlike this one.&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{Mod infobox&lt;br /&gt;
|name=(name of mod, defaults to page name)&lt;br /&gt;
|creatorToken=(the ?p=&amp;lt;numbers&amp;gt; on a player URL)&lt;br /&gt;
|creatorName=(name of player who created the mod)&lt;br /&gt;
|madePublicOnYear=yyyy (forced)&lt;br /&gt;
|madePublicOnMonth=mm (defaults to ??)&lt;br /&gt;
|madePublicOnDay=dd (defaults to ??)&lt;br /&gt;
|madePublicOnRef=(optional)&lt;br /&gt;
|madePublicOnAlt=(optional)&lt;br /&gt;
|category=(one of Promoted, Standard or Experimental, defaults to Experimental)&lt;br /&gt;
|tags={{modtag|Tag1}}&amp;lt;br&amp;gt;{{modtag|Tag2}}&amp;lt;br&amp;gt;{{modtag|Tag3}}&lt;br /&gt;
|appversion=(optional, defaults to 4.14.2)&lt;br /&gt;
|source=url&lt;br /&gt;
|sourcehost=(optional, defaults to GitHub)&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Tanks|Tank]] example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{Mod infobox&lt;br /&gt;
|creatorToken=62456969&lt;br /&gt;
|creatorName=Fizzer&lt;br /&gt;
|madePublicOnYear=2022&lt;br /&gt;
|madePublicOnMonth=10&lt;br /&gt;
|madePublicOnDay=26&lt;br /&gt;
|madePublicOnRef={{ref|https://www.warzone.com/blog/index.php/2022/10/update-5-21-tanks-mod-improvements-commander-improvements/}}&lt;br /&gt;
|tags={{modtag|Diplomacy}}&amp;lt;br&amp;gt;{{modtag|Strategic}}&amp;lt;br&amp;gt;{{modtag|Commerce}}&lt;br /&gt;
|appversion=5.24.1&lt;br /&gt;
|source=https://github.com/FizzerWL/ExampleMods/tree/master/TanksMod&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the mod was announced public but there isn&#039;t a way to verify it using means which require having certain accounts or access to other places outside of Warzone such as Discord servers, you should still include the date but include a comment such as one of the below beneath the &amp;lt;code&amp;gt;madePublicOn&amp;lt;/code&amp;gt; fields:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- assuming mods made by fizzer are instantly public --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord archives finished-mod-list --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord finished-mod-list --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord community-hangout-chat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord public-modders-chat --&amp;gt;&lt;br /&gt;
&amp;lt;!-- mod discord archives mod-suggestions --&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Do not use links to them in the &amp;lt;code&amp;gt;madePublicOnRef&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;madePublicOnAlt&amp;lt;/code&amp;gt; is for if a mod was made not public after being made public and then made public again. Add dates using [[Template:Mod infobox/date]].&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;noinclude&amp;gt;[[Category:Infobox Templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Template:Mod_infobox/row/icon&amp;diff=7445</id>
		<title>Template:Mod infobox/row/icon</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Template:Mod_infobox/row/icon&amp;diff=7445"/>
		<updated>2025-04-19T20:48:45Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: Created page with &amp;quot;&amp;lt;includeonly&amp;gt;{{Mod infobox/row|Icon|{{{1|Icon}}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt; For use on these templates: * Mod infobox main * Mod infobox &amp;lt;/noinclude&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{Mod infobox/row|Icon|{{{1|Icon}}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
For use on these templates:&lt;br /&gt;
* [[Template:Mod infobox main|Mod infobox main]]&lt;br /&gt;
* [[Template:Mod infobox|Mod infobox]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Template:Mod_infobox_main&amp;diff=7444</id>
		<title>Template:Mod infobox main</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Template:Mod_infobox_main&amp;diff=7444"/>
		<updated>2025-04-19T20:41:57Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: add icon field support&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;infobox&amp;quot;&amp;gt;{{Mod infobox/row|Mod name|&amp;lt;strong&amp;gt;{{{name|{{FULLPAGENAME}}}}}&amp;lt;/strong&amp;gt;}}{{{icon|}}}{{Mod infobox/row|Creator|{{{1|[https://www.warzone.com/Profile?p={{{creatorToken|creatorToken}}} {{{creatorName|creatorName}}}]}}}}}{{Mod infobox/row|[[:Category:Mods made public by year|Made public on]]|{{Mod infobox/date|{{{madePublicOnYear|????}}}|{{{madePublicOnMonth|??}}}|{{{madePublicOnDay|??}}}|{{{madePublicOnRef|}}}}}{{{madePublicOnAlt|}}}}}{{Mod infobox/row|[[Mod Categories|Category]]|[[:Category:{{{category|Deleted}}} Mods|{{{category|Deleted}}}]]}}{{Mod infobox/row|[[:Category:Mods by tag|Tags]]|{{{tags|tags}}}}}{{Mod infobox/row|Requires Warzone version|{{{appversion|4.14.2}}}+}}{{Mod infobox/row|Source code|[{{{source|https://example.com}}} {{{sourcehost|GitHub}}}]}}&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
This template should only be used by [[Template:Mod infobox]] or [[:Category:Deleted Mods|deleted mods]]. [[Template:Deleted Mod]] should be used at the top of the page, before the template is included: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Deleted Mod}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{Mod infobox main&lt;br /&gt;
|name=(name of mod, defaults to page name)&lt;br /&gt;
|creatorToken=(the ?p=&amp;lt;numbers&amp;gt; on a player URL)&lt;br /&gt;
|creatorName=(name of player who created the mod)&lt;br /&gt;
|madePublicOnYear=yyyy (forced)&lt;br /&gt;
|madePublicOnMonth=mm (defaults to ??)&lt;br /&gt;
|madePublicOnDay=dd (defaults to ??)&lt;br /&gt;
|madePublicOnRef=(optional)&lt;br /&gt;
|madePublicOnAlt=(optional)&lt;br /&gt;
|category=(one of Promoted, Standard, Experimental or Deleted, defaults to Deleted)&lt;br /&gt;
|tags={{ModtagMain|Tag1}}&amp;lt;br&amp;gt;{{ModtagMain|Tag2}}&amp;lt;br&amp;gt;{{ModtagMain|Tag3}}&lt;br /&gt;
|appversion=(optional, defaults to 4.14.2)&lt;br /&gt;
|source=url&lt;br /&gt;
|sourcehost=(optional, defaults to GitHub)&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is an optional field &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;icon&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; that appears underneath &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;name&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;. See [[Template:Mod infobox/row/icon]] for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;noinclude&amp;gt;[[Category:Infobox Templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Mod_Images&amp;diff=7443</id>
		<title>Mod Images</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Mod_Images&amp;diff=7443"/>
		<updated>2025-04-19T20:20:31Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: add category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Every mod gets two images they can optionally include, an &#039;&#039;&#039;icon&#039;&#039;&#039; and a &#039;&#039;&#039;feature image&#039;&#039;&#039;.  Additionally, mods can use images in conjunction with other mod features, such as custom special units and cards.   This page describes how to give your mod an &#039;&#039;&#039;icon&#039;&#039;&#039; and &#039;&#039;&#039;feature image&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Icon ==&lt;br /&gt;
&lt;br /&gt;
Your mod&#039;s icon will show up in the mod browser when a player searches for mods to include in their game.  You can see icons at https://www.warzone.com/Mods/&lt;br /&gt;
&lt;br /&gt;
To give your mod an icon, place it in the root folder of your mod and name it Icon.png.  The image must be in png format and must be exactly 50 pixels wide and 50 pixels high.&lt;br /&gt;
&lt;br /&gt;
== Feature ==&lt;br /&gt;
&lt;br /&gt;
Your mod&#039;s feature image will show up on its mod page, for example https://www.warzone.com/Mods/Mod?ID=448&lt;br /&gt;
&lt;br /&gt;
To give your mod a feature image, place it in the root folder of your mod and name it Feature.png.  The image must be in png format and must be exactly 500 pixels wide and 300 pixels high.&lt;br /&gt;
&lt;br /&gt;
[[Category: Mod Developers Guide]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Mod_Developers_Guide&amp;diff=7442</id>
		<title>Mod Developers Guide</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Mod_Developers_Guide&amp;diff=7442"/>
		<updated>2025-04-19T20:14:28Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: /* Tips */ licensing clarification&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes information necessary for making [[Mods]].&lt;br /&gt;
&lt;br /&gt;
This guide assumes that you know the Lua programming language.  If you&#039;ve worked with other languages, such as Javascript, Lua should be very easy to learn.  Many tutorials are available on the internet if you search for them.&lt;br /&gt;
&lt;br /&gt;
Note that you must be a Warzone [[member]] to develop mods, as mods are a member feature.&lt;br /&gt;
&lt;br /&gt;
== Getting started creating a mod ==&lt;br /&gt;
&lt;br /&gt;
There are two ways to load mod code into Warzone: Using the Standalone Client, or directly uploading from your editor.  Uploading from your editor is the preferred way since it allows for more rapid iteration.  However, it also requires an extension to your editor, which only exists for VS Code.  If you want to develop from an editor other than VS Code, or if you want to develop without an active internet connection, you should use the Standalone Client method.&lt;br /&gt;
&lt;br /&gt;
=== Developing with the Standalone Client ===&lt;br /&gt;
&lt;br /&gt;
# Open the page https://www.warzone.com/EnableModDevelopment to enable mod development for your Warzone account.&lt;br /&gt;
# Download the [[Standalone Client]] and run it.&lt;br /&gt;
# Obtain the source code to an example mod, such as the Randomized Wastelands Mod from https://github.com/FizzerWL/ExampleMods/tree/master/RandomizedWastelandsMod.  Download the lua files to a folder on your device. (The easiest way is to use Github&#039;s &amp;quot;Download zip&amp;quot; button if you&#039;re not a git user)&lt;br /&gt;
# Launch the Standalone Client, sign in.  Click the &amp;quot;Mod Development Console&amp;quot; button.  You can also use the hotkey Ctrl+Shift+M to bring up this dialog any time, and also note that this dialog can be docked to sides of your screen if you wish.&lt;br /&gt;
# Click the &amp;quot;Create New Mod&amp;quot; button and give your mod a name.&lt;br /&gt;
# Provide path to your folder with lua files that you downloaded in step 3.&lt;br /&gt;
# Click Submit to create the mod.&lt;br /&gt;
# From the single-player main menu, click &amp;quot;Custom Game&amp;quot;, then scroll down and click Change Mods.&lt;br /&gt;
# You should see the mod you created here.  Check the box to turn it on and click Submit.&lt;br /&gt;
# If you&#039;ve cloned the Randomized Wastelands mod, you&#039;ll also need to turn on wastelands if you want it to do anything.  You can also turn off fog to more easily see its effects.  Create the game, and see the wastelands be adjusted!&lt;br /&gt;
&lt;br /&gt;
Now you can make modifications to the lua code, press the &amp;quot;Reload code&amp;quot; button and try them out! &lt;br /&gt;
&lt;br /&gt;
=== Developing with direct upload from your editor ===&lt;br /&gt;
&lt;br /&gt;
# Open the page https://www.warzone.com/EnableModDevelopment to enable mod development for your Warzone account.&lt;br /&gt;
# Install VS Code from https://code.visualstudio.com/ &lt;br /&gt;
# Obtain the source code to an example mod, such as the Randomized Wastelands Mod from https://github.com/FizzerWL/ExampleMods/tree/master/RandomizedWastelandsMod.  Download the lua files to a folder on your device. (The easiest way is to use Github&#039;s &amp;quot;Download zip&amp;quot; button if you&#039;re not a git user)&lt;br /&gt;
# Download the Warzone Mod Helper VS Code extension VSIX file from https://github.com/FizzerWL/WarzoneModHelper/releases.  Install it by launching VS Code, pressing Ctrl+Shift+P, entering &amp;quot;Install from VSIX&amp;quot; and selecting the VSIX file you downloaded.&lt;br /&gt;
# (optional) Install the Lua IDE extension: https://marketplace.visualstudio.com/items?itemName=sumneko.lua&lt;br /&gt;
# Open the Mod Development Console at https://www.warzone.com/Mods/Develop&lt;br /&gt;
# Click the &amp;quot;Create New Mod&amp;quot; button and give your mod a name.  Ensure the &amp;quot;Development&amp;quot; box is checked.  After creating it, make note of your Mod ID.&lt;br /&gt;
# In VS Code, open the RandomizedWastelandsMod folder you downloaded earlier.  Open one of the lua files in this folder.&lt;br /&gt;
# Visit https://www.warzone.com/API/GetAPIToken and copy your API Token to the clipboard.&lt;br /&gt;
# In VS Code, press Ctrl+Shift+P and select &amp;quot;Upload Mod&amp;quot;.  Enter your Mod ID you noted earlier, and paste your API Token when prompted.  Ensure it says &amp;quot;Mod updated successfully&amp;quot; in the bottom right corner.&lt;br /&gt;
# Now that your mod is updated, let&#039;s run it. Visit https://www.warzone.com/SinglePlayer?CustomGame=1 and click Change Mods.  You should see the mod you created here.  Check the box to turn it on and click Submit.&lt;br /&gt;
# If you&#039;ve cloned the Randomized Wastelands mod, you&#039;ll also need to turn on wastelands if you want it to do anything.  You can also turn off fog to more easily see its effects.  Create the game, and see the wastelands be adjusted!&lt;br /&gt;
&lt;br /&gt;
Now you can make modifications to the lua code, press and invoke the &amp;quot;Upload Mod&amp;quot; feature again to try them out!&lt;br /&gt;
&lt;br /&gt;
Be sure to read the rest of this page for essential information on mod development.&lt;br /&gt;
&lt;br /&gt;
== Video Tutorial == &lt;br /&gt;
&lt;br /&gt;
If you prefer to learn via video, check out this YouTube tutorial on how to make a mod:  https://www.youtube.com/watch?v=mwVDv5PXyrg&lt;br /&gt;
&lt;br /&gt;
== Hooks ==&lt;br /&gt;
&lt;br /&gt;
Warzone will call into a mod&#039;s lua code using what are called &#039;&#039;&#039;hooks&#039;&#039;&#039;.  For example, it will call a hook named &amp;lt;code&amp;gt;Server_StartGame&amp;lt;/code&amp;gt; when a game is beginning and give your mod an opportunity to change things about how the map is set up.&lt;br /&gt;
&lt;br /&gt;
For full details on what hooks are available, see [[Mod Hooks]].&lt;br /&gt;
&lt;br /&gt;
== Sharing code with &amp;quot;require&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
You can call the &amp;quot;require&amp;quot; function to share code between different lua files.  &lt;br /&gt;
&lt;br /&gt;
For example, if you have utility functions in a file named &#039;Utilities.lua&#039;, simply write &amp;lt;code&amp;gt;require(&#039;Utilities&#039;)&amp;lt;/code&amp;gt; at the top of another file to include it (omit the &amp;lt;code&amp;gt;.lua&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Note that all lua files must be in the same directory (subdirectories are currently not supported).&lt;br /&gt;
&lt;br /&gt;
== Printing Output ==&lt;br /&gt;
&lt;br /&gt;
In lua, you can print output with lua&#039;s &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; function.  For example: &amp;lt;code&amp;gt;print(&amp;quot;Hello, world!&amp;quot;)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see this output, open the Mod Development Console (Ctrl+Shift+M) and click View Mod Output.  Then create a single-player game using that mod, and when the print statement runs, you&#039;ll see the output appear in this window in real-time.&lt;br /&gt;
&lt;br /&gt;
This is useful to assist in debugging.&lt;br /&gt;
&lt;br /&gt;
In multi-player games, the output of mods that run on the server is currently not viewable anywhere, unless the mod crashes which will display recently printed lines in a report in the Mod Development Console.  For this reason, it&#039;s easier to debug mods in single-player before moving to multi-player.&lt;br /&gt;
&lt;br /&gt;
== Global State ==&lt;br /&gt;
&lt;br /&gt;
Never assume any state will persist, unless specifically called out in the documentation.  For example, don&#039;t write to a global variable in one hook and access it in another.&lt;br /&gt;
&lt;br /&gt;
If you try to in a single-player game, you may find that global state does persist.  However, don&#039;t be tempted to rely on this, since globals are always wiped in multi-player, and globals will also get wiped in single-player if someone saves and re-loads their game.  Therefore, ensure you code as if globals will never persist between hook calls, except where explicitly allowed.&lt;br /&gt;
&lt;br /&gt;
== Data Storage ==&lt;br /&gt;
&lt;br /&gt;
Mods can store public, private, or player-specific data within a game.  See [[Mod Game Data Storage]] for details.&lt;br /&gt;
&lt;br /&gt;
== Mod Timeout ==&lt;br /&gt;
&lt;br /&gt;
Note that if a game takes more than a minute to advance, the mods will time out and the game will not advance.  This time counts all mods enabled for that game combined, so mod authors should work to ensure their mods are efficient as possible.&lt;br /&gt;
&lt;br /&gt;
If a game times out more than 10 times in a row, Warzone will end the game automatically.&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
&lt;br /&gt;
Be sure to test in multi-player!  When running Server code in multi-player, your lua code runs on the Warzone server which uses a different lua engine.  In theory, everything should be the same, but there is still an opportunity for differences.  To ensure everything you&#039;re doing works, it&#039;s recommended you test in multi-player, not only before you&#039;re ready to go public, but also occasionally during your development process.&lt;br /&gt;
&lt;br /&gt;
Note that all mods uploaded to Warzone must use the MIT license, or something equally or more permissable.  Any mods without a license specified are assumed to be using MIT. &amp;lt;!-- this is a request rather than definite license compliance: --&amp;gt; Additionally, for mods to be used by Warzone, they must use the MIT license, or something equally or more permissable.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Mod Security]]&lt;br /&gt;
* [[Mod API Reference]]&lt;br /&gt;
* [[Mod Backwards Compatibility]]&lt;br /&gt;
* [[Public Mods]]&lt;br /&gt;
* [[Mod Hooks]]&lt;br /&gt;
* [[Mod Game Data Storage]]&lt;br /&gt;
* [[Mod Images]]&lt;br /&gt;
* [https://discord.gg/hqGkVXagyt Warzone Mod Makers Discord]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod Developers Guide|!]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Mod_Framework_Capabilities&amp;diff=7437</id>
		<title>Mod Framework Capabilities</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Mod_Framework_Capabilities&amp;diff=7437"/>
		<updated>2025-04-16T19:25:53Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: Mention fog modifications&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below is a list of features that can be accomplished when creating [[mods]]:&lt;br /&gt;
&lt;br /&gt;
* Create menus - [[Mod API Reference:UI]], [[Mod API Reference:ClientGame]]&lt;br /&gt;
* Read and write data that persists over multiple turns - [[Mod Game Data Storage]]&lt;br /&gt;
* Read details about the game - [[Mod API Reference:Game]]&lt;br /&gt;
** Read map details (territories names, territory connections, bonuses) - [[Mod API Reference:MapDetails]]&lt;br /&gt;
** Read and write all game settings (except for other mods) - [[Mod API Reference:GameSettings]]&lt;br /&gt;
** Read which players have joined the game and details about players - [[Mod API Reference:GamePlayer]]&lt;br /&gt;
** Read game history - [[Mod API Reference:ClientGame]]&lt;br /&gt;
* Create, read, write and skip player orders - [[Mod API Reference:ClientGame]], [[Mod API Reference:ServerGame]], [[Mod API Reference:GameOrder]]&lt;br /&gt;
* Read and write the amount of armies on territories - [[Mod API Reference:GameStanding]], [[Mod API Reference:GameOrder]]&lt;br /&gt;
* Read and write which structures are on territories - [[Mod API Reference:GameStanding]], [[Mod API Reference:GameOrder]]&lt;br /&gt;
* Read and write the owner of territories - [[Mod API Reference:GameStanding]], [[Mod API Reference:GameOrder]]&lt;br /&gt;
* Create custom special units - [[Mod API Reference:SpecialUnit]]&lt;br /&gt;
* Create structures using Idle the icons - [[Mod API Reference:StructureType]]&lt;br /&gt;
* Perform calculations using armies - [[Mod API Reference:Armies]]&lt;br /&gt;
* Create custom cards - [[Mod API Reference:Custom Cards]]&lt;br /&gt;
* Modify fog levels  - [[Mod API Reference:FogMod]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod API Reference]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Template:Mod_infobox_main&amp;diff=7435</id>
		<title>Template:Mod infobox main</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Template:Mod_infobox_main&amp;diff=7435"/>
		<updated>2025-04-01T23:15:03Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: Wording of app version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;infobox&amp;quot;&amp;gt;{{Mod infobox/row|Mod name|&amp;lt;strong&amp;gt;{{{name|{{FULLPAGENAME}}}}}&amp;lt;/strong&amp;gt;}}{{Mod infobox/row|Creator|{{{1|[https://www.warzone.com/Profile?p={{{creatorToken|creatorToken}}} {{{creatorName|creatorName}}}]}}}}}{{Mod infobox/row|[[:Category:Mods made public by year|Made public on]]|{{Mod infobox/date|{{{madePublicOnYear|????}}}|{{{madePublicOnMonth|??}}}|{{{madePublicOnDay|??}}}|{{{madePublicOnRef|}}}}}{{{madePublicOnAlt|}}}}}{{Mod infobox/row|[[Mod Categories|Category]]|[[:Category:{{{category|Deleted}}} Mods|{{{category|Deleted}}}]]}}{{Mod infobox/row|[[:Category:Mods by tag|Tags]]|{{{tags|tags}}}}}{{Mod infobox/row|Requires Warzone version|{{{appversion|4.14.2}}}+}}{{Mod infobox/row|Source code|[{{{source|https://example.com}}} {{{sourcehost|GitHub}}}]}}&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Usage ==&lt;br /&gt;
This template should only be used by [[Template:Mod infobox]] or [[:Category:Deleted Mods|deleted mods]]. [[Template:Deleted Mod]] should be used at the top of the page, before the template is included: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Deleted Mod}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
{{Mod infobox main&lt;br /&gt;
|name=(name of mod, defaults to page name)&lt;br /&gt;
|creatorToken=(the ?p=&amp;lt;numbers&amp;gt; on a player URL)&lt;br /&gt;
|creatorName=(name of player who created the mod)&lt;br /&gt;
|madePublicOnYear=yyyy (forced)&lt;br /&gt;
|madePublicOnMonth=mm (defaults to ??)&lt;br /&gt;
|madePublicOnDay=dd (defaults to ??)&lt;br /&gt;
|madePublicOnRef=(optional)&lt;br /&gt;
|madePublicOnAlt=(optional)&lt;br /&gt;
|category=(one of Promoted, Standard, Experimental or Deleted, defaults to Deleted)&lt;br /&gt;
|tags={{ModtagMain|Tag1}}&amp;lt;br&amp;gt;{{ModtagMain|Tag2}}&amp;lt;br&amp;gt;{{ModtagMain|Tag3}}&lt;br /&gt;
|appversion=(optional, defaults to 4.14.2)&lt;br /&gt;
|source=url&lt;br /&gt;
|sourcehost=(optional, defaults to GitHub)&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/noinclude&amp;gt;&amp;lt;noinclude&amp;gt;[[Category:Infobox Templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Mystery_Card&amp;diff=7433</id>
		<title>Mystery Card</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Mystery_Card&amp;diff=7433"/>
		<updated>2025-03-31T18:50:33Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: version requirements changed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Mod infobox&lt;br /&gt;
|creatorToken=9522268564&lt;br /&gt;
|creatorName=DanWL&lt;br /&gt;
|madePublicOnYear=2025&lt;br /&gt;
|madePublicOnMonth=03&lt;br /&gt;
|madePublicOnDay=01&lt;br /&gt;
|tags={{Modtag|Strategic}}&lt;br /&gt;
|appversion=5.34.1&lt;br /&gt;
|source=https://github.com/DanWaLes/Warzone/tree/main/mods/Mystery%20Card&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Card infobox&lt;br /&gt;
|img=https://raw.githubusercontent.com/DanWaLes/Warzone/refs/heads/main/mods/Mystery%20Card/CardImages/MysteryCard.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
This [[mod]] adds a custom [[cards|card]] to the game: a [[Mystery Card]].&lt;br /&gt;
&lt;br /&gt;
When a Mystery Card is played, the player who played the card will be given a full random card (excluding the Mystery Card itself). These cards are played during the receive cards turn phase. If the player who tried to play the card before then gets eliminated, the card will not take affect but the card will be lost.&lt;br /&gt;
&lt;br /&gt;
Playing this card happens during the same [[turn phases|turn phase]] as receiving new cards.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
=== Mod Settings ===&lt;br /&gt;
* Number of pieces to divide the card into (defaults to 7, min 1, max 20)&lt;br /&gt;
* Card weight (defaults to 1, min 0, max 5)&lt;br /&gt;
* Minimum pieces awarded per turn (defaults to 1, min 0, max 5)&lt;br /&gt;
* Pieces given to each player at the start (defaults to 5, min 0, max 5)&lt;br /&gt;
&lt;br /&gt;
All these settings have an absolute max value of 1000 if the value is typed in rather than using the number slider.&lt;br /&gt;
&lt;br /&gt;
{{Cards}}&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Mod_API_Reference:WL&amp;diff=7432</id>
		<title>Mod API Reference:WL</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Mod_API_Reference:WL&amp;diff=7432"/>
		<updated>2025-03-31T13:42:21Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: /* Other */ add TextAlignmentOptions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Army Related ==&lt;br /&gt;
* [[Mod_API_Reference:Armies|WL.Armies]]&lt;br /&gt;
* [[Mod_API_Reference:Boss1|WL.Boss1]]&lt;br /&gt;
* [[Mod_API_Reference:Boss2|WL.Boss2]]&lt;br /&gt;
* [[Mod_API_Reference:Boss3|WL.Boss3]]&lt;br /&gt;
* [[Mod_API_Reference:Boss4|WL.Boss4]]&lt;br /&gt;
* [[Mod_API_Reference:Commander|WL.Commander]]&lt;br /&gt;
* [[Mod_API_Reference:CustomSpecialUnit|WL.CustomSpecialUnitBuilder]]&lt;br /&gt;
* [[Mod_API_Reference:IncomeMod|WL.IncomeMod]]&lt;br /&gt;
* [[Mod_API_Reference:ResourceType|WL.ResourceType]]&lt;br /&gt;
&lt;br /&gt;
== Game Order ==&lt;br /&gt;
* [[Mod API Reference:AttackTransferEnum|WL.AttackTransferEnum]]&lt;br /&gt;
* [[Mod API Reference:GameOrderAttackTransfer|WL.GameOrderAttackTransfer]]&lt;br /&gt;
* [[Mod API Reference:GameOrderCustom|WL.GameOrderCustom]]&lt;br /&gt;
* [[Mod API Reference:GameOrderDeploy|WL.GameOrderDeploy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderEvent|WL.GameOrderEvent]]&lt;br /&gt;
* [[Mod API Reference:TerritoryAnnotation|WL.TerritoryAnnotation]]&lt;br /&gt;
* [[Mod API Reference:TerritoryModification|WL.TerritoryModification]]&lt;br /&gt;
* [[Mod API Reference:TurnPhase|WL.TurnPhase]]&lt;br /&gt;
=== Card ===&lt;br /&gt;
* [[Mod API Reference:GameOrderDiscard|WL.GameOrderDiscard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderReceiveCard|WL.GameOrderReceiveCard]]&lt;br /&gt;
* [[Mod API Reference:NoParameterCardInstance|WL.NoParameterCardInstance]]&lt;br /&gt;
* [[Mod API Reference:ReinforcementCardInstance|WL.ReinforcementCardInstance]]&lt;br /&gt;
==== Play Card ====&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAbandon|WL.GameOrderPlayCardAbandon]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAirlift|WL.GameOrderPlayCardAirlift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBlockade|WL.GameOrderPlayCardBlockade]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBomb|WL.GameOrderPlayCardBomb]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardDiplomacy|WL.GameOrderPlayCardDiplomacy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardGift|WL.GameOrderPlayCardGift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderDelay|WL.GameOrderPlayCardOrderDelay]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderPriority|WL.GameOrderPlayCardOrderPriority]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReconnaissance|WL.GameOrderPlayCardReconnaissance]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReinforcement|WL.GameOrderPlayCardReinforcement]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSanctions|WL.GameOrderPlayCardSanctions]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSpy|WL.GameOrderPlayCardSpy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSurveillance|WL.GameOrderPlayCardSurveillance]]&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
* [[Mod_API_Reference:CustomScenario|WL.CustomScenario]]&lt;br /&gt;
* [[Mod API Reference:MoveOrderEnum|WL.MoveOrderEnum]]&lt;br /&gt;
* [[Mod_API_Reference:GameFogLevel|WL.GameFogLevel]]&lt;br /&gt;
* [[Mod_API_Reference:RoundingModeEnum|WL.RoundingModeEnum]]&lt;br /&gt;
=== Cards ===&lt;br /&gt;
* [[Mod_API_Reference:CardGameAbandon|WL.CardGameAbandon]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameAirlift|WL.CardGameAirlift]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameBlockade|WL.CardGameBlockade]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameBomb|WL.CardGameBomb]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameDiplomacy|WL.CardGameDiplomacy]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameGift|WL.CardGameGift]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameOrderDelay|WL.CardGameOrderDelay]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameOrderPriority|WL.CardGameOrderPriority]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameReconnaissance|WL.CardGameReconnaissance]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameReinforcement|WL.CardGameReinforcement]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameSanctions|WL.CardGameSanctions]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameSpy|WL.CardGameSpy]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameSurveillance|WL.CardGameSurveillance]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
* [[Mod_API_Reference:ActiveCardExpireBehaviorOptions|WL.ActiveCardExpireBehaviorOptions]]&lt;br /&gt;
* [[Mod_API_Reference:CardID|WL.CardID]]&lt;br /&gt;
* [[Mod API Reference:FogMod|WL.FogMod]]&lt;br /&gt;
* [[Mod API Reference:GamePlayerState|WL.GamePlayerState]]&lt;br /&gt;
* [[Mod API Reference:GameState|WL.GameState]]&lt;br /&gt;
* [[Mod API Reference:IsVersionOrHigher|WL.IsVersionOrHigher]]&lt;br /&gt;
* [[Mod API Reference:PlayerID|WL.PlayerID]]&lt;br /&gt;
* [[Mod API Reference:PlayerCards|WL.PlayerCards]]&lt;br /&gt;
* [[Mod API Reference:RectangleVM|WL.RectangleVM]]&lt;br /&gt;
* [[Mod API Reference:ReinforcementCardMode|WL.ReinforcementCardMode]]&lt;br /&gt;
* [[Mod API Reference:StandingFogLevel|WL.StandingFogLevel]]&lt;br /&gt;
* [[Mod API Reference:StructureType|WL.StructureType]]&lt;br /&gt;
* [[Mod API Reference:TerritoryConnectionWrap|WL.TerritoryConnectionWrap]]&lt;br /&gt;
* [[Mod API Reference:TextAlignmentOptions|WL.TextAlignmentOptions]]&lt;br /&gt;
* [[Mod API Reference:TickCount|WL.TickCount]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod API Reference]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Mod_API_Reference:WL&amp;diff=7431</id>
		<title>Mod API Reference:WL</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Mod_API_Reference:WL&amp;diff=7431"/>
		<updated>2025-03-31T13:39:50Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: /* Game Order */ add TerritoryAnnotation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Army Related ==&lt;br /&gt;
* [[Mod_API_Reference:Armies|WL.Armies]]&lt;br /&gt;
* [[Mod_API_Reference:Boss1|WL.Boss1]]&lt;br /&gt;
* [[Mod_API_Reference:Boss2|WL.Boss2]]&lt;br /&gt;
* [[Mod_API_Reference:Boss3|WL.Boss3]]&lt;br /&gt;
* [[Mod_API_Reference:Boss4|WL.Boss4]]&lt;br /&gt;
* [[Mod_API_Reference:Commander|WL.Commander]]&lt;br /&gt;
* [[Mod_API_Reference:CustomSpecialUnit|WL.CustomSpecialUnitBuilder]]&lt;br /&gt;
* [[Mod_API_Reference:IncomeMod|WL.IncomeMod]]&lt;br /&gt;
* [[Mod_API_Reference:ResourceType|WL.ResourceType]]&lt;br /&gt;
&lt;br /&gt;
== Game Order ==&lt;br /&gt;
* [[Mod API Reference:AttackTransferEnum|WL.AttackTransferEnum]]&lt;br /&gt;
* [[Mod API Reference:GameOrderAttackTransfer|WL.GameOrderAttackTransfer]]&lt;br /&gt;
* [[Mod API Reference:GameOrderCustom|WL.GameOrderCustom]]&lt;br /&gt;
* [[Mod API Reference:GameOrderDeploy|WL.GameOrderDeploy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderEvent|WL.GameOrderEvent]]&lt;br /&gt;
* [[Mod API Reference:TerritoryAnnotation|WL.TerritoryAnnotation]]&lt;br /&gt;
* [[Mod API Reference:TerritoryModification|WL.TerritoryModification]]&lt;br /&gt;
* [[Mod API Reference:TurnPhase|WL.TurnPhase]]&lt;br /&gt;
=== Card ===&lt;br /&gt;
* [[Mod API Reference:GameOrderDiscard|WL.GameOrderDiscard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderReceiveCard|WL.GameOrderReceiveCard]]&lt;br /&gt;
* [[Mod API Reference:NoParameterCardInstance|WL.NoParameterCardInstance]]&lt;br /&gt;
* [[Mod API Reference:ReinforcementCardInstance|WL.ReinforcementCardInstance]]&lt;br /&gt;
==== Play Card ====&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAbandon|WL.GameOrderPlayCardAbandon]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAirlift|WL.GameOrderPlayCardAirlift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBlockade|WL.GameOrderPlayCardBlockade]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBomb|WL.GameOrderPlayCardBomb]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardDiplomacy|WL.GameOrderPlayCardDiplomacy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardGift|WL.GameOrderPlayCardGift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderDelay|WL.GameOrderPlayCardOrderDelay]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderPriority|WL.GameOrderPlayCardOrderPriority]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReconnaissance|WL.GameOrderPlayCardReconnaissance]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReinforcement|WL.GameOrderPlayCardReinforcement]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSanctions|WL.GameOrderPlayCardSanctions]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSpy|WL.GameOrderPlayCardSpy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSurveillance|WL.GameOrderPlayCardSurveillance]]&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
* [[Mod_API_Reference:CustomScenario|WL.CustomScenario]]&lt;br /&gt;
* [[Mod API Reference:MoveOrderEnum|WL.MoveOrderEnum]]&lt;br /&gt;
* [[Mod_API_Reference:GameFogLevel|WL.GameFogLevel]]&lt;br /&gt;
* [[Mod_API_Reference:RoundingModeEnum|WL.RoundingModeEnum]]&lt;br /&gt;
=== Cards ===&lt;br /&gt;
* [[Mod_API_Reference:CardGameAbandon|WL.CardGameAbandon]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameAirlift|WL.CardGameAirlift]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameBlockade|WL.CardGameBlockade]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameBomb|WL.CardGameBomb]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameDiplomacy|WL.CardGameDiplomacy]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameGift|WL.CardGameGift]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameOrderDelay|WL.CardGameOrderDelay]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameOrderPriority|WL.CardGameOrderPriority]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameReconnaissance|WL.CardGameReconnaissance]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameReinforcement|WL.CardGameReinforcement]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameSanctions|WL.CardGameSanctions]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameSpy|WL.CardGameSpy]]&lt;br /&gt;
* [[Mod_API_Reference:CardGameSurveillance|WL.CardGameSurveillance]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
* [[Mod_API_Reference:ActiveCardExpireBehaviorOptions|WL.ActiveCardExpireBehaviorOptions]]&lt;br /&gt;
* [[Mod_API_Reference:CardID|WL.CardID]]&lt;br /&gt;
* [[Mod API Reference:FogMod|WL.FogMod]]&lt;br /&gt;
* [[Mod API Reference:GamePlayerState|WL.GamePlayerState]]&lt;br /&gt;
* [[Mod API Reference:GameState|WL.GameState]]&lt;br /&gt;
* [[Mod API Reference:IsVersionOrHigher|WL.IsVersionOrHigher]]&lt;br /&gt;
* [[Mod API Reference:PlayerID|WL.PlayerID]]&lt;br /&gt;
* [[Mod API Reference:PlayerCards|WL.PlayerCards]]&lt;br /&gt;
* [[Mod API Reference:RectangleVM|WL.RectangleVM]]&lt;br /&gt;
* [[Mod API Reference:ReinforcementCardMode|WL.ReinforcementCardMode]]&lt;br /&gt;
* [[Mod API Reference:StandingFogLevel|WL.StandingFogLevel]]&lt;br /&gt;
* [[Mod API Reference:StructureType|WL.StructureType]]&lt;br /&gt;
* [[Mod API Reference:TerritoryConnectionWrap|WL.TerritoryConnectionWrap]]&lt;br /&gt;
* [[Mod API Reference:TickCount|WL.TickCount]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod API Reference]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Mod_API_Reference&amp;diff=7430</id>
		<title>Mod API Reference</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Mod_API_Reference&amp;diff=7430"/>
		<updated>2025-03-31T13:22:16Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: /* Newer API features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This explains how to use Warzone&#039;s [[Mods|mod]] API and links to the documentation for each object type.&lt;br /&gt;
&lt;br /&gt;
== Types ==&lt;br /&gt;
&lt;br /&gt;
When writing a mod, you&#039;ll encounter variables/objects of three basic types:&lt;br /&gt;
* Primitives: strings, numbers, booleans, etc.&lt;br /&gt;
* Tables: collections of key/value pairs.  A table is a lot like a hashmap or dictionary in other languages. Note that in Warzone, the key of a table will always be either a string or an integer.  Some places in this reference will refer to Arrays which are just tables with numeric keys starting at 1.&lt;br /&gt;
* Proxy objects: Discussed in the next section.&lt;br /&gt;
&lt;br /&gt;
== Proxy Objects ==&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;proxy object&#039;&#039;&#039; proxies information back and forth between your mod and Warzone.  You can tell if an object is a proxy object by looking for a &amp;lt;code&amp;gt;proxyType&amp;lt;/code&amp;gt; field.  All proxy objects always have the following fields:&lt;br /&gt;
&lt;br /&gt;
* proxyType: A string identifying the type of proxy object.&lt;br /&gt;
* readOnly: False if you&#039;re allowed to make changes to this proxy object, or true if it&#039;s read-only.&lt;br /&gt;
* readableKeys: An array containing all fields you&#039;re allowed to read from this object.&lt;br /&gt;
* writableKeys: An array containing all fields you&#039;re allowed to change on this object if readOnly is False.&lt;br /&gt;
&lt;br /&gt;
To read a field, simply read it like a property: &amp;lt;code&amp;gt;obj.field&amp;lt;/code&amp;gt;.  Similarly, to write to a proxy object, just assign to that field: &amp;lt;code&amp;gt;obj.field = newVal&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a handy function you can include in your mod to print out everything on a proxy object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow: auto&amp;quot;&amp;gt;&lt;br /&gt;
function PrintProxyInfo(obj)&lt;br /&gt;
    print(&#039;type=&#039; .. obj.proxyType .. &#039; readOnly=&#039; .. tostring(obj.readonly) .. &#039; readableKeys=&#039; .. table.concat(obj.readableKeys, &#039;,&#039;) .. &#039; writableKeys=&#039; .. table.concat(obj.writableKeys, &#039;,&#039;));&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Writing Tables ==&lt;br /&gt;
&lt;br /&gt;
If a writable Warzone proxy object exposes a table, and you wish to make changes to that table, you must assign the table back to the proxy object.  For example, assume you have a &amp;lt;code&amp;gt;GameStanding&amp;lt;/code&amp;gt; object named &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; which exposes the &amp;lt;code&amp;gt;Cards&amp;lt;/code&amp;gt; table, and you want to add something at index 9:&lt;br /&gt;
&lt;br /&gt;
  standing.Cards[9] = something  --WRONG!&lt;br /&gt;
&lt;br /&gt;
This code won&#039;t work since the proxy object isn&#039;t having anything assigned to it.  Proxy objects are only aware of changes when something is directly assigned into them.  To make this work, you must assign the table into the proxy object&#039;s field:&lt;br /&gt;
  local cards = standing.Cards&lt;br /&gt;
  cards[9] = something&lt;br /&gt;
  standing.Cards = cards; --Right&lt;br /&gt;
&lt;br /&gt;
Note: If you use lua&#039;s &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; function, proxy objects will identify themselves as tables.  However, that should be considered an implementation detail.  For the purposes of this wiki, proxy objects aren&#039;t considered tables.&lt;br /&gt;
&lt;br /&gt;
== API Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[Mod API Reference:ActiveCard|ActiveCard]]&lt;br /&gt;
* [[Mod API Reference:ActiveCardWoreOff|ActiveCardWoreOff]]&lt;br /&gt;
* [[Mod API Reference:Armies|Armies]]&lt;br /&gt;
* [[Mod API Reference:BonusDetails|BonusDetails]]&lt;br /&gt;
* [[Mod API Reference:Boss1|Boss1]]&lt;br /&gt;
* [[Mod API Reference:Boss2|Boss2]]&lt;br /&gt;
* [[Mod API Reference:Boss3|Boss3]]&lt;br /&gt;
* [[Mod API Reference:Boss4|Boss4]]&lt;br /&gt;
* [[Mod API Reference:CardGame|CardGame]]&lt;br /&gt;
* [[Mod API Reference:CardGameAbandon|CardGameAbandon]]&lt;br /&gt;
* [[Mod API Reference:CardGameAirlift|CardGameAirlift]]&lt;br /&gt;
* [[Mod API Reference:CardGameBlockade|CardGameBlockade]]&lt;br /&gt;
* [[Mod API Reference:CardGameBomb|CardGameBomb]]&lt;br /&gt;
* [[Mod API Reference:CardGameCustom|CardGameCustom]]&lt;br /&gt;
* [[Mod API Reference:CardGameDiplomacy|CardGameDiplomacy]]&lt;br /&gt;
* [[Mod API Reference:CardGameGift|CardGameGift]]&lt;br /&gt;
* [[Mod API Reference:CardGameOrderDelay|CardGameOrderDelay]]&lt;br /&gt;
* [[Mod API Reference:CardGameOrderPriority|CardGameOrderPriority]]&lt;br /&gt;
* [[Mod API Reference:CardGameReconnaissance|CardGameReconnaissance]]&lt;br /&gt;
* [[Mod API Reference:CardGameReinforcement|CardGameReinforcement]]&lt;br /&gt;
* [[Mod API Reference:CardGameSanctions|CardGameSanctions]]&lt;br /&gt;
* [[Mod API Reference:CardGameSpy|CardGameSpy]]&lt;br /&gt;
* [[Mod API Reference:CardGameSurveillance|CardGameSurveillance]]&lt;br /&gt;
* [[Mod API Reference:CardInstance|CardInstance]]&lt;br /&gt;
* [[Mod API Reference:ClanPlayerInfo|ClanPlayerInfo]]&lt;br /&gt;
* [[Mod API Reference:ClientGame|ClientGame]]&lt;br /&gt;
* [[Mod API Reference:Commander|Commander]]&lt;br /&gt;
* [[Mod API Reference:CustomScenario|CustomScenario]]&lt;br /&gt;
* [[Mod API Reference:CustomScenarioTerritory|CustomScenarioTerritory]]&lt;br /&gt;
* [[Mod API Reference:DistributionMode|DistributionMode]]&lt;br /&gt;
* [[Mod API Reference:Game|Game]]&lt;br /&gt;
* [[Mod API Reference:GameColor|GameColor]]&lt;br /&gt;
* [[Mod API Reference:GameOpenSeat|GameOpenSeat]]&lt;br /&gt;
* [[Mod API Reference:GameOrder|GameOrder]]&lt;br /&gt;
* [[Mod API Reference:GameOrderAttackTransfer|GameOrderAttackTransfer]]&lt;br /&gt;
* [[Mod API Reference:GameOrderAttackTransferResult|GameOrderAttackTransferResult]]&lt;br /&gt;
* [[Mod API Reference:GameOrderBossEvent|GameOrderBossEvent]]&lt;br /&gt;
* [[Mod API Reference:GameOrderCustom|GameOrderCustom]]&lt;br /&gt;
* [[Mod API Reference:GameOrderDeploy|GameOrderDeploy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderDiscard|GameOrderDiscard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderEvent|GameOrderEvent]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCard|GameOrderPlayCard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAbandon|GameOrderPlayCardAbandon]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAirlift|GameOrderPlayCardAirlift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAirliftResult|GameOrderPlayCardAirliftResult]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBlockade|GameOrderPlayCardBlockade]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBomb|GameOrderPlayCardBomb]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardCustom|GameOrderPlayCardCustom]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardDiplomacy|GameOrderPlayCardDiplomacy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardFogged|GameOrderPlayCardFogged]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardGift|GameOrderPlayCardGift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderDelay|GameOrderPlayCardOrderDelay]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderPriority|GameOrderPlayCardOrderPriority]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReconnaissance|GameOrderPlayCardReconnaissance]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReinforcement|GameOrderPlayCardReinforcement]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSanctions|GameOrderPlayCardSanctions]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSpy|GameOrderPlayCardSpy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSurveillance|GameOrderPlayCardSurveillance]]&lt;br /&gt;
* [[Mod API Reference:GameOrderReceiveCard|GameOrderReceiveCard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderStateTransition|GameOrderStateTransition]]&lt;br /&gt;
* [[Mod API Reference:GamePlayer|GamePlayer]]&lt;br /&gt;
* [[Mod API Reference:GameSettings|GameSettings]]&lt;br /&gt;
* [[Mod API Reference:GameStanding|GameStanding]]&lt;br /&gt;
* [[Mod API Reference:GameWL|GameWL]]&lt;br /&gt;
* [[Mod API Reference:IncomeMod|IncomeMod]]&lt;br /&gt;
* [[Mod API Reference:IsVersionOrHigher|IsVersionOrHigher]]&lt;br /&gt;
* [[Mod API Reference:MapDetails|MapDetails]]&lt;br /&gt;
* [[Mod API Reference:MapFamily|MapFamily]]&lt;br /&gt;
* [[Mod API Reference:NoParameterCardInstance|NoParameterCardInstance]]&lt;br /&gt;
* [[Mod API Reference:PendingStateTransition|PendingStateTransition]]&lt;br /&gt;
* [[Mod API Reference:PlayerCards|PlayerCards]]&lt;br /&gt;
* [[Mod API Reference:PlayerInfo2|PlayerInfo2]]&lt;br /&gt;
* [[Mod API Reference:ReinforcementCardInstance|ReinforcementCardInstance]]&lt;br /&gt;
* [[Mod API Reference:ServerGame|ServerGame]]&lt;br /&gt;
* [[Mod API Reference:SpecialUnit|SpecialUnit]]&lt;br /&gt;
* [[Mod API Reference:TerritoryConnection|TerritoryConnection]]&lt;br /&gt;
* [[Mod API Reference:TerritoryDetails|TerritoryDetails]]&lt;br /&gt;
* [[Mod API Reference:TerritoryModification|TerritoryModification]]&lt;br /&gt;
* [[Mod API Reference:TerritoryStanding|TerritoryStanding]]&lt;br /&gt;
* [[Mod API Reference:TickCount|TickCount]]&lt;br /&gt;
* [[Mod API Reference:UI|UI]]&lt;br /&gt;
* [[Mod API Reference:WL|WL]]&lt;br /&gt;
&lt;br /&gt;
== Newer API features ==&lt;br /&gt;
Some features were introduced after the first version of the Mod API framework and should be checked for using [[Mod_API_Reference:IsVersionOrHigher|IsVersionOrHigher]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
| Features&lt;br /&gt;
|-&lt;br /&gt;
| 5.34.1&lt;br /&gt;
| [[Mod Hooks#Client Hooks|Client_CreateGame]]&amp;lt;br&amp;gt;Add &amp;lt;em&amp;gt;TerritoryAnnotationsOpt&amp;lt;/em&amp;gt; to [[Mod API Reference:GameOrderEvent|GameOrderEvent]], [[Mod API Reference:GameOrderCustom|GameOrderCustom]] and [[Mod API Reference:GameOrderPlayCardCustom|GameOrderPlayCardCustom]]&amp;lt;br&amp;gt;Add &amp;lt;em&amp;gt;JumpToActionSpotOpt&amp;lt;/em&amp;gt; to [[Mod API Reference:GameOrderCustom|GameOrderCustom]] and [[Mod API Reference:GameOrderPlayCardCustom|GameOrderPlayCardCustom]]&amp;lt;br&amp;gt;Add parameter 9 (&amp;lt;em&amp;gt;ActiveCardExpireBehaviorOptions&amp;lt;/em&amp;gt;) to &amp;lt;em&amp;gt;addCard&amp;lt;/em&amp;gt; when using [[Mod API Reference:Custom Cards|Custom Cards]]&amp;lt;br&amp;gt;Add optional parameters 4 and 5 to &amp;lt;em&amp;gt;playCard&amp;lt;/em&amp;gt; when using [[Mod API Reference:Custom Cards|Custom Cards]]&amp;lt;br&amp;gt;Add &amp;lt;em&amp;gt;MinWidth&amp;lt;/em&amp;gt; and &amp;lt;em&amp;gt;MinHeight&amp;lt;/em&amp;gt; to all [[Mod API Reference:UI|UI]] elements&amp;lt;br&amp;gt;Add &amp;lt;em&amp;gt;Alignment&amp;lt;/em&amp;gt; to UI Label element&amp;lt;br&amp;gt;Fixed a bug that caused stack traces to not show up in mod errors in some cases in Unity&amp;lt;br&amp;gt;Fixed fog mods on No-Fog games from giving errors&amp;lt;br&amp;gt;Fixed skipping of deploy orders in Client_GameOrderCreated making the deployment status report incorrectly&amp;lt;br&amp;gt;Fixed copying a game that used a mod that used the Server_Created hook&lt;br /&gt;
|-&lt;br /&gt;
| 5.34&lt;br /&gt;
| Create [[Mod_API_Reference:UI|radio buttons]]&amp;lt;br&amp;gt;Lua errors in the browser now give stack traces with line numbers in the mod-crashed dialog&amp;lt;br&amp;gt;[[Mod API Reference:Custom Cards|Client_PresentPlayCardUI]] now gives mods the ability to close the cards dialog - &amp;lt;em&amp;gt;closeCardsDialog&amp;lt;/em&amp;gt;&amp;lt;br&amp;gt;Fixed [[Mod Hooks#Client Hooks|Client_GameOrderCreated]] not being able to read territory picks in manual distribution games&amp;lt;br&amp;gt;Fixed WL.enumtype.ToString() functions&amp;lt;br&amp;gt;Fixed [[Mod API Reference:Custom Cards|Client_PresentPlayCardUI]] not registering [[Mod Game Data Storage|Mod]] and [[Mod API Reference:UI|UI]] hooks if it was called before other client hooks&amp;lt;br&amp;gt;Fixed an error if you set number of card pieces to 0 or negative&amp;lt;br&amp;gt;Fixed [[Mod API Reference:GameOrderAirliftResult|GameOrderAirliftResult]].Results throwing an error instead of returning nil when there are no results yet&amp;lt;br&amp;gt;Fixed allowing [[Mod API Reference:GameOrderAttackTransferResult|GameOrderAttackTransferResult]].ActualArmies to be set to a negative number&amp;lt;br&amp;gt;Fixed &amp;quot;can&#039;t transfer to a neutral&amp;quot; error that occurred when a mod resurrected a failed transfer&lt;br /&gt;
|-&lt;br /&gt;
| 5.33&lt;br /&gt;
| [[Mod API Reference:FogMod|WL.FogMod]]&amp;lt;br&amp;gt;[[Mod API Reference:GameOrderEvent|GameOrderEvent.FogModsOpt]]&amp;lt;br&amp;gt;[[Mod API Reference:GameOrderEvent|GameOrderEvent.RemoveFogModsOpt]]&amp;lt;br&amp;gt;[[Mod API Reference:GameStanding|GameStanding.IncomeMods]]&amp;lt;br&amp;gt;Fixed the AI trying to move its commander even if it doesn&#039;t control the territory the commander is on (which can happen with mods)&amp;lt;br&amp;gt;Fixed a bug that could make a generic Warzone error instead of a mod failed error if you tried to set a property on a destroyed object (for example, Button&#039;s SetInteractable)&lt;br /&gt;
|-&lt;br /&gt;
| 5.32.0.1&lt;br /&gt;
| &amp;quot;addCard&amp;quot; callback function now returns the card ID of the newly added card&amp;lt;br&amp;gt;Fixed a bug with custom cards that made old clients produce an error&lt;br /&gt;
|-&lt;br /&gt;
| 5.32&lt;br /&gt;
| [[Mod_Hooks#Client_Hooks|Client_GameOrderCreated]]&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_GameCommit]]&amp;lt;br&amp;gt;[[Mod API Reference:Custom Cards|Custom Cards]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.31&lt;br /&gt;
| Proper support for Neutral Special Units&amp;lt;br&amp;gt;Fixed GameOrderCustom.TurnPhase not correctly persisting in multi-player&amp;lt;br&amp;gt;Fixed Lua global state not persisting in some cases on the website&amp;lt;br&amp;gt;Note: this update &amp;lt;em&amp;gt;may have&amp;lt;/em&amp;gt; prevented the use of custom turn phases&lt;br /&gt;
|-&lt;br /&gt;
| 5.26&lt;br /&gt;
| Use [[Mod_API_Reference:ServerGame|ServerGame.SetPlayerResource]] in [[Mod_Hooks#Server_Hooks|Server_StartGame]]&amp;lt;br&amp;gt;Fixed a bug with airlifting special units that are set to always visible&lt;br /&gt;
|-&lt;br /&gt;
| 5.24.2&lt;br /&gt;
| [[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit.Health]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.24.1&lt;br /&gt;
| [[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TickCount|WL.TickCount]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.22.2&lt;br /&gt;
| [[Mod_API_Reference:Boss1|Boss1.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss2|Boss2.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss3|Boss3.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss4|Boss4.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Commander|Commander.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:CustomSpecialUnitBuilder|CustomSpecialUnitBuilder.Health]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.22&lt;br /&gt;
| [[Mod_API_Reference:GameOrderCustom|GameOrderCustom.OccursInPhaseOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.RemoveSpecialUnitsOpt]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.21&lt;br /&gt;
| [[Mod_Hooks#Client_Hooks|Client_PresentCommercePurchaseUI]]&amp;lt;br&amp;gt;[[Mod_API_Reference:ClientGame|ClientGame.CreateLocatorCircle]]&amp;lt;br&amp;gt;[[Mod_API_Reference:ClientGame|ClientGame.HighlightTerritories]]&amp;lt;br&amp;gt;[[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.JumpToActionSpotOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEventResult|GameOrderEventResult.CardInstancesCreated]]&amp;lt;br&amp;gt;[[Mod_API Reference:UI|UI.IsDestroyed]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|WL.CancelClickIntercept]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.20&lt;br /&gt;
| Setting [[Mod_API_Reference:TerritoryStanding|TerritoryStanding]].OwnerPlayerID to [[Mod_API_Reference:PlayerID|WL.PlayerID.AvailableForDistribution]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.AddCardPiecesOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.AddResourceOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.RemoveWholeCardsOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.AddArmies]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.AddStructuresOpt]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.17&lt;br /&gt;
| Using argument two of &amp;lt;code&amp;gt;addNewOrder&amp;lt;/code&amp;gt; in [[Mod_Hooks#Server_Hooks|Server_AdvanceTurn_Order]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.IncomeMods]]&amp;lt;br&amp;gt;[[Mod_API_Reference:IncomeMod|IncomeMod]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI.InterceptNextBonusLinkClick]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI.InterceptNextTerritoryClick]]&amp;lt;br&amp;gt;[[Mod_API_Reference:IsVersionOrHigher|WL.IsVersionOrHigher]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Arena]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ArmyCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ArmyCamp]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Attack]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Crafter]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.DigSite]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Draft]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Hospital]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Market]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.MercenaryCamp]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Mine]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.MoneyCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Mortar]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Power]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Recipe]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ResourceCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Smelter]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is a chance that a player has a version of the app that pre-dates the introduction of the [[Mod_API_Reference:IsVersionOrHigher|IsVersionOrHigher]] function. Many features were added after the first version of the Mod API Framework, but before the introduction of the function:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! Features&lt;br /&gt;
|-&lt;br /&gt;
| Up to 4.14.2&lt;br /&gt;
| Various bug fixes / performance enhancements relating to mods. No other changes made to mod API framework until version 5.17.&lt;br /&gt;
|-&lt;br /&gt;
| 3.20.2&lt;br /&gt;
| Mod support for Commerce games (Commerce added in 3.20.0)&lt;br /&gt;
|-&lt;br /&gt;
| 3.19.3&lt;br /&gt;
| Bug fixes for GameOrderPlayCard, Armies.Add, Armies.Subtract&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_GameRefresh]]&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_PresentMenuUI]]&amp;lt;br&amp;gt;[[Mod_Game_Data_Storage|Data storage]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Game|Game]].CreateDialog&amp;lt;br&amp;gt;[[Mod_API_Reference:Game|Game]].SendGameCustomMessage&amp;lt;br&amp;gt;[[Mod_API_Reference:GamePlayer|GamePlayer]].Income&amp;lt;br&amp;gt;[[Mod_Hooks#Server_Hooks|Server_GameCustomMessage]]&lt;br /&gt;
|-&lt;br /&gt;
| 3.19.2&lt;br /&gt;
| [[Mod_API_Reference:GameOrderCustom|GameOrderCustom]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI]].Alert&amp;lt;br&amp;gt;UI.Destroy&amp;lt;br&amp;gt;UI.PromptFromList&lt;br /&gt;
|-&lt;br /&gt;
| 3.18.2&lt;br /&gt;
| Moved all WarLight mod classes into the global &amp;quot;WL&amp;quot; namespace. For example, to create an Armies object instead of just saying &amp;quot;Armies()&amp;quot;, you now say WL.Armies.Create()&lt;br /&gt;
|-&lt;br /&gt;
| 3.18.0&lt;br /&gt;
| Mod API Framework added&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod Developers Guide]][[Category:Mod API Reference|!]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Mod_API_Reference&amp;diff=7429</id>
		<title>Mod API Reference</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Mod_API_Reference&amp;diff=7429"/>
		<updated>2025-03-31T13:18:47Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: /* Newer API features */ 5.34.1 new hook and bug fixes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This explains how to use Warzone&#039;s [[Mods|mod]] API and links to the documentation for each object type.&lt;br /&gt;
&lt;br /&gt;
== Types ==&lt;br /&gt;
&lt;br /&gt;
When writing a mod, you&#039;ll encounter variables/objects of three basic types:&lt;br /&gt;
* Primitives: strings, numbers, booleans, etc.&lt;br /&gt;
* Tables: collections of key/value pairs.  A table is a lot like a hashmap or dictionary in other languages. Note that in Warzone, the key of a table will always be either a string or an integer.  Some places in this reference will refer to Arrays which are just tables with numeric keys starting at 1.&lt;br /&gt;
* Proxy objects: Discussed in the next section.&lt;br /&gt;
&lt;br /&gt;
== Proxy Objects ==&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;proxy object&#039;&#039;&#039; proxies information back and forth between your mod and Warzone.  You can tell if an object is a proxy object by looking for a &amp;lt;code&amp;gt;proxyType&amp;lt;/code&amp;gt; field.  All proxy objects always have the following fields:&lt;br /&gt;
&lt;br /&gt;
* proxyType: A string identifying the type of proxy object.&lt;br /&gt;
* readOnly: False if you&#039;re allowed to make changes to this proxy object, or true if it&#039;s read-only.&lt;br /&gt;
* readableKeys: An array containing all fields you&#039;re allowed to read from this object.&lt;br /&gt;
* writableKeys: An array containing all fields you&#039;re allowed to change on this object if readOnly is False.&lt;br /&gt;
&lt;br /&gt;
To read a field, simply read it like a property: &amp;lt;code&amp;gt;obj.field&amp;lt;/code&amp;gt;.  Similarly, to write to a proxy object, just assign to that field: &amp;lt;code&amp;gt;obj.field = newVal&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a handy function you can include in your mod to print out everything on a proxy object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow: auto&amp;quot;&amp;gt;&lt;br /&gt;
function PrintProxyInfo(obj)&lt;br /&gt;
    print(&#039;type=&#039; .. obj.proxyType .. &#039; readOnly=&#039; .. tostring(obj.readonly) .. &#039; readableKeys=&#039; .. table.concat(obj.readableKeys, &#039;,&#039;) .. &#039; writableKeys=&#039; .. table.concat(obj.writableKeys, &#039;,&#039;));&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Writing Tables ==&lt;br /&gt;
&lt;br /&gt;
If a writable Warzone proxy object exposes a table, and you wish to make changes to that table, you must assign the table back to the proxy object.  For example, assume you have a &amp;lt;code&amp;gt;GameStanding&amp;lt;/code&amp;gt; object named &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; which exposes the &amp;lt;code&amp;gt;Cards&amp;lt;/code&amp;gt; table, and you want to add something at index 9:&lt;br /&gt;
&lt;br /&gt;
  standing.Cards[9] = something  --WRONG!&lt;br /&gt;
&lt;br /&gt;
This code won&#039;t work since the proxy object isn&#039;t having anything assigned to it.  Proxy objects are only aware of changes when something is directly assigned into them.  To make this work, you must assign the table into the proxy object&#039;s field:&lt;br /&gt;
  local cards = standing.Cards&lt;br /&gt;
  cards[9] = something&lt;br /&gt;
  standing.Cards = cards; --Right&lt;br /&gt;
&lt;br /&gt;
Note: If you use lua&#039;s &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; function, proxy objects will identify themselves as tables.  However, that should be considered an implementation detail.  For the purposes of this wiki, proxy objects aren&#039;t considered tables.&lt;br /&gt;
&lt;br /&gt;
== API Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[Mod API Reference:ActiveCard|ActiveCard]]&lt;br /&gt;
* [[Mod API Reference:ActiveCardWoreOff|ActiveCardWoreOff]]&lt;br /&gt;
* [[Mod API Reference:Armies|Armies]]&lt;br /&gt;
* [[Mod API Reference:BonusDetails|BonusDetails]]&lt;br /&gt;
* [[Mod API Reference:Boss1|Boss1]]&lt;br /&gt;
* [[Mod API Reference:Boss2|Boss2]]&lt;br /&gt;
* [[Mod API Reference:Boss3|Boss3]]&lt;br /&gt;
* [[Mod API Reference:Boss4|Boss4]]&lt;br /&gt;
* [[Mod API Reference:CardGame|CardGame]]&lt;br /&gt;
* [[Mod API Reference:CardGameAbandon|CardGameAbandon]]&lt;br /&gt;
* [[Mod API Reference:CardGameAirlift|CardGameAirlift]]&lt;br /&gt;
* [[Mod API Reference:CardGameBlockade|CardGameBlockade]]&lt;br /&gt;
* [[Mod API Reference:CardGameBomb|CardGameBomb]]&lt;br /&gt;
* [[Mod API Reference:CardGameCustom|CardGameCustom]]&lt;br /&gt;
* [[Mod API Reference:CardGameDiplomacy|CardGameDiplomacy]]&lt;br /&gt;
* [[Mod API Reference:CardGameGift|CardGameGift]]&lt;br /&gt;
* [[Mod API Reference:CardGameOrderDelay|CardGameOrderDelay]]&lt;br /&gt;
* [[Mod API Reference:CardGameOrderPriority|CardGameOrderPriority]]&lt;br /&gt;
* [[Mod API Reference:CardGameReconnaissance|CardGameReconnaissance]]&lt;br /&gt;
* [[Mod API Reference:CardGameReinforcement|CardGameReinforcement]]&lt;br /&gt;
* [[Mod API Reference:CardGameSanctions|CardGameSanctions]]&lt;br /&gt;
* [[Mod API Reference:CardGameSpy|CardGameSpy]]&lt;br /&gt;
* [[Mod API Reference:CardGameSurveillance|CardGameSurveillance]]&lt;br /&gt;
* [[Mod API Reference:CardInstance|CardInstance]]&lt;br /&gt;
* [[Mod API Reference:ClanPlayerInfo|ClanPlayerInfo]]&lt;br /&gt;
* [[Mod API Reference:ClientGame|ClientGame]]&lt;br /&gt;
* [[Mod API Reference:Commander|Commander]]&lt;br /&gt;
* [[Mod API Reference:CustomScenario|CustomScenario]]&lt;br /&gt;
* [[Mod API Reference:CustomScenarioTerritory|CustomScenarioTerritory]]&lt;br /&gt;
* [[Mod API Reference:DistributionMode|DistributionMode]]&lt;br /&gt;
* [[Mod API Reference:Game|Game]]&lt;br /&gt;
* [[Mod API Reference:GameColor|GameColor]]&lt;br /&gt;
* [[Mod API Reference:GameOpenSeat|GameOpenSeat]]&lt;br /&gt;
* [[Mod API Reference:GameOrder|GameOrder]]&lt;br /&gt;
* [[Mod API Reference:GameOrderAttackTransfer|GameOrderAttackTransfer]]&lt;br /&gt;
* [[Mod API Reference:GameOrderAttackTransferResult|GameOrderAttackTransferResult]]&lt;br /&gt;
* [[Mod API Reference:GameOrderBossEvent|GameOrderBossEvent]]&lt;br /&gt;
* [[Mod API Reference:GameOrderCustom|GameOrderCustom]]&lt;br /&gt;
* [[Mod API Reference:GameOrderDeploy|GameOrderDeploy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderDiscard|GameOrderDiscard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderEvent|GameOrderEvent]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCard|GameOrderPlayCard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAbandon|GameOrderPlayCardAbandon]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAirlift|GameOrderPlayCardAirlift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAirliftResult|GameOrderPlayCardAirliftResult]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBlockade|GameOrderPlayCardBlockade]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBomb|GameOrderPlayCardBomb]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardCustom|GameOrderPlayCardCustom]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardDiplomacy|GameOrderPlayCardDiplomacy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardFogged|GameOrderPlayCardFogged]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardGift|GameOrderPlayCardGift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderDelay|GameOrderPlayCardOrderDelay]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderPriority|GameOrderPlayCardOrderPriority]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReconnaissance|GameOrderPlayCardReconnaissance]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReinforcement|GameOrderPlayCardReinforcement]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSanctions|GameOrderPlayCardSanctions]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSpy|GameOrderPlayCardSpy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSurveillance|GameOrderPlayCardSurveillance]]&lt;br /&gt;
* [[Mod API Reference:GameOrderReceiveCard|GameOrderReceiveCard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderStateTransition|GameOrderStateTransition]]&lt;br /&gt;
* [[Mod API Reference:GamePlayer|GamePlayer]]&lt;br /&gt;
* [[Mod API Reference:GameSettings|GameSettings]]&lt;br /&gt;
* [[Mod API Reference:GameStanding|GameStanding]]&lt;br /&gt;
* [[Mod API Reference:GameWL|GameWL]]&lt;br /&gt;
* [[Mod API Reference:IncomeMod|IncomeMod]]&lt;br /&gt;
* [[Mod API Reference:IsVersionOrHigher|IsVersionOrHigher]]&lt;br /&gt;
* [[Mod API Reference:MapDetails|MapDetails]]&lt;br /&gt;
* [[Mod API Reference:MapFamily|MapFamily]]&lt;br /&gt;
* [[Mod API Reference:NoParameterCardInstance|NoParameterCardInstance]]&lt;br /&gt;
* [[Mod API Reference:PendingStateTransition|PendingStateTransition]]&lt;br /&gt;
* [[Mod API Reference:PlayerCards|PlayerCards]]&lt;br /&gt;
* [[Mod API Reference:PlayerInfo2|PlayerInfo2]]&lt;br /&gt;
* [[Mod API Reference:ReinforcementCardInstance|ReinforcementCardInstance]]&lt;br /&gt;
* [[Mod API Reference:ServerGame|ServerGame]]&lt;br /&gt;
* [[Mod API Reference:SpecialUnit|SpecialUnit]]&lt;br /&gt;
* [[Mod API Reference:TerritoryConnection|TerritoryConnection]]&lt;br /&gt;
* [[Mod API Reference:TerritoryDetails|TerritoryDetails]]&lt;br /&gt;
* [[Mod API Reference:TerritoryModification|TerritoryModification]]&lt;br /&gt;
* [[Mod API Reference:TerritoryStanding|TerritoryStanding]]&lt;br /&gt;
* [[Mod API Reference:TickCount|TickCount]]&lt;br /&gt;
* [[Mod API Reference:UI|UI]]&lt;br /&gt;
* [[Mod API Reference:WL|WL]]&lt;br /&gt;
&lt;br /&gt;
== Newer API features ==&lt;br /&gt;
Some features were introduced after the first version of the Mod API framework and should be checked for using [[Mod_API_Reference:IsVersionOrHigher|IsVersionOrHigher]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
| Features&lt;br /&gt;
|-&lt;br /&gt;
| 5.34.1&lt;br /&gt;
| [[Mod Hooks#Client Hooks|Client_CreateGame]]&amp;lt;br&amp;gt;Add &amp;lt;em&amp;gt;TerritoryAnnotationsOpt&amp;lt;/em&amp;gt; to [[Mod API Reference:GameOrderEvent|GameOrderEvent]], [[Mod API Reference:GameOrderCustom|GameOrderCustom]] and [[Mod API Reference:GameOrderPlayCardCustom|GameOrderPlayCardCustom]]&amp;lt;br&amp;gt;Add &amp;lt;em&amp;gt;JumpToActionSpotOpt&amp;lt;/em&amp;gt; to [[Mod API Reference:GameOrderCustom|GameOrderCustom]] and [[Mod API Reference:GameOrderPlayCardCustom|GameOrderPlayCardCustom]]&amp;lt;br&amp;gt;Add parameter 9 (&amp;lt;em&amp;gt;ActiveCardExpireBehaviorOptions&amp;lt;/em&amp;gt;) to &amp;lt;em&amp;gt;playCard&amp;lt;/em&amp;gt; when using [[Mod API Reference:Custom Cards|Custom Cards]]&amp;lt;br&amp;gt;Add optional parameters 4 and 5 to &amp;lt;em&amp;gt;playCard&amp;lt;/em&amp;gt; when using [[Mod API Reference:Custom Cards|Custom Cards]]&amp;lt;br&amp;gt;Add &amp;lt;em&amp;gt;MinWidth&amp;lt;/em&amp;gt; and &amp;lt;em&amp;gt;MinHeight&amp;lt;/em&amp;gt; to all [[Mod API Reference:UI|UI]] elements&amp;lt;br&amp;gt;Add &amp;lt;em&amp;gt;Alignment&amp;lt;/em&amp;gt; to UI Label element&amp;lt;br&amp;gt;Fixed a bug that caused stack traces to not show up in mod errors in some cases in Unity&amp;lt;br&amp;gt;Fixed fog mods on No-Fog games from giving errors&amp;lt;br&amp;gt;Fixed skipping of deploy orders in Client_GameOrderCreated making the deployment status report incorrectly&amp;lt;br&amp;gt;Fixed copying a game that used a mod that used the Server_Created hook&lt;br /&gt;
|-&lt;br /&gt;
| 5.34&lt;br /&gt;
| Create [[Mod_API_Reference:UI|radio buttons]]&amp;lt;br&amp;gt;Lua errors in the browser now give stack traces with line numbers in the mod-crashed dialog&amp;lt;br&amp;gt;[[Mod API Reference:Custom Cards|Client_PresentPlayCardUI]] now gives mods the ability to close the cards dialog - &amp;lt;em&amp;gt;closeCardsDialog&amp;lt;/em&amp;gt;&amp;lt;br&amp;gt;Fixed [[Mod Hooks#Client Hooks|Client_GameOrderCreated]] not being able to read territory picks in manual distribution games&amp;lt;br&amp;gt;Fixed WL.enumtype.ToString() functions&amp;lt;br&amp;gt;Fixed [[Mod API Reference:Custom Cards|Client_PresentPlayCardUI]] not registering [[Mod Game Data Storage|Mod]] and [[Mod API Reference:UI|UI]] hooks if it was called before other client hooks&amp;lt;br&amp;gt;Fixed an error if you set number of card pieces to 0 or negative&amp;lt;br&amp;gt;Fixed [[Mod API Reference:GameOrderAirliftResult|GameOrderAirliftResult]].Results throwing an error instead of returning nil when there are no results yet&amp;lt;br&amp;gt;Fixed allowing [[Mod API Reference:GameOrderAttackTransferResult|GameOrderAttackTransferResult]].ActualArmies to be set to a negative number&amp;lt;br&amp;gt;Fixed &amp;quot;can&#039;t transfer to a neutral&amp;quot; error that occurred when a mod resurrected a failed transfer&lt;br /&gt;
|-&lt;br /&gt;
| 5.33&lt;br /&gt;
| [[Mod API Reference:FogMod|WL.FogMod]]&amp;lt;br&amp;gt;[[Mod API Reference:GameOrderEvent|GameOrderEvent.FogModsOpt]]&amp;lt;br&amp;gt;[[Mod API Reference:GameOrderEvent|GameOrderEvent.RemoveFogModsOpt]]&amp;lt;br&amp;gt;[[Mod API Reference:GameStanding|GameStanding.IncomeMods]]&amp;lt;br&amp;gt;Fixed the AI trying to move its commander even if it doesn&#039;t control the territory the commander is on (which can happen with mods)&amp;lt;br&amp;gt;Fixed a bug that could make a generic Warzone error instead of a mod failed error if you tried to set a property on a destroyed object (for example, Button&#039;s SetInteractable)&lt;br /&gt;
|-&lt;br /&gt;
| 5.32.0.1&lt;br /&gt;
| &amp;quot;addCard&amp;quot; callback function now returns the card ID of the newly added card&amp;lt;br&amp;gt;Fixed a bug with custom cards that made old clients produce an error&lt;br /&gt;
|-&lt;br /&gt;
| 5.32&lt;br /&gt;
| [[Mod_Hooks#Client_Hooks|Client_GameOrderCreated]]&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_GameCommit]]&amp;lt;br&amp;gt;[[Mod API Reference:Custom Cards|Custom Cards]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.31&lt;br /&gt;
| Proper support for Neutral Special Units&amp;lt;br&amp;gt;Fixed GameOrderCustom.TurnPhase not correctly persisting in multi-player&amp;lt;br&amp;gt;Fixed Lua global state not persisting in some cases on the website&amp;lt;br&amp;gt;Note: this update &amp;lt;em&amp;gt;may have&amp;lt;/em&amp;gt; prevented the use of custom turn phases&lt;br /&gt;
|-&lt;br /&gt;
| 5.26&lt;br /&gt;
| Use [[Mod_API_Reference:ServerGame|ServerGame.SetPlayerResource]] in [[Mod_Hooks#Server_Hooks|Server_StartGame]]&amp;lt;br&amp;gt;Fixed a bug with airlifting special units that are set to always visible&lt;br /&gt;
|-&lt;br /&gt;
| 5.24.2&lt;br /&gt;
| [[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit.Health]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.24.1&lt;br /&gt;
| [[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TickCount|WL.TickCount]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.22.2&lt;br /&gt;
| [[Mod_API_Reference:Boss1|Boss1.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss2|Boss2.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss3|Boss3.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss4|Boss4.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Commander|Commander.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:CustomSpecialUnitBuilder|CustomSpecialUnitBuilder.Health]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.22&lt;br /&gt;
| [[Mod_API_Reference:GameOrderCustom|GameOrderCustom.OccursInPhaseOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.RemoveSpecialUnitsOpt]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.21&lt;br /&gt;
| [[Mod_Hooks#Client_Hooks|Client_PresentCommercePurchaseUI]]&amp;lt;br&amp;gt;[[Mod_API_Reference:ClientGame|ClientGame.CreateLocatorCircle]]&amp;lt;br&amp;gt;[[Mod_API_Reference:ClientGame|ClientGame.HighlightTerritories]]&amp;lt;br&amp;gt;[[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.JumpToActionSpotOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEventResult|GameOrderEventResult.CardInstancesCreated]]&amp;lt;br&amp;gt;[[Mod_API Reference:UI|UI.IsDestroyed]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|WL.CancelClickIntercept]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.20&lt;br /&gt;
| Setting [[Mod_API_Reference:TerritoryStanding|TerritoryStanding]].OwnerPlayerID to [[Mod_API_Reference:PlayerID|WL.PlayerID.AvailableForDistribution]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.AddCardPiecesOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.AddResourceOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.RemoveWholeCardsOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.AddArmies]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.AddStructuresOpt]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.17&lt;br /&gt;
| Using argument two of &amp;lt;code&amp;gt;addNewOrder&amp;lt;/code&amp;gt; in [[Mod_Hooks#Server_Hooks|Server_AdvanceTurn_Order]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.IncomeMods]]&amp;lt;br&amp;gt;[[Mod_API_Reference:IncomeMod|IncomeMod]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI.InterceptNextBonusLinkClick]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI.InterceptNextTerritoryClick]]&amp;lt;br&amp;gt;[[Mod_API_Reference:IsVersionOrHigher|WL.IsVersionOrHigher]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Arena]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ArmyCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ArmyCamp]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Attack]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Crafter]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.DigSite]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Draft]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Hospital]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Market]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.MercenaryCamp]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Mine]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.MoneyCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Mortar]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Power]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Recipe]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ResourceCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Smelter]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is a chance that a player has a version of the app that pre-dates the introduction of the [[Mod_API_Reference:IsVersionOrHigher|IsVersionOrHigher]] function. Many features were added after the first version of the Mod API Framework, but before the introduction of the function:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! Features&lt;br /&gt;
|-&lt;br /&gt;
| Up to 4.14.2&lt;br /&gt;
| Various bug fixes / performance enhancements relating to mods. No other changes made to mod API framework until version 5.17.&lt;br /&gt;
|-&lt;br /&gt;
| 3.20.2&lt;br /&gt;
| Mod support for Commerce games (Commerce added in 3.20.0)&lt;br /&gt;
|-&lt;br /&gt;
| 3.19.3&lt;br /&gt;
| Bug fixes for GameOrderPlayCard, Armies.Add, Armies.Subtract&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_GameRefresh]]&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_PresentMenuUI]]&amp;lt;br&amp;gt;[[Mod_Game_Data_Storage|Data storage]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Game|Game]].CreateDialog&amp;lt;br&amp;gt;[[Mod_API_Reference:Game|Game]].SendGameCustomMessage&amp;lt;br&amp;gt;[[Mod_API_Reference:GamePlayer|GamePlayer]].Income&amp;lt;br&amp;gt;[[Mod_Hooks#Server_Hooks|Server_GameCustomMessage]]&lt;br /&gt;
|-&lt;br /&gt;
| 3.19.2&lt;br /&gt;
| [[Mod_API_Reference:GameOrderCustom|GameOrderCustom]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI]].Alert&amp;lt;br&amp;gt;UI.Destroy&amp;lt;br&amp;gt;UI.PromptFromList&lt;br /&gt;
|-&lt;br /&gt;
| 3.18.2&lt;br /&gt;
| Moved all WarLight mod classes into the global &amp;quot;WL&amp;quot; namespace. For example, to create an Armies object instead of just saying &amp;quot;Armies()&amp;quot;, you now say WL.Armies.Create()&lt;br /&gt;
|-&lt;br /&gt;
| 3.18.0&lt;br /&gt;
| Mod API Framework added&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod Developers Guide]][[Category:Mod API Reference|!]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Mod_API_Reference&amp;diff=7428</id>
		<title>Mod API Reference</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Mod_API_Reference&amp;diff=7428"/>
		<updated>2025-03-31T13:11:44Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: /* Newer API features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This explains how to use Warzone&#039;s [[Mods|mod]] API and links to the documentation for each object type.&lt;br /&gt;
&lt;br /&gt;
== Types ==&lt;br /&gt;
&lt;br /&gt;
When writing a mod, you&#039;ll encounter variables/objects of three basic types:&lt;br /&gt;
* Primitives: strings, numbers, booleans, etc.&lt;br /&gt;
* Tables: collections of key/value pairs.  A table is a lot like a hashmap or dictionary in other languages. Note that in Warzone, the key of a table will always be either a string or an integer.  Some places in this reference will refer to Arrays which are just tables with numeric keys starting at 1.&lt;br /&gt;
* Proxy objects: Discussed in the next section.&lt;br /&gt;
&lt;br /&gt;
== Proxy Objects ==&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;proxy object&#039;&#039;&#039; proxies information back and forth between your mod and Warzone.  You can tell if an object is a proxy object by looking for a &amp;lt;code&amp;gt;proxyType&amp;lt;/code&amp;gt; field.  All proxy objects always have the following fields:&lt;br /&gt;
&lt;br /&gt;
* proxyType: A string identifying the type of proxy object.&lt;br /&gt;
* readOnly: False if you&#039;re allowed to make changes to this proxy object, or true if it&#039;s read-only.&lt;br /&gt;
* readableKeys: An array containing all fields you&#039;re allowed to read from this object.&lt;br /&gt;
* writableKeys: An array containing all fields you&#039;re allowed to change on this object if readOnly is False.&lt;br /&gt;
&lt;br /&gt;
To read a field, simply read it like a property: &amp;lt;code&amp;gt;obj.field&amp;lt;/code&amp;gt;.  Similarly, to write to a proxy object, just assign to that field: &amp;lt;code&amp;gt;obj.field = newVal&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a handy function you can include in your mod to print out everything on a proxy object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow: auto&amp;quot;&amp;gt;&lt;br /&gt;
function PrintProxyInfo(obj)&lt;br /&gt;
    print(&#039;type=&#039; .. obj.proxyType .. &#039; readOnly=&#039; .. tostring(obj.readonly) .. &#039; readableKeys=&#039; .. table.concat(obj.readableKeys, &#039;,&#039;) .. &#039; writableKeys=&#039; .. table.concat(obj.writableKeys, &#039;,&#039;));&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Writing Tables ==&lt;br /&gt;
&lt;br /&gt;
If a writable Warzone proxy object exposes a table, and you wish to make changes to that table, you must assign the table back to the proxy object.  For example, assume you have a &amp;lt;code&amp;gt;GameStanding&amp;lt;/code&amp;gt; object named &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; which exposes the &amp;lt;code&amp;gt;Cards&amp;lt;/code&amp;gt; table, and you want to add something at index 9:&lt;br /&gt;
&lt;br /&gt;
  standing.Cards[9] = something  --WRONG!&lt;br /&gt;
&lt;br /&gt;
This code won&#039;t work since the proxy object isn&#039;t having anything assigned to it.  Proxy objects are only aware of changes when something is directly assigned into them.  To make this work, you must assign the table into the proxy object&#039;s field:&lt;br /&gt;
  local cards = standing.Cards&lt;br /&gt;
  cards[9] = something&lt;br /&gt;
  standing.Cards = cards; --Right&lt;br /&gt;
&lt;br /&gt;
Note: If you use lua&#039;s &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; function, proxy objects will identify themselves as tables.  However, that should be considered an implementation detail.  For the purposes of this wiki, proxy objects aren&#039;t considered tables.&lt;br /&gt;
&lt;br /&gt;
== API Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[Mod API Reference:ActiveCard|ActiveCard]]&lt;br /&gt;
* [[Mod API Reference:ActiveCardWoreOff|ActiveCardWoreOff]]&lt;br /&gt;
* [[Mod API Reference:Armies|Armies]]&lt;br /&gt;
* [[Mod API Reference:BonusDetails|BonusDetails]]&lt;br /&gt;
* [[Mod API Reference:Boss1|Boss1]]&lt;br /&gt;
* [[Mod API Reference:Boss2|Boss2]]&lt;br /&gt;
* [[Mod API Reference:Boss3|Boss3]]&lt;br /&gt;
* [[Mod API Reference:Boss4|Boss4]]&lt;br /&gt;
* [[Mod API Reference:CardGame|CardGame]]&lt;br /&gt;
* [[Mod API Reference:CardGameAbandon|CardGameAbandon]]&lt;br /&gt;
* [[Mod API Reference:CardGameAirlift|CardGameAirlift]]&lt;br /&gt;
* [[Mod API Reference:CardGameBlockade|CardGameBlockade]]&lt;br /&gt;
* [[Mod API Reference:CardGameBomb|CardGameBomb]]&lt;br /&gt;
* [[Mod API Reference:CardGameCustom|CardGameCustom]]&lt;br /&gt;
* [[Mod API Reference:CardGameDiplomacy|CardGameDiplomacy]]&lt;br /&gt;
* [[Mod API Reference:CardGameGift|CardGameGift]]&lt;br /&gt;
* [[Mod API Reference:CardGameOrderDelay|CardGameOrderDelay]]&lt;br /&gt;
* [[Mod API Reference:CardGameOrderPriority|CardGameOrderPriority]]&lt;br /&gt;
* [[Mod API Reference:CardGameReconnaissance|CardGameReconnaissance]]&lt;br /&gt;
* [[Mod API Reference:CardGameReinforcement|CardGameReinforcement]]&lt;br /&gt;
* [[Mod API Reference:CardGameSanctions|CardGameSanctions]]&lt;br /&gt;
* [[Mod API Reference:CardGameSpy|CardGameSpy]]&lt;br /&gt;
* [[Mod API Reference:CardGameSurveillance|CardGameSurveillance]]&lt;br /&gt;
* [[Mod API Reference:CardInstance|CardInstance]]&lt;br /&gt;
* [[Mod API Reference:ClanPlayerInfo|ClanPlayerInfo]]&lt;br /&gt;
* [[Mod API Reference:ClientGame|ClientGame]]&lt;br /&gt;
* [[Mod API Reference:Commander|Commander]]&lt;br /&gt;
* [[Mod API Reference:CustomScenario|CustomScenario]]&lt;br /&gt;
* [[Mod API Reference:CustomScenarioTerritory|CustomScenarioTerritory]]&lt;br /&gt;
* [[Mod API Reference:DistributionMode|DistributionMode]]&lt;br /&gt;
* [[Mod API Reference:Game|Game]]&lt;br /&gt;
* [[Mod API Reference:GameColor|GameColor]]&lt;br /&gt;
* [[Mod API Reference:GameOpenSeat|GameOpenSeat]]&lt;br /&gt;
* [[Mod API Reference:GameOrder|GameOrder]]&lt;br /&gt;
* [[Mod API Reference:GameOrderAttackTransfer|GameOrderAttackTransfer]]&lt;br /&gt;
* [[Mod API Reference:GameOrderAttackTransferResult|GameOrderAttackTransferResult]]&lt;br /&gt;
* [[Mod API Reference:GameOrderBossEvent|GameOrderBossEvent]]&lt;br /&gt;
* [[Mod API Reference:GameOrderCustom|GameOrderCustom]]&lt;br /&gt;
* [[Mod API Reference:GameOrderDeploy|GameOrderDeploy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderDiscard|GameOrderDiscard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderEvent|GameOrderEvent]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCard|GameOrderPlayCard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAbandon|GameOrderPlayCardAbandon]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAirlift|GameOrderPlayCardAirlift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAirliftResult|GameOrderPlayCardAirliftResult]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBlockade|GameOrderPlayCardBlockade]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBomb|GameOrderPlayCardBomb]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardCustom|GameOrderPlayCardCustom]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardDiplomacy|GameOrderPlayCardDiplomacy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardFogged|GameOrderPlayCardFogged]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardGift|GameOrderPlayCardGift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderDelay|GameOrderPlayCardOrderDelay]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderPriority|GameOrderPlayCardOrderPriority]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReconnaissance|GameOrderPlayCardReconnaissance]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReinforcement|GameOrderPlayCardReinforcement]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSanctions|GameOrderPlayCardSanctions]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSpy|GameOrderPlayCardSpy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSurveillance|GameOrderPlayCardSurveillance]]&lt;br /&gt;
* [[Mod API Reference:GameOrderReceiveCard|GameOrderReceiveCard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderStateTransition|GameOrderStateTransition]]&lt;br /&gt;
* [[Mod API Reference:GamePlayer|GamePlayer]]&lt;br /&gt;
* [[Mod API Reference:GameSettings|GameSettings]]&lt;br /&gt;
* [[Mod API Reference:GameStanding|GameStanding]]&lt;br /&gt;
* [[Mod API Reference:GameWL|GameWL]]&lt;br /&gt;
* [[Mod API Reference:IncomeMod|IncomeMod]]&lt;br /&gt;
* [[Mod API Reference:IsVersionOrHigher|IsVersionOrHigher]]&lt;br /&gt;
* [[Mod API Reference:MapDetails|MapDetails]]&lt;br /&gt;
* [[Mod API Reference:MapFamily|MapFamily]]&lt;br /&gt;
* [[Mod API Reference:NoParameterCardInstance|NoParameterCardInstance]]&lt;br /&gt;
* [[Mod API Reference:PendingStateTransition|PendingStateTransition]]&lt;br /&gt;
* [[Mod API Reference:PlayerCards|PlayerCards]]&lt;br /&gt;
* [[Mod API Reference:PlayerInfo2|PlayerInfo2]]&lt;br /&gt;
* [[Mod API Reference:ReinforcementCardInstance|ReinforcementCardInstance]]&lt;br /&gt;
* [[Mod API Reference:ServerGame|ServerGame]]&lt;br /&gt;
* [[Mod API Reference:SpecialUnit|SpecialUnit]]&lt;br /&gt;
* [[Mod API Reference:TerritoryConnection|TerritoryConnection]]&lt;br /&gt;
* [[Mod API Reference:TerritoryDetails|TerritoryDetails]]&lt;br /&gt;
* [[Mod API Reference:TerritoryModification|TerritoryModification]]&lt;br /&gt;
* [[Mod API Reference:TerritoryStanding|TerritoryStanding]]&lt;br /&gt;
* [[Mod API Reference:TickCount|TickCount]]&lt;br /&gt;
* [[Mod API Reference:UI|UI]]&lt;br /&gt;
* [[Mod API Reference:WL|WL]]&lt;br /&gt;
&lt;br /&gt;
== Newer API features ==&lt;br /&gt;
Some features were introduced after the first version of the Mod API framework and should be checked for using [[Mod_API_Reference:IsVersionOrHigher|IsVersionOrHigher]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
| Features&lt;br /&gt;
|-&lt;br /&gt;
| 5.34.1&lt;br /&gt;
| Add &amp;lt;em&amp;gt;TerritoryAnnotationsOpt&amp;lt;/em&amp;gt; to [[Mod API Reference:GameOrderEvent|GameOrderEvent]], [[Mod API Reference:GameOrderCustom|GameOrderCustom]] and [[Mod API Reference:GameOrderPlayCardCustom|GameOrderPlayCardCustom]]&amp;lt;br&amp;gt;Add &amp;lt;em&amp;gt;JumpToActionSpotOpt&amp;lt;/em&amp;gt; to [[Mod API Reference:GameOrderCustom|GameOrderCustom]] and [[Mod API Reference:GameOrderPlayCardCustom|GameOrderPlayCardCustom]]&amp;lt;br&amp;gt;Add parameter 9 (&amp;lt;em&amp;gt;ActiveCardExpireBehaviorOptions&amp;lt;/em&amp;gt;) to &amp;lt;em&amp;gt;playCard&amp;lt;/em&amp;gt; when using [[Mod API Reference:Custom Cards|Custom Cards]]&amp;lt;br&amp;gt;Add optional parameters 4 and 5 to &amp;lt;em&amp;gt;playCard&amp;lt;/em&amp;gt; when using [[Mod API Reference:Custom Cards|Custom Cards]]&amp;lt;br&amp;gt;Add &amp;lt;em&amp;gt;MinWidth&amp;lt;/em&amp;gt; and &amp;lt;em&amp;gt;MinHeight&amp;lt;/em&amp;gt; to all [[Mod API Reference:UI|UI]] elements&amp;lt;br&amp;gt;Add &amp;lt;em&amp;gt;Alignment&amp;lt;/em&amp;gt; to UI Label element&lt;br /&gt;
|-&lt;br /&gt;
| 5.34&lt;br /&gt;
| Create [[Mod_API_Reference:UI|radio buttons]]&amp;lt;br&amp;gt;Lua errors in the browser now give stack traces with line numbers in the mod-crashed dialog&amp;lt;br&amp;gt;[[Mod API Reference:Custom Cards|Client_PresentPlayCardUI]] now gives mods the ability to close the cards dialog - &amp;lt;em&amp;gt;closeCardsDialog&amp;lt;/em&amp;gt;&amp;lt;br&amp;gt;Fixed [[Mod Hooks#Client Hooks|Client_GameOrderCreated]] not being able to read territory picks in manual distribution games&amp;lt;br&amp;gt;Fixed WL.enumtype.ToString() functions&amp;lt;br&amp;gt;Fixed [[Mod API Reference:Custom Cards|Client_PresentPlayCardUI]] not registering [[Mod Game Data Storage|Mod]] and [[Mod API Reference:UI|UI]] hooks if it was called before other client hooks&amp;lt;br&amp;gt;Fixed an error if you set number of card pieces to 0 or negative&amp;lt;br&amp;gt;Fixed [[Mod API Reference:GameOrderAirliftResult|GameOrderAirliftResult]].Results throwing an error instead of returning nil when there are no results yet&amp;lt;br&amp;gt;Fixed allowing [[Mod API Reference:GameOrderAttackTransferResult|GameOrderAttackTransferResult]].ActualArmies to be set to a negative number&amp;lt;br&amp;gt;Fixed &amp;quot;can&#039;t transfer to a neutral&amp;quot; error that occurred when a mod resurrected a failed transfer&lt;br /&gt;
|-&lt;br /&gt;
| 5.33&lt;br /&gt;
| [[Mod API Reference:FogMod|WL.FogMod]]&amp;lt;br&amp;gt;[[Mod API Reference:GameOrderEvent|GameOrderEvent.FogModsOpt]]&amp;lt;br&amp;gt;[[Mod API Reference:GameOrderEvent|GameOrderEvent.RemoveFogModsOpt]]&amp;lt;br&amp;gt;[[Mod API Reference:GameStanding|GameStanding.IncomeMods]]&amp;lt;br&amp;gt;Fixed the AI trying to move its commander even if it doesn&#039;t control the territory the commander is on (which can happen with mods)&amp;lt;br&amp;gt;Fixed a bug that could make a generic Warzone error instead of a mod failed error if you tried to set a property on a destroyed object (for example, Button&#039;s SetInteractable)&lt;br /&gt;
|-&lt;br /&gt;
| 5.32.0.1&lt;br /&gt;
| &amp;quot;addCard&amp;quot; callback function now returns the card ID of the newly added card&amp;lt;br&amp;gt;Fixed a bug with custom cards that made old clients produce an error&lt;br /&gt;
|-&lt;br /&gt;
| 5.32&lt;br /&gt;
| [[Mod_Hooks#Client_Hooks|Client_GameOrderCreated]]&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_GameCommit]]&amp;lt;br&amp;gt;[[Mod API Reference:Custom Cards|Custom Cards]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.31&lt;br /&gt;
| Proper support for Neutral Special Units&amp;lt;br&amp;gt;Fixed GameOrderCustom.TurnPhase not correctly persisting in multi-player&amp;lt;br&amp;gt;Fixed Lua global state not persisting in some cases on the website&amp;lt;br&amp;gt;Note: this update &amp;lt;em&amp;gt;may have&amp;lt;/em&amp;gt; prevented the use of custom turn phases&lt;br /&gt;
|-&lt;br /&gt;
| 5.26&lt;br /&gt;
| Use [[Mod_API_Reference:ServerGame|ServerGame.SetPlayerResource]] in [[Mod_Hooks#Server_Hooks|Server_StartGame]]&amp;lt;br&amp;gt;Fixed a bug with airlifting special units that are set to always visible&lt;br /&gt;
|-&lt;br /&gt;
| 5.24.2&lt;br /&gt;
| [[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit.Health]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.24.1&lt;br /&gt;
| [[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TickCount|WL.TickCount]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.22.2&lt;br /&gt;
| [[Mod_API_Reference:Boss1|Boss1.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss2|Boss2.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss3|Boss3.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss4|Boss4.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Commander|Commander.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:CustomSpecialUnitBuilder|CustomSpecialUnitBuilder.Health]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.22&lt;br /&gt;
| [[Mod_API_Reference:GameOrderCustom|GameOrderCustom.OccursInPhaseOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.RemoveSpecialUnitsOpt]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.21&lt;br /&gt;
| [[Mod_Hooks#Client_Hooks|Client_PresentCommercePurchaseUI]]&amp;lt;br&amp;gt;[[Mod_API_Reference:ClientGame|ClientGame.CreateLocatorCircle]]&amp;lt;br&amp;gt;[[Mod_API_Reference:ClientGame|ClientGame.HighlightTerritories]]&amp;lt;br&amp;gt;[[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.JumpToActionSpotOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEventResult|GameOrderEventResult.CardInstancesCreated]]&amp;lt;br&amp;gt;[[Mod_API Reference:UI|UI.IsDestroyed]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|WL.CancelClickIntercept]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.20&lt;br /&gt;
| Setting [[Mod_API_Reference:TerritoryStanding|TerritoryStanding]].OwnerPlayerID to [[Mod_API_Reference:PlayerID|WL.PlayerID.AvailableForDistribution]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.AddCardPiecesOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.AddResourceOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.RemoveWholeCardsOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.AddArmies]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.AddStructuresOpt]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.17&lt;br /&gt;
| Using argument two of &amp;lt;code&amp;gt;addNewOrder&amp;lt;/code&amp;gt; in [[Mod_Hooks#Server_Hooks|Server_AdvanceTurn_Order]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.IncomeMods]]&amp;lt;br&amp;gt;[[Mod_API_Reference:IncomeMod|IncomeMod]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI.InterceptNextBonusLinkClick]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI.InterceptNextTerritoryClick]]&amp;lt;br&amp;gt;[[Mod_API_Reference:IsVersionOrHigher|WL.IsVersionOrHigher]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Arena]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ArmyCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ArmyCamp]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Attack]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Crafter]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.DigSite]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Draft]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Hospital]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Market]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.MercenaryCamp]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Mine]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.MoneyCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Mortar]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Power]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Recipe]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ResourceCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Smelter]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is a chance that a player has a version of the app that pre-dates the introduction of the [[Mod_API_Reference:IsVersionOrHigher|IsVersionOrHigher]] function. Many features were added after the first version of the Mod API Framework, but before the introduction of the function:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! Features&lt;br /&gt;
|-&lt;br /&gt;
| Up to 4.14.2&lt;br /&gt;
| Various bug fixes / performance enhancements relating to mods. No other changes made to mod API framework until version 5.17.&lt;br /&gt;
|-&lt;br /&gt;
| 3.20.2&lt;br /&gt;
| Mod support for Commerce games (Commerce added in 3.20.0)&lt;br /&gt;
|-&lt;br /&gt;
| 3.19.3&lt;br /&gt;
| Bug fixes for GameOrderPlayCard, Armies.Add, Armies.Subtract&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_GameRefresh]]&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_PresentMenuUI]]&amp;lt;br&amp;gt;[[Mod_Game_Data_Storage|Data storage]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Game|Game]].CreateDialog&amp;lt;br&amp;gt;[[Mod_API_Reference:Game|Game]].SendGameCustomMessage&amp;lt;br&amp;gt;[[Mod_API_Reference:GamePlayer|GamePlayer]].Income&amp;lt;br&amp;gt;[[Mod_Hooks#Server_Hooks|Server_GameCustomMessage]]&lt;br /&gt;
|-&lt;br /&gt;
| 3.19.2&lt;br /&gt;
| [[Mod_API_Reference:GameOrderCustom|GameOrderCustom]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI]].Alert&amp;lt;br&amp;gt;UI.Destroy&amp;lt;br&amp;gt;UI.PromptFromList&lt;br /&gt;
|-&lt;br /&gt;
| 3.18.2&lt;br /&gt;
| Moved all WarLight mod classes into the global &amp;quot;WL&amp;quot; namespace. For example, to create an Armies object instead of just saying &amp;quot;Armies()&amp;quot;, you now say WL.Armies.Create()&lt;br /&gt;
|-&lt;br /&gt;
| 3.18.0&lt;br /&gt;
| Mod API Framework added&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod Developers Guide]][[Category:Mod API Reference|!]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Mod_API_Reference&amp;diff=7427</id>
		<title>Mod API Reference</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Mod_API_Reference&amp;diff=7427"/>
		<updated>2025-03-31T13:11:03Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: /* Newer API features */ add 5.34.1 changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This explains how to use Warzone&#039;s [[Mods|mod]] API and links to the documentation for each object type.&lt;br /&gt;
&lt;br /&gt;
== Types ==&lt;br /&gt;
&lt;br /&gt;
When writing a mod, you&#039;ll encounter variables/objects of three basic types:&lt;br /&gt;
* Primitives: strings, numbers, booleans, etc.&lt;br /&gt;
* Tables: collections of key/value pairs.  A table is a lot like a hashmap or dictionary in other languages. Note that in Warzone, the key of a table will always be either a string or an integer.  Some places in this reference will refer to Arrays which are just tables with numeric keys starting at 1.&lt;br /&gt;
* Proxy objects: Discussed in the next section.&lt;br /&gt;
&lt;br /&gt;
== Proxy Objects ==&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;proxy object&#039;&#039;&#039; proxies information back and forth between your mod and Warzone.  You can tell if an object is a proxy object by looking for a &amp;lt;code&amp;gt;proxyType&amp;lt;/code&amp;gt; field.  All proxy objects always have the following fields:&lt;br /&gt;
&lt;br /&gt;
* proxyType: A string identifying the type of proxy object.&lt;br /&gt;
* readOnly: False if you&#039;re allowed to make changes to this proxy object, or true if it&#039;s read-only.&lt;br /&gt;
* readableKeys: An array containing all fields you&#039;re allowed to read from this object.&lt;br /&gt;
* writableKeys: An array containing all fields you&#039;re allowed to change on this object if readOnly is False.&lt;br /&gt;
&lt;br /&gt;
To read a field, simply read it like a property: &amp;lt;code&amp;gt;obj.field&amp;lt;/code&amp;gt;.  Similarly, to write to a proxy object, just assign to that field: &amp;lt;code&amp;gt;obj.field = newVal&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a handy function you can include in your mod to print out everything on a proxy object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow: auto&amp;quot;&amp;gt;&lt;br /&gt;
function PrintProxyInfo(obj)&lt;br /&gt;
    print(&#039;type=&#039; .. obj.proxyType .. &#039; readOnly=&#039; .. tostring(obj.readonly) .. &#039; readableKeys=&#039; .. table.concat(obj.readableKeys, &#039;,&#039;) .. &#039; writableKeys=&#039; .. table.concat(obj.writableKeys, &#039;,&#039;));&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Writing Tables ==&lt;br /&gt;
&lt;br /&gt;
If a writable Warzone proxy object exposes a table, and you wish to make changes to that table, you must assign the table back to the proxy object.  For example, assume you have a &amp;lt;code&amp;gt;GameStanding&amp;lt;/code&amp;gt; object named &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; which exposes the &amp;lt;code&amp;gt;Cards&amp;lt;/code&amp;gt; table, and you want to add something at index 9:&lt;br /&gt;
&lt;br /&gt;
  standing.Cards[9] = something  --WRONG!&lt;br /&gt;
&lt;br /&gt;
This code won&#039;t work since the proxy object isn&#039;t having anything assigned to it.  Proxy objects are only aware of changes when something is directly assigned into them.  To make this work, you must assign the table into the proxy object&#039;s field:&lt;br /&gt;
  local cards = standing.Cards&lt;br /&gt;
  cards[9] = something&lt;br /&gt;
  standing.Cards = cards; --Right&lt;br /&gt;
&lt;br /&gt;
Note: If you use lua&#039;s &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; function, proxy objects will identify themselves as tables.  However, that should be considered an implementation detail.  For the purposes of this wiki, proxy objects aren&#039;t considered tables.&lt;br /&gt;
&lt;br /&gt;
== API Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[Mod API Reference:ActiveCard|ActiveCard]]&lt;br /&gt;
* [[Mod API Reference:ActiveCardWoreOff|ActiveCardWoreOff]]&lt;br /&gt;
* [[Mod API Reference:Armies|Armies]]&lt;br /&gt;
* [[Mod API Reference:BonusDetails|BonusDetails]]&lt;br /&gt;
* [[Mod API Reference:Boss1|Boss1]]&lt;br /&gt;
* [[Mod API Reference:Boss2|Boss2]]&lt;br /&gt;
* [[Mod API Reference:Boss3|Boss3]]&lt;br /&gt;
* [[Mod API Reference:Boss4|Boss4]]&lt;br /&gt;
* [[Mod API Reference:CardGame|CardGame]]&lt;br /&gt;
* [[Mod API Reference:CardGameAbandon|CardGameAbandon]]&lt;br /&gt;
* [[Mod API Reference:CardGameAirlift|CardGameAirlift]]&lt;br /&gt;
* [[Mod API Reference:CardGameBlockade|CardGameBlockade]]&lt;br /&gt;
* [[Mod API Reference:CardGameBomb|CardGameBomb]]&lt;br /&gt;
* [[Mod API Reference:CardGameCustom|CardGameCustom]]&lt;br /&gt;
* [[Mod API Reference:CardGameDiplomacy|CardGameDiplomacy]]&lt;br /&gt;
* [[Mod API Reference:CardGameGift|CardGameGift]]&lt;br /&gt;
* [[Mod API Reference:CardGameOrderDelay|CardGameOrderDelay]]&lt;br /&gt;
* [[Mod API Reference:CardGameOrderPriority|CardGameOrderPriority]]&lt;br /&gt;
* [[Mod API Reference:CardGameReconnaissance|CardGameReconnaissance]]&lt;br /&gt;
* [[Mod API Reference:CardGameReinforcement|CardGameReinforcement]]&lt;br /&gt;
* [[Mod API Reference:CardGameSanctions|CardGameSanctions]]&lt;br /&gt;
* [[Mod API Reference:CardGameSpy|CardGameSpy]]&lt;br /&gt;
* [[Mod API Reference:CardGameSurveillance|CardGameSurveillance]]&lt;br /&gt;
* [[Mod API Reference:CardInstance|CardInstance]]&lt;br /&gt;
* [[Mod API Reference:ClanPlayerInfo|ClanPlayerInfo]]&lt;br /&gt;
* [[Mod API Reference:ClientGame|ClientGame]]&lt;br /&gt;
* [[Mod API Reference:Commander|Commander]]&lt;br /&gt;
* [[Mod API Reference:CustomScenario|CustomScenario]]&lt;br /&gt;
* [[Mod API Reference:CustomScenarioTerritory|CustomScenarioTerritory]]&lt;br /&gt;
* [[Mod API Reference:DistributionMode|DistributionMode]]&lt;br /&gt;
* [[Mod API Reference:Game|Game]]&lt;br /&gt;
* [[Mod API Reference:GameColor|GameColor]]&lt;br /&gt;
* [[Mod API Reference:GameOpenSeat|GameOpenSeat]]&lt;br /&gt;
* [[Mod API Reference:GameOrder|GameOrder]]&lt;br /&gt;
* [[Mod API Reference:GameOrderAttackTransfer|GameOrderAttackTransfer]]&lt;br /&gt;
* [[Mod API Reference:GameOrderAttackTransferResult|GameOrderAttackTransferResult]]&lt;br /&gt;
* [[Mod API Reference:GameOrderBossEvent|GameOrderBossEvent]]&lt;br /&gt;
* [[Mod API Reference:GameOrderCustom|GameOrderCustom]]&lt;br /&gt;
* [[Mod API Reference:GameOrderDeploy|GameOrderDeploy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderDiscard|GameOrderDiscard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderEvent|GameOrderEvent]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCard|GameOrderPlayCard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAbandon|GameOrderPlayCardAbandon]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAirlift|GameOrderPlayCardAirlift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAirliftResult|GameOrderPlayCardAirliftResult]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBlockade|GameOrderPlayCardBlockade]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBomb|GameOrderPlayCardBomb]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardCustom|GameOrderPlayCardCustom]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardDiplomacy|GameOrderPlayCardDiplomacy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardFogged|GameOrderPlayCardFogged]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardGift|GameOrderPlayCardGift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderDelay|GameOrderPlayCardOrderDelay]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderPriority|GameOrderPlayCardOrderPriority]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReconnaissance|GameOrderPlayCardReconnaissance]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReinforcement|GameOrderPlayCardReinforcement]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSanctions|GameOrderPlayCardSanctions]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSpy|GameOrderPlayCardSpy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSurveillance|GameOrderPlayCardSurveillance]]&lt;br /&gt;
* [[Mod API Reference:GameOrderReceiveCard|GameOrderReceiveCard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderStateTransition|GameOrderStateTransition]]&lt;br /&gt;
* [[Mod API Reference:GamePlayer|GamePlayer]]&lt;br /&gt;
* [[Mod API Reference:GameSettings|GameSettings]]&lt;br /&gt;
* [[Mod API Reference:GameStanding|GameStanding]]&lt;br /&gt;
* [[Mod API Reference:GameWL|GameWL]]&lt;br /&gt;
* [[Mod API Reference:IncomeMod|IncomeMod]]&lt;br /&gt;
* [[Mod API Reference:IsVersionOrHigher|IsVersionOrHigher]]&lt;br /&gt;
* [[Mod API Reference:MapDetails|MapDetails]]&lt;br /&gt;
* [[Mod API Reference:MapFamily|MapFamily]]&lt;br /&gt;
* [[Mod API Reference:NoParameterCardInstance|NoParameterCardInstance]]&lt;br /&gt;
* [[Mod API Reference:PendingStateTransition|PendingStateTransition]]&lt;br /&gt;
* [[Mod API Reference:PlayerCards|PlayerCards]]&lt;br /&gt;
* [[Mod API Reference:PlayerInfo2|PlayerInfo2]]&lt;br /&gt;
* [[Mod API Reference:ReinforcementCardInstance|ReinforcementCardInstance]]&lt;br /&gt;
* [[Mod API Reference:ServerGame|ServerGame]]&lt;br /&gt;
* [[Mod API Reference:SpecialUnit|SpecialUnit]]&lt;br /&gt;
* [[Mod API Reference:TerritoryConnection|TerritoryConnection]]&lt;br /&gt;
* [[Mod API Reference:TerritoryDetails|TerritoryDetails]]&lt;br /&gt;
* [[Mod API Reference:TerritoryModification|TerritoryModification]]&lt;br /&gt;
* [[Mod API Reference:TerritoryStanding|TerritoryStanding]]&lt;br /&gt;
* [[Mod API Reference:TickCount|TickCount]]&lt;br /&gt;
* [[Mod API Reference:UI|UI]]&lt;br /&gt;
* [[Mod API Reference:WL|WL]]&lt;br /&gt;
&lt;br /&gt;
== Newer API features ==&lt;br /&gt;
Some features were introduced after the first version of the Mod API framework and should be checked for using [[Mod_API_Reference:IsVersionOrHigher|IsVersionOrHigher]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
| Features&lt;br /&gt;
|-&lt;br /&gt;
| 5.34.1&lt;br /&gt;
| Add &amp;lt;em&amp;gt;TerritoryAnnotationsOpt&amp;lt;/em&amp;gt; to [[Mod API Reference:GameOrderEvent|GameOrderEvent]], [[Mod API Reference:GameOrderCustom|GameOrderCustom]] and [[Mod API Reference:GameOrderPlayCardCustom|GameOrderPlayCardCustom]]&amp;lt;br&amp;gt;Add &amp;lt;em&amp;gt;JumpToActionSpotOpt&amp;lt;/em&amp;gt; to [[Mod API Reference:GameOrderCustom|GameOrderCustom]] and [[Mod API Reference:GameOrderPlayCardCustom|GameOrderPlayCardCustom]]&amp;lt;br&amp;gt;Add parameter 9 (&amp;lt;em&amp;gt;ActiveCardExpireBehaviorOptions&amp;lt;/em&amp;gt;) to &amp;lt;em&amp;gt;playCard&amp;lt;/em&amp;gt; when using [[Mod API Reference:Custom Cards|Custom Cards]]&amp;lt;br&amp;gt;Add optional parameters 4 and 5 to &amp;lt;em&amp;gt;playCard&amp;lt;/em&amp;gt; when using [[Mod API Reference:Custom Cards|Custom Cards]]&amp;lt;br&amp;gt;Add &amp;lt;em&amp;gt;MinWidth&amp;lt;/em&amp;gt; and &amp;lt;em&amp;gt;MinHeight&amp;lt;/em&amp;gt; to all [[Help&lt;br /&gt;
Mod API Reference:UI|UI]] elements&amp;lt;br&amp;gt;Add &amp;lt;em&amp;gt;Alignment&amp;lt;/em&amp;gt; to UI Label element&lt;br /&gt;
|-&lt;br /&gt;
| 5.34&lt;br /&gt;
| Create [[Mod_API_Reference:UI|radio buttons]]&amp;lt;br&amp;gt;Lua errors in the browser now give stack traces with line numbers in the mod-crashed dialog&amp;lt;br&amp;gt;[[Mod API Reference:Custom Cards|Client_PresentPlayCardUI]] now gives mods the ability to close the cards dialog - &amp;lt;em&amp;gt;closeCardsDialog&amp;lt;/em&amp;gt;&amp;lt;br&amp;gt;Fixed [[Mod Hooks#Client Hooks|Client_GameOrderCreated]] not being able to read territory picks in manual distribution games&amp;lt;br&amp;gt;Fixed WL.enumtype.ToString() functions&amp;lt;br&amp;gt;Fixed [[Mod API Reference:Custom Cards|Client_PresentPlayCardUI]] not registering [[Mod Game Data Storage|Mod]] and [[Mod API Reference:UI|UI]] hooks if it was called before other client hooks&amp;lt;br&amp;gt;Fixed an error if you set number of card pieces to 0 or negative&amp;lt;br&amp;gt;Fixed [[Mod API Reference:GameOrderAirliftResult|GameOrderAirliftResult]].Results throwing an error instead of returning nil when there are no results yet&amp;lt;br&amp;gt;Fixed allowing [[Mod API Reference:GameOrderAttackTransferResult|GameOrderAttackTransferResult]].ActualArmies to be set to a negative number&amp;lt;br&amp;gt;Fixed &amp;quot;can&#039;t transfer to a neutral&amp;quot; error that occurred when a mod resurrected a failed transfer&lt;br /&gt;
|-&lt;br /&gt;
| 5.33&lt;br /&gt;
| [[Mod API Reference:FogMod|WL.FogMod]]&amp;lt;br&amp;gt;[[Mod API Reference:GameOrderEvent|GameOrderEvent.FogModsOpt]]&amp;lt;br&amp;gt;[[Mod API Reference:GameOrderEvent|GameOrderEvent.RemoveFogModsOpt]]&amp;lt;br&amp;gt;[[Mod API Reference:GameStanding|GameStanding.IncomeMods]]&amp;lt;br&amp;gt;Fixed the AI trying to move its commander even if it doesn&#039;t control the territory the commander is on (which can happen with mods)&amp;lt;br&amp;gt;Fixed a bug that could make a generic Warzone error instead of a mod failed error if you tried to set a property on a destroyed object (for example, Button&#039;s SetInteractable)&lt;br /&gt;
|-&lt;br /&gt;
| 5.32.0.1&lt;br /&gt;
| &amp;quot;addCard&amp;quot; callback function now returns the card ID of the newly added card&amp;lt;br&amp;gt;Fixed a bug with custom cards that made old clients produce an error&lt;br /&gt;
|-&lt;br /&gt;
| 5.32&lt;br /&gt;
| [[Mod_Hooks#Client_Hooks|Client_GameOrderCreated]]&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_GameCommit]]&amp;lt;br&amp;gt;[[Mod API Reference:Custom Cards|Custom Cards]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.31&lt;br /&gt;
| Proper support for Neutral Special Units&amp;lt;br&amp;gt;Fixed GameOrderCustom.TurnPhase not correctly persisting in multi-player&amp;lt;br&amp;gt;Fixed Lua global state not persisting in some cases on the website&amp;lt;br&amp;gt;Note: this update &amp;lt;em&amp;gt;may have&amp;lt;/em&amp;gt; prevented the use of custom turn phases&lt;br /&gt;
|-&lt;br /&gt;
| 5.26&lt;br /&gt;
| Use [[Mod_API_Reference:ServerGame|ServerGame.SetPlayerResource]] in [[Mod_Hooks#Server_Hooks|Server_StartGame]]&amp;lt;br&amp;gt;Fixed a bug with airlifting special units that are set to always visible&lt;br /&gt;
|-&lt;br /&gt;
| 5.24.2&lt;br /&gt;
| [[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit.Health]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.24.1&lt;br /&gt;
| [[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TickCount|WL.TickCount]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.22.2&lt;br /&gt;
| [[Mod_API_Reference:Boss1|Boss1.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss2|Boss2.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss3|Boss3.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss4|Boss4.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Commander|Commander.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:CustomSpecialUnitBuilder|CustomSpecialUnitBuilder.Health]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.22&lt;br /&gt;
| [[Mod_API_Reference:GameOrderCustom|GameOrderCustom.OccursInPhaseOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.RemoveSpecialUnitsOpt]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.21&lt;br /&gt;
| [[Mod_Hooks#Client_Hooks|Client_PresentCommercePurchaseUI]]&amp;lt;br&amp;gt;[[Mod_API_Reference:ClientGame|ClientGame.CreateLocatorCircle]]&amp;lt;br&amp;gt;[[Mod_API_Reference:ClientGame|ClientGame.HighlightTerritories]]&amp;lt;br&amp;gt;[[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.JumpToActionSpotOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEventResult|GameOrderEventResult.CardInstancesCreated]]&amp;lt;br&amp;gt;[[Mod_API Reference:UI|UI.IsDestroyed]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|WL.CancelClickIntercept]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.20&lt;br /&gt;
| Setting [[Mod_API_Reference:TerritoryStanding|TerritoryStanding]].OwnerPlayerID to [[Mod_API_Reference:PlayerID|WL.PlayerID.AvailableForDistribution]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.AddCardPiecesOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.AddResourceOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.RemoveWholeCardsOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.AddArmies]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.AddStructuresOpt]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.17&lt;br /&gt;
| Using argument two of &amp;lt;code&amp;gt;addNewOrder&amp;lt;/code&amp;gt; in [[Mod_Hooks#Server_Hooks|Server_AdvanceTurn_Order]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.IncomeMods]]&amp;lt;br&amp;gt;[[Mod_API_Reference:IncomeMod|IncomeMod]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI.InterceptNextBonusLinkClick]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI.InterceptNextTerritoryClick]]&amp;lt;br&amp;gt;[[Mod_API_Reference:IsVersionOrHigher|WL.IsVersionOrHigher]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Arena]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ArmyCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ArmyCamp]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Attack]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Crafter]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.DigSite]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Draft]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Hospital]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Market]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.MercenaryCamp]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Mine]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.MoneyCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Mortar]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Power]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Recipe]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ResourceCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Smelter]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is a chance that a player has a version of the app that pre-dates the introduction of the [[Mod_API_Reference:IsVersionOrHigher|IsVersionOrHigher]] function. Many features were added after the first version of the Mod API Framework, but before the introduction of the function:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! Features&lt;br /&gt;
|-&lt;br /&gt;
| Up to 4.14.2&lt;br /&gt;
| Various bug fixes / performance enhancements relating to mods. No other changes made to mod API framework until version 5.17.&lt;br /&gt;
|-&lt;br /&gt;
| 3.20.2&lt;br /&gt;
| Mod support for Commerce games (Commerce added in 3.20.0)&lt;br /&gt;
|-&lt;br /&gt;
| 3.19.3&lt;br /&gt;
| Bug fixes for GameOrderPlayCard, Armies.Add, Armies.Subtract&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_GameRefresh]]&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_PresentMenuUI]]&amp;lt;br&amp;gt;[[Mod_Game_Data_Storage|Data storage]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Game|Game]].CreateDialog&amp;lt;br&amp;gt;[[Mod_API_Reference:Game|Game]].SendGameCustomMessage&amp;lt;br&amp;gt;[[Mod_API_Reference:GamePlayer|GamePlayer]].Income&amp;lt;br&amp;gt;[[Mod_Hooks#Server_Hooks|Server_GameCustomMessage]]&lt;br /&gt;
|-&lt;br /&gt;
| 3.19.2&lt;br /&gt;
| [[Mod_API_Reference:GameOrderCustom|GameOrderCustom]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI]].Alert&amp;lt;br&amp;gt;UI.Destroy&amp;lt;br&amp;gt;UI.PromptFromList&lt;br /&gt;
|-&lt;br /&gt;
| 3.18.2&lt;br /&gt;
| Moved all WarLight mod classes into the global &amp;quot;WL&amp;quot; namespace. For example, to create an Armies object instead of just saying &amp;quot;Armies()&amp;quot;, you now say WL.Armies.Create()&lt;br /&gt;
|-&lt;br /&gt;
| 3.18.0&lt;br /&gt;
| Mod API Framework added&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod Developers Guide]][[Category:Mod API Reference|!]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Spy,_Reconnaissance,_and_Surveillance_Cards&amp;diff=7412</id>
		<title>Spy, Reconnaissance, and Surveillance Cards</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Spy,_Reconnaissance,_and_Surveillance_Cards&amp;diff=7412"/>
		<updated>2025-03-24T05:59:15Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: /* Surveillance Card */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In a fog game, these cards allow you to view territories through the [[fog]]. Simply play it, choose the destination, and next turn you will see those territories as well as any attacks that happen in those territories.&lt;br /&gt;
&lt;br /&gt;
What you see on this turn will always be available via the History button later if you return to the turn where you played the card.&lt;br /&gt;
&lt;br /&gt;
Game creators can configure the number of turns that the card lasts for. &lt;br /&gt;
&lt;br /&gt;
== Reconnaissance Card ==&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;vertical-align: top; width: 100%;&amp;quot;&amp;gt;&lt;br /&gt;
Allows you to choose a [[territory]]. You will be able to see the selected territory and all adjacent territories.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;vertical-align: top;&amp;quot;&amp;gt;&lt;br /&gt;
{{Card infobox&lt;br /&gt;
|name=Reconnaissance Card&lt;br /&gt;
|img=https://warzonecdn.com/ujs/Resources/ReconCard.png&lt;br /&gt;
|extra={{Card infobox/row|Duration}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Surveillance Card ==&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;vertical-align: top; width: 100%;&amp;quot;&amp;gt;&lt;br /&gt;
Allows you to choose a [[bonus]]. You will be able to see every territory in that bonus.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;vertical-align: top;&amp;quot;&amp;gt;&lt;br /&gt;
{{Card infobox&lt;br /&gt;
|name=Surveillance Card&lt;br /&gt;
|img=https://warzonecdn.com/ujs/Resources/SurvCard.png&lt;br /&gt;
|extra={{Card infobox/row|Duration}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Spy Card ==&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;vertical-align: top; width: 100%;&amp;quot;&amp;gt;&lt;br /&gt;
Allows you to choose an opponent. You will be able to see every territory controlled by the selected opponent. If the game creator enables it, you can also spy on Neutral.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;vertical-align: top;&amp;quot;&amp;gt;&lt;br /&gt;
{{Card infobox&lt;br /&gt;
|name=Spy Card&lt;br /&gt;
|img=https://warzonecdn.com/ujs/Resources/SpyCard.png&lt;br /&gt;
|extra={{Card infobox/row|Duration}}{{Card infobox/row|Can spy on neutral}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Cards]]&lt;br /&gt;
&lt;br /&gt;
{{Cards}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cards]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Custom_Card_Package_2&amp;diff=7411</id>
		<title>Custom Card Package 2</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Custom_Card_Package_2&amp;diff=7411"/>
		<updated>2025-03-22T11:52:20Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Deleted Mod}}&lt;br /&gt;
&lt;br /&gt;
{{Mod infobox main&lt;br /&gt;
|name=Custom Card Package 2&lt;br /&gt;
|creatorToken=9522268564&lt;br /&gt;
|creatorName=DanWL&lt;br /&gt;
|madePublicOnYear=2023&lt;br /&gt;
|madePublicOnMonth=09&lt;br /&gt;
|madePublicOnDay=01&lt;br /&gt;
&amp;lt;!-- mod discord finished-mod-list --&amp;gt;&lt;br /&gt;
|tags={{ModtagMain|Diplomacy}}&amp;lt;br&amp;gt;{{ModtagMain|Strategic}}&amp;lt;br&amp;gt;{{ModtagMain|Commerce}}&lt;br /&gt;
|appversion=5.22&lt;br /&gt;
|source=https://github.com/DanWaLes/Warzone/tree/main/mods/Custom%20Card%20Package%202&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
This [[mod]] adds more custom [[cards]] to the game. To view which cards you have and play any, see Game &amp;gt; Mod: Custom Card Package 2.&lt;br /&gt;
&lt;br /&gt;
== Cards ==&lt;br /&gt;
All these cards can:&lt;br /&gt;
* Have a customizable number of pieces to split the card into&lt;br /&gt;
* Have a fixed amount of pieces awarded per turn&lt;br /&gt;
* Have initial starting pieces given to all players&lt;br /&gt;
* Be [[commerce|bought]] (using [[gold]])&lt;br /&gt;
* Have pieces awarded regardless of having any successful attacks&lt;br /&gt;
&lt;br /&gt;
=== Double Tap ===&lt;br /&gt;
Allows you to make a second attack/transfer from a territory that you already issued an attack/transfer from. The attack must have failed for the card to take affect.&lt;br /&gt;
&lt;br /&gt;
=== Immobilize ===&lt;br /&gt;
Prevents all army movement (including [[airlift card|airlifts]]) to and from a territory that is next to or is one of yours.&lt;br /&gt;
&lt;br /&gt;
The duration of the card is customizable.&lt;br /&gt;
&lt;br /&gt;
=== Reconnaissance+ ===&lt;br /&gt;
[[Reconnaissance Card]]s with customizable range.&lt;br /&gt;
Note that Reconnaissance Cards must be enabled in the game settings to use this card. You should set the card weight to 0 or minimum pieces earned per turn to 0 to prevent normal Reconnaissance Card pieces from being earned.&lt;br /&gt;
Currently this card lasts 1 turn, rather than the amount set by the Reconnaissance Card.&lt;br /&gt;
&lt;br /&gt;
=== Recycle ===&lt;br /&gt;
Sets the number armies on a territory to be the amount that was on it on the first turn and changes the owner to neutral. The armies that used to be on the territory get added to your income. Can only be played on one of your own territories.&lt;br /&gt;
&lt;br /&gt;
It is optional to have recycling [[Commanders]] to cause elimination.&lt;br /&gt;
&lt;br /&gt;
=== Rushed Blockade ===&lt;br /&gt;
Like normal [[Blockade Cards]] but happen during the [[turn phases|attacks phase]].&lt;br /&gt;
&lt;br /&gt;
=== Trap ===&lt;br /&gt;
Like [[Blockade Cards]] except the territory become neutral when an enemy captures it.&lt;br /&gt;
&lt;br /&gt;
It is optional to have trapping [[Commanders]] to cause elimination.&lt;br /&gt;
&lt;br /&gt;
{{Cards}}&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Custom_Card_Package_2&amp;diff=7410</id>
		<title>Custom Card Package 2</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Custom_Card_Package_2&amp;diff=7410"/>
		<updated>2025-03-22T11:51:21Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: removed card design request mention. the request is already on forum and that has higher visibility&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Deleted Mod}}&lt;br /&gt;
&lt;br /&gt;
{{Mod infobox main&lt;br /&gt;
|name=Custom Card Package 2&lt;br /&gt;
|creatorToken=9522268564&lt;br /&gt;
|creatorName=DanWL&lt;br /&gt;
|madePublicOnYear=2023&lt;br /&gt;
|madePublicOnMonth=09&lt;br /&gt;
|madePublicOnDay=01&lt;br /&gt;
&amp;lt;!-- mod discord finished-mod-list --&amp;gt;&lt;br /&gt;
|tags={{ModtagMain|Diplomacy}}&amp;lt;br&amp;gt;{{ModtagMain|Strategic}}&amp;lt;br&amp;gt;{{ModtagMain|Commerce}}&lt;br /&gt;
|appversion=5.22&lt;br /&gt;
|source=https://github.com/DanWaLes/Warzone/tree/main/mods/Custom%20Card%20Package%202&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
This [[mods|mod]] adds more custom [[cards]] to the game. To view which cards you have and play any, see Game &amp;gt; Mod: Custom Card Package 2.&lt;br /&gt;
&lt;br /&gt;
== Cards ==&lt;br /&gt;
All these cards can:&lt;br /&gt;
* Have a customizable number of pieces to split the card into&lt;br /&gt;
* Have a fixed amount of pieces awarded per turn&lt;br /&gt;
* Have initial starting pieces given to all players&lt;br /&gt;
* Be [[commerce|bought]] (using [[gold]])&lt;br /&gt;
* Have pieces awarded regardless of having any successful attacks&lt;br /&gt;
&lt;br /&gt;
=== Double Tap ===&lt;br /&gt;
Allows you to make a second attack/transfer from a territory that you already issued an attack/transfer from. The attack must have failed for the card to take affect.&lt;br /&gt;
&lt;br /&gt;
=== Immobilize ===&lt;br /&gt;
Prevents all army movement (including [[airlift card|airlifts]]) to and from a territory that is next to or is one of yours.&lt;br /&gt;
&lt;br /&gt;
The duration of the card is customisable.&lt;br /&gt;
&lt;br /&gt;
=== Reconnaissance+ ===&lt;br /&gt;
[[Reconnaissance Card]]s with customizable range.&lt;br /&gt;
Note that Reconnaissance Cards must be enabled in the game settings to use this card. You should set the card weight to 0 or minimum pieces earned per turn to 0 to prevent normal Reconnaissance Card pieces from being earned.&lt;br /&gt;
Currently this card lasts 1 turn, rather than the amount set by the Reconnaissance Card.&lt;br /&gt;
&lt;br /&gt;
=== Recycle ===&lt;br /&gt;
Sets the number armies on a territory to be the amount that was on it on the first turn and changes the owner to neutral. The armies that used to be on the territory get added to your income. Can only be played on one of your own territories.&lt;br /&gt;
&lt;br /&gt;
It is optional to have recycling [[Commanders]] to cause elimination.&lt;br /&gt;
&lt;br /&gt;
=== Rushed Blockade ===&lt;br /&gt;
Like normal [[Blockade Cards]] but happen during the [[turn phases|attacks phase]].&lt;br /&gt;
&lt;br /&gt;
=== Trap ===&lt;br /&gt;
Like [[Blockade Cards]] except the territory become neutral when an enemy captures it.&lt;br /&gt;
&lt;br /&gt;
It is optional to have trapping [[Commanders]] to cause elimination.&lt;br /&gt;
&lt;br /&gt;
{{Cards}}&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Levels&amp;diff=7401</id>
		<title>Levels</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Levels&amp;diff=7401"/>
		<updated>2025-03-15T20:52:47Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: Being highest levelled player isn’t a reward&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By earning [[points]], players can gain &#039;&#039;&#039;levels&#039;&#039;&#039;.   Gaining levels unlocks additional features or [[map]]s that players can use, among other things.&lt;br /&gt;
&lt;br /&gt;
== Levels don&#039;t make you stronger ==&lt;br /&gt;
The idea of leveling up is familiar to anyone who&#039;s played an RPG. However, Warzone’s leveling system has an important distinction: In Warzone, levels don’t actually make you stronger. Warzone is fundamentally a competitive strategy game, and games will always be won or lost based on your strategy alone. Levels will not do anything that gives you an advantage in a game. It’s just as easy for a level 1 player to defeat a level 30 player as it is for a level 40 player.&lt;br /&gt;
&lt;br /&gt;
== Rewards ==&lt;br /&gt;
Leveling up unlocks rewards.  Once a reward is unlocked, you have it permanently.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;90%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;5%&amp;quot; | Level&lt;br /&gt;
! width=&amp;quot;5%&amp;quot; | Points (Delta)&lt;br /&gt;
! width=&amp;quot;5%&amp;quot; | Points (Sum)&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; | Reward&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 2 || style=&amp;quot;text-align:right;&amp;quot; | 7,000 || style=&amp;quot;text-align:right;&amp;quot; | 7,000 || Can create 6 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 3 || style=&amp;quot;text-align:right;&amp;quot; | 7,300 || style=&amp;quot;text-align:right;&amp;quot; | 14,300 || Can join tournaments&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 4 || style=&amp;quot;text-align:right;&amp;quot; | 7,800 || style=&amp;quot;text-align:right;&amp;quot; | 22,100 || Can post to the [[forums]] (all except [[Ladder]])&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 5 || style=&amp;quot;text-align:right;&amp;quot; | 8,100 || style=&amp;quot;text-align:right;&amp;quot; | 30,200 || Three days of ad-free play&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 6 || style=&amp;quot;text-align:right;&amp;quot; | 8,600 || style=&amp;quot;text-align:right;&amp;quot; | 38,800|| Can create 7 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 7 || style=&amp;quot;text-align:right;&amp;quot; | 9,100 || style=&amp;quot;text-align:right;&amp;quot; | 47,900|| Can use the [[Statistics Window]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8 || style=&amp;quot;text-align:right;&amp;quot; | 9,500 || style=&amp;quot;text-align:right;&amp;quot; | 57,400|| Can include the [[Diplomacy Card]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 9 || style=&amp;quot;text-align:right;&amp;quot; | 10,000 || style=&amp;quot;text-align:right;&amp;quot; | 67,400|| Can create 8 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 10 || style=&amp;quot;text-align:right;&amp;quot; | 10,500 || style=&amp;quot;text-align:right;&amp;quot; | 77,900|| Can include the [[Emergency Blockade Card]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 11 || style=&amp;quot;text-align:right;&amp;quot; | 11,100 || style=&amp;quot;text-align:right;&amp;quot; | 89,000|| Can use [[Open Seat Prerequisites]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 12 || style=&amp;quot;text-align:right;&amp;quot; | 11,700 || style=&amp;quot;text-align:right;&amp;quot; | 100,700|| Can create 10 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 13 || style=&amp;quot;text-align:right;&amp;quot; | 12,300 || style=&amp;quot;text-align:right;&amp;quot; | 113,000|| Can create [[tournaments]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 14 || style=&amp;quot;text-align:right;&amp;quot; | 12,900 || style=&amp;quot;text-align:right;&amp;quot; | 125,900|| Can include the [[Airlift Card]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 15 || style=&amp;quot;text-align:right;&amp;quot; | 13,600 || style=&amp;quot;text-align:right;&amp;quot; | 139,500|| Can create 12 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16 || style=&amp;quot;text-align:right;&amp;quot; | 14,300 || style=&amp;quot;text-align:right;&amp;quot; | 153,800|| Can use [[vacations]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 17 || style=&amp;quot;text-align:right;&amp;quot; | 15,100 || style=&amp;quot;text-align:right;&amp;quot; | 168,900|| Can include the [[Sanctions Card]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 18 || style=&amp;quot;text-align:right;&amp;quot; | 15,900 || style=&amp;quot;text-align:right;&amp;quot; | 184,800|| Can create 14 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 19 || style=&amp;quot;text-align:right;&amp;quot; | 16,700 || style=&amp;quot;text-align:right;&amp;quot; | 201,500|| Can use the [[extra armies for territories]] setting when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 20 || style=&amp;quot;text-align:right;&amp;quot; | 17,600 || style=&amp;quot;text-align:right;&amp;quot; | 219,100|| Can change the [[offensive and defensive kill rate]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 21 || style=&amp;quot;text-align:right;&amp;quot; | 18,500 || style=&amp;quot;text-align:right;&amp;quot; | 237,600|| Can create 16 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 22 || style=&amp;quot;text-align:right;&amp;quot; | 19,400 || style=&amp;quot;text-align:right;&amp;quot; | 257,000|| Can have two created [[tournaments]] at a time&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 23 || style=&amp;quot;text-align:right;&amp;quot; | 20,500 || style=&amp;quot;text-align:right;&amp;quot; | 277,500|| Can include the [[spy card]], [[surveillance card]], and [[reconnaissance card]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24 || style=&amp;quot;text-align:right;&amp;quot; | 21,600 || style=&amp;quot;text-align:right;&amp;quot; | 299,100|| Can create 18 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 25 || style=&amp;quot;text-align:right;&amp;quot; | 22,700 || style=&amp;quot;text-align:right;&amp;quot; | 321,800|| Can include [[wastelands]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 26 || style=&amp;quot;text-align:right;&amp;quot; | 23,900 || style=&amp;quot;text-align:right;&amp;quot; | 345,700|| Can enable the [[attack only and transfer only]] settings when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 27 || style=&amp;quot;text-align:right;&amp;quot; | 25,100 || style=&amp;quot;text-align:right;&amp;quot; | 370,800|| Can create 20 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 28 || style=&amp;quot;text-align:right;&amp;quot; | 26,400 || style=&amp;quot;text-align:right;&amp;quot; | 397,200|| Can include the [[blockade card]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 29 || style=&amp;quot;text-align:right;&amp;quot; | 27,900 || style=&amp;quot;text-align:right;&amp;quot; | 425,100|| Can take up to 3 [[vacations]] per year&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 30 || style=&amp;quot;text-align:right;&amp;quot; | 29,300 || style=&amp;quot;text-align:right;&amp;quot; | 454,400|| Can create 22 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 31 || style=&amp;quot;text-align:right;&amp;quot; | 30,800 || style=&amp;quot;text-align:right;&amp;quot; | 485,200|| Can enable the [[local deployments]] setting when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32 || style=&amp;quot;text-align:right;&amp;quot; | 32,500 || style=&amp;quot;text-align:right;&amp;quot; | 517,700|| Can have up to three created [[tournaments]] at a time&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 33 || style=&amp;quot;text-align:right;&amp;quot; | 34,200 || style=&amp;quot;text-align:right;&amp;quot; | 551,900|| Can create 24 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 34 || style=&amp;quot;text-align:right;&amp;quot; | 35,900 || style=&amp;quot;text-align:right;&amp;quot; | 587,800|| Can use Dense, Heavy, and Complete [[fog]] levels&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 35 || style=&amp;quot;text-align:right;&amp;quot; | 37,900 || style=&amp;quot;text-align:right;&amp;quot; | 625,700|| Can include the [[gift card]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 36 || style=&amp;quot;text-align:right;&amp;quot; | 39,800 || style=&amp;quot;text-align:right;&amp;quot; | 665,500|| Can create 26 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 37 || style=&amp;quot;text-align:right;&amp;quot; | 41,900 || style=&amp;quot;text-align:right;&amp;quot; | 707,400|| Can enable [[multi-attack]] and [[attack by percentage]] settings when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 38 || style=&amp;quot;text-align:right;&amp;quot; | 44,200 || style=&amp;quot;text-align:right;&amp;quot; | 751,600|| Can have up to four created [[tournaments]] at a time, and use [[commanders]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 39 || style=&amp;quot;text-align:right;&amp;quot; | 46,400 || style=&amp;quot;text-align:right;&amp;quot; | 798,000|| Can create 28 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40 || style=&amp;quot;text-align:right;&amp;quot; | 48,900 || style=&amp;quot;text-align:right;&amp;quot; | 846,900|| Can enable [[no-split mode]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 41 || style=&amp;quot;text-align:right;&amp;quot; | 51,400 || style=&amp;quot;text-align:right;&amp;quot; | 898,300|| Can include the [[order priority card]] and [[order delay card]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 42 || style=&amp;quot;text-align:right;&amp;quot; | 54,100 || style=&amp;quot;text-align:right;&amp;quot; | 952,400|| Can create 30 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 43 || style=&amp;quot;text-align:right;&amp;quot; | 57,000 || style=&amp;quot;text-align:right;&amp;quot; | 1,009,400|| Can have up to five created [[tournaments]] at a time&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 44 || style=&amp;quot;text-align:right;&amp;quot; | 60,000 || style=&amp;quot;text-align:right;&amp;quot; | 1,069,400|| Can create 32 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 45 || style=&amp;quot;text-align:right;&amp;quot; | 63,100 || style=&amp;quot;text-align:right;&amp;quot; | 1,132,500|| Can [[override bonuses]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 46 || style=&amp;quot;text-align:right;&amp;quot; | 66,400 || style=&amp;quot;text-align:right;&amp;quot; | 1,198,900|| Can create 34 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 47 || style=&amp;quot;text-align:right;&amp;quot; | 69,900 || style=&amp;quot;text-align:right;&amp;quot; | 1,268,800|| Can use [[custom scenarios]] when creating multi-player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48 || style=&amp;quot;text-align:right;&amp;quot; | 73,600 || style=&amp;quot;text-align:right;&amp;quot; | 1,342,400|| Can join the [[1 v 1 Ladder]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 49 || style=&amp;quot;text-align:right;&amp;quot; | 77,400 || style=&amp;quot;text-align:right;&amp;quot; | 1,419,800|| Can take up to 5 [[vacations]] per year&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 50 || style=&amp;quot;text-align:right;&amp;quot; | 81,500 || style=&amp;quot;text-align:right;&amp;quot; | 1,501,300|| Can create 37 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 51 || style=&amp;quot;text-align:right;&amp;quot; | 85,800 || style=&amp;quot;text-align:right;&amp;quot; | 1,587,100|| Can join the [[2 v 2 Ladder]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 52 || style=&amp;quot;text-align:right;&amp;quot; | 90,300 || style=&amp;quot;text-align:right;&amp;quot; | 1,677,400 || Can join the [[Seasonal Ladder]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 53 || style=&amp;quot;text-align:right;&amp;quot; | 95,000 || style=&amp;quot;text-align:right;&amp;quot; | 1,772,400 || Can create 40 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 54 || style=&amp;quot;text-align:right;&amp;quot; | 100,000 || style=&amp;quot;text-align:right;&amp;quot; | 1,872,400 || Can join the [[3 v 3 Ladder]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 55 || style=&amp;quot;text-align:right;&amp;quot; | 220,400 || style=&amp;quot;text-align:right;&amp;quot; | 2,092,800 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 56 || style=&amp;quot;text-align:right;&amp;quot; | 479,000 || style=&amp;quot;text-align:right;&amp;quot; | 2,571,800 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 57 || style=&amp;quot;text-align:right;&amp;quot; | 830,600 || style=&amp;quot;text-align:right;&amp;quot; | 3,402,400 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 58 || style=&amp;quot;text-align:right;&amp;quot; | 1,308,400 || style=&amp;quot;text-align:right;&amp;quot; | 4,710,900 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 59 || style=&amp;quot;text-align:right;&amp;quot; | 1,957,900 || style=&amp;quot;text-align:right;&amp;quot; | 6,668,800 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 60 || style=&amp;quot;text-align:right;&amp;quot; | 2,840,700 || style=&amp;quot;text-align:right;&amp;quot; | 9,509,500 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 61 || style=&amp;quot;text-align:right;&amp;quot; | 4,040,300 || style=&amp;quot;text-align:right;&amp;quot; | 13,549,800 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 62 || style=&amp;quot;text-align:right;&amp;quot; | 5,670,900 || style=&amp;quot;text-align:right;&amp;quot; | 19,220,700 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 63 || style=&amp;quot;text-align:right;&amp;quot; | 7,886,900 || style=&amp;quot;text-align:right;&amp;quot; | 27,107,600 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 64 || style=&amp;quot;text-align:right;&amp;quot; | 10,898,900 || style=&amp;quot;text-align:right;&amp;quot; | 38,006,500 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 65 || style=&amp;quot;text-align:right;&amp;quot; | 14,992,400 || style=&amp;quot;text-align:right;&amp;quot; | 52,998,900 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 66 || style=&amp;quot;text-align:right;&amp;quot; | 20,556,000 || style=&amp;quot;text-align:right;&amp;quot; | 73,554,900 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 67 || style=&amp;quot;text-align:right;&amp;quot; | 28,117,800 || style=&amp;quot;text-align:right;&amp;quot; | 101,672,700 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 68 || style=&amp;quot;text-align:right;&amp;quot; | 38,394,900 || style=&amp;quot;text-align:right;&amp;quot; | 140,067,600 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 69 || style=&amp;quot;text-align:right;&amp;quot; | 52,362,900 || style=&amp;quot;text-align:right;&amp;quot; | 192,430,500 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 70 || style=&amp;quot;text-align:right;&amp;quot; | 71,347,000 || style=&amp;quot;text-align:right;&amp;quot; | 263,777,500 || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Map Levels ==&lt;br /&gt;
By gaining levels, players can gain access to additional maps.  Players only need access to a map in order to &#039;&#039;create&#039;&#039; games or tournaments on that map.  If they are invited to a game or tournament, they can always join it no matter what level they are.&lt;br /&gt;
&lt;br /&gt;
Map creators are in full control of what level their maps unlock. As a map creator, you can log into your map at any time, click the &amp;quot;Edit Name/Description&amp;quot; button and set the level. You can do this even after it&#039;s public. If you want your map available to everyone regardless of their level, you can just set your map to level 1 and everyone will be able to use it. &lt;br /&gt;
&lt;br /&gt;
The advantage of setting a level to your map is increased visibility. For example, if you set your map to level 10, whenever someone levels up to 10 it&#039;ll pop up a message on their screen letting them know they&#039;ve unlocked your map. For best visibility, you should try to set your map to a level that has few other maps assigned to it (or at least, where your map is rated more highly than the others at that level.)&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Points]]&lt;br /&gt;
* [[Hidden settings]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Warzone]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Levels&amp;diff=7400</id>
		<title>Levels</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Levels&amp;diff=7400"/>
		<updated>2025-03-15T20:51:30Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: Map creators can set unlock levels higher than 57&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By earning [[points]], players can gain &#039;&#039;&#039;levels&#039;&#039;&#039;.   Gaining levels unlocks additional features or [[map]]s that players can use, among other things.&lt;br /&gt;
&lt;br /&gt;
== Levels don&#039;t make you stronger ==&lt;br /&gt;
The idea of leveling up is familiar to anyone who&#039;s played an RPG. However, Warzone’s leveling system has an important distinction: In Warzone, levels don’t actually make you stronger. Warzone is fundamentally a competitive strategy game, and games will always be won or lost based on your strategy alone. Levels will not do anything that gives you an advantage in a game. It’s just as easy for a level 1 player to defeat a level 30 player as it is for a level 40 player.&lt;br /&gt;
&lt;br /&gt;
== Rewards ==&lt;br /&gt;
Leveling up unlocks rewards.  Once a reward is unlocked, you have it permanently.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;90%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;5%&amp;quot; | Level&lt;br /&gt;
! width=&amp;quot;5%&amp;quot; | Points (Delta)&lt;br /&gt;
! width=&amp;quot;5%&amp;quot; | Points (Sum)&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; | Reward&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 2 || style=&amp;quot;text-align:right;&amp;quot; | 7,000 || style=&amp;quot;text-align:right;&amp;quot; | 7,000 || Can create 6 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 3 || style=&amp;quot;text-align:right;&amp;quot; | 7,300 || style=&amp;quot;text-align:right;&amp;quot; | 14,300 || Can join tournaments&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 4 || style=&amp;quot;text-align:right;&amp;quot; | 7,800 || style=&amp;quot;text-align:right;&amp;quot; | 22,100 || Can post to the [[forums]] (all except [[Ladder]])&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 5 || style=&amp;quot;text-align:right;&amp;quot; | 8,100 || style=&amp;quot;text-align:right;&amp;quot; | 30,200 || Three days of ad-free play&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 6 || style=&amp;quot;text-align:right;&amp;quot; | 8,600 || style=&amp;quot;text-align:right;&amp;quot; | 38,800|| Can create 7 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 7 || style=&amp;quot;text-align:right;&amp;quot; | 9,100 || style=&amp;quot;text-align:right;&amp;quot; | 47,900|| Can use the [[Statistics Window]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 8 || style=&amp;quot;text-align:right;&amp;quot; | 9,500 || style=&amp;quot;text-align:right;&amp;quot; | 57,400|| Can include the [[Diplomacy Card]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 9 || style=&amp;quot;text-align:right;&amp;quot; | 10,000 || style=&amp;quot;text-align:right;&amp;quot; | 67,400|| Can create 8 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 10 || style=&amp;quot;text-align:right;&amp;quot; | 10,500 || style=&amp;quot;text-align:right;&amp;quot; | 77,900|| Can include the [[Emergency Blockade Card]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 11 || style=&amp;quot;text-align:right;&amp;quot; | 11,100 || style=&amp;quot;text-align:right;&amp;quot; | 89,000|| Can use [[Open Seat Prerequisites]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 12 || style=&amp;quot;text-align:right;&amp;quot; | 11,700 || style=&amp;quot;text-align:right;&amp;quot; | 100,700|| Can create 10 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 13 || style=&amp;quot;text-align:right;&amp;quot; | 12,300 || style=&amp;quot;text-align:right;&amp;quot; | 113,000|| Can create [[tournaments]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 14 || style=&amp;quot;text-align:right;&amp;quot; | 12,900 || style=&amp;quot;text-align:right;&amp;quot; | 125,900|| Can include the [[Airlift Card]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 15 || style=&amp;quot;text-align:right;&amp;quot; | 13,600 || style=&amp;quot;text-align:right;&amp;quot; | 139,500|| Can create 12 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 16 || style=&amp;quot;text-align:right;&amp;quot; | 14,300 || style=&amp;quot;text-align:right;&amp;quot; | 153,800|| Can use [[vacations]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 17 || style=&amp;quot;text-align:right;&amp;quot; | 15,100 || style=&amp;quot;text-align:right;&amp;quot; | 168,900|| Can include the [[Sanctions Card]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 18 || style=&amp;quot;text-align:right;&amp;quot; | 15,900 || style=&amp;quot;text-align:right;&amp;quot; | 184,800|| Can create 14 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 19 || style=&amp;quot;text-align:right;&amp;quot; | 16,700 || style=&amp;quot;text-align:right;&amp;quot; | 201,500|| Can use the [[extra armies for territories]] setting when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 20 || style=&amp;quot;text-align:right;&amp;quot; | 17,600 || style=&amp;quot;text-align:right;&amp;quot; | 219,100|| Can change the [[offensive and defensive kill rate]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 21 || style=&amp;quot;text-align:right;&amp;quot; | 18,500 || style=&amp;quot;text-align:right;&amp;quot; | 237,600|| Can create 16 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 22 || style=&amp;quot;text-align:right;&amp;quot; | 19,400 || style=&amp;quot;text-align:right;&amp;quot; | 257,000|| Can have two created [[tournaments]] at a time&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 23 || style=&amp;quot;text-align:right;&amp;quot; | 20,500 || style=&amp;quot;text-align:right;&amp;quot; | 277,500|| Can include the [[spy card]], [[surveillance card]], and [[reconnaissance card]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 24 || style=&amp;quot;text-align:right;&amp;quot; | 21,600 || style=&amp;quot;text-align:right;&amp;quot; | 299,100|| Can create 18 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 25 || style=&amp;quot;text-align:right;&amp;quot; | 22,700 || style=&amp;quot;text-align:right;&amp;quot; | 321,800|| Can include [[wastelands]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 26 || style=&amp;quot;text-align:right;&amp;quot; | 23,900 || style=&amp;quot;text-align:right;&amp;quot; | 345,700|| Can enable the [[attack only and transfer only]] settings when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 27 || style=&amp;quot;text-align:right;&amp;quot; | 25,100 || style=&amp;quot;text-align:right;&amp;quot; | 370,800|| Can create 20 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 28 || style=&amp;quot;text-align:right;&amp;quot; | 26,400 || style=&amp;quot;text-align:right;&amp;quot; | 397,200|| Can include the [[blockade card]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 29 || style=&amp;quot;text-align:right;&amp;quot; | 27,900 || style=&amp;quot;text-align:right;&amp;quot; | 425,100|| Can take up to 3 [[vacations]] per year&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 30 || style=&amp;quot;text-align:right;&amp;quot; | 29,300 || style=&amp;quot;text-align:right;&amp;quot; | 454,400|| Can create 22 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 31 || style=&amp;quot;text-align:right;&amp;quot; | 30,800 || style=&amp;quot;text-align:right;&amp;quot; | 485,200|| Can enable the [[local deployments]] setting when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 32 || style=&amp;quot;text-align:right;&amp;quot; | 32,500 || style=&amp;quot;text-align:right;&amp;quot; | 517,700|| Can have up to three created [[tournaments]] at a time&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 33 || style=&amp;quot;text-align:right;&amp;quot; | 34,200 || style=&amp;quot;text-align:right;&amp;quot; | 551,900|| Can create 24 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 34 || style=&amp;quot;text-align:right;&amp;quot; | 35,900 || style=&amp;quot;text-align:right;&amp;quot; | 587,800|| Can use Dense, Heavy, and Complete [[fog]] levels&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 35 || style=&amp;quot;text-align:right;&amp;quot; | 37,900 || style=&amp;quot;text-align:right;&amp;quot; | 625,700|| Can include the [[gift card]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 36 || style=&amp;quot;text-align:right;&amp;quot; | 39,800 || style=&amp;quot;text-align:right;&amp;quot; | 665,500|| Can create 26 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 37 || style=&amp;quot;text-align:right;&amp;quot; | 41,900 || style=&amp;quot;text-align:right;&amp;quot; | 707,400|| Can enable [[multi-attack]] and [[attack by percentage]] settings when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 38 || style=&amp;quot;text-align:right;&amp;quot; | 44,200 || style=&amp;quot;text-align:right;&amp;quot; | 751,600|| Can have up to four created [[tournaments]] at a time, and use [[commanders]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 39 || style=&amp;quot;text-align:right;&amp;quot; | 46,400 || style=&amp;quot;text-align:right;&amp;quot; | 798,000|| Can create 28 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 40 || style=&amp;quot;text-align:right;&amp;quot; | 48,900 || style=&amp;quot;text-align:right;&amp;quot; | 846,900|| Can enable [[no-split mode]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 41 || style=&amp;quot;text-align:right;&amp;quot; | 51,400 || style=&amp;quot;text-align:right;&amp;quot; | 898,300|| Can include the [[order priority card]] and [[order delay card]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 42 || style=&amp;quot;text-align:right;&amp;quot; | 54,100 || style=&amp;quot;text-align:right;&amp;quot; | 952,400|| Can create 30 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 43 || style=&amp;quot;text-align:right;&amp;quot; | 57,000 || style=&amp;quot;text-align:right;&amp;quot; | 1,009,400|| Can have up to five created [[tournaments]] at a time&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 44 || style=&amp;quot;text-align:right;&amp;quot; | 60,000 || style=&amp;quot;text-align:right;&amp;quot; | 1,069,400|| Can create 32 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 45 || style=&amp;quot;text-align:right;&amp;quot; | 63,100 || style=&amp;quot;text-align:right;&amp;quot; | 1,132,500|| Can [[override bonuses]] when creating games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 46 || style=&amp;quot;text-align:right;&amp;quot; | 66,400 || style=&amp;quot;text-align:right;&amp;quot; | 1,198,900|| Can create 34 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 47 || style=&amp;quot;text-align:right;&amp;quot; | 69,900 || style=&amp;quot;text-align:right;&amp;quot; | 1,268,800|| Can use [[custom scenarios]] when creating multi-player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 48 || style=&amp;quot;text-align:right;&amp;quot; | 73,600 || style=&amp;quot;text-align:right;&amp;quot; | 1,342,400|| Can join the [[1 v 1 Ladder]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 49 || style=&amp;quot;text-align:right;&amp;quot; | 77,400 || style=&amp;quot;text-align:right;&amp;quot; | 1,419,800|| Can take up to 5 [[vacations]] per year&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 50 || style=&amp;quot;text-align:right;&amp;quot; | 81,500 || style=&amp;quot;text-align:right;&amp;quot; | 1,501,300|| Can create 37 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 51 || style=&amp;quot;text-align:right;&amp;quot; | 85,800 || style=&amp;quot;text-align:right;&amp;quot; | 1,587,100|| Can join the [[2 v 2 Ladder]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 52 || style=&amp;quot;text-align:right;&amp;quot; | 90,300 || style=&amp;quot;text-align:right;&amp;quot; | 1,677,400 || Can join the [[Seasonal Ladder]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 53 || style=&amp;quot;text-align:right;&amp;quot; | 95,000 || style=&amp;quot;text-align:right;&amp;quot; | 1,772,400 || Can create 40 player games&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 54 || style=&amp;quot;text-align:right;&amp;quot; | 100,000 || style=&amp;quot;text-align:right;&amp;quot; | 1,872,400 || Can join the [[3 v 3 Ladder]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 55 || style=&amp;quot;text-align:right;&amp;quot; | 220,400 || style=&amp;quot;text-align:right;&amp;quot; | 2,092,800 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 56 || style=&amp;quot;text-align:right;&amp;quot; | 479,000 || style=&amp;quot;text-align:right;&amp;quot; | 2,571,800 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 57 || style=&amp;quot;text-align:right;&amp;quot; | 830,600 || style=&amp;quot;text-align:right;&amp;quot; | 3,402,400 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 58 || style=&amp;quot;text-align:right;&amp;quot; | 1,308,400 || style=&amp;quot;text-align:right;&amp;quot; | 4,710,900 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 59 || style=&amp;quot;text-align:right;&amp;quot; | 1,957,900 || style=&amp;quot;text-align:right;&amp;quot; | 6,668,800 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 60 || style=&amp;quot;text-align:right;&amp;quot; | 2,840,700 || style=&amp;quot;text-align:right;&amp;quot; | 9,509,500 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 61 || style=&amp;quot;text-align:right;&amp;quot; | 4,040,300 || style=&amp;quot;text-align:right;&amp;quot; | 13,549,800 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 62 || style=&amp;quot;text-align:right;&amp;quot; | 5,670,900 || style=&amp;quot;text-align:right;&amp;quot; | 19,220,700 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 63 || style=&amp;quot;text-align:right;&amp;quot; | 7,886,900 || style=&amp;quot;text-align:right;&amp;quot; | 27,107,600 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 64 || style=&amp;quot;text-align:right;&amp;quot; | 10,898,900 || style=&amp;quot;text-align:right;&amp;quot; | 38,006,500 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 65 || style=&amp;quot;text-align:right;&amp;quot; | 14,992,400 || style=&amp;quot;text-align:right;&amp;quot; | 52,998,900 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 66 || style=&amp;quot;text-align:right;&amp;quot; | 20,556,000 || style=&amp;quot;text-align:right;&amp;quot; | 73,554,900 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 67 || style=&amp;quot;text-align:right;&amp;quot; | 28,117,800 || style=&amp;quot;text-align:right;&amp;quot; | 101,672,700 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 68 || style=&amp;quot;text-align:right;&amp;quot; | 38,394,900 || style=&amp;quot;text-align:right;&amp;quot; | 140,067,600 || -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 69 || style=&amp;quot;text-align:right;&amp;quot; | 52,362,900 || style=&amp;quot;text-align:right;&amp;quot; | 192,430,500 || Highest players levels for now (&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center;&amp;quot; | 70 || style=&amp;quot;text-align:right;&amp;quot; | 71,347,000 || style=&amp;quot;text-align:right;&amp;quot; | 263,777,500 || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Map Levels ==&lt;br /&gt;
By gaining levels, players can gain access to additional maps.  Players only need access to a map in order to &#039;&#039;create&#039;&#039; games or tournaments on that map.  If they are invited to a game or tournament, they can always join it no matter what level they are.&lt;br /&gt;
&lt;br /&gt;
Map creators are in full control of what level their maps unlock. As a map creator, you can log into your map at any time, click the &amp;quot;Edit Name/Description&amp;quot; button and set the level. You can do this even after it&#039;s public. If you want your map available to everyone regardless of their level, you can just set your map to level 1 and everyone will be able to use it. &lt;br /&gt;
&lt;br /&gt;
The advantage of setting a level to your map is increased visibility. For example, if you set your map to level 10, whenever someone levels up to 10 it&#039;ll pop up a message on their screen letting them know they&#039;ve unlocked your map. For best visibility, you should try to set your map to a level that has few other maps assigned to it (or at least, where your map is rated more highly than the others at that level.)&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Points]]&lt;br /&gt;
* [[Hidden settings]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Warzone]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Mod_API_Reference:UI&amp;diff=7393</id>
		<title>Mod API Reference:UI</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Mod_API_Reference:UI&amp;diff=7393"/>
		<updated>2025-03-11T14:16:44Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: /* UI Elements */ mention in which version RadioButton added in&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mods can put UI (user interface) onto the screen when called from one of the Client &#039;&#039;&#039;Present&#039;&#039;&#039; [[Mod Hooks|hooks]].  This page describes how to create and update UI elements.&lt;br /&gt;
&lt;br /&gt;
UI elements are created by accessing the &amp;lt;code&amp;gt;UI&amp;lt;/code&amp;gt; global.  For example, mods can call UI.CreateButton(...) to create a button.  Any UI element listed below can be created in a similar manner.&lt;br /&gt;
&lt;br /&gt;
Behind the scenes, these objects are implemented using Unity&#039;s UI and layout system. Being familiar with Unity&#039;s UI system will make understanding how to build UI easier, but it&#039;s not a requirement.&lt;br /&gt;
&lt;br /&gt;
== Parents ==&lt;br /&gt;
All UI constructors take a single &amp;lt;code&amp;gt;parent&amp;lt;/code&amp;gt; argument.  This allows you to construct hierarchies.  For example, mods can create a vertical stack of three buttons like this:&lt;br /&gt;
&lt;br /&gt;
  local vert = UI.CreateVerticalLayoutGroup(rootParent);&lt;br /&gt;
  local btn1 = UI.CreateButton(vert);&lt;br /&gt;
  local btn2 = UI.CreateButton(vert);&lt;br /&gt;
  local btn3 = UI.CreateButton(vert);&lt;br /&gt;
&lt;br /&gt;
When a mod is called to present UI, it will be passed a root UI element (rootParent).  Your mod should pass the rootParent to a UI element that will be the root of all other elements you need.  This element is most often a VerticalLayoutGroup, as shown in the example above.  &lt;br /&gt;
&lt;br /&gt;
You can never make more than one element a child of the rootParent.  If you need more than one, simply make your own container to house them.&lt;br /&gt;
  &lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
UI elements have properties that can be read or set.  For example, Buttons have a Text property that allows you to set the text that appears on the button.&lt;br /&gt;
&lt;br /&gt;
To read or write a UI element&#039;s property, you must use getter/setter functions named GetX() and SetX().  For example, to set the text of a button you can write &amp;lt;code&amp;gt;btn1.SetText(&#039;Click me!&#039;)&amp;lt;/code&amp;gt; and can retrieve it using &amp;lt;code&amp;gt;btn1.GetText()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
All getter and setter functions return the UI element, which means you can chain them together to easily set lots of properties. For example:&lt;br /&gt;
&lt;br /&gt;
  UI.CreateButton(vert)&lt;br /&gt;
    .SetText(&#039;Click me!&#039;)&lt;br /&gt;
    .SetColor(&#039;#00FF00&#039;)&lt;br /&gt;
    .SetOnClick(someFunction);&lt;br /&gt;
&lt;br /&gt;
== Common Properties ==&lt;br /&gt;
&lt;br /&gt;
All UI elements have the following properties:&lt;br /&gt;
* &#039;&#039;&#039;PreferredWidth&#039;&#039;&#039; &#039;&#039;number&#039;&#039;: How wide the element prefers to be.  It may not be this wide if there is not enough space, and it may be wider if FlexibleWidth is greater than 0.  Defaults to -1, which is a special value meaning the object will meansure its own size based on its contents.&lt;br /&gt;
* &#039;&#039;&#039;PreferredHeight&#039;&#039;&#039; &#039;&#039;number&#039;&#039;: How tall the element prefers to be.  It may not be this tall if there is not enough space, and it may be taller if FlexibleHeight is greater than 0.  Defaults to -1, which is a special value meaning the object will meansure its own size based on its contents.&lt;br /&gt;
* &#039;&#039;&#039;FlexibleWidth&#039;&#039;&#039; &#039;&#039;number&#039;&#039;: A number from 0 to 1 indicating how much of the remaining space this element wishes to take up.  Defaults to 0, which means the element will be no wider than PreferredWidth.  Set it to 1 to indicate the object should grow to encompass all remaining horizontal space it can.&lt;br /&gt;
* &#039;&#039;&#039;FlexibleHeight&#039;&#039;&#039; &#039;&#039;number&#039;&#039;: A number from 0 to 1 indicating how much of the remaining space this element wishes to take up.  Defaults to 0, which means the element will be no taller than PreferredHeight.  Set it to 1 to indicate the object should grow to encompass all remaining vertical space it can.&lt;br /&gt;
&lt;br /&gt;
== UI Elements ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Empty&#039;&#039;&#039;: A simple UI element that displays nothing.  This can be used as a container or to create space.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VerticalLayoutGroup&#039;&#039;&#039;: A container that stacks its children vertically.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;HorizontalLayoutGroup&#039;&#039;&#039;: A container that stacks its children horizontally.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Label&#039;&#039;&#039;: A way to display text on the screen.&lt;br /&gt;
* &#039;&#039;&#039;Text&#039;&#039;&#039; &#039;&#039;string&#039;&#039;: The text to display.&lt;br /&gt;
* &#039;&#039;&#039;Color&#039;&#039;&#039; &#039;&#039;string&#039;&#039;: The color of the text.  Pass this as a string in #RRGGBB format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Button&#039;&#039;&#039;: A button that players can click on to do something.&lt;br /&gt;
* &#039;&#039;&#039;Text&#039;&#039;&#039; &#039;&#039;string&#039;&#039;: The text to display on the button.&lt;br /&gt;
* &#039;&#039;&#039;Color&#039;&#039;&#039; &#039;&#039;string&#039;&#039;: The color of the button.  Pass this as a string in #RRGGBB format.  Only the following colors are supported for buttons:&lt;br /&gt;
{{Color2|BABABC}} {{Color2|6C73D1}} {{Color2|FF00ED}} {{Color2|FFC200}} {{Color2|00A0FF}} {{Color2|00B5FF}} {{Color2|F3FFAE}} {{Color2|43C731}} {{Color2|43C631}} {{Color2|1274A4}} {{Color2|1274A5}} {{Color2|B03B3B}} {{Color2|0021FF}} {{Color2|359029}} {{Color2|00E9FF}} {{Color2|00FF21}} {{Color2|FFF700}} {{Color2|AA3A3A}} {{Color2|43C732}} {{Color2|00D4FF}} {{Color2|B03C3C}} {{Color2|00F4FF}} {{Color2|00BFFF}} {{Color2|4EC4FF}} {{Color2|615DDF}} {{Color2|100C08}} {{Color2|0000FF}} {{Color2|4EFFFF}} {{Color2|59009D}} {{Color2|008000}} {{Color2|FF7D00}} {{Color2|FF0000}} {{Color2|606060}} {{Color2|00FF05}} {{Color2|FF697A}} {{Color2|94652E}} {{Color2|00FF8C}} {{Color2|FF4700}} {{Color2|009B9D}} {{Color2|23A0FF}} {{Color2|AC0059}} {{Color2|FF87FF}} {{Color2|FFFF00}} {{Color2|943E3E}} {{Color2|FEFF9B}} {{Color2|AD7E7E}} {{Color2|B70AFF}} {{Color2|FFAF56}} {{Color2|FF00B1}} {{Color2|8EBE57}} {{Color2|DAA520}} {{Color2|990024}} {{Color2|00FFFF}} {{Color2|8F9779}} {{Color2|880085}} {{Color2|00755E}} {{Color2|FFE5B4}} {{Color2|4169E1}} {{Color2|FF43A4}} {{Color2|8DB600}} {{Color2|40826D}} {{Color2|C04000}} {{Color2|FFDDF4}} {{Color2|CD7F32}} {{Color2|C19A6B}} {{Color2|C09999}} {{Color2|B0BF1A}} {{Color2|3B7A57}} {{Color2|4B5320}} {{Color2|664C28}} {{Color2|893F45}} {{Color2|D2691E}} {{Color2|36454F}} {{Color2|FF00FF}} {{Color2|76FF7A}}&lt;br /&gt;
* &#039;&#039;&#039;TextColor&#039;&#039;&#039; &#039;&#039;string&#039;&#039;: The color of the text on the button.  Pass this as a string in #RRGGBB format.&lt;br /&gt;
* &#039;&#039;&#039;OnClick&#039;&#039;&#039; &#039;&#039;function&#039;&#039;: Pass the name of a lua function to be called whenever the player clicks the button.&lt;br /&gt;
* &#039;&#039;&#039;Interactable&#039;&#039;&#039; &#039;&#039;bool&#039;&#039;: If false, the control will be grayed out and unusable by the player.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CheckBox&#039;&#039;&#039;: A toggleable check box that players can check and uncheck.&lt;br /&gt;
* &#039;&#039;&#039;IsChecked&#039;&#039;&#039; &#039;&#039;bool&#039;&#039;: Whether the check box is checked or unchecked.&lt;br /&gt;
* &#039;&#039;&#039;Text&#039;&#039;&#039; &#039;&#039;string&#039;&#039;: The label displayed to the right of the check box.&lt;br /&gt;
* &#039;&#039;&#039;OnValueChanged&#039;&#039;&#039; &#039;&#039;function&#039;&#039;: Pass the name of a lua function to be called whenever the IsChecked property changes, either by your code or by the player clicking the check box.&lt;br /&gt;
* &#039;&#039;&#039;Interactable&#039;&#039;&#039; &#039;&#039;bool&#039;&#039;: If false, the control will be grayed out and unusable by the player.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RadioButton&#039;&#039;&#039;: Added in [[Mod API Reference:IsVersionOrHigher|5.34.0]]. Like a CheckBox except circular, and when assigned into a group, only one may be selected at a time.&lt;br /&gt;
* &#039;&#039;&#039;IsChecked&#039;&#039;&#039; &#039;&#039;bool&#039;&#039;: Whether it&#039;s checked or unchecked.&lt;br /&gt;
* &#039;&#039;&#039;Text&#039;&#039;&#039; &#039;&#039;string&#039;&#039;: The label displayed to the right of the radio button.&lt;br /&gt;
* &#039;&#039;&#039;OnValueChanged&#039;&#039;&#039; &#039;&#039;function&#039;&#039;: Pass the name of a lua function to be called whenever the IsChecked property changes, either by your code or by the player clicking the check box.&lt;br /&gt;
* &#039;&#039;&#039;Interactable&#039;&#039;&#039; &#039;&#039;bool&#039;&#039;: If false, the control will be grayed out and unusable by the player.&lt;br /&gt;
* &#039;&#039;&#039;Group&#039;&#039;&#039;: &#039;&#039;RadioButtonGroup&#039;&#039;: Created by using UI.CreateRadioButtonGroup.  Create one group and assign it to multiple radio buttons to group them together.  CreateRadioButtonGroup must be passed a UI element that it will live on.  It does not matter what UI element you pass in as long as it doesn&#039;t get destroyed before the radio buttons.  A common choice is to pass in the first radio button itself, or pass in the VerticalLayoutGroup that all the radio buttons live in together.  For example:&lt;br /&gt;
&lt;br /&gt;
  local vert = UI.CreateVerticalLayoutGroup(rootParent);&lt;br /&gt;
  local group = UI.CreateRadioButtonGroup(vert);&lt;br /&gt;
  UI.CreateRadioButton(vert).SetGroup(group).SetText(&#039;Radio 1&#039;);&lt;br /&gt;
  UI.CreateRadioButton(vert).SetGroup(group).SetText(&#039;Radio 2&#039;);&lt;br /&gt;
  UI.CreateRadioButton(vert).SetGroup(group).SetText(&#039;Radio 3&#039;);&lt;br /&gt;
  UI.CreateRadioButton(vert).SetGroup(group).SetText(&#039;Radio 4&#039;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TextInputField&#039;&#039;&#039;: A box where players can type a string.&lt;br /&gt;
* &#039;&#039;&#039;Text&#039;&#039;&#039; &#039;&#039;string&#039;&#039;: The string that appears in the box, or that players typed.&lt;br /&gt;
* &#039;&#039;&#039;PlaceholderText&#039;&#039;&#039; &#039;&#039;string&#039;&#039;: The text that appears in the box grayed out when it&#039;s empty.  For example, &amp;quot;Enter name here...&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;CharacterLimit&#039;&#039;&#039; &#039;&#039;integer&#039;&#039;: The maximum number of characters that players can type into this text field.&lt;br /&gt;
* &#039;&#039;&#039;Interactable&#039;&#039;&#039; &#039;&#039;bool&#039;&#039;: If false, the control will be grayed out and unusable by the player.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NumberInputField&#039;&#039;&#039;: Allows players to input a number. Presents an input box and a slider that are linked, so players can either use the box to type a number or slide the slider.  This makes it friendly for mobile users who don&#039;t have a hardware keyboard, while also allowing any number to be entered if someone wants to exceed the range allowable by the slider.&lt;br /&gt;
* &#039;&#039;&#039;Value&#039;&#039;&#039; &#039;&#039;number&#039;&#039;: The value to show in the box+slider, or the value entered by the player.&lt;br /&gt;
* &#039;&#039;&#039;WholeNumbers&#039;&#039;&#039; &#039;&#039;bool&#039;&#039;: If true, only integers will be selectable by the player.  If false, partial numbers will be selectable. Defaults to true.&lt;br /&gt;
* &#039;&#039;&#039;SliderMinValue&#039;&#039;&#039; &#039;&#039;number&#039;&#039;: The minimum value selectable by the slider.  Numbers below this can still be entered by typing them into the box, so ensure to always validate the number you retrieve.&lt;br /&gt;
* &#039;&#039;&#039;SliderMaxValue&#039;&#039;&#039; &#039;&#039;number&#039;&#039;: The maxium value selectable by the slider.  Numbers above this can still be entered by typing them into the box, so ensure to always validate the number you retrieve.&lt;br /&gt;
* &#039;&#039;&#039;BoxPreferredWidth&#039;&#039;&#039; &#039;&#039;number&#039;&#039;: Allows setting the preferred width of just the box.  See &#039;&#039;&#039;Common Properties&#039;&#039;&#039; above.&lt;br /&gt;
* &#039;&#039;&#039;SliderPreferredWidth&#039;&#039;&#039; &#039;&#039;number&#039;&#039;: Allows setting the preferred width of just the slider.  See &#039;&#039;&#039;Common Properties&#039;&#039;&#039; above.&lt;br /&gt;
* &#039;&#039;&#039;Interactable&#039;&#039;&#039; &#039;&#039;bool&#039;&#039;: If false, the control will be grayed out and unusable by the player.&lt;br /&gt;
&lt;br /&gt;
== Helper Functions ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;UI.Destroy&#039;&#039;&#039;: Destroys (removes) any UI that the mod previously created.  Simply pass a UI element created by one of the UI.CreateXXX functions to UI.Destroy and it will disappear forever.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;UI.IsDestroyed&#039;&#039;&#039;: Tests if any UI element has been destroyed.  Also returns true if passed nil.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;UI.Alert&#039;&#039;&#039;: Pops up a dialog with a message and an Okay button to close the message.  Call this as simply &amp;lt;code&amp;gt;UI.Alert(msg)&amp;lt;/code&amp;gt;. Only one mod can use this at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;UI.PromptFromList&#039;&#039;&#039;: Pops up a dialog with a series of buttons to choose from.    This takes two arguments:  &lt;br /&gt;
* &#039;&#039;&#039;Message&#039;&#039;&#039; &#039;&#039;string&#039;&#039;: Text to appear at the top of the dialog.&lt;br /&gt;
* &#039;&#039;&#039;Options&#039;&#039;&#039; &#039;&#039;array&#039;&#039;: A list of options, each of which will show up as a button.  Each entry in this array should be a table with two fields, &#039;&#039;&#039;text&#039;&#039;&#039; and &#039;&#039;&#039;selected&#039;&#039;&#039;.  &#039;&#039;&#039;text&#039;&#039;&#039; populates the text that will appear on that button, and &#039;&#039;&#039;selected&#039;&#039;&#039; is a zero-argument function that gets called if the player selects that option.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;UI.InterceptNextTerritoryClick&#039;&#039;&#039;: Added in [[Mod_API_Reference:IsVersionOrHigher|5.17.0]].  After calling this function, the next time the player clicks a territory on the map, your mod will be notified of the click. After calling this, you should also instruct the player to click a territory, and it&#039;s also a good idea to let them know they can move dialogs out of the way to see the map.   &lt;br /&gt;
* &#039;&#039;&#039;Callback&#039;&#039;&#039; &#039;&#039;function&#039;&#039;: Pass a function that will be called on the next click.  This function will be passed a [[Mod_API_Reference:TerritoryDetails|TerritoryDetails]] object, which can be used to get the Territory ID or the name of the territory that was clicked.  This function can also be called with nil if the intercept request is cancelled, which can happen if another mod calls UI.InterceptNextTerritoryClick before a territory is clicked.  If you want to cancel the intercept request, you can return WL.CancelClickIntercept from the callback which will make the client behave as if you never called intercept.  Return nil, or leave off the return statement entirely, for normal operation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;UI.InterceptNextBonusLinkClick&#039;&#039;&#039;: Added in [[Mod_API_Reference:IsVersionOrHigher|5.17.0]].  After calling this function, the next time the player clicks a bonus link on the map, your mod will be notified of the click. After calling this, you should also instruct the player to click a bonus link, and it&#039;s also a good idea to let them know they can move dialogs out of the way to see the map.   &lt;br /&gt;
* &#039;&#039;&#039;Callback&#039;&#039;&#039; &#039;&#039;function&#039;&#039;: Pass a function that will be called on the next click.  This function will be passed a [[Mod_API_Reference:BonusDetails|BonusDetails]] object, which can be used to get the bonus ID or the name of the bonus that was clicked.  This function can also be called with nil if the intercept request is cancelled, which can happen if another mod calls UI.InterceptNextBonusLinkClick before a bonus link is clicked.   If you want to cancel the intercept request, you can return WL.CancelClickIntercept from the callback which will make the client behave as if you never called intercept.  Return nil, or leave off the return statement entirely, for normal operation.&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod API Reference]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Mod_API_Reference&amp;diff=7392</id>
		<title>Mod API Reference</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Mod_API_Reference&amp;diff=7392"/>
		<updated>2025-03-10T22:48:20Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: /* Newer API features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This explains how to use Warzone&#039;s [[Mods|mod]] API and links to the documentation for each object type.&lt;br /&gt;
&lt;br /&gt;
== Types ==&lt;br /&gt;
&lt;br /&gt;
When writing a mod, you&#039;ll encounter variables/objects of three basic types:&lt;br /&gt;
* Primitives: strings, numbers, booleans, etc.&lt;br /&gt;
* Tables: collections of key/value pairs.  A table is a lot like a hashmap or dictionary in other languages. Note that in Warzone, the key of a table will always be either a string or an integer.  Some places in this reference will refer to Arrays which are just tables with numeric keys starting at 1.&lt;br /&gt;
* Proxy objects: Discussed in the next section.&lt;br /&gt;
&lt;br /&gt;
== Proxy Objects ==&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;proxy object&#039;&#039;&#039; proxies information back and forth between your mod and Warzone.  You can tell if an object is a proxy object by looking for a &amp;lt;code&amp;gt;proxyType&amp;lt;/code&amp;gt; field.  All proxy objects always have the following fields:&lt;br /&gt;
&lt;br /&gt;
* proxyType: A string identifying the type of proxy object.&lt;br /&gt;
* readOnly: False if you&#039;re allowed to make changes to this proxy object, or true if it&#039;s read-only.&lt;br /&gt;
* readableKeys: An array containing all fields you&#039;re allowed to read from this object.&lt;br /&gt;
* writableKeys: An array containing all fields you&#039;re allowed to change on this object if readOnly is False.&lt;br /&gt;
&lt;br /&gt;
To read a field, simply read it like a property: &amp;lt;code&amp;gt;obj.field&amp;lt;/code&amp;gt;.  Similarly, to write to a proxy object, just assign to that field: &amp;lt;code&amp;gt;obj.field = newVal&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a handy function you can include in your mod to print out everything on a proxy object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow: auto&amp;quot;&amp;gt;&lt;br /&gt;
function PrintProxyInfo(obj)&lt;br /&gt;
    print(&#039;type=&#039; .. obj.proxyType .. &#039; readOnly=&#039; .. tostring(obj.readonly) .. &#039; readableKeys=&#039; .. table.concat(obj.readableKeys, &#039;,&#039;) .. &#039; writableKeys=&#039; .. table.concat(obj.writableKeys, &#039;,&#039;));&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Writing Tables ==&lt;br /&gt;
&lt;br /&gt;
If a writable Warzone proxy object exposes a table, and you wish to make changes to that table, you must assign the table back to the proxy object.  For example, assume you have a &amp;lt;code&amp;gt;GameStanding&amp;lt;/code&amp;gt; object named &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; which exposes the &amp;lt;code&amp;gt;Cards&amp;lt;/code&amp;gt; table, and you want to add something at index 9:&lt;br /&gt;
&lt;br /&gt;
  standing.Cards[9] = something  --WRONG!&lt;br /&gt;
&lt;br /&gt;
This code won&#039;t work since the proxy object isn&#039;t having anything assigned to it.  Proxy objects are only aware of changes when something is directly assigned into them.  To make this work, you must assign the table into the proxy object&#039;s field:&lt;br /&gt;
  local cards = standing.Cards&lt;br /&gt;
  cards[9] = something&lt;br /&gt;
  standing.Cards = cards; --Right&lt;br /&gt;
&lt;br /&gt;
Note: If you use lua&#039;s &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; function, proxy objects will identify themselves as tables.  However, that should be considered an implementation detail.  For the purposes of this wiki, proxy objects aren&#039;t considered tables.&lt;br /&gt;
&lt;br /&gt;
== API Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[Mod API Reference:ActiveCard|ActiveCard]]&lt;br /&gt;
* [[Mod API Reference:ActiveCardWoreOff|ActiveCardWoreOff]]&lt;br /&gt;
* [[Mod API Reference:Armies|Armies]]&lt;br /&gt;
* [[Mod API Reference:BonusDetails|BonusDetails]]&lt;br /&gt;
* [[Mod API Reference:Boss1|Boss1]]&lt;br /&gt;
* [[Mod API Reference:Boss2|Boss2]]&lt;br /&gt;
* [[Mod API Reference:Boss3|Boss3]]&lt;br /&gt;
* [[Mod API Reference:Boss4|Boss4]]&lt;br /&gt;
* [[Mod API Reference:CardGame|CardGame]]&lt;br /&gt;
* [[Mod API Reference:CardGameAbandon|CardGameAbandon]]&lt;br /&gt;
* [[Mod API Reference:CardGameAirlift|CardGameAirlift]]&lt;br /&gt;
* [[Mod API Reference:CardGameBlockade|CardGameBlockade]]&lt;br /&gt;
* [[Mod API Reference:CardGameBomb|CardGameBomb]]&lt;br /&gt;
* [[Mod API Reference:CardGameCustom|CardGameCustom]]&lt;br /&gt;
* [[Mod API Reference:CardGameDiplomacy|CardGameDiplomacy]]&lt;br /&gt;
* [[Mod API Reference:CardGameGift|CardGameGift]]&lt;br /&gt;
* [[Mod API Reference:CardGameOrderDelay|CardGameOrderDelay]]&lt;br /&gt;
* [[Mod API Reference:CardGameOrderPriority|CardGameOrderPriority]]&lt;br /&gt;
* [[Mod API Reference:CardGameReconnaissance|CardGameReconnaissance]]&lt;br /&gt;
* [[Mod API Reference:CardGameReinforcement|CardGameReinforcement]]&lt;br /&gt;
* [[Mod API Reference:CardGameSanctions|CardGameSanctions]]&lt;br /&gt;
* [[Mod API Reference:CardGameSpy|CardGameSpy]]&lt;br /&gt;
* [[Mod API Reference:CardGameSurveillance|CardGameSurveillance]]&lt;br /&gt;
* [[Mod API Reference:CardInstance|CardInstance]]&lt;br /&gt;
* [[Mod API Reference:ClanPlayerInfo|ClanPlayerInfo]]&lt;br /&gt;
* [[Mod API Reference:ClientGame|ClientGame]]&lt;br /&gt;
* [[Mod API Reference:Commander|Commander]]&lt;br /&gt;
* [[Mod API Reference:CustomScenario|CustomScenario]]&lt;br /&gt;
* [[Mod API Reference:CustomScenarioTerritory|CustomScenarioTerritory]]&lt;br /&gt;
* [[Mod API Reference:DistributionMode|DistributionMode]]&lt;br /&gt;
* [[Mod API Reference:Game|Game]]&lt;br /&gt;
* [[Mod API Reference:GameColor|GameColor]]&lt;br /&gt;
* [[Mod API Reference:GameOpenSeat|GameOpenSeat]]&lt;br /&gt;
* [[Mod API Reference:GameOrder|GameOrder]]&lt;br /&gt;
* [[Mod API Reference:GameOrderAttackTransfer|GameOrderAttackTransfer]]&lt;br /&gt;
* [[Mod API Reference:GameOrderAttackTransferResult|GameOrderAttackTransferResult]]&lt;br /&gt;
* [[Mod API Reference:GameOrderBossEvent|GameOrderBossEvent]]&lt;br /&gt;
* [[Mod API Reference:GameOrderCustom|GameOrderCustom]]&lt;br /&gt;
* [[Mod API Reference:GameOrderDeploy|GameOrderDeploy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderDiscard|GameOrderDiscard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderEvent|GameOrderEvent]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCard|GameOrderPlayCard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAbandon|GameOrderPlayCardAbandon]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAirlift|GameOrderPlayCardAirlift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAirliftResult|GameOrderPlayCardAirliftResult]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBlockade|GameOrderPlayCardBlockade]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBomb|GameOrderPlayCardBomb]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardCustom|GameOrderPlayCardCustom]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardDiplomacy|GameOrderPlayCardDiplomacy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardFogged|GameOrderPlayCardFogged]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardGift|GameOrderPlayCardGift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderDelay|GameOrderPlayCardOrderDelay]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderPriority|GameOrderPlayCardOrderPriority]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReconnaissance|GameOrderPlayCardReconnaissance]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReinforcement|GameOrderPlayCardReinforcement]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSanctions|GameOrderPlayCardSanctions]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSpy|GameOrderPlayCardSpy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSurveillance|GameOrderPlayCardSurveillance]]&lt;br /&gt;
* [[Mod API Reference:GameOrderReceiveCard|GameOrderReceiveCard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderStateTransition|GameOrderStateTransition]]&lt;br /&gt;
* [[Mod API Reference:GamePlayer|GamePlayer]]&lt;br /&gt;
* [[Mod API Reference:GameSettings|GameSettings]]&lt;br /&gt;
* [[Mod API Reference:GameStanding|GameStanding]]&lt;br /&gt;
* [[Mod API Reference:GameWL|GameWL]]&lt;br /&gt;
* [[Mod API Reference:IncomeMod|IncomeMod]]&lt;br /&gt;
* [[Mod API Reference:IsVersionOrHigher|IsVersionOrHigher]]&lt;br /&gt;
* [[Mod API Reference:MapDetails|MapDetails]]&lt;br /&gt;
* [[Mod API Reference:MapFamily|MapFamily]]&lt;br /&gt;
* [[Mod API Reference:NoParameterCardInstance|NoParameterCardInstance]]&lt;br /&gt;
* [[Mod API Reference:PendingStateTransition|PendingStateTransition]]&lt;br /&gt;
* [[Mod API Reference:PlayerCards|PlayerCards]]&lt;br /&gt;
* [[Mod API Reference:PlayerInfo2|PlayerInfo2]]&lt;br /&gt;
* [[Mod API Reference:ReinforcementCardInstance|ReinforcementCardInstance]]&lt;br /&gt;
* [[Mod API Reference:ServerGame|ServerGame]]&lt;br /&gt;
* [[Mod API Reference:SpecialUnit|SpecialUnit]]&lt;br /&gt;
* [[Mod API Reference:TerritoryConnection|TerritoryConnection]]&lt;br /&gt;
* [[Mod API Reference:TerritoryDetails|TerritoryDetails]]&lt;br /&gt;
* [[Mod API Reference:TerritoryModification|TerritoryModification]]&lt;br /&gt;
* [[Mod API Reference:TerritoryStanding|TerritoryStanding]]&lt;br /&gt;
* [[Mod API Reference:TickCount|TickCount]]&lt;br /&gt;
* [[Mod API Reference:UI|UI]]&lt;br /&gt;
* [[Mod API Reference:WL|WL]]&lt;br /&gt;
&lt;br /&gt;
== Newer API features ==&lt;br /&gt;
Some features were introduced after the first version of the Mod API framework and should be checked for using [[Mod_API_Reference:IsVersionOrHigher|IsVersionOrHigher]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! Features&lt;br /&gt;
|-&lt;br /&gt;
| 5.34&lt;br /&gt;
| Create [[Mod_API_Reference:UI|radio buttons]]&amp;lt;br&amp;gt;Lua errors in the browser now give stack traces with line numbers in the mod-crashed dialog&amp;lt;br&amp;gt;[[Mod API Reference:Custom Cards|Client_PresentPlayCardUI]] now gives mods the ability to close the cards dialog - &amp;lt;em&amp;gt;closeCardsDialog&amp;lt;/em&amp;gt;&amp;lt;br&amp;gt;Fixed [[Mod Hooks#Client Hooks|Client_GameOrderCreated]] not being able to read territory picks in manual distribution games&amp;lt;br&amp;gt;Fixed WL.enumtype.ToString() functions&amp;lt;br&amp;gt;Fixed [[Mod API Reference:Custom Cards|Client_PresentPlayCardUI]] not registering [[Mod Game Data Storage|Mod]] and [[Mod API Reference:UI|UI]] hooks if it was called before other client hooks&amp;lt;br&amp;gt;Fixed an error if you set number of card pieces to 0 or negative&amp;lt;br&amp;gt;Fixed [[Mod API Reference:GameOrderAirliftResult|GameOrderAirliftResult]].Results throwing an error instead of returning nil when there are no results yet&amp;lt;br&amp;gt;Fixed allowing [[Mod API Reference:GameOrderAttackTransferResult|GameOrderAttackTransferResult]].ActualArmies to be set to a negative number&amp;lt;br&amp;gt;Fixed &amp;quot;can&#039;t transfer to a neutral&amp;quot; error that occurred when a mod resurrected a failed transfer&lt;br /&gt;
|-&lt;br /&gt;
| 5.33&lt;br /&gt;
| [[Mod API Reference:FogMod|WL.FogMod]]&amp;lt;br&amp;gt;[[Mod API Reference:GameOrderEvent|GameOrderEvent.FogModsOpt]]&amp;lt;br&amp;gt;[[Mod API Reference:GameOrderEvent|GameOrderEvent.RemoveFogModsOpt]]&amp;lt;br&amp;gt;[[Mod API Reference:GameStanding|GameStanding.IncomeMods]]&amp;lt;br&amp;gt;Fixed the AI trying to move its commander even if it doesn&#039;t control the territory the commander is on (which can happen with mods)&amp;lt;br&amp;gt;Fixed a bug that could make a generic Warzone error instead of a mod failed error if you tried to set a property on a destroyed object (for example, Button&#039;s SetInteractable)&lt;br /&gt;
|-&lt;br /&gt;
| 5.32.0.1&lt;br /&gt;
| &amp;quot;addCard&amp;quot; callback function now returns the card ID of the newly added card&amp;lt;br&amp;gt;Fixed a bug with custom cards that made old clients produce an error&lt;br /&gt;
|-&lt;br /&gt;
| 5.32&lt;br /&gt;
| [[Mod_Hooks#Client_Hooks|Client_GameOrderCreated]]&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_GameCommit]]&amp;lt;br&amp;gt;[[Mod API Reference:Custom Cards|Custom Cards]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.31&lt;br /&gt;
| Proper support for Neutral Special Units&amp;lt;br&amp;gt;Fixed GameOrderCustom.TurnPhase not correctly persisting in multi-player&amp;lt;br&amp;gt;Fixed Lua global state not persisting in some cases on the website&amp;lt;br&amp;gt;Note: this update &amp;lt;em&amp;gt;may have&amp;lt;/em&amp;gt; prevented the use of custom turn phases&lt;br /&gt;
|-&lt;br /&gt;
| 5.26&lt;br /&gt;
| Use [[Mod_API_Reference:ServerGame|ServerGame.SetPlayerResource]] in [[Mod_Hooks#Server_Hooks|Server_StartGame]]&amp;lt;br&amp;gt;Fixed a bug with airlifting special units that are set to always visible&lt;br /&gt;
|-&lt;br /&gt;
| 5.24.2&lt;br /&gt;
| [[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit.Health]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.24.1&lt;br /&gt;
| [[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TickCount|WL.TickCount]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.22.2&lt;br /&gt;
| [[Mod_API_Reference:Boss1|Boss1.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss2|Boss2.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss3|Boss3.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss4|Boss4.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Commander|Commander.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:CustomSpecialUnitBuilder|CustomSpecialUnitBuilder.Health]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.22&lt;br /&gt;
| [[Mod_API_Reference:GameOrderCustom|GameOrderCustom.OccursInPhaseOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.RemoveSpecialUnitsOpt]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.21&lt;br /&gt;
| [[Mod_Hooks#Client_Hooks|Client_PresentCommercePurchaseUI]]&amp;lt;br&amp;gt;[[Mod_API_Reference:ClientGame|ClientGame.CreateLocatorCircle]]&amp;lt;br&amp;gt;[[Mod_API_Reference:ClientGame|ClientGame.HighlightTerritories]]&amp;lt;br&amp;gt;[[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.JumpToActionSpotOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEventResult|GameOrderEventResult.CardInstancesCreated]]&amp;lt;br&amp;gt;[[Mod_API Reference:UI|UI.IsDestroyed]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|WL.CancelClickIntercept]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.20&lt;br /&gt;
| Setting [[Mod_API_Reference:TerritoryStanding|TerritoryStanding]].OwnerPlayerID to [[Mod_API_Reference:PlayerID|WL.PlayerID.AvailableForDistribution]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.AddCardPiecesOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.AddResourceOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.RemoveWholeCardsOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.AddArmies]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.AddStructuresOpt]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.17&lt;br /&gt;
| Using argument two of &amp;lt;code&amp;gt;addNewOrder&amp;lt;/code&amp;gt; in [[Mod_Hooks#Server_Hooks|Server_AdvanceTurn_Order]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.IncomeMods]]&amp;lt;br&amp;gt;[[Mod_API_Reference:IncomeMod|IncomeMod]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI.InterceptNextBonusLinkClick]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI.InterceptNextTerritoryClick]]&amp;lt;br&amp;gt;[[Mod_API_Reference:IsVersionOrHigher|WL.IsVersionOrHigher]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Arena]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ArmyCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ArmyCamp]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Attack]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Crafter]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.DigSite]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Draft]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Hospital]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Market]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.MercenaryCamp]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Mine]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.MoneyCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Mortar]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Power]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Recipe]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ResourceCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Smelter]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is a chance that a player has a version of the app that pre-dates the introduction of the [[Mod_API_Reference:IsVersionOrHigher|IsVersionOrHigher]] function. Many features were added after the first version of the Mod API Framework, but before the introduction of the function:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! Features&lt;br /&gt;
|-&lt;br /&gt;
| Up to 4.14.2&lt;br /&gt;
| Various bug fixes / performance enhancements relating to mods. No other changes made to mod API framework until version 5.17.&lt;br /&gt;
|-&lt;br /&gt;
| 3.20.2&lt;br /&gt;
| Mod support for Commerce games (Commerce added in 3.20.0)&lt;br /&gt;
|-&lt;br /&gt;
| 3.19.3&lt;br /&gt;
| Bug fixes for GameOrderPlayCard, Armies.Add, Armies.Subtract&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_GameRefresh]]&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_PresentMenuUI]]&amp;lt;br&amp;gt;[[Mod_Game_Data_Storage|Data storage]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Game|Game]].CreateDialog&amp;lt;br&amp;gt;[[Mod_API_Reference:Game|Game]].SendGameCustomMessage&amp;lt;br&amp;gt;[[Mod_API_Reference:GamePlayer|GamePlayer]].Income&amp;lt;br&amp;gt;[[Mod_Hooks#Server_Hooks|Server_GameCustomMessage]]&lt;br /&gt;
|-&lt;br /&gt;
| 3.19.2&lt;br /&gt;
| [[Mod_API_Reference:GameOrderCustom|GameOrderCustom]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI]].Alert&amp;lt;br&amp;gt;UI.Destroy&amp;lt;br&amp;gt;UI.PromptFromList&lt;br /&gt;
|-&lt;br /&gt;
| 3.18.2&lt;br /&gt;
| Moved all WarLight mod classes into the global &amp;quot;WL&amp;quot; namespace. For example, to create an Armies object instead of just saying &amp;quot;Armies()&amp;quot;, you now say WL.Armies.Create()&lt;br /&gt;
|-&lt;br /&gt;
| 3.18.0&lt;br /&gt;
| Mod API Framework added&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod Developers Guide]][[Category:Mod API Reference|!]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Mod_API_Reference&amp;diff=7391</id>
		<title>Mod API Reference</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Mod_API_Reference&amp;diff=7391"/>
		<updated>2025-03-10T22:44:54Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: /* Newer API features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This explains how to use Warzone&#039;s [[Mods|mod]] API and links to the documentation for each object type.&lt;br /&gt;
&lt;br /&gt;
== Types ==&lt;br /&gt;
&lt;br /&gt;
When writing a mod, you&#039;ll encounter variables/objects of three basic types:&lt;br /&gt;
* Primitives: strings, numbers, booleans, etc.&lt;br /&gt;
* Tables: collections of key/value pairs.  A table is a lot like a hashmap or dictionary in other languages. Note that in Warzone, the key of a table will always be either a string or an integer.  Some places in this reference will refer to Arrays which are just tables with numeric keys starting at 1.&lt;br /&gt;
* Proxy objects: Discussed in the next section.&lt;br /&gt;
&lt;br /&gt;
== Proxy Objects ==&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;proxy object&#039;&#039;&#039; proxies information back and forth between your mod and Warzone.  You can tell if an object is a proxy object by looking for a &amp;lt;code&amp;gt;proxyType&amp;lt;/code&amp;gt; field.  All proxy objects always have the following fields:&lt;br /&gt;
&lt;br /&gt;
* proxyType: A string identifying the type of proxy object.&lt;br /&gt;
* readOnly: False if you&#039;re allowed to make changes to this proxy object, or true if it&#039;s read-only.&lt;br /&gt;
* readableKeys: An array containing all fields you&#039;re allowed to read from this object.&lt;br /&gt;
* writableKeys: An array containing all fields you&#039;re allowed to change on this object if readOnly is False.&lt;br /&gt;
&lt;br /&gt;
To read a field, simply read it like a property: &amp;lt;code&amp;gt;obj.field&amp;lt;/code&amp;gt;.  Similarly, to write to a proxy object, just assign to that field: &amp;lt;code&amp;gt;obj.field = newVal&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a handy function you can include in your mod to print out everything on a proxy object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow: auto&amp;quot;&amp;gt;&lt;br /&gt;
function PrintProxyInfo(obj)&lt;br /&gt;
    print(&#039;type=&#039; .. obj.proxyType .. &#039; readOnly=&#039; .. tostring(obj.readonly) .. &#039; readableKeys=&#039; .. table.concat(obj.readableKeys, &#039;,&#039;) .. &#039; writableKeys=&#039; .. table.concat(obj.writableKeys, &#039;,&#039;));&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Writing Tables ==&lt;br /&gt;
&lt;br /&gt;
If a writable Warzone proxy object exposes a table, and you wish to make changes to that table, you must assign the table back to the proxy object.  For example, assume you have a &amp;lt;code&amp;gt;GameStanding&amp;lt;/code&amp;gt; object named &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; which exposes the &amp;lt;code&amp;gt;Cards&amp;lt;/code&amp;gt; table, and you want to add something at index 9:&lt;br /&gt;
&lt;br /&gt;
  standing.Cards[9] = something  --WRONG!&lt;br /&gt;
&lt;br /&gt;
This code won&#039;t work since the proxy object isn&#039;t having anything assigned to it.  Proxy objects are only aware of changes when something is directly assigned into them.  To make this work, you must assign the table into the proxy object&#039;s field:&lt;br /&gt;
  local cards = standing.Cards&lt;br /&gt;
  cards[9] = something&lt;br /&gt;
  standing.Cards = cards; --Right&lt;br /&gt;
&lt;br /&gt;
Note: If you use lua&#039;s &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; function, proxy objects will identify themselves as tables.  However, that should be considered an implementation detail.  For the purposes of this wiki, proxy objects aren&#039;t considered tables.&lt;br /&gt;
&lt;br /&gt;
== API Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[Mod API Reference:ActiveCard|ActiveCard]]&lt;br /&gt;
* [[Mod API Reference:ActiveCardWoreOff|ActiveCardWoreOff]]&lt;br /&gt;
* [[Mod API Reference:Armies|Armies]]&lt;br /&gt;
* [[Mod API Reference:BonusDetails|BonusDetails]]&lt;br /&gt;
* [[Mod API Reference:Boss1|Boss1]]&lt;br /&gt;
* [[Mod API Reference:Boss2|Boss2]]&lt;br /&gt;
* [[Mod API Reference:Boss3|Boss3]]&lt;br /&gt;
* [[Mod API Reference:Boss4|Boss4]]&lt;br /&gt;
* [[Mod API Reference:CardGame|CardGame]]&lt;br /&gt;
* [[Mod API Reference:CardGameAbandon|CardGameAbandon]]&lt;br /&gt;
* [[Mod API Reference:CardGameAirlift|CardGameAirlift]]&lt;br /&gt;
* [[Mod API Reference:CardGameBlockade|CardGameBlockade]]&lt;br /&gt;
* [[Mod API Reference:CardGameBomb|CardGameBomb]]&lt;br /&gt;
* [[Mod API Reference:CardGameCustom|CardGameCustom]]&lt;br /&gt;
* [[Mod API Reference:CardGameDiplomacy|CardGameDiplomacy]]&lt;br /&gt;
* [[Mod API Reference:CardGameGift|CardGameGift]]&lt;br /&gt;
* [[Mod API Reference:CardGameOrderDelay|CardGameOrderDelay]]&lt;br /&gt;
* [[Mod API Reference:CardGameOrderPriority|CardGameOrderPriority]]&lt;br /&gt;
* [[Mod API Reference:CardGameReconnaissance|CardGameReconnaissance]]&lt;br /&gt;
* [[Mod API Reference:CardGameReinforcement|CardGameReinforcement]]&lt;br /&gt;
* [[Mod API Reference:CardGameSanctions|CardGameSanctions]]&lt;br /&gt;
* [[Mod API Reference:CardGameSpy|CardGameSpy]]&lt;br /&gt;
* [[Mod API Reference:CardGameSurveillance|CardGameSurveillance]]&lt;br /&gt;
* [[Mod API Reference:CardInstance|CardInstance]]&lt;br /&gt;
* [[Mod API Reference:ClanPlayerInfo|ClanPlayerInfo]]&lt;br /&gt;
* [[Mod API Reference:ClientGame|ClientGame]]&lt;br /&gt;
* [[Mod API Reference:Commander|Commander]]&lt;br /&gt;
* [[Mod API Reference:CustomScenario|CustomScenario]]&lt;br /&gt;
* [[Mod API Reference:CustomScenarioTerritory|CustomScenarioTerritory]]&lt;br /&gt;
* [[Mod API Reference:DistributionMode|DistributionMode]]&lt;br /&gt;
* [[Mod API Reference:Game|Game]]&lt;br /&gt;
* [[Mod API Reference:GameColor|GameColor]]&lt;br /&gt;
* [[Mod API Reference:GameOpenSeat|GameOpenSeat]]&lt;br /&gt;
* [[Mod API Reference:GameOrder|GameOrder]]&lt;br /&gt;
* [[Mod API Reference:GameOrderAttackTransfer|GameOrderAttackTransfer]]&lt;br /&gt;
* [[Mod API Reference:GameOrderAttackTransferResult|GameOrderAttackTransferResult]]&lt;br /&gt;
* [[Mod API Reference:GameOrderBossEvent|GameOrderBossEvent]]&lt;br /&gt;
* [[Mod API Reference:GameOrderCustom|GameOrderCustom]]&lt;br /&gt;
* [[Mod API Reference:GameOrderDeploy|GameOrderDeploy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderDiscard|GameOrderDiscard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderEvent|GameOrderEvent]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCard|GameOrderPlayCard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAbandon|GameOrderPlayCardAbandon]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAirlift|GameOrderPlayCardAirlift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAirliftResult|GameOrderPlayCardAirliftResult]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBlockade|GameOrderPlayCardBlockade]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBomb|GameOrderPlayCardBomb]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardCustom|GameOrderPlayCardCustom]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardDiplomacy|GameOrderPlayCardDiplomacy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardFogged|GameOrderPlayCardFogged]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardGift|GameOrderPlayCardGift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderDelay|GameOrderPlayCardOrderDelay]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderPriority|GameOrderPlayCardOrderPriority]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReconnaissance|GameOrderPlayCardReconnaissance]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReinforcement|GameOrderPlayCardReinforcement]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSanctions|GameOrderPlayCardSanctions]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSpy|GameOrderPlayCardSpy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSurveillance|GameOrderPlayCardSurveillance]]&lt;br /&gt;
* [[Mod API Reference:GameOrderReceiveCard|GameOrderReceiveCard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderStateTransition|GameOrderStateTransition]]&lt;br /&gt;
* [[Mod API Reference:GamePlayer|GamePlayer]]&lt;br /&gt;
* [[Mod API Reference:GameSettings|GameSettings]]&lt;br /&gt;
* [[Mod API Reference:GameStanding|GameStanding]]&lt;br /&gt;
* [[Mod API Reference:GameWL|GameWL]]&lt;br /&gt;
* [[Mod API Reference:IncomeMod|IncomeMod]]&lt;br /&gt;
* [[Mod API Reference:IsVersionOrHigher|IsVersionOrHigher]]&lt;br /&gt;
* [[Mod API Reference:MapDetails|MapDetails]]&lt;br /&gt;
* [[Mod API Reference:MapFamily|MapFamily]]&lt;br /&gt;
* [[Mod API Reference:NoParameterCardInstance|NoParameterCardInstance]]&lt;br /&gt;
* [[Mod API Reference:PendingStateTransition|PendingStateTransition]]&lt;br /&gt;
* [[Mod API Reference:PlayerCards|PlayerCards]]&lt;br /&gt;
* [[Mod API Reference:PlayerInfo2|PlayerInfo2]]&lt;br /&gt;
* [[Mod API Reference:ReinforcementCardInstance|ReinforcementCardInstance]]&lt;br /&gt;
* [[Mod API Reference:ServerGame|ServerGame]]&lt;br /&gt;
* [[Mod API Reference:SpecialUnit|SpecialUnit]]&lt;br /&gt;
* [[Mod API Reference:TerritoryConnection|TerritoryConnection]]&lt;br /&gt;
* [[Mod API Reference:TerritoryDetails|TerritoryDetails]]&lt;br /&gt;
* [[Mod API Reference:TerritoryModification|TerritoryModification]]&lt;br /&gt;
* [[Mod API Reference:TerritoryStanding|TerritoryStanding]]&lt;br /&gt;
* [[Mod API Reference:TickCount|TickCount]]&lt;br /&gt;
* [[Mod API Reference:UI|UI]]&lt;br /&gt;
* [[Mod API Reference:WL|WL]]&lt;br /&gt;
&lt;br /&gt;
== Newer API features ==&lt;br /&gt;
Some features were introduced after the first version of the Mod API framework and should be checked for using [[Mod_API_Reference:IsVersionOrHigher|IsVersionOrHigher]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! Features&lt;br /&gt;
|-&lt;br /&gt;
| 5.34&lt;br /&gt;
| Create [[Mod_API_Reference:UI|radio buttons]]&amp;lt;br&amp;gt;Lua errors in the browser now give stack traces with line numbers in the mod-crashed dialog&amp;lt;br&amp;gt;[[Mod API Reference:Custom Cards|Client_PresentPlayCardUI]] now gives mods the ability to close the cards dialog - &amp;lt;em&amp;gt;closeCardsDialog&amp;lt;/em&amp;gt;&amp;lt;br&amp;gt;Fixed [[Mod Hooks#Client Hooks|Client_GameOrderCreated]] not being able to read territory picks in manual distribution games&amp;lt;br&amp;gt;Fixed WL.enumtype.ToString() functions&amp;lt;br&amp;gt;Fixed [[Mod API Reference:Custom Cards|Client_PresentPlayCardUI]] not registering [[Mod Game Data Storage|Mod]] and [[Mod API Reference:UI|UI]] hooks if it was called before other client hooks&amp;lt;br&amp;gt;Fixed an error if you set number of card pieces to 0 or negative&amp;lt;br&amp;gt;Fixed [[Mod API Reference:GameOrderAirliftResult|GameOrderAirliftResult]].Results throwing an error instead of returning nil when there are no results yet&amp;lt;br&amp;gt;Fixed allowing [[Mod API Reference:GameOrderAttackTransferResult|GameOrderAttackTransferResult]].ActualArmies to be set to a negative number&amp;lt;br&amp;gt;Fixed &amp;quot;can’t transfer to a neutral&amp;quot; error that occurred when a mod resurrected a failed transfer&lt;br /&gt;
|-&lt;br /&gt;
| 5.33&lt;br /&gt;
| [[Mod API Reference:FogMod|WL.FogMod]]&amp;lt;br&amp;gt;[[Mod API Reference:GameOrderEvent|GameOrderEvent.FogModsOpt]]&amp;lt;br&amp;gt;[[Mod API Reference:GameOrderEvent|GameOrderEvent.RemoveFogModsOpt]]&amp;lt;br&amp;gt;[[Mod API Reference:GameStanding|GameStanding.IncomeMods]]&amp;lt;br&amp;gt;Fixed the AI trying to move its commander even if it doesn&#039;t control the territory the commander is on (which can happen with mods)&amp;lt;br&amp;gt;Fixed a bug that could make a generic Warzone error instead of a mod failed error if you tried to set a property on a destroyed object (for example, Button&#039;s SetInteractable)&lt;br /&gt;
|-&lt;br /&gt;
| 5.32.0.1&lt;br /&gt;
| &amp;quot;addCard&amp;quot; callback function now returns the card ID of the newly added card&amp;lt;br&amp;gt;Fixed a bug with custom cards that made old clients produce an error&lt;br /&gt;
|-&lt;br /&gt;
| 5.32&lt;br /&gt;
| [[Mod_Hooks#Client_Hooks|Client_GameOrderCreated]]&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_GameCommit]]&amp;lt;br&amp;gt;[[Mod API Reference:Custom Cards|Custom Cards]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.31&lt;br /&gt;
| Proper support for Neutral Special Units&amp;lt;br&amp;gt;Fixed GameOrderCustom.TurnPhase not correctly persisting in multi-player&amp;lt;br&amp;gt;Fixed Lua global state not persisting in some cases on the website&amp;lt;br&amp;gt;Note: this update &amp;lt;em&amp;gt;may have&amp;lt;/em&amp;gt; prevented the use of custom turn phases&lt;br /&gt;
|-&lt;br /&gt;
| 5.26&lt;br /&gt;
| Use [[Mod_API_Reference:ServerGame|ServerGame.SetPlayerResource]] in [[Mod_Hooks#Server_Hooks|Server_StartGame]]&amp;lt;br&amp;gt;Fixed a bug with airlifting special units that are set to always visible&lt;br /&gt;
|-&lt;br /&gt;
| 5.24.2&lt;br /&gt;
| [[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit.Health]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.24.1&lt;br /&gt;
| [[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TickCount|WL.TickCount]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.22.2&lt;br /&gt;
| [[Mod_API_Reference:Boss1|Boss1.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss2|Boss2.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss3|Boss3.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss4|Boss4.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Commander|Commander.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:CustomSpecialUnitBuilder|CustomSpecialUnitBuilder.Health]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.22&lt;br /&gt;
| [[Mod_API_Reference:GameOrderCustom|GameOrderCustom.OccursInPhaseOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.RemoveSpecialUnitsOpt]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.21&lt;br /&gt;
| [[Mod_Hooks#Client_Hooks|Client_PresentCommercePurchaseUI]]&amp;lt;br&amp;gt;[[Mod_API_Reference:ClientGame|ClientGame.CreateLocatorCircle]]&amp;lt;br&amp;gt;[[Mod_API_Reference:ClientGame|ClientGame.HighlightTerritories]]&amp;lt;br&amp;gt;[[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.JumpToActionSpotOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEventResult|GameOrderEventResult.CardInstancesCreated]]&amp;lt;br&amp;gt;[[Mod_API Reference:UI|UI.IsDestroyed]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|WL.CancelClickIntercept]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.20&lt;br /&gt;
| Setting [[Mod_API_Reference:TerritoryStanding|TerritoryStanding]].OwnerPlayerID to [[Mod_API_Reference:PlayerID|WL.PlayerID.AvailableForDistribution]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.AddCardPiecesOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.AddResourceOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.RemoveWholeCardsOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.AddArmies]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.AddStructuresOpt]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.17&lt;br /&gt;
| Using argument two of &amp;lt;code&amp;gt;addNewOrder&amp;lt;/code&amp;gt; in [[Mod_Hooks#Server_Hooks|Server_AdvanceTurn_Order]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.IncomeMods]]&amp;lt;br&amp;gt;[[Mod_API_Reference:IncomeMod|IncomeMod]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI.InterceptNextBonusLinkClick]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI.InterceptNextTerritoryClick]]&amp;lt;br&amp;gt;[[Mod_API_Reference:IsVersionOrHigher|WL.IsVersionOrHigher]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Arena]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ArmyCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ArmyCamp]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Attack]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Crafter]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.DigSite]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Draft]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Hospital]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Market]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.MercenaryCamp]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Mine]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.MoneyCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Mortar]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Power]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Recipe]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ResourceCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Smelter]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is a chance that a player has a version of the app that pre-dates the introduction of the [[Mod_API_Reference:IsVersionOrHigher|IsVersionOrHigher]] function. Many features were added after the first version of the Mod API Framework, but before the introduction of the function:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! Features&lt;br /&gt;
|-&lt;br /&gt;
| Up to 4.14.2&lt;br /&gt;
| Various bug fixes / performance enhancements relating to mods. No other changes made to mod API framework until version 5.17.&lt;br /&gt;
|-&lt;br /&gt;
| 3.20.2&lt;br /&gt;
| Mod support for Commerce games (Commerce added in 3.20.0)&lt;br /&gt;
|-&lt;br /&gt;
| 3.19.3&lt;br /&gt;
| Bug fixes for GameOrderPlayCard, Armies.Add, Armies.Subtract&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_GameRefresh]]&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_PresentMenuUI]]&amp;lt;br&amp;gt;[[Mod_Game_Data_Storage|Data storage]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Game|Game]].CreateDialog&amp;lt;br&amp;gt;[[Mod_API_Reference:Game|Game]].SendGameCustomMessage&amp;lt;br&amp;gt;[[Mod_API_Reference:GamePlayer|GamePlayer]].Income&amp;lt;br&amp;gt;[[Mod_Hooks#Server_Hooks|Server_GameCustomMessage]]&lt;br /&gt;
|-&lt;br /&gt;
| 3.19.2&lt;br /&gt;
| [[Mod_API_Reference:GameOrderCustom|GameOrderCustom]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI]].Alert&amp;lt;br&amp;gt;UI.Destroy&amp;lt;br&amp;gt;UI.PromptFromList&lt;br /&gt;
|-&lt;br /&gt;
| 3.18.2&lt;br /&gt;
| Moved all WarLight mod classes into the global &amp;quot;WL&amp;quot; namespace. For example, to create an Armies object instead of just saying &amp;quot;Armies()&amp;quot;, you now say WL.Armies.Create()&lt;br /&gt;
|-&lt;br /&gt;
| 3.18.0&lt;br /&gt;
| Mod API Framework added&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod Developers Guide]][[Category:Mod API Reference|!]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Mod_API_Reference&amp;diff=7390</id>
		<title>Mod API Reference</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Mod_API_Reference&amp;diff=7390"/>
		<updated>2025-03-10T22:43:44Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: /* Newer API features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This explains how to use Warzone&#039;s [[Mods|mod]] API and links to the documentation for each object type.&lt;br /&gt;
&lt;br /&gt;
== Types ==&lt;br /&gt;
&lt;br /&gt;
When writing a mod, you&#039;ll encounter variables/objects of three basic types:&lt;br /&gt;
* Primitives: strings, numbers, booleans, etc.&lt;br /&gt;
* Tables: collections of key/value pairs.  A table is a lot like a hashmap or dictionary in other languages. Note that in Warzone, the key of a table will always be either a string or an integer.  Some places in this reference will refer to Arrays which are just tables with numeric keys starting at 1.&lt;br /&gt;
* Proxy objects: Discussed in the next section.&lt;br /&gt;
&lt;br /&gt;
== Proxy Objects ==&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;proxy object&#039;&#039;&#039; proxies information back and forth between your mod and Warzone.  You can tell if an object is a proxy object by looking for a &amp;lt;code&amp;gt;proxyType&amp;lt;/code&amp;gt; field.  All proxy objects always have the following fields:&lt;br /&gt;
&lt;br /&gt;
* proxyType: A string identifying the type of proxy object.&lt;br /&gt;
* readOnly: False if you&#039;re allowed to make changes to this proxy object, or true if it&#039;s read-only.&lt;br /&gt;
* readableKeys: An array containing all fields you&#039;re allowed to read from this object.&lt;br /&gt;
* writableKeys: An array containing all fields you&#039;re allowed to change on this object if readOnly is False.&lt;br /&gt;
&lt;br /&gt;
To read a field, simply read it like a property: &amp;lt;code&amp;gt;obj.field&amp;lt;/code&amp;gt;.  Similarly, to write to a proxy object, just assign to that field: &amp;lt;code&amp;gt;obj.field = newVal&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a handy function you can include in your mod to print out everything on a proxy object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow: auto&amp;quot;&amp;gt;&lt;br /&gt;
function PrintProxyInfo(obj)&lt;br /&gt;
    print(&#039;type=&#039; .. obj.proxyType .. &#039; readOnly=&#039; .. tostring(obj.readonly) .. &#039; readableKeys=&#039; .. table.concat(obj.readableKeys, &#039;,&#039;) .. &#039; writableKeys=&#039; .. table.concat(obj.writableKeys, &#039;,&#039;));&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Writing Tables ==&lt;br /&gt;
&lt;br /&gt;
If a writable Warzone proxy object exposes a table, and you wish to make changes to that table, you must assign the table back to the proxy object.  For example, assume you have a &amp;lt;code&amp;gt;GameStanding&amp;lt;/code&amp;gt; object named &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; which exposes the &amp;lt;code&amp;gt;Cards&amp;lt;/code&amp;gt; table, and you want to add something at index 9:&lt;br /&gt;
&lt;br /&gt;
  standing.Cards[9] = something  --WRONG!&lt;br /&gt;
&lt;br /&gt;
This code won&#039;t work since the proxy object isn&#039;t having anything assigned to it.  Proxy objects are only aware of changes when something is directly assigned into them.  To make this work, you must assign the table into the proxy object&#039;s field:&lt;br /&gt;
  local cards = standing.Cards&lt;br /&gt;
  cards[9] = something&lt;br /&gt;
  standing.Cards = cards; --Right&lt;br /&gt;
&lt;br /&gt;
Note: If you use lua&#039;s &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; function, proxy objects will identify themselves as tables.  However, that should be considered an implementation detail.  For the purposes of this wiki, proxy objects aren&#039;t considered tables.&lt;br /&gt;
&lt;br /&gt;
== API Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[Mod API Reference:ActiveCard|ActiveCard]]&lt;br /&gt;
* [[Mod API Reference:ActiveCardWoreOff|ActiveCardWoreOff]]&lt;br /&gt;
* [[Mod API Reference:Armies|Armies]]&lt;br /&gt;
* [[Mod API Reference:BonusDetails|BonusDetails]]&lt;br /&gt;
* [[Mod API Reference:Boss1|Boss1]]&lt;br /&gt;
* [[Mod API Reference:Boss2|Boss2]]&lt;br /&gt;
* [[Mod API Reference:Boss3|Boss3]]&lt;br /&gt;
* [[Mod API Reference:Boss4|Boss4]]&lt;br /&gt;
* [[Mod API Reference:CardGame|CardGame]]&lt;br /&gt;
* [[Mod API Reference:CardGameAbandon|CardGameAbandon]]&lt;br /&gt;
* [[Mod API Reference:CardGameAirlift|CardGameAirlift]]&lt;br /&gt;
* [[Mod API Reference:CardGameBlockade|CardGameBlockade]]&lt;br /&gt;
* [[Mod API Reference:CardGameBomb|CardGameBomb]]&lt;br /&gt;
* [[Mod API Reference:CardGameCustom|CardGameCustom]]&lt;br /&gt;
* [[Mod API Reference:CardGameDiplomacy|CardGameDiplomacy]]&lt;br /&gt;
* [[Mod API Reference:CardGameGift|CardGameGift]]&lt;br /&gt;
* [[Mod API Reference:CardGameOrderDelay|CardGameOrderDelay]]&lt;br /&gt;
* [[Mod API Reference:CardGameOrderPriority|CardGameOrderPriority]]&lt;br /&gt;
* [[Mod API Reference:CardGameReconnaissance|CardGameReconnaissance]]&lt;br /&gt;
* [[Mod API Reference:CardGameReinforcement|CardGameReinforcement]]&lt;br /&gt;
* [[Mod API Reference:CardGameSanctions|CardGameSanctions]]&lt;br /&gt;
* [[Mod API Reference:CardGameSpy|CardGameSpy]]&lt;br /&gt;
* [[Mod API Reference:CardGameSurveillance|CardGameSurveillance]]&lt;br /&gt;
* [[Mod API Reference:CardInstance|CardInstance]]&lt;br /&gt;
* [[Mod API Reference:ClanPlayerInfo|ClanPlayerInfo]]&lt;br /&gt;
* [[Mod API Reference:ClientGame|ClientGame]]&lt;br /&gt;
* [[Mod API Reference:Commander|Commander]]&lt;br /&gt;
* [[Mod API Reference:CustomScenario|CustomScenario]]&lt;br /&gt;
* [[Mod API Reference:CustomScenarioTerritory|CustomScenarioTerritory]]&lt;br /&gt;
* [[Mod API Reference:DistributionMode|DistributionMode]]&lt;br /&gt;
* [[Mod API Reference:Game|Game]]&lt;br /&gt;
* [[Mod API Reference:GameColor|GameColor]]&lt;br /&gt;
* [[Mod API Reference:GameOpenSeat|GameOpenSeat]]&lt;br /&gt;
* [[Mod API Reference:GameOrder|GameOrder]]&lt;br /&gt;
* [[Mod API Reference:GameOrderAttackTransfer|GameOrderAttackTransfer]]&lt;br /&gt;
* [[Mod API Reference:GameOrderAttackTransferResult|GameOrderAttackTransferResult]]&lt;br /&gt;
* [[Mod API Reference:GameOrderBossEvent|GameOrderBossEvent]]&lt;br /&gt;
* [[Mod API Reference:GameOrderCustom|GameOrderCustom]]&lt;br /&gt;
* [[Mod API Reference:GameOrderDeploy|GameOrderDeploy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderDiscard|GameOrderDiscard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderEvent|GameOrderEvent]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCard|GameOrderPlayCard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAbandon|GameOrderPlayCardAbandon]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAirlift|GameOrderPlayCardAirlift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAirliftResult|GameOrderPlayCardAirliftResult]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBlockade|GameOrderPlayCardBlockade]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBomb|GameOrderPlayCardBomb]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardCustom|GameOrderPlayCardCustom]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardDiplomacy|GameOrderPlayCardDiplomacy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardFogged|GameOrderPlayCardFogged]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardGift|GameOrderPlayCardGift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderDelay|GameOrderPlayCardOrderDelay]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderPriority|GameOrderPlayCardOrderPriority]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReconnaissance|GameOrderPlayCardReconnaissance]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReinforcement|GameOrderPlayCardReinforcement]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSanctions|GameOrderPlayCardSanctions]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSpy|GameOrderPlayCardSpy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSurveillance|GameOrderPlayCardSurveillance]]&lt;br /&gt;
* [[Mod API Reference:GameOrderReceiveCard|GameOrderReceiveCard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderStateTransition|GameOrderStateTransition]]&lt;br /&gt;
* [[Mod API Reference:GamePlayer|GamePlayer]]&lt;br /&gt;
* [[Mod API Reference:GameSettings|GameSettings]]&lt;br /&gt;
* [[Mod API Reference:GameStanding|GameStanding]]&lt;br /&gt;
* [[Mod API Reference:GameWL|GameWL]]&lt;br /&gt;
* [[Mod API Reference:IncomeMod|IncomeMod]]&lt;br /&gt;
* [[Mod API Reference:IsVersionOrHigher|IsVersionOrHigher]]&lt;br /&gt;
* [[Mod API Reference:MapDetails|MapDetails]]&lt;br /&gt;
* [[Mod API Reference:MapFamily|MapFamily]]&lt;br /&gt;
* [[Mod API Reference:NoParameterCardInstance|NoParameterCardInstance]]&lt;br /&gt;
* [[Mod API Reference:PendingStateTransition|PendingStateTransition]]&lt;br /&gt;
* [[Mod API Reference:PlayerCards|PlayerCards]]&lt;br /&gt;
* [[Mod API Reference:PlayerInfo2|PlayerInfo2]]&lt;br /&gt;
* [[Mod API Reference:ReinforcementCardInstance|ReinforcementCardInstance]]&lt;br /&gt;
* [[Mod API Reference:ServerGame|ServerGame]]&lt;br /&gt;
* [[Mod API Reference:SpecialUnit|SpecialUnit]]&lt;br /&gt;
* [[Mod API Reference:TerritoryConnection|TerritoryConnection]]&lt;br /&gt;
* [[Mod API Reference:TerritoryDetails|TerritoryDetails]]&lt;br /&gt;
* [[Mod API Reference:TerritoryModification|TerritoryModification]]&lt;br /&gt;
* [[Mod API Reference:TerritoryStanding|TerritoryStanding]]&lt;br /&gt;
* [[Mod API Reference:TickCount|TickCount]]&lt;br /&gt;
* [[Mod API Reference:UI|UI]]&lt;br /&gt;
* [[Mod API Reference:WL|WL]]&lt;br /&gt;
&lt;br /&gt;
== Newer API features ==&lt;br /&gt;
Some features were introduced after the first version of the Mod API framework and should be checked for using [[Mod_API_Reference:IsVersionOrHigher|IsVersionOrHigher]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! Features&lt;br /&gt;
|-&lt;br /&gt;
| 5.34&lt;br /&gt;
| Create [[Mod_API_Reference:UI|radio buttons]]&amp;lt;br&amp;gt;Lua errors in the browser now give stack traces with line numbers in the mod-crashed dialog&amp;lt;br&amp;gt;[[Mod API Reference:Custom Cards|Client_PresentPlayCardUI]] now gives mods the ability to close the cards dialog - &amp;lt;em&amp;gt;closeCardsDialog&amp;lt;/em&amp;gt;&amp;lt;br&amp;gt;Fixed [[Mod Hooks#Client Hooks|Client_GameOrderCreated]] not being able to read territory picks in manual distribution games&amp;lt;br&amp;gt;Fixed WL.enumtype.ToString() functions&amp;lt;br&amp;gt;Fixed Client_PresentPlayCardUI not registering [[Mod Game Data Storage|Mod]] and [[Mod API Reference:UI|UI]] hooks if it was called before other client hooks&amp;lt;br&amp;gt;Fixed an error if you set number of card pieces to 0 or negative&amp;lt;br&amp;gt;Fixed [[Mod API Reference:GameOrderAirliftResult|GameOrderAirliftResult]].Results throwing an error instead of returning nil when there are no results yet&amp;lt;br&amp;gt;Fixed allowing [[Mod API Reference:GameOrderAttackTransferResult|GameOrderAttackTransferResult]].ActualArmies to be set to a negative number&amp;lt;br&amp;gt;Fixed &amp;quot;can’t transfer to a neutral&amp;quot; error that occurred when a mod resurrected a failed transfer&lt;br /&gt;
|-&lt;br /&gt;
| 5.33&lt;br /&gt;
| [[Mod API Reference:FogMod|WL.FogMod]]&amp;lt;br&amp;gt;[[Mod API Reference:GameOrderEvent|GameOrderEvent.FogModsOpt]]&amp;lt;br&amp;gt;[[Mod API Reference:GameOrderEvent|GameOrderEvent.RemoveFogModsOpt]]&amp;lt;br&amp;gt;[[Mod API Reference:GameStanding|GameStanding.IncomeMods]]&amp;lt;br&amp;gt;Fixed the AI trying to move its commander even if it doesn&#039;t control the territory the commander is on (which can happen with mods)&amp;lt;br&amp;gt;Fixed a bug that could make a generic Warzone error instead of a mod failed error if you tried to set a property on a destroyed object (for example, Button&#039;s SetInteractable)&lt;br /&gt;
|-&lt;br /&gt;
| 5.32.0.1&lt;br /&gt;
| &amp;quot;addCard&amp;quot; callback function now returns the card ID of the newly added card&amp;lt;br&amp;gt;Fixed a bug with custom cards that made old clients produce an error&lt;br /&gt;
|-&lt;br /&gt;
| 5.32&lt;br /&gt;
| [[Mod_Hooks#Client_Hooks|Client_GameOrderCreated]]&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_GameCommit]]&amp;lt;br&amp;gt;[[Mod API Reference:Custom Cards|Custom Cards]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.31&lt;br /&gt;
| Proper support for Neutral Special Units&amp;lt;br&amp;gt;Fixed GameOrderCustom.TurnPhase not correctly persisting in multi-player&amp;lt;br&amp;gt;Fixed Lua global state not persisting in some cases on the website&amp;lt;br&amp;gt;Note: this update &amp;lt;em&amp;gt;may have&amp;lt;/em&amp;gt; prevented the use of custom turn phases&lt;br /&gt;
|-&lt;br /&gt;
| 5.26&lt;br /&gt;
| Use [[Mod_API_Reference:ServerGame|ServerGame.SetPlayerResource]] in [[Mod_Hooks#Server_Hooks|Server_StartGame]]&amp;lt;br&amp;gt;Fixed a bug with airlifting special units that are set to always visible&lt;br /&gt;
|-&lt;br /&gt;
| 5.24.2&lt;br /&gt;
| [[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit.Health]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.24.1&lt;br /&gt;
| [[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TickCount|WL.TickCount]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.22.2&lt;br /&gt;
| [[Mod_API_Reference:Boss1|Boss1.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss2|Boss2.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss3|Boss3.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss4|Boss4.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Commander|Commander.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:CustomSpecialUnitBuilder|CustomSpecialUnitBuilder.Health]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.22&lt;br /&gt;
| [[Mod_API_Reference:GameOrderCustom|GameOrderCustom.OccursInPhaseOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.RemoveSpecialUnitsOpt]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.21&lt;br /&gt;
| [[Mod_Hooks#Client_Hooks|Client_PresentCommercePurchaseUI]]&amp;lt;br&amp;gt;[[Mod_API_Reference:ClientGame|ClientGame.CreateLocatorCircle]]&amp;lt;br&amp;gt;[[Mod_API_Reference:ClientGame|ClientGame.HighlightTerritories]]&amp;lt;br&amp;gt;[[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.JumpToActionSpotOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEventResult|GameOrderEventResult.CardInstancesCreated]]&amp;lt;br&amp;gt;[[Mod_API Reference:UI|UI.IsDestroyed]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|WL.CancelClickIntercept]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.20&lt;br /&gt;
| Setting [[Mod_API_Reference:TerritoryStanding|TerritoryStanding]].OwnerPlayerID to [[Mod_API_Reference:PlayerID|WL.PlayerID.AvailableForDistribution]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.AddCardPiecesOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.AddResourceOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.RemoveWholeCardsOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.AddArmies]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.AddStructuresOpt]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.17&lt;br /&gt;
| Using argument two of &amp;lt;code&amp;gt;addNewOrder&amp;lt;/code&amp;gt; in [[Mod_Hooks#Server_Hooks|Server_AdvanceTurn_Order]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.IncomeMods]]&amp;lt;br&amp;gt;[[Mod_API_Reference:IncomeMod|IncomeMod]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI.InterceptNextBonusLinkClick]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI.InterceptNextTerritoryClick]]&amp;lt;br&amp;gt;[[Mod_API_Reference:IsVersionOrHigher|WL.IsVersionOrHigher]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Arena]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ArmyCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ArmyCamp]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Attack]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Crafter]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.DigSite]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Draft]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Hospital]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Market]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.MercenaryCamp]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Mine]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.MoneyCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Mortar]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Power]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Recipe]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ResourceCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Smelter]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is a chance that a player has a version of the app that pre-dates the introduction of the [[Mod_API_Reference:IsVersionOrHigher|IsVersionOrHigher]] function. Many features were added after the first version of the Mod API Framework, but before the introduction of the function:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! Features&lt;br /&gt;
|-&lt;br /&gt;
| Up to 4.14.2&lt;br /&gt;
| Various bug fixes / performance enhancements relating to mods. No other changes made to mod API framework until version 5.17.&lt;br /&gt;
|-&lt;br /&gt;
| 3.20.2&lt;br /&gt;
| Mod support for Commerce games (Commerce added in 3.20.0)&lt;br /&gt;
|-&lt;br /&gt;
| 3.19.3&lt;br /&gt;
| Bug fixes for GameOrderPlayCard, Armies.Add, Armies.Subtract&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_GameRefresh]]&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_PresentMenuUI]]&amp;lt;br&amp;gt;[[Mod_Game_Data_Storage|Data storage]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Game|Game]].CreateDialog&amp;lt;br&amp;gt;[[Mod_API_Reference:Game|Game]].SendGameCustomMessage&amp;lt;br&amp;gt;[[Mod_API_Reference:GamePlayer|GamePlayer]].Income&amp;lt;br&amp;gt;[[Mod_Hooks#Server_Hooks|Server_GameCustomMessage]]&lt;br /&gt;
|-&lt;br /&gt;
| 3.19.2&lt;br /&gt;
| [[Mod_API_Reference:GameOrderCustom|GameOrderCustom]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI]].Alert&amp;lt;br&amp;gt;UI.Destroy&amp;lt;br&amp;gt;UI.PromptFromList&lt;br /&gt;
|-&lt;br /&gt;
| 3.18.2&lt;br /&gt;
| Moved all WarLight mod classes into the global &amp;quot;WL&amp;quot; namespace. For example, to create an Armies object instead of just saying &amp;quot;Armies()&amp;quot;, you now say WL.Armies.Create()&lt;br /&gt;
|-&lt;br /&gt;
| 3.18.0&lt;br /&gt;
| Mod API Framework added&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod Developers Guide]][[Category:Mod API Reference|!]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Mod_API_Reference&amp;diff=7389</id>
		<title>Mod API Reference</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Mod_API_Reference&amp;diff=7389"/>
		<updated>2025-03-10T22:41:18Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: /* Newer API features */ add 5.34 newer features/fixes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This explains how to use Warzone&#039;s [[Mods|mod]] API and links to the documentation for each object type.&lt;br /&gt;
&lt;br /&gt;
== Types ==&lt;br /&gt;
&lt;br /&gt;
When writing a mod, you&#039;ll encounter variables/objects of three basic types:&lt;br /&gt;
* Primitives: strings, numbers, booleans, etc.&lt;br /&gt;
* Tables: collections of key/value pairs.  A table is a lot like a hashmap or dictionary in other languages. Note that in Warzone, the key of a table will always be either a string or an integer.  Some places in this reference will refer to Arrays which are just tables with numeric keys starting at 1.&lt;br /&gt;
* Proxy objects: Discussed in the next section.&lt;br /&gt;
&lt;br /&gt;
== Proxy Objects ==&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;proxy object&#039;&#039;&#039; proxies information back and forth between your mod and Warzone.  You can tell if an object is a proxy object by looking for a &amp;lt;code&amp;gt;proxyType&amp;lt;/code&amp;gt; field.  All proxy objects always have the following fields:&lt;br /&gt;
&lt;br /&gt;
* proxyType: A string identifying the type of proxy object.&lt;br /&gt;
* readOnly: False if you&#039;re allowed to make changes to this proxy object, or true if it&#039;s read-only.&lt;br /&gt;
* readableKeys: An array containing all fields you&#039;re allowed to read from this object.&lt;br /&gt;
* writableKeys: An array containing all fields you&#039;re allowed to change on this object if readOnly is False.&lt;br /&gt;
&lt;br /&gt;
To read a field, simply read it like a property: &amp;lt;code&amp;gt;obj.field&amp;lt;/code&amp;gt;.  Similarly, to write to a proxy object, just assign to that field: &amp;lt;code&amp;gt;obj.field = newVal&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a handy function you can include in your mod to print out everything on a proxy object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre style=&amp;quot;overflow: auto&amp;quot;&amp;gt;&lt;br /&gt;
function PrintProxyInfo(obj)&lt;br /&gt;
    print(&#039;type=&#039; .. obj.proxyType .. &#039; readOnly=&#039; .. tostring(obj.readonly) .. &#039; readableKeys=&#039; .. table.concat(obj.readableKeys, &#039;,&#039;) .. &#039; writableKeys=&#039; .. table.concat(obj.writableKeys, &#039;,&#039;));&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Writing Tables ==&lt;br /&gt;
&lt;br /&gt;
If a writable Warzone proxy object exposes a table, and you wish to make changes to that table, you must assign the table back to the proxy object.  For example, assume you have a &amp;lt;code&amp;gt;GameStanding&amp;lt;/code&amp;gt; object named &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; which exposes the &amp;lt;code&amp;gt;Cards&amp;lt;/code&amp;gt; table, and you want to add something at index 9:&lt;br /&gt;
&lt;br /&gt;
  standing.Cards[9] = something  --WRONG!&lt;br /&gt;
&lt;br /&gt;
This code won&#039;t work since the proxy object isn&#039;t having anything assigned to it.  Proxy objects are only aware of changes when something is directly assigned into them.  To make this work, you must assign the table into the proxy object&#039;s field:&lt;br /&gt;
  local cards = standing.Cards&lt;br /&gt;
  cards[9] = something&lt;br /&gt;
  standing.Cards = cards; --Right&lt;br /&gt;
&lt;br /&gt;
Note: If you use lua&#039;s &amp;lt;code&amp;gt;type&amp;lt;/code&amp;gt; function, proxy objects will identify themselves as tables.  However, that should be considered an implementation detail.  For the purposes of this wiki, proxy objects aren&#039;t considered tables.&lt;br /&gt;
&lt;br /&gt;
== API Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[Mod API Reference:ActiveCard|ActiveCard]]&lt;br /&gt;
* [[Mod API Reference:ActiveCardWoreOff|ActiveCardWoreOff]]&lt;br /&gt;
* [[Mod API Reference:Armies|Armies]]&lt;br /&gt;
* [[Mod API Reference:BonusDetails|BonusDetails]]&lt;br /&gt;
* [[Mod API Reference:Boss1|Boss1]]&lt;br /&gt;
* [[Mod API Reference:Boss2|Boss2]]&lt;br /&gt;
* [[Mod API Reference:Boss3|Boss3]]&lt;br /&gt;
* [[Mod API Reference:Boss4|Boss4]]&lt;br /&gt;
* [[Mod API Reference:CardGame|CardGame]]&lt;br /&gt;
* [[Mod API Reference:CardGameAbandon|CardGameAbandon]]&lt;br /&gt;
* [[Mod API Reference:CardGameAirlift|CardGameAirlift]]&lt;br /&gt;
* [[Mod API Reference:CardGameBlockade|CardGameBlockade]]&lt;br /&gt;
* [[Mod API Reference:CardGameBomb|CardGameBomb]]&lt;br /&gt;
* [[Mod API Reference:CardGameCustom|CardGameCustom]]&lt;br /&gt;
* [[Mod API Reference:CardGameDiplomacy|CardGameDiplomacy]]&lt;br /&gt;
* [[Mod API Reference:CardGameGift|CardGameGift]]&lt;br /&gt;
* [[Mod API Reference:CardGameOrderDelay|CardGameOrderDelay]]&lt;br /&gt;
* [[Mod API Reference:CardGameOrderPriority|CardGameOrderPriority]]&lt;br /&gt;
* [[Mod API Reference:CardGameReconnaissance|CardGameReconnaissance]]&lt;br /&gt;
* [[Mod API Reference:CardGameReinforcement|CardGameReinforcement]]&lt;br /&gt;
* [[Mod API Reference:CardGameSanctions|CardGameSanctions]]&lt;br /&gt;
* [[Mod API Reference:CardGameSpy|CardGameSpy]]&lt;br /&gt;
* [[Mod API Reference:CardGameSurveillance|CardGameSurveillance]]&lt;br /&gt;
* [[Mod API Reference:CardInstance|CardInstance]]&lt;br /&gt;
* [[Mod API Reference:ClanPlayerInfo|ClanPlayerInfo]]&lt;br /&gt;
* [[Mod API Reference:ClientGame|ClientGame]]&lt;br /&gt;
* [[Mod API Reference:Commander|Commander]]&lt;br /&gt;
* [[Mod API Reference:CustomScenario|CustomScenario]]&lt;br /&gt;
* [[Mod API Reference:CustomScenarioTerritory|CustomScenarioTerritory]]&lt;br /&gt;
* [[Mod API Reference:DistributionMode|DistributionMode]]&lt;br /&gt;
* [[Mod API Reference:Game|Game]]&lt;br /&gt;
* [[Mod API Reference:GameColor|GameColor]]&lt;br /&gt;
* [[Mod API Reference:GameOpenSeat|GameOpenSeat]]&lt;br /&gt;
* [[Mod API Reference:GameOrder|GameOrder]]&lt;br /&gt;
* [[Mod API Reference:GameOrderAttackTransfer|GameOrderAttackTransfer]]&lt;br /&gt;
* [[Mod API Reference:GameOrderAttackTransferResult|GameOrderAttackTransferResult]]&lt;br /&gt;
* [[Mod API Reference:GameOrderBossEvent|GameOrderBossEvent]]&lt;br /&gt;
* [[Mod API Reference:GameOrderCustom|GameOrderCustom]]&lt;br /&gt;
* [[Mod API Reference:GameOrderDeploy|GameOrderDeploy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderDiscard|GameOrderDiscard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderEvent|GameOrderEvent]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCard|GameOrderPlayCard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAbandon|GameOrderPlayCardAbandon]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAirlift|GameOrderPlayCardAirlift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardAirliftResult|GameOrderPlayCardAirliftResult]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBlockade|GameOrderPlayCardBlockade]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardBomb|GameOrderPlayCardBomb]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardCustom|GameOrderPlayCardCustom]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardDiplomacy|GameOrderPlayCardDiplomacy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardFogged|GameOrderPlayCardFogged]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardGift|GameOrderPlayCardGift]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderDelay|GameOrderPlayCardOrderDelay]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardOrderPriority|GameOrderPlayCardOrderPriority]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReconnaissance|GameOrderPlayCardReconnaissance]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardReinforcement|GameOrderPlayCardReinforcement]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSanctions|GameOrderPlayCardSanctions]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSpy|GameOrderPlayCardSpy]]&lt;br /&gt;
* [[Mod API Reference:GameOrderPlayCardSurveillance|GameOrderPlayCardSurveillance]]&lt;br /&gt;
* [[Mod API Reference:GameOrderReceiveCard|GameOrderReceiveCard]]&lt;br /&gt;
* [[Mod API Reference:GameOrderStateTransition|GameOrderStateTransition]]&lt;br /&gt;
* [[Mod API Reference:GamePlayer|GamePlayer]]&lt;br /&gt;
* [[Mod API Reference:GameSettings|GameSettings]]&lt;br /&gt;
* [[Mod API Reference:GameStanding|GameStanding]]&lt;br /&gt;
* [[Mod API Reference:GameWL|GameWL]]&lt;br /&gt;
* [[Mod API Reference:IncomeMod|IncomeMod]]&lt;br /&gt;
* [[Mod API Reference:IsVersionOrHigher|IsVersionOrHigher]]&lt;br /&gt;
* [[Mod API Reference:MapDetails|MapDetails]]&lt;br /&gt;
* [[Mod API Reference:MapFamily|MapFamily]]&lt;br /&gt;
* [[Mod API Reference:NoParameterCardInstance|NoParameterCardInstance]]&lt;br /&gt;
* [[Mod API Reference:PendingStateTransition|PendingStateTransition]]&lt;br /&gt;
* [[Mod API Reference:PlayerCards|PlayerCards]]&lt;br /&gt;
* [[Mod API Reference:PlayerInfo2|PlayerInfo2]]&lt;br /&gt;
* [[Mod API Reference:ReinforcementCardInstance|ReinforcementCardInstance]]&lt;br /&gt;
* [[Mod API Reference:ServerGame|ServerGame]]&lt;br /&gt;
* [[Mod API Reference:SpecialUnit|SpecialUnit]]&lt;br /&gt;
* [[Mod API Reference:TerritoryConnection|TerritoryConnection]]&lt;br /&gt;
* [[Mod API Reference:TerritoryDetails|TerritoryDetails]]&lt;br /&gt;
* [[Mod API Reference:TerritoryModification|TerritoryModification]]&lt;br /&gt;
* [[Mod API Reference:TerritoryStanding|TerritoryStanding]]&lt;br /&gt;
* [[Mod API Reference:TickCount|TickCount]]&lt;br /&gt;
* [[Mod API Reference:UI|UI]]&lt;br /&gt;
* [[Mod API Reference:WL|WL]]&lt;br /&gt;
&lt;br /&gt;
== Newer API features ==&lt;br /&gt;
Some features were introduced after the first version of the Mod API framework and should be checked for using [[Mod_API_Reference:IsVersionOrHigher|IsVersionOrHigher]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! Features&lt;br /&gt;
|-&lt;br /&gt;
| 5.34&lt;br /&gt;
| Create [[Mod_API_Reference:UI|radio buttons]]&amp;lt;br&amp;gt;Lua errors in the browser now give stack traces with line numbers in the mod-crashed dialog&amp;lt;br&amp;gt;[[Mod API Reference:Custom Cards|Client_PresentPlayCardUI]] now gives mods the ability to close the cards dialog - &amp;lt;em&amp;gt;closeCardsDialog&amp;lt;/em&amp;gt;&amp;lt;br&amp;gt;Fixed Client_GameOrderCreated not being able to read territory picks in manual distribution games&amp;lt;br&amp;gt;Fixed WL.enumtype.ToString() functions&amp;lt;br&amp;gt;Fixed Client_PresentPlayCardUI not registering [[Mod Game Data Storage|Mod]] and [[Mod API Reference:UI|UI]] hooks if it was called before other client hooks&amp;lt;br&amp;gt;Fixed an error if you set number of card pieces to 0 or negative&amp;lt;br&amp;gt;Fixed [[Mod API Reference:GameOrderAirliftResult|GameOrderAirliftResult]].Results throwing an error instead of returning nil when there are no results yet&amp;lt;br&amp;gt;Fixed allowing [[Mod API Reference:GameOrderAttackTransferResult|GameOrderAttackTransferResult]].ActualArmies to be set to a negative number&amp;lt;br&amp;gt;Fixed &amp;quot;can’t transfer to a neutral&amp;quot; error that occurred when a mod resurrected a failed transfer&lt;br /&gt;
|-&lt;br /&gt;
| 5.33&lt;br /&gt;
| [[Mod API Reference:FogMod|WL.FogMod]]&amp;lt;br&amp;gt;[[Mod API Reference:GameOrderEvent|GameOrderEvent.FogModsOpt]]&amp;lt;br&amp;gt;[[Mod API Reference:GameOrderEvent|GameOrderEvent.RemoveFogModsOpt]]&amp;lt;br&amp;gt;[[Mod API Reference:GameStanding|GameStanding.IncomeMods]]&amp;lt;br&amp;gt;Fixed the AI trying to move its commander even if it doesn&#039;t control the territory the commander is on (which can happen with mods)&amp;lt;br&amp;gt;Fixed a bug that could make a generic Warzone error instead of a mod failed error if you tried to set a property on a destroyed object (for example, Button&#039;s SetInteractable)&lt;br /&gt;
|-&lt;br /&gt;
| 5.32.0.1&lt;br /&gt;
| &amp;quot;addCard&amp;quot; callback function now returns the card ID of the newly added card&amp;lt;br&amp;gt;Fixed a bug with custom cards that made old clients produce an error&lt;br /&gt;
|-&lt;br /&gt;
| 5.32&lt;br /&gt;
| [[Mod_Hooks#Client_Hooks|Client_GameOrderCreated]]&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_GameCommit]]&amp;lt;br&amp;gt;[[Mod API Reference:Custom Cards|Custom Cards]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.31&lt;br /&gt;
| Proper support for Neutral Special Units&amp;lt;br&amp;gt;Fixed GameOrderCustom.TurnPhase not correctly persisting in multi-player&amp;lt;br&amp;gt;Fixed Lua global state not persisting in some cases on the website&amp;lt;br&amp;gt;Note: this update &amp;lt;em&amp;gt;may have&amp;lt;/em&amp;gt; prevented the use of custom turn phases&lt;br /&gt;
|-&lt;br /&gt;
| 5.26&lt;br /&gt;
| Use [[Mod_API_Reference:ServerGame|ServerGame.SetPlayerResource]] in [[Mod_Hooks#Server_Hooks|Server_StartGame]]&amp;lt;br&amp;gt;Fixed a bug with airlifting special units that are set to always visible&lt;br /&gt;
|-&lt;br /&gt;
| 5.24.2&lt;br /&gt;
| [[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit.Health]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.24.1&lt;br /&gt;
| [[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TickCount|WL.TickCount]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.22.2&lt;br /&gt;
| [[Mod_API_Reference:Boss1|Boss1.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss2|Boss2.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss3|Boss3.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Boss4|Boss4.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Commander|Commander.CombatOrder]]&amp;lt;br&amp;gt;[[Mod_API_Reference:CustomSpecialUnitBuilder|CustomSpecialUnitBuilder.Health]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.22&lt;br /&gt;
| [[Mod_API_Reference:GameOrderCustom|GameOrderCustom.OccursInPhaseOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.RemoveSpecialUnitsOpt]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.21&lt;br /&gt;
| [[Mod_Hooks#Client_Hooks|Client_PresentCommercePurchaseUI]]&amp;lt;br&amp;gt;[[Mod_API_Reference:ClientGame|ClientGame.CreateLocatorCircle]]&amp;lt;br&amp;gt;[[Mod_API_Reference:ClientGame|ClientGame.HighlightTerritories]]&amp;lt;br&amp;gt;[[Mod_API_Reference:CustomSpecialUnit|CustomSpecialUnit]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.JumpToActionSpotOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEventResult|GameOrderEventResult.CardInstancesCreated]]&amp;lt;br&amp;gt;[[Mod_API Reference:UI|UI.IsDestroyed]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|WL.CancelClickIntercept]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.20&lt;br /&gt;
| Setting [[Mod_API_Reference:TerritoryStanding|TerritoryStanding]].OwnerPlayerID to [[Mod_API_Reference:PlayerID|WL.PlayerID.AvailableForDistribution]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.AddCardPiecesOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.AddResourceOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.RemoveWholeCardsOpt]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.AddArmies]]&amp;lt;br&amp;gt;[[Mod_API_Reference:TerritoryModification|TerritoryModification.AddStructuresOpt]]&lt;br /&gt;
|-&lt;br /&gt;
| 5.17&lt;br /&gt;
| Using argument two of &amp;lt;code&amp;gt;addNewOrder&amp;lt;/code&amp;gt; in [[Mod_Hooks#Server_Hooks|Server_AdvanceTurn_Order]]&amp;lt;br&amp;gt;[[Mod_API_Reference:GameOrderEvent|GameOrderEvent.IncomeMods]]&amp;lt;br&amp;gt;[[Mod_API_Reference:IncomeMod|IncomeMod]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI.InterceptNextBonusLinkClick]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI.InterceptNextTerritoryClick]]&amp;lt;br&amp;gt;[[Mod_API_Reference:IsVersionOrHigher|WL.IsVersionOrHigher]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Arena]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ArmyCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ArmyCamp]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Attack]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Crafter]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.DigSite]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Draft]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Hospital]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Market]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.MercenaryCamp]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Mine]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.MoneyCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Mortar]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Power]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Recipe]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.ResourceCache]]&amp;lt;br&amp;gt;[[Mod_API_Reference:StructureType|WL.StructureType.Smelter]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is a chance that a player has a version of the app that pre-dates the introduction of the [[Mod_API_Reference:IsVersionOrHigher|IsVersionOrHigher]] function. Many features were added after the first version of the Mod API Framework, but before the introduction of the function:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Version&lt;br /&gt;
! Features&lt;br /&gt;
|-&lt;br /&gt;
| Up to 4.14.2&lt;br /&gt;
| Various bug fixes / performance enhancements relating to mods. No other changes made to mod API framework until version 5.17.&lt;br /&gt;
|-&lt;br /&gt;
| 3.20.2&lt;br /&gt;
| Mod support for Commerce games (Commerce added in 3.20.0)&lt;br /&gt;
|-&lt;br /&gt;
| 3.19.3&lt;br /&gt;
| Bug fixes for GameOrderPlayCard, Armies.Add, Armies.Subtract&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_GameRefresh]]&amp;lt;br&amp;gt;[[Mod_Hooks#Client_Hooks|Client_PresentMenuUI]]&amp;lt;br&amp;gt;[[Mod_Game_Data_Storage|Data storage]]&amp;lt;br&amp;gt;[[Mod_API_Reference:Game|Game]].CreateDialog&amp;lt;br&amp;gt;[[Mod_API_Reference:Game|Game]].SendGameCustomMessage&amp;lt;br&amp;gt;[[Mod_API_Reference:GamePlayer|GamePlayer]].Income&amp;lt;br&amp;gt;[[Mod_Hooks#Server_Hooks|Server_GameCustomMessage]]&lt;br /&gt;
|-&lt;br /&gt;
| 3.19.2&lt;br /&gt;
| [[Mod_API_Reference:GameOrderCustom|GameOrderCustom]]&amp;lt;br&amp;gt;[[Mod_API_Reference:UI|UI]].Alert&amp;lt;br&amp;gt;UI.Destroy&amp;lt;br&amp;gt;UI.PromptFromList&lt;br /&gt;
|-&lt;br /&gt;
| 3.18.2&lt;br /&gt;
| Moved all WarLight mod classes into the global &amp;quot;WL&amp;quot; namespace. For example, to create an Armies object instead of just saying &amp;quot;Armies()&amp;quot;, you now say WL.Armies.Create()&lt;br /&gt;
|-&lt;br /&gt;
| 3.18.0&lt;br /&gt;
| Mod API Framework added&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod Developers Guide]][[Category:Mod API Reference|!]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Mod_API_Reference:Custom_Cards&amp;diff=7388</id>
		<title>Mod API Reference:Custom Cards</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Mod_API_Reference:Custom_Cards&amp;diff=7388"/>
		<updated>2025-03-10T22:29:53Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: /* Playing the Card */ note about Mod and UI not directly accessible in Client_PresentPlayCardUI in older versions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Warzone [[Mods|mod]] can create &#039;&#039;&#039;custom cards&#039;&#039;&#039; for use in a game. Custom cards show up the cards dialog right alongside all the other cards for the game.&lt;br /&gt;
&lt;br /&gt;
== Card Definition ==&lt;br /&gt;
&lt;br /&gt;
A mod defines the custom cards in the Client_SaveConfigureUI [[Mod Hooks|mod hook]].  The second parameter to this function is a callback that adds a card.&lt;br /&gt;
&lt;br /&gt;
This function takes the following arguments:&lt;br /&gt;
# &#039;&#039;string&#039;&#039;: Name of the card&lt;br /&gt;
# &#039;&#039;string&#039;&#039;: Description of the card&lt;br /&gt;
# &#039;&#039;string&#039;&#039;: Image filename (see Image below)&lt;br /&gt;
# &#039;&#039;integer&#039;&#039;: Number of pieces to divide the card into&lt;br /&gt;
# &#039;&#039;integer&#039;&#039;: Minimum number of pieces that Warzone will award to each player who takes a territory each turn&lt;br /&gt;
# &#039;&#039;.integer&#039;&#039;: Number of pieces of the card given to each player at the start of the game (initial pieces)&lt;br /&gt;
# &#039;&#039;double&#039;&#039;: The card&#039;s weight, which determines how likely it is to be selected when using random card distribution&lt;br /&gt;
&lt;br /&gt;
This function returns the [[Mod API Reference:CardID|CardID]] in [[Mod API Reference:IsVersionOrHigher|versions 5.32.0.1 and later]].&lt;br /&gt;
&lt;br /&gt;
If you&#039;d like for your card to be configurable by the player like a normal card, you should let the player select values for the number of pieces, minimum pieces, initial pieces, and weight.  &lt;br /&gt;
&lt;br /&gt;
If you&#039;d like your card to only be distributed at the beginning of the game and never again, you can pass 1 for the number of pieces, 0 for weight and minimum pieces, and initial pieces to the number of cards you want distributed at the game start.&lt;br /&gt;
&lt;br /&gt;
If you desire full control over when players receive your card and want to override Warzone&#039;s normal card distribution, you can pass 0 for weight, minimum pieces and initial pieces, and then you can use [[Mod API Reference:GameOrderEvent|GameOrderEvent]] yourself to award your card to players.&lt;br /&gt;
&lt;br /&gt;
== Playing the Card ==&lt;br /&gt;
&lt;br /&gt;
Mods get complete control exactly what happens when the card is played.  When the player attempts to play your card, it will call the function Client_PresentPlayCardUI in Client_PresentPlayCardUI.lua for your mod only.&lt;br /&gt;
&lt;br /&gt;
Client_PresentPlayCardUI is passed four arguments:&lt;br /&gt;
# [[Mod API Reference:Game|Game]]: Provides read-only information about the game.&lt;br /&gt;
# [[Mod API Reference:CardInstance|CardInstance]]: Provides read-only information about the card the player is attempting to play.&lt;br /&gt;
# playCard: A function that, when called, will cause the card to be played.  It takes three arguments: 1. The text to appear in the orders list next to the play-card order, 2. a string that will be stored with the order in a field called ModData, and 3. (optional) the [[Mod API Reference:TurnPhase|turn phase]] in which the card should be played. Custom turn phases cannot be used.&lt;br /&gt;
# closeCardsDialog: A function that, when called, closes the main cards dialog. This is commonly used when your mod creates a new dialog that wants to interact with the map, since the cards dialog could overlap the map making it cumbersome for the player.  Added in version 5.34.0 &lt;br /&gt;
&lt;br /&gt;
If you don&#039;t require any additional information from the user, you can simply call playCard immediately, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function Client_PresentPlayCardUI(game, cardInstance, playCard, closeCardsDialog)&lt;br /&gt;
	playCard(&#039;Play a magic card&#039;, &#039;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you do require additional infirmation from the user, you can call game.CreateDialog to create a dialog and later call playCard from a button callback, for example.&lt;br /&gt;
&lt;br /&gt;
Note: in versions under 5.34.0, [[Mod Game Data Storage|Mod]] and [[Mod API Reference:UI|UI]] are not directly accessible in Client_PresentPlayCardUI. They can be accessed in the callback function in [[Mod API Reference:ClientGame|Game]].CreateDialog. [[Mod API Reference:WL|WL]] was always accessible when the hook was introduced.&lt;br /&gt;
&lt;br /&gt;
== Image ==&lt;br /&gt;
&lt;br /&gt;
Mods can upload their own image to define what the card looks like in the cards dialog.  These should be a png file that&#039;s exactly 130 pixels wide and 180 pixels tall.  Place this image into a sub-folder in your mod folder named CardImages.  Then pass the name of your image to the third parameter of the add card function defined above.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Mod Developers Guide]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mod Developers Guide]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Settings&amp;diff=7381</id>
		<title>Settings</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Settings&amp;diff=7381"/>
		<updated>2025-03-08T19:46:47Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: /* Initial Territory Distribution */ rename Custom Distribution to Custom Scenario&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;One of Warzone&#039;s greatest features is how configurable games are.  This page enumerates all of the settings that go into a game or tournament.&lt;br /&gt;
&lt;br /&gt;
==Core Game Settings==&lt;br /&gt;
&lt;br /&gt;
* [[Game Name]]&lt;br /&gt;
* [[Map]]&lt;br /&gt;
* [[Ranked versus Practice]]&lt;br /&gt;
* [[Fog|Fog Level]]&lt;br /&gt;
* [[Multi Attack]]&lt;br /&gt;
* [[Move Order]]&lt;br /&gt;
* [[Private Messaging]]&lt;br /&gt;
* [[Team Games|Random Teams]]&lt;br /&gt;
* [[Open Seat Prerequisites]]&lt;br /&gt;
* [[Game creator&#039;s personal message]]&lt;br /&gt;
* [[Linking your Game]]&lt;br /&gt;
&lt;br /&gt;
==Initial Territory Distribution==&lt;br /&gt;
&lt;br /&gt;
* [[Manual Distribution|Automatic versus Manual distribution]]&lt;br /&gt;
* [[Initial Territory Distribution|Distribution Mode]]&lt;br /&gt;
* [[Territory Limit]]&lt;br /&gt;
* [[Initial Armies per Territory]]&lt;br /&gt;
* [[Non-distribution neutrals]]&lt;br /&gt;
* [[In-distribution neutrals]]&lt;br /&gt;
* [[Wastelands|Number of Wastelands]]&lt;br /&gt;
* [[Wastelands|Size of Wastelands]]&lt;br /&gt;
* [[Custom Scenario]]&lt;br /&gt;
&lt;br /&gt;
==Army Settings==&lt;br /&gt;
&lt;br /&gt;
* [[Base armies per turn]]&lt;br /&gt;
* [[Luck Modifier]]&lt;br /&gt;
* [[Rounding mode]]&lt;br /&gt;
* [[Extra armies for territories]]&lt;br /&gt;
* [[Army Cap]]&lt;br /&gt;
* [[Offense and defense kill rates|Offensive Kill Rate]]&lt;br /&gt;
* [[Offense and defense kill rates|Defensive Kill Rate]]&lt;br /&gt;
* [[Local deployments]]&lt;br /&gt;
* [[No-split mode]]&lt;br /&gt;
* [[Overridden Bonuses]]&lt;br /&gt;
* [[Percentage attacks|Attacking by Percentage]]&lt;br /&gt;
* [[One Army Must Stand Guard]]&lt;br /&gt;
* [[Commanders]]&lt;br /&gt;
* [[Boss]]es&lt;br /&gt;
&lt;br /&gt;
==Boot/Surrender Settings==&lt;br /&gt;
&lt;br /&gt;
* [[Real-Time versus Multi-Day]]&lt;br /&gt;
* [[Vote-to-boot time]]&lt;br /&gt;
* [[Direct boot time]]&lt;br /&gt;
* [[Automatic boot time]]&lt;br /&gt;
* [[Banking boot amount]]&lt;br /&gt;
* [[Vacations honored]]&lt;br /&gt;
* [[Players turning into AIs|Booted players turn into AIs]]&lt;br /&gt;
* [[Players turning into AIs|Surrendered players turn into AIs]]&lt;br /&gt;
* [[Surrendering|Surrenders must be accepted]]&lt;br /&gt;
* [[AI surrenders when one human remains]]&lt;br /&gt;
&lt;br /&gt;
==Card Settings==&lt;br /&gt;
* [[Number of card pieces per turn]]&lt;br /&gt;
* [[Maximum number of cards you can hold]]&lt;br /&gt;
* [[Card fog|Visibility of opponents playing cards]]&lt;br /&gt;
* [[Card fog|Visibility of opponent&#039;s cards]]&lt;br /&gt;
&lt;br /&gt;
==[[Tournament Settings]]==&lt;br /&gt;
&lt;br /&gt;
* [[Tournaments|Tournament Type]]&lt;br /&gt;
* Team Size&lt;br /&gt;
* Can Forward Invites&lt;br /&gt;
* Open Tournament&lt;br /&gt;
* Number of Rounds&lt;br /&gt;
* Teams per Game (single-elimination only)&lt;br /&gt;
* Games at a time (round-robin only)&lt;br /&gt;
&lt;br /&gt;
==Sample Settings Screen==&lt;br /&gt;
&lt;br /&gt;
https://d32kaghj56y4ei.cloudfront.net/static/img/SampleSettings.png&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Settings highlight]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Settings|!]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=Link_to_Game&amp;diff=7379</id>
		<title>Link to Game</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=Link_to_Game&amp;diff=7379"/>
		<updated>2025-03-06T12:59:32Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: Undo revision 7372 by Rex Imperator (talk) unnecessary to mention that&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Each Warzone game has a unique URL that uniquely identifies it.  The URL looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;https://www.warzone.com/MultiPlayer?GameID=1234567&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It can be shared with other players or posted on the [[forum]] which helps when discussing games.&lt;br /&gt;
&lt;br /&gt;
Whenever you open a game on the Warzone website, that game&#039;s URL will appear in your browser&#039;s address bar. It is also under Game &amp;gt; Settings &amp;gt; Full Settings &amp;gt; Link. While using the app, tapping the link will copy the link to the clipboard. Tap again to paste.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Settings]]&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
	<entry>
		<id>https://war.app/wiki/index.php?title=User:Rex_Imperator&amp;diff=7378</id>
		<title>User:Rex Imperator</title>
		<link rel="alternate" type="text/html" href="https://war.app/wiki/index.php?title=User:Rex_Imperator&amp;diff=7378"/>
		<updated>2025-03-06T12:56:25Z</updated>

		<summary type="html">&lt;p&gt;DanWL60: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Rex Imperator&amp;#039;&amp;#039;&amp;#039; is a Warzone player, playing since 2022. He created his account exactely the same day of &amp;#039;&amp;#039;&amp;#039;Benyyl&amp;#039;&amp;#039;&amp;#039;.  [https://www.warzone.com/Profile?p=15147121372&amp;amp;u=Rex+Imperator_1 Rex Imperator&amp;#039;s Profile]  ==Rex Imperator&amp;#039;s Games==  Rex Imperator&amp;#039;s like diplos and lotteries, this is the most of the game he&amp;#039;s playing. he like also some strategic games, and creative games. Sometimes, he&amp;#039;s creating some. Here&amp;#039;s his most popular template : [https://www.warzone.com/M...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Rex Imperator&#039;&#039;&#039; is a Warzone player, playing since 2022. He created his account exactely the same day of &#039;&#039;&#039;Benyyl&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[https://www.warzone.com/Profile?p=15147121372&amp;amp;u=Rex+Imperator_1 Rex Imperator&#039;s Profile]&lt;br /&gt;
&lt;br /&gt;
==Rex Imperator&#039;s Games==&lt;br /&gt;
&lt;br /&gt;
Rex Imperator&#039;s like diplos and lotteries, this is the most of the game he&#039;s playing. he like also some strategic games, and creative games.&lt;br /&gt;
Sometimes, he&#039;s creating some. Here&#039;s his most popular template : [https://www.warzone.com/MultiPlayer?TemplateID=1511622 If You Want Blood, You&#039;ve Got It]&lt;br /&gt;
&lt;br /&gt;
==Rex Imperator&#039;s Maps==&lt;br /&gt;
&lt;br /&gt;
Rex Imperators publied some maps. Go add five stars on them !&lt;br /&gt;
(The maps are listed by orders of coming out)&lt;br /&gt;
&lt;br /&gt;
[https://www.warzone.com/SinglePlayer?PreviewMap=105049 France by Vaction]&lt;br /&gt;
&lt;br /&gt;
[https://www.warzone.com/SinglePlayer?PreviewMap=104163 France by Population]&lt;br /&gt;
&lt;br /&gt;
[https://www.warzone.com/SinglePlayer?PreviewMap=106324 Alnilam]&lt;br /&gt;
&lt;br /&gt;
Don&#039;t worry, Rex Imperator is working on some new maps and will publish them in a few moment !&lt;/div&gt;</summary>
		<author><name>DanWL60</name></author>
	</entry>
</feed>