Page MenuHomeWildfire Games

No OneTemporary

This file is larger than 256 KB, so syntax highlighting was skipped.
Index: ps/trunk/binaries/data/mods/public/simulation/data/technologies/unlock_champion_units.json
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/data/technologies/unlock_champion_units.json (revision 24656)
+++ ps/trunk/binaries/data/mods/public/simulation/data/technologies/unlock_champion_units.json (nonexistent)
@@ -1,32 +0,0 @@
-{
- "genericName": "Unlock Champion Infantry",
- "specificName": {
- "mace": "Agēma",
- "ptol": "Agēma",
- "rome": "Regio Cohors",
- "sele": "Agēma"
- },
- "description": "Guard units (Champions) are professionals who wield the best weapons and have the best training.",
- "cost": {
- "food": 600
- },
- "requirements": {
- "all": [
- { "tech": "phase_city" },
- {
- "any": [
- { "civ": "brit" },
- { "civ": "gaul" },
- { "civ": "iber" },
- { "civ": "mace" },
- { "civ": "rome" }
- ]
- }
- ]
- },
- "requirementsTooltip": "Unlocked in City Phase.",
- "icon": "helmet_corinthian_crest.png",
- "researchTime": 60,
- "tooltip": "Unlock Champions Infantry at the Barracks.",
- "soundComplete": "interface/alarm/alarm_upgradearmory.xml"
-}
Property changes on: ps/trunk/binaries/data/mods/public/simulation/data/technologies/unlock_champion_units.json
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/json
\ No newline at end of property
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/brit/champion_infantry.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/brit/champion_infantry.xml (revision 24656)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/brit/champion_infantry.xml (nonexistent)
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Entity parent="template_unit_champion_infantry_swordsman">
- <Identity>
- <Civ>brit</Civ>
- <GenericName>Brythonic Champion</GenericName>
- <SpecificName>Argos</SpecificName>
- <SelectionGroupName>units/brit/champion_infantry</SelectionGroupName>
- <Icon>units/brit_champion_infantry.png</Icon>
- </Identity>
- <VisualActor>
- <Actor>units/britons/infantry_swordsman_c.xml</Actor>
- </VisualActor>
-</Entity>
Property changes on: ps/trunk/binaries/data/mods/public/simulation/templates/units/brit/champion_infantry.xml
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/xml
\ No newline at end of property
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/brit/champion_infantry_barracks.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/brit/champion_infantry_barracks.xml (revision 24656)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/brit/champion_infantry_barracks.xml (nonexistent)
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Entity parent="units/brit/champion_infantry">
- <Identity>
- <RequiredTechnology>unlock_champion_units</RequiredTechnology>
- </Identity>
-</Entity>
Property changes on: ps/trunk/binaries/data/mods/public/simulation/templates/units/brit/champion_infantry_barracks.xml
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/xml
\ No newline at end of property
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/gaul/champion_infantry.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/gaul/champion_infantry.xml (revision 24656)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/gaul/champion_infantry.xml (nonexistent)
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Entity parent="template_unit_champion_infantry_swordsman">
- <Identity>
- <Civ>gaul</Civ>
- <GenericName>Gallic Champion</GenericName>
- <SpecificName>Soliduros</SpecificName>
- <SelectionGroupName>units/gaul/champion_infantry</SelectionGroupName>
- <Icon>units/gaul_champion_infantry.png</Icon>
- </Identity>
- <VisualActor>
- <Actor>units/gauls/infantry_swordsman_c.xml</Actor>
- </VisualActor>
-</Entity>
Property changes on: ps/trunk/binaries/data/mods/public/simulation/templates/units/gaul/champion_infantry.xml
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/xml
\ No newline at end of property
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/gaul/champion_infantry_barracks.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/gaul/champion_infantry_barracks.xml (revision 24656)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/gaul/champion_infantry_barracks.xml (nonexistent)
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Entity parent="units/gaul/champion_infantry">
- <Identity>
- <RequiredTechnology>unlock_champion_units</RequiredTechnology>
- </Identity>
-</Entity>
Property changes on: ps/trunk/binaries/data/mods/public/simulation/templates/units/gaul/champion_infantry_barracks.xml
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/xml
\ No newline at end of property
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/iber/champion_infantry.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/iber/champion_infantry.xml (revision 24656)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/iber/champion_infantry.xml (nonexistent)
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Entity parent="template_unit_champion_infantry_swordsman">
- <Attack>
- <Melee>
- <AttackName context="Name of an attack using a single-edged sword.">Sword</AttackName>
- </Melee>
- </Attack>
- <Identity>
- <Civ>iber</Civ>
- <SpecificName>Leial Ezpatari</SpecificName>
- <Icon>units/iber_champion_infantry.png</Icon>
- <SelectionGroupName>units/iber/champion_infantry</SelectionGroupName>
- </Identity>
- <VisualActor>
- <Actor>units/iberians/infantry_swordsman_c.xml</Actor>
- </VisualActor>
-</Entity>
Property changes on: ps/trunk/binaries/data/mods/public/simulation/templates/units/iber/champion_infantry.xml
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/xml
\ No newline at end of property
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/iber/champion_infantry_barracks.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/iber/champion_infantry_barracks.xml (revision 24656)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/iber/champion_infantry_barracks.xml (nonexistent)
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Entity parent="units/iber/champion_infantry">
- <Identity>
- <RequiredTechnology>unlock_champion_units</RequiredTechnology>
- </Identity>
-</Entity>
Property changes on: ps/trunk/binaries/data/mods/public/simulation/templates/units/iber/champion_infantry_barracks.xml
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/xml
\ No newline at end of property
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/kush/champion_infantry.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/kush/champion_infantry.xml (revision 24656)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/kush/champion_infantry.xml (nonexistent)
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Entity parent="template_unit_champion_infantry_archer">
- <Identity>
- <Civ>kush</Civ>
- <Lang>napatan</Lang>
- <GenericName>Noble Archer</GenericName>
- <SpecificName>Hry pdty</SpecificName>
- <Icon>units/kush_champion_archer.png</Icon>
- </Identity>
- <VisualActor>
- <Actor>units/kushites/infantry_archer_c.xml</Actor>
- </VisualActor>
-</Entity>
Property changes on: ps/trunk/binaries/data/mods/public/simulation/templates/units/kush/champion_infantry.xml
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/xml
\ No newline at end of property
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_a.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_a.xml (revision 24656)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_a.xml (nonexistent)
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Entity parent="template_unit_champion_infantry_spearman_hoplite">
- <Identity>
- <Civ>mace</Civ>
- <Lang>greek</Lang>
- <GenericName>Macedonian Shield Bearer</GenericName>
- <SpecificName>Hypaspistḗs</SpecificName>
- <Icon>units/mace_hypaspist.png</Icon>
- <SelectionGroupName>units/mace/champion_infantry_a</SelectionGroupName>
- </Identity>
- <Promotion>
- <Entity>units/mace/champion_infantry_e</Entity>
- <RequiredXp>2000</RequiredXp>
- </Promotion>
- <VisualActor>
- <Actor>units/macedonians/infantry_spearman_c_a.xml</Actor>
- </VisualActor>
-</Entity>
Property changes on: ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_a.xml
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/xml
\ No newline at end of property
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_e.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_e.xml (revision 24656)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_e.xml (nonexistent)
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Entity parent="units/mace/champion_infantry_a">
- <Attack>
- <Melee>
- <Damage>
- <Hack op="mul">1.1</Hack>
- <Pierce op="mul">1.1</Pierce>
- </Damage>
- </Melee>
- </Attack>
- <Health>
- <Max op="mul">1.1</Max>
- </Health>
- <Identity>
- <SpecificName>Hypaspistḗs Argyraspídi</SpecificName>
- <Icon>units/mace_argyraspidai.png</Icon>
- </Identity>
- <Promotion disable=""/>
- <VisualActor>
- <Actor>units/macedonians/infantry_spearman_c_e.xml</Actor>
- </VisualActor>
-</Entity>
Property changes on: ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_e.xml
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/xml
\ No newline at end of property
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_barracks.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_barracks.xml (revision 24656)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_barracks.xml (nonexistent)
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Entity parent="units/mace/champion_infantry_a">
- <Identity>
- <RequiredTechnology>unlock_champion_units</RequiredTechnology>
- </Identity>
-</Entity>
Property changes on: ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_barracks.xml
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/xml
\ No newline at end of property
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_swordsman_barracks.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_swordsman_barracks.xml (revision 24656)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_swordsman_barracks.xml (nonexistent)
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Entity parent="units/mace/champion_infantry_swordsman">
- <Identity>
- <RequiredTechnology>unlock_champion_units</RequiredTechnology>
- </Identity>
-</Entity>
Property changes on: ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_swordsman_barracks.xml
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/xml
\ No newline at end of property
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/rome/champion_infantry.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/rome/champion_infantry.xml (revision 24656)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/rome/champion_infantry.xml (nonexistent)
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Entity parent="template_unit_champion_infantry_swordsman">
- <Health>
- <DamageVariants>
- <lightdamage>0.85</lightdamage>
- <mediumdamage>0.45</mediumdamage>
- </DamageVariants>
- </Health>
- <Identity>
- <Civ>rome</Civ>
- <Lang>latin</Lang>
- <GenericName>Italic Heavy Infantry</GenericName>
- <SpecificName>Extrāōrdinārius</SpecificName>
- <SelectionGroupName>units/rome/champion_infantry</SelectionGroupName>
- <Icon>units/rome_champion_infantry.png</Icon>
- </Identity>
- <VisualActor>
- <Actor>units/romans/infantry_swordsman_c.xml</Actor>
- </VisualActor>
-</Entity>
Property changes on: ps/trunk/binaries/data/mods/public/simulation/templates/units/rome/champion_infantry.xml
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/xml
\ No newline at end of property
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/rome/champion_infantry_barracks.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/rome/champion_infantry_barracks.xml (revision 24656)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/rome/champion_infantry_barracks.xml (nonexistent)
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Entity parent="units/rome/champion_infantry">
- <Identity>
- <RequiredTechnology>unlock_champion_units</RequiredTechnology>
- </Identity>
-</Entity>
Property changes on: ps/trunk/binaries/data/mods/public/simulation/templates/units/rome/champion_infantry_barracks.xml
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/xml
\ No newline at end of property
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/spart/champion_infantry_sword.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/spart/champion_infantry_sword.xml (revision 24656)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/spart/champion_infantry_sword.xml (nonexistent)
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Entity parent="template_unit_infantry_melee_swordsman">
- <Builder>
- <Entities datatype="tokens">
- structures/spart/syssiton
- structures/spart/theater
- -structures/{civ}/wallset_stone
- </Entities>
- </Builder>
- <Cost>
- <Resources>
- <food op="add">-10</food>
- <metal op="add">20</metal>
- </Resources>
- </Cost>
- <Identity>
- <Civ>spart</Civ>
- <Lang>greek</Lang>
- <GenericName>Skiritai Commando</GenericName>
- <SpecificName>Ékdromos Skirítēs</SpecificName>
- <Rank>Elite</Rank>
- <Icon>units/spart_champion_infantry_sword.png</Icon>
- <RequiredTechnology>phase_town</RequiredTechnology>
- </Identity>
- <Promotion disable=""/>
- <VisualActor>
- <Actor>units/spartans/infantry_swordsman_c.xml</Actor>
- </VisualActor>
-</Entity>
Property changes on: ps/trunk/binaries/data/mods/public/simulation/templates/units/spart/champion_infantry_sword.xml
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/xml
\ No newline at end of property
Index: ps/trunk/binaries/data/mods/public/simulation/templates/structures/ptol/fortress.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/structures/ptol/fortress.xml (revision 24656)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/structures/ptol/fortress.xml (revision 24657)
@@ -1,27 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_structure_military_fortress">
<Footprint>
<Square width="26.0" depth="28.0"/>
<Height>8.0</Height>
</Footprint>
<Identity>
<Civ>ptol</Civ>
<SpecificName>Phrourion</SpecificName>
- <Tooltip>Territory root. Train Champion Infantry Pikemen. Garrison Soldiers for additional arrows.</Tooltip>
</Identity>
<Obstruction>
<Static width="24.0" depth="26.0"/>
</Obstruction>
- <ProductionQueue>
- <Entities datatype="tokens">
- units/{civ}/champion_infantry_pikeman
- </Entities>
- </ProductionQueue>
<VisualActor>
<Actor>structures/ptolemies/fortress.xml</Actor>
</VisualActor>
<WallPiece>
<Length>24.0</Length>
<Indent>8.7</Indent>
</WallPiece>
</Entity>
Index: ps/trunk/binaries/data/mods/public/simulation/templates/structures/sele/fortress.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/structures/sele/fortress.xml (revision 24656)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/structures/sele/fortress.xml (revision 24657)
@@ -1,32 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_structure_military_fortress">
<Footprint>
<Square width="26.0" depth="28.0"/>
<Height>8.0</Height>
</Footprint>
<Identity>
<Civ>sele</Civ>
<SpecificName>Phrourion</SpecificName>
- <Tooltip>Territory root. Train Champion Infantry. Garrison Soldiers for additional arrows.</Tooltip>
</Identity>
<Obstruction>
<Static width="24.0" depth="26.0"/>
</Obstruction>
<ProductionQueue>
- <Entities datatype="tokens">
- units/{civ}/champion_infantry_pikeman
- units/{civ}/champion_infantry_swordsman
- </Entities>
<Technologies datatype="tokens">
- pair_unlock_champions_sele
parade_of_daphne
</Technologies>
</ProductionQueue>
<VisualActor>
<Actor>structures/seleucids/fortress.xml</Actor>
</VisualActor>
<WallPiece>
<Length>23</Length>
<Indent>7.8</Indent>
</WallPiece>
</Entity>
Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_barracks.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_barracks.xml (revision 24656)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_barracks.xml (revision 24657)
@@ -1,72 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_structure_military">
<Auras datatype="tokens">
structures/barracks_xp_trickle
</Auras>
<Cost>
<BuildTime>150</BuildTime>
<Resources>
<wood>200</wood>
<stone>100</stone>
</Resources>
</Cost>
<Footprint>
<Square width="19.0" depth="19.0"/>
<Height>12.0</Height>
</Footprint>
<GarrisonHolder>
<Max>10</Max>
<List datatype="tokens">Infantry Cavalry</List>
</GarrisonHolder>
<Health>
<Max>2000</Max>
<SpawnEntityOnDeath>decay|rubble/rubble_stone_4x4</SpawnEntityOnDeath>
</Health>
<Identity>
<GenericName>Barracks</GenericName>
<SelectionGroupName>template_structure_military_barracks</SelectionGroupName>
<Tooltip>Train Infantry and research Infantry technologies.</Tooltip>
<VisibleClasses datatype="tokens">Village Barracks</VisibleClasses>
<Icon>structures/pers_barracks.png</Icon>
<RequiredTechnology>phase_village</RequiredTechnology>
</Identity>
<Loot>
<wood>40</wood>
<stone>20</stone>
</Loot>
<Obstruction>
<Static width="17.0" depth="17.0"/>
</Obstruction>
<ProductionQueue>
<BatchTimeModifier>0.8</BatchTimeModifier>
<Entities datatype="tokens">
units/{civ}/infantry_spearman_b
units/{civ}/infantry_pikeman_b
+ units/{civ}/infantry_maceman_b
units/{civ}/infantry_axeman_b
units/{civ}/infantry_swordsman_b
units/{civ}/infantry_javelineer_b
units/{civ}/infantry_slinger_b
units/{civ}/infantry_archer_b
- units/{civ}/champion_infantry_barracks
- units/{civ}/champion_infantry_swordsman_barracks
+ units/{civ}/champion_infantry_spearman
+ units/{civ}/champion_infantry_pikeman
units/{civ}/champion_infantry_maceman
+ units/{civ}/champion_infantry_axeman
+ units/{civ}/champion_infantry_swordsman
+ units/{civ}/champion_infantry_javelineer
+ units/{civ}/champion_infantry_slinger
+ units/{civ}/champion_infantry_archer
</Entities>
<Technologies datatype="tokens">
barracks_batch_training
infantry_cost_time
- unlock_champion_units
+ unlock_champion_infantry
+ pair_unlock_champions_sele
</Technologies>
</ProductionQueue>
<Sound>
<SoundGroups>
<select>interface/select/building/sel_barracks.xml</select>
<constructed>interface/complete/building/complete_barracks.xml</constructed>
</SoundGroups>
</Sound>
<Vision>
<Range>32</Range>
</Vision>
<VisualActor>
<FoundationActor>structures/fndn_6x6.xml</FoundationActor>
</VisualActor>
</Entity>
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/gaul/champion_infantry_swordsman.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/gaul/champion_infantry_swordsman.xml (nonexistent)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/gaul/champion_infantry_swordsman.xml (revision 24657)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Entity parent="template_unit_champion_infantry_swordsman">
+ <Identity>
+ <Civ>gaul</Civ>
+ <SpecificName>Soliduros</SpecificName>
+ <Icon>units/gaul_champion_infantry.png</Icon>
+ <RequiredTechnology>unlock_champion_infantry</RequiredTechnology>
+ </Identity>
+ <VisualActor>
+ <Actor>units/gauls/infantry_swordsman_c.xml</Actor>
+ </VisualActor>
+</Entity>
Property changes on: ps/trunk/binaries/data/mods/public/simulation/templates/units/gaul/champion_infantry_swordsman.xml
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/xml
\ No newline at end of property
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/kush/champion_infantry_archer.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/kush/champion_infantry_archer.xml (nonexistent)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/kush/champion_infantry_archer.xml (revision 24657)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Entity parent="template_unit_champion_infantry_archer">
+ <Identity>
+ <Civ>kush</Civ>
+ <Lang>napatan</Lang>
+ <GenericName>Noble Archer</GenericName>
+ <SpecificName>Hry pdty</SpecificName>
+ <Icon>units/kush_champion_archer.png</Icon>
+ <RequiredTechnology>unlock_champion_infantry</RequiredTechnology>
+ </Identity>
+ <VisualActor>
+ <Actor>units/kushites/infantry_archer_c.xml</Actor>
+ </VisualActor>
+</Entity>
Property changes on: ps/trunk/binaries/data/mods/public/simulation/templates/units/kush/champion_infantry_archer.xml
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/xml
\ No newline at end of property
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_swordsman.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_swordsman.xml (revision 24656)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_swordsman.xml (revision 24657)
@@ -1,19 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_champion_infantry_swordsman">
<Attack>
<Melee>
<AttackName context="Name of an attack using a rhomphaia (ῥομφαία), a Thracian two-handed weapon capable of both thrusting and slashing.">Rhomphaia</AttackName>
</Melee>
</Attack>
<Identity>
<Civ>mace</Civ>
<Lang>greek</Lang>
<GenericName>Thracian Black Cloak</GenericName>
<SpecificName>Rhomphaiaphoros</SpecificName>
- <SelectionGroupName>units/mace/champion_infantry_swordsman</SelectionGroupName>
<Icon>units/sele_infantry_swordsman.png</Icon>
+ <RequiredTechnology>unlock_champion_infantry</RequiredTechnology>
</Identity>
<VisualActor>
<Actor>units/hellenes/infantry_swordsman_c_thracian_blackcloak.xml</Actor>
</VisualActor>
</Entity>
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/rome/champion_infantry_swordsman.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/rome/champion_infantry_swordsman.xml (nonexistent)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/rome/champion_infantry_swordsman.xml (revision 24657)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Entity parent="template_unit_champion_infantry_swordsman">
+ <Health>
+ <DamageVariants>
+ <lightdamage>0.85</lightdamage>
+ <mediumdamage>0.45</mediumdamage>
+ </DamageVariants>
+ </Health>
+ <Identity>
+ <Civ>rome</Civ>
+ <Lang>latin</Lang>
+ <GenericName>Italic Heavy Infantry</GenericName>
+ <SpecificName>Extrāōrdinārius</SpecificName>
+ <SelectionGroupName>units/rome/champion_infantry_swordsman</SelectionGroupName>
+ <Icon>units/rome_champion_infantry.png</Icon>
+ <RequiredTechnology>unlock_champion_infantry</RequiredTechnology>
+ </Identity>
+ <VisualActor>
+ <Actor>units/romans/infantry_swordsman_c.xml</Actor>
+ </VisualActor>
+</Entity>
Property changes on: ps/trunk/binaries/data/mods/public/simulation/templates/units/rome/champion_infantry_swordsman.xml
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/xml
\ No newline at end of property
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/spart/champion_infantry_swordsman.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/spart/champion_infantry_swordsman.xml (nonexistent)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/spart/champion_infantry_swordsman.xml (revision 24657)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Entity parent="template_unit_infantry_melee_swordsman">
+ <Builder>
+ <Entities datatype="tokens">
+ structures/spart/syssiton
+ structures/spart/theater
+ -structures/{civ}/wallset_stone
+ </Entities>
+ </Builder>
+ <Cost>
+ <Resources>
+ <food op="add">-10</food>
+ <metal op="add">20</metal>
+ </Resources>
+ </Cost>
+ <Identity>
+ <Civ>spart</Civ>
+ <Lang>greek</Lang>
+ <GenericName>Skiritai Commando</GenericName>
+ <SpecificName>Ékdromos Skirítēs</SpecificName>
+ <Rank>Elite</Rank>
+ <Icon>units/spart_champion_infantry_sword.png</Icon>
+ <RequiredTechnology>phase_town</RequiredTechnology>
+ </Identity>
+ <Promotion disable=""/>
+ <VisualActor>
+ <Actor>units/spartans/infantry_swordsman_c.xml</Actor>
+ </VisualActor>
+</Entity>
Property changes on: ps/trunk/binaries/data/mods/public/simulation/templates/units/spart/champion_infantry_swordsman.xml
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/xml
\ No newline at end of property
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_spearman.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_spearman.xml (nonexistent)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_spearman.xml (revision 24657)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Entity parent="template_unit_champion_infantry_spearman_hoplite">
+ <Identity>
+ <Civ>mace</Civ>
+ <Lang>greek</Lang>
+ <GenericName>Macedonian Shield Bearer</GenericName>
+ <SpecificName>Hypaspistḗs</SpecificName>
+ <SelectionGroupName>units/mace/champion_infantry_spearman</SelectionGroupName>
+ <Icon>units/mace_hypaspist.png</Icon>
+ <RequiredTechnology>unlock_champion_infantry</RequiredTechnology>
+ </Identity>
+ <Promotion>
+ <Entity>units/mace/champion_infantry_spearman_02</Entity>
+ <RequiredXp>2000</RequiredXp>
+ </Promotion>
+ <VisualActor>
+ <Actor>units/macedonians/infantry_spearman_c_a.xml</Actor>
+ </VisualActor>
+</Entity>
Property changes on: ps/trunk/binaries/data/mods/public/simulation/templates/units/mace/champion_infantry_spearman.xml
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/xml
\ No newline at end of property
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/maur/champion_infantry_maceman.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/maur/champion_infantry_maceman.xml (revision 24656)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/maur/champion_infantry_maceman.xml (revision 24657)
@@ -1,13 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_unit_champion_infantry_maceman">
<Identity>
<Civ>maur</Civ>
<GenericName>Warrior</GenericName>
<SpecificName>Yōddha</SpecificName>
<SelectionGroupName>units/maur/champion_infantry</SelectionGroupName>
<Icon>units/maur_champion_maceman.png</Icon>
+ <RequiredTechnology>unlock_champion_infantry</RequiredTechnology>
</Identity>
<VisualActor>
<Actor>units/mauryas/infantry_maceman_c.xml</Actor>
</VisualActor>
</Entity>
Index: ps/trunk/binaries/data/mods/public/simulation/templates/units/rome/champion_infantry_swordsman_02.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/templates/units/rome/champion_infantry_swordsman_02.xml (revision 24656)
+++ ps/trunk/binaries/data/mods/public/simulation/templates/units/rome/champion_infantry_swordsman_02.xml (revision 24657)
@@ -1,15 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
-<Entity parent="units/rome/champion_infantry">
+<Entity parent="units/rome/champion_infantry_swordsman">
<Identity>
<GenericName>Marian Legionary</GenericName>
<SpecificName>Legiōnārius</SpecificName>
<Icon>units/rome_champion_legion_marian.png</Icon>
</Identity>
<Promotion>
<Entity>units/rome/champion_infantry_swordsman_03</Entity>
<RequiredXp>150</RequiredXp>
</Promotion>
<VisualActor>
<Actor>units/romans/infantry_swordsman_c2.xml</Actor>
</VisualActor>
</Entity>
Index: ps/trunk/binaries/data/mods/public/maps/random/jebel_barkal.js
===================================================================
--- ps/trunk/binaries/data/mods/public/maps/random/jebel_barkal.js (revision 24656)
+++ ps/trunk/binaries/data/mods/public/maps/random/jebel_barkal.js (revision 24657)
@@ -1,1505 +1,1505 @@
/**
* For historic reference, see http://www.jebelbarkal.org/images/maps/siteplan.jpg
*/
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("heightmap");
TILE_CENTERED_HEIGHT_MAP = true;
const tSand = "desert_sand_dunes_100";
const tHilltop = ["new_savanna_dirt_c", "new_savanna_dirt_d"];
const tHillGround = ["savanna_dirt_rocks_a", "savanna_dirt_rocks_b", "savanna_dirt_rocks_c"];
const tHillCliff = ["savanna_cliff_a_red", "savanna_cliff_b_red"];
const tRoadDesert = "savanna_tile_a";
const tRoadFertileLand = "savanna_tile_a";
const tWater = "desert_sand_wet";
const tGrass = ["savanna_shrubs_a_wetseason", "alpine_grass_b_wild", "medit_shrubs_a", "steppe_grass_green_a"];
const tForestFloorFertile = pickRandom(tGrass);
const tGrassTransition1 = "desert_grass_a";
const tGrassTransition2 = "steppe_grass_dirt_66";
const tPath = "road2";
const tPathWild = "road_med";
const oAcacia = "gaia/tree/acacia";
const oPalmPath = "gaia/tree/cretan_date_palm_tall";
const oPalms = [
"gaia/tree/cretan_date_palm_tall",
"gaia/tree/cretan_date_palm_short",
"gaia/tree/palm_tropic",
"gaia/tree/date_palm",
"gaia/tree/senegal_date_palm",
"gaia/tree/medit_fan_palm"
];
const oBerryBushGrapes = "gaia/fruit/grapes";
const oBerryBushDesert = "gaia/fruit/berry_05";
const oStoneLargeDesert = "gaia/rock/desert_large";
const oStoneSmallDesert = "gaia/rock/desert_small";
const oMetalLargeDesert = "gaia/ore/desert_large";
const oMetalSmallDesert = "gaia/ore/desert_small";
const oStoneLargeFertileLand = "gaia/rock/desert_large";
const oStoneSmallFertileLand = "gaia/rock/greece_small";
const oMetalLargeFertileLand = "gaia/ore/desert_large";
const oMetalSmallFertileLand = "gaia/ore/temperate_small";
const oFoodTreasureBin = "gaia/treasure/food_bin";
const oFoodTreasureCrate = "gaia/treasure/food_crate";
const oFoodTreasureJars = "gaia/treasure/food_jars";
const oWoodTreasure = "gaia/treasure/wood";
const oStoneTreasure = "gaia/treasure/stone";
const oMetalTreasure = "gaia/treasure/metal";
const oTreasuresHill = [oWoodTreasure, oStoneTreasure, oMetalTreasure];
const oTreasuresCity = [oFoodTreasureBin, oFoodTreasureCrate, oFoodTreasureJars].concat(oTreasuresHill);
const oGiraffe = "gaia/fauna_giraffe";
const oGiraffeInfant = "gaia/fauna_giraffe_infant";
const oGazelle = "gaia/fauna_gazelle";
const oRhino = "gaia/fauna_rhinoceros_white";
const oWarthog = "gaia/fauna_boar";
const oElephant = "gaia/fauna_elephant_african_bush";
const oElephantInfant = "gaia/fauna_elephant_african_infant";
const oLion = "gaia/fauna_lion";
const oLioness = "gaia/fauna_lioness";
const oCrocodile = "gaia/fauna_crocodile_nile";
const oFish = "gaia/fish/tilapia";
const oHawk = "birds/buzzard";
const oTempleApedemak = "structures/kush/temple";
const oTempleAmun = "structures/kush/temple_amun";
const oPyramidLarge = "structures/kush/pyramid_large";
const oPyramidSmall = "structures/kush/pyramid_small";
const oWonderPtol = "structures/ptol/wonder";
const oFortress = "structures/kush/fortress";
const oTower = g_MapSettings.Size >= 256 && getDifficulty() >= 3 ? "structures/kush/defense_tower" : "structures/kush/sentry_tower";
const oHouse = "structures/kush/house";
const oMarket = "structures/kush/market";
const oForge = "structures/kush/forge";
const oBlemmyeCamp = "structures/kush/camp_blemmye";
const oNobaCamp = "structures/kush/camp_noba";
const oCivicCenter = "structures/kush/civil_centre";
const oBarracks = "structures/kush/barracks";
const oStable = "structures/kush/stable";
const oElephantStables = "structures/kush/elephant_stables";
const oWallMedium = "structures/kush/wall_medium";
const oWallGate = "structures/kush/wall_gate";
const oWallTower = "structures/kush/wall_tower";
const oPalisadeMedium = "structures/palisades_medium";
const oPalisadeGate = "structures/palisades_gate";
const oPalisadeTower = "structures/palisades_tower";
const oKushCitizenArcher = "units/kush/infantry_archer_b";
const oKushHealer = "units/kush/support_healer_b";
-const oKushChampionArcher = "units/kush/champion_infantry";
+const oKushChampionArcher = "units/kush/champion_infantry_archer";
const oKushChampions = [
oKushChampionArcher,
"units/kush/champion_infantry_amun",
"units/kush/champion_infantry_apedemak"
];
const oPtolSiege = ["units/ptol/siege_lithobolos_unpacked", "units/ptol/siege_polybolos_unpacked"];
const oTriggerPointCityPath = "trigger/trigger_point_A";
const oTriggerPointAttackerPatrol = "trigger/trigger_point_B";
const aPalmPath = actorTemplate("flora/trees/palm_cretan_date_tall");
const aRock = actorTemplate("geology/stone_savanna_med");
const aHandcart = actorTemplate("props/special/eyecandy/handcart_1");
const aPlotFence = actorTemplate("props/special/common/plot_fence");
const aStatueKush = actorTemplate("props/special/eyecandy/statues_kush");
const aStatues = [
"props/structures/kushites/statue_pedestal_rectangular",
"props/structures/kushites/statue_pedestal_rectangular_lion"
].map(actorTemplate);
const aBushesFertileLand = [
...new Array(3).fill("props/flora/shrub_spikes"),
...new Array(3).fill("props/flora/ferns"),
"props/flora/shrub_tropic_plant_a",
"props/flora/shrub_tropic_plant_b",
"props/flora/shrub_tropic_plant_flower",
"props/flora/foliagebush",
"props/flora/bush",
"props/flora/bush_medit_la",
"props/flora/bush_medit_la_lush",
"props/flora/bush_medit_me_lush",
"props/flora/bush_medit_sm",
"props/flora/bush_medit_sm_lush",
"props/flora/bush_tempe_la_lush"
].map(actorTemplate);
const aBushesCity = [
"props/flora/bush_dry_a",
"props/flora/bush_medit_la_dry",
"props/flora/bush_medit_me_dry",
"props/flora/bush_medit_sm",
"props/flora/bush_medit_sm_dry",
].map(actorTemplate);
const aBushesDesert = [
"props/flora/bush_tempe_me_dry",
"props/flora/grass_soft_dry_large_tall",
"props/flora/grass_soft_dry_small_tall"
].map(actorTemplate).concat(aBushesCity);
const aWaterDecoratives = ["props/flora/reeds_pond_lush_a"].map(actorTemplate);
const pForestPalms = [
tForestFloorFertile,
...oPalms.map(tree => tForestFloorFertile + TERRAIN_SEPARATOR + tree),
tForestFloorFertile];
const heightScale = num => num * g_MapSettings.Size / 320;
const minHeightSource = 3;
const maxHeightSource = 800;
const g_Map = new RandomMap(0, tSand);
const mapSize = g_Map.getSize();
const mapCenter = g_Map.getCenter();
const mapBounds = g_Map.getBounds();
const numPlayers = getNumPlayers();
const clHill = g_Map.createTileClass();
const clCliff = g_Map.createTileClass();
const clDesert = g_Map.createTileClass();
const clFertileLand = g_Map.createTileClass();
const clWater = g_Map.createTileClass();
const clIrrigationCanal = g_Map.createTileClass();
const clPassage = g_Map.createTileClass();
const clPlayer = g_Map.createTileClass();
const clBaseResource = g_Map.createTileClass();
const clFood = g_Map.createTileClass();
const clForest = g_Map.createTileClass();
const clRock = g_Map.createTileClass();
const clMetal = g_Map.createTileClass();
const clTreasure = g_Map.createTileClass();
const clCity = g_Map.createTileClass();
const clPath = g_Map.createTileClass();
const clPathStatues = g_Map.createTileClass();
const clPathCrossing = g_Map.createTileClass();
const clStatue = g_Map.createTileClass();
const clWall = g_Map.createTileClass();
const clGate = g_Map.createTileClass();
const clRoad = g_Map.createTileClass();
const clTriggerPointCityPath = g_Map.createTileClass();
const clTriggerPointMap = g_Map.createTileClass();
const clSoldier = g_Map.createTileClass();
const clTower = g_Map.createTileClass();
const clFortress = g_Map.createTileClass();
const clTemple = g_Map.createTileClass();
const clRitualPlace = g_Map.createTileClass();
const clPyramid = g_Map.createTileClass();
const clHouse = g_Map.createTileClass();
const clForge = g_Map.createTileClass();
const clStable = g_Map.createTileClass();
const clElephantStables = g_Map.createTileClass();
const clCivicCenter = g_Map.createTileClass();
const clBarracks = g_Map.createTileClass();
const clBlemmyeCamp = g_Map.createTileClass();
const clNobaCamp = g_Map.createTileClass();
const clMarket = g_Map.createTileClass();
const clDecorative = g_Map.createTileClass();
const riverAngle = 0.05 * Math.PI;
const hillRadius = scaleByMapSize(40, 120);
const positionPyramids = new Vector2D(fractionToTiles(0.15), fractionToTiles(0.75));
const pathWidth = 4;
const pathWidthCenter = 10;
const pathWidthSecondary = 6;
const placeNapataWall = mapSize < 192 || getDifficulty() < 2 ? false : getDifficulty() < 3 ? "napata_palisade" : "napata_wall";
const layoutFertileLandTextures = [
{
"left": fractionToTiles(0),
"right": fractionToTiles(0.04),
"terrain": createTerrain(tGrassTransition1),
"tileClass": clFertileLand
},
{
"left": fractionToTiles(0.04),
"right": fractionToTiles(0.08),
"terrain": createTerrain(tGrassTransition2),
"tileClass": clDesert
}
];
var layoutKushTemples = [
...new Array(2).fill(0).map((v, i) =>
({
"template": oTempleApedemak,
"pathOffset": new Vector2D(0, 9),
"minMapSize": i == 0 ? 320 : 0
})),
{
"template": oTempleAmun,
"pathOffset": new Vector2D(0, 12),
"minMapSize": 256
},
{
"template": oWonderPtol,
"pathOffset": new Vector2D(0, scaleByMapSize(9, 14)),
"minMapSize": 0
},
{
"template": oTempleAmun,
"pathOffset": new Vector2D(0, 12),
"minMapSize": 256
},
...new Array(2).fill(0).map((v, i) =>
({
"template": oTempleApedemak,
"pathOffset": new Vector2D(0, 9),
"minMapSize": i == 0 ? 320 : 0
}))
].filter(temple => mapSize >= temple.minMapSize);
/**
* The buildings are set as uncapturable, otherwise the player would gain the buildings via root territory and can delete them without effort.
* Keep the entire city uncapturable as a consistent property of the city.
*/
const layoutKushCity = [
{
"templateName": "uncapturable|" + oHouse,
"difficulty": "Very Easy",
"painters": new TileClassPainter(clHouse)
},
{
"templateName": oFortress,
"difficulty": "Medium",
"constraints": [avoidClasses(clFortress, 25), new NearTileClassConstraint(clPath, 8)],
"painters": new TileClassPainter(clFortress)
},
{
"templateName": oCivicCenter,
"difficulty": "Easy",
"constraints": [avoidClasses(clCivicCenter, 60), new NearTileClassConstraint(clPath, 8)],
"painters": new TileClassPainter(clCivicCenter)
},
{
"templateName": oElephantStables,
"difficulty": "Easy",
"constraints": avoidClasses(clElephantStables, 10),
"painters": new TileClassPainter(clElephantStables)
},
{
"templateName": oStable,
"difficulty": "Easy",
"constraints": avoidClasses(clStable, 20),
"painters": new TileClassPainter(clStable)
},
{
"templateName": oBarracks,
"difficulty": "Easy",
"constraints": avoidClasses(clBarracks, 12),
"painters": new TileClassPainter(clBarracks)
},
{
"templateName": oTower,
"difficulty": "Easy",
"constraints": avoidClasses(clTower, 17),
"painters": new TileClassPainter(clTower)
},
{
"templateName": "uncapturable|" + oMarket,
"difficulty": "Very Easy",
"constraints": avoidClasses(clMarket, 15),
"painters": new TileClassPainter(clMarket)
},
{
"templateName": "uncapturable|" + oForge,
"difficulty": "Very Easy",
"constraints": avoidClasses(clForge, 30),
"painters": new TileClassPainter(clForge)
},
{
"templateName": oNobaCamp,
"difficulty": "Easy",
"constraints": avoidClasses(clNobaCamp, 30),
"painters": new TileClassPainter(clNobaCamp)
},
{
"templateName": oBlemmyeCamp,
"difficulty": "Easy",
"constraints": avoidClasses(clBlemmyeCamp, 30),
"painters": new TileClassPainter(clBlemmyeCamp)
}
].filter(building => getDifficulty() >= getDifficulties().find(difficulty => difficulty.Name == building.difficulty).Difficulty);
g_WallStyles.napata_wall = {
"short": readyWallElement("uncapturable|" + oWallMedium),
"medium": readyWallElement("uncapturable|" + oWallMedium),
"tower": readyWallElement("uncapturable|" + oWallTower),
"gate": readyWallElement("uncapturable|" + oWallGate),
"overlap": 0.05
};
g_WallStyles.napata_palisade = {
"short": readyWallElement("uncapturable|" + oPalisadeMedium),
"medium": readyWallElement("uncapturable|" + oPalisadeMedium),
"tower": readyWallElement("uncapturable|" + oPalisadeTower),
"gate": readyWallElement("uncapturable|" + oPalisadeGate),
"overlap": 0.05
};
Engine.SetProgress(10);
g_Map.log("Loading hill heightmap");
createArea(
new MapBoundsPlacer(),
new HeightmapPainter(
translateHeightmap(
new Vector2D(-12, scaleByMapSize(-12, -25)),
undefined,
convertHeightmap1Dto2D(Engine.LoadMapTerrain("maps/random/jebel_barkal.pmp").height)),
minHeightSource,
maxHeightSource));
const heightDesert = g_Map.getHeight(mapCenter);
const heightFertileLand = heightDesert - heightScale(2);
const heightShoreline = heightFertileLand - heightScale(0.5);
const heightWaterLevel = heightFertileLand - heightScale(3);
const heightPassage = heightWaterLevel - heightScale(1.5);
const heightIrrigationCanal = heightWaterLevel - heightScale(4);
const heightSeaGround = heightWaterLevel - heightScale(8);
const heightHill = heightDesert + heightScale(4);
const heightHilltop = heightHill + heightScale(90);
const heightHillArchers = (heightHilltop + heightHill) / 2;
const heightOffsetPath = heightScale(-2.5);
const heightOffsetRoad = heightScale(-1.5);
const heightOffsetWalls = heightScale(2.5);
const heightOffsetStatue = heightScale(2.5);
g_Map.log("Flattening land");
createArea(
new MapBoundsPlacer(),
new ElevationPainter(heightDesert),
new HeightConstraint(-Infinity, heightDesert));
// Fertile land
var widthFertileLand = fractionToTiles(0.33);
paintRiver({
"parallel": true,
"start": new Vector2D(mapBounds.left, mapBounds.bottom).rotateAround(-riverAngle, mapCenter),
"end": new Vector2D(mapBounds.right, mapBounds.bottom).rotateAround(-riverAngle, mapCenter),
"width": 2 * widthFertileLand,
"fadeDist": 8,
"deviation": 0,
"heightLand": heightDesert,
"heightRiverbed": heightFertileLand,
"meanderShort": 40,
"meanderLong": 0,
"waterFunc": (position, height, riverFraction) => {
createTerrain(tGrass).place(position);
clFertileLand.add(position);
},
"landFunc": (position, shoreDist1, shoreDist2) => {
for (let riv of layoutFertileLandTextures)
if (riv.left < +shoreDist1 && +shoreDist1 < riv.right ||
riv.left < -shoreDist2 && -shoreDist2 < riv.right)
{
riv.tileClass.add(position);
riv.terrain.place(position);
}
}
});
// Nile
paintRiver({
"parallel": true,
"start": new Vector2D(mapBounds.left, mapBounds.bottom).rotateAround(-riverAngle, mapCenter),
"end": new Vector2D(mapBounds.right, mapBounds.bottom).rotateAround(-riverAngle, mapCenter),
"width": fractionToTiles(0.2),
"fadeDist": 4,
"deviation": 0,
"heightLand": heightFertileLand,
"heightRiverbed": heightSeaGround,
"meanderShort": 40,
"meanderLong": 0
});
Engine.SetProgress(30);
g_Map.log("Computing player locations");
const playerIDs = sortAllPlayers();
const playerPosition = playerPlacementArcs(
playerIDs,
mapCenter,
fractionToTiles(0.38),
riverAngle - 0.5 * Math.PI,
0.05 * Math.PI,
0.55 * Math.PI);
if (!isNomad())
{
g_Map.log("Marking player positions");
for (let position of playerPosition)
addCivicCenterAreaToClass(position, clPlayer);
}
g_Map.log("Marking water");
createArea(
new MapBoundsPlacer(),
[
new TileClassPainter(clWater),
new TileClassUnPainter(clFertileLand)
],
new HeightConstraint(-Infinity, heightWaterLevel));
g_Map.log("Marking desert");
const avoidWater = new StaticConstraint(avoidClasses(clWater, 0));
createArea(
new MapBoundsPlacer(),
new TileClassPainter(clDesert),
[
new HeightConstraint(-Infinity, heightHill),
avoidWater,
avoidClasses(clFertileLand, 0)
]);
const stayDesert = new StaticConstraint(stayClasses(clDesert, 0));
const stayFertileLand = new StaticConstraint(stayClasses(clFertileLand, 0));
g_Map.log("Finding possible irrigation canal locations");
var irrigationCanalAreas = [];
for (let i = 0; i < 30; ++i)
{
let x = fractionToTiles(randFloat(0, 1));
irrigationCanalAreas.push(
createArea(
new PathPlacer(
new Vector2D(x, mapBounds.bottom).rotateAround(-riverAngle, mapCenter),
new Vector2D(x, mapBounds.top).rotateAround(-riverAngle, mapCenter),
3,
0,
10,
0.1,
0.01,
Infinity),
undefined,
avoidClasses(clDesert, 2)));
}
g_Map.log("Creating irrigation canals");
var irrigationCanalLocations = [];
for (let area of irrigationCanalAreas)
{
if (!area.getPoints().length ||
area.getPoints().some(point => !avoidClasses(clPlayer, scaleByMapSize(8, 13), clIrrigationCanal, scaleByMapSize(15, 25)).allows(point)))
continue;
irrigationCanalLocations.push(pickRandom(area.getPoints()).clone().rotateAround(riverAngle, mapCenter).x);
createArea(
new MapBoundsPlacer(),
[
new SmoothElevationPainter(ELEVATION_SET, heightIrrigationCanal, 1),
new TileClassPainter(clIrrigationCanal)
],
[new StayAreasConstraint([area]), new HeightConstraint(heightIrrigationCanal, heightDesert)]);
}
g_Map.log("Creating passages");
var previousPassageY = randIntInclusive(0, widthFertileLand);
var areasPassages = [];
irrigationCanalLocations.sort((a, b) => a - b);
for (let i = 0; i < irrigationCanalLocations.length; ++i)
{
let previous = i == 0 ? mapBounds.left : irrigationCanalLocations[i - 1];
let next = i == irrigationCanalLocations.length - 1 ? mapBounds.right : irrigationCanalLocations[i + 1];
let x1 = (irrigationCanalLocations[i] + previous) / 2;
let x2 = (irrigationCanalLocations[i] + next) / 2;
let y;
// The passages should be at different locations, so that enemies can't attack each other easily
for (let tries = 0; tries < 100; ++tries)
{
y = (previousPassageY + randIntInclusive(0.2 * widthFertileLand, 0.8 * widthFertileLand)) % widthFertileLand;
let pos = new Vector2D((x1 + x2) / 2, y).rotateAround(-riverAngle, mapCenter).round();
if (g_Map.validTilePassable(new Vector2D(pos.x, pos.y)) &&
avoidClasses(clDesert, 12).allows(pos) &&
new HeightConstraint(heightIrrigationCanal, heightFertileLand).allows(pos))
break;
}
let area =
createArea(
new PathPlacer(
new Vector2D(x1, y).rotateAround(-riverAngle, mapCenter),
new Vector2D(x2, y).rotateAround(-riverAngle, mapCenter),
10,
0,
1,
0,
0,
Infinity),
[
new ElevationPainter(heightPassage),
new TileClassPainter(clPassage)
],
[
new HeightConstraint(-Infinity, heightPassage),
stayClasses(clFertileLand, 2)
]);
if (!area || !area.getPoints().length)
continue;
previousPassageY = y;
areasPassages.push(area);
}
Engine.SetProgress(40);
g_Map.log("Marking hill");
createArea(
new MapBoundsPlacer(),
new TileClassPainter(clHill),
new HeightConstraint(heightHill, Infinity));
g_Map.log("Marking water");
const areaWater = createArea(
new MapBoundsPlacer(),
new TileClassPainter(clWater),
new HeightConstraint(-Infinity, heightWaterLevel));
g_Map.log("Painting water and shoreline");
createArea(
new MapBoundsPlacer(),
new TerrainPainter(tWater),
new HeightConstraint(-Infinity, heightShoreline));
g_Map.log("Painting hill");
const areaHill = createArea(
new MapBoundsPlacer(),
new TerrainPainter(tHillGround),
new HeightConstraint(heightHill, Infinity));
g_Map.log("Painting hilltop");
const areaHilltop = createArea(
new MapBoundsPlacer(),
new TerrainPainter(tHilltop),
[
new HeightConstraint(heightHilltop, Infinity),
new SlopeConstraint(-Infinity, 2)
]);
Engine.SetProgress(50);
for (let i = 0; i < numPlayers; ++i)
{
let isDesert = clDesert.has(playerPosition[i]);
placePlayerBase({
"playerID": playerIDs[i],
"playerPosition": playerPosition[i],
"PlayerTileClass": clPlayer,
"BaseResourceClass": clBaseResource,
"baseResourceConstraint": avoidClasses(clPlayer, 4, clWater, 4),
"Walls": mapSize <= 256 || getDifficulty() >= 3 ? "towers" : "walls",
"CityPatch": {
"outerTerrain": isDesert ? tRoadDesert : tRoadFertileLand,
"innerTerrain": isDesert ? tRoadDesert : tRoadFertileLand
},
"Chicken": {
"template": oGazelle,
"distance": 15,
"minGroupDistance": 2,
"maxGroupDistance": 4,
"minGroupCount": 2,
"maxGroupCount": 3
},
"Berries": {
"template": isDesert ? oBerryBushDesert : oBerryBushGrapes
},
"Mines": {
"types": [
{ "template": isDesert ? oMetalLargeDesert : oMetalLargeFertileLand },
{ "template": isDesert ? oStoneLargeDesert : oStoneLargeFertileLand }
]
},
"Trees": {
"template": isDesert ? oAcacia : pickRandom(oPalms),
"count": isDesert ? scaleByMapSize(5, 10) : scaleByMapSize(15, 30)
},
"Treasures": {
"types":
[
{
"template": oWoodTreasure,
"count": isDesert ? 4 : 0
},
{
"template": oStoneTreasure,
"count": isDesert ? 1 : 0
},
{
"template": oMetalTreasure,
"count": isDesert ? 1 : 0
}
]
},
"Decoratives": {
"template": isDesert ? aRock : pickRandom(aBushesFertileLand)
}
});
}
g_Map.log("Placing pyramids");
const areaPyramids = createArea(new DiskPlacer(scaleByMapSize(5, 14), positionPyramids));
// Retry loops are needed due to the self-avoidance
createObjectGroupsByAreas(
new SimpleGroup(
[new RandomObject(
[oPyramidLarge, oPyramidSmall],
scaleByMapSize(1, 6),
scaleByMapSize(2, 8),
scaleByMapSize(6, 8),
scaleByMapSize(6, 14),
Math.PI * 1.35,
Math.PI * 1.5,
scaleByMapSize(6, 8))],
true,
clPyramid),
0,
undefined,
1,
50,
[areaPyramids]);
Engine.SetProgress(60);
// The city is a circle segment of this maximum size
g_Map.log("Computing city grid");
var gridCenter = new Vector2D(0, fractionToTiles(0.3)).rotate(-riverAngle).add(mapCenter).round();
var gridMaxAngle = Math.min(scaleByMapSize(1/3, 1), 2/3) * Math.PI;
var gridStartAngle = -Math.PI / 2 -gridMaxAngle / 2 + riverAngle;
var gridRadius = y => hillRadius + 18 * y;
var gridPointsX = layoutKushTemples.length;
var gridPointsY = Math.floor(scaleByMapSize(2, 5));
var gridPointXCenter = Math.floor(gridPointsX / 2);
var gridPointYCenter = Math.floor(gridPointsY / 2);
// Maps from grid position to map position
var cityGridPosition = [];
var cityGridAngle = [];
for (let y = 0; y < gridPointsY; ++y)
[cityGridPosition[y], cityGridAngle[y]] = distributePointsOnCircularSegment(
gridPointsX, gridMaxAngle, gridStartAngle, gridRadius(y), gridCenter);
g_Map.log("Marking city path crossings");
for (let y in cityGridPosition)
for (let x in cityGridPosition[y])
{
cityGridPosition[y][x].round();
createArea(
new DiskPlacer(pathWidth, cityGridPosition[y][x]),
[
new TileClassPainter(clPath),
new TileClassPainter(clPathCrossing)
]);
}
g_Map.log("Marking horizontal city paths");
var areasCityPaths = [];
for (let y = 0; y < gridPointsY; ++y)
for (let x = 1; x < gridPointsX; ++x)
{
let width = y == gridPointYCenter ? pathWidthSecondary : pathWidth;
areasCityPaths.push(
createArea(
new PathPlacer(cityGridPosition[y][x - 1], cityGridPosition[y][x], width, 0, 8, 0, 0, Infinity),
new TileClassPainter(clPath)));
}
g_Map.log("Marking vertical city paths");
for (let y = 1; y < gridPointsY; ++y)
for (let x = 0; x < gridPointsX; ++x)
{
let width =
Math.abs(x - gridPointXCenter) == 0 ?
pathWidthCenter :
Math.abs(x - gridPointXCenter) == 1 ?
pathWidthSecondary :
pathWidth;
areasCityPaths.push(
createArea(
new PathPlacer(cityGridPosition[y - 1][x], cityGridPosition[y][x], width, 0, 8, 0, 0, Infinity),
new TileClassPainter(clPath)));
}
Engine.SetProgress(70);
g_Map.log("Placing kushite temples");
var entitiesTemples = [];
var templePosition = [];
for (let i = 0; i < layoutKushTemples.length; ++i)
{
let x = i + (gridPointsX - layoutKushTemples.length) / 2;
templePosition[i] = Vector2D.add(cityGridPosition[0][x], layoutKushTemples[i].pathOffset.rotate(-Math.PI / 2 - cityGridAngle[0][x]));
entitiesTemples[i] = g_Map.placeEntityPassable(layoutKushTemples[i].template, 0, templePosition[i], cityGridAngle[0][x]);
}
g_Map.log("Marking temple area");
createArea(
new EntitiesObstructionPlacer(entitiesTemples, 0, Infinity),
new TileClassPainter(clTemple));
g_Map.log("Smoothing temple ground");
createArea(
new MapBoundsPlacer(),
new ElevationBlendingPainter(heightDesert, 0.8),
new NearTileClassConstraint(clTemple, 0));
g_Map.log("Painting cliffs");
createArea(
new MapBoundsPlacer(),
[
new TerrainPainter(tHillCliff),
new TileClassPainter(clCliff)
],
[
stayClasses(clHill, 0),
new SlopeConstraint(2, Infinity)
]);
g_Map.log("Painting temple ground");
createArea(
new MapBoundsPlacer(),
new TerrainPainter(tPathWild),
[
new NearTileClassConstraint(clTemple, 1),
avoidClasses(clPath, 0, clCliff, 1)
]);
g_Map.log("Placing lion statues in the central path");
var statueCount = scaleByMapSize(10, 40);
var centralPathStart = cityGridPosition[0][gridPointXCenter];
var centralPathLength = centralPathStart.distanceTo(cityGridPosition[gridPointsY - 1][gridPointXCenter]);
var centralPathAngle = cityGridAngle[0][gridPointXCenter];
for (let i = 0; i < 2; ++i)
for (let stat = 0; stat < statueCount; ++stat)
{
let start = new Vector2D(0, pathWidthCenter * 3/4 * (i - 0.5)).rotate(centralPathAngle).add(centralPathStart);
let position = new Vector2D(centralPathLength, 0).mult(stat / statueCount).rotate(-centralPathAngle).add(start).add(new Vector2D(0.5, 0.5));
if (!avoidClasses(clPathCrossing, 2).allows(position))
continue;
g_Map.placeEntityPassable(pickRandom(aStatues), 0, position, centralPathAngle - Math.PI * (i + 0.5));
clPathStatues.add(position.round());
}
g_Map.log("Placing guardian infantry in the central path");
var centralChampionsCount = scaleByMapSize(2, 40);
for (let i = 0; i < 2; ++i)
for (let champ = 0; champ < centralChampionsCount; ++champ)
{
let start = new Vector2D(0, pathWidthCenter * 1/2 * (i - 0.5)).rotate(-centralPathAngle).add(centralPathStart);
let position = new Vector2D(centralPathLength, 0).mult(champ / centralChampionsCount).rotate(-centralPathAngle).add(start).add(new Vector2D(0.5, 0.5));
if (!avoidClasses(clPathCrossing, 2).allows(position))
continue;
g_Map.placeEntityPassable(pickRandom(oKushChampions), 0, position, centralPathAngle - Math.PI * (i - 0.5));
clPathStatues.add(position.round());
}
g_Map.log("Placing kushite statues in the secondary paths");
for (let x of [gridPointXCenter - 1, gridPointXCenter + 1])
{
g_Map.placeEntityAnywhere(aStatueKush, 0, cityGridPosition[gridPointYCenter][x], cityGridAngle[gridPointYCenter][x]);
clPathStatues.add(cityGridPosition[gridPointYCenter][x]);
}
g_Map.log("Creating ritual place near the wonder");
var ritualPosition = Vector2D.average([
templePosition[Math.floor(templePosition.length / 2) - 1],
templePosition[Math.ceil(templePosition.length / 2) - 1],
cityGridPosition[0][gridPointXCenter],
cityGridPosition[0][gridPointXCenter - 1]
]).round();
var ritualAngle = (cityGridAngle[0][gridPointXCenter] + cityGridAngle[0][gridPointXCenter - 1]) / 2 + Math.PI / 2;
g_Map.placeEntityPassable(aStatueKush, 0, ritualPosition, ritualAngle - Math.PI / 2);
createArea(
new DiskPlacer(scaleByMapSize(4, 6), ritualPosition),
[
new LayeredPainter([tPathWild, tPath], [1]),
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetPath, 2),
new TileClassPainter(clRitualPlace)
],
avoidClasses(clCliff, 1));
createArea(
new DiskPlacer(0, new Vector2D(-1, -1).add(ritualPosition)),
new ElevationPainter(heightDesert + heightOffsetStatue));
g_Map.log("Placing healers at the ritual place");
var [healerPosition, healerAngle] = distributePointsOnCircularSegment(
scaleByMapSize(2, 10), Math.PI, ritualAngle, scaleByMapSize(2, 3), ritualPosition);
for (let i = 0; i < healerPosition.length; ++i)
g_Map.placeEntityPassable(oKushHealer, 0, healerPosition[i], healerAngle[i] + Math.PI);
g_Map.log("Placing statues at the ritual place");
var [statuePosition, statueAngle] = distributePointsOnCircularSegment(
scaleByMapSize(4, 8), Math.PI, ritualAngle, scaleByMapSize(3, 4), ritualPosition);
for (let i = 0; i < statuePosition.length; ++i)
g_Map.placeEntityPassable(pickRandom(aStatues), 0, statuePosition[i], statueAngle[i] + Math.PI);
g_Map.log("Placing palms at the ritual place");
var palmPosition = distributePointsOnCircularSegment(
scaleByMapSize(6, 16), Math.PI, ritualAngle, scaleByMapSize(4, 5), ritualPosition)[0];
for (let i = 0; i < palmPosition.length; ++i)
if (avoidClasses(clTemple, 1).allows(palmPosition[i]))
g_Map.placeEntityPassable(oPalmPath, 0, palmPosition[i], randomAngle());
g_Map.log("Painting city paths");
var areaPaths = createArea(
new MapBoundsPlacer(),
[
new LayeredPainter([tPathWild, tPath], [1]),
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetPath, 1)
],
stayClasses(clPath, 0));
g_Map.log("Placing triggerpoints on city paths");
createObjectGroupsByAreas(
new SimpleGroup([new SimpleObject(oTriggerPointCityPath, 1, 1, 0, 0)], true, clTriggerPointCityPath),
0,
[avoidClasses(clTriggerPointCityPath, 8), stayClasses(clPathCrossing, 2)],
scaleByMapSize(20, 100),
30,
[areaPaths]);
g_Map.log("Placing city districts");
for (let y = 1; y < gridPointsY; ++y)
for (let x = 1; x < gridPointsX; ++x)
createArea(
new ConvexPolygonPlacer([cityGridPosition[y - 1][x - 1], cityGridPosition[y - 1][x], cityGridPosition[y][x - 1], cityGridPosition[y][x]], Infinity),
[
new TerrainPainter(tRoadDesert),
new CityPainter(layoutKushCity, (-cityGridAngle[y][x - 1] - cityGridAngle[y][x]) / 2, 0),
new TileClassPainter(clCity)
],
new StaticConstraint(avoidClasses(clPath, 0)));
var entitiesGates;
if (placeNapataWall)
{
g_Map.log("Placing front walls");
let wallGridMaxAngleSummand = scaleByMapSize(0.04, 0.03) * Math.PI;
let wallGridStartAngle = gridStartAngle - wallGridMaxAngleSummand / 2;
let wallGridRadiusFront = gridRadius(gridPointsY - 1) + pathWidth - 1;
let wallGridMaxAngleFront = gridMaxAngle + wallGridMaxAngleSummand;
let entitiesWalls = placeCircularWall(
gridCenter,
wallGridRadiusFront,
["tower", "short", "tower", "gate", "tower", "medium", "tower", "short"],
placeNapataWall,
0,
wallGridStartAngle,
wallGridMaxAngleFront,
true,
0,
0);
g_Map.log("Placing side and back walls");
let wallGridRadiusBack = hillRadius - scaleByMapSize(15, 25);
let wallGridMaxAngleBack = gridMaxAngle + wallGridMaxAngleSummand;
let wallGridPositionFront = distributePointsOnCircularSegment(gridPointsX, wallGridMaxAngleBack, wallGridStartAngle, wallGridRadiusFront, gridCenter)[0];
let wallGridPositionBack = distributePointsOnCircularSegment(gridPointsX, wallGridMaxAngleBack, wallGridStartAngle, wallGridRadiusBack, gridCenter)[0];
let wallGridPosition = [wallGridPositionFront[0], ...wallGridPositionBack, wallGridPositionFront[wallGridPositionFront.length - 1]];
for (let x = 1; x < wallGridPosition.length; ++x)
entitiesWalls = entitiesWalls.concat(
placeLinearWall(
wallGridPosition[x - 1],
wallGridPosition[x],
["tower", "gate", "tower", "short", "tower", "short", "tower"],
placeNapataWall,
0,
false,
avoidClasses(clHill, 0, clTemple, 0)));
g_Map.log("Marking walls");
createArea(
new EntitiesObstructionPlacer(entitiesWalls, 0, Infinity),
new TileClassPainter(clWall));
g_Map.log("Marking gates");
entitiesGates = entitiesWalls.filter(entity => entity.templateName.endsWith(oWallGate));
createArea(
new EntitiesObstructionPlacer(entitiesGates, 0, Infinity),
new TileClassPainter(clGate));
g_Map.log("Painting wall terrain");
createArea(
new MapBoundsPlacer(),
[
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetWalls, 2),
new TerrainPainter(tPathWild)
],
[
new NearTileClassConstraint(clWall, 1),
avoidClasses(clCliff, 0)
]);
g_Map.log("Painting gate terrain");
for (let entity of entitiesGates)
createArea(
new DiskPlacer(pathWidth, entity.GetPosition2D()),
[
new LayeredPainter([tPathWild, tPath], [1]),
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetPath, 2),
],
[
avoidClasses(clCliff, 0, clPath, 0, clCity, 0),
new NearTileClassConstraint(clPath, pathWidth + 1)
]);
}
Engine.SetProgress(70);
g_Map.log("Finding road starting points");
var roadStartLocations = shuffleArray(
entitiesGates ?
entitiesGates.map(entity => entity.GetPosition2D()) :
[
...cityGridPosition.map(gridPos => gridPos[0]),
...cityGridPosition.map(gridPos => gridPos[gridPos.length - 1]),
...cityGridPosition[cityGridPosition.length - 1]
]);
g_Map.log("Finding possible roads");
var roadConstraint = new StaticConstraint(
[
stayDesert,
avoidClasses(clHill, 0, clCity, 0, clPyramid, 6, clPlayer, 16)
]);
var areaCityPaths = new Area(areasCityPaths.reduce((points, area) => points.concat(area.getPoints()), []));
var areaRoads = [];
for (let roadStart of roadStartLocations)
{
if (areaRoads.length >= scaleByMapSize(2, 5))
break;
let closestPoint = areaCityPaths.getClosestPointTo(roadStart);
roadConstraint = new StaticConstraint([roadConstraint, avoidClasses(clRoad, 20)]);
for (let tries = 0; tries < 30; ++tries)
{
let area = createArea(
new PathPlacer(
Vector2D.add(closestPoint, new Vector2D(0, 3/4 * mapSize).rotate(closestPoint.angleTo(roadStart))),
roadStart,
scaleByMapSize(5, 3),
0.1,
5,
0.5,
0,
0),
new TileClassPainter(clRoad),
roadConstraint);
if (area && area.getPoints().length)
{
areaRoads.push(area);
break;
}
}
}
g_Map.log("Painting roads");
createArea(
new MapBoundsPlacer(),
[
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetRoad, 1),
new LayeredPainter([tPathWild, tPath], [1]),
],
[stayClasses(clRoad, 0), avoidClasses(clPath, 0)]);
g_Map.log("Marking road palm area");
var areaRoadPalms = createArea(
new MapBoundsPlacer(),
undefined,
[
new NearTileClassConstraint(clRoad, 1),
avoidClasses(clRoad, 0, clPath, 1, clWall, 4, clGate, 4)
]);
if (areaRoadPalms && areaRoadPalms.getPoints().length)
{
g_Map.log("Placing road palms");
createObjectGroupsByAreas(
new SimpleGroup([new SimpleObject(oPalmPath, 1, 1, 0, 0)], true, clForest),
0,
avoidClasses(clForest, 2, clGate, 7),
scaleByMapSize(40, 250),
20,
[areaRoadPalms]);
g_Map.log("Placing road bushes");
createObjectGroupsByAreas(
new SimpleGroup([new RandomObject(aBushesCity, 1, 1, 0, 0)], true, clForest),
0,
avoidClasses(clForest, 1),
scaleByMapSize(40, 200),
20,
[areaRoadPalms]);
}
Engine.SetProgress(75);
g_Map.log("Marking city bush area");
var areaCityBushes =
createArea(
new MapBoundsPlacer(),
undefined,
[
new NearTileClassConstraint(clPath, 1),
avoidClasses(
clPath, 0,
clRoad, 0,
clPyramid, 20,
clRitualPlace, 8,
clTemple, 3,
clWall, 3,
clTower, 1,
clFortress, 1,
clHouse, 1,
clForge, 1,
clElephantStables, 1,
clStable, 1,
clCivicCenter, 1,
clBarracks, 1,
clBlemmyeCamp, 1,
clNobaCamp, 1,
clMarket, 1)
]);
g_Map.log("Marking city palm area");
var areaCityPalms =
createArea(
new MapBoundsPlacer(),
undefined,
[
new StayAreasConstraint([areaCityBushes]),
avoidClasses(clElephantStables, 3)
]);
g_Map.log("Placing city palms");
createObjectGroupsByAreas(
new SimpleGroup([new SimpleObject(aPalmPath, 1, 1, 0, 0)], true, clForest),
0,
avoidClasses(clForest, 3),
scaleByMapSize(40, 400),
15,
[areaCityPalms]);
g_Map.log("Placing city bushes");
createObjectGroupsByAreas(
new SimpleGroup([new RandomObject(aBushesCity, 1, 1, 0, 0)], true, clForest),
0,
avoidClasses(clForest, 1),
scaleByMapSize(20, 200),
15,
[areaCityBushes]);
if (placeNapataWall)
{
g_Map.log("Marking wall palm area");
var areaWallPalms = createArea(
new MapBoundsPlacer(),
undefined,
new StaticConstraint([
new NearTileClassConstraint(clWall, 2),
avoidClasses(clPath, 1, clRoad, 1, clWall, 1, clGate, 3, clTemple, 2, clHill, 6)
]));
g_Map.log("Placing wall palms");
createObjectGroupsByAreas(
new SimpleGroup([new SimpleObject(oPalmPath, 1, 1, 0, 0)], true, clForest),
0,
avoidClasses(clForest, 2),
scaleByMapSize(40, 250),
50,
[areaWallPalms]);
}
createBumps(
new StaticConstraint(avoidClasses(clPlayer, 6, clCity, 0, clWater, 2, clHill, 0, clPath, 0, clRoad, 0, clTemple, 4, clPyramid, 8, clWall, 0, clGate, 4)),
scaleByMapSize(30, 300),
1,
8,
4,
0,
3);
Engine.SetProgress(80);
g_Map.log("Setting up common constraints and areas");
const nearWater = new NearTileClassConstraint(clWater, 3);
var avoidCollisionsNomad = new AndConstraint(
[
new StaticConstraint(avoidClasses(
clCliff, 0, clHill, 0, clPlayer, 15, clWater, 1, clPath, 2, clRitualPlace, 10,
clTemple, 4, clPyramid, 7, clCity, 4, clWall, 4, clGate, 8)),
avoidClasses(clForest, 1, clRock, 4, clMetal, 4, clFood, 2, clSoldier, 1, clTreasure, 1)
]);
var avoidCollisions = new AndConstraint(
[
avoidCollisionsNomad,
new StaticConstraint(avoidClasses(clRoad, 6, clFood, 6))
]);
const areaDesert = createArea(new MapBoundsPlacer(), undefined, stayDesert);
const areaFertileLand = createArea(new MapBoundsPlacer(), undefined, stayFertileLand);
createForests(
[tForestFloorFertile, tForestFloorFertile, tForestFloorFertile, pForestPalms, pForestPalms],
[stayFertileLand, avoidClasses(clForest, 15), new StaticConstraint([avoidClasses(clWater, 2), avoidCollisions])],
clForest,
scaleByMapSize(250, 2000));
g_Map.log("Creating mines");
const avoidCollisionsMines = [
avoidClasses(clRock, 10, clMetal, 10),
new StaticConstraint(avoidClasses(
clWater, 4, clCliff, 4, clCity, 4, clRitualPlace, 10, clPlayer, 20, clForest, 4,
clPyramid, 6, clTemple, 4, clPath, 4, clRoad, 4, clGate, 8))
];
const mineObjects = (templateSmall, templateLarge) => ({
"large": [
new SimpleObject(templateSmall, 0, 2, 0, 4, 0, 2 * Math.PI, 1),
new SimpleObject(templateLarge, 1, 1, 0, 4, 0, 2 * Math.PI, 4)
],
"small": [
new SimpleObject(templateSmall, 3, 4, 1, 3, 0, 2 * Math.PI, 1)
]
});
const mineObjectsPerBiome = [
{
"desert": mineObjects(oMetalSmallDesert, oMetalLargeDesert),
"fertileLand": mineObjects(oMetalSmallFertileLand, oMetalLargeFertileLand),
"tileClass": clMetal
},
{
"desert": mineObjects(oStoneSmallDesert, oStoneLargeDesert),
"fertileLand": mineObjects(oStoneSmallFertileLand, oStoneLargeFertileLand),
"tileClass": clRock
}
];
for (let i = 0; i < scaleByMapSize(6, 22); ++i)
{
let mineObjectsBiome = pickRandom(mineObjectsPerBiome);
for (let i in mineObjectsBiome.desert)
createObjectGroupsByAreas(
new SimpleGroup(mineObjectsBiome.desert[i], true, mineObjectsBiome.tileClass),
0,
avoidCollisionsMines.concat([avoidClasses(clFertileLand, 12, mineObjectsBiome.tileClass, 15)]),
1,
60,
[areaDesert]);
}
for (let i = 0; i < (isNomad() ? scaleByMapSize(6, 16) : scaleByMapSize(0, 8)); ++i)
{
let mineObjectsBiome = pickRandom(mineObjectsPerBiome);
createObjectGroupsByAreas(
new SimpleGroup(mineObjectsBiome.fertileLand.small, true, mineObjectsBiome.tileClass),
0,
avoidCollisionsMines.concat([avoidClasses(clDesert, 5, clMetal, 15, clRock, 15, mineObjectsBiome.tileClass, 20)]),
1,
80,
[areaFertileLand]);
}
g_Map.log("Placing triggerpoints for attackers");
createObjectGroups(
new SimpleGroup([new SimpleObject(oTriggerPointAttackerPatrol, 1, 1, 0, 0)], true, clTriggerPointMap),
0,
[avoidClasses(clCity, 8, clCliff, 4, clHill, 4, clWater, 0, clWall, 2, clForest, 1, clRock, 4, clMetal, 4, clTriggerPointMap, 15)],
scaleByMapSize(20, 100),
30);
g_Map.log("Creating berries");
createObjectGroupsByAreas(
new SimpleGroup([new SimpleObject(oBerryBushGrapes, 4, 6, 1, 2)], true, clFood),
0,
avoidCollisions,
scaleByMapSize(3, 15),
50,
[areaFertileLand]);
g_Map.log("Creating rhinos");
createObjectGroupsByAreas(
new SimpleGroup([new SimpleObject(oRhino, 1, 1, 0, 1)], true, clFood),
0,
avoidCollisions,
scaleByMapSize(2, 10),
50,
[areaDesert]);
g_Map.log("Creating warthogs");
createObjectGroupsByAreas(
new SimpleGroup([new SimpleObject(oWarthog, 1, 1, 0, 1)], true, clFood),
0,
avoidCollisions,
scaleByMapSize(2, 10),
50,
[areaFertileLand]);
g_Map.log("Creating giraffes");
createObjectGroups(
new SimpleGroup([new SimpleObject(oGiraffe, 2, 3, 2, 4), new SimpleObject(oGiraffeInfant, 2, 3, 2, 4)], true, clFood),
0,
avoidCollisions,
scaleByMapSize(2, 10),
50);
g_Map.log("Creating gazelles");
createObjectGroups(
new SimpleGroup([new SimpleObject(oGazelle, 5, 7, 2, 4)], true, clFood),
0,
avoidCollisions,
scaleByMapSize(2, 10),
50,
[areaDesert]);
if (!isNomad())
{
g_Map.log("Creating lions");
createObjectGroupsByAreas(
new SimpleGroup([new SimpleObject(oLion, 1, 2, 2, 4), new SimpleObject(oLioness, 2, 3, 2, 4)], true, clFood),
0,
[avoidCollisions, avoidClasses(clPlayer, 20)],
scaleByMapSize(2, 10),
50,
[areaDesert]);
}
g_Map.log("Creating elephants");
createObjectGroupsByAreas(
new SimpleGroup([new SimpleObject(oElephant, 2, 3, 2, 4), new SimpleObject(oElephantInfant, 2, 3, 2, 4)], true, clFood),
0,
avoidCollisions,
scaleByMapSize(2, 10),
50,
[areaDesert]);
g_Map.log("Creating crocodiles");
if (!isNomad())
createObjectGroupsByAreas(
new SimpleGroup([new SimpleObject(oCrocodile, 2, 3, 3, 5)], true, clFood),
0,
[nearWater, avoidCollisions],
scaleByMapSize(1, 6),
50,
[areaFertileLand]);
Engine.SetProgress(85);
g_Map.log("Marking irrigation canal tree area");
var areaIrrigationCanalTrees = createArea(
new MapBoundsPlacer(),
undefined,
[
nearWater,
avoidClasses(clPassage, 3),
avoidCollisions
]);
g_Map.log("Creating irrigation canal trees");
createObjectGroupsByAreas(
new SimpleGroup([new RandomObject(oPalms, 1, 1, 1, 1)], true, clForest),
0,
avoidClasses(clForest, 1),
scaleByMapSize(100, 600),
50,
[areaIrrigationCanalTrees]);
createStragglerTrees(
oPalms,
[stayFertileLand, avoidCollisions],
clForest,
scaleByMapSize(50, 400),
200);
createStragglerTrees(
[oAcacia],
[stayDesert, avoidCollisions],
clForest,
scaleByMapSize(50, 400),
200);
g_Map.log("Placing archer groups on the hilltop");
createObjectGroupsByAreas(
new SimpleGroup([new RandomObject([oKushCitizenArcher, oKushChampionArcher], scaleByMapSize(4, 10), scaleByMapSize(6, 20), 1, 4)], true, clSoldier),
0,
new StaticConstraint([avoidClasses(clCliff, 1), new NearTileClassConstraint(clCliff, 5)]),
scaleByMapSize(1, 5) / 3 * getDifficulty(),
250,
[areaHilltop]);
g_Map.log("Placing individual archers on the hill");
createObjectGroupsByAreas(
new SimpleGroup([new RandomObject([oKushCitizenArcher, oKushChampionArcher], 1, 1, 1, 3)], true, clSoldier),
0,
new StaticConstraint([
new HeightConstraint(heightHillArchers, heightHilltop),
avoidClasses(clCliff, 1, clSoldier, 1),
new NearTileClassConstraint(clCliff, 5)
]),
scaleByMapSize(8, 100) / 3 * getDifficulty(),
250,
[areaHill]);
g_Map.log("Placing siege engines on the hilltop");
createObjectGroupsByAreas(
new SimpleGroup([new RandomObject(oPtolSiege, 1, 1, 1, 3)], true, clSoldier),
0,
new StaticConstraint([new NearTileClassConstraint(clCliff, 5), avoidClasses(clCliff, 1, clSoldier, 1)]),
scaleByMapSize(1, 6) / 3 * getDifficulty(),
250,
[areaHilltop]);
const avoidCollisionsPyramids = new StaticConstraint([avoidCollisions, new NearTileClassConstraint(clPyramid, 10)]);
if (!isNomad())
{
g_Map.log("Placing soldiers near pyramids");
createObjectGroupsByAreas(
new SimpleGroup([new SimpleObject(oKushCitizenArcher, 1, 1, 1, 1)], true, clSoldier),
0,
avoidCollisionsPyramids,
scaleByMapSize(3, 8),
250,
[areaPyramids]);
g_Map.log("Placing treasures at the pyramid");
createObjectGroupsByAreas(
new SimpleGroup([new RandomObject(oTreasuresHill, 1, 1, 2, 2)], true, clTreasure),
0,
avoidCollisionsPyramids,
scaleByMapSize(1, 10),
250,
[areaPyramids]);
}
g_Map.log("Placing treasures on the hilltop");
createObjectGroupsByAreas(
new SimpleGroup([new RandomObject(oTreasuresHill, 1, 1, 2, 2)], true, clTreasure),
0,
avoidClasses(clCliff, 1, clTreasure, 1),
scaleByMapSize(8, 35),
250,
[areaHilltop]);
g_Map.log("Placing treasures in the city");
var pathBorderConstraint = new AndConstraint([
new StaticConstraint([new NearTileClassConstraint(clCity, 1)]),
avoidClasses(clTreasure, 2, clStatue, 10, clPathStatues, 4, clWall, 2, clForest, 1)
]);
createObjectGroupsByAreas(
new SimpleGroup([new RandomObject(oTreasuresCity, 1, 1, 0, 2)], true, clTreasure),
0,
pathBorderConstraint,
scaleByMapSize(2, 60),
500,
[areaPaths]);
g_Map.log("Placing handcarts on the paths");
createObjectGroupsByAreas(
new SimpleGroup([new SimpleObject(aHandcart, 1, 1, 1, 1)], true, clDecorative),
0,
[pathBorderConstraint, avoidClasses(clDecorative, 10)],
scaleByMapSize(0, 5),
250,
[areaPaths]);
g_Map.log("Placing fence in fertile land");
createObjectGroupsByAreas(
new SimpleGroup([new SimpleObject(aPlotFence, 1, 1, 1, 1)], true, clDecorative),
0,
new StaticConstraint([avoidCollisions, avoidClasses(clWater, 6, clDecorative, 10)]),
scaleByMapSize(1, 10),
250,
[areaFertileLand]);
g_Map.log("Creating fish");
createObjectGroups(
new SimpleGroup([new SimpleObject(oFish, 3, 4, 2, 3)], true, clFood),
0,
[new StaticConstraint(stayClasses(clWater, 6)), avoidClasses(clFood, 12)],
scaleByMapSize(20, 120),
50);
Engine.SetProgress(95);
avoidCollisions = new StaticConstraint(avoidCollisions);
createDecoration(
aBushesDesert.map(bush => [new SimpleObject(bush, 0, 3, 2, 4)]),
aBushesDesert.map(bush => scaleByMapSize(20, 120) * randIntInclusive(1, 3)),
[stayDesert, avoidCollisions]);
createDecoration(
aBushesFertileLand.map(bush => [new SimpleObject(bush, 0, 4, 2, 4)]),
aBushesFertileLand.map(bush => scaleByMapSize(20, 120) * randIntInclusive(1, 3)),
[stayFertileLand, avoidCollisions]);
createDecoration(
[[new SimpleObject(aRock, 0, 4, 2, 4)]],
[[scaleByMapSize(80, 500)]],
[stayDesert, avoidCollisions]);
createDecoration(
aBushesFertileLand.map(bush => [new SimpleObject(bush, 0, 3, 2, 4)]),
aBushesFertileLand.map(bush => scaleByMapSize(100, 800)),
[new HeightConstraint(heightWaterLevel, heightShoreline), avoidCollisions]);
g_Map.log("Creating reeds");
createObjectGroupsByAreas(
new SimpleGroup([new RandomObject(aWaterDecoratives, 2, 4, 1, 2)], true),
0,
new StaticConstraint(new NearTileClassConstraint(clFertileLand, 4)),
scaleByMapSize(50, 400),
20,
[areaWater]);
g_Map.log("Creating reeds at the irrigation canals");
for (let area of areasPassages)
createObjectGroupsByAreas(
new SimpleGroup([new RandomObject(aWaterDecoratives, 2, 4, 1, 2)], true),
0,
undefined,
15,
20,
[area]);
g_Map.log("Creating hawk");
for (let i = 0; i < scaleByMapSize(0, 2); ++i)
g_Map.placeEntityAnywhere(oHawk, 0, mapCenter, randomAngle());
placePlayersNomad(clPlayer, [avoidClasses(clHill, 15, clSoldier, 20, clCity, 15, clWall, 20), avoidCollisionsNomad]);
setWindAngle(-0.43);
setWaterHeight(heightWaterLevel + SEA_LEVEL);
setWaterTint(0.161, 0.286, 0.353);
setWaterColor(0.129, 0.176, 0.259);
setWaterWaviness(8);
setWaterMurkiness(0.87);
setWaterType("lake");
setTerrainAmbientColor(0.58, 0.443, 0.353);
setSunColor(0.733, 0.746, 0.574);
setSunRotation(Math.PI / 2 * randFloat(-1, 1));
setSunElevation(Math.PI / 7);
setFogFactor(0);
setFogThickness(0);
setFogColor(0.69, 0.616, 0.541);
setPPEffect("hdr");
setPPContrast(0.67);
setPPSaturation(0.42);
setPPBloom(0.23);
g_Map.ExportMap();
Index: ps/trunk/binaries/data/mods/public/maps/random/wild_lake.js
===================================================================
--- ps/trunk/binaries/data/mods/public/maps/random/wild_lake.js (revision 24656)
+++ ps/trunk/binaries/data/mods/public/maps/random/wild_lake.js (revision 24657)
@@ -1,643 +1,643 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
Engine.LoadLibrary("heightmap");
var g_Map = new RandomMap(0, "whiteness");
/**
* getArray - To ensure a terrain texture is contained within an array
*/
function getArray(stringOrArrayOfStrings)
{
if (typeof stringOrArrayOfStrings == "string")
return [stringOrArrayOfStrings];
return stringOrArrayOfStrings;
}
setSelectedBiome();
// Terrain, entities and actors
let wildLakeBiome = [
// 0 Deep water
{
"texture": getArray(g_Terrains.water),
"actor": [[g_Gaia.fish], 0.01],
"textureHS": getArray(g_Terrains.water),
"actorHS": [[g_Gaia.fish], 0.03]
},
// 1 Shallow water
{
"texture": getArray(g_Terrains.water),
"actor": [[g_Decoratives.lillies, g_Decoratives.reeds], 0.3],
"textureHS": getArray(g_Terrains.water),
"actorHS": [[g_Decoratives.lillies], 0.1]
},
// 2 Shore
{
"texture": getArray(g_Terrains.shore),
"actor": [
[
g_Gaia.tree1, g_Gaia.tree1,
g_Gaia.tree2, g_Gaia.tree2,
g_Gaia.mainHuntableAnimal,
g_Decoratives.grass, g_Decoratives.grass,
g_Decoratives.rockMedium, g_Decoratives.rockMedium,
g_Decoratives.bushMedium, g_Decoratives.bushMedium
],
0.3
],
"textureHS": getArray(g_Terrains.cliff),
"actorHS": [[g_Decoratives.grassShort, g_Decoratives.rockMedium, g_Decoratives.bushSmall], 0.1]
},
// 3 Low ground
{
"texture": getArray(g_Terrains.tier1Terrain),
"actor": [
[
g_Decoratives.grass,
g_Decoratives.grassShort,
g_Decoratives.rockLarge,
g_Decoratives.rockMedium,
g_Decoratives.bushMedium,
g_Decoratives.bushSmall
],
0.2
],
"textureHS": getArray(g_Terrains.cliff),
"actorHS": [[g_Decoratives.grassShort, g_Decoratives.rockMedium, g_Decoratives.bushSmall], 0.1]
},
// 4 Mid ground. Player and path height
{
"texture": getArray(g_Terrains.mainTerrain),
"actor": [
[
g_Decoratives.grass,
g_Decoratives.grassShort,
g_Decoratives.rockLarge,
g_Decoratives.rockMedium,
g_Decoratives.bushMedium,
g_Decoratives.bushSmall
],
0.2
],
"textureHS": getArray(g_Terrains.cliff),
"actorHS": [[g_Decoratives.grassShort, g_Decoratives.rockMedium, g_Decoratives.bushSmall], 0.1]
},
// 5 High ground
{
"texture": getArray(g_Terrains.tier2Terrain),
"actor": [
[
g_Decoratives.grass,
g_Decoratives.grassShort,
g_Decoratives.rockLarge,
g_Decoratives.rockMedium,
g_Decoratives.bushMedium,
g_Decoratives.bushSmall
],
0.2
],
"textureHS": getArray(g_Terrains.cliff),
"actorHS": [[g_Decoratives.grassShort, g_Decoratives.rockMedium, g_Decoratives.bushSmall], 0.1]
},
// 6 Lower hilltop forest border
{
"texture": getArray(g_Terrains.dirt),
"actor": [
[
g_Gaia.tree1,
g_Gaia.tree3,
g_Gaia.fruitBush,
g_Gaia.secondaryHuntableAnimal,
g_Decoratives.grass,
g_Decoratives.rockMedium,
g_Decoratives.bushMedium
],
0.3
],
"textureHS": getArray(g_Terrains.cliff),
"actorHS": [[g_Decoratives.grassShort, g_Decoratives.rockMedium, g_Decoratives.bushSmall], 0.1]
},
// 7 Hilltop forest
{
"texture": getArray(g_Terrains.forestFloor1),
"actor": [
[
g_Gaia.tree1,
g_Gaia.tree2,
g_Gaia.tree3,
g_Gaia.tree4,
g_Gaia.tree5,
g_Decoratives.tree,
g_Decoratives.grass,
g_Decoratives.rockMedium,
g_Decoratives.bushMedium
],
0.5
],
"textureHS": getArray(g_Terrains.cliff),
"actorHS": [[g_Decoratives.grassShort, g_Decoratives.rockMedium, g_Decoratives.bushSmall], 0.1]
}
];
var mercenaryCampGuards = {
"generic/temperate": [
{ "Template" : "structures/merc_camp_egyptian" },
{ "Template" : "units/mace/infantry_javelineer_b", "Count" : 4 },
{ "Template" : "units/mace/cavalry_spearman_e", "Count" : 3 },
{ "Template" : "units/mace/infantry_archer_a", "Count" : 4 },
- { "Template" : "units/mace/champion_infantry_a", "Count" : 3 }
+ { "Template" : "units/mace/champion_infantry_spearman", "Count" : 3 }
],
"generic/snowy": [
{ "Template" : "structures/ptol/mercenary_camp" },
{ "Template" : "units/brit/infantry_javelineer_b", "Count" : 4 },
{ "Template" : "units/brit/cavalry_swordsman_e", "Count" : 3 },
{ "Template" : "units/brit/infantry_slinger_a", "Count" : 4 },
{ "Template" : "units/brit/champion_infantry", "Count" : 3 }
],
"generic/desert": [
{ "Template" : "structures/ptol/mercenary_camp" },
{ "Template" : "units/pers/infantry_javelineer_b", "Count" : 4 },
{ "Template" : "units/pers/cavalry_axeman_e", "Count" : 3 },
{ "Template" : "units/pers/infantry_archer_a", "Count" : 4 },
{ "Template" : "units/pers/champion_infantry", "Count" : 3 }
],
"generic/alpine": [
{ "Template" : "structures/ptol/mercenary_camp" },
{ "Template" : "units/rome/infantry_swordsman_b", "Count" : 4 },
{ "Template" : "units/rome/cavalry_spearman_e", "Count" : 3 },
{ "Template" : "units/rome/infantry_javelineer_a", "Count" : 4 },
{ "Template" : "units/rome/champion_infantry", "Count" : 3 }
],
"generic/mediterranean": [
{ "Template" : "structures/merc_camp_egyptian" },
{ "Template" : "units/iber/infantry_javelineer_b", "Count" : 4 },
{ "Template" : "units/iber/cavalry_spearman_e", "Count" : 3 },
{ "Template" : "units/iber/infantry_slinger_a", "Count" : 4 },
{ "Template" : "units/iber/champion_infantry", "Count" : 3 }
],
"generic/savanna": [
{ "Template" : "structures/merc_camp_egyptian" },
{ "Template" : "units/sele/infantry_javelineer_b", "Count" : 4 },
{ "Template" : "units/sele/cavalry_spearman_merc_e", "Count" : 3 },
{ "Template" : "units/sele/infantry_spearman_a", "Count" : 4 },
{ "Template" : "units/sele/champion_infantry_swordsman", "Count" : 3 }
],
"generic/tropic": [
{ "Template" : "structures/merc_camp_egyptian" },
{ "Template" : "units/ptol/infantry_javelineer_b", "Count" : 4 },
{ "Template" : "units/ptol/cavalry_archer_e", "Count" : 3 },
{ "Template" : "units/ptol/infantry_slinger_a", "Count" : 4 },
{ "Template" : "units/ptol/champion_infantry_pikeman", "Count" : 3 }
],
"generic/autumn": [
{ "Template" : "structures/ptol/mercenary_camp" },
{ "Template" : "units/gaul/infantry_javelineer_b", "Count" : 4 },
{ "Template" : "units/gaul/cavalry_swordsman_e", "Count" : 3 },
{ "Template" : "units/gaul/infantry_slinger_a", "Count" : 4 },
{ "Template" : "units/gaul/champion_infantry", "Count" : 3 }
]
};
/**
* Resource spots and other points of interest
*/
function placeMine(position, centerEntity,
decorativeActors = [
g_Decoratives.grass, g_Decoratives.grassShort,
g_Decoratives.rockLarge, g_Decoratives.rockMedium,
g_Decoratives.bushMedium, g_Decoratives.bushSmall
]
)
{
g_Map.placeEntityPassable(centerEntity, 0, position, randomAngle());
let quantity = randIntInclusive(11, 23);
let dAngle = 2 * Math.PI / quantity;
for (let i = 0; i < quantity; ++i)
g_Map.placeEntityPassable(
pickRandom(decorativeActors),
0,
Vector2D.add(position, new Vector2D(randFloat(2, 5), 0).rotate(-dAngle * randFloat(i, i + 1))),
randomAngle());
}
// Groves, only Wood
let groveActors = [g_Decoratives.grass, g_Decoratives.rockMedium, g_Decoratives.bushMedium];
let clGrove = g_Map.createTileClass();
let clGaiaCamp = g_Map.createTileClass();
function placeGrove(point,
groveEntities = [
g_Gaia.tree1, g_Gaia.tree1, g_Gaia.tree1, g_Gaia.tree1, g_Gaia.tree1,
g_Gaia.tree2, g_Gaia.tree2, g_Gaia.tree2, g_Gaia.tree2,
g_Gaia.tree3, g_Gaia.tree3, g_Gaia.tree3,
g_Gaia.tree4, g_Gaia.tree4, g_Gaia.tree5
],
groveActors = [g_Decoratives.grass, g_Decoratives.rockMedium, g_Decoratives.bushMedium], groveTileClass = undefined,
groveTerrainTexture = getArray(g_Terrains.forestFloor1)
)
{
let position = new Vector2D(point.x, point.y);
g_Map.placeEntityPassable(pickRandom(["structures/gaul/outpost", "gaia/tree/oak_new"]), 0, position, randomAngle());
let quantity = randIntInclusive(20, 30);
let dAngle = 2 * Math.PI / quantity;
for (let i = 0; i < quantity; ++i)
{
let angle = dAngle * randFloat(i, i + 1);
let dist = randFloat(2, 5);
let objectList = groveEntities;
if (i % 3 == 0)
objectList = groveActors;
let pos = Vector2D.add(position, new Vector2D(dist, 0).rotate(-angle));
g_Map.placeEntityPassable(pickRandom(objectList), 0, pos, randomAngle());
let painters = [new TerrainPainter(groveTerrainTexture)];
if (groveTileClass)
painters.push(new TileClassPainter(groveTileClass));
createArea(
new ClumpPlacer(5, 1, 1, Infinity, pos),
painters);
}
}
var farmEntities = {
"generic/temperate": { "building": "structures/mace/farmstead", "animal": "gaia/fauna_pig" },
"generic/snowy": { "building": "structures/brit/farmstead", "animal": "gaia/fauna_sheep" },
"generic/desert": { "building": "structures/pers/farmstead", "animal": "gaia/fauna_camel" },
"generic/alpine": { "building": "structures/rome/farmstead", "animal": "gaia/fauna_sheep" },
"generic/mediterranean": { "building": "structures/iber/farmstead", "animal": "gaia/fauna_pig" },
"generic/savanna": { "building": "structures/sele/farmstead", "animal": "gaia/fauna_horse" },
"generic/tropic": { "building": "structures/ptol/farmstead", "animal": "gaia/fauna_camel" },
"generic/autumn": { "building": "structures/gaul/farmstead", "animal": "gaia/fauna_horse" }
};
g_WallStyles.other = {
"overlap": 0,
"fence": readyWallElement("structures/fence_long", "gaia"),
"fence_short": readyWallElement("structures/fence_short", "gaia"),
"bench": { "angle": Math.PI / 2, "length": 1.5, "indent": 0, "bend": 0, "templateName": "structures/bench" },
"foodBin": { "angle": Math.PI / 2, "length": 1.5, "indent": 0, "bend": 0, "templateName": "gaia/treasure/food_bin" },
"animal": { "angle": 0, "length": 0, "indent": 0.75, "bend": 0, "templateName": farmEntities[currentBiome()].animal },
"farmstead": { "angle": Math.PI, "length": 0, "indent": -3, "bend": 0, "templateName": farmEntities[currentBiome()].building }
};
let fences = [
new Fortress("fence", [
"foodBin", "farmstead", "bench",
"turn_0.25", "animal", "turn_0.25", "fence",
"turn_0.25", "animal", "turn_0.25", "fence",
"turn_0.25", "animal", "turn_0.25", "fence"
]),
new Fortress("fence", [
"foodBin", "farmstead", "fence",
"turn_0.25", "animal", "turn_0.25", "fence",
"turn_0.25", "animal", "turn_0.25", "bench", "animal", "fence",
"turn_0.25", "animal", "turn_0.25", "fence"
]),
new Fortress("fence", [
"foodBin", "farmstead", "turn_0.5", "bench", "turn_-0.5", "fence_short",
"turn_0.25", "animal", "turn_0.25", "fence",
"turn_0.25", "animal", "turn_0.25", "fence",
"turn_0.25", "animal", "turn_0.25", "fence_short", "animal", "fence"
]),
new Fortress("fence", [
"foodBin", "farmstead", "turn_0.5", "fence_short", "turn_-0.5", "bench",
"turn_0.25", "animal", "turn_0.25", "fence",
"turn_0.25", "animal", "turn_0.25", "fence",
"turn_0.25", "animal", "turn_0.25", "fence_short", "animal", "fence"
]),
new Fortress("fence", [
"foodBin", "farmstead", "fence",
"turn_0.25", "animal", "turn_0.25", "bench", "animal", "fence",
"turn_0.25", "animal", "turn_0.25", "fence_short", "animal", "fence",
"turn_0.25", "animal", "turn_0.25", "fence_short", "animal", "fence"
])
];
let num = fences.length;
for (let i = 0; i < num; ++i)
fences.push(new Fortress("fence", clone(fences[i].wall).reverse()));
// Camps with fire and gold treasure
function placeCamp(position,
centerEntity = "actor|props/special/eyecandy/campfire.xml",
otherEntities = ["gaia/treasure/metal", "gaia/treasure/standing_stone",
"units/brit/infantry_slinger_b", "units/brit/infantry_javelineer_b", "units/gaul/infantry_slinger_b", "units/gaul/infantry_javelineer_b", "units/gaul/champion_fanatic",
"actor|props/special/common/waypoint_flag.xml", "actor|props/special/eyecandy/barrel_a.xml", "actor|props/special/eyecandy/basket_celt_a.xml", "actor|props/special/eyecandy/crate_a.xml", "actor|props/special/eyecandy/dummy_a.xml", "actor|props/special/eyecandy/handcart_1.xml", "actor|props/special/eyecandy/handcart_1_broken.xml", "actor|props/special/eyecandy/sack_1.xml", "actor|props/special/eyecandy/sack_1_rough.xml"
]
)
{
g_Map.placeEntityPassable(centerEntity, 0, position, randomAngle());
let quantity = randIntInclusive(5, 11);
let dAngle = 2 * Math.PI / quantity;
for (let i = 0; i < quantity; ++i)
{
let angle = dAngle * randFloat(i, i + 1);
let dist = randFloat(1, 3);
g_Map.placeEntityPassable(pickRandom(otherEntities), 0, Vector2D.add(position, new Vector2D(dist, 0).rotate(-angle)), randomAngle());
}
addCivicCenterAreaToClass(position, clGaiaCamp);
}
function placeStartLocationResources(
point,
foodEntities = [g_Gaia.fruitBush, g_Gaia.chicken],
groveEntities = [
g_Gaia.tree1, g_Gaia.tree1, g_Gaia.tree1, g_Gaia.tree1, g_Gaia.tree1,
g_Gaia.tree2, g_Gaia.tree2, g_Gaia.tree2, g_Gaia.tree2,
g_Gaia.tree3, g_Gaia.tree3, g_Gaia.tree3,
g_Gaia.tree4, g_Gaia.tree4, g_Gaia.tree5
],
groveTerrainTexture = getArray(g_Terrains.forestFloor1),
averageDistToCC = 10,
dAverageDistToCC = 2
)
{
function getRandDist()
{
return averageDistToCC + randFloat(-dAverageDistToCC, dAverageDistToCC);
}
let currentAngle = randomAngle();
// Stone
let dAngle = 4/9 * Math.PI;
let angle = currentAngle + randFloat(dAngle / 4, 3 * dAngle / 4);
placeMine(Vector2D.add(point, new Vector2D(averageDistToCC, 0).rotate(-angle)), g_Gaia.stoneLarge);
currentAngle += dAngle;
// Wood
let quantity = 80;
dAngle = 2/3 * Math.PI / quantity;
for (let i = 0; i < quantity; ++i)
{
angle = currentAngle + randFloat(0, dAngle);
let dist = getRandDist();
let objectList = groveEntities;
if (i % 2 == 0)
objectList = groveActors;
let position = Vector2D.add(point, new Vector2D(dist, 0).rotate(-angle));
g_Map.placeEntityPassable(pickRandom(objectList), 0, position, randomAngle());
createArea(
new ClumpPlacer(5, 1, 1, Infinity, position),
[
new TerrainPainter(groveTerrainTexture),
new TileClassPainter(clGrove)
]);
currentAngle += dAngle;
}
// Metal
dAngle = 4/9 * Math.PI;
angle = currentAngle + randFloat(dAngle / 4, 3 * dAngle / 4);
placeMine(Vector2D.add(point, new Vector2D(averageDistToCC, 0).rotate(-angle)), g_Gaia.metalLarge);
currentAngle += dAngle;
// Berries and domestic animals
quantity = 15;
dAngle = 4/9 * Math.PI / quantity;
for (let i = 0; i < quantity; ++i)
{
angle = currentAngle + randFloat(0, dAngle);
let dist = getRandDist();
g_Map.placeEntityPassable(pickRandom(foodEntities), 0, Vector2D.add(point, new Vector2D(dist, 0).rotate(-angle)), randomAngle());
currentAngle += dAngle;
}
}
/**
* Base terrain shape generation and settings
*/
// Height range by map size
let heightScale = (g_Map.size + 512) / 1024 / 5;
let heightRange = { "min": MIN_HEIGHT * heightScale, "max": MAX_HEIGHT * heightScale };
// Water coverage
let averageWaterCoverage = 1/5; // NOTE: Since terrain generation is quite unpredictable actual water coverage might vary much with the same value
let heightSeaGround = -MIN_HEIGHT + heightRange.min + averageWaterCoverage * (heightRange.max - heightRange.min); // Water height in environment and the engine
let heightSeaGroundAdjusted = heightSeaGround + MIN_HEIGHT; // Water height as terrain height
setWaterHeight(heightSeaGround);
// Generate base terrain shape
let lowH = heightRange.min;
let medH = (heightRange.min + heightRange.max) / 2;
// Lake
let initialHeightmap = [
[medH, medH, medH, medH, medH, medH],
[medH, medH, medH, medH, medH, medH],
[medH, medH, lowH, lowH, medH, medH],
[medH, medH, lowH, lowH, medH, medH],
[medH, medH, medH, medH, medH, medH],
[medH, medH, medH, medH, medH, medH],
];
if (g_Map.size < 256)
{
initialHeightmap = [
[medH, medH, medH, medH, medH],
[medH, medH, medH, medH, medH],
[medH, medH, lowH, medH, medH],
[medH, medH, medH, medH, medH],
[medH, medH, medH, medH, medH]
];
}
if (g_Map.size >= 384)
{
initialHeightmap = [
[medH, medH, medH, medH, medH, medH, medH, medH],
[medH, medH, medH, medH, medH, medH, medH, medH],
[medH, medH, medH, medH, medH, medH, medH, medH],
[medH, medH, medH, lowH, lowH, medH, medH, medH],
[medH, medH, medH, lowH, lowH, medH, medH, medH],
[medH, medH, medH, medH, medH, medH, medH, medH],
[medH, medH, medH, medH, medH, medH, medH, medH],
[medH, medH, medH, medH, medH, medH, medH, medH],
];
}
setBaseTerrainDiamondSquare(heightRange.min, heightRange.max, initialHeightmap, 0.8);
g_Map.log("Eroding map");
for (let i = 0; i < 5; ++i)
splashErodeMap(0.1);
g_Map.log("Smoothing map");
createArea(
new MapBoundsPlacer(),
new SmoothingPainter(1, 0.5, Math.ceil(g_Map.size/128) + 1));
g_Map.log("Rescaling map");
rescaleHeightmap(heightRange.min, heightRange.max);
Engine.SetProgress(25);
/**
* Prepare terrain texture placement
*/
let heighLimits = [
heightRange.min + 3/4 * (heightSeaGroundAdjusted - heightRange.min), // 0 Deep water
heightSeaGroundAdjusted, // 1 Shallow water
heightSeaGroundAdjusted + 2/8 * (heightRange.max - heightSeaGroundAdjusted), // 2 Shore
heightSeaGroundAdjusted + 3/8 * (heightRange.max - heightSeaGroundAdjusted), // 3 Low ground
heightSeaGroundAdjusted + 4/8 * (heightRange.max - heightSeaGroundAdjusted), // 4 Player and path height
heightSeaGroundAdjusted + 6/8 * (heightRange.max - heightSeaGroundAdjusted), // 5 High ground
heightSeaGroundAdjusted + 7/8 * (heightRange.max - heightSeaGroundAdjusted), // 6 Lower forest border
heightRange.max // 7 Forest
];
let playerHeightRange = { "min" : heighLimits[3], "max" : heighLimits[4] };
let resourceSpotHeightRange = { "min" : (heighLimits[2] + heighLimits[3]) / 2, "max" : (heighLimits[4] + heighLimits[5]) / 2 };
let playerHeight = (playerHeightRange.min + playerHeightRange.max) / 2; // Average player height
g_Map.log("Chosing starting locations");
let [playerIDs, playerPosition] = groupPlayersCycle(getStartLocationsByHeightmap(playerHeightRange, 1000, 30));
g_Map.log("Smoothing starting locations before height calculation");
for (let position of playerPosition)
createArea(
new ClumpPlacer(diskArea(20), 0.8, 0.8, Infinity, position),
new SmoothElevationPainter(ELEVATION_SET, g_Map.getHeight(position), 20));
Engine.SetProgress(30);
/**
* Calculate tile centered height map after start position smoothing but before placing paths
* This has nothing to to with TILE_CENTERED_HEIGHT_MAP which should be false!
*/
let tchm = getTileCenteredHeightmap();
g_Map.log("Get points per height");
let areas = heighLimits.map(heightLimit => []);
for (let x = 0; x < tchm.length; ++x)
for (let y = 0; y < tchm[0].length; ++y)
{
let minHeight = heightRange.min;
for (let h = 0; h < heighLimits.length; ++h)
{
if (tchm[x][y] >= minHeight && tchm[x][y] <= heighLimits[h])
{
areas[h].push(new Vector2D(x, y));
break;
}
minHeight = heighLimits[h];
}
}
g_Map.log("Get slope limits per heightrange");
let slopeMap = getSlopeMap();
let minSlope = [];
let maxSlope = [];
for (let h = 0; h < heighLimits.length; ++h)
{
minSlope[h] = Infinity;
maxSlope[h] = 0;
for (let point of areas[h])
{
let slope = slopeMap[point.x][point.y];
if (slope > maxSlope[h])
maxSlope[h] = slope;
if (slope < minSlope[h])
minSlope[h] = slope;
}
}
g_Map.log("Paint areas by height and slope");
for (let h = 0; h < heighLimits.length; ++h)
for (let point of areas[h])
{
let actor;
let texture = pickRandom(wildLakeBiome[h].texture);
if (slopeMap[point.x][point.y] < (minSlope[h] + maxSlope[h]) / 2)
{
if (randBool(wildLakeBiome[h].actor[1]))
actor = pickRandom(wildLakeBiome[h].actor[0]);
}
else
{
texture = pickRandom(wildLakeBiome[h].textureHS);
if (randBool(wildLakeBiome[h].actorHS[1]))
actor = pickRandom(wildLakeBiome[h].actorHS[0]);
}
g_Map.setTexture(point, texture);
if (actor)
g_Map.placeEntityAnywhere(actor, 0, randomPositionOnTile(point), randomAngle());
}
Engine.SetProgress(40);
g_Map.log("Placing resources");
let avoidPoints = playerPosition.map(pos => pos.clone());
for (let i = 0; i < avoidPoints.length; ++i)
avoidPoints[i].dist = 30;
let resourceSpots = getPointsByHeight(resourceSpotHeightRange, avoidPoints).map(point => new Vector2D(point.x, point.y));
Engine.SetProgress(55);
g_Map.log("Placing players");
if (isNomad())
placePlayersNomad(
g_Map.createTileClass(),
[
new HeightConstraint(playerHeightRange.min, playerHeightRange.max),
avoidClasses(clGaiaCamp, 8)
]);
else
for (let p = 0; p < playerIDs.length; ++p)
{
placeCivDefaultStartingEntities(playerPosition[p], playerIDs[p], g_Map.size > 192);
placeStartLocationResources(playerPosition[p]);
}
let mercenaryCamps = isNomad() ? 0 : Math.ceil(g_Map.size / 256);
g_Map.log("Placing at most " + mercenaryCamps + " mercenary camps");
for (let i = 0; i < resourceSpots.length; ++i)
{
let radius;
let choice = i % (isNomad() ? 4 : 5);
if (choice == 0)
placeMine(resourceSpots[i], g_Gaia.stoneLarge);
if (choice == 1)
placeMine(resourceSpots[i], g_Gaia.metalLarge);
if (choice == 2)
placeGrove(resourceSpots[i]);
if (choice == 3)
{
placeCamp(resourceSpots[i]);
radius = 5;
}
if (choice == 4)
{
if (mercenaryCamps)
{
placeStartingEntities(resourceSpots[i], 0, mercenaryCampGuards[currentBiome()]);
radius = 15;
--mercenaryCamps;
}
else
{
placeCustomFortress(resourceSpots[i], pickRandom(fences), "other", 0, randomAngle());
radius = 10;
}
}
if (radius)
createArea(
new DiskPlacer(radius, resourceSpots[i]),
new SmoothElevationPainter(ELEVATION_SET, g_Map.getHeight(resourceSpots[i]), radius / 3));
}
g_Map.ExportMap();
Index: ps/trunk/binaries/data/mods/public/maps/scenarios/combat_demo.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/maps/scenarios/combat_demo.xml (revision 24656)
+++ ps/trunk/binaries/data/mods/public/maps/scenarios/combat_demo.xml (revision 24657)
@@ -1,1290 +1,1290 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scenario version="7">
<Environment>
<SkySet>cirrus</SkySet>
<SunColor r="1.69922" g="1.69922" b="1.69922"/>
<SunElevation angle="0.676026"/>
<SunRotation angle="0.592187"/>
<TerrainAmbientColor r="0.392157" g="0.392157" b="0.392157"/>
<UnitsAmbientColor r="0.392157" g="0.392157" b="0.392157"/>
<Water>
<WaterBody>
<Type>lake</Type>
<Color r="0.294118" g="0.34902" b="0.694118"/>
<Height>34.623</Height>
<Waviness>3.0</Waviness>
<Murkiness>0.898438</Murkiness>
<Tint r="0.27451" g="0.294118" b="0.584314"/>
</WaterBody>
</Water>
</Environment>
<Camera>
<Position x="122.057" y="111.803" z="7.81555"/>
<Rotation angle="0.0231291"/>
<Declination angle="0.538964"/>
</Camera>
<ScriptSettings><![CDATA[
{
"Name": "Combat Demo",
"Description": "A combat demonstration between a small number of ranged and melee infantry units.",
"Keywords": ["demo"],
"PlayerData": [
{
"Civ": "athen"
},
{
"Civ": "athen",
"AI": ""
}
],
"RevealMap": true,
"DefaultStance": "defensive",
"VictoryConditions": [
"conquest"
]
}
]]></ScriptSettings>
<Entities>
<Entity uid="11">
<Template>units/athen/infantry_marine_archer_e</Template>
<Player>1</Player>
<Position x="85.15519" z="140.54519"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="12">
<Template>units/athen/infantry_marine_archer_e</Template>
<Player>1</Player>
<Position x="85.08178" z="136.46955"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="13">
<Template>units/athen/infantry_marine_archer_e</Template>
<Player>1</Player>
<Position x="84.68078" z="132.29049"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="14">
<Template>units/athen/infantry_marine_archer_e</Template>
<Player>1</Player>
<Position x="84.58814" z="128.5625"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="15">
<Template>units/athen/infantry_marine_archer_e</Template>
<Player>1</Player>
<Position x="84.54111" z="119.59098"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="16">
<Template>units/athen/infantry_marine_archer_e</Template>
<Player>1</Player>
<Position x="84.61438" z="123.77323"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="26">
<Template>units/athen/infantry_spearman_e</Template>
<Player>1</Player>
<Position x="87.67463" z="142.93183"/>
<Orientation y="1.547"/>
</Entity>
<Entity uid="27">
<Template>units/athen/infantry_spearman_e</Template>
<Player>1</Player>
<Position x="87.72016" z="137.77866"/>
<Orientation y="1.57961"/>
</Entity>
<Entity uid="28">
<Template>units/athen/infantry_spearman_e</Template>
<Player>1</Player>
<Position x="88.15882" z="146.16172"/>
<Orientation y="1.63631"/>
</Entity>
<Entity uid="29">
<Template>units/athen/infantry_spearman_e</Template>
<Player>1</Player>
<Position x="87.92872" z="154.50611"/>
<Orientation y="1.6508"/>
</Entity>
<Entity uid="30">
<Template>units/athen/infantry_spearman_e</Template>
<Player>1</Player>
<Position x="88.56109" z="133.22132"/>
<Orientation y="1.56295"/>
</Entity>
<Entity uid="31">
<Template>units/athen/infantry_spearman_e</Template>
<Player>1</Player>
<Position x="87.7494" z="121.28443"/>
<Orientation y="1.38645"/>
</Entity>
<Entity uid="32">
<Template>units/athen/infantry_spearman_e</Template>
<Player>1</Player>
<Position x="88.09148" z="129.64138"/>
<Orientation y="1.46003"/>
</Entity>
<Entity uid="33">
<Template>units/athen/infantry_spearman_e</Template>
<Player>1</Player>
<Position x="87.97072" z="125.21911"/>
<Orientation y="1.67937"/>
</Entity>
<Entity uid="34">
<Template>units/athen/infantry_spearman_e</Template>
<Player>1</Player>
<Position x="88.36658" z="150.86048"/>
<Orientation y="1.60602"/>
</Entity>
<Entity uid="35">
<Template>units/athen/infantry_spearman_e</Template>
<Player>1</Player>
<Position x="88.1539" z="117.16916"/>
<Orientation y="1.74827"/>
</Entity>
<Entity uid="49">
<Template>units/athen/infantry_marine_archer_b</Template>
<Player>2</Player>
<Position x="163.9004" z="125.90111"/>
<Orientation y="-1.4233"/>
</Entity>
<Entity uid="50">
<Template>units/athen/infantry_marine_archer_b</Template>
<Player>2</Player>
<Position x="164.3852" z="123.3568"/>
<Orientation y="-0.9854"/>
</Entity>
<Entity uid="51">
<Template>units/athen/infantry_marine_archer_b</Template>
<Player>2</Player>
<Position x="163.96814" z="119.58962"/>
<Orientation y="-1.14623"/>
</Entity>
<Entity uid="52">
<Template>units/athen/infantry_marine_archer_b</Template>
<Player>2</Player>
<Position x="163.79677" z="115.81934"/>
<Orientation y="-1.68952"/>
</Entity>
<Entity uid="53">
<Template>units/athen/infantry_marine_archer_b</Template>
<Player>2</Player>
<Position x="164.07688" z="111.72794"/>
<Orientation y="-1.62508"/>
</Entity>
<Entity uid="54">
<Template>units/athen/infantry_javelineer_a</Template>
<Player>2</Player>
<Position x="159.92733" z="127.59427"/>
<Orientation y="-1.76246"/>
</Entity>
<Entity uid="55">
<Template>units/athen/infantry_javelineer_a</Template>
<Player>2</Player>
<Position x="160.04854" z="123.91709"/>
<Orientation y="-1.67342"/>
</Entity>
<Entity uid="56">
<Template>units/athen/infantry_javelineer_a</Template>
<Player>2</Player>
<Position x="159.83585" z="120.3453"/>
<Orientation y="-1.49901"/>
</Entity>
<Entity uid="57">
<Template>units/athen/infantry_javelineer_a</Template>
<Player>2</Player>
<Position x="160.17838" z="115.80375"/>
<Orientation y="-1.43216"/>
</Entity>
<Entity uid="58">
<Template>units/athen/infantry_javelineer_a</Template>
<Player>2</Player>
<Position x="160.20728" z="111.99112"/>
<Orientation y="-1.9506"/>
</Entity>
<Entity uid="59">
<Template>units/athen/infantry_javelineer_e</Template>
<Player>2</Player>
<Position x="157.74924" z="125.35561"/>
<Orientation y="-1.54555"/>
</Entity>
<Entity uid="60">
<Template>units/athen/infantry_javelineer_e</Template>
<Player>2</Player>
<Position x="157.21273" z="120.67916"/>
<Orientation y="-1.55486"/>
</Entity>
<Entity uid="61">
<Template>units/athen/infantry_javelineer_e</Template>
<Player>2</Player>
<Position x="157.98159" z="117.02564"/>
<Orientation y="-1.35657"/>
</Entity>
<Entity uid="62">
<Template>units/athen/infantry_javelineer_e</Template>
<Player>2</Player>
<Position x="157.73165" z="112.43825"/>
<Orientation y="-1.33074"/>
</Entity>
<Entity uid="63">
<Template>units/athen/infantry_spearman_b</Template>
<Player>2</Player>
<Position x="175.43361" z="127.81891"/>
<Orientation y="-1.53321"/>
</Entity>
<Entity uid="64">
<Template>units/athen/infantry_spearman_b</Template>
<Player>2</Player>
<Position x="176.15781" z="123.52012"/>
<Orientation y="-1.49622"/>
</Entity>
<Entity uid="65">
<Template>units/athen/infantry_spearman_b</Template>
<Player>2</Player>
<Position x="176.0735" z="119.49639"/>
<Orientation y="-1.38704"/>
</Entity>
<Entity uid="66">
<Template>units/athen/infantry_spearman_b</Template>
<Player>2</Player>
<Position x="175.8148" z="115.91982"/>
<Orientation y="-1.35958"/>
</Entity>
<Entity uid="67">
<Template>units/athen/infantry_spearman_b</Template>
<Player>2</Player>
<Position x="175.55961" z="111.81333"/>
<Orientation y="-1.4916"/>
</Entity>
<Entity uid="73">
<Template>units/athen/infantry_spearman_b</Template>
<Player>2</Player>
<Position x="171.84617" z="127.92798"/>
<Orientation y="-1.3056"/>
</Entity>
<Entity uid="74">
<Template>units/athen/infantry_spearman_b</Template>
<Player>2</Player>
<Position x="171.98732" z="123.73227"/>
<Orientation y="-1.49645"/>
</Entity>
<Entity uid="75">
<Template>units/athen/infantry_spearman_b</Template>
<Player>2</Player>
<Position x="171.78121" z="119.4952"/>
<Orientation y="-1.3431"/>
</Entity>
<Entity uid="76">
<Template>units/athen/infantry_spearman_b</Template>
<Player>2</Player>
<Position x="171.91086" z="116.1196"/>
<Orientation y="-1.37102"/>
</Entity>
<Entity uid="77">
<Template>units/athen/infantry_spearman_b</Template>
<Player>2</Player>
<Position x="172.01429" z="111.56289"/>
<Orientation y="-1.36196"/>
</Entity>
<Entity uid="87">
<Template>units/athen/champion_ranged</Template>
<Player>1</Player>
<Position x="85.35996" z="115.0928"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="88">
<Template>units/athen/champion_ranged</Template>
<Player>1</Player>
<Position x="85.40084" z="109.64284"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="89">
<Template>units/athen/champion_ranged</Template>
<Player>1</Player>
<Position x="85.4768" z="104.69619"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="90">
<Template>units/athen/champion_ranged</Template>
<Player>1</Player>
<Position x="85.74891" z="100.50165"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="91">
<Template>units/athen/champion_infantry</Template>
<Player>1</Player>
<Position x="85.69983" z="158.74531"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="92">
<Template>units/athen/champion_infantry</Template>
<Player>1</Player>
<Position x="85.65835" z="162.1988"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="93">
<Template>units/athen/champion_infantry</Template>
<Player>1</Player>
<Position x="86.43186" z="166.41028"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="94">
<Template>units/athen/champion_infantry</Template>
<Player>1</Player>
<Position x="86.41076" z="169.14298"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="100">
- <Template>units/mace/champion_infantry_e</Template>
+ <Template>units/mace/champion_infantry_spearman_02</Template>
<Player>2</Player>
<Position x="168.93398" z="103.77627"/>
<Orientation y="-2.2371"/>
</Entity>
<Entity uid="101">
- <Template>units/mace/champion_infantry_e</Template>
+ <Template>units/mace/champion_infantry_spearman_02</Template>
<Player>2</Player>
<Position x="165.84691" z="98.34908"/>
<Orientation y="-2.04358"/>
</Entity>
<Entity uid="102">
- <Template>units/mace/champion_infantry_e</Template>
+ <Template>units/mace/champion_infantry_spearman_02</Template>
<Player>2</Player>
<Position x="168.86768" z="98.66317"/>
<Orientation y="-2.3224"/>
</Entity>
<Entity uid="103">
- <Template>units/mace/champion_infantry_e</Template>
+ <Template>units/mace/champion_infantry_spearman_02</Template>
<Player>2</Player>
<Position x="163.70981" z="101.77434"/>
<Orientation y="-2.35347"/>
</Entity>
<Entity uid="104">
- <Template>units/mace/champion_infantry_e</Template>
+ <Template>units/mace/champion_infantry_spearman_02</Template>
<Player>2</Player>
<Position x="166.12447" z="103.64206"/>
<Orientation y="-2.23449"/>
</Entity>
<Entity uid="114">
<Template>units/athen/infantry_spearman_e</Template>
<Player>2</Player>
<Position x="168.18609" z="127.05552"/>
<Orientation y="-1.26153"/>
</Entity>
<Entity uid="115">
<Template>units/athen/infantry_spearman_e</Template>
<Player>2</Player>
<Position x="167.85106" z="122.80275"/>
<Orientation y="-1.3042"/>
</Entity>
<Entity uid="116">
<Template>units/athen/infantry_spearman_e</Template>
<Player>2</Player>
<Position x="167.55842" z="119.18093"/>
<Orientation y="-1.52973"/>
</Entity>
<Entity uid="117">
<Template>units/athen/infantry_spearman_e</Template>
<Player>2</Player>
<Position x="167.74762" z="115.1375"/>
<Orientation y="-1.61007"/>
</Entity>
<Entity uid="118">
<Template>units/athen/infantry_spearman_e</Template>
<Player>2</Player>
<Position x="168.84044" z="111.44822"/>
<Orientation y="-1.36821"/>
</Entity>
<Entity uid="133">
<Template>units/athen/infantry_marine_archer_e</Template>
<Player>1</Player>
<Position x="82.00031" z="119.69343"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="134">
<Template>units/athen/infantry_marine_archer_e</Template>
<Player>1</Player>
<Position x="81.79651" z="123.9323"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="135">
<Template>units/athen/infantry_marine_archer_e</Template>
<Player>1</Player>
<Position x="81.89438" z="129.08104"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="136">
<Template>units/athen/infantry_marine_archer_e</Template>
<Player>1</Player>
<Position x="82.47654" z="132.5271"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="137">
<Template>units/athen/infantry_marine_archer_e</Template>
<Player>1</Player>
<Position x="82.42194" z="137.56394"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="138">
<Template>units/athen/infantry_marine_archer_e</Template>
<Player>1</Player>
<Position x="82.26951" z="141.66085"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="148">
<Template>units/thebes_sacred_band_hoplitai</Template>
<Player>2</Player>
<Position x="164.92902" z="136.10615"/>
<Orientation y="-2.00321"/>
</Entity>
<Entity uid="149">
<Template>units/thebes_sacred_band_hoplitai</Template>
<Player>2</Player>
<Position x="165.04322" z="139.71152"/>
<Orientation y="-1.77216"/>
</Entity>
<Entity uid="150">
<Template>units/thebes_sacred_band_hoplitai</Template>
<Player>2</Player>
<Position x="165.55748" z="145.05408"/>
<Orientation y="-2.13974"/>
</Entity>
<Entity uid="151">
<Template>units/thebes_sacred_band_hoplitai</Template>
<Player>2</Player>
<Position x="165.77775" z="148.99723"/>
<Orientation y="-1.97867"/>
</Entity>
<Entity uid="152">
<Template>units/thebes_sacred_band_hoplitai</Template>
<Player>2</Player>
<Position x="165.6308" z="154.0413"/>
<Orientation y="-1.7224"/>
</Entity>
<Entity uid="153">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="93.55131" z="196.04044"/>
<Orientation y="-0.05416"/>
</Entity>
<Entity uid="154">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="100.2059" z="196.81395"/>
<Orientation y="0.1375"/>
</Entity>
<Entity uid="155">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="108.77642" z="195.42637"/>
<Orientation y="0.01464"/>
</Entity>
<Entity uid="156">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="115.92881" z="195.73288"/>
<Orientation y="0.16369"/>
</Entity>
<Entity uid="157">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="123.54836" z="196.34903"/>
<Orientation y="0.09055"/>
</Entity>
<Entity uid="158">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="130.39568" z="195.12089"/>
<Orientation y="0.1853"/>
</Entity>
<Entity uid="159">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="137.8165" z="194.05979"/>
<Orientation y="0.09961"/>
</Entity>
<Entity uid="160">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="144.28331" z="196.50376"/>
<Orientation y="0.31612"/>
</Entity>
<Entity uid="161">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="150.16401" z="196.96946"/>
<Orientation y="0.23981"/>
</Entity>
<Entity uid="162">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="157.32308" z="195.88653"/>
<Orientation y="0.19652"/>
</Entity>
<Entity uid="163">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="102.53267" z="60.37061"/>
<Orientation y="3.09627"/>
</Entity>
<Entity uid="164">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="109.60294" z="60.11126"/>
<Orientation y="3.03866"/>
</Entity>
<Entity uid="165">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="115.94045" z="59.767"/>
<Orientation y="3.09458"/>
</Entity>
<Entity uid="166">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="122.49677" z="60.28405"/>
<Orientation y="-3.09868"/>
</Entity>
<Entity uid="167">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="127.891" z="60.89231"/>
<Orientation y="-3.01844"/>
</Entity>
<Entity uid="168">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="132.57477" z="60.71798"/>
<Orientation y="-3.08663"/>
</Entity>
<Entity uid="169">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="137.60975" z="60.28405"/>
<Orientation y="-3.01603"/>
</Entity>
<Entity uid="170">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="142.77277" z="61.15467"/>
<Orientation y="-3.0513"/>
</Entity>
<Entity uid="171">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="148.431" z="61.5942"/>
<Orientation y="-2.95421"/>
</Entity>
<Entity uid="172">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="154.53423" z="61.85926"/>
<Orientation y="-2.83761"/>
</Entity>
<Entity uid="173">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="164.36094" z="198.3874"/>
<Orientation y="-0.14963"/>
</Entity>
<Entity uid="174">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="171.18427" z="196.90304"/>
<Orientation y="0.00441"/>
</Entity>
<Entity uid="175">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="177.99465" z="196.90304"/>
<Orientation y="0.04299"/>
</Entity>
<Entity uid="176">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="183.95482" z="199.13898"/>
<Orientation y="0.12874"/>
</Entity>
<Entity uid="177">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="189.49872" z="199.89692"/>
<Orientation y="0.0861"/>
</Entity>
<Entity uid="178">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="194.82097" z="200.35473"/>
<Orientation y="0.13311"/>
</Entity>
<Entity uid="179">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="200.36091" z="200.66124"/>
<Orientation y="0.15796"/>
</Entity>
<Entity uid="180">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="85.73194" z="196.90304"/>
<Orientation y="-0.00931"/>
</Entity>
<Entity uid="181">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="80.21192" z="196.90304"/>
<Orientation y="0.01948"/>
</Entity>
<Entity uid="182">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="74.27268" z="196.60914"/>
<Orientation y="0.03573"/>
</Entity>
<Entity uid="183">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="69.77114" z="197.64213"/>
<Orientation y="-0.06882"/>
</Entity>
<Entity uid="184">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="64.04015" z="197.34575"/>
<Orientation y="0.11048"/>
</Entity>
<Entity uid="185">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="57.96673" z="199.8969"/>
<Orientation y="0.17592"/>
</Entity>
<Entity uid="186">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="52.13453" z="199.44138"/>
<Orientation y="-0.22782"/>
</Entity>
<Entity uid="187">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="53.07137" z="187.6481"/>
<Orientation y="-1.57081"/>
</Entity>
<Entity uid="188">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="52.85344" z="178.87026"/>
<Orientation y="-1.35808"/>
</Entity>
<Entity uid="189">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="52.79319" z="169.99645"/>
<Orientation y="-1.41765"/>
</Entity>
<Entity uid="190">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="53.07105" z="161.1642"/>
<Orientation y="-1.69584"/>
</Entity>
<Entity uid="191">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="53.21732" z="153.41715"/>
<Orientation y="-1.57081"/>
</Entity>
<Entity uid="192">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="53.45047" z="146.14866"/>
<Orientation y="-1.49312"/>
</Entity>
<Entity uid="193">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="52.86995" z="140.30407"/>
<Orientation y="-1.58132"/>
</Entity>
<Entity uid="194">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="52.72561" z="134.35021"/>
<Orientation y="-1.28548"/>
</Entity>
<Entity uid="195">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="53.1866" z="125.93258"/>
<Orientation y="-1.73449"/>
</Entity>
<Entity uid="196">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="53.84311" z="117.21229"/>
<Orientation y="-1.76903"/>
</Entity>
<Entity uid="197">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="54.08632" z="108.40874"/>
<Orientation y="-1.34607"/>
</Entity>
<Entity uid="198">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="54.15517" z="102.69086"/>
<Orientation y="-1.25141"/>
</Entity>
<Entity uid="199">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="53.55303" z="95.3372"/>
<Orientation y="-1.32604"/>
</Entity>
<Entity uid="200">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="53.87899" z="87.89133"/>
<Orientation y="-1.33306"/>
</Entity>
<Entity uid="201">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="54.55526" z="79.80971"/>
<Orientation y="-1.39238"/>
</Entity>
<Entity uid="202">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="55.09821" z="72.89211"/>
<Orientation y="-1.41527"/>
</Entity>
<Entity uid="203">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="55.64477" z="64.6248"/>
<Orientation y="-1.37415"/>
</Entity>
<Entity uid="204">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="56.29339" z="58.46029"/>
<Orientation y="3.1061"/>
</Entity>
<Entity uid="205">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="61.70662" z="59.78936"/>
<Orientation y="3.0051"/>
</Entity>
<Entity uid="206">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="67.3211" z="58.85682"/>
<Orientation y="3.03331"/>
</Entity>
<Entity uid="207">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="73.90725" z="59.12218"/>
<Orientation y="-3.11812"/>
</Entity>
<Entity uid="208">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="79.34742" z="60.19219"/>
<Orientation y="3.1329"/>
</Entity>
<Entity uid="209">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="84.13813" z="59.78936"/>
<Orientation y="3.13195"/>
</Entity>
<Entity uid="210">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="90.29313" z="59.78937"/>
<Orientation y="-3.06472"/>
</Entity>
<Entity uid="211">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="96.7927" z="61.27594"/>
<Orientation y="-2.85111"/>
</Entity>
<Entity uid="212">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="160.51992" z="61.72884"/>
<Orientation y="3.06913"/>
</Entity>
<Entity uid="213">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="167.58118" z="62.31449"/>
<Orientation y="3.03055"/>
</Entity>
<Entity uid="214">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="174.3474" z="62.66799"/>
<Orientation y="3.13067"/>
</Entity>
<Entity uid="215">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="179.61266" z="62.668"/>
<Orientation y="3.1091"/>
</Entity>
<Entity uid="216">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="185.47771" z="60.34081"/>
<Orientation y="-3.12844"/>
</Entity>
<Entity uid="217">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="191.50223" z="61.26343"/>
<Orientation y="-3.0148"/>
</Entity>
<Entity uid="218">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="198.11834" z="61.4958"/>
<Orientation y="-2.8517"/>
</Entity>
<Entity uid="219">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="203.83732" z="62.07972"/>
<Orientation y="-2.68131"/>
</Entity>
<Entity uid="220">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="204.28664" z="76.26519"/>
<Orientation y="1.48745"/>
</Entity>
<Entity uid="221">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="203.28345" z="68.31084"/>
<Orientation y="1.4444"/>
</Entity>
<Entity uid="222">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="204.55613" z="82.26571"/>
<Orientation y="1.24268"/>
</Entity>
<Entity uid="223">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="205.35261" z="90.30156"/>
<Orientation y="1.37505"/>
</Entity>
<Entity uid="224">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="205.74265" z="97.34218"/>
<Orientation y="1.2478"/>
</Entity>
<Entity uid="225">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="205.2305" z="103.23414"/>
<Orientation y="1.52302"/>
</Entity>
<Entity uid="226">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="205.85895" z="110.05605"/>
<Orientation y="1.53547"/>
</Entity>
<Entity uid="227">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="205.71656" z="116.01272"/>
<Orientation y="1.58695"/>
</Entity>
<Entity uid="228">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="204.19433" z="121.85218"/>
<Orientation y="1.35978"/>
</Entity>
<Entity uid="229">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="205.11728" z="129.62616"/>
<Orientation y="1.60473"/>
</Entity>
<Entity uid="230">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="202.70005" z="136.20231"/>
<Orientation y="1.57624"/>
</Entity>
<Entity uid="231">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="204.6055" z="142.61785"/>
<Orientation y="0.86162"/>
</Entity>
<Entity uid="232">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="205.47352" z="148.87075"/>
<Orientation y="1.47304"/>
</Entity>
<Entity uid="233">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="205.73765" z="155.81493"/>
<Orientation y="1.45241"/>
</Entity>
<Entity uid="234">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="204.6814" z="161.30915"/>
<Orientation y="1.64641"/>
</Entity>
<Entity uid="235">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="205.22507" z="165.5698"/>
<Orientation y="1.4741"/>
</Entity>
<Entity uid="236">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="205.69892" z="171.36472"/>
<Orientation y="1.51912"/>
</Entity>
<Entity uid="237">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="204.64844" z="177.2687"/>
<Orientation y="1.4743"/>
</Entity>
<Entity uid="238">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="204.8902" z="183.62476"/>
<Orientation y="1.76384"/>
</Entity>
<Entity uid="239">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="203.6107" z="190.90508"/>
<Orientation y="1.61974"/>
</Entity>
<Entity uid="240">
<Template>actor|props/special/common/waypoint_flag_factions.xml</Template>
<Position x="204.98884" z="196.37487"/>
<Orientation y="1.34876"/>
</Entity>
<Entity uid="241">
<Template>actor|props/special/eyecandy/barrels_floating.xml</Template>
<Position x="24.09777" z="10.94149"/>
<Orientation y="-1.8136"/>
</Entity>
<Entity uid="242">
<Template>actor|props/special/eyecandy/barrels_floating.xml</Template>
<Position x="18.30564" z="45.95205"/>
<Orientation y="0.8145"/>
</Entity>
<Entity uid="243">
<Template>actor|props/special/eyecandy/barrels_floating.xml</Template>
<Position x="19.74958" z="129.83954"/>
<Orientation y="-2.25504"/>
</Entity>
<Entity uid="244">
<Template>actor|props/special/eyecandy/barrels_floating.xml</Template>
<Position x="22.1819" z="189.82078"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="245">
<Template>actor|props/special/eyecandy/barrels_floating.xml</Template>
<Position x="21.44245" z="231.97628"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="246">
<Template>actor|props/special/eyecandy/barrels_floating.xml</Template>
<Position x="95.38221" z="225.0082"/>
<Orientation y="-1.66596"/>
</Entity>
<Entity uid="247">
<Template>actor|props/special/eyecandy/barrels_floating.xml</Template>
<Position x="230.20478" z="232.55745"/>
<Orientation y="1.02048"/>
</Entity>
<Entity uid="248">
<Template>actor|props/special/eyecandy/barrels_floating.xml</Template>
<Position x="233.0583" z="197.99228"/>
<Orientation y="-2.33655"/>
</Entity>
<Entity uid="249">
<Template>actor|props/special/eyecandy/barrels_floating.xml</Template>
<Position x="241.22414" z="115.67377"/>
<Orientation y="0.69285"/>
</Entity>
<Entity uid="250">
<Template>actor|props/special/eyecandy/barrels_floating.xml</Template>
<Position x="235.76034" z="50.85524"/>
<Orientation y="-1.28077"/>
</Entity>
<Entity uid="251">
<Template>actor|props/special/eyecandy/barrels_floating.xml</Template>
<Position x="195.93171" z="22.05062"/>
<Orientation y="0.7803"/>
</Entity>
<Entity uid="252">
<Template>actor|props/special/eyecandy/barrels_floating.xml</Template>
<Position x="124.58095" z="21.73012"/>
<Orientation y="-1.62168"/>
</Entity>
<Entity uid="253">
<Template>actor|props/special/eyecandy/barrels_floating.xml</Template>
<Position x="69.73842" z="17.81537"/>
<Orientation y="0.55465"/>
</Entity>
<Entity uid="254">
<Template>actor|props/special/eyecandy/basket_celt_a.xml</Template>
<Position x="51.77524" z="56.1783"/>
<Orientation y="-2.81887"/>
</Entity>
<Entity uid="255">
<Template>actor|props/special/eyecandy/basket_celt_a.xml</Template>
<Position x="52.58643" z="54.62182"/>
<Orientation y="0.65285"/>
</Entity>
<Entity uid="256">
<Template>actor|props/special/eyecandy/basket_celt_a.xml</Template>
<Position x="53.67078" z="55.98652"/>
<Orientation y="0.03978"/>
</Entity>
<Entity uid="257">
<Template>actor|props/special/eyecandy/basket_celt_a.xml</Template>
<Position x="53.82865" z="58.51212"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="258">
<Template>actor|props/special/eyecandy/basket_celt_a.xml</Template>
<Position x="54.65876" z="59.02291"/>
<Orientation y="2.46119"/>
</Entity>
<Entity uid="259">
<Template>actor|props/special/eyecandy/basket_celt_a.xml</Template>
<Position x="55.48665" z="57.08103"/>
<Orientation y="-2.90203"/>
</Entity>
<Entity uid="260">
<Template>actor|props/special/eyecandy/basket_celt_a.xml</Template>
<Position x="57.236" z="54.4358"/>
<Orientation y="1.24958"/>
</Entity>
<Entity uid="261">
<Template>actor|props/special/eyecandy/basket_celt_a.xml</Template>
<Position x="55.73435" z="54.66913"/>
<Orientation y="-2.7257"/>
</Entity>
<Entity uid="262">
<Template>actor|props/special/eyecandy/basket_hele_a.xml</Template>
<Position x="202.49762" z="106.43627"/>
<Orientation y="-2.53582"/>
</Entity>
<Entity uid="263">
<Template>actor|props/special/eyecandy/basket_hele_a.xml</Template>
<Position x="200.40294" z="103.55146"/>
<Orientation y="2.56586"/>
</Entity>
<Entity uid="264">
<Template>actor|props/special/eyecandy/basket_hele_a.xml</Template>
<Position x="202.41092" z="102.87121"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="265">
<Template>actor|props/special/eyecandy/basket_hele_a.xml</Template>
<Position x="204.49474" z="105.48148"/>
<Orientation y="-0.07821"/>
</Entity>
<Entity uid="266">
<Template>actor|props/special/eyecandy/basket_hele_a.xml</Template>
<Position x="203.64512" z="109.58451"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="267">
<Template>actor|props/special/eyecandy/basket_hele_a.xml</Template>
<Position x="202.31525" z="110.59411"/>
<Orientation y="-2.33916"/>
</Entity>
<Entity uid="268">
<Template>actor|props/special/eyecandy/basket_hele_a.xml</Template>
<Position x="200.35592" z="107.60148"/>
<Orientation y="2.85758"/>
</Entity>
<Entity uid="269">
<Template>actor|props/special/eyecandy/basket_hele_a.xml</Template>
<Position x="200.8119" z="106.03942"/>
<Orientation y="-2.24141"/>
</Entity>
<Entity uid="270">
<Template>actor|props/special/eyecandy/basket_hele_a.xml</Template>
<Position x="199.78434" z="104.37658"/>
<Orientation y="1.88257"/>
</Entity>
<Entity uid="271">
<Template>actor|props/special/eyecandy/basket_hele_a.xml</Template>
<Position x="203.40566" z="104.16984"/>
<Orientation y="-2.57895"/>
</Entity>
<Entity uid="272">
<Template>actor|props/special/eyecandy/basket_iber_a.xml</Template>
<Position x="200.12026" z="90.02073"/>
<Orientation y="-2.84327"/>
</Entity>
<Entity uid="273">
<Template>actor|props/special/eyecandy/basket_iber_a.xml</Template>
<Position x="199.16485" z="87.19292"/>
<Orientation y="3.0932"/>
</Entity>
<Entity uid="274">
<Template>actor|props/special/eyecandy/basket_iber_a.xml</Template>
<Position x="199.35206" z="84.45533"/>
<Orientation y="0.84388"/>
</Entity>
<Entity uid="275">
<Template>actor|props/special/eyecandy/basket_iber_a.xml</Template>
<Position x="201.07197" z="86.99408"/>
<Orientation y="0.30474"/>
</Entity>
<Entity uid="276">
<Template>actor|props/special/eyecandy/basket_iber_a.xml</Template>
<Position x="201.70116" z="88.82795"/>
<Orientation y="0.45768"/>
</Entity>
<Entity uid="277">
<Template>actor|props/special/eyecandy/basket_iber_a.xml</Template>
<Position x="203.02634" z="91.61216"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="278">
<Template>actor|props/special/eyecandy/bench_1.xml</Template>
<Position x="52.85126" z="201.7006"/>
<Orientation y="2.70432"/>
</Entity>
<Entity uid="279">
<Template>actor|props/special/eyecandy/crate_a.xml</Template>
<Position x="51.862" z="197.77573"/>
<Orientation y="3.13067"/>
</Entity>
<Entity uid="280">
<Template>actor|props/special/eyecandy/crate_a.xml</Template>
<Position x="50.30472" z="200.36255"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="281">
<Template>actor|props/special/eyecandy/crate_a.xml</Template>
<Position x="50.34046" z="204.95917"/>
<Orientation y="-2.44985"/>
</Entity>
<Entity uid="282">
<Template>actor|props/special/eyecandy/crate_a.xml</Template>
<Position x="55.96468" z="201.75222"/>
<Orientation y="0.6807"/>
</Entity>
<Entity uid="283">
<Template>actor|props/special/eyecandy/dummy_a.xml</Template>
<Position x="53.51594" z="204.88572"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="284">
<Template>actor|props/special/eyecandy/produce_bin_a.xml</Template>
<Position x="57.66086" z="204.26197"/>
<Orientation y="-2.26987"/>
</Entity>
<Entity uid="285">
<Template>actor|props/special/eyecandy/rug_stand_iber.xml</Template>
<Position x="199.15325" z="197.70322"/>
<Orientation y="-2.78365"/>
</Entity>
<Entity uid="286">
<Template>actor|props/special/eyecandy/rug_stand_iber.xml</Template>
<Position x="196.91013" z="202.37214"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="287">
<Template>actor|props/special/eyecandy/sack_1.xml</Template>
<Position x="201.08245" z="194.04355"/>
<Orientation y="-3.00362"/>
</Entity>
<Entity uid="288">
<Template>actor|props/special/eyecandy/sack_1.xml</Template>
<Position x="203.03187" z="196.23606"/>
<Orientation y="1.13674"/>
</Entity>
<Entity uid="289">
<Template>actor|props/special/eyecandy/sack_1_rough.xml</Template>
<Position x="202.47992" z="194.68703"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="292">
<Template>actor|props/special/eyecandy/table1_long.xml</Template>
<Position x="52.35117" z="191.143"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="293">
<Template>actor|props/special/eyecandy/table_rectangle.xml</Template>
<Position x="61.922" z="201.63598"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="294">
<Template>actor|props/special/eyecandy/table_square.xml</Template>
<Position x="50.71071" z="194.34505"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="295">
<Template>actor|props/special/eyecandy/tables_weapons_iber.xml</Template>
<Position x="55.52977" z="196.6873"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="296">
<Template>actor|props/special/eyecandy/vase_hele_a.xml</Template>
<Position x="59.18123" z="55.7405"/>
<Orientation y="2.94384"/>
</Entity>
<Entity uid="297">
<Template>actor|props/special/eyecandy/vase_hele_a.xml</Template>
<Position x="61.60576" z="54.8065"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="298">
<Template>actor|props/special/eyecandy/vase_hele_a.xml</Template>
<Position x="60.79381" z="55.85904"/>
<Orientation y="-0.54134"/>
</Entity>
<Entity uid="299">
<Template>actor|props/special/eyecandy/vase_hele_a.xml</Template>
<Position x="59.7077" z="58.00937"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="300">
<Template>actor|props/special/eyecandy/vase_hele_a.xml</Template>
<Position x="59.8234" z="60.7164"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="301">
<Template>actor|props/special/eyecandy/vase_hele_a.xml</Template>
<Position x="62.43648" z="57.21924"/>
<Orientation y="-3.05034"/>
</Entity>
<Entity uid="302">
<Template>actor|props/special/eyecandy/vase_hele_a.xml</Template>
<Position x="62.44057" z="53.27465"/>
<Orientation y="0.85012"/>
</Entity>
<Entity uid="303">
<Template>actor|props/special/eyecandy/vase_hele_a.xml</Template>
<Position x="64.08698" z="55.4366"/>
<Orientation y="0.27932"/>
</Entity>
<Entity uid="304">
<Template>actor|props/special/eyecandy/vase_hele_a.xml</Template>
<Position x="59.55036" z="53.56919"/>
<Orientation y="0.8845"/>
</Entity>
<Entity uid="305">
<Template>actor|props/special/eyecandy/vase_hele_a.xml</Template>
<Position x="65.76122" z="53.58239"/>
<Orientation y="-2.81722"/>
</Entity>
<Entity uid="306">
<Template>actor|props/special/eyecandy/vase_iberians_a.xml</Template>
<Position x="205.73581" z="54.54451"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="307">
<Template>actor|props/special/eyecandy/vase_iberians_a.xml</Template>
<Position x="203.17812" z="55.95575"/>
<Orientation y="-1.54767"/>
</Entity>
<Entity uid="308">
<Template>actor|props/special/eyecandy/vase_iberians_a.xml</Template>
<Position x="201.94997" z="55.97371"/>
<Orientation y="-3.0278"/>
</Entity>
<Entity uid="309">
<Template>actor|props/special/eyecandy/vase_iberians_a.xml</Template>
<Position x="201.89666" z="53.8698"/>
<Orientation y="1.45386"/>
</Entity>
<Entity uid="310">
<Template>actor|props/special/eyecandy/vase_iberians_a.xml</Template>
<Position x="204.42431" z="54.48642"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="311">
<Template>actor|props/special/eyecandy/vase_iberians_a.xml</Template>
<Position x="205.08484" z="56.83909"/>
<Orientation y="1.59392"/>
</Entity>
<Entity uid="312">
<Template>actor|props/special/eyecandy/vase_iberians_a.xml</Template>
<Position x="206.23911" z="57.00554"/>
<Orientation y="3.1139"/>
</Entity>
<Entity uid="313">
<Template>actor|props/special/eyecandy/vase_iberians_a.xml</Template>
<Position x="206.28652" z="55.63285"/>
<Orientation y="2.98397"/>
</Entity>
<Entity uid="314">
<Template>actor|props/special/eyecandy/vase_iberians_a.xml</Template>
<Position x="206.4862" z="53.68674"/>
<Orientation y="-3.11786"/>
</Entity>
<Entity uid="315">
<Template>actor|props/special/eyecandy/vase_iberians_a.xml</Template>
<Position x="206.37862" z="52.7417"/>
<Orientation y="-1.74837"/>
</Entity>
<Entity uid="316">
<Template>actor|props/special/eyecandy/vase_iberians_a.xml</Template>
<Position x="204.94501" z="52.76326"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="317">
<Template>actor|props/special/eyecandy/vase_iberians_a.xml</Template>
<Position x="204.29148" z="53.22532"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="318">
<Template>actor|props/special/eyecandy/vase_iberians_a.xml</Template>
<Position x="202.80735" z="54.39438"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="319">
<Template>actor|props/special/eyecandy/vase_iberians_a.xml</Template>
<Position x="202.73786" z="55.09504"/>
<Orientation y="2.35621"/>
</Entity>
</Entities>
<Paths/>
</Scenario>
Index: ps/trunk/binaries/data/mods/public/maps/scenarios/death_canyon_invasion_force.xml
===================================================================
--- ps/trunk/binaries/data/mods/public/maps/scenarios/death_canyon_invasion_force.xml (revision 24656)
+++ ps/trunk/binaries/data/mods/public/maps/scenarios/death_canyon_invasion_force.xml (revision 24657)
@@ -1,18336 +1,18336 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scenario version="7">
<Environment>
<SkySet>overcast</SkySet>
<SunColor r="1.03932" g="0.872214" b="0.55838"/>
<SunElevation angle="0.506214"/>
<SunRotation angle="0.674952"/>
<TerrainAmbientColor r="0.258824" g="0.321569" b="0.454902"/>
<UnitsAmbientColor r="0.258824" g="0.321569" b="0.454902"/>
<Fog>
<FogFactor>0.00474609</FogFactor>
<FogThickness>0.262695</FogThickness>
<FogColor r="0.819608" g="0.74902" b="0.513726"/>
</Fog>
<Water>
<WaterBody>
<Type>lake</Type>
<Color r="0.294118" g="0.34902" b="0.694118"/>
<Height>17.6262</Height>
<Waviness>3.0</Waviness>
<Murkiness>0.338867</Murkiness>
<Tint r="0.756863" g="0.701961" b="0.521569"/>
</WaterBody>
</Water>
<Postproc>
<Brightness>0</Brightness>
<Contrast>1.09961</Contrast>
<Saturation>0.99</Saturation>
<Bloom>0.2</Bloom>
<PostEffect>hdr</PostEffect>
</Postproc>
</Environment>
<Camera>
<Position x="679.379" y="126.188" z="732.106"/>
<Rotation angle="0"/>
<Declination angle="0.610865"/>
</Camera>
<ScriptSettings><![CDATA[
{
"CircularMap": true,
"Preview": "death_canyon_invasion_force.png",
"Description": "A deep rocky canyon slicing through the desert. Good for multiplayer.\u000a\u000a2 teams of 2 players. 1 player on each team starts with a base and resources. The other player starts with only a large army to assist their teammate.",
"Keywords": [],
"LockTeams": true,
"Name": "Death Canyon - Invasion Force",
"PlayerData": [
{
"Civ": "rome",
"Color": {
"b": 200,
"g": 46,
"r": 46
},
"Name": "Player 1",
"Resources": {
"food": 300,
"metal": 300,
"stone": 300,
"wood": 300
},
"Team": 0
},
{
"Civ": "rome",
"Color": {
"b": 220,
"g": 99,
"r": 166
},
"Name": "Invasion Force",
"PopulationLimit": 1,
"Resources": {
"stone": 2500
},
"DisabledTemplates": [
"structures/rome/civil_centre"
],
"Team": 0
},
{
"Civ": "cart",
"Color": {
"b": 5,
"g": 165,
"r": 50
},
"Name": "Player 3",
"Resources": {
"food": 300,
"metal": 300,
"stone": 300,
"wood": 300
},
"Team": 1
},
{
"Civ": "iber",
"Color": {
"b": 75,
"g": 230,
"r": 230
},
"Name": "Invasion Force",
"PopulationLimit": 1,
"DisabledTemplates": [
"structures/iber/civil_centre"
],
"Team": 1
}
],
"RevealMap": false,
"VictoryConditions": [
"conquest"
]
}
]]></ScriptSettings>
<Entities>
<Entity uid="69">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="352.00483" z="646.40888"/>
<Orientation y="-0.24946"/>
</Entity>
<Entity uid="70">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="359.6568" z="633.84192"/>
<Orientation y="-0.80127"/>
</Entity>
<Entity uid="71">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="366.29288" z="643.40815"/>
<Orientation y="1.68186"/>
</Entity>
<Entity uid="72">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="372.64478" z="640.34925"/>
<Orientation y="0.7288"/>
</Entity>
<Entity uid="73">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="357.56946" z="716.12958"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="74">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="367.53742" z="724.6261"/>
<Orientation y="0.46433"/>
</Entity>
<Entity uid="75">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="371.63367" z="732.0011"/>
<Orientation y="1.0286"/>
</Entity>
<Entity uid="76">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="376.5337" z="734.66724"/>
<Orientation y="2.92338"/>
</Entity>
<Entity uid="77">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="338.9998" z="725.69471"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="78">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="377.79227" z="717.6673"/>
<Orientation y="-2.90265"/>
</Entity>
<Entity uid="79">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="386.21875" z="718.2074"/>
<Orientation y="0.95838"/>
</Entity>
<Entity uid="80">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="400.89417" z="703.0475"/>
<Orientation y="-2.52971"/>
</Entity>
<Entity uid="81">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="369.57547" z="714.61078"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="82">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="599.6648" z="577.73572"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="83">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="611.35401" z="567.00947"/>
<Orientation y="-2.78557"/>
</Entity>
<Entity uid="84">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="620.8368" z="560.06959"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="85">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="625.21644" z="572.22181"/>
<Orientation y="0.12665"/>
</Entity>
<Entity uid="86">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="625.66205" z="581.10682"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="87">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="634.63117" z="554.11683"/>
<Orientation y="-2.46703"/>
</Entity>
<Entity uid="88">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="634.0727" z="537.83014"/>
<Orientation y="1.28342"/>
</Entity>
<Entity uid="89">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="647.83881" z="548.17206"/>
<Orientation y="-2.62252"/>
</Entity>
<Entity uid="90">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="664.31824" z="553.76331"/>
<Orientation y="-2.66347"/>
</Entity>
<Entity uid="91">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="657.32197" z="539.68628"/>
<Orientation y="-3.11268"/>
</Entity>
<Entity uid="92">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="654.01203" z="527.8191"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="93">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="645.37952" z="529.57715"/>
<Orientation y="0.78951"/>
</Entity>
<Entity uid="94">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="644.79822" z="558.27332"/>
<Orientation y="-2.15917"/>
</Entity>
<Entity uid="95">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="593.02002" z="353.80805"/>
<Orientation y="1.10918"/>
</Entity>
<Entity uid="96">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="605.64496" z="359.98664"/>
<Orientation y="0.73285"/>
</Entity>
<Entity uid="97">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="612.48646" z="367.15122"/>
<Orientation y="1.79253"/>
</Entity>
<Entity uid="98">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="628.87879" z="363.85434"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="99">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="626.89698" z="356.09519"/>
<Orientation y="2.14908"/>
</Entity>
<Entity uid="100">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="632.33625" z="352.26807"/>
<Orientation y="1.21212"/>
</Entity>
<Entity uid="101">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="644.59278" z="358.5954"/>
<Orientation y="0.18935"/>
</Entity>
<Entity uid="102">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="629.9361" z="377.62113"/>
<Orientation y="-1.6991"/>
</Entity>
<Entity uid="103">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="616.35798" z="374.48725"/>
<Orientation y="-1.62458"/>
</Entity>
<Entity uid="104">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="609.84559" z="381.81702"/>
<Orientation y="0.47947"/>
</Entity>
<Entity uid="105">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="617.79969" z="394.06885"/>
<Orientation y="-0.19091"/>
</Entity>
<Entity uid="106">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="598.43616" z="357.35538"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="107">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="579.42725" z="345.51658"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="108">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="589.60145" z="343.90125"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="109">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="573.92084" z="345.1597"/>
<Orientation y="1.21151"/>
</Entity>
<Entity uid="110">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="639.5785" z="407.08954"/>
<Orientation y="-1.19062"/>
</Entity>
<Entity uid="111">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="652.63782" z="395.43366"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="112">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="265.96842" z="634.71131"/>
<Orientation y="-2.28092"/>
</Entity>
<Entity uid="113">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="258.51429" z="627.12226"/>
<Orientation y="-2.34542"/>
</Entity>
<Entity uid="114">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="254.54508" z="623.98328"/>
<Orientation y="-2.03396"/>
</Entity>
<Entity uid="115">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="252.96256" z="641.90265"/>
<Orientation y="-1.21319"/>
</Entity>
<Entity uid="116">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="256.44846" z="653.4015"/>
<Orientation y="1.48185"/>
</Entity>
<Entity uid="117">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="275.48548" z="650.78943"/>
<Orientation y="2.37865"/>
</Entity>
<Entity uid="118">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="288.67225" z="636.2544"/>
<Orientation y="1.70208"/>
</Entity>
<Entity uid="119">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="302.69071" z="631.0763"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="120">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="282.3953" z="627.38025"/>
<Orientation y="-0.80723"/>
</Entity>
<Entity uid="121">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="287.97495" z="649.46827"/>
<Orientation y="-0.63938"/>
</Entity>
<Entity uid="122">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="125.7513" z="731.06507"/>
<Orientation y="-1.79139"/>
</Entity>
<Entity uid="123">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="109.81002" z="728.97309"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="124">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="121.38596" z="741.67066"/>
<Orientation y="0.85265"/>
</Entity>
<Entity uid="125">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="137.5088" z="748.30945"/>
<Orientation y="0.51391"/>
</Entity>
<Entity uid="126">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="134.21361" z="766.5282"/>
<Orientation y="-1.61518"/>
</Entity>
<Entity uid="127">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="119.62967" z="762.85792"/>
<Orientation y="-1.90926"/>
</Entity>
<Entity uid="128">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="102.81916" z="757.93897"/>
<Orientation y="-0.69831"/>
</Entity>
<Entity uid="129">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="95.24627" z="763.07276"/>
<Orientation y="1.3155"/>
</Entity>
<Entity uid="130">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="116.62403" z="769.96119"/>
<Orientation y="0.42521"/>
</Entity>
<Entity uid="131">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="121.21712" z="783.13032"/>
<Orientation y="-1.27152"/>
</Entity>
<Entity uid="132">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="100.74634" z="787.53052"/>
<Orientation y="-1.75666"/>
</Entity>
<Entity uid="133">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="252.69188" z="832.31135"/>
<Orientation y="-0.49943"/>
</Entity>
<Entity uid="134">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="271.21595" z="822.87464"/>
<Orientation y="-1.848"/>
</Entity>
<Entity uid="135">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="265.20566" z="811.82648"/>
<Orientation y="-2.00522"/>
</Entity>
<Entity uid="136">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="258.6497" z="810.06592"/>
<Orientation y="-1.00428"/>
</Entity>
<Entity uid="137">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="248.72037" z="819.78437"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="138">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="213.14995" z="848.70087"/>
<Orientation y="-1.03489"/>
</Entity>
<Entity uid="139">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="196.0358" z="863.40583"/>
<Orientation y="-0.0251"/>
</Entity>
<Entity uid="140">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="188.70412" z="876.21882"/>
<Orientation y="-1.79714"/>
</Entity>
<Entity uid="141">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="181.13619" z="872.06232"/>
<Orientation y="2.86707"/>
</Entity>
<Entity uid="142">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="187.6783" z="858.07697"/>
<Orientation y="2.14182"/>
</Entity>
<Entity uid="143">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="197.13065" z="851.44654"/>
<Orientation y="2.58333"/>
</Entity>
<Entity uid="144">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="538.99476" z="619.19214"/>
<Orientation y="2.60285"/>
</Entity>
<Entity uid="145">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="801.9784" z="463.20887"/>
<Orientation y="-1.55053"/>
</Entity>
<Entity uid="146">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="794.818" z="465.33124"/>
<Orientation y="2.99025"/>
</Entity>
<Entity uid="147">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="790.61084" z="452.31733"/>
<Orientation y="2.65273"/>
</Entity>
<Entity uid="148">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="786.39167" z="439.2967"/>
<Orientation y="-0.85665"/>
</Entity>
<Entity uid="149">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="774.9715" z="450.01319"/>
<Orientation y="-0.23641"/>
</Entity>
<Entity uid="150">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="768.18622" z="460.5041"/>
<Orientation y="-2.72593"/>
</Entity>
<Entity uid="151">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="770.87122" z="443.54517"/>
<Orientation y="2.76423"/>
</Entity>
<Entity uid="152">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="776.29932" z="434.05512"/>
<Orientation y="2.22344"/>
</Entity>
<Entity uid="153">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="960.71937" z="370.44452"/>
<Orientation y="2.40816"/>
</Entity>
<Entity uid="154">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="963.03418" z="365.67978"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="155">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="954.11127" z="365.25669"/>
<Orientation y="-1.58091"/>
</Entity>
<Entity uid="156">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="946.05134" z="364.56363"/>
<Orientation y="-1.99268"/>
</Entity>
<Entity uid="157">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="936.23975" z="358.28125"/>
<Orientation y="-2.04474"/>
</Entity>
<Entity uid="158">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="932.31324" z="346.97907"/>
<Orientation y="2.10872"/>
</Entity>
<Entity uid="159">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="934.26032" z="335.58741"/>
<Orientation y="1.8559"/>
</Entity>
<Entity uid="160">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="949.98963" z="330.76679"/>
<Orientation y="2.38523"/>
</Entity>
<Entity uid="161">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="943.81226" z="322.39454"/>
<Orientation y="-1.52183"/>
</Entity>
<Entity uid="162">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="918.62409" z="351.48365"/>
<Orientation y="2.70434"/>
</Entity>
<Entity uid="163">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="924.41553" z="338.65171"/>
<Orientation y="-1.3578"/>
</Entity>
<Entity uid="164">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="884.44996" z="403.71464"/>
<Orientation y="2.70307"/>
</Entity>
<Entity uid="165">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="873.31763" z="398.11689"/>
<Orientation y="-1.56424"/>
</Entity>
<Entity uid="166">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="858.73511" z="402.23816"/>
<Orientation y="-2.06543"/>
</Entity>
<Entity uid="167">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="861.13471" z="382.65152"/>
<Orientation y="2.30742"/>
</Entity>
<Entity uid="168">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="754.28357" z="234.86597"/>
<Orientation y="1.8157"/>
</Entity>
<Entity uid="169">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="775.37818" z="227.24032"/>
<Orientation y="2.0423"/>
</Entity>
<Entity uid="170">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="793.97101" z="220.2114"/>
<Orientation y="1.41448"/>
</Entity>
<Entity uid="171">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="836.96576" z="168.54944"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="172">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="852.66266" z="179.2363"/>
<Orientation y="1.6078"/>
</Entity>
<Entity uid="173">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="865.0279" z="180.30164"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="174">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="871.38587" z="191.2304"/>
<Orientation y="-0.8333"/>
</Entity>
<Entity uid="175">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="851.69397" z="192.9651"/>
<Orientation y="-2.02868"/>
</Entity>
<Entity uid="176">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="825.11109" z="190.76262"/>
<Orientation y="-0.78173"/>
</Entity>
<Entity uid="177">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="707.2107" z="318.14478"/>
<Orientation y="-0.67434"/>
</Entity>
<Entity uid="178">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="580.0871" z="457.62708"/>
<Orientation y="1.35357"/>
</Entity>
<Entity uid="179">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="387.29114" z="579.63563"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="180">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="375.45624" z="590.89771"/>
<Orientation y="1.48153"/>
</Entity>
<Entity uid="181">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="365.5966" z="586.44312"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="204">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="455.55701" z="709.11487"/>
<Orientation y="0.84841"/>
</Entity>
<Entity uid="205">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="475.85914" z="726.16626"/>
<Orientation y="-2.5199"/>
</Entity>
<Entity uid="206">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="450.7104" z="715.11042"/>
<Orientation y="1.1688"/>
</Entity>
<Entity uid="207">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="441.00232" z="713.99543"/>
<Orientation y="-1.93612"/>
</Entity>
<Entity uid="208">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="434.91153" z="715.18134"/>
<Orientation y="-2.41248"/>
</Entity>
<Entity uid="209">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="428.97788" z="711.66608"/>
<Orientation y="-2.70453"/>
</Entity>
<Entity uid="210">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="426.40574" z="702.01282"/>
<Orientation y="-3.13237"/>
</Entity>
<Entity uid="211">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="428.72995" z="698.86487"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="212">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="436.43296" z="707.21985"/>
<Orientation y="1.15394"/>
</Entity>
<Entity uid="222">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="730.96668" z="468.5976"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="223">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="722.46338" z="471.5525"/>
<Orientation y="2.93827"/>
</Entity>
<Entity uid="224">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="728.54456" z="457.82871"/>
<Orientation y="1.68824"/>
</Entity>
<Entity uid="225">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="735.7782" z="460.70386"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="226">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="737.21552" z="464.5034"/>
<Orientation y="1.22257"/>
</Entity>
<Entity uid="227">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="744.33667" z="467.54508"/>
<Orientation y="-3.11292"/>
</Entity>
<Entity uid="228">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="743.94642" z="457.88892"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="229">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="890.61176" z="315.0988"/>
<Orientation y="-0.29082"/>
</Entity>
<Entity uid="230">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="883.73267" z="325.11878"/>
<Orientation y="-2.33588"/>
</Entity>
<Entity uid="231">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="878.22565" z="319.95356"/>
<Orientation y="-2.22957"/>
</Entity>
<Entity uid="232">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="874.28254" z="313.86646"/>
<Orientation y="2.82653"/>
</Entity>
<Entity uid="233">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="877.22223" z="307.93763"/>
<Orientation y="2.01699"/>
</Entity>
<Entity uid="234">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="886.4936" z="304.59363"/>
<Orientation y="2.04174"/>
</Entity>
<Entity uid="235">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="895.20069" z="298.58393"/>
<Orientation y="1.58057"/>
</Entity>
<Entity uid="236">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="901.11127" z="305.25361"/>
<Orientation y="0.0323"/>
</Entity>
<Entity uid="237">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="900.47687" z="313.17594"/>
<Orientation y="-0.54174"/>
</Entity>
<Entity uid="238">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="895.95411" z="321.13038"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="239">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="893.23481" z="305.98484"/>
<Orientation y="-2.18006"/>
</Entity>
<Entity uid="240">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="881.22291" z="312.70923"/>
<Orientation y="1.10772"/>
</Entity>
<Entity uid="241">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="889.70038" z="304.1626"/>
<Orientation y="-2.58747"/>
</Entity>
<Entity uid="242">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="903.67634" z="301.26276"/>
<Orientation y="0.30205"/>
</Entity>
<Entity uid="243">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="745.23981" z="298.29578"/>
<Orientation y="-0.3481"/>
</Entity>
<Entity uid="244">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="737.58204" z="309.91327"/>
<Orientation y="-2.64832"/>
</Entity>
<Entity uid="245">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="732.05463" z="299.81681"/>
<Orientation y="-2.79134"/>
</Entity>
<Entity uid="246">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="730.93281" z="289.37433"/>
<Orientation y="0.97767"/>
</Entity>
<Entity uid="247">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="737.58625" z="294.04548"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="248">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="740.2574" z="293.15513"/>
<Orientation y="2.80227"/>
</Entity>
<Entity uid="249">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="742.72223" z="284.92847"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="250">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="744.47852" z="282.73038"/>
<Orientation y="1.35184"/>
</Entity>
<Entity uid="251">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="749.42774" z="285.8089"/>
<Orientation y="0.15835"/>
</Entity>
<Entity uid="252">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="751.29725" z="297.73002"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="253">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="755.20337" z="291.00538"/>
<Orientation y="-1.9977"/>
</Entity>
<Entity uid="254">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="755.89161" z="285.15204"/>
<Orientation y="1.19314"/>
</Entity>
<Entity uid="255">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="757.91041" z="282.08182"/>
<Orientation y="0.86529"/>
</Entity>
<Entity uid="256">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="758.45478" z="297.81077"/>
<Orientation y="0.32082"/>
</Entity>
<Entity uid="257">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="736.87037" z="283.76117"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="258">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="743.31952" z="297.05036"/>
<Orientation y="-0.27279"/>
</Entity>
<Entity uid="259">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="734.74585" z="300.33637"/>
<Orientation y="-0.30997"/>
</Entity>
<Entity uid="260">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="401.07749" z="593.34253"/>
<Orientation y="1.94806"/>
</Entity>
<Entity uid="261">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="411.49897" z="588.55616"/>
<Orientation y="1.30868"/>
</Entity>
<Entity uid="262">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="420.01301" z="592.1944"/>
<Orientation y="1.04487"/>
</Entity>
<Entity uid="263">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="415.64835" z="600.6139"/>
<Orientation y="-1.73424"/>
</Entity>
<Entity uid="264">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="196.66326" z="713.72565"/>
<Orientation y="1.71578"/>
</Entity>
<Entity uid="265">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="207.66326" z="706.84327"/>
<Orientation y="2.71287"/>
</Entity>
<Entity uid="266">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="211.62592" z="702.19892"/>
<Orientation y="1.19367"/>
</Entity>
<Entity uid="267">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="204.45211" z="714.77125"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="273">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="362.43934" z="745.9557"/>
<Orientation y="-2.3423"/>
</Entity>
<Entity uid="274">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="334.4499" z="750.16663"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="275">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="561.69526" z="590.71082"/>
<Orientation y="2.67652"/>
</Entity>
<Entity uid="276">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="688.6402" z="506.15656"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="277">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="820.01862" z="404.43033"/>
<Orientation y="2.00643"/>
</Entity>
<Entity uid="278">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="886.16565" z="463.16413"/>
<Orientation y="1.91605"/>
</Entity>
<Entity uid="279">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="827.0254" z="458.55628"/>
<Orientation y="0.47887"/>
</Entity>
<Entity uid="280">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="905.75965" z="505.83484"/>
<Orientation y="0.3129"/>
</Entity>
<Entity uid="281">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="985.26185" z="570.9441"/>
<Orientation y="-2.40828"/>
</Entity>
<Entity uid="282">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="391.91453" z="859.14368"/>
<Orientation y="0.85726"/>
</Entity>
<Entity uid="284">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="338.40204" z="954.27576"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="285">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="354.90772" z="834.02918"/>
<Orientation y="0.09124"/>
</Entity>
<Entity uid="286">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="730.73737" z="591.28815"/>
<Orientation y="0.44816"/>
</Entity>
<Entity uid="287">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="972.60163" z="446.85334"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="288">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="932.10596" z="442.73581"/>
<Orientation y="-0.13791"/>
</Entity>
<Entity uid="289">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="879.55433" z="498.17948"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="294">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="454.84412" z="778.3462"/>
<Orientation y="1.2491"/>
</Entity>
<Entity uid="295">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="469.69709" z="796.1725"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="296">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="472.47648" z="780.85621"/>
<Orientation y="-0.00481"/>
</Entity>
<Entity uid="297">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="461.97861" z="785.00556"/>
<Orientation y="-2.97959"/>
</Entity>
<Entity uid="298">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="457.97941" z="765.68921"/>
<Orientation y="3.07189"/>
</Entity>
<Entity uid="299">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="467.38318" z="776.30188"/>
<Orientation y="0.2567"/>
</Entity>
<Entity uid="300">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="413.54535" z="461.26548"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="301">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="397.92005" z="451.94236"/>
<Orientation y="-3.07902"/>
</Entity>
<Entity uid="302">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="401.4018" z="439.69465"/>
<Orientation y="1.64731"/>
</Entity>
<Entity uid="303">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="418.83149" z="442.04377"/>
<Orientation y="0.19323"/>
</Entity>
<Entity uid="304">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="421.17219" z="452.91608"/>
<Orientation y="0.94582"/>
</Entity>
<Entity uid="305">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="432.34568" z="460.54371"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="306">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="428.14194" z="447.6768"/>
<Orientation y="-2.76952"/>
</Entity>
<Entity uid="307">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="420.63083" z="434.11106"/>
<Orientation y="-2.63595"/>
</Entity>
<Entity uid="308">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="414.41514" z="425.55967"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="309">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="409.93674" z="437.4514"/>
<Orientation y="-0.0964"/>
</Entity>
<Entity uid="310">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="408.33521" z="452.09363"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="311">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="598.8025" z="248.90453"/>
<Orientation y="2.7411"/>
</Entity>
<Entity uid="314">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="108.29204" z="386.85492"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="315">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="105.98475" z="394.68335"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="316">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="101.53466" z="382.86847"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="319">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="311.33658" z="406.07651"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="320">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="568.39936" z="198.03553"/>
<Orientation y="1.05184"/>
</Entity>
<Entity uid="321">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="669.93946" z="86.99238"/>
<Orientation y="-1.86869"/>
</Entity>
<Entity uid="323">
<Template>gaia/tree/date_palm</Template>
<Player>0</Player>
<Position x="246.84171" z="119.51069"/>
<Orientation y="0.70698"/>
</Entity>
<Entity uid="325">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="40.99755" z="416.805"/>
<Orientation y="0.47207"/>
</Entity>
<Entity uid="327">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="535.68433" z="132.91327"/>
<Orientation y="0.81948"/>
</Entity>
<Entity uid="328">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="744.47046" z="145.08802"/>
<Orientation y="2.52063"/>
</Entity>
<Entity uid="329">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="766.88733" z="120.82984"/>
<Orientation y="2.90185"/>
</Entity>
<Entity uid="330">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="770.45362" z="102.75831"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="331">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="635.14106" z="145.1786"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="332">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="811.39979" z="642.71418"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="335">
<Template>gaia/tree/senegal_date_palm</Template>
<Player>0</Player>
<Position x="836.57337" z="603.16712"/>
<Orientation y="-2.15067"/>
</Entity>
<Entity uid="336">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="270.40339" z="552.72889"/>
<Orientation y="0.72861"/>
</Entity>
<Entity uid="337">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="283.19996" z="542.00452"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="338">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="64.31736" z="646.56226"/>
<Orientation y="-0.19581"/>
</Entity>
<Entity uid="339">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="652.45221" z="115.0883"/>
<Orientation y="0.3229"/>
</Entity>
<Entity uid="340">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="744.2079" z="127.84055"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="341">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="159.94149" z="206.1443"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="342">
<Template>gaia/tree/baobab</Template>
<Player>0</Player>
<Position x="195.92829" z="326.4828"/>
<Orientation y="-0.57988"/>
</Entity>
<Entity uid="408">
<Template>gaia/ore/desert_large</Template>
<Player>0</Player>
<Position x="359.62967" z="274.8566"/>
<Orientation y="2.47242"/>
</Entity>
<Entity uid="409">
<Template>gaia/rock/desert_large</Template>
<Player>0</Player>
<Position x="298.067" z="206.82084"/>
<Orientation y="2.51491"/>
</Entity>
<Entity uid="410">
<Template>gaia/rock/desert_large</Template>
<Player>0</Player>
<Position x="308.00013" z="224.04357"/>
<Orientation y="2.73656"/>
</Entity>
<Entity uid="413">
<Template>gaia/treasure/food_bin</Template>
<Player>0</Player>
<Position x="363.65427" z="192.64823"/>
<Orientation y="1.504"/>
</Entity>
<Entity uid="414">
<Template>gaia/treasure/food_bin</Template>
<Player>0</Player>
<Position x="371.36197" z="188.06452"/>
<Orientation y="3.03803"/>
</Entity>
<Entity uid="415">
<Template>gaia/treasure/food_barrel</Template>
<Player>0</Player>
<Position x="366.99085" z="187.67687"/>
<Orientation y="0.5253"/>
</Entity>
<Entity uid="416">
<Template>gaia/treasure/food_barrel</Template>
<Player>0</Player>
<Position x="368.5152" z="189.66633"/>
<Orientation y="3.10686"/>
</Entity>
<Entity uid="417">
<Template>gaia/treasure/food_barrel</Template>
<Player>0</Player>
<Position x="368.70081" z="185.36905"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="418">
<Template>gaia/treasure/food_bin</Template>
<Player>0</Player>
<Position x="361.02338" z="190.55353"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="419">
<Template>gaia/treasure/food_crate</Template>
<Player>0</Player>
<Position x="366.94678" z="184.20574"/>
<Orientation y="2.95282"/>
</Entity>
<Entity uid="420">
<Template>gaia/treasure/food_jars</Template>
<Player>0</Player>
<Position x="359.03318" z="182.67383"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="421">
<Template>gaia/treasure/food_jars</Template>
<Player>0</Player>
<Position x="719.67603" z="781.61274"/>
<Orientation y="0.8997"/>
</Entity>
<Entity uid="422">
<Template>gaia/treasure/food_barrel</Template>
<Player>0</Player>
<Position x="714.65516" z="781.44092"/>
<Orientation y="-2.92338"/>
</Entity>
<Entity uid="423">
<Template>gaia/treasure/food_barrel</Template>
<Player>0</Player>
<Position x="713.66126" z="777.13123"/>
<Orientation y="0.47428"/>
</Entity>
<Entity uid="424">
<Template>gaia/treasure/food_barrel</Template>
<Player>0</Player>
<Position x="711.93274" z="781.73591"/>
<Orientation y="-1.20098"/>
</Entity>
<Entity uid="425">
<Template>gaia/treasure/food_bin</Template>
<Player>0</Player>
<Position x="718.20148" z="775.159"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="426">
<Template>gaia/treasure/food_bin</Template>
<Player>0</Player>
<Position x="716.10364" z="773.64478"/>
<Orientation y="2.74392"/>
</Entity>
<Entity uid="427">
<Template>gaia/treasure/food_bin</Template>
<Player>0</Player>
<Position x="723.95295" z="778.32642"/>
<Orientation y="-1.91301"/>
</Entity>
<Entity uid="428">
<Template>gaia/treasure/food_crate</Template>
<Player>0</Player>
<Position x="710.87098" z="778.34778"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="429">
<Template>gaia/rock/desert_large</Template>
<Player>0</Player>
<Position x="625.4834" z="775.22095"/>
<Orientation y="-2.80912"/>
</Entity>
<Entity uid="430">
<Template>gaia/rock/desert_large</Template>
<Player>0</Player>
<Position x="630.05329" z="754.87714"/>
<Orientation y="1.06276"/>
</Entity>
<Entity uid="431">
<Template>gaia/ore/desert_large</Template>
<Player>0</Player>
<Position x="718.8592" z="756.2179"/>
<Orientation y="1.52071"/>
</Entity>
<Entity uid="451">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="350.03751" z="620.20807"/>
<Orientation y="2.31595"/>
</Entity>
<Entity uid="452">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="364.9437" z="605.99958"/>
<Orientation y="1.55213"/>
</Entity>
<Entity uid="453">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="379.69321" z="611.33198"/>
<Orientation y="0.10196"/>
</Entity>
<Entity uid="454">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="376.22168" z="624.2909"/>
<Orientation y="-1.19509"/>
</Entity>
<Entity uid="455">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="358.3831" z="621.23615"/>
<Orientation y="-2.13466"/>
</Entity>
<Entity uid="456">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="345.21872" z="621.49994"/>
<Orientation y="-1.06434"/>
</Entity>
<Entity uid="457">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="325.13654" z="634.3642"/>
<Orientation y="-1.11818"/>
</Entity>
<Entity uid="458">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="316.9994" z="634.15082"/>
<Orientation y="2.44857"/>
</Entity>
<Entity uid="459">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="331.6952" z="621.2541"/>
<Orientation y="2.04484"/>
</Entity>
<Entity uid="460">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="344.91883" z="614.75239"/>
<Orientation y="1.57683"/>
</Entity>
<Entity uid="461">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="359.24381" z="615.98035"/>
<Orientation y="1.34572"/>
</Entity>
<Entity uid="462">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="370.32734" z="623.51722"/>
<Orientation y="2.99393"/>
</Entity>
<Entity uid="463">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="382.357" z="618.6092"/>
<Orientation y="1.65854"/>
</Entity>
<Entity uid="464">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="775.65003" z="409.73508"/>
<Orientation y="1.92556"/>
</Entity>
<Entity uid="465">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="786.2873" z="402.77662"/>
<Orientation y="2.47645"/>
</Entity>
<Entity uid="466">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="789.50403" z="394.75962"/>
<Orientation y="3.085"/>
</Entity>
<Entity uid="467">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="791.0984" z="388.3328"/>
<Orientation y="1.73881"/>
</Entity>
<Entity uid="468">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="806.48835" z="387.97114"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="469">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="811.09498" z="384.66895"/>
<Orientation y="2.76146"/>
</Entity>
<Entity uid="470">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="810.39124" z="372.09348"/>
<Orientation y="-2.36248"/>
</Entity>
<Entity uid="471">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="799.68018" z="370.84037"/>
<Orientation y="-0.04783"/>
</Entity>
<Entity uid="472">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="801.97742" z="380.78873"/>
<Orientation y="-0.31046"/>
</Entity>
<Entity uid="473">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="798.67927" z="392.39185"/>
<Orientation y="-0.12421"/>
</Entity>
<Entity uid="474">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="796.62641" z="402.6536"/>
<Orientation y="1.18575"/>
</Entity>
<Entity uid="475">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="815.7483" z="390.79075"/>
<Orientation y="2.64811"/>
</Entity>
<Entity uid="476">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="817.67206" z="386.9831"/>
<Orientation y="-0.31971"/>
</Entity>
<Entity uid="477">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="809.30347" z="398.58106"/>
<Orientation y="-0.88622"/>
</Entity>
<Entity uid="478">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="794.6305" z="408.2516"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="479">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="782.65101" z="273.76499"/>
<Orientation y="2.48012"/>
</Entity>
<Entity uid="480">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="758.5066" z="321.90351"/>
<Orientation y="-0.27848"/>
</Entity>
<Entity uid="481">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="930.42945" z="302.62159"/>
<Orientation y="1.97332"/>
</Entity>
<Entity uid="482">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="942.94068" z="298.05512"/>
<Orientation y="-0.09501"/>
</Entity>
<Entity uid="483">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="878.4657" z="304.29566"/>
<Orientation y="2.90554"/>
</Entity>
<Entity uid="484">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="842.00953" z="243.2606"/>
<Orientation y="2.15357"/>
</Entity>
<Entity uid="485">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="768.25348" z="326.85749"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="486">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="660.14673" z="500.14716"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="487">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="566.85138" z="470.4232"/>
<Orientation y="-0.3972"/>
</Entity>
<Entity uid="488">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="492.26371" z="541.5218"/>
<Orientation y="2.50838"/>
</Entity>
<Entity uid="489">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="408.0901" z="686.43763"/>
<Orientation y="-2.17814"/>
</Entity>
<Entity uid="490">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="254.9386" z="684.55054"/>
<Orientation y="-0.77947"/>
</Entity>
<Entity uid="491">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="207.40537" z="812.62055"/>
<Orientation y="2.51183"/>
</Entity>
<Entity uid="492">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="190.697" z="835.44459"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="493">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="163.83138" z="752.12177"/>
<Orientation y="2.73594"/>
</Entity>
<Entity uid="494">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="230.92437" z="699.09034"/>
<Orientation y="2.77025"/>
</Entity>
<Entity uid="495">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="239.89309" z="676.22059"/>
<Orientation y="0.58208"/>
</Entity>
<Entity uid="496">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="242.76682" z="704.25947"/>
<Orientation y="2.6756"/>
</Entity>
<Entity uid="497">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="212.1902" z="832.32642"/>
<Orientation y="1.42563"/>
</Entity>
<Entity uid="498">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="443.7432" z="765.44648"/>
<Orientation y="2.71033"/>
</Entity>
<Entity uid="499">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="450.08597" z="754.96467"/>
<Orientation y="0.26195"/>
</Entity>
<Entity uid="500">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="446.2569" z="771.03638"/>
<Orientation y="-0.44115"/>
</Entity>
<Entity uid="501">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="440.50251" z="784.18342"/>
<Orientation y="-0.46891"/>
</Entity>
<Entity uid="502">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="351.47034" z="822.31141"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="503">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="327.05988" z="834.47669"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="504">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="346.55536" z="766.54041"/>
<Orientation y="2.3389"/>
</Entity>
<Entity uid="505">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="487.30463" z="669.18616"/>
<Orientation y="2.47138"/>
</Entity>
<Entity uid="506">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="501.82294" z="645.88306"/>
<Orientation y="0.36904"/>
</Entity>
<Entity uid="507">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="550.32667" z="643.89972"/>
<Orientation y="2.60071"/>
</Entity>
<Entity uid="508">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="575.92505" z="618.50422"/>
<Orientation y="1.30347"/>
</Entity>
<Entity uid="509">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="610.68934" z="615.94483"/>
<Orientation y="-0.07898"/>
</Entity>
<Entity uid="510">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="613.06733" z="626.50513"/>
<Orientation y="0.55327"/>
</Entity>
<Entity uid="511">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="622.20673" z="639.16187"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="512">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="633.64332" z="651.78016"/>
<Orientation y="2.85714"/>
</Entity>
<Entity uid="513">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="471.22168" z="452.29548"/>
<Orientation y="-1.50278"/>
</Entity>
<Entity uid="514">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="463.52967" z="449.6698"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="515">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="445.51618" z="431.67743"/>
<Orientation y="2.94692"/>
</Entity>
<Entity uid="516">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="441.2609" z="425.44315"/>
<Orientation y="-1.24823"/>
</Entity>
<Entity uid="517">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="432.78727" z="460.86384"/>
<Orientation y="0.1448"/>
</Entity>
<Entity uid="518">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="438.04798" z="478.61442"/>
<Orientation y="2.0738"/>
</Entity>
<Entity uid="519">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="509.53107" z="477.87192"/>
<Orientation y="1.24328"/>
</Entity>
<Entity uid="520">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="528.53571" z="486.31861"/>
<Orientation y="0.95368"/>
</Entity>
<Entity uid="521">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="534.8213" z="496.13086"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="522">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="554.23133" z="486.18305"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="523">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="698.15296" z="483.6153"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="524">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="696.62018" z="303.57358"/>
<Orientation y="2.10584"/>
</Entity>
<Entity uid="525">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="730.10035" z="275.89362"/>
<Orientation y="2.42472"/>
</Entity>
<Entity uid="526">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="750.50611" z="264.9531"/>
<Orientation y="0.63251"/>
</Entity>
<Entity uid="527">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="875.06818" z="363.32215"/>
<Orientation y="2.20405"/>
</Entity>
<Entity uid="528">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="904.347" z="343.17441"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="529">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="907.9217" z="340.0474"/>
<Orientation y="-3.11216"/>
</Entity>
<Entity uid="530">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="870.70887" z="207.26093"/>
<Orientation y="1.54392"/>
</Entity>
<Entity uid="531">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="895.74518" z="208.836"/>
<Orientation y="0.65088"/>
</Entity>
<Entity uid="532">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="973.65485" z="317.14295"/>
<Orientation y="1.02527"/>
</Entity>
<Entity uid="533">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="999.59815" z="403.49646"/>
<Orientation y="-3.10315"/>
</Entity>
<Entity uid="534">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="996.61683" z="392.49018"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="535">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="921.78455" z="429.27479"/>
<Orientation y="2.35181"/>
</Entity>
<Entity uid="536">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="930.00452" z="410.9344"/>
<Orientation y="1.3735"/>
</Entity>
<Entity uid="537">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="831.36451" z="461.50873"/>
<Orientation y="2.65761"/>
</Entity>
<Entity uid="538">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="659.31653" z="200.03455"/>
<Orientation y="2.34493"/>
</Entity>
<Entity uid="539">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="719.06733" z="175.80378"/>
<Orientation y="2.23917"/>
</Entity>
<Entity uid="540">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="733.35535" z="166.73258"/>
<Orientation y="0.88352"/>
</Entity>
<Entity uid="541">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="805.71766" z="115.50618"/>
<Orientation y="3.08606"/>
</Entity>
<Entity uid="542">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="735.13636" z="258.6825"/>
<Orientation y="1.51194"/>
</Entity>
<Entity uid="543">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="652.81452" z="265.00211"/>
<Orientation y="-0.74228"/>
</Entity>
<Entity uid="544">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="599.21937" z="293.7328"/>
<Orientation y="-0.94591"/>
</Entity>
<Entity uid="545">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="559.91834" z="391.22748"/>
<Orientation y="-0.8651"/>
</Entity>
<Entity uid="546">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="522.96692" z="406.09314"/>
<Orientation y="2.9851"/>
</Entity>
<Entity uid="547">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="324.67591" z="547.98957"/>
<Orientation y="-2.2584"/>
</Entity>
<Entity uid="548">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="247.15343" z="588.9795"/>
<Orientation y="-0.64037"/>
</Entity>
<Entity uid="549">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="164.45681" z="663.404"/>
<Orientation y="0.36481"/>
</Entity>
<Entity uid="550">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="66.26281" z="713.76581"/>
<Orientation y="3.09597"/>
</Entity>
<Entity uid="551">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="89.45478" z="692.07374"/>
<Orientation y="0.84435"/>
</Entity>
<Entity uid="552">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="113.00162" z="710.29456"/>
<Orientation y="-1.73958"/>
</Entity>
<Entity uid="553">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="94.7015" z="702.37415"/>
<Orientation y="0.79699"/>
</Entity>
<Entity uid="554">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="230.14367" z="642.02057"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="555">
<Template>gaia/fauna_sheep</Template>
<Player>0</Player>
<Position x="345.81428" z="574.15088"/>
<Orientation y="1.91251"/>
</Entity>
<Entity uid="556">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="348.71918" z="349.82706"/>
<Orientation y="-2.20495"/>
</Entity>
<Entity uid="557">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="318.61905" z="331.40714"/>
<Orientation y="0.83683"/>
</Entity>
<Entity uid="558">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="296.36448" z="333.63035"/>
<Orientation y="-2.74465"/>
</Entity>
<Entity uid="559">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="306.91904" z="349.75873"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="560">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="314.02845" z="355.98636"/>
<Orientation y="-2.73917"/>
</Entity>
<Entity uid="561">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="724.09107" z="711.41858"/>
<Orientation y="-2.70502"/>
</Entity>
<Entity uid="562">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="718.70466" z="698.74054"/>
<Orientation y="1.12052"/>
</Entity>
<Entity uid="563">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="729.20148" z="708.50287"/>
<Orientation y="0.21906"/>
</Entity>
<Entity uid="564">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="732.79004" z="725.83021"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="565">
<Template>gaia/fauna_gazelle</Template>
<Player>0</Player>
<Position x="733.1587" z="717.4568"/>
<Orientation y="-2.00701"/>
</Entity>
<Entity uid="566">
<Template>gaia/fauna_chicken</Template>
<Player>0</Player>
<Position x="386.67643" z="191.78785"/>
<Orientation y="-2.31688"/>
</Entity>
<Entity uid="567">
<Template>gaia/fauna_chicken</Template>
<Player>0</Player>
<Position x="379.5634" z="185.85111"/>
<Orientation y="-2.36193"/>
</Entity>
<Entity uid="568">
<Template>gaia/fauna_chicken</Template>
<Player>0</Player>
<Position x="375.08848" z="181.68192"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="569">
<Template>gaia/fauna_chicken</Template>
<Player>0</Player>
<Position x="374.5394" z="178.95624"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="570">
<Template>gaia/fauna_chicken</Template>
<Player>0</Player>
<Position x="378.84235" z="176.47388"/>
<Orientation y="0.57836"/>
</Entity>
<Entity uid="571">
<Template>gaia/fauna_chicken</Template>
<Player>0</Player>
<Position x="697.3194" z="747.86573"/>
<Orientation y="-2.54802"/>
</Entity>
<Entity uid="572">
<Template>gaia/fauna_chicken</Template>
<Player>0</Player>
<Position x="692.6919" z="743.63398"/>
<Orientation y="0.09147"/>
</Entity>
<Entity uid="573">
<Template>gaia/fauna_chicken</Template>
<Player>0</Player>
<Position x="693.16791" z="754.57947"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="574">
<Template>gaia/fauna_chicken</Template>
<Player>0</Player>
<Position x="692.52808" z="764.08265"/>
<Orientation y="2.35621"/>
</Entity>
<Entity uid="575">
<Template>gaia/fauna_chicken</Template>
<Player>0</Player>
<Position x="697.73115" z="764.65687"/>
<Orientation y="-2.88006"/>
</Entity>
<Entity uid="576">
<Template>gaia/rock/desert_large</Template>
<Player>0</Player>
<Position x="175.88965" z="498.41477"/>
<Orientation y="-2.35698"/>
</Entity>
<Entity uid="577">
<Template>gaia/rock/desert_large</Template>
<Player>0</Player>
<Position x="560.53736" z="56.87134"/>
<Orientation y="0.953"/>
</Entity>
<Entity uid="578">
<Template>gaia/ore/desert_large</Template>
<Player>0</Player>
<Position x="629.6297" z="197.92176"/>
<Orientation y="-2.14745"/>
</Entity>
<Entity uid="579">
<Template>gaia/ore/desert_large</Template>
<Player>0</Player>
<Position x="127.26034" z="249.76406"/>
<Orientation y="0.86977"/>
</Entity>
<Entity uid="580">
<Template>gaia/ore/desert_large</Template>
<Player>0</Player>
<Position x="581.01777" z="979.04957"/>
<Orientation y="-3.09939"/>
</Entity>
<Entity uid="581">
<Template>gaia/ore/desert_large</Template>
<Player>0</Player>
<Position x="880.2953" z="650.98981"/>
<Orientation y="1.01552"/>
</Entity>
<Entity uid="582">
<Template>gaia/rock/desert_large</Template>
<Player>0</Player>