<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.warexpand.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin</id>
	<title>WarExpand Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.warexpand.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin"/>
	<link rel="alternate" type="text/html" href="https://wiki.warexpand.com/wiki/Special:Contributions/Admin"/>
	<updated>2026-08-20T06:38:21Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.warexpand.com/index.php?title=Light_Infantry&amp;diff=5</id>
		<title>Light Infantry</title>
		<link rel="alternate" type="text/html" href="https://wiki.warexpand.com/index.php?title=Light_Infantry&amp;diff=5"/>
		<updated>2026-08-19T17:42:40Z</updated>

		<summary type="html">&lt;p&gt;Admin: Register with Translate&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
{{UnitInfobox|code=light_infantry|tier=1}}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
== Light Infantry ==&lt;br /&gt;
&lt;br /&gt;
Light infantry is the cheapest land unit in WarExpand. On its own it is slow and&lt;br /&gt;
fragile, but it is the fastest unit to raise and the lowest to maintain, which&lt;br /&gt;
makes it the backbone of any early expansion.&lt;br /&gt;
&lt;br /&gt;
== Movement ==&lt;br /&gt;
&lt;br /&gt;
Light infantry is a land unit, so it can only move across land nodes. A route&lt;br /&gt;
that crosses water is clipped at the last land node before the crossing.&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
&lt;br /&gt;
Garrison a district you have just captured with light infantry: it holds ground&lt;br /&gt;
much better than it takes it, and its upkeep is the lowest of any land unit.&lt;br /&gt;
Let artillery deal the damage.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.warexpand.com/index.php?title=Template:UnitInfobox&amp;diff=4</id>
		<title>Template:UnitInfobox</title>
		<link rel="alternate" type="text/html" href="https://wiki.warexpand.com/index.php?title=Template:UnitInfobox&amp;diff=4"/>
		<updated>2026-08-19T17:41:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: Seed from wiki/seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:UnitStats|infobox|code={{{code|}}}|tier={{{tier|1}}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Renders the stat box for one unit tier, reading [[Module:Data/Units]] through [[Module:UnitStats]].&lt;br /&gt;
&lt;br /&gt;
Usage: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{UnitInfobox|code=light_infantry|tier=1}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;code&#039;&#039;&#039; — the unit code used by the game database, for example &amp;lt;code&amp;gt;light_infantry&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;heavy_tank&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;jet_fighter&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;tier&#039;&#039;&#039; — tier number, defaults to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The numbers come straight from the game&#039;s &amp;lt;code&amp;gt;units_tier&amp;lt;/code&amp;gt; table and are refreshed by &amp;lt;code&amp;gt;scripts/export-wiki-data.cjs&amp;lt;/code&amp;gt;. Do not correct them here — fix the game data and re-run the export.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.warexpand.com/index.php?title=Module:UnitStats&amp;diff=3</id>
		<title>Module:UnitStats</title>
		<link rel="alternate" type="text/html" href="https://wiki.warexpand.com/index.php?title=Module:UnitStats&amp;diff=3"/>
		<updated>2026-08-19T17:41:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: Seed from wiki/seed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Renders unit statistics from [[Module:Data/Units]].&lt;br /&gt;
--&lt;br /&gt;
-- This module is hand-written. Module:Data/Units is generated by&lt;br /&gt;
-- scripts/export-wiki-data.cjs, which refuses to write anything outside the&lt;br /&gt;
-- Module:Data/ prefix, so this file is never overwritten by the export.&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local data = mw.loadData( &#039;Module:Data/Units&#039; )&lt;br /&gt;
&lt;br /&gt;
local RESOURCES = { &#039;money&#039;, &#039;food&#039;, &#039;metal&#039;, &#039;petrol&#039;, &#039;uranium&#039; }&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;100 money, 20 metal&amp;quot;, or &amp;quot;free&amp;quot; when a unit costs nothing.&lt;br /&gt;
local function formatResources( bundle )&lt;br /&gt;
	if not bundle then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local parts = {}&lt;br /&gt;
	for _, name in ipairs( RESOURCES ) do&lt;br /&gt;
		local amount = bundle[name]&lt;br /&gt;
		if amount and amount &amp;gt; 0 then&lt;br /&gt;
			parts[#parts + 1] = string.format( &#039;%s %s&#039;, amount, name )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if #parts == 0 then&lt;br /&gt;
		return &#039;free&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat( parts, &#039;, &#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Emits nothing at all for a missing value, so empty rows never show up.&lt;br /&gt;
local function row( label, value )&lt;br /&gt;
	if value == nil or value == &#039;&#039; then&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return string.format( &#039;|-\n! %s\n| %s\n&#039;, label, value )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Stat box for one tier of one unit.&lt;br /&gt;
-- Usage: {{#invoke:UnitStats|infobox|code=light_infantry|tier=1}}&lt;br /&gt;
function p.infobox( frame )&lt;br /&gt;
	local code = frame.args.code&lt;br /&gt;
	local tier = tonumber( frame.args.tier ) or 1&lt;br /&gt;
&lt;br /&gt;
	local unit = data[code]&lt;br /&gt;
	if not unit then&lt;br /&gt;
		return string.format(&lt;br /&gt;
			&#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Unknown unit code: %s&amp;lt;/strong&amp;gt;&#039;,&lt;br /&gt;
			tostring( code )&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local stats = unit.tiers[tier]&lt;br /&gt;
	if not stats then&lt;br /&gt;
		return string.format(&lt;br /&gt;
			&#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;%s has no tier %s&amp;lt;/strong&amp;gt;&#039;,&lt;br /&gt;
			unit.name, tostring( tier )&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local cargo = ( stats.cargo_volume or 0 ) &amp;gt; 0 and stats.cargo_volume or nil&lt;br /&gt;
&lt;br /&gt;
	return table.concat( {&lt;br /&gt;
		&#039;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right; margin:0 0 1em 1em; min-width:18em&amp;quot;\n&#039;,&lt;br /&gt;
		string.format( &#039;|+ %s &amp;amp;mdash; tier %d\n&#039;, unit.name, tier ),&lt;br /&gt;
		row( &#039;Domain&#039;, unit.domain ),&lt;br /&gt;
		row( &#039;Attack&#039;, stats.attack ),&lt;br /&gt;
		row( &#039;Defense&#039;, stats.defense ),&lt;br /&gt;
		row( &#039;Speed&#039;, stats.speed ),&lt;br /&gt;
		row( &#039;Range&#039;, stats.range ),&lt;br /&gt;
		row( &#039;Volume&#039;, stats.volume ),&lt;br /&gt;
		row( &#039;Cargo capacity&#039;, cargo ),&lt;br /&gt;
		row( &#039;Build time&#039;, stats.build_time ),&lt;br /&gt;
		row( &#039;Cost&#039;, formatResources( stats.cost ) ),&lt;br /&gt;
		row( &#039;Upkeep&#039;, formatResources( stats.upkeep ) ),&lt;br /&gt;
		&#039;|}&#039;,&lt;br /&gt;
	} )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>