https://www.warzone.com/api.php?action=feedcontributions&user=Fizzer&feedformat=atomWarzone Wiki - User contributions [en]2024-03-19T11:32:25ZUser contributionsMediaWiki 1.19.1https://www.warzone.com/wiki/FogFog2024-02-28T21:32:34Z<p>Fizzer: API data should be restricted to the API page. Most players won't ever use the API.</p>
<hr />
<div>'''Fog''' is a way of controlling how much of your opponents empires you can see. Warzone supports six levels of fog: No Fog, Light Fog, Normal Fog, Heavy Fog, Dense Fog and Complete Fog.<br />
<br />
==End Game==<br />
<br />
After a game is over, all of the fog is removed. Players can use the [[history]] button to see exactly what happened behind the fog. If enabled, players will receive a fog-game-ended email that lets them know that the game ended.<br />
<br />
==Types of Fog==<br />
<br />
In all fog levels, you can always see your own [[territories]]. <br />
<br />
* https://d2wcw7vp66n8b3.cloudfront.net/Images/NoFog.png No Fog: All territories are visible to everyone.<br />
<br />
* https://d2wcw7vp66n8b3.cloudfront.net/Images/LightFog.png Light Fog: Territories adjacent to you are fully visible, but all others only show the owner, not the number of armies there.<br />
<br />
* https://d2wcw7vp66n8b3.cloudfront.net/Images/Foggy.png Normal Fog: Territories adjacent to you are fully visible, but all others are completely fogged.<br />
<br />
* https://d2wcw7vp66n8b3.cloudfront.net/Images/ModerateFog.png Dense Fog: All territories show the owner, but not the number of armies there.<br />
<br />
* https://d2wcw7vp66n8b3.cloudfront.net/Images/VeryFoggy.png Heavy Fog: Territories adjacent to you show the owner, but not the number of armies. All other territories are fogged.<br />
<br />
* https://d2wcw7vp66n8b3.cloudfront.net/Images/ExtremeFog.png Complete Fog: All territories are fogged.<br />
<br />
==Orders Visibility Overview==<br />
<br />
In addition to hiding the territories, Warzone will also not show attacks and transfers that happen in the fog to different degrees. The table below shows these rules in full detail.<br />
<br />
Although the table below is complex, there's one fundamental rule that governs how orders are visible: There should not be any information a player can gather by doing a significant amount of work. In other words, all information should be either blantantly clear or impossible to obtain.<br />
<br />
This rule is important to Warzone since we don't want to give advantages to players who are willing to spend hours doing a thorough analysis of the game map. Doing this would reduce the fun of the game for both the player doing the painstaking analysis and for the player who lost by not taking advantage of said analysis.<br />
<br />
==Orders Visibility Details==<br />
<br />
Definitions: <br />
* You: A territory you or a teammate control.<br />
* Visible: A territory you can fully see, but do not control.<br />
* Fogged: A territory you can't see at all - it's completely fogged.<br />
* Owner: A territory you can see the owner of, but not the number of armies.<br />
<br />
Visible:<br />
* Yes: Players can always see this information.<br />
* No: Players can never see this information.<br />
* OwnChg: Players can only see this information if the order resulted in territory ownership changing. In other words, a successful attack.<br />
* Success: Players can only see this information if the order was successful. In other words, a transfer that executed or an attack that resulted in ownership changing.<br />
{|<br />
|-<br />
|<br />
{| class="wikitable" style="margin-left:auto;margin-right:auto;"<br />
|-<br />
! 1<br />
| Can see that attack took place<br />
|-<br />
! 2<br />
| Can see what territory is attacking<br />
|-<br />
! 3<br />
| Can see what territory is being attacked<br />
|-<br />
! 4<br />
| Can see number of armies attacking/transferring<br />
|-<br />
! 5<br />
| Can see number of armies defending with<br />
|-<br />
! 6<br />
| Can see who is attacking<br />
|-<br />
! 7<br />
| Can see who is defending<br />
|-<br />
! 8<br />
| Can see number of attacking armies died<br />
|-<br />
! 9<br />
| Can see number of defending armies died<br />
|-<br />
! 10<br />
| Can see success/failure<br />
|-<br />
|}<br />
|-<br />
|<br />
{| class="wikitable" style="text-align:center;"<br />
|-<br />
! style="width:30px;" | From<br />
! style="width:10px;" |<br />
! style="width:40px;" | To<br />
! style="width:40px;" | 1<br />
! style="width:40px;" | 2<br />
! style="width:40px;" | 3<br />
! style="width:40px;" | 4<br />
! style="width:40px;" | 5<br />
! style="width:40px;" | 6<br />
! style="width:40px;" | 7<br />
! style="width:40px;" | 8<br />
! style="width:40px;" | 9<br />
! style="width:40px;" | 10<br />
|-<br />
| Visible<br />
| to<br />
| Visible<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
|-<br />
| You<br />
| to<br />
| You<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
|-<br />
| You<br />
| to<br />
| Visible<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
|-<br />
| Visible<br />
| to<br />
| You<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
|-<br />
| Visible<br />
| to<br />
| Fogged<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| <span style="color:darkred;">No</span><br />
| Yes<br />
| <span style="color:darkred;">No</span><br />
| Yes<br />
| <span style="color:darkred;">No</span><br />
| Yes<br />
|-<br />
| You<br />
| to<br />
| Fogged<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| <span style="color:darkred;">No</span><br />
| Yes<br />
| <span style="color:darkred;">No</span><br />
| Yes<br />
| Yes<br />
| Yes<br />
|-<br />
| Fogged<br />
| to<br />
| Visible<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Success<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Success<br />
| Yes<br />
| Yes<br />
|-<br />
| Fogged<br />
| to<br />
| You<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
|-<br />
| Visible<br />
| to<br />
| Owner<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| <span style="color:darkred">No</span><br />
| Yes<br />
| Yes<br />
| Yes<br />
| <span style="color:darkred">No</span><br />
| Yes<br />
|-<br />
| You<br />
| to<br />
| Owner<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| <span style="color:darkred">No</span><br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
|-<br />
| Owner<br />
| to<br />
| Visible<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Success<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Success<br />
| Yes<br />
| Yes<br />
|-<br />
| Owner<br />
| to<br />
| You<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
| Yes<br />
|-<br />
| Owner<br />
| to<br />
| Owner<br />
| OwnChg<br />
| OwnChg<br />
| OwnChg<br />
| <span style="color:darkred">No</span><br />
| <span style="color:darkred">No</span><br />
| OwnChg<br />
| OwnChg<br />
| <span style="color:darkred">No</span><br />
| <span style="color:darkred">No</span><br />
| OwnChg<br />
|-<br />
| Owner<br />
| to<br />
| Fogged<br />
| <span style="color:darkred">No</span><br />
| <span style="color:darkred">No</span><br />
| <span style="color:darkred">No</span><br />
| <span style="color:darkred">No</span><br />
| <span style="color:darkred">No</span><br />
| <span style="color:darkred">No</span><br />
| <span style="color:darkred">No</span><br />
| <span style="color:darkred">No</span><br />
| <span style="color:darkred">No</span><br />
| <span style="color:darkred">No</span><br />
|-<br />
| Fogged<br />
| to<br />
| Owner<br />
| OwnChg<br />
| OwnChg<br />
| OwnChg<br />
| <span style="color:darkred">No</span><br />
| <span style="color:darkred">No</span><br />
| OwnChg<br />
| OwnChg<br />
| <span style="color:darkred">No</span><br />
| <span style="color:darkred">No</span><br />
| OwnChg<br />
|-<br />
| Fogged<br />
| to<br />
| Fogged<br />
| <span style="color:darkred">No</span><br />
| <span style="color:darkred">No</span><br />
| <span style="color:darkred">No</span><br />
| <span style="color:darkred">No</span><br />
| <span style="color:darkred">No</span><br />
| <span style="color:darkred">No</span><br />
| <span style="color:darkred">No</span><br />
| <span style="color:darkred">No</span><br />
| <span style="color:darkred">No</span><br />
| <span style="color:darkred">No</span><br />
|}<br />
|-<br />
|}<br />
<br />
The luck values (offense luck and defense luck) are only visible when the armies on both the source and destination territories are visible.<br />
<br />
[[Category:Game Settings]]<br />
[[Category:Gameplay]]</div>Fizzerhttps://www.warzone.com/wiki/Creating_the_SVGCreating the SVG2024-01-31T15:35:48Z<p>Fizzer: </p>
<hr />
<div>The first step in making a map is create an SVG file. This SVG file defines what the map looks like, where the territories are, what their shapes are, as well as the "bonus link" rectangles that show the bonus values.<br />
<br />
You can use any SVG editor you want. Many graphic design applications have the ability to export to SVG, so if you're already familiar with one you may use that. If you don't know what to use, try Inkscape. Inkscape is a good choice since it's free, works across all of the major operating systems, and is overall very nice application. You can download it at http://inkscape.org. <br />
<br />
It's a good idea to test your SVG file as you are building it. Don't wait until you've spent a bunch of time building the perfect map before uploading it into Warzone the first time. You want to make sure the tools and techniques you are using will work with Warzone, as Warzone [[SVG Limitations|doesn't support some SVG features]].<br />
<br />
==Getting Started==<br />
<br />
After opening Inkscape, you should do a few things to set up your document:<br />
<br />
* Optionally, set the background to black: This is so it fits in with Warzone's theme. In Inkscape, click "Document Properties" (top-rightmost button, or shift-control-D) and click the "Background" (under the default "Page" tab). Set the R,B, and G to 0 and the A to full to get black. This isn't a required step, as Warzone will ignore the background color you set here and always have a black background. However, making it black in Inkscape helps you visualize how it will appear when you upload it.<br />
* Set the document size: Go back to "Document Properties" and look at "Custom Size". First set the Units to "px", then set the Width and Height to the desired size of your map (900x900 is a good starting point). Then expand the "Viewbox" drop down and set the Width and Height to the same values as your "Custom size". You can adjust the size for your own map's needs, up to a maximum of 3500x2500. If army numbers appear too small when you test your map, that means your map is too big and had to be shrunken down, causing the army numbers to shrink. Thanks to the magic of SVG, you can reduce the size of your map without losing any detail.<br />
* Ensure the Scale is also set to 1 (both x and y)<br />
<br />
Then just start drawing, using Inkscape's drawing tools. For learning how to draw in Inkscape, there are many good tutorials on the web. Try searching with search engines or on Youtube.<br />
<br />
==Assign Territories==<br />
<br />
As you are drawing, you will need to designate which objects will be player-controllable territories and which are just for decoration. To mark an object as a player-controllable territory, give it an id of Territory_#. For example, Territory_1, Territory_2, Territory_3, etc. To do this in Inkscape, right-click on the object and select "Object Properties." Then set the "ID" to Territory_1. <br />
<br />
Inkscape will tell you if you try to re-use the same number more than once (it will say "id exists!"), so you don't need to pay super close attention to where you left off in the numbering. Also, you don't need to use every number - it's okay to jump around (for example, skipping from Territory_11 to Territory_19.) This is also good if you decide to delete one; you don't need to go back and fill in the gap. <br />
<br />
Anything that doesn't start with Territory_ won't be a territory, so you can include extra objects for decoration or instruction, such as lines, arrows, etc.<br />
<br />
If you're making a really large map, note that maps may not contain more than 4000 territories or 1500 bonuses and your SVG file cannot be bigger than 3 megabytes. For very large maps (>3000 territories), keep this filesize limitation in mind. One strategy that helps is to use as few nodes as possible for your shapes.<br />
<br />
==Starting from an image==<br />
<br />
If you're modeling your map after something you have an image of, it's often helpful to insert an image, set its opacity to 50% and just draw over the top of it. The image itself won't show up when you upload it to Warzone.<br />
<br />
To insert an image in Inkscape, just drag the image file into your canvas. Then, you can move it to the back by selecting Object -> Lower to Bottom. You can adjust its opacity by selecting Object -> Fill and Stroke.<br />
<br />
==Overridden Properties==<br />
<br />
Warzone will override a few properties of each player-controllable territory. Therefore, it does not matter what you set for these properties when designing the map, since the values will be overwritten when the map is used in a real game:<br />
<br />
* Fill color: The fill color will be replaced with the color of the player who controls the territory<br />
* Stroke color (border color): The stroke color will be replaced with the color of the bonus the territory belongs to (you'll set these colors for each bonus later)<br />
* Stroke width (border width): The stroke width will always be 1.<br />
<br />
Player-controllable territories are "brought to the front." That is, you can't overlap a player-controllable territory with another object and expect it to stay that way. <br />
<br />
Further, player-controllable territories should not overlap each other - you don't want to have territories that players can't click on. If you want a territory to be on top of another, you really need to cut a hole in the outer territory in the shape of the inner one. This makes the inner one look like it's on top, even though technically the territories aren't overlapping.<br />
<br />
==Bonus Links==<br />
<br />
You can make a small "bonus link" rectangle that shows the number of armies a bonus gives. This is preferred over making your own rectangles with a number in them for two reasons:<br />
<br />
* If players click on the bonus link, it selects the bonus.<br />
* If players override the value of the bonus, the game will show the correct number.<br />
<br />
To make a bonus link, make an object near the bonus. A 16x16 rectangle is the standard, but some players prefer to use circles or other artistic styles. Give the object an ID of BonusLink_BonusName. Remove any spaces or punctuation, special letters (like the ß), letters of any other alphabet then the latin alphabet, or letters with diacritics (such as ë, î, ú) from the bonus name. For example, the Earth map has a bonus named "Middle East" and the rectangle's name is "BonusLink_MiddleEast". Be sure to use the same casing; for example, bonuslink_middleeast would not work.<br />
<br />
If you are not sure what to name your bonus link box, Warzone will help you out. After uploading your SVG file and creating the bonuses in the map designer, open the Bonuses window and look at the text. The Bonuses window will tell you what to name your Bonus Link rectangle. If you've named the object correctly, but Warzone still isn't recognizing it, it may be because your bonus link is a group (a "g" node in the svg file.) Only individual objects can be bonus links, not groups. To fix this, in Inkscape, just right-click the offending object and select "Ungroup."<br />
<br />
The fill color of a bonus link will be set to the color assigned to the bonus. The stroke color of the bonus link will always be set to yellow, and this color is not overridable. However, the yellow stroke can be hidden by setting the stroke opacity to zero.<br />
<br />
<br />
<br />
== Including Text ==<br />
<br />
To include text in your SVG file, please follow these steps:<br />
<br />
* Make the text using the text tool in Inkscape.<br />
* Arrange the text exactly as you want it.<br />
* Select the text.<br />
* Select Path -> Object to Path<br />
<br />
After doing this, your text will behave as an object. If you need to modify what the text says, you must delete and re-create the object. <br />
<br />
If you followed these steps but the text still is not showing up, please also verify that the text isn't overlapping any player-controllable territories, and that the text's color isn't the same as what's behind it. A common mistake is to make black text, and if you didn't change your Inkscape background to black as instructed above, it will appear in Inkscape but not when Warzone changes your background to black.<br />
<br />
==See also==<br />
<br />
* [[Map Making]]<br />
<br />
[[Category:Map Making]]</div>Fizzerhttps://www.warzone.com/wiki/Map_MakingMap Making2024-01-31T15:32:42Z<p>Fizzer: Those are all SVG limitations and should be in the "Creating the SVG" page</p>
<hr />
<div>This page will teach you how you can make your very own Warzone map! Anyone may make a map -- you do not need to purchase a membership or be a certain level.<br />
<br />
== Overview ==<br />
<br />
Creating a Warzone map is a four-step process. See the links below for instructions on how to accomplish each of these steps. <br />
<br />
# Create your SVG file (defines what the map looks like)<br />
# Enter the details (connections, [[bonuses]], etc.)<br />
# Test the map (play games on it to ensure it works correctly)<br />
# Mark the map as public (allows other players to play your map)<br />
<br />
== Required Reading ==<br />
<br />
Please refer to the following sections for a full guide on making your map. You may wish to watch the [https://www.youtube.com/watch?v=AkQn1pIZdY4 recommended tutorial video], but you should also read the wiki as it contains important information that isn't in the video.<br />
<br />
* [[Creating the SVG]]<br />
* [[Uploading your SVG]]<br />
* [[Map requirements]]<br />
* [[Entering map details]]<br />
* [[Testing maps|Testing your map]]<br />
* [[Making maps public|Make the map public]]<br />
* [[Map versioning|Managing different versions of your map]]<br />
<br />
If you get stuck or have questions, feel free to post on the [[map development forum]].<br />
<br />
== Additional Resources ==<br />
<br />
* [[Map guidelines|Guidelines for making a great map]]<br />
* [[Inkscape tips]]<br />
* [[SVG Limitations]]<br />
* [https://www.youtube.com/watch?v=AkQn1pIZdY4 Tutorial Video]<br />
* [[Automating the map creation process]]<br />
<br />
[[Category:Map Making|!]]</div>Fizzerhttps://www.warzone.com/wiki/Random_Warlords_and_Random_CitiesRandom Warlords and Random Cities2023-09-05T23:18:01Z<p>Fizzer: </p>
<hr />
<div>Some map designers include a Cities distribution or a Warlords Distribution manually by picking the territory in each bonus themselves. For most games, this is preferred since the map designer typically knows best where to place these.<br />
<br />
However, Warzone also allows you to utilize a [[Random Warlords Distribution]] or [[Random Cities Distribution]] for any map. This determines the distribution randomly when the game is started. This has a few advantages: <br />
* They allow each game to have a slightly different start, ensuring variety in strategies.<br />
* In a [[fog]] game, players will not know where the cities or start points will be.<br />
* These are available even if the map designer does not explicitly create a warlords or cities distribution.<br />
<br />
These distributions are designed for maps where [[bonuses]] do not overlap. If a map designer overlaps bonuses, these distributions may produce unexpected results.<br />
<br />
This will generally mean that [[Superbonuses]] will have one [[territory]] for each minor [[bonus]], plus an additional [[territory]]; included in distribution for warlords, and excluded in distribution for cities.<br />
<br />
The random distributions will not include a starting location in any bonus that is worth 0 armies per turn or negative armies per turn. In [[Strategic 1v1]] settings, this is why Korea, Japan, Hawaii and Alaska are not eligible for picking.<br />
<br />
==See also==<br />
<br />
* [[Initial Territory Distribution]]<br />
* [[Normal Distribution]]<br />
* [[Cities and Warlords Distribution]]<br />
<br />
[[Category:Distributions]]</div>Fizzerhttps://www.warzone.com/wiki/Cities_and_Warlords_DistributionCities and Warlords Distribution2023-09-05T23:16:48Z<p>Fizzer: Dupe page material</p>
<hr />
<div>#REDIRECT [[Random Warlords and Random Cities]]</div>Fizzerhttps://www.warzone.com/wiki/Mod_API_Reference:CustomSpecialUnitMod API Reference:CustomSpecialUnit2023-09-05T14:48:17Z<p>Fizzer: </p>
<hr />
<div>'''CustomSpecialUnit''': Subclass of [[Mod API Reference:SpecialUnit|SpecialUnit]]<br />
* '''AttackPower''' ''integer'': The number of armies this unit adds to attacks that it's a part of.<br />
* '''AttackPowerPercentage''' ''number'': Attacks that include this unit have their power multiplied by this number. For example, 1.5 would mean that if a player attacked with this unit and 20 armies, it would get a total attack power of 30 (50% more). A value of 1 (the default) has no effect.<br />
* '''CanBeAirliftedToSelf''' ''boolean'': If true, players can use the Airlift Card to move this unit around, as long as it doesn't change ownership.<br />
* '''CanBeAirliftedToTeammate''' ''boolean'': If true, players can use the Airlift Card to move this unit to a teammate.<br />
* '''CanBeGiftedWithGiftCard''' ''boolean'': If true, players can gift this unit to another player if it's on the territory they play a Gift Card on.<br />
* '''CanBeTransferredToTeammate''' ''boolean'': If true, players can transfer this unit to a teammate using an attack/transfer order.<br />
* '''CombatOrder''' ''integer'': Determines which special units take damage before others if multiple special units are on the same territory. The lower the number, the sooner your special unit takes damage. If you supply a negative number, your special unit will take damage before armies involved in the combat (added in v5.24.1). A commander has a CombatOrder of 10000, so if you want your special unit to protect the commander you should use a number less than 10000. You should try to use a number that no other mod is using so that damage order is consistent. For this reason, avoid round numbers like 0, 1, or 1000, etc.<br />
* '''DamageAbsorbedWhenAttacked''' ''integer'': When this unit takes damage, it will reduce the amount of damage remaining to other units on this territory by this value. This value has no effect if the unit has a ''Health''.<br />
* '''DamageToKill''' ''integer'': The number of damage points it takes to kill this unit. This value has no effect if the unit has a ''Health'', as the health will be used instead.<br />
* '''DefensePower''' ''integer'': The number of armies this unit adds to defense when it's on a territory that's attacked.<br />
* '''DefensePowerPercentage''' ''number'': When the unit is on a territory that's attacked, the total defense power is multiplied by this number. See AttackPowerPercentage.<br />
* '''Health''' ''[[Mod API Reference:Nullable|Nullable]]<integer>'': When not nil, this defines the health of the unit. The unit will automatically reduce its health when it's part of combat where it receives damage, and automatically die if the health goes below 1.<br />
* '''ImageFilename''' ''string'': The name of a png file in the SpecialUnitImages/ folder of the mod. This image must be a png and must be no bigger than 60x100 pixels. Mods may have up to 5 SpecialUnitImages.<br />
* '''IncludeABeforeName''' ''boolean'': If true, Warzone will automatically put the word "A" before the name of this unit. For example, if Name is "Tank", and IncludeABeforeName, Warzone will use "a Tank" or "A Tank" as necessary in places where it makes sense to include the "a", and leave off the "a" in places where it makes sense to leave it off.<br />
* '''IsVisibleToAllPlayers''' ''boolean'': If true, the territory this unit is on will always be visible to all players in the game, even if that spot would normally be fogged.<br />
* '''ModData''' ''string'': Has no effect. This is just a place for mods to place data if they want to store something along with the unit.<br />
* '''ModID''' ''[[Mod API Reference:Nullable|Nullable]]<[[Mod API Reference:ModID|ModID]]>'': The ID of the mod that created this unit.<br />
* '''Name''' ''string'': The name of the unit, which is shown to players.<br />
* '''TextOverHeadOpt''' ''string'': A string that will show above the unit's head on the map. If the unit has a ''Health'' and this field is left at nil, the unit's health is automatically put over its head.<br />
<br />
It is strongly advised that you limit the number of special units that a player can have to something reasonable, such as 3, otherwise it can easily become tedious to the player.<br />
<br />
== Creating ==<br />
<br />
Since CustomSpecialUnit is read-only, creating one requires the use of the CustomSpecialUnitBuilder class, like this:<br />
<br />
<br />
local builder = WL.CustomSpecialUnitBuilder.Create(order.PlayerID);<br />
builder.Name = 'Tank';<br />
builder.IncludeABeforeName = true;<br />
builder.ImageFilename = 'Tank.png';<br />
builder.AttackPower = 10;<br />
builder.DefensePower = 10;<br />
builder.DamageToKill = 10;<br />
builder.DamageAbsorbedWhenAttacked = 10;<br />
builder.CombatOrder = 3415;<br />
builder.CanBeGiftedWithGiftCard = true;<br />
builder.CanBeTransferredToTeammate = true;<br />
builder.CanBeAirliftedToSelf = true;<br />
builder.CanBeAirliftedToTeammate = true;<br />
builder.IsVisibleToAllPlayers = false;<br />
local unit = builder.Build();<br />
<br />
<br />
<br />
You can also clone and existing CustomSpecialUnit like this:<br />
<br />
local builder = WL.CustomSpecialUnitBuilder.CreateCopy(unit);<br />
builder.Name = 'ChangedName';<br />
local newUnit = builder.Build();<br />
<br />
<br />
'''CustomSpecialUnitBuilder''': <br />
* '''AttackPower''' ''integer'': <br />
* '''AttackPowerPercentage''' ''number'': <br />
* '''CanBeAirliftedToSelf''' ''boolean'': <br />
* '''CanBeAirliftedToTeammate''' ''boolean'': <br />
* '''CanBeGiftedWithGiftCard''' ''boolean'': <br />
* '''CanBeTransferredToTeammate''' ''boolean'': <br />
* '''CombatOrder''' ''integer'': <br />
* '''DamageAbsorbedWhenAttacked''' ''integer'': <br />
* '''DamageToKill''' ''integer'': <br />
* '''DefensePower''' ''integer'': <br />
* '''DefensePowerPercentage''' ''number'': <br />
* '''Health''' ''[[Mod API Reference:Nullable|Nullable]]<integer>'': Added in v5.22.2<br />
* '''ImageFilename''' ''string'': <br />
* '''IncludeABeforeName''' ''boolean'': <br />
* '''IsVisibleToAllPlayers''' ''boolean'': <br />
* '''ModData''' ''string'': <br />
* '''Name''' ''string'': <br />
* '''OwnerID''' ''[[Mod API Reference:PlayerID|PlayerID]]'': <br />
* '''TextOverHeadOpt''' ''string'': <br />
<br />
== Functions ==<br />
<br />
* '''WL.CustomSpecialUnitBuilder.Create'''('''ownerPlayerID''' ''[[Mod API Reference:PlayerID|PlayerID]]'') (static) returns [[Mod API Reference:CustomSpecialUnitBuilder|CustomSpecialUnitBuilder]]:<br />
* '''WL.CustomSpecialUnitBuilder.CreateCopy'''('''clone''' ''[[Mod API Reference:CustomSpecialUnit|CustomSpecialUnit]]'') (static) returns [[Mod API Reference:CustomSpecialUnitBuilder|CustomSpecialUnitBuilder]]:<br />
* '''Build'''() returns [[Mod API Reference:CustomSpecialUnit|CustomSpecialUnit]]:<br />
<br />
[[Category:Mod API Reference]]</div>Fizzerhttps://www.warzone.com/wiki/Mod_API_Reference:TickCountMod API Reference:TickCount2023-06-06T15:49:27Z<p>Fizzer: Created page with "Mods can call the '''WL.TickCount()''' function to return an integer that represents the number of milliseconds at any point in time. This is useful for profiling code to mea..."</p>
<hr />
<div>Mods can call the '''WL.TickCount()''' function to return an integer that represents the number of milliseconds at any point in time. This is useful for profiling code to measure how long certain code takes to run. To do this, call WL.TickCount() before and after the code you want to measure and subtract them to determine the number of milliseconds that the code took to run.</div>Fizzerhttps://www.warzone.com/wiki/Mod_API_ReferenceMod API Reference2023-06-06T15:47:35Z<p>Fizzer: </p>
<hr />
<div>This explains how to use Warzone's [[Mods|mod]] API and links to the documentation for each object type.<br />
<br />
== Types ==<br />
<br />
When writing a mod, you'll encounter variables/objects of three basic types:<br />
* Primitives: strings, numbers, booleans, etc.<br />
* 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.<br />
* Proxy objects: Discussed in the next section.<br />
<br />
== Proxy Objects ==<br />
<br />
A '''proxy object''' proxies information back and forth between your mod and Warzone. You can tell if an object is a proxy object by looking for a <code>proxyType</code> field. All proxy objects always have the following fields:<br />
<br />
* proxyType: A string identifying the type of proxy object.<br />
* readOnly: False if you're allowed to make changes to this proxy object, or true if it's read-only.<br />
* readableKeys: An array containing all fields you're allowed to read from this object.<br />
* writableKeys: An array containing all fields you're allowed to change on this object if readOnly is False.<br />
<br />
To read a field, simply read it like a property: <code>obj.field</code>. Similarly, to write to a proxy object, just assign to that field: <code>obj.field = newVal</code>.<br />
<br />
Here's a handy function you can include in your mod to print out everything on a proxy object:<br />
function PrintProxyInfo(obj)<br />
print('type=' .. obj.proxyType .. ' readOnly=' .. tostring(obj.readonly) .. ' readableKeys=' .. table.concat(obj.readableKeys, ',') .. ' writableKeys=' .. table.concat(obj.writableKeys, ','));<br />
end<br />
<br />
<br />
== Writing Tables ==<br />
<br />
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 <code>GameStanding</code> object named <code>standing</code> which exposes the <code>Cards</code> table, and you want to add something at index 9:<br />
<br />
standing.Cards[9] = something --WRONG!<br />
<br />
This code won't work since the proxy object isn'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's field:<br />
local cards = standing.Cards<br />
cards[9] = something<br />
standing.Cards = cards; --Right<br />
<br />
Note: If you use lua's <code>type</code> 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't considered tables.<br />
<br />
== API Reference ==<br />
<br />
* [[Mod API Reference:ActiveCard|ActiveCard]]<br />
* [[Mod API Reference:ActiveCardWoreOff|ActiveCardWoreOff]]<br />
* [[Mod API Reference:Armies|Armies]]<br />
* [[Mod API Reference:BonusDetails|BonusDetails]]<br />
* [[Mod API Reference:Boss1|Boss1]]<br />
* [[Mod API Reference:Boss2|Boss2]]<br />
* [[Mod API Reference:Boss3|Boss3]]<br />
* [[Mod API Reference:Boss4|Boss4]]<br />
* [[Mod API Reference:CardGame|CardGame]]<br />
* [[Mod API Reference:CardGameAbandon|CardGameAbandon]]<br />
* [[Mod API Reference:CardGameAirlift|CardGameAirlift]]<br />
* [[Mod API Reference:CardGameBlockade|CardGameBlockade]]<br />
* [[Mod API Reference:CardGameBomb|CardGameBomb]]<br />
* [[Mod API Reference:CardGameDiplomacy|CardGameDiplomacy]]<br />
* [[Mod API Reference:CardGameGift|CardGameGift]]<br />
* [[Mod API Reference:CardGameOrderDelay|CardGameOrderDelay]]<br />
* [[Mod API Reference:CardGameOrderPriority|CardGameOrderPriority]]<br />
* [[Mod API Reference:CardGameReconnaissance|CardGameReconnaissance]]<br />
* [[Mod API Reference:CardGameReinforcement|CardGameReinforcement]]<br />
* [[Mod API Reference:CardGameSanctions|CardGameSanctions]]<br />
* [[Mod API Reference:CardGameSpy|CardGameSpy]]<br />
* [[Mod API Reference:CardGameSurveillance|CardGameSurveillance]]<br />
* [[Mod API Reference:CardInstance|CardInstance]]<br />
* [[Mod API Reference:ClanPlayerInfo|ClanPlayerInfo]]<br />
* [[Mod API Reference:ClientGame|ClientGame]]<br />
* [[Mod API Reference:Commander|Commander]]<br />
* [[Mod API Reference:CustomScenario|CustomScenario]]<br />
* [[Mod API Reference:CustomScenarioTerritory|CustomScenarioTerritory]]<br />
* [[Mod API Reference:DistributionMode|DistributionMode]]<br />
* [[Mod API Reference:Game|Game]]<br />
* [[Mod API Reference:GameColor|GameColor]]<br />
* [[Mod API Reference:GameOpenSeat|GameOpenSeat]]<br />
* [[Mod API Reference:GameOrder|GameOrder]]<br />
* [[Mod API Reference:GameOrderAttackTransfer|GameOrderAttackTransfer]]<br />
* [[Mod API Reference:GameOrderAttackTransferResult|GameOrderAttackTransferResult]]<br />
* [[Mod API Reference:GameOrderBossEvent|GameOrderBossEvent]]<br />
* [[Mod API Reference:GameOrderCustom|GameOrderCustom]]<br />
* [[Mod API Reference:GameOrderDeploy|GameOrderDeploy]]<br />
* [[Mod API Reference:GameOrderDiscard|GameOrderDiscard]]<br />
* [[Mod API Reference:GameOrderEvent|GameOrderEvent]]<br />
* [[Mod API Reference:GameOrderPlayCard|GameOrderPlayCard]]<br />
* [[Mod API Reference:GameOrderPlayCardAbandon|GameOrderPlayCardAbandon]]<br />
* [[Mod API Reference:GameOrderPlayCardAirlift|GameOrderPlayCardAirlift]]<br />
* [[Mod API Reference:GameOrderPlayCardAirliftResult|GameOrderPlayCardAirliftResult]]<br />
* [[Mod API Reference:GameOrderPlayCardBlockade|GameOrderPlayCardBlockade]]<br />
* [[Mod API Reference:GameOrderPlayCardBomb|GameOrderPlayCardBomb]]<br />
* [[Mod API Reference:GameOrderPlayCardDiplomacy|GameOrderPlayCardDiplomacy]]<br />
* [[Mod API Reference:GameOrderPlayCardFogged|GameOrderPlayCardFogged]]<br />
* [[Mod API Reference:GameOrderPlayCardGift|GameOrderPlayCardGift]]<br />
* [[Mod API Reference:GameOrderPlayCardOrderDelay|GameOrderPlayCardOrderDelay]]<br />
* [[Mod API Reference:GameOrderPlayCardOrderPriority|GameOrderPlayCardOrderPriority]]<br />
* [[Mod API Reference:GameOrderPlayCardReconnaissance|GameOrderPlayCardReconnaissance]]<br />
* [[Mod API Reference:GameOrderPlayCardReinforcement|GameOrderPlayCardReinforcement]]<br />
* [[Mod API Reference:GameOrderPlayCardSanctions|GameOrderPlayCardSanctions]]<br />
* [[Mod API Reference:GameOrderPlayCardSpy|GameOrderPlayCardSpy]]<br />
* [[Mod API Reference:GameOrderPlayCardSurveillance|GameOrderPlayCardSurveillance]]<br />
* [[Mod API Reference:GameOrderReceiveCard|GameOrderReceiveCard]]<br />
* [[Mod API Reference:GameOrderStateTransition|GameOrderStateTransition]]<br />
* [[Mod API Reference:GamePlayer|GamePlayer]]<br />
* [[Mod API Reference:GameSettings|GameSettings]]<br />
* [[Mod API Reference:GameStanding|GameStanding]]<br />
* [[Mod API Reference:GameWL|GameWL]]<br />
* [[Mod API Reference:IncomeMod|IncomeMod]]<br />
* [[Mod API Reference:IsVersionOrHigher|IsVersionOrHigher]]<br />
* [[Mod API Reference:MapDetails|MapDetails]]<br />
* [[Mod API Reference:MapFamily|MapFamily]]<br />
* [[Mod API Reference:NoParameterCardInstance|NoParameterCardInstance]]<br />
* [[Mod API Reference:PendingStateTransition|PendingStateTransition]]<br />
* [[Mod API Reference:PlayerCards|PlayerCards]]<br />
* [[Mod API Reference:PlayerInfo2|PlayerInfo2]]<br />
* [[Mod API Reference:ReinforcementCardInstance|ReinforcementCardInstance]]<br />
* [[Mod API Reference:ServerGame|ServerGame]]<br />
* [[Mod API Reference:SpecialUnit|SpecialUnit]]<br />
* [[Mod API Reference:TerritoryConnection|TerritoryConnection]]<br />
* [[Mod API Reference:TerritoryDetails|TerritoryDetails]]<br />
* [[Mod API Reference:TerritoryModification|TerritoryModification]]<br />
* [[Mod API Reference:TerritoryStanding|TerritoryStanding]]<br />
* [[Mod API Reference:TickCount|TickCount]]<br />
* [[Mod API Reference:UI|UI]]<br />
[[Category:Mod Developers Guide]][[Category:Mod API Reference]]</div>Fizzerhttps://www.warzone.com/wiki/Mod_API_Reference:CustomSpecialUnitMod API Reference:CustomSpecialUnit2023-05-31T18:57:18Z<p>Fizzer: </p>
<hr />
<div>'''CustomSpecialUnit''': Subclass of [[Mod API Reference:SpecialUnit|SpecialUnit]]<br />
* '''AttackPower''' ''integer'': The number of armies this unit adds to attacks that it's a part of.<br />
* '''AttackPowerPercentage''' ''number'': Attacks that include this unit have their power multiplied by this number. For example, 1.5 would mean that if a player attacked with this unit and 20 armies, it would get a total attack power of 30 (50% more). A value of 1 (the default) has no effect.<br />
* '''CanBeAirliftedToSelf''' ''boolean'': If true, players can use the Airlift Card to move this unit around, as long as it doesn't change ownership.<br />
* '''CanBeAirliftedToTeammate''' ''boolean'': If true, players can use the Airlift Card to move this unit to a teammate.<br />
* '''CanBeGiftedWithGiftCard''' ''boolean'': If true, players can gift this unit to another player if it's on the territory they play a Gift Card on.<br />
* '''CanBeTransferredToTeammate''' ''boolean'': If true, players can transfer this unit to a teammate using an attack/transfer order.<br />
* '''CombatOrder''' ''integer'': Determines which special units take damage before others if multiple special units are on the same territory. The lower the number, the sooner your special unit takes damage. If you supply a negative number, your special unit will take damage before armies involved in the combat (added in v5.24.1). A commander has a CombatOrder of 10000, so if you want your special unit to protect the commander you should use a number less than 10000. You should try to use a number that no other mod is using so that damage order is consistent. For this reason, avoid round numbers like 0, 1, or 1000, etc.<br />
* '''DamageAbsorbedWhenAttacked''' ''integer'': When this unit takes damage, it will reduce the amount of damage remaining to other units on this territory by this value. This value has no effect if the unit has a ''Health''.<br />
* '''DamageToKill''' ''integer'': The number of damage points it takes to kill this unit. This value has no effect if the unit has a ''Health'', as the health will be used instead.<br />
* '''DefensePower''' ''integer'': The number of armies this unit adds to defence when it's on a territory that's attacked.<br />
* '''DefensePowerPercentage''' ''number'': When the unit is on a territory that's attacked, the total defence power is multiplied by this number. See AttackPowerPercentage.<br />
* '''Health''' ''[[Mod API Reference:Nullable|Nullable]]<integer>'': When not nil, this defines the health of the unit. The unit will automatically reduce its health when it's part of combat where it receives damage, and automatically die if the health goes below 1.<br />
* '''ImageFilename''' ''string'': The name of a png file in the SpecialUnitImages/ folder of the mod. This image must be a png and must be no bigger than 60x100 pixels. Mods may have up to 5 SpecialUnitImages.<br />
* '''IncludeABeforeName''' ''boolean'': If true, Warzone will automatically put the word "A" before the name of this unit. For example, if Name is "Tank", and IncludeABeforeName, Warzone will use "a Tank" or "A Tank" as necessary in places where it makes sense to include the "a", and leave off the "a" in places where it makes sense to leave it off.<br />
* '''IsVisibleToAllPlayers''' ''boolean'': If true, the territory this unit is on will always be visible to all players in the game, even if that spot would normally be fogged.<br />
* '''ModData''' ''string'': Has no effect. This is just a place for mods to place data if they want to store something along with the unit.<br />
* '''ModID''' ''[[Mod API Reference:Nullable|Nullable]]<[[Mod API Reference:ModID|ModID]]>'': The ID of the mod that created this unit.<br />
* '''Name''' ''string'': The name of the unit, which is shown to players.<br />
* '''TextOverHeadOpt''' ''string'': A string that will show above the unit's head on the map. If the unit has a ''Health'' and this field is left at nil, the unit's health is automatically put over its head.<br />
<br />
It is strongly advised that you limit the number of special units that a player can have to something reasonable, such as 3, otherwise it can easily become tedious to the player.<br />
<br />
== Creating ==<br />
<br />
Since CustomSpecialUnit is read-only, creating one requires the use of the CustomSpecialUnitBuilder class, like this:<br />
<br />
<br />
local builder = WL.CustomSpecialUnitBuilder.Create(order.PlayerID);<br />
builder.Name = 'Tank';<br />
builder.IncludeABeforeName = true;<br />
builder.ImageFilename = 'Tank.png';<br />
builder.AttackPower = 10;<br />
builder.DefensePower = 10;<br />
builder.DamageToKill = 10;<br />
builder.DamageAbsorbedWhenAttacked = 10;<br />
builder.CombatOrder = 3415;<br />
builder.CanBeGiftedWithGiftCard = true;<br />
builder.CanBeTransferredToTeammate = true;<br />
builder.CanBeAirliftedToSelf = true;<br />
builder.CanBeAirliftedToTeammate = true;<br />
builder.IsVisibleToAllPlayers = false;<br />
local unit = builder.Build();<br />
<br />
<br />
<br />
You can also clone and existing CustomSpecialUnit like this:<br />
<br />
local builder = WL.CustomSpecialUnitBuilder.CreateCopy(unit);<br />
builder.Name = 'ChangedName';<br />
local newUnit = builder.Build();<br />
<br />
<br />
'''CustomSpecialUnitBuilder''': <br />
* '''AttackPower''' ''integer'': <br />
* '''AttackPowerPercentage''' ''number'': <br />
* '''CanBeAirliftedToSelf''' ''boolean'': <br />
* '''CanBeAirliftedToTeammate''' ''boolean'': <br />
* '''CanBeGiftedWithGiftCard''' ''boolean'': <br />
* '''CanBeTransferredToTeammate''' ''boolean'': <br />
* '''CombatOrder''' ''integer'': <br />
* '''DamageAbsorbedWhenAttacked''' ''integer'': <br />
* '''DamageToKill''' ''integer'': <br />
* '''DefensePower''' ''integer'': <br />
* '''DefensePowerPercentage''' ''number'': <br />
* '''Health''' ''[[Mod API Reference:Nullable|Nullable]]<integer>'': Added in v5.22.2<br />
* '''ImageFilename''' ''string'': <br />
* '''IncludeABeforeName''' ''boolean'': <br />
* '''IsVisibleToAllPlayers''' ''boolean'': <br />
* '''ModData''' ''string'': <br />
* '''Name''' ''string'': <br />
* '''OwnerID''' ''[[Mod API Reference:PlayerID|PlayerID]]'': <br />
* '''TextOverHeadOpt''' ''string'': <br />
<br />
== Functions ==<br />
<br />
* '''WL.CustomSpecialUnitBuilder.Create'''('''ownerPlayerID''' ''[[Mod API Reference:PlayerID|PlayerID]]'') (static) returns [[Mod API Reference:CustomSpecialUnitBuilder|CustomSpecialUnitBuilder]]:<br />
* '''WL.CustomSpecialUnitBuilder.CreateCopy'''('''clone''' ''[[Mod API Reference:CustomSpecialUnit|CustomSpecialUnit]]'') (static) returns [[Mod API Reference:CustomSpecialUnitBuilder|CustomSpecialUnitBuilder]]:<br />
* '''Build'''() returns [[Mod API Reference:CustomSpecialUnit|CustomSpecialUnit]]:<br />
<br />
[[Category:Mod API Reference]]</div>Fizzerhttps://www.warzone.com/wiki/Query_game_APIQuery game API2023-05-25T16:01:39Z<p>Fizzer: </p>
<hr />
<div>Warzone can provide programmatic access to the details about multi-player Warzone games. This allows for the more technical users to write a program that can analyze information about games. This data is only available for ladder games, tournament games, games created by the [[Create game API]], or games that you played in.<br />
<br />
There's nothing the feed can see that isn't already available through the game's normal interface. This is just a way to write custom analyzers which allows for a broader analysis across games. <br />
<br />
The primary goals of this API is to enable tools that do statistical analysis of finished games and to enable custom ladders or custom tournaments to check on the winners of the game after it's over.<br />
<br />
==Usage==<br />
<br />
To access the data, use a URL like this: https://www.warzone.com/API/GameFeed?GameID=1212978<br />
<br />
This will return data describing basic details(id, state, name, numberOfTurns, lastTurnTime, templateID, players) about the game.<br />
<br />
If you want to get the entire turn history of the game, add an additional querystring parameter '''GetHistory=true'''. Adding this will cause the API to return you details about every turn of the game assuming it's finished.<br />
<br />
If you want to get a game's settings, add an additional querystring parameter '''GetSettings=true'''. Adding this will cause the API to return you details about the settings of the game.<br />
<br />
If you want to get a game's public chat message, add an additional querystring parameter '''GetChat=true'''.<br />
<br />
==JSON Definition==<br />
<br />
* A '''standing''' is the state of the board at any given point in time. This contains one entry per territory that contains the number of armies on that territory, who controls it, and the fog level. <br />
* A '''turn''' is just a collection of orders. This includes all the orders each player submitted, mixed together in the sequence they played out. <br />
* An '''order''' is obviously one order that a player submitted. But it can also include other things, such notifications when a player gets eliminated, or when cards are received, etc. Essentially, this represents what you see in the '''Orders''' panel on the right side of a game when viewing history. <br />
In the JSON, you'll find: <br />
* The players in the game (their names, color, their state, etc.) <br />
* All of the details of the map (it's name, all of its territories and what they connect to, all of its bonuses and what territories are in each bonus) <br />
* The '''distribution standing''': This is what the map looked like when it was time to pick the territories you started with. This is only present for manual distribution games. <br />
* The picks: This tells you which territories each player picked, and in what order. Like the distribution standing, this is only present for manual distribution games. <br />
* Standing 0: This tells you what the map looked like at the beginning of the game. <br />
* Turn 0: This is all of the orders that played out on the first turn of the game. <br />
* Standing x/turn x: Standings and turns then alternate for each turn of the game, all the way until the final standing. <br />
<br />
== Game State ==<br />
<br />
This API returns a "state" attribute on the game. This will be one of the following values:<br />
* WaitingForPlayers: This game is in the lobby and has not yet begun.<br />
* DistributingTerritories: This game is waiting for players to make their territory selections. This state will not exist for games with automatic distribution.<br />
* Playing: The game is in progress.<br />
* Finished: The game has finished.<br />
<br />
== Player States ==<br />
<br />
This API returns a "players" collection which contains information about each player in the game. Each player will have a "state" attribute with one of the following values:<br />
* Invited: The game is waiting on this player to accept or decline the game. This state will only ever be present for games still in the lobby.<br />
* Playing: This player is in the game, and still alive. This state will never be present in a game that has finished.<br />
* Eliminated: This player has been eliminated from the game.<br />
* SurrenderAccepted: This player has surrendered and is no longer in the game.<br />
* Booted: This player was booted from the game.<br />
* Won: This player has won the game. This state will only be present in games that have finished.<br />
* EndedByVote: This player, along with the other remaining players in the game, have voted to end the game. This state will only ever be present for games that are finished by voting-to-end.<br />
* Declined: This player declined the game and did not play.<br />
* RemovedByHost: This player was removed by the host via the "Add/Remove Players" button and did not play. If you created the game via the Create Game API, you don't have to worry about this state since you're the host, and only you could remove players.<br />
<br />
==Getting a list of Game IDs==<br />
<br />
In order to use the game feed, you'll need to know the game ID. This can be obtained through the graphical Warzone client by opening up the Settings panel and examining the "Link to Game" field. At the end of this field, you'll see GameID= followed by a number.<br />
<br />
To find game IDs programmatically, you can use the [[Game ID feed API]].<br />
<br />
==See Also==<br />
<br />
* [[Game ID feed API]]<br />
<br />
[[Category:API]]</div>Fizzerhttps://www.warzone.com/wiki/How_Ladder_Games_are_CreatedHow Ladder Games are Created2023-05-14T02:33:42Z<p>Fizzer: </p>
<hr />
<div>This page describes how ladder games are created. This process is the same for the [[1 v 1 Ladder]], the [[2 v 2 Ladder]], and the [[3 v 3 Ladder]], however it differs for the [[seasonal ladder]].<br />
<br />
== Non-Seasonal Ladders ==<br />
<br />
Every time the ladder updates, it checks for new games to create. The ladder tries to match you against players near your rating, while also preventing you from facing the same people over and over. <br />
<br />
The rest of this section describes the how the game-creation algorithm works for the nerds out there that want to follow along. <br />
<br />
# The algorithm starts by taking a list of all players who are participating in the ladder in order of their rating. It enumerates through them starting with the highest rated player and moving downwards. <br />
# For each player, Warzone constructs a list of potential opponents. We start by populating the list with everyone within 30% of you on the ladder or 10 players/teams on either side. For example, if the ladder has 100 players in it, we would look at the 30 players with better ratings than you and the 30 players with worse ratings than you (the game creation algorithm only sorts by rating - it ignores rank). <br />
# Then, we count how many times you've played each remaining opponent, and take the median of this data set. We eliminate any opponents that we've played more than this median, since the ladder wants to simultaneously try and pair you with unplayed (or fewer played) opponents as much as possible, without getting too restrictive and stagnating your new games if you're waiting on some slow players. <br />
# Next, we eliminate any opponents that are already in their maximum number of games, based on how many games they specified they wanted to play in when they joined the ladder. <br />
# Next, we eliminate any opponents that you've played with in your last 3 games in order of creation, and also eliminate any opponents that were in your last finished game for this ladder, and also eliminate any opponents we're currently playing with in this ladder. From this trimmed down list, we pick the highest rated player who meets this same criteria to you and create a game between you and them.<br />
<br />
== Seasonal Ladders ==<br />
<br />
Seasonal ladders check for creating new games once per day, until 11 days before the season ends at which point no new games will be created.<br />
<br />
This check usually happens just after midnight in the GMT timezone. When it occurs, Warzone follows the following process to determine how games are created:<br />
<br />
# Determine how many games each player should have at this point. This is calculated by taking the number of days we are into the season, dividing by 3, then adding 4. This matches the goal of having 4 games at the start, and one more game every 3 days after that.<br />
# Each player that doesn't have enough games gets a new game. Their opponent is determined randomly from opponents that they have not played. Warzone will try to pick an opponent who has few games (and therefore needs more), but if none are available it will still create a game, putting that player above the normal limit. <br />
<br />
== See also ==<br />
<br />
* [[Ladders]]<br />
<br />
[[Category:Ladders]]</div>Fizzerhttps://www.warzone.com/wiki/3_v_3_Ladder3 v 3 Ladder2023-05-14T02:32:49Z<p>Fizzer: </p>
<hr />
<div>The '''3 v 3 Ladder''' is a [[ladder]] that plays on the Europe map. https://www.warzone.com/SinglePlayer?PreviewMap=10895<br />
<br />
To join the 3 v 3 ladder, see [[joining team ladders]].<br />
<br />
The 3 vs 3 has no set end and players try to get the biggest score and highest ranking they can. <br />
<br />
== See also ==<br />
* [[1 v 1 Ladder]]<br />
* [[2 v 2 Ladder]]<br />
* [[Seasonal Ladder]]<br />
* [[Real-Time Ladder]]<br />
<br />
[[Category:Ladders]]</div>Fizzerhttps://www.warzone.com/wiki/Joining_team_laddersJoining team ladders2023-05-14T02:32:33Z<p>Fizzer: </p>
<hr />
<div>To join a ladder that involves teams, such as the [[2 v 2 ladder]], you can either join it by yourself or join as a team. <br />
<br />
==Joining with a Team ==<br />
<br />
If you wish to join with your friends, you must create a team proposal involving each player you want to team up with. Once all players accept the proposal, they become a team and are placed on the ladder. Players can only be in one team at a time. <br />
<br />
Any member of the team can change the number of simultaneous games by clicking "Change Settings" or dissolve the team by clicking "Leave Ladder." <br />
<br />
== Joining by Yourself ==<br />
<br />
If you join by yourself, you will be matched up with different players and teammates every game. <br />
<br />
== Matching ==<br />
<br />
If you join by yourself, most of the time, you will only be matched against other players who also joined by themselves. Players who join as a team will usually be matched against an opposing team that joined as a team. However, there can be exceptions if no other match is possible.<br />
<br />
[[Category:Ladders]]</div>Fizzerhttps://www.warzone.com/wiki/2_v_2_Ladder2 v 2 Ladder2023-05-14T02:29:47Z<p>Fizzer: </p>
<hr />
<div>The '''2 v 2 Ladder''' is a [[ladder]] that uses the [[Strategic 2 v 2]] [[template]].<br />
<br />
To join the 2 v 2 ladder, see [[joining team ladders]].<br />
<br />
The 2 vs 2 has no set end and players try to get the biggest score and highest ranking they can.<br />
<br />
== See also ==<br />
* [[1 v 1 Ladder]]<br />
* [[3 v 3 Ladder]]<br />
* [[Seasonal Ladder]]<br />
* [[Real-Time Ladder]]<br />
<br />
[[Category:Ladders]]</div>Fizzerhttps://www.warzone.com/wiki/LaddersLadders2023-05-14T02:29:06Z<p>Fizzer: </p>
<hr />
<div>Warzone ladders are competitive arenas where players compete for the highest spot on the ladder. <br />
<br />
You can find the main ladder pages by clicking the Ladders sub-tab under the Multi-Player tab. This is where players can join or leave the ladder, or see the up-to-date standings.<br />
<br />
==Ladders==<br />
Warzone currently has four ladders:<br />
<br />
* The [[1 v 1 Ladder]] (min level 48)<br />
* The [[2 v 2 Ladder]] (min level 51)<br />
* The [[3 v 3 Ladder]] (min level 54)<br />
* The [[Seasonal Ladder]] (min level 52)<br />
<br />
==How Ladders Work==<br />
<br />
In the Warzone ladders, you don't get to choose who you play against. Instead, the ladder sets up games for you. You can, however, pick how many games you'd like to be playing at any given time. <br />
<br />
Warzone ladders use ELO-based rating systems to rank players by their skill level. Based on the results of your ladder games, you will receive a rating that will be used to give you a rank on the ladder's scoreboard.<br />
<br />
== Rewards ==<br />
<br />
There are two ways to earn rewards: Holding a high rank and achieving a new league. The rank rewards are given out every Sunday to all players who have been in the ladder for the entire week prior. <br />
<br />
A gold trophy will also be awarded to any player who holds the #1 rank when rewards are given out. <br />
<br />
To see the rewards offered by any ladder, open that ladder's page and click Rewards.<br />
<br />
==Leaving the Ladder==<br />
<br />
Players are free to leave the ladder and re-join it at any time. Leaving the ladder does not delete any on-going games, it just stops new games from being created for you. Your rating continues to be updated even when you’re not participating in the ladder. However, you will not receive a rank while not in the ladder and, therefore, won’t be included on the leaderboard. If you re-join the ladder, your existing rating will be used to rank you just as it was before you left. This makes it easy to take breaks in case you’re going to be away from Warzone for a while.<br />
<br />
Note that only are only eligible to receive rewards if you stay in the ladder for the entire week leading up to the rewards being given out on Sunday.<br />
<br />
<br />
== Rules ==<br />
<br />
A player is not allowed to have multiple accounts joined to a ladder at the same time. Violations will be punished with a warning and then a suspension.<br />
<br />
<br />
==See Also==<br />
* [[How Ladder Games are Created]]<br />
* [[Ladder Ranks and Ratings]]<br />
<br />
[[Category:Ladders]]</div>Fizzerhttps://www.warzone.com/wiki/1_v_1_Ladder1 v 1 Ladder2023-05-14T02:28:42Z<p>Fizzer: </p>
<hr />
<div>The '''1 v 1 ladder''' is a [[ladder]] that uses the [[strategic 1 v 1]] [[Template|template]]. <br />
The goal of the 1 v 1 ladder is to provide the most fun [[settings]] possible for 1v1. Although this usually correlates with reducing the [[Luck Modifier|luck factor]] as much as possible, the goal is not to remove luck completely.<br />
<br />
The 1 v 1 ladder has no set end. Players must try to get as high as possible and maintain that score for as long as they can.<br />
<br />
== See also ==<br />
* [[2 v 2 Ladder]]<br />
* [[Seasonal Ladder]]<br />
* [[Real-Time Ladder]]<br />
<br />
[[Category:Ladders]]</div>Fizzerhttps://www.warzone.com/wiki/BayeseloBayeselo2023-05-14T02:27:26Z<p>Fizzer: </p>
<hr />
<div>'''Bayeselo''', or Bayesian Elo Rating, is a modifier form of ELO used to calculate the ratings on the [[Seasonal Ladder]].<br />
<br />
See [http://remi.coulom.free.fr/Bayesian-Elo/ Bayesian Elo Rating] for the full details. This has several advantages over other ELO rating systems:<br />
* Beating the same opponent multiple times gives you more rating than beating them once. In most ELO systems, only a win or loss is considered for each opponent.<br />
* Bayeselo behaves correctly when opponents' ratings are far apart<br />
* Ratings are calculated based on final ratings, not just what the rating was when the game took place.<br />
<br />
The exact algorithm used by this tool is documented on their page, and is not repeated here. The source code is also available for the truly nerdy. <br />
<br />
==Run your own Ladder Simulations==<br />
<br />
You can run your own ladder simulations which help to understand how the ratings are calculated. This can be used to answer questions like:<br />
<br />
* How would the ratings be different if I had won versus X instead of lost?<br />
* How would the ratings change if I win or lose this in-progress game?<br />
* How would the ratings be different if first-pick advantage was higher or lower?<br />
<br />
Here’s the process to re-produce the current rankings:<br />
<br />
* Download Bayeselo.exe from [http://remi.coulom.free.fr/Bayesian-Elo/ remi.coulom.free.fr].<br />
* Download BayeseloLog.txt from the links below. This file is automatically generated each time the ladder updates and contains all of the commands needed to re-produce the current ladder rankings.<br />
* Run Bayeselo.exe. You’ll be left at a prompt that says<br />
ResultSet><br />
<br />
* Get BayeseloLog text file:<br />
** Visit [https://www.warzone.com/LadderSeasons this page] to get the list of seasons<br />
** Click the season you want the log for<br />
** Check your URL, and you'll see it ends with ID= and a number. For example, Season XXX is ID=4029<br />
** Enter that number into this URL: http://data.warlight.net/Data/BayeseloLog4029.txt<br />
<br />
* Copy the entire contents of BayeseloLog.txt to your clipboard, and paste it into the Bayeselo application. (Note: To paste into a console app on windows, you can right-click on the titlebar, select Edit then Paste)<br />
<br />
This will produce rankings like the following:<br />
<br />
Rank Name Elo + - games score oppo. draws<br />
1 Waya 303 457 341 1 100% 179 0%<br />
2 Fizzer 302 412 285 2 100% 115 0%<br />
3 Soyrice 218 297 240 2 100% 87 0%<br />
4 FBGDragons 181 494 353 1 100% 52 0%<br />
5 NoZone 179 219 235 3 33% 220 0%<br />
6 FBGMoDogg 110 326 421 1 0% 218 0%<br />
7 Ruthless 83 410 281 2 100% -99 0%<br />
8 GuyMannington 65 311 312 2 50% 45 0%<br />
9 deweylikedonuts 55 304 304 2 50% 59 0%<br />
10 Perrin3088 52 222 217 5 60% -45 0%<br />
11 sue 50 457 340 1 100% -69 0%<br />
...<br />
<br />
==Making changes==<br />
<br />
Now that you can re-produce the existing ladder rankings, you can try making changes and seeing how they affect the results. Here’s the process:<br />
<br />
* First, ensure you are on the “ResultSet>” prompt. If you’re in “ResultSet-EloRating>”, enter a command of just “x” to go back up one.<br />
* Enter the command “reset” to clear the previous results. This ensures you’re starting from a clean slate.<br />
* Modify BayeseloLog.txt depending on what you want to try (see below).<br />
* Copy/paste the modified BayeseloLog.txt back into Bayeselo.exe to see the results. Compare to your previous run to see how they changed. <br />
<br />
== Modifying the log ==<br />
<br />
In BayeseloLog.txt, you’ll find two large sections – first, a bunch of addplayer commands, then a bunch of addresult commands.<br />
<br />
===Players===<br />
<br />
Each addplayer line corresponds to a player participating (or that has participated at one time) in the ladder. They are also numbered, starting at zero and going up.<br />
<br />
addplayer Fizzer ;0<br />
addplayer Knoebber ;1<br />
addplayer FBGDragons ;2<br />
addplayer CuChulainn ;3<br />
...<br />
addplayer Perrin3088 ;7<br />
...<br />
<br />
===Results===<br />
<br />
After the players, there are a bunch of addresult commands. Each addresult corresponds to one finished ladder game. In these numbers, we tell Bayeselo which two players fought each other, who got first pick, and who won. Let's examine this in detail.<br />
<br />
addresult 0 7 2<br />
addresult 1 4 2<br />
addresult 2 7 2<br />
addresult 3 7 0<br />
addresult 4 18 0<br />
...<br />
<br />
https://d32kaghj56y4ei.cloudfront.net/static/img/addresult.png<br />
<br />
By changing these, you can simulate new wins/losses or change existing games to see how they would affect the results.<br />
<br />
==See Also==<br />
<br />
* [[Ladders]]<br />
<br />
[[Category:Ladders|Ranks and Ratings]]</div>Fizzerhttps://www.warzone.com/wiki/Talk:Ladder_Ranks_and_RatingsTalk:Ladder Ranks and Ratings2023-05-14T02:24:13Z<p>Fizzer: Fizzer moved page Talk:Ladder Ranks and Ratings to Talk:Bayeselo</p>
<hr />
<div>#REDIRECT [[Talk:Bayeselo]]</div>Fizzerhttps://www.warzone.com/wiki/Talk:BayeseloTalk:Bayeselo2023-05-14T02:24:13Z<p>Fizzer: Fizzer moved page Talk:Ladder Ranks and Ratings to Talk:Bayeselo</p>
<hr />
<div>Fizzer, could you please explain how the addresult command works in detail?<br />
<br />
Is it: addresult <playerwhogot1stpick> <2ndplayer> <0=1stplayer wins|2=2ndplayer wins> ??<br />
<br />
And is getting your 1st pick really that much of an advantage, or is it outweighed by the 2nd pick player probably having better intel on the 1st pick player's starting locations? I suppose you have statistics on that? --[[User:Diabolicus|Diabolicus]] 14:11, 6 October 2011 (UTC)<br />
<br />
First pick is not much of an advantage, but it is slight. Players with first pick win something like 52% of the time if I recall correctly. The image explaining addresult was broken, it's restored now, so the page should answer your first question. [[User:Fizzer|Fizzer]]<br />
<br />
:Thanks for clarifying that. One other thing: It seems the clantag of players Chaos and V ( [中国阳朔] becomes ä¸å›½é˜³æœ” in the log file) causes bayeslo.exe to crash. Is there any workaround other than to manually remove the clantags from their names prior to pasting the logs into bayeslo.exe? --[[User:Diabolicus|Diabolicus]] 11:32, 13 December 2011 (UTC)<br />
<br />
Is there a BayeseloLog for Seasonal Ladder? --[[User:Grzechooo|<span style="color:#ff8080;font-weight:bold;">Grzechooo</span>]] <sup>([[User talk:Grzechooo|<span style="color:#ae0000;">drop a line</span>]])</sup> 13:33, 9 December 2011 (UTC)<br />
<br />
Added [[User:Fizzer|Fizzer]]</div>Fizzerhttps://www.warzone.com/wiki/Ladder_Ranks_and_RatingsLadder Ranks and Ratings2023-05-14T02:24:13Z<p>Fizzer: Fizzer moved page Ladder Ranks and Ratings to Bayeselo</p>
<hr />
<div>#REDIRECT [[Bayeselo]]</div>Fizzerhttps://www.warzone.com/wiki/BayeseloBayeselo2023-05-14T02:24:13Z<p>Fizzer: Fizzer moved page Ladder Ranks and Ratings to Bayeselo</p>
<hr />
<div>Warzone uses an ELO rating system, similar to what is used in Chess. <br />
<br />
==How Ranks and Ratings are calculated==<br />
<br />
More specifically, Warzone uses [http://remi.coulom.free.fr/Bayesian-Elo/ Bayesian Elo Rating], which has several advantages over other ELO rating systems:<br />
* Beating the same opponent multiple times gives you more rating than beating them once. In most ELO systems, only a win or loss is considered for each opponent.<br />
* This system allows giving an advantage to players that pick first, as described above.<br />
* Bayeselo behaves correctly when opponents' ratings are far apart<br />
* Ratings are calculated based on final ratings, not just what the rating was when the game took place.<br />
<br />
The exact algorithm used by this tool is documented on their page, and is not repeated here. The source code is also available for the truly nerdy. <br />
<br />
==Run your own Ladder Simulations==<br />
<br />
You can run your own ladder simulations which help to understand how the ratings are calculated. This can be used to answer questions like:<br />
<br />
* How would the ratings be different if I had won versus X instead of lost?<br />
* How would the ratings change if I win or lose this in-progress game?<br />
* How would the ratings be different if first-pick advantage was higher or lower?<br />
<br />
Here’s the process to re-produce the current rankings:<br />
<br />
* Download Bayeselo.exe from [http://remi.coulom.free.fr/Bayesian-Elo/ remi.coulom.free.fr].<br />
* Download BayeseloLog.txt from the links below. This file is automatically generated each time the ladder updates and contains all of the commands needed to re-produce the current ladder rankings.<br />
* Run Bayeselo.exe. You’ll be left at a prompt that says<br />
ResultSet><br />
<br />
* Copy the entire contents of BayeseloLog.txt to your clipboard, and paste it into the Bayeselo application. (Note: To paste into a console app on windows, you can right-click on the titlebar, select Edit then Paste)<br />
<br />
BayeseloLog can be obtained separately for each ladder. Here are the links:<br />
<br />
* [[1v1 ladder]]: http://data.warlight.net/Data/BayeseloLog0.txt<br />
* [[2v2 ladder]]: http://data.warlight.net/Data/BayeseloLog1.txt<br />
* [[Seasonal Ladder|Seasonal ladder]]: <br />
** Visit [https://www.warzone.com/Ladder?Ladder=Seasonal this page] to get the list of seasons<br />
** Click the season you want the log for<br />
** Check your URL, and you'll see it ends with ID= and a number. For example, Season XXX is ID=4029<br />
** Enter that number into this URL: http://data.warlight.net/Data/BayeseloLog4029.txt<br />
<br />
This will produce rankings like the following:<br />
<br />
Rank Name Elo + - games score oppo. draws<br />
1 Waya 303 457 341 1 100% 179 0%<br />
2 Fizzer 302 412 285 2 100% 115 0%<br />
3 Soyrice 218 297 240 2 100% 87 0%<br />
4 FBGDragons 181 494 353 1 100% 52 0%<br />
5 NoZone 179 219 235 3 33% 220 0%<br />
6 FBGMoDogg 110 326 421 1 0% 218 0%<br />
7 Ruthless 83 410 281 2 100% -99 0%<br />
8 GuyMannington 65 311 312 2 50% 45 0%<br />
9 deweylikedonuts 55 304 304 2 50% 59 0%<br />
10 Perrin3088 52 222 217 5 60% -45 0%<br />
11 sue 50 457 340 1 100% -69 0%<br />
...<br />
<br />
==Making changes==<br />
<br />
Now that you can re-produce the existing ladder rankings, you can try making changes and seeing how they affect the results. Here’s the process:<br />
<br />
* First, ensure you are on the “ResultSet>” prompt. If you’re in “ResultSet-EloRating>”, enter a command of just “x” to go back up one.<br />
* Enter the command “reset” to clear the previous results. This ensures you’re starting from a clean slate.<br />
* Modify BayeseloLog.txt depending on what you want to try (see below).<br />
* Copy/paste the modified BayeseloLog.txt back into Bayeselo.exe to see the results. Compare to your previous run to see how they changed. <br />
<br />
== Modifying the log ==<br />
<br />
In BayeseloLog.txt, you’ll find two large sections – first, a bunch of addplayer commands, then a bunch of addresult commands.<br />
<br />
===Players===<br />
<br />
Each addplayer line corresponds to a player participating (or that has participated at one time) in the ladder. They are also numbered, starting at zero and going up.<br />
<br />
addplayer Fizzer ;0<br />
addplayer Knoebber ;1<br />
addplayer FBGDragons ;2<br />
addplayer CuChulainn ;3<br />
...<br />
addplayer Perrin3088 ;7<br />
...<br />
<br />
===Results===<br />
<br />
After the players, there are a bunch of addresult commands. Each addresult corresponds to one finished ladder game. In these numbers, we tell Bayeselo which two players fought each other, who got first pick, and who won. Let's examine this in detail.<br />
<br />
addresult 0 7 2<br />
addresult 1 4 2<br />
addresult 2 7 2<br />
addresult 3 7 0<br />
addresult 4 18 0<br />
...<br />
<br />
https://d32kaghj56y4ei.cloudfront.net/static/img/addresult.png<br />
<br />
By changing these, you can simulate new wins/losses or change existing games to see how they would affect the results.<br />
<br />
==See Also==<br />
<br />
* [[Ladders]]<br />
<br />
[[Category:Ladders|Ranks and Ratings]]</div>Fizzerhttps://www.warzone.com/wiki/Seasonal_LadderSeasonal Ladder2023-05-14T02:23:47Z<p>Fizzer: </p>
<hr />
<div>'''Seasonal Ladder''' is a Warzone [[ladder]] which was announced by Fizzer on the 23rd of November, 2011<sup class="plainlinks">[https://www.warzone.com/blog/index.php/2011/11/announcing-the-seasonal-ladder/]</sup>. Unlike the other ladders, which are never-ending grinds for top spot, the seasonal ladder is divided into a 60 days seasons, where each season will use different [[settings]]. The first season started on 9 December, 2011<sup class="plainlinks">[https://www.warzone.com/LadderSeason?ID=4000]</sup>.<br />
<br />
== Games ==<br />
Each player that plays in a season will get 20 games <sup>[[#Notes|*]]</sup>, and will never play the same opponent more than once.<br />
<br />
On the first day of a season, every player will get 4 games. Every 3 days after that, one more game is added until all players have 20 games. If a player joins the season late or leaves it early, they are not guaranteed to get 20 games. However, the ladder will try to catch them up with the crowd. It will not create games for the last 11 days of the season.<br />
<br />
=== Force-finish ===<br />
In order to ensure a winner can be declared and the rankings can be finalized, all games in a season must end by the ending date, which is exactly 60 days after it began. If a game isn't finished when the season ends, Warzone will immediately end it. The winner will be determined by adding up how many armies each player controls on the [[map]], then adding in each player's income times two.<br />
<br />
Players are expected to make a reasonable effort to finish a game before the season ends. If you try to intentionally win a game by force-finish that you would have otherwise lost, the win will be taken away from you.<br />
<br />
== Ratings ==<br />
<br />
Once you finish 7 games in a single season, you'll be awarded a rank.<br />
<br />
The ratings are determined using Bayesian ELO (Bayeselo). See [[Bayeselo]] for details about how this works and how to run your own simulations.<br />
<br />
Your rating will change based on the results of other player's games, too. For example, if you beat a player who ends up becoming the #1 player, you get the full results of beating the #1 player even if they were not #1 when you beat them. <br />
<br />
Players who play fewer than 20 games (due to leaving the ladder early or joining late) get a penalty of 65 rating points per game. It’s best to join the season before it starts and stay in it for the whole 60 days to ensure you do not receive a penalty. The penalty exists to ensure that players can't game the system by intentionally joining the season late and riding to a high-rank by getting a few lucky games.<br />
<br />
== Rules ==<br />
<br />
A player may only play on the Seasonal Ladder with one account per season. Violations will be punished with a suspension on all implicated accounts.<br />
<br />
Manipulation of the force-finish in the Seasonal Ladder is not allowed. Violations will be punished with a suspension. In egregious cases results may be modified, possibly resulting in the loss of games and/or trophies.<br />
<br />
== Notes ==<br />
<nowiki>*</nowiki> - some players may get more games, since there are cases where it's not mathematically possible to give everyone exactly the same amount without duplicates. Getting more games is neither an advantage nor disadvantage. <br />
<br />
<br />
== List of winners ==<br />
{| class="wikitable" style="text-align: left;"<br />
|-<br />
! Season !! Winner !! Started !! Template<br />
|-<br />
| Season I || Rubik87 || 12/9/2011 || ME WR Warlords on 0<br />
|-<br />
| Season II || PaniX || 2/9/2012 || ME WR Diplo-Card<br />
|-<br />
| Season III || Rubik87 || 4/13/2012 || EA&O Neutrals on 3<br />
|-<br />
| Season IV || Fizzer|| 6/19/2012 || ME SR<br />
|-<br />
| Season V || professor dead piggy || 8/21/2012 || BIV<br />
|-<br />
| Season VI || unknownsoldier || 10/22/2012 || ME WR Autodist<br />
|-<br />
| Season VII || fatality || 1/2/2013 || Heavy Earth<br />
|-<br />
| Season VIII || Heyheuhei || 3/5/2013 || MME WR Randomised Bonuses<br />
|-<br />
| Season IX || brisk • apex || 5/7/2013 || MME WR 85% Defense<br />
|-<br />
| Season X || The Duke of Ben || 7/9/2013 || 4 Castles FFA<br />
|-<br />
| Season XI || Yeon || 9/10/2013 || MME WR LD<br />
|-<br />
| Season XII || Ruthless Bastard || 11/12/2013 || Turkey LD<br />
|-<br />
| Season XIII || Krzychu || 1/15/2014 || MME LD Randomised Bonuses<br />
|-<br />
| Season XIV || Killua Zaoldyeck || 3/31/2014 || Guiroma<br />
|-<br />
| Season XV || JV || 6/10/2014 || Poland<br />
|-<br />
| Season XVI || Verzehrer || 8/12/2014 || MME No Split<br />
|-<br />
| Season XVII || Gol D. Roger || 11/4/2014 || Greece<br />
|-<br />
| Season XVIII || timon92 || 1/23/2015 || Snow Mountains<br />
|-<br />
| Season XIX || Rento || 4/22/2015 || MME MA<br />
|-<br />
| Season XX || Latnox || 7/10/2015 || MME MA LD<br />
|-<br />
| Season XXI || #Master [QB] || 9/28/2015 || Old Ladder<br />
|-<br />
| Season XXII || master of desaster || 12/10/2015 || French Brawl<br />
|-<br />
| Season XXIII || Master Jz || 2/11/2016 || MME Commanders<br />
|-<br />
| Season XXIV || MisterT || 5/16/2016 || Red Dead Redemption<br />
|-<br />
| Season XXV || timon92 || 8/15/2016 || MME Commanders LD<br />
|-<br />
| Season XXVI || USA Biches || 11/2/2016 || Floating Rocks<br />
|-<br />
| Season XXVII || master of desaster || 1/9/2017 || Elitist Africa<br />
|-<br />
| Season XXVIII || Deadman || 3/13/2017 || ME WR Commanders<br />
|-<br />
| Season XXIX || Deadman || 6/16/2017 || Eberron World<br />
|-<br />
| Season XXX || Rento || 9/3/2017 || Succession Wars<br />
|-<br />
| Season XXXI || Buns157 || 12/9/2017 || MME Commerce<br />
|-<br />
| Season XXXII || Deadman || 4/25/2018 || Biomes of America<br />
|-<br />
| Season XXXIII || NoMercy || 8/3/2018 || Volcano Island<br />
|-<br />
| Season XXXIV || rakleader || 10/29/2018 || Blitzkrieg Bork<br />
|-<br />
| Season XXXV || Leopard || 2/12/2019 || Hannibal at the Gates<br />
|-<br />
| Season XXXVI || Rufus || 5/8/2019 || Timid Lands<br />
|- <br />
| Season XXXVII || master of desaster || 8/2/2019 || EarthSea<br />
|-<br />
| Season XXXVIII || Rufus || 10/18/2019 || Strat ME <br />
|-<br />
| Season XXXIX || dry-clean-only || 1/30/2020 || Georgia Army Cap<br />
|-<br />
| Season XL || AI || 5/2/2020 || Landria<br />
|-<br />
| Season XLI || Jake || 7/26/2020 || Yorkshire Brawl<br />
|- <br />
| Season XLII || Roo || 10/22/2020 || Unicorn Island <br />
|- <br />
| Season XLIII || Rufus || 2/4/2021 || Great Lakes<br />
|- <br />
| Season XLIV || Hergul || 4/22/2021 || SE 1W<br />
|- <br />
| Season XLV || Rufus || 8/3/2021 || Númenor<br />
|- <br />
| Season XLVI || Octane || 11/7/2021 || Belarus <br />
|- <br />
| Season XLVII || TBD || 2/19/2022 || Post-Melt Antarctica <br />
|}<br />
<br />
== See also ==<br />
* [[1 v 1 Ladder]]<br />
* [[2 v 2 Ladder]]<br />
* [[3 v 3 Ladder]]<br />
* [[Real-Time Ladder]]<br />
<br />
{{Seasonal Ladder seasons}}<br />
<br />
[[Category:Ladders]]</div>Fizzerhttps://www.warzone.com/wiki/Strategic_1_v_1Strategic 1 v 12023-05-13T17:09:31Z<p>Fizzer: </p>
<hr />
<div>The '''Strategic 1 v 1''' [[Templates|template]] is one of the built-in templates to Warzone. This template was developed in 2011 to attempt to produce good settings for a two-player heads-up duel.<br />
<br />
These are the same settings used by the [[1 v 1 Ladder]] and the two 1 v 1 auto-games.<br />
<br />
==Territory Distribution==<br />
<br />
This template uses the [[Random Warlords and Random Cities|Random Warlords]] distribution option, which means that the [[territories]] available for distribution will be different for each game. Further, the use of [[wastelands]] ensures that the [[map]] is sufficiently randomized that a one-size-fits-all strategy is not possible.<br />
<br />
Here is an example of a possible map distribution using the Strategic 1 v 1 template:<br />
<br />
https://d32kaghj56y4ei.cloudfront.net/static/img/ImpallerPicks0.png<br />
<br />
In this setup, note that the green territories (one per bonus) are the ones available for starting. Each neutral starts with 2, except for the wastelands which start with 10. Further, any green territories that neither player starts in will be replaced by a 4 - these are called cities.<br />
<br />
==Newbie Tips==<br />
<br />
* You'll want to pick 6 territories. Picking beyond 6 doesn't do anything, and picking fewer than 6 could cause you to get random territories, which usually ends up bad.<br />
* Try to get your first [[bonus]] as quickly as possible. While the big +5 bonuses may look tempting, you'll be better off if you can take a smaller bonus faster and then use its income to take bigger ones.<br />
* Don't attack wastelands. Expanding as efficiently as possible is key, and spending armies on wastelands that could be spent elsewhere is inefficient.<br />
* Don't start in a bonus that has a wasteland. The bonuses you start in will be the cheapest to take, so by starting in a bonus with a wasteland you're removing that efficiency.<br />
* Although your early bonuses can be taken faster when picks are close to each other, it is usually recommended to keep your options open and try start in bonuses which lie pretty far from each other. This helps ensure that you can expand safely somewhere far from early battles as much as possible. <br />
* These games use [[Luck Modifier|Straight Round]], which means that 2v1s and 3v2s, 5v3s, and 6v4s are guaranteed wins. New players sometimes think they need to attack 1s with 3s or 2s with 5s just to be sure they win, but this isn't necessary with [[Luck Modifier|Straight Round]].<br />
<br />
==Advanced tips==<br />
===Picking territories===<br />
* Always take at least one easy bonus that is somewhat protected (two or more turns away from the enemy). You assume that your opponent will want the same spot, so pick it as your first pick.<br />
* Your second and third picks could be a balance between: easy bonuses, territories that will prevent your opponent to get a bonus that you expect him to choose.<br />
* Through your picks, you can figure out where your opponent is. It matters to stop one minute at the beginning and come up with a strategy to get the combat going in your opponent's border, not yours.<br />
* It is worth picking two warlords that are so close together that you can get a bonus in the first round. That happens in Africa and Asia, mostly. The only problem is that it might make you vulnerable, if your opponent expects you to choose that strategy.<br />
* Although 3 close picks can speed up your expansion, especially when surrounding a 5-land bonus which can be completed on turn 1, it's a very risky strategy: facing a nearby counter-pick will break your unity in the area and you won't have any other option to expand safely. Moreover, if you get 2 out of 3, most often your 2 close picks won't combine easily to gain unquestioned control of the area, that is, if the opponent can just stay alive against your 2 seeds.<br />
<br />
===Combat===<br />
* Try to figure out as fast as possible your opponent's income. That information will allow you to choose between an offensive or defensive strategy.<br />
* Most of the time, it is worth growing - either slowly or quickly - even if you are fighting your opponent. It increases your income and gives you [[cards]].<br />
<br />
==See also==<br />
<br />
* [[Ladders]]<br />
* [[1 v 1 Ladder]]<br />
* [[Templates]]<br />
<br />
[[Category:Templates]]</div>Fizzerhttps://www.warzone.com/wiki/LaddersLadders2023-05-13T17:07:55Z<p>Fizzer: </p>
<hr />
<div>Warzone ladders are competitive arenas where players compete for the highest spot on the ladder. <br />
<br />
You can find the main ladder pages by clicking the Ladders sub-tab under the Multi-Player tab. This is where players can join or leave the ladder, or see the up-to-date standings.<br />
<br />
==Ladders==<br />
Warzone currently has four ladders:<br />
<br />
* The [[1 v 1 Ladder]] (min level 48)<br />
* The [[2 v 2 Ladder]] (min level 51)<br />
* The [[3 v 3 Ladder]] (min level 54)<br />
* The [[Seasonal Ladder]] (min level 52)<br />
<br />
==How Ladders Work==<br />
<br />
In the Warzone ladders, you don't get to choose who you play against. Instead, the ladder sets up games for you. You can, however, pick how many games you'd like to be playing at any given time. <br />
<br />
Warzone ladders use ELO-based rating systems to rank players by their skill level. Based on the results of your ladder games, you will receive a rating that will be used to give you a rank on the ladder's scoreboard.<br />
<br />
== Rewards ==<br />
<br />
There are two ways to earn rewards: Holding a high rank and achieving a new league. The rank rewards are given out every Sunday to all players who have been in the ladder for the entire week prior. <br />
<br />
A gold trophy will also be awarded to any player who holds the #1 rank when rewards are given out. <br />
<br />
To see the rewards offered by any ladder, open that ladder's page and click Rewards.<br />
<br />
==Leaving the Ladder==<br />
<br />
Players are free to leave the ladder and re-join it at any time. Leaving the ladder does not delete any on-going games, it just stops new games from being created for you. Your rating continues to be updated even when you’re not participating in the ladder. However, you will not receive a rank while not in the ladder and, therefore, won’t be included on the leaderboard. If you re-join the ladder, your existing rating will be used to rank you just as it was before you left. This makes it easy to take breaks in case you’re going to be away from Warzone for a while.<br />
<br />
Note that only are only eligible to receive rewards if you stay in the ladder for the entire week leading up to the rewards being given out on Sunday.<br />
<br />
==See Also==<br />
* [[How Ladder Games are Created]]<br />
* [[Ladder Ranks and Ratings]]<br />
<br />
[[Category:Ladders]]</div>Fizzerhttps://www.warzone.com/wiki/Real-Time_LadderReal-Time Ladder2023-05-13T16:46:18Z<p>Fizzer: </p>
<hr />
<div>The '''Real-Time Ladder''' was a Warzone Ladder that existed from 2014 to 2021. It is considered to be superseded by Quickmatch, which offers a better way to be matched in real-time games.<br />
<br />
== See also ==<br />
* [[1 v 1 Ladder]]<br />
* [[2 v 2 Ladder]]<br />
* [[Seasonal Ladder]]<br />
<br />
[[Category:Ladders]]</div>Fizzerhttps://www.warzone.com/wiki/PointsPoints2023-05-13T16:43:12Z<p>Fizzer: </p>
<hr />
<div>Players can earn '''points''' by winning single-player games, multi-player games or [[tournaments]], or unlocking [[achievements]]. Points are used to gain [[levels]], which unlock additional features.<br />
<br />
If you visit https://www.warzone.com/Points, you can see how many points you have, the progress to your next level, and all points you've earned in the last 30 days. If you hover your mouse cursor over a point award, you will be shown additional details about how that number was calculated.<br />
<br />
== Points from Single-Player Games ==<br />
<br />
Defeating one of the built-in levels is worth 2,500 points the first time you defeat it. Getting a gold star on one of these levels is worth an additional 2,500 points. If you get a gold star the first time you defeat it, you'll receive the two awards together as a 5,000 point award.<br />
<br />
Community levels do not give points.<br />
<br />
== Points from Multi-Player Games ==<br />
<br />
When players win a [[ranked versus practice|ranked]] multi-player game, they are awarded points. The number of points the winner(s) are awarded is based off of a number of factors:<br />
* The number of players who didn't win the game. Winning a 3-player FFA gives (on average) twice as many points as a 1v1, since there were two losers as opposed to one. Likewise, winning a 20 player FFA gives 19 times as many points as a 1v1.<br />
* The levels of the players who didn't win the game. Defeating a player who is equal level to you gives a base of 5,000 points. Defeating a player who is 10 or more levels above you gives a base of 10,000 points. Defeating a player who is lower level than you gives fewer than 5,000 points, depending on their level.<br />
* If the winning player is over level 8, their points are also affected by how recently they've defeated this player before. Defeating the same player twice in a 10-day period reduces the points earned from that player by 50%. Defeating the same player three or more times in a 10-day period reduces the points earned from that player by 80%. <br />
* In team games, the team essentially splits the points earned from the defeated players. However, team members can also receive different amounts of points due to the above rules (if the team members are different levels or have defeated some of the opponents recently.)<br />
* Tournament games and coin games award 50% more points. Ladder games award double points. Real-time games award half as many points as multi-day games.<br />
<br />
==== Point Multipliers ====<br />
{| class="wikitable"<br />
|-<br />
! Game type<br />
! Points<br />
|-<br />
| Multi-day games<br />
| 100%<br />
|-<br />
| Tournament games<br />
| 150%<br />
|-<br />
| Ladder games<br />
| 200%<br />
|-<br />
| Real-time games<br />
| 50%<br />
|-<br />
| Coin games<br />
| 150%<br />
|}<br />
<br />
== Points from Tournaments ==<br />
<br />
The winner of a [[ranked versus practice|ranked]] tournament is awarded points based on a number of factors:<br />
* The number of players in the tournament. Winning a 128 player tournament awards, on average, twice as many points as a 64 player tournament.<br />
* The levels of the players who didn't win the tournament. Each player who is equal level to you adds 500 points. Each player who is ten levels or more above you adds 1,000 points.<br />
* If a player defeats the same opponent in tournaments multiple times within a 30 day period, the points they earn from that player are reduced by 80% for all victories after the first. This is tracked independently between games and tournaments.<br />
* If a team wins a tournament, they essentially split the points earned from all defeated players. However, team members can also receive different amounts of points due to the above rules (if the team members are different levels or have defeated some of the opponents recently in a tournament.)<br />
* In addition to the tournament points, the winner of course won a bunch of games within the tournament itself which all awarded elevated points.<br />
<br />
<br />
== See also ==<br />
* [[Levels]]<br />
* [[Hidden settings]]</div>Fizzerhttps://www.warzone.com/wiki/Mega_GamesMega Games2023-05-13T16:42:20Z<p>Fizzer: </p>
<hr />
<div>'''Mega Games''' are Warzone Classic multi-player games that can involve more than 40 players.<br />
<br />
Mega Games work just like normal games with the following exceptions:<br />
<br />
* In order to ensure every player’s territories look different on the map, new colors have been added that have patterns on them, such as horizontal lines, vertical lines, squares, circles, triangles, etc.<br />
* Mega Games automatically use open seats for filling all seats. Therefore, you can’t create a private one<br />
* Open seats never expire on Mega Games, so the game won’t ever expire from the Open Games list until it fills. The creator of a Mega Game can always start it early by using the Start Game button if they don’t want to wait for it to fill<br />
* Mega Games are automatically advertised on the Multi-Player Dashboard page, so they should get a lot of visibility to help them fill quickly<br />
* No fixed teams: they must either be an FFA or use random teams<br />
* If a custom scenario is used, it must use "randomized slots" feature to ensure that the game creator does not get any advantage over others.<br />
* No coin entry fees. Can still have a coin prize<br />
* No real-time: They must be multi-day.<br />
* No mods<br />
* They cost coins to create<br />
<br />
The option for creating a Mega Game is listed on the normal Create Multi-Player Game page, directly below “Invite via code”. This option only appears if you’re using version 5.18.0 of the app or higher and have at least 300 coins.<br />
<br />
[[Category:Game Settings]]</div>Fizzerhttps://www.warzone.com/wiki/Custom_ScenarioCustom Scenario2023-05-13T16:41:44Z<p>Fizzer: </p>
<hr />
<div>'''Custom scenarios''' (not to be confused with [[scenario distributions]]) allow game creators to specify exactly how they want their map to start, territory-by-territory. The feature unlocks at level 47 or with the Mega Strategy Pack.<br />
<br />
==Details==<br />
<br />
Game creators accomplish this by defining a slot (letters) for each player to your game, including open seats and AIs. Then, when you build the map, you can assign corresponding slots to territories, as well as the number of armies that each territory starts with.<br />
<br />
This is useful for a variety of reasons. For example: <br />
<br />
* You can give players handicaps, such as starting one player with fewer armies. This is useful when veterans want to introduce a new player to Warzone, or experienced players just want to give themselves additional challenge.<br />
* A World War I scenario where you give one player control of Germany and another gets control of France.<br />
* A Godzilla scenario where one player starts with 10,000 armies, and 20 other players are teamed up to take down Godzilla.<br />
* A hand-crafted map where bonuses that start with wastelands in them are worth additional armies per turn, giving incentive to take down the wasteland.<br />
* A finely-tuned 1v1 map created by picking which territories are available for players to pick, or making less-desirable bonuses start with fewer neutral armies, or placing wastelands in strategic positions.<br />
<br />
Custom scenarios can be used to create unfair / unbalanced games. When experimenting with variants like these, it may take several games to figure out the correct ratios to make the game fair and fun for all players. It is recommended to set games as practice games until the correct balance is reached.<br />
<br />
==Custom scenarios with manual distribution==<br />
<br />
If a game creator elects to use [[manual distribution]], then every territory assigned a slot will be available for players to pick. The slot letter actually does not matter in this case - you could just assign every territory that you want to be available to slot A.<br />
<br />
==Custom scenarios in tournaments==<br />
<br />
If a custom scenario is used in a [[tournament]] with [[automatic distribution]], the slots players receive will be randomized for each game.<br />
<br />
==Custom scenarios with open seats==<br />
<br />
If there are multiple [[open seats]] with the same slot on the same team (or all on no team), players joining the open seat will be asked if they want to receive a random slot or choose which slot they'd like to take.<br />
<br />
==Tips for entering custom scenarios quickly==<br />
<br />
On large maps, it may take a while to set up everything you need. Here are two tips for speeding this up:<br />
<br />
First, make note of the "Copy to all" button. Using this, you can set every territory on the map. This is useful when you want the majority of the territories to be the same thing. Use this when first getting started, as it will make your life easier.<br />
<br />
Second, you can use your keyboard to speed up the entering process. Follow these steps for each territory: <br />
# Click a territory<br />
# Type in the number of armies<br />
# Press "Tab"<br />
# Type the slot letter<br />
# Repeat for next territory<br />
<br />
For example, to set Brazil to 5 armies and slot G, simply click Brazil, press 5-Tab-G. Once practiced, this strategy allows you to set a territory in less than a second.<br />
<br />
==See also==<br />
<br />
* [[Initial Territory Distribution]]<br />
<br />
[[Category:Distributions]]</div>Fizzerhttps://www.warzone.com/wiki/Mod_API_Reference:GameOrderEventMod API Reference:GameOrderEvent2023-05-13T16:38:20Z<p>Fizzer: </p>
<hr />
<div><br />
'''GameOrderEvent''': Subclass of [[Mod API Reference:GameOrder|GameOrder]]. This is a generic event that can present a message or modify territories. It can also control which players can see it. It was added for use by [[Mods]] and is not used by any built-in game mechanics.<br />
* '''Message''' ''string'': <br />
* '''TerritoryModifications''' ''Array<[[Mod API Reference:TerritoryModification|TerritoryModification]]>'': Optionally, can modify territories, such as changing ownership or armies.<br />
* '''VisibleToOpt''' ''[[Mod API Reference:HashSet|HashSet]]<[[Mod API Reference:PlayerID|PlayerID]]>'': Defines who this event is visible to. Note that the player this event is assigned to can '''always''' see it, and any player who can see the effects of a territory modification can always see it as well. Set this to nil to mean that it should be visible to everyone (public). Set this to an empty list to indicate that the event should not be visible to anyone, except those that can see it by a previously mentioned rule.<br />
* '''SetResourceOpt''' ''Table<[[Mod API Reference:PlayerID|PlayerID]],Table<[[Mod API Reference:ResourceType|ResourceType]] (enum),integer>>'': Sets the resource value of a player, such as their [[gold]], to a specific value.<br />
* '''IncomeMods''' ''Array<[[Mod API Reference:IncomeMod|IncomeMod]]>'': <br />
* '''AddResourceOpt''' ''Table<[[Mod API Reference:PlayerID|PlayerID]],Table<[[Mod API Reference:ResourceType|ResourceType]] (enum),integer>>'': Adds (or subtracts with negative numbers) to the resources of a player, such as their [[gold]]. When adding or subtracting a fixed number, this is preferred over SetResourceOpt. Added in version 5.20.0.<br />
* '''AddCardPiecesOpt''' ''Table<[[Mod API Reference:PlayerID|PlayerID]],Table<[[Mod API Reference:CardID|CardID]],integer>>'': Provides a way to add (or remove with negative numbers) pieces of a card to a player. This can also add whole cards -- if the player's total cards exceeds the number of peices that make up that card as defined in the game settings, they will automatically be turned into whole cards and be given to the player. This cannot remove whole cards. For that, use RemoveWholeCardsOpt.<br />
* '''RemoveWholeCardsOpt''' ''Table<[[Mod API Reference:PlayerID|PlayerID]],[[Mod API Reference:CardInstanceID|CardInstanceID]]>'': Removes whole cards from a player. <br />
* '''JumpToActionSpotOpt''' ''[[Mod API Reference:RectangleVM|RectangleVM]]'': If specified, this will be the spot on the map that the map focuses on when the player clicks on this event in the orders list. Specify coordinates on the map, which you can get by looking at a [[Mod API Reference:TerritoryDetails|TerritoryDetails]] object.<br />
* '''ModID''' ''[[Mod API Reference:Nullable|Nullable]]<[[Mod API Reference:ModID|ModID]]>'': <br />
<br />
== Functions ==<br />
<br />
* '''WL.GameOrderEvent.Create'''('''playerID''' ''[[Mod API Reference:PlayerID|PlayerID]]'', '''message''' ''string'', '''visibleToOpt''' ''[[Mod API Reference:HashSet|HashSet]]<[[Mod API Reference:PlayerID|PlayerID]]>'', '''terrModsOpt''' ''Array<[[Mod API Reference:TerritoryModification|TerritoryModification]]>'', '''setResourcesOpt''' ''Table<[[Mod API Reference:PlayerID|PlayerID]],Table<[[Mod API Reference:ResourceType|ResourceType]] (enum),integer>>'', '''incomeModsOpt''' ''Array<[[Mod API Reference:IncomeMod|IncomeMod]]>'') (static) returns [[Mod API Reference:GameOrderEvent|GameOrderEvent]]:<br />
** playerID: Pass the ID of a player that this event pertains to. This is one of the few players where WL.PlayerID.Neutral is an allowed value. An event assigned to Neutral is suitable for events that weren't initiated by a player.<br />
[[Category:Mod API Reference]]</div>Fizzerhttps://www.warzone.com/wiki/Mod_API_Reference:GameSettingsMod API Reference:GameSettings2023-03-20T13:40:26Z<p>Fizzer: </p>
<hr />
<div><br />
'''GameSettings''': All settings the game was started with. These are never changed once the game is created.<br />
* '''AIsSurrenderWhenOneHumanRemains''' ''boolean'': <br />
* '''AllowAttackOnly''' ''boolean'': <br />
* '''AllowPercentageAttacks''' ''boolean'': <br />
* '''AllowTransferOnly''' ''boolean'': <br />
* '''AllowVacations''' ''boolean'': <br />
* '''ArmyCap''' ''[[Mod API Reference:Nullable|Nullable]]<number>'': <br />
* '''AtStartDivideIntoTeamsOf''' ''integer'': <br />
* '''AutoBootEnabled''' ''boolean'': <br />
* '''AutoBootTime''' ''[[Mod API Reference:TimeSpan|TimeSpan]]'': <br />
* '''AutoForceJoinTime''' ''[[Mod API Reference:TimeSpan|TimeSpan]]'': <br />
* '''AutomaticTerritoryDistribution''' ''boolean'': <br />
* '''AutoStartGame''' ''boolean'': <br />
* '''BankDuration''' ''integer'': <br />
* '''BankingBootTimes''' ''[[Mod API Reference:Nullable|Nullable]]<integer>'': <br />
* '''BonusArmyPer''' ''integer'': <br />
* '''BootedPlayersTurnIntoAIs''' ''boolean'': <br />
* '''CardHoldingsAndReceivesFogged''' ''boolean'': <br />
* '''CardPlayingsFogged''' ''boolean'': <br />
* '''Cards''' ''Table<[[Mod API Reference:CardID|CardID]],[[Mod API Reference:CardGame|CardGame]]>'': <br />
* '''CoinEntryFee''' ''integer'': <br />
* '''CoinPrize''' ''integer'': <br />
* '''Commanders''' ''boolean'': <br />
* '''CommerceArmyCostMultiplier''' ''[[Mod API Reference:Nullable|Nullable]]<integer>'': <br />
* '''CommerceCityBaseCost''' ''[[Mod API Reference:Nullable|Nullable]]<integer>'': <br />
* '''CommerceGame''' ''boolean'': <br />
* '''Created''' ''[[Mod API Reference:DateTime|DateTime]]'': <br />
* '''CustomScenario''' ''[[Mod API Reference:CustomScenario|CustomScenario]]'': <br />
* '''DefenseKillRate''' ''number'': <br />
* '''DirectBootTime''' ''[[Mod API Reference:TimeSpan|TimeSpan]]'': <br />
* '''DirectBootTimeSummaryString''' ''string'': <br />
* '''DistributionModeID''' ''[[Mod API Reference:DistributionID|DistributionID]]'': <br />
* '''FogLevel''' ''[[Mod API Reference:GameFogLevel|GameFogLevel]] (enum)'': <br />
* '''ForceJoinTime''' ''[[Mod API Reference:TimeSpan|TimeSpan]]'': <br />
* '''HasAnySortOfFog''' ''boolean'': <br />
* '''HasSpecialUnits''' ''boolean'': <br />
* '''InitialBank''' ''[[Mod API Reference:TimeSpan|TimeSpan]]'': <br />
* '''InitialNeutralsInDistribution''' ''integer'': <br />
* '''InitialNonDistributionArmies''' ''integer'': <br />
* '''InitialPlayerArmiesPerTerritory''' ''integer'': <br />
* '''InstantSurrender''' ''boolean'': <br />
* '''IsArchived''' ''boolean'': <br />
* '''IsCoinsGame''' ''boolean'': <br />
* '''IsCustomCoinGame''' ''boolean'': <br />
* '''IsTournamentLadderQuickmatchOrClanWar''' ''boolean'': <br />
* '''KillRatesAreModified''' ''boolean'': <br />
* '''LadderID''' ''[[Mod API Reference:Nullable|Nullable]]<[[Mod API Reference:LadderID|LadderID]]>'': <br />
* '''LimitDistributionTerritories''' ''integer'': <br />
* '''LocalDeployments''' ''boolean'': <br />
* '''LuckModifier''' ''number'': <br />
* '''MapID''' ''[[Mod API Reference:MapID|MapID]]'': <br />
* '''MapTestingGame''' ''boolean'': <br />
* '''MaxCardsHold''' ''integer'': <br />
* '''MinimumArmyBonus''' ''integer'': <br />
* '''MinimumBootTime''' ''[[Mod API Reference:TimeSpan|TimeSpan]]'': <br />
* '''MinimumVersionRequired''' ''integer'': <br />
* '''MoveOrder''' ''[[Mod API Reference:MoveOrderEnum|MoveOrderEnum]] (enum)'': <br />
* '''MultiAttack''' ''boolean'': <br />
* '''MultiPlayer''' ''boolean'': <br />
* '''Name''' ''string'': <br />
* '''NoSplit''' ''boolean'': <br />
* '''NumberOfCardsToReceiveEachTurn''' ''integer'': <br />
* '''NumberOfWastelands''' ''integer'': <br />
* '''OffenseKillRate''' ''number'': <br />
* '''OneArmyMustStandGuardOneOrZero''' ''integer'': <br />
* '''OneArmyStandsGuard''' ''boolean'': <br />
* '''OverriddenBonuses''' ''Table<[[Mod API Reference:BonusID|BonusID]],integer>'': <br />
* '''PersonalMessage''' ''string'': <br />
* '''PrivateMessaging''' ''boolean'': <br />
* '''RankedGame''' ''boolean'': <br />
* '''RealTimeGame''' ''boolean'': <br />
* '''RoundingMode''' ''[[Mod API Reference:RoundingModeEnum|RoundingModeEnum]] (enum)'': <br />
* '''SinglePlayer''' ''boolean'': <br />
* '''StartedBy''' ''[[Mod API Reference:Nullable|Nullable]]<[[Mod API Reference:PlayerID|PlayerID]]>'': <br />
* '''StartedByInfo''' ''[[Mod API Reference:PlayerInfo2|PlayerInfo2]]'': <br />
* '''SurrenderedPlayersTurnIntoAIs''' ''boolean'': <br />
* '''TemplateIDUsed''' ''[[Mod API Reference:Nullable|Nullable]]<[[Mod API Reference:TemplateID|TemplateID]]>'': <br />
* '''TemplateName''' ''string'': <br />
* '''TimesCanComeBackFromAI''' ''integer'': <br />
* '''TournamentID''' ''[[Mod API Reference:Nullable|Nullable]]<integer>'': <br />
* '''VoteBootTime''' ''[[Mod API Reference:TimeSpan|TimeSpan]]'': <br />
* '''WastelandSize''' ''integer'':<br />
[[Category:Mod API Reference]]</div>Fizzerhttps://www.warzone.com/wiki/CheatersCheaters2023-03-01T10:26:42Z<p>Fizzer: </p>
<hr />
<div>Generally, cheating in Warzone is not possible. See [[Cheating]] for more information.<br />
<br />
However, some players feel like they encounter players who are cheating, or think that the computer-controlled AI is cheating. This page explains how to see what really happened, and therefore prove that no cheating took place.<br />
<br />
==Look at history==<br />
<br />
A common complaint is that someone deployed more armies than they could have had at that point in the game.<br />
<br />
If the game has [[fog]], you need to wait for the game to end before accusing someone of cheating. If you're impatient you can always surrender.<br />
<br />
Once the game is over, use the History button to return to that point in the game. Now that you can see everything, you can figure out exactly how they got their income by adding up the following things:<br />
<br />
* All bonuses they control (see Overridden Bonuses below).<br />
* Check the [[orders list]] to see if they played any [[reinforcement cards]] that turn.<br />
* Select Game -> Active Cards to see if any cards were in effect that may have adjusted their income (see Sanction Cards below).<br />
<br />
By adding these, you can see exactly how they got each army and prove that they did not cheat. Also open the players panel in the lower right and select Income Breakdown to see a list of everything affecting their income.<br />
<br />
==Note about AI==<br />
<br />
The computer-controlled AI plays by the same rules as human players. By adding its income using the above steps, it's easy to prove that they didn't get any advantages.<br />
<br />
Note that teammates share the same pool of cards, so on levels like the [[crazy challenge]] and [[insane challenge]], the AIs can receive reinforcement cards as early as the second turn.<br />
<br />
As a further note, the AI does not prefer to attack the human player. It treats the human in the same way as another opposing AI. In fact, the AI's code doesn't even look at the IsHuman flag anywhere (with the exception of bosses). There are some random elements to the way the AI behaves, so sometimes you'll get a game where the AI focuses more on you than other AIs just by random chance.<br />
<br />
==Multi-attack==<br />
<br />
[[Multi-attack]] is a feature that allows players to travel long distances in a single turn. New players sometimes join a multi-attack game without knowing it, and then feel that their opponents are cheating when they see them move long distances. Look for the lightning icon that indicates it's a multi-attack game.<br />
<br />
==Check the game settings==<br />
<br />
Sometimes sneaky players will change a game setting and hope that their opponents don't notice, then try to take advantage of that setting change. <br />
<br />
===Overridden bonuses===<br />
<br />
Game creators can change the value of bonuses, and someone could set a bonus to be much bigger than it is usually worth. Then they attempt to capture that bonus at the start of the game, giving them an advantage. In these games, be sure and check the settings yourself and deploy there yourself to prevent your opponents from capturing that bonus.<br />
<br />
===Negative Sanctions===<br />
<br />
The [[Sanctions Card]] can be configured to a negative percentage, which will cause a player's income to go up instead of down. You should note this in the settings, and be sure to play the card on yourself when you get one. Warzone displays a reminder in the cards panel when selected on a negative sanctions card.<br />
<br />
==Still confused?==<br />
<br />
If you still can't figure out how an opponent did what they did, feel free to post a link to the game in the [[forum]]s. The community is very helpful in explaining how Warzone works.</div>Fizzerhttps://www.warzone.com/wiki/Get_mod_performance_APIGet mod performance API2023-02-04T07:40:50Z<p>Fizzer: Created page with "The '''get mod performance API''' can be used by mod creators to see how well their mod is performing. Mod creators should strive to make these numbers as low as possible..."</p>
<hr />
<div>The '''get mod performance API''' can be used by [[mod]] creators to see how well their mod is performing. Mod creators should strive to make these numbers as low as possible.<br />
<br />
This only returns data from the last 30 days, and only returns server-side hooks (client side hooks are executed on the client and do not keep track of their performance).<br />
<br />
==Usage==<br />
<br />
Issue a GET request to https://www.warzone.com/API/GetModPerformance?ModID=XXX&APIToken=YYY<br />
<br />
Where XXX is the ID of your mod, which can be found in your mod developers console. APIToken can be retrieved using the [[Get API Token API]]. You may only enter the ID of a mod you own. The API token is optional if you're executing this via a browser where you're already signed in to Warzone.com, but it's required if you execute this in any other context.<br />
<br />
==Results==<br />
<br />
You will see JSON returned like the following:<br />
<br />
{<br />
"PerfData" : [ {<br />
"Date" : 1675214052163,<br />
"MessageType" : "SendOrders",<br />
"GameID" : 32892576,<br />
"Messages" : {"Server_AdvanceTurn_Order": {"spent": 5, "times": 189}}<br />
} ]<br />
}<br />
<br />
Each object in PerfData represents one performance event. <br />
<br />
'''Date''' tells you when the event took place. It's encoded as the number of milliseconds since Jan 1st 1970.<br />
<br />
'''MessageType''' is the type of message from the client that resulted in your mod being invoked.<br />
<br />
'''GameID''' is the ID of the multi-player game that is assocated with this event. You can view it by opening your browser to https://www.warzone.com/MultiPlayer?GameID=XXX<br />
<br />
'''Messages''' lists out all functions of your mod that were invoked. '''times''' tells you how many times this message was invoked, and '''spent''' tells you how many total milliseconds were spent over all these invocations. To get the average time per call, you can divide '''spent''' by '''times'''.<br />
<br />
[[Category:API]]</div>Fizzerhttps://www.warzone.com/wiki/Frequently_Asked_QuestionsFrequently Asked Questions2023-02-02T20:19:03Z<p>Fizzer: </p>
<hr />
<div>== Warzone Idle FAQ ==<br />
<br />
See [[Warzone Idle FAQ]]<br />
<br />
== Warzone Classic FAQ ==<br />
<br />
* [[Feedback|How can I submit feedback or suggest new features?]]<br />
* [[Basic combat|How does basic combat work?]]<br />
* [[Cards|How do cards work?]]<br />
* [[Move Order|What order do moves execute in? Who gets to go first?]]<br />
* [[Hotkeys|Are there any hotkeys to play easier?]]<br />
* [[Ranked versus Practice|What's the difference between a ranked and practice game?]]<br />
* [https://www.warzone.com/ReportBug How can I report a bug?]<br />
* [[Map Making|How do I make my own map?]]<br />
* [[Quickmatch|What are these "QM" games and how do I control them?]]<br />
* [[Linking your Game|How do I share a game?]]</div>Fizzerhttps://www.warzone.com/wiki/Public_ModsPublic Mods2023-02-01T06:06:40Z<p>Fizzer: </p>
<hr />
<div>When a player clicks the '''Change Mods''' button when creating a Warzone game, they will be shown all mods that are '''Public''' and have been approved by an administrator.<br />
<br />
If you made a mod, and want to see it approved so that the public can use it, please follow these steps:<br />
<br />
# Test it thoroughly in both single player and multi-player games. Recruit other players to help test and give you feedback to ensure it works and is free of bugs.<br />
# Ensure the way to use it and its affects are well documented and easy to understand, either in ModDescription and/or in the game creation UI.<br />
# Open the Mod Development Console, click '''Open''' next to the mod and then click the '''Request Public''' button. This will prompt you to select the test game you made in #1. <br />
<br />
After it's public, you should also check the "reports" section every once in a while. If reports show up here, it indicates your mod has a bug and you should work on fixing it.<br />
[[Category:Mod Developers Guide]]</div>Fizzerhttps://www.warzone.com/wiki/Mod_Developers_GuideMod Developers Guide2023-02-01T05:53:32Z<p>Fizzer: </p>
<hr />
<div>This page describes information necessary for making [[Mods]].<br />
<br />
This guide assumes that you know the Lua programming language. If you'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.<br />
<br />
Note that you must be a Warzone [[member]] to develop mods, as mods are a member feature.<br />
<br />
== Getting started creating a mod ==<br />
<br />
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.<br />
<br />
=== Developing with the Standalone Client ===<br />
<br />
# Open the page https://www.warzone.com/EnableModDevelopment to enable mod development for your Warzone account.<br />
# Download the [[Standalone Client]] and run it.<br />
# 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's "Download zip" button if you're not a git user)<br />
# Launch the Standalone Client, sign in. Click the "Mod Development Console" 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.<br />
# Click the "Create New Mod" button and give your mod a name.<br />
# Provide path to your folder with lua files that you downloaded in step 3.<br />
# Click Submit to create the mod.<br />
# From the single-player main menu, click "Custom Game", then scroll down and click Change Mods.<br />
# You should see the mod you created here. Check the box to turn it on and click Submit.<br />
# If you've cloned the Randomized Wastelands mod, you'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!<br />
<br />
Now you can make modifications to the lua code, press the "Reload code" button and try them out! <br />
<br />
=== Developing with direct upload from your editor ===<br />
<br />
# Open the page https://www.warzone.com/EnableModDevelopment to enable mod development for your Warzone account.<br />
# Install VS Code from https://code.visualstudio.com/ <br />
# 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's "Download zip" button if you're not a git user)<br />
# 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 "Install from VSIX" and selecting the VSIX file you downloaded.<br />
# Open the Mod Development Console at https://www.warzone.com/Mods/Develop<br />
# Click the "Create New Mod" button and give your mod a name. Ensure the "Development" box is checked. After creating it, make note of your Mod ID.<br />
# In VS Code, open the RandomizedWastelandsMod folder you downloaded earlier. Open one of the lua files in this folder.<br />
# Visit https://www.warzone.com/API/GetAPIToken and copy your API Token to the clipboard.<br />
# In VS Code, press Ctrl+Shift+P and select "Upload Mod". Enter your Mod ID you noted earlier, and paste your API Token when prompted. Ensure it says "Mod updated successfully" in the bottom right corner.<br />
# Now that your mod is updated, let'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.<br />
# If you've cloned the Randomized Wastelands mod, you'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!<br />
<br />
Now you can make modifications to the lua code, press and invoke the "Upload Mod" feature again to try them out!<br />
<br />
Be sure to read the rest of this page for essential information on mod development.<br />
<br />
== Video Tutorial == <br />
<br />
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<br />
<br />
== Hooks ==<br />
<br />
Warzone will call into a mod's lua code using what are called '''hooks'''. For example, it will call a hook named <code>Server_StartGame</code> when a game is beginning and give your mod an opportunity to change things about how the map is set up.<br />
<br />
For full details on what hooks are available, see [[Mod Hooks]].<br />
<br />
== Sharing code with "require" ==<br />
<br />
You can call the "require" function to share code between different lua files. <br />
<br />
For example, if you have utility functions in a file named 'Utilities.lua', simply write <code>require('Utilities')</code> at the top of another file to include it (omit the <code>.lua</code>).<br />
<br />
Note that all lua files must be in the same directory (subdirectories are currently not supported).<br />
<br />
== Printing Output ==<br />
<br />
In lua, you can print output with lua's <code>print</code> function. For example: <code>print("Hello, world!")</code><br />
<br />
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'll see the output appear in this window in real-time.<br />
<br />
This is useful to assist in debugging.<br />
<br />
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's easier to debug mods in single-player before moving to multi-player.<br />
<br />
== Global State ==<br />
<br />
Never assume any state will persist, unless specifically called out in the documentation. For example, don't write to a global variable in one hook and access it in another.<br />
<br />
If you try to in a single-player game, you may find that global state does persist. However, don'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 expliclty allowed.<br />
<br />
== Data Storage ==<br />
<br />
Mods can store public, private, or player-specific data within a game. See [[Mod Game Data Storage]] for details.<br />
<br />
== Mod Timeout ==<br />
<br />
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.<br />
<br />
If a game times out more than 10 times in a row, Warzone will end the game automatically.<br />
<br />
== Tips ==<br />
<br />
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're doing works, it's recommended you test in multi-player, not only before you're ready to go public, but also occasionally during your development process.<br />
<br />
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.<br />
<br />
== See Also ==<br />
* [[Mod API Reference]]<br />
* [[Mod Backwards Compatibility]]<br />
* [[Public Mods]]<br />
* [[Mod Hooks]]<br />
* [[Mod Game Data Storage]]<br />
[[Category:Mod Developers Guide]]</div>Fizzerhttps://www.warzone.com/wiki/Warzone_Idle_FAQWarzone Idle FAQ2023-01-30T08:53:12Z<p>Fizzer: </p>
<hr />
<div>'''Frequently Asked Questions''' about [[Warzone Idle]]<br />
<br />
== How can I inspect a territory without conquering it? ==<br />
<br />
Inspect one of its neighbors, such as a territory you own or a fogged territory, then click "connections list" and select it from the list.<br />
<br />
== Why is it slow? ==<br />
<br />
Warzone Idle is meant to be played in short sessions throughout your day, not in one sitting. Feel free to take a break, and come back in an hour or two. Your armies will accumulate even when you're offline.<br />
<br />
== Yes, but even then it's taking forever! ==<br />
<br />
Be sure to upgrade your army camps! Army camps are where you will get most of your armies. Also be sure to get the techs that increase your army camp production, and purchase all mercenaries.<br />
<br />
If you can't afford to do all this, see the next question.<br />
<br />
== What does AV (or any other abbreviation) mean? ==<br />
<br />
It's probably referring to an artifact, see [[Artifacts]] for more info. <br />
<br />
== How do I get money faster? ==<br />
<br />
You'll get most of your money by selling items that are made by your crafters. Be sure to keep your smelters and crafters active -- anytime they are waiting for resources, you are losing out on potential money. In general, the longer it takes to craft an item, the better investment it is, so try to keep your crafters on the slowest recipes as much as possible.<br />
<br />
Be sure to sell off any items or ore that you don't need for techs or your smelters. Selling stuff is important for maximizing money generation.<br />
<br />
== Why is there waiting? ==<br />
<br />
The recommended way to play is to check in every once in a while and re-invest your profits while you're doing other stuff. With this strategy, there's virtually no waiting involved in playing Warzone Idle.<br />
<br />
== Increased Money From Territories didn't increase my income as much as advertised ==<br />
<br />
Not all of your money/sec comes from territories -- some of it comes from bonuses. If you get the Statistics advancement, you can easily see how much of your money comes from territories versus bonuses.<br />
<br />
If you don't have the Statistics advancement yet, you can get an idea of where your money is coming from by clicking around the map. Territories and Bonuses will identify themselves in the inspect area at the bottom, and each will say how much money per second they generate.<br />
<br />
== Army Camp upgrade didn't increase my armies/sec as much as advertised ==<br />
<br />
Some increases are added together, not multiplied. For example, say you're getting 100 armies per second, and you get an upgrade of 10%. Now you're getting 110 armies per second. Then you get another upgrade of 10%, it makes your total increase 20% bringing your armies per second to 120. But if you look only at that second upgrade in isolation, you might be confused on why 110 to 120 isn't quite 10%. The answer is because the upgrades are added together with your previous upgrades, not multiplied. If you get the Statistics advancement, it will unlock the Modifiers Breakdown which allows you to see details about each modifier affecting you which makes this easier to see.<br />
<br />
== I'm out of mercenaries and all I have left to spend money on is army camps! ==<br />
<br />
A common mistake players make is buying mercenaries too early.<br />
<br />
Think of it this way: You're spending some money on mercenaries and some money on army camp upgrades. Buying mercenaries gives you armies immediately, but buying army camp upgrades gives you armies over time. Therefore, it's far better to do those army camp upgrades first and buy the mercenaries later, so your camp upgrades have more time to produce armies. Upgrading army camps when a level is almost complete is not an efficient plan.<br />
<br />
When to buy mercenaries is a balancing act and there's no sure-fire rules on when to do it. Ideally, you want to be purchasing your last mercenaries to conquer the last territory on the map.<br />
<br />
The speed at which you progress through Warzone Idle is based on your strategy, so if things are going too slow you should try revisiting your play style.<br />
<br />
== How do I gain Advancement Points (AP)? ==<br />
<br />
You can get Advancement Points by finishing levels of Warzone Idle. You can also get Advancement Points by abandoning levels partway. When you abandon a level, Warzone will tell you how much AP you can get for your partial progress. Note that this partial AP will be subtracted from how much AP you can gain the next time you play that same level.<br />
<br />
Be warned that using this abandoned method to decrease the final awarded points reduced the amount of the bonus you receive when paying the coins for a % bonus.<br />
<br />
== Any more tips? ==<br />
<br />
Once you have a bunch of AP upgrades, you should consider going back and playing previous levels again. You'll be able to clear them much more quickly than the first time, and you can earn some extra AP this way. Each level gives 25% less AP each time you beat it, so it's best to defeat each level a few times then move on.<br />
<br />
== Cheating ==<br />
<br />
Any attempts to cheat will result in your Warzone account being banned (along with any of your alts). Do not attempt to modify the game data, modify your system clock, or automate the game in any fashion except as provided within the game's normal UI. You have been warned.<br />
<br />
== Syncing Between Devices ==<br />
See [[Warzone Idle Syncing]]<br />
[[Category:Warzone Idle]]</div>Fizzerhttps://www.warzone.com/wiki/ClanClan2023-01-28T17:59:42Z<p>Fizzer: </p>
<hr />
<div>Clans are a group of people on Warzone that were introduced in update 2.2. Clans put an icon next to each clan member’s name and gives clans ways to communicate easier.<br />
<br />
Each clan gets a clan page, which works somewhat like a player’s profile page. They can upload their own image and enter the details they’d like to present. You can view all clans on the new Community -> Clans tab.<br />
<br />
When you create your own clan, you have full control over who is allowed in your clan. There’s no limit to the size of clans, and you can remove anyone at any time.<br />
<br />
Making a clan costs $9.99 or 999 [[Coins|coins]]. All clans can be viewed here: https://www.warzone.com/Clans/List<br />
<br />
[[Category:Community]]</div>Fizzerhttps://www.warzone.com/wiki/Mod_API_Reference:GameOrderCustomMod API Reference:GameOrderCustom2022-12-28T14:00:35Z<p>Fizzer: </p>
<hr />
<div>'''GameOrderCustom''': Subclass of [[Mod API Reference:GameOrder|GameOrder]]. This order does nothing on its own, but it can be used by mods for custom orders. GameOrderCustom is typically sent up from clients to the server, in contrast to [[Mod API Reference:GameOrderEvent|GameOrderEvent]] which is typically sent down from the server to clients.<br />
<br />
In order to make sure your mod doesn't break when used in conjunction with other mods, you should prepend a unique string (such as the name of your mod plus an underscore) to the Payload. When reading a GameOrderCustom, check if the payload starts with your unique string, and if it doesn't it means this order isn't one your mod made and you should ignore it. If you act on another mod's messages, or skip them, it will create unexpected behavior for your mod or another mod.<br />
<br />
* '''Message''' ''string'': The message that will appear in the orders list. This is what players see.<br />
* '''Payload''' ''string'': Data the mod wishes to store along with this order, but does not want players to see.<br />
* '''CostOpt''' ''Table<[[Mod API Reference:ResourceType|ResourceType]] (enum),integer>'': Defines how much gold the order will cost the player in a [[Commerce]] game. This should only be set in commerce games. If CostOpt is set to nil, then it's assumed to be the same as having a cost of 0. The game will take care of taking the player's resources away correctly, both on the client and server, when inserting an order with a cost into their orders list.<br />
* '''OccursInPhaseOpt''' ''[[Mod API Reference:Nullable|Nullable]]<[[Mod API Reference:TurnPhase|TurnPhase]] (enum)>'': If not nil, then orders will be forced to be placed in this phase. Players will not be able to move this order above an order of a lower phase, or below an order of a higher phase. Added in v5.22.0.<br />
<br />
== Functions ==<br />
<br />
* '''WL.GameOrderCustom.Create'''('''playerID''' ''[[Mod API Reference:PlayerID|PlayerID]]'', '''message''' ''string'', '''payload''' ''string'', '''costOpt''' ''Table<[[Mod API Reference:ResourceType|ResourceType]] (enum),integer>'') (static) returns [[Mod API Reference:GameOrderCustom|GameOrderCustom]]:<br />
[[Category:Mod API Reference]]</div>Fizzerhttps://www.warzone.com/wiki/Mod_API_Reference:TerritoryModificationMod API Reference:TerritoryModification2022-12-28T13:59:28Z<p>Fizzer: </p>
<hr />
<div>'''TerritoryModification''': <br />
* '''TerritoryID''' ''[[Mod API Reference:TerritoryID|TerritoryID]]'':<br />
* '''AddSpecialUnits''' ''Array<[[Mod API Reference:SpecialUnit|SpecialUnit]]>'': <br />
* '''SetArmiesTo''' ''[[Mod API Reference:Nullable|Nullable]]<integer>'': Sets the number of armies on the territory to this number.<br />
* '''AddArmies''' ''[[Mod API Reference:Nullable|Nullable]]<integer>'': Adds (or removes with negative numbers) armies from the territory. When adding or removing a specific number, this is preferred over SetArmiesTo since it promotes compatibility with other mods.<br />
* '''SetOwnerOpt''' ''[[Mod API Reference:Nullable|Nullable]]<[[Mod API Reference:PlayerID|PlayerID]]>'': <br />
* '''SetStructuresOpt''' ''Table<[[Mod API Reference:StructureType|StructureType]] (enum),integer>'': Sets the number of structures, such as [[cities]], on this territory. Nil to simply make no changes.<br />
* '''AddStructuresOpt''' ''Table<[[Mod API Reference:StructureType|StructureType]] (enum),integer>'': Adds (or removes with negative numbers) structures, such as [[cities]], on this territory. When adding or removing a specific number of structures, this is preferred over SetStructuresOpt since it promotes compatibility with other mods.<br />
* '''RemoveSpecialUnitsOpt''' ''[[Mod API Reference:HashSet|HashSet]]<[[Mod API Reference:Guid|Guid]]>'': Specifies the IDs of special units you want removed (deleted) from this territory. Added in v5.22.0.<br />
<br />
== Functions ==<br />
<br />
* '''WL.TerritoryModification.Create'''('''terrID''' ''[[Mod API Reference:TerritoryID|TerritoryID]]'') (static) returns [[Mod API Reference:TerritoryModification|TerritoryModification]]:<br />
[[Category:Mod API Reference]]</div>Fizzerhttps://www.warzone.com/wiki/Mod_API_Reference:Boss4Mod API Reference:Boss42022-12-28T13:39:39Z<p>Fizzer: </p>
<hr />
<div>'''Boss4''': Subclass of [[Mod API Reference:SpecialUnit|SpecialUnit]]<br />
* '''Health''' ''integer'': <br />
* '''Power''' ''integer'':<br />
* '''CombatOrder''' ''integer'': Added in v5.22.2<br />
<br />
== Functions ==<br />
<br />
* '''WL.Boss4.CreateForScenario'''() (static) returns [[Mod API Reference:Boss4|Boss4]]: Creates this special unit for use in a custom scenario.<br />
* '''WL.Boss4.Create'''('''playerID''' ''[[Mod API Reference:PlayerID|PlayerID]]'') (static) returns [[Mod API Reference:Boss4|Boss4]]: Creates this special unit for use in a standing.<br />
[[Category:Mod API Reference]]</div>Fizzerhttps://www.warzone.com/wiki/Mod_API_Reference:Boss3Mod API Reference:Boss32022-12-28T13:39:34Z<p>Fizzer: </p>
<hr />
<div>'''Boss3''': Subclass of [[Mod API Reference:SpecialUnit|SpecialUnit]]<br />
* '''Power''' ''integer'': <br />
* '''Stage''' ''integer'':<br />
* '''CombatOrder''' ''integer'': Added in v5.22.2<br />
<br />
== Functions ==<br />
<br />
* '''WL.Boss3.CreateForScenario'''() (static) returns [[Mod API Reference:Boss3|Boss3]]: Creates this special unit for use in a custom scenario.<br />
* '''WL.Boss3.Create'''('''playerID''' ''[[Mod API Reference:PlayerID|PlayerID]]'', '''stage''' ''integer'') (static) returns [[Mod API Reference:Boss3|Boss3]]: Creates this special unit for use in a standing.<br />
[[Category:Mod API Reference]]</div>Fizzerhttps://www.warzone.com/wiki/Mod_API_Reference:Boss2Mod API Reference:Boss22022-12-28T13:39:28Z<p>Fizzer: </p>
<hr />
<div>'''Boss2''': Subclass of [[Mod API Reference:SpecialUnit|SpecialUnit]]<br />
* '''Power''' ''integer'': <br />
* '''Stage''' ''integer'':<br />
* '''CombatOrder''' ''integer'': Added in v5.22.2<br />
<br />
== Functions ==<br />
<br />
* '''WL.Boss2.CreateForScenario'''() (static) returns [[Mod API Reference:Boss2|Boss2]]: Creates this special unit for use in a custom scenario.<br />
* '''WL.Boss2.Create'''('''playerID''' ''[[Mod API Reference:PlayerID|PlayerID]]'') (static) returns [[Mod API Reference:Boss2|Boss2]]: Creates this special unit for use in a standing.<br />
[[Category:Mod API Reference]]</div>Fizzerhttps://www.warzone.com/wiki/Mod_API_Reference:Boss1Mod API Reference:Boss12022-12-28T13:39:22Z<p>Fizzer: </p>
<hr />
<div>'''Boss1''': Subclass of [[Mod API Reference:SpecialUnit|SpecialUnit]]<br />
* '''Health''' ''integer'':<br />
* '''CombatOrder''' ''integer'': Added in v5.22.2<br />
<br />
== Functions ==<br />
<br />
* '''WL.Boss1.CreateForScenario'''() (static) returns [[Mod API Reference:Boss1|Boss1]]: Creates this special unit for use in a custom scenario.<br />
* '''WL.Boss1.Create'''('''playerID''' ''[[Mod API Reference:PlayerID|PlayerID]]'') (static) returns [[Mod API Reference:Boss1|Boss1]]: Creates this special unit for use in a standing.<br />
[[Category:Mod API Reference]]</div>Fizzerhttps://www.warzone.com/wiki/Mod_API_Reference:CommanderMod API Reference:Commander2022-12-28T13:39:15Z<p>Fizzer: </p>
<hr />
<div>'''Commander''': Subclass of [[Mod API Reference:SpecialUnit|SpecialUnit]]<br />
* '''CombatOrder''' ''integer'': Added in v5.22.2<br />
<br />
== Functions ==<br />
<br />
* '''WL.Commander.CreateForScenario'''() (static) returns [[Mod API Reference:Commander|Commander]]: Create for use in a custom scenario.<br />
* '''WL.Commander.Create'''('''playerID''' ''[[Mod API Reference:PlayerID|PlayerID]]'') (static) returns [[Mod API Reference:Commander|Commander]]: Create for use in a Standing.<br />
[[Category:Mod API Reference]]</div>Fizzerhttps://www.warzone.com/wiki/Mod_API_Reference:CustomSpecialUnitMod API Reference:CustomSpecialUnit2022-12-28T13:38:24Z<p>Fizzer: </p>
<hr />
<div>'''CustomSpecialUnit''': Subclass of [[Mod API Reference:SpecialUnit|SpecialUnit]]<br />
* '''AttackPower''' ''integer'': The number of armies this unit adds to attacks that it's a part of.<br />
* '''AttackPowerPercentage''' ''number'': Attacks that include this unit have their power multiplied by this number. For example, 1.5 would mean that if a player attacked with this unit and 20 armies, it would get a total attack power of 30 (50% more). A value of 1 (the default) has no effect.<br />
* '''CanBeAirliftedToSelf''' ''boolean'': If true, players can use the Airlift Card to move this unit around, as long as it doesn't change ownership.<br />
* '''CanBeAirliftedToTeammate''' ''boolean'': If true, players can use the Airlift Card to move this unit to a teammate.<br />
* '''CanBeGiftedWithGiftCard''' ''boolean'': If true, players can gift this unit to another player if it's on the territory they play a Gift Card on.<br />
* '''CanBeTransferredToTeammate''' ''boolean'': If true, players can transfer this unit to a teammate using an attack/transfer order.<br />
* '''CombatOrder''' ''integer'': Determines which special units take damage before others if multiple special units are on the same territory. The lower the number, the sooner your special unit takes damage. A commander has a CombatOrder of 10000, so if you want your special unit to protect the commander you should use a number less than 10000. You should try to use a number that no other mod is using so that damage order is consistent. For this reason, avoid round numbers like 0, 1, or 1000, etc.<br />
* '''DamageAbsorbedWhenAttacked''' ''integer'': When this unit takes damage, it will reduce the amount of damage remaining to other units on this territory by this value. This value has no effect if the unit has a ''Health''.<br />
* '''DamageToKill''' ''integer'': The number of damage points it takes to kill this unit. This value has no effect if the unit has a ''Health'', as the health will be used instead.<br />
* '''DefensePower''' ''integer'': The number of armies this unit adds to defence when it's on a territory that's attacked.<br />
* '''DefensePowerPercentage''' ''number'': When the unit is on a territory that's attacked, the total defence power is multiplied by this number. See AttackPowerPercentage.<br />
* '''Health''' ''[[Mod API Reference:Nullable|Nullable]]<integer>'': When not nil, this defines the health of the unit. The unit will automatically reduce its health when it's part of combat where it receives damage, and automatically die if the health goes below 1.<br />
* '''ImageFilename''' ''string'': The name of a png file in the SpecialUnitImages/ folder of the mod. This image must be a png and must be no bigger than 60x100 pixels. Mods may have up to 5 SpecialUnitImages.<br />
* '''IncludeABeforeName''' ''boolean'': If true, Warzone will automatically put the word "A" before the name of this unit. For example, if Name is "Tank", and IncludeABeforeName, Warzone will use "a Tank" or "A Tank" as necessary in places where it makes sense to include the "a", and leave off the "a" in places where it makes sense to leave it off.<br />
* '''IsVisibleToAllPlayers''' ''boolean'': If true, the territory this unit is on will always be visible to all players in the game, even if that spot would normally be fogged.<br />
* '''ModData''' ''string'': Has no effect. This is just a place for mods to place data if they want to store something along with the unit.<br />
* '''ModID''' ''[[Mod API Reference:Nullable|Nullable]]<[[Mod API Reference:ModID|ModID]]>'': The ID of the mod that created this unit.<br />
* '''Name''' ''string'': The name of the unit, which is shown to players.<br />
* '''TextOverHeadOpt''' ''string'': A string that will show above the unit's head on the map. If the unit has a ''Health'' and this field is left at nil, the unit's health is automatically put over its head.<br />
<br />
It is strongly advised that you limit the number of special units that a player can have to something reasonable, such as 3, otherwise it can easily become tedious to the player.<br />
<br />
== Creating ==<br />
<br />
Since CustomSpecialUnit is read-only, creating one requires the use of the CustomSpecialUnitBuilder class, like this:<br />
<br />
<br />
local builder = WL.CustomSpecialUnitBuilder.Create(order.PlayerID);<br />
builder.Name = 'Tank';<br />
builder.IncludeABeforeName = true;<br />
builder.ImageFilename = 'Tank.png';<br />
builder.AttackPower = 10;<br />
builder.DefensePower = 10;<br />
builder.DamageToKill = 10;<br />
builder.DamageAbsorbedWhenAttacked = 10;<br />
builder.CombatOrder = 3415;<br />
builder.CanBeGiftedWithGiftCard = true;<br />
builder.CanBeTransferredToTeammate = true;<br />
builder.CanBeAirliftedToSelf = true;<br />
builder.CanBeAirliftedToTeammate = true;<br />
builder.IsVisibleToAllPlayers = false;<br />
local unit = builder.Build();<br />
<br />
<br />
<br />
You can also clone and existing CustomSpecialUnit like this:<br />
<br />
local builder = WL.CustomSpecialUnitBuilder.CreateCopy(unit);<br />
builder.Name = 'ChangedName';<br />
local newUnit = builder.Build();<br />
<br />
<br />
'''CustomSpecialUnitBuilder''': <br />
* '''AttackPower''' ''integer'': <br />
* '''AttackPowerPercentage''' ''number'': <br />
* '''CanBeAirliftedToSelf''' ''boolean'': <br />
* '''CanBeAirliftedToTeammate''' ''boolean'': <br />
* '''CanBeGiftedWithGiftCard''' ''boolean'': <br />
* '''CanBeTransferredToTeammate''' ''boolean'': <br />
* '''CombatOrder''' ''integer'': <br />
* '''DamageAbsorbedWhenAttacked''' ''integer'': <br />
* '''DamageToKill''' ''integer'': <br />
* '''DefensePower''' ''integer'': <br />
* '''DefensePowerPercentage''' ''number'': <br />
* '''Health''' ''[[Mod API Reference:Nullable|Nullable]]<integer>'': Added in v5.22.2<br />
* '''ImageFilename''' ''string'': <br />
* '''IncludeABeforeName''' ''boolean'': <br />
* '''IsVisibleToAllPlayers''' ''boolean'': <br />
* '''ModData''' ''string'': <br />
* '''Name''' ''string'': <br />
* '''OwnerID''' ''[[Mod API Reference:PlayerID|PlayerID]]'': <br />
* '''TextOverHeadOpt''' ''string'': <br />
<br />
== Functions ==<br />
<br />
* '''WL.CustomSpecialUnitBuilder.Create'''('''ownerPlayerID''' ''[[Mod API Reference:PlayerID|PlayerID]]'') (static) returns [[Mod API Reference:CustomSpecialUnitBuilder|CustomSpecialUnitBuilder]]:<br />
* '''WL.CustomSpecialUnitBuilder.CreateCopy'''('''clone''' ''[[Mod API Reference:CustomSpecialUnit|CustomSpecialUnit]]'') (static) returns [[Mod API Reference:CustomSpecialUnitBuilder|CustomSpecialUnitBuilder]]:<br />
* '''Build'''() returns [[Mod API Reference:CustomSpecialUnit|CustomSpecialUnit]]:<br />
<br />
[[Category:Mod API Reference]]</div>Fizzerhttps://www.warzone.com/wiki/Mod_API_Reference:CustomSpecialUnitMod API Reference:CustomSpecialUnit2022-12-28T13:38:11Z<p>Fizzer: </p>
<hr />
<div>'''CustomSpecialUnit''': Subclass of [[Mod API Reference:SpecialUnit|SpecialUnit]]<br />
* '''AttackPower''' ''integer'': The number of armies this unit adds to attacks that it's a part of.<br />
* '''AttackPowerPercentage''' ''number'': Attacks that include this unit have their power multiplied by this number. For example, 1.5 would mean that if a player attacked with this unit and 20 armies, it would get a total attack power of 30 (50% more). A value of 1 (the default) has no effect.<br />
* '''CanBeAirliftedToSelf''' ''boolean'': If true, players can use the Airlift Card to move this unit around, as long as it doesn't change ownership.<br />
* '''CanBeAirliftedToTeammate''' ''boolean'': If true, players can use the Airlift Card to move this unit to a teammate.<br />
* '''CanBeGiftedWithGiftCard''' ''boolean'': If true, players can gift this unit to another player if it's on the territory they play a Gift Card on.<br />
* '''CanBeTransferredToTeammate''' ''boolean'': If true, players can transfer this unit to a teammate using an attack/transfer order.<br />
* '''CombatOrder''' ''integer'': Determines which special units take damage before others if multiple special units are on the same territory. The lower the number, the sooner your special unit takes damage. A commander has a CombatOrder of 10000, so if you want your special unit to protect the commander you should use a number less than 10000. You should try to use a number that no other mod is using so that damage order is consistent. For this reason, avoid round numbers like 0, 1, or 1000, etc.<br />
* '''DamageAbsorbedWhenAttacked''' ''integer'': When this unit takes damage, it will reduce the amount of damage remaining to other units on this territory by this value. This value has no effect if the unit has a ''Health''.<br />
* '''DamageToKill''' ''integer'': The number of damage points it takes to kill this unit. This value has no effect if the unit has a ''Health'', as the health will be used instead.<br />
* '''DefensePower''' ''integer'': The number of armies this unit adds to defence when it's on a territory that's attacked.<br />
* '''DefensePowerPercentage''' ''number'': When the unit is on a territory that's attacked, the total defence power is multiplied by this number. See AttackPowerPercentage.<br />
* '''Health''' ''[[Mod API Reference:Nullable|Nullable]]<integer>'': When not nil, this defines the health of the unit. The unit will automatically reduce its health when it's part of combat where it receives damage, and automatically die if the health goes below 1.<br />
* '''ImageFilename''' ''string'': The name of a png file in the SpecialUnitImages/ folder of the mod. This image must be a png and must be no bigger than 60x100 pixels. Mods may have up to 5 SpecialUnitImages.<br />
* '''IncludeABeforeName''' ''boolean'': If true, Warzone will automatically put the word "A" before the name of this unit. For example, if Name is "Tank", and IncludeABeforeName, Warzone will use "a Tank" or "A Tank" as necessary in places where it makes sense to include the "a", and leave off the "a" in places where it makes sense to leave it off.<br />
* '''IsVisibleToAllPlayers''' ''boolean'': If true, the territory this unit is on will always be visible to all players in the game, even if that spot would normally be fogged.<br />
* '''ModData''' ''string'': Has no effect. This is just a place for mods to place data if they want to store something along with the unit.<br />
* '''ModID''' ''[[Mod API Reference:Nullable|Nullable]]<[[Mod API Reference:ModID|ModID]]>'': The ID of the mod that created this unit.<br />
* '''Name''' ''string'': The name of the unit, which is shown to players.<br />
* '''TextOverHeadOpt''' ''string'': A string that will show above the unit's head on the map. If the unit has a ''Health'' and this field is left at nil, the unit's health is automatically put over its head.<br />
<br />
It is strongly advised that you limit the number of special units that a player can have to something reasonable, such as 3, otherwise it can easily become tedious to the player.<br />
<br />
== Creating ==<br />
<br />
Since CustomSpecialUnit is read-only, creating one requires the use of the CustomSpecialUnitBuilder class, like this:<br />
<br />
<br />
local builder = WL.CustomSpecialUnitBuilder.Create(order.PlayerID);<br />
builder.Name = 'Tank';<br />
builder.IncludeABeforeName = true;<br />
builder.ImageFilename = 'Tank.png';<br />
builder.AttackPower = 10;<br />
builder.DefensePower = 10;<br />
builder.DamageToKill = 10;<br />
builder.DamageAbsorbedWhenAttacked = 10;<br />
builder.CombatOrder = 3415;<br />
builder.CanBeGiftedWithGiftCard = true;<br />
builder.CanBeTransferredToTeammate = true;<br />
builder.CanBeAirliftedToSelf = true;<br />
builder.CanBeAirliftedToTeammate = true;<br />
builder.IsVisibleToAllPlayers = false;<br />
local unit = builder.Build();<br />
<br />
<br />
<br />
You can also clone and existing CustomSpecialUnit like this:<br />
<br />
local builder = WL.CustomSpecialUnitBuilder.CreateCopy(unit);<br />
builder.Name = 'ChangedName';<br />
local newUnit = builder.Build();<br />
<br />
<br />
'''CustomSpecialUnitBuilder''': <br />
* '''AttackPower''' ''integer'': <br />
* '''AttackPowerPercentage''' ''number'': <br />
* '''CanBeAirliftedToSelf''' ''boolean'': <br />
* '''CanBeAirliftedToTeammate''' ''boolean'': <br />
* '''CanBeGiftedWithGiftCard''' ''boolean'': <br />
* '''CanBeTransferredToTeammate''' ''boolean'': <br />
* '''CombatOrder''' ''integer'': <br />
* '''DamageAbsorbedWhenAttacked''' ''integer'': <br />
* '''DamageToKill''' ''integer'': <br />
* '''DefensePower''' ''integer'': <br />
* '''DefensePowerPercentage''' ''number'': <br />
* '''Health''' ''[[Mod API Reference:Nullable|Nullable]]<integer>'': <br />
* '''ImageFilename''' ''string'': <br />
* '''IncludeABeforeName''' ''boolean'': <br />
* '''IsVisibleToAllPlayers''' ''boolean'': <br />
* '''ModData''' ''string'': <br />
* '''Name''' ''string'': <br />
* '''OwnerID''' ''[[Mod API Reference:PlayerID|PlayerID]]'': <br />
* '''TextOverHeadOpt''' ''string'': <br />
<br />
== Functions ==<br />
<br />
* '''WL.CustomSpecialUnitBuilder.Create'''('''ownerPlayerID''' ''[[Mod API Reference:PlayerID|PlayerID]]'') (static) returns [[Mod API Reference:CustomSpecialUnitBuilder|CustomSpecialUnitBuilder]]:<br />
* '''WL.CustomSpecialUnitBuilder.CreateCopy'''('''clone''' ''[[Mod API Reference:CustomSpecialUnit|CustomSpecialUnit]]'') (static) returns [[Mod API Reference:CustomSpecialUnitBuilder|CustomSpecialUnitBuilder]]:<br />
* '''Build'''() returns [[Mod API Reference:CustomSpecialUnit|CustomSpecialUnit]]:<br />
<br />
[[Category:Mod API Reference]]</div>Fizzerhttps://www.warzone.com/wiki/Mod_Developers_GuideMod Developers Guide2022-12-28T13:36:26Z<p>Fizzer: </p>
<hr />
<div>This page describes information necessary for making [[Mods]].<br />
<br />
This guide assumes that you know the Lua programming language. If you'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.<br />
<br />
Note that you must be a Warzone [[member]] to develop mods, as mods are a member feature.<br />
<br />
== Getting started creating a mod ==<br />
<br />
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.<br />
<br />
=== Developing with the Standalone Client ===<br />
<br />
# Open the page https://www.warzone.com/EnableModDevelopment to enable mod development for your Warzone account.<br />
# Download the [[Standalone Client]] and run it.<br />
# 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's "Download zip" button if you're not a git user)<br />
# Launch the Standalone Client, sign in. Click the "Mod Development Console" 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.<br />
# Click the "Create New Mod" button and give your mod a name.<br />
# Provide path to your folder with lua files that you downloaded in step 3.<br />
# Click Submit to create the mod.<br />
# From the single-player main menu, click "Custom Game", then scroll down and click Change Mods.<br />
# You should see the mod you created here. Check the box to turn it on and click Submit.<br />
# If you've cloned the Randomized Wastelands mod, you'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!<br />
<br />
Now you can make modifications to the lua code, press the "Reload code" button and try them out! <br />
<br />
=== Developing with direct upload from your editor ===<br />
<br />
# Open the page https://www.warzone.com/EnableModDevelopment to enable mod development for your Warzone account.<br />
# Install VS Code from https://code.visualstudio.com/ <br />
# 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's "Download zip" button if you're not a git user)<br />
# 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 "Install from VSIX" and selecting the VSIX file you downloaded.<br />
# Open the Mod Development Console at https://www.warzone.com/Mods/Develop<br />
# Click the "Create New Mod" button and give your mod a name. Ensure the "Development" box is checked. After creating it, make note of your Mod ID.<br />
# In VS Code, open the RandomizedWastelandsMod folder you downloaded earlier. Open one of the lua files in this folder.<br />
# Visit https://www.warzone.com/API/GetAPIToken and copy your API Token to the clipboard.<br />
# In VS Code, press Ctrl+Shift+P and select "Upload Mod". Enter your Mod ID you noted earlier, and paste your API Token when prompted. Ensure it says "Mod updated successfully" in the bottom right corner.<br />
# Now that your mod is updated, let'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.<br />
# If you've cloned the Randomized Wastelands mod, you'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!<br />
<br />
Now you can make modifications to the lua code, press and invoke the "Upload Mod" feature again to try them out!<br />
<br />
Be sure to read the rest of this page for essential information on mod development.<br />
<br />
== Video Tutorial == <br />
<br />
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<br />
<br />
== Hooks ==<br />
<br />
Warzone will call into a mod's lua code using what are called '''hooks'''. For example, it will call a hook named <code>Server_StartGame</code> when a game is beginning and give your mod an opportunity to change things about how the map is set up.<br />
<br />
For full details on what hooks are available, see [[Mod Hooks]].<br />
<br />
== Sharing code with "require" ==<br />
<br />
You can call the "require" function to share code between different lua files. <br />
<br />
For example, if you have utility functions in a file named 'Utilities.lua', simply write <code>require('Utilities')</code> at the top of another file to include it (omit the <code>.lua</code>).<br />
<br />
Note that all lua files must be in the same directory (subdirectories are currently not supported).<br />
<br />
== Printing Output ==<br />
<br />
In lua, you can print output with lua's <code>print</code> function. For example: <code>print("Hello, world!")</code><br />
<br />
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'll see the output appear in this window in real-time.<br />
<br />
This is useful to assist in debugging.<br />
<br />
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's easier to debug mods in single-player before moving to multi-player.<br />
<br />
== Global State ==<br />
<br />
Never assume any state will persist, unless specifically called out in the documentation. For example, don't write to a global variable in one hook and access it in another.<br />
<br />
If you try to in a single-player game, you may find that global state does persist. However, don'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 expliclty allowed.<br />
<br />
== Data Storage ==<br />
<br />
Mods can store public, private, or player-specific data within a game. See [[Mod Game Data Storage]] for details.<br />
<br />
== Mod Timeout ==<br />
<br />
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.<br />
<br />
If a game times out more than 10 times in a row, Warzone will end the game automatically.<br />
<br />
== Tips ==<br />
<br />
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're doing works, it's recommended you test in multi-player, not only before you're ready to go public, but also occasionally during your development process.<br />
<br />
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.<br />
<br />
== See Also ==<br />
* [[Mod API Reference]]<br />
* [[Mod Backwards Compatibility]]<br />
* [[Promoted Mods]]<br />
* [[Mod Hooks]]<br />
* [[Mod Game Data Storage]]<br />
[[Category:Mod Developers Guide]]</div>Fizzerhttps://www.warzone.com/wiki/Mod_API_Reference:CustomSpecialUnitMod API Reference:CustomSpecialUnit2022-12-25T02:53:19Z<p>Fizzer: </p>
<hr />
<div>'''CustomSpecialUnit''': Subclass of [[Mod API Reference:SpecialUnit|SpecialUnit]]<br />
* '''AttackPower''' ''integer'': The number of armies this unit adds to attacks that it's a part of.<br />
* '''AttackPowerPercentage''' ''number'': Attacks that include this unit have their power multiplied by this number. For example, 1.5 would mean that if a player attacked with this unit and 20 armies, it would get a total attack power of 30 (50% more). A value of 1 (the default) has no effect.<br />
* '''CanBeAirliftedToSelf''' ''boolean'': If true, players can use the Airlift Card to move this unit around, as long as it doesn't change ownership.<br />
* '''CanBeAirliftedToTeammate''' ''boolean'': If true, players can use the Airlift Card to move this unit to a teammate.<br />
* '''CanBeGiftedWithGiftCard''' ''boolean'': If true, players can gift this unit to another player if it's on the territory they play a Gift Card on.<br />
* '''CanBeTransferredToTeammate''' ''boolean'': If true, players can transfer this unit to a teammate using an attack/transfer order.<br />
* '''CombatOrder''' ''integer'': Determines which special units take damage before others if multiple special units are on the same territory. The lower the number, the sooner your special unit takes damage. A commander has a CombatOrder of 10000, so if you want your special unit to protect the commander you should use a number less than 10000. You should try to use a number that no other mod is using so that damage order is consistent. For this reason, avoid round numbers like 0, 1, or 1000, etc.<br />
* '''DamageAbsorbedWhenAttacked''' ''integer'': When this unit takes damage, it will reduce the amount of damage remaining to other units on this territory by this value. This value has no effect if the unit has a ''Health''.<br />
* '''DamageToKill''' ''integer'': The number of damage points it takes to kill this unit. This value has no effect if the unit has a ''Health'', as the health will be used instead.<br />
* '''DefensePower''' ''integer'': The number of armies this unit adds to defence when it's on a territory that's attacked.<br />
* '''DefensePowerPercentage''' ''number'': When the unit is on a territory that's attacked, the total defence power is multiplied by this number. See AttackPowerPercentage.<br />
* '''Health''' ''[[Mod API Reference:Nullable|Nullable]]<integer>'': When not nil, this defines the health of the unit. The unit will automatically reduce its health when it's part of combat where it receives damage, and automatically die if the health goes below 1.<br />
* '''ImageFilename''' ''string'': The name of a png file in the SpecialUnitImages/ folder of the mod. This image must be a png and must be no bigger than 60x100 pixels. Mods may have up to 5 SpecialUnitImages.<br />
* '''IncludeABeforeName''' ''boolean'': If true, Warzone will automatically put the word "A" before the name of this unit. For example, if Name is "Tank", and IncludeABeforeName, Warzone will use "a Tank" or "A Tank" as necessary in places where it makes sense to include the "a", and leave off the "a" in places where it makes sense to leave it off.<br />
* '''IsVisibleToAllPlayers''' ''boolean'': If true, the territory this unit is on will always be visible to all players in the game, even if that spot would normally be fogged.<br />
* '''ModData''' ''string'': Has no effect. This is just a place for mods to place data if they want to store something along with the unit.<br />
* '''ModID''' ''[[Mod API Reference:Nullable|Nullable]]<[[Mod API Reference:ModID|ModID]]>'': The ID of the mod that created this unit.<br />
* '''Name''' ''string'': The name of the unit, which is shown to players.<br />
* '''TextOverHeadOpt''' ''string'': A string that will show above the unit's head on the map. If the unit has a ''Health'' and this field is left at nil, the unit's health is automatically put over its head.<br />
<br />
It is strongly advised that you limit the number of special units that a player can have to something reasonable, such as 3, otherwise it can easily become tedious to the player.<br />
<br />
== Creating ==<br />
<br />
Since CustomSpecialUnit is read-only, creating one requires the use of the CustomSpecialUnitBuilder class, like this:<br />
<br />
<br />
local builder = WL.CustomSpecialUnitBuilder.Create(order.PlayerID);<br />
builder.Name = 'Tank';<br />
builder.IncludeABeforeName = true;<br />
builder.ImageFilename = 'Tank.png';<br />
builder.AttackPower = 10;<br />
builder.DefensePower = 10;<br />
builder.DamageToKill = 10;<br />
builder.DamageAbsorbedWhenAttacked = 10;<br />
builder.CombatOrder = 3415;<br />
builder.CanBeGiftedWithGiftCard = true;<br />
builder.CanBeTransferredToTeammate = true;<br />
builder.CanBeAirliftedToSelf = true;<br />
builder.CanBeAirliftedToTeammate = true;<br />
builder.IsVisibleToAllPlayers = false;<br />
local unit = builder.Build();<br />
<br />
<br />
<br />
You can also clone and existing CustomSpecialUnit like this:<br />
<br />
local builder = WL.CustomSpecialUnitBuilder.CreateCopy(unit);<br />
builder.Name = 'ChangedName';<br />
local newUnit = builder.Build();<br />
<br />
<br />
'''CustomSpecialUnitBuilder''': <br />
* '''AttackPower''' ''integer'': <br />
* '''AttackPowerPercentage''' ''number'': <br />
* '''CanBeAirliftedToSelf''' ''boolean'': <br />
* '''CanBeAirliftedToTeammate''' ''boolean'': <br />
* '''CanBeGiftedWithGiftCard''' ''boolean'': <br />
* '''CanBeTransferredToTeammate''' ''boolean'': <br />
* '''CombatOrder''' ''integer'': <br />
* '''DamageAbsorbedWhenAttacked''' ''integer'': <br />
* '''DamageToKill''' ''integer'': <br />
* '''DefensePower''' ''integer'': <br />
* '''DefensePowerPercentage''' ''number'': <br />
* '''ImageFilename''' ''string'': <br />
* '''IncludeABeforeName''' ''boolean'': <br />
* '''IsVisibleToAllPlayers''' ''boolean'': <br />
* '''ModData''' ''string'': <br />
* '''Name''' ''string'': <br />
* '''OwnerID''' ''[[Mod API Reference:PlayerID|PlayerID]]'': <br />
* '''TextOverHeadOpt''' ''string'': <br />
<br />
== Functions ==<br />
<br />
* '''WL.CustomSpecialUnitBuilder.Create'''('''ownerPlayerID''' ''[[Mod API Reference:PlayerID|PlayerID]]'') (static) returns [[Mod API Reference:CustomSpecialUnitBuilder|CustomSpecialUnitBuilder]]:<br />
* '''WL.CustomSpecialUnitBuilder.CreateCopy'''('''clone''' ''[[Mod API Reference:CustomSpecialUnit|CustomSpecialUnit]]'') (static) returns [[Mod API Reference:CustomSpecialUnitBuilder|CustomSpecialUnitBuilder]]:<br />
* '''Build'''() returns [[Mod API Reference:CustomSpecialUnit|CustomSpecialUnit]]:<br />
<br />
[[Category:Mod API Reference]]</div>Fizzerhttps://www.warzone.com/wiki/Mod_API_Reference:GameOrderEventMod API Reference:GameOrderEvent2022-11-06T20:47:40Z<p>Fizzer: </p>
<hr />
<div><br />
'''GameOrderEvent''': Subclass of [[Mod API Reference:GameOrder|GameOrder]]. This is a generic event that can present a message or modify territories. It can also control which players can see it. It was added for use by [[Mods]] and is not used by any built-in game mechanics.<br />
* '''TerritoryModifications''' ''Array<[[Mod API Reference:TerritoryModification|TerritoryModification]]>'': Optionally, can modify territories, such as changing ownership or armies.<br />
* '''VisibleToOpt''' ''[[Mod API Reference:HashSet|HashSet]]<[[Mod API Reference:PlayerID|PlayerID]]>'': Defines who this event is visible to. Note that the player this event is assigned to can '''always''' see it, and any player who can see the effects of a territory modification can always see it as well. Set this to nil to mean that it should be visible to everyone (public). Set this to an empty list to indicate that the event should not be visible to anyone, except those that can see it by a previously mentioned rule.<br />
* '''SetResourceOpt''' ''Table<[[Mod API Reference:PlayerID|PlayerID]],Table<[[Mod API Reference:ResourceType|ResourceType]] (enum),integer>>'': Sets the resource value of a player, such as their [[gold]], to a specific value.<br />
* '''IncomeMods''' ''Array<[[Mod API Reference:IncomeMod|IncomeMod]]>'': <br />
* '''AddResourceOpt''' ''Table<[[Mod API Reference:PlayerID|PlayerID]],Table<[[Mod API Reference:ResourceType|ResourceType]] (enum),integer>>'': Adds (or subtracts with negative numbers) to the resources of a player, such as their [[gold]]. When adding or subtracting a fixed number, this is preferred over SetResourceOpt. Added in version 5.20.0.<br />
* '''AddCardPiecesOpt''' ''Table<[[Mod API Reference:PlayerID|PlayerID]],Table<[[Mod API Reference:CardID|CardID]],integer>>'': Provides a way to add (or remove with negative numbers) pieces of a card to a player. This can also add whole cards -- if the player's total cards exceeds the number of peices that make up that card as defined in the game settings, they will automatically be turned into whole cards and be given to the player. This cannot remove whole cards. For that, use RemoveWholeCardsOpt.<br />
* '''RemoveWholeCardsOpt''' ''Table<[[Mod API Reference:PlayerID|PlayerID]],[[Mod API Reference:CardInstanceID|CardInstanceID]]>'': Removes whole cards from a player. <br />
* '''JumpToActionSpotOpt''' ''[[Mod API Reference:RectangleVM|RectangleVM]]'': If specified, this will be the spot on the map that the map focuses on when the player clicks on this event in the orders list. Specify coordinates on the map, which you can get by looking at a [[Mod API Reference:TerritoryDetails|TerritoryDetails]] object.<br />
<br />
== Functions ==<br />
<br />
* '''WL.GameOrderEvent.Create'''('''playerID''' ''[[Mod API Reference:PlayerID|PlayerID]]'', '''message''' ''string'', '''visibleToOpt''' ''[[Mod API Reference:HashSet|HashSet]]<[[Mod API Reference:PlayerID|PlayerID]]>'', '''terrModsOpt''' ''Array<[[Mod API Reference:TerritoryModification|TerritoryModification]]>'', '''setResourcesOpt''' ''Table<[[Mod API Reference:PlayerID|PlayerID]],Table<[[Mod API Reference:ResourceType|ResourceType]] (enum),integer>>'', '''incomeModsOpt''' ''Array<[[Mod API Reference:IncomeMod|IncomeMod]]>'') (static) returns [[Mod API Reference:GameOrderEvent|GameOrderEvent]]:<br />
** playerID: Pass the ID of a player that this event pertains to. This is one of the few players where WL.PlayerID.Neutral is an allowed value. An event assigned to Neutral is suitable for events that weren't initiated by a player.<br />
[[Category:Mod API Reference]]</div>Fizzerhttps://www.warzone.com/wiki/Mod_Developers_GuideMod Developers Guide2022-11-05T17:40:47Z<p>Fizzer: </p>
<hr />
<div>This page describes information necessary for making [[Mods]].<br />
<br />
This guide assumes that you know the Lua programming language. If you'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.<br />
<br />
Note that you must be a Warzone [[member]] to develop mods, as mods are a member feature.<br />
<br />
== Getting started creating a mod ==<br />
<br />
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.<br />
<br />
=== Developing with the Standalone Client ===<br />
<br />
# Open the page https://www.warzone.com/EnableModDevelopment to enable mod development for your Warzone account.<br />
# Download the [[Standalone Client]] and run it.<br />
# 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's "Download zip" button if you're not a git user)<br />
# Launch the Standalone Client, sign in. Click the "Mod Development Console" 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.<br />
# Click the "Create New Mod" button and give your mod a name.<br />
# Provide path to your folder with lua files that you downloaded in step 3.<br />
# Click Submit to create the mod.<br />
# From the single-player main menu, click "Custom Game", then scroll down and click Change Mods.<br />
# You should see the mod you created here. Check the box to turn it on and click Submit.<br />
# If you've cloned the Randomized Wastelands mod, you'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!<br />
<br />
Now you can make modifications to the lua code, press the "Reload code" button and try them out! <br />
<br />
=== Developing with direct upload from your editor ===<br />
<br />
# Open the page https://www.warzone.com/EnableModDevelopment to enable mod development for your Warzone account.<br />
# Install VS Code from https://code.visualstudio.com/ <br />
# 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's "Download zip" button if you're not a git user)<br />
# 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 "Install from VSIX" and selecting the VSIX file you downloaded.<br />
# Open the Mod Development Console at https://www.warzone.com/Mods/Develop<br />
# Click the "Create New Mod" button and give your mod a name. Ensure the "Development" box is checked. After creating it, click "Edit" next to it and make note of your Mod ID.<br />
# In VS Code, open the RandomizedWastelandsMod folder you downloaded earlier. Open one of the lua files in this folder.<br />
# Visit https://www.warzone.com/API/GetAPIToken and copy your API Token to the clipboard.<br />
# In VS Code, press Ctrl+Shift+P and select "Upload Mod". Enter your Mod ID you noted earlier, and paste your API Token when prompted. Ensure it says "Mod updated successfully" in the bottom right corner.<br />
# Now that your mod is updated, let'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.<br />
# If you've cloned the Randomized Wastelands mod, you'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!<br />
<br />
Now you can make modifications to the lua code, press and invoke the "Upload Mod" feature again to try them out!<br />
<br />
Be sure to read the rest of this page for essential information on mod development.<br />
<br />
== Video Tutorial == <br />
<br />
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<br />
<br />
== Hooks ==<br />
<br />
Warzone will call into a mod's lua code using what are called '''hooks'''. For example, it will call a hook named <code>Server_StartGame</code> when a game is beginning and give your mod an opportunity to change things about how the map is set up.<br />
<br />
For full details on what hooks are available, see [[Mod Hooks]].<br />
<br />
== Sharing code with "require" ==<br />
<br />
You can call the "require" function to share code between different lua files. <br />
<br />
For example, if you have utility functions in a file named 'Utilities.lua', simply write <code>require('Utilities')</code> at the top of another file to include it (omit the <code>.lua</code>).<br />
<br />
Note that all lua files must be in the same directory (subdirectories are currently not supported).<br />
<br />
== Printing Output ==<br />
<br />
In lua, you can print output with lua's <code>print</code> function. For example: <code>print("Hello, world!")</code><br />
<br />
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'll see the output appear in this window in real-time.<br />
<br />
This is useful to assist in debugging.<br />
<br />
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's easier to debug mods in single-player before moving to multi-player.<br />
<br />
== Global State ==<br />
<br />
Never assume any state will persist, unless specifically called out in the documentation. For example, don't write to a global variable in one hook and access it in another.<br />
<br />
If you try to in a single-player game, you may find that global state does persist. However, don'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 expliclty allowed.<br />
<br />
== Data Storage ==<br />
<br />
Mods can store public, private, or player-specific data within a game. See [[Mod Game Data Storage]] for details.<br />
<br />
== Mod Timeout ==<br />
<br />
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.<br />
<br />
If a game times out more than 10 times in a row, Warzone will end the game automatically.<br />
<br />
== Tips ==<br />
<br />
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're doing works, it's recommended you test in multi-player, not only before you're ready to go public, but also occasionally during your development process.<br />
<br />
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.<br />
<br />
== See Also ==<br />
* [[Mod API Reference]]<br />
* [[Mod Backwards Compatibility]]<br />
* [[Promoted Mods]]<br />
* [[Mod Hooks]]<br />
* [[Mod Game Data Storage]]<br />
[[Category:Mod Developers Guide]]</div>Fizzerhttps://www.warzone.com/wiki/Update_Mod_APIUpdate Mod API2022-11-04T20:53:29Z<p>Fizzer: </p>
<hr />
<div>The '''Update Mod API''' can be used by [[mod]] developers to assist in updating the mod's code and assets. This API provides a way to rapidly iterate on mod development -- updating the mod's code and seeing the results in the Warzone game itself.<br />
<br />
This API is meant to be integrated into a IDE, such as Visual Studio Code, to allow for easily updating the mod.<br />
<br />
A key feature of this API is that it notifies any Warzone clients using the mod that it's out of date, and then those Warzone clients will download the updated mod automatically and immediately.<br />
<br />
==Usage==<br />
<br />
To use the API, you must first have created a development mod (not public) through the Mod Development Console. After doing that, take note of the Mod ID shown here when clicking "Edit" next to that mod. <br />
<br />
To use the API, POST some JSON to https://www.warzone.com/API/UpdateMod?ModID=###&APIToken=XXX<br />
<br />
The ID of your mod and your [[Get API Token API|API Token]] are passed on the querystring, as shown. <br />
<br />
The body of your post should be JSON that identifies all files that are to be included in your mod. Here's a sample of the format:<br />
<br />
{<br />
"files": [<br />
{<br />
"path": "Client_PresentMenuUI.lua",<br />
"content": "..."<br />
}, {<br />
"path": "Utilities.lua",<br />
"content": "..."<br />
}, {<br />
"path": "SpecialUnitImages/img.png",<br />
"content": "..."<br />
}<br />
<br />
]<br />
}<br />
<br />
<br />
The "content" field should contain the entire contents of that file encoded as a base64 string.<br />
<br />
== Compression ==<br />
<br />
If desired, you can also pass "&Compressed=1" to the end of the querystring. If this is present, then the json body you post should be compressed with 7zip. This can be useful if your mod is very large as it will save on the upload bandwidth used.<br />
<br />
<br />
[[Category:API]]</div>Fizzer