Index: binaries/data/mods/public/art/actors/units/britons/chariot_javelinist_c_m.xml
===================================================================
--- binaries/data/mods/public/art/actors/units/britons/chariot_javelinist_c_m.xml
+++ binaries/data/mods/public/art/actors/units/britons/chariot_javelinist_c_m.xml
@@ -18,7 +18,6 @@
-
Index: binaries/data/mods/public/art/actors/units/britons/hero_chariot_javelinist_boudicca_m.xml
===================================================================
--- binaries/data/mods/public/art/actors/units/britons/hero_chariot_javelinist_boudicca_m.xml
+++ binaries/data/mods/public/art/actors/units/britons/hero_chariot_javelinist_boudicca_m.xml
@@ -17,7 +17,6 @@
-
Index: binaries/data/mods/public/simulation/components/Attack.js
===================================================================
--- binaries/data/mods/public/simulation/components/Attack.js
+++ binaries/data/mods/public/simulation/components/Attack.js
@@ -207,6 +207,9 @@
Attack.prototype.bonusesSchema +
Attack.prototype.preferredClassesSchema +
Attack.prototype.restrictedClassesSchema +
+ ""+
+ "" +
+ "" +
"" +
"" +
"" +
@@ -238,6 +241,7 @@
Attack.prototype.Init = function()
{
+ this.latestTarget = INVALID_ENTITY;
};
Attack.prototype.Serialize = null; // we have no dynamic state to save
@@ -499,8 +503,11 @@
* and should only be called after GetTimers().repeat msec has passed since the last
* call to PerformAttack.
*/
-Attack.prototype.PerformAttack = function(type, target)
+Attack.prototype.PerformAttack = function(type, target, turretId)
{
+ if (this.template[type].TurretsOnly && !turretId && this.template[type].TurretsOnly == "true")
+ return;
+
let attackerOwner = Engine.QueryInterface(this.entity, IID_Ownership).GetOwner();
let cmpDamage = Engine.QueryInterface(SYSTEM_ENTITY, IID_Damage);
@@ -562,8 +569,8 @@
// TODO: Use unit rotation to implement x/z offsets.
let deltaLaunchPoint = new Vector3D(0, this.template[type].Projectile.LaunchPoint["@y"], 0.0);
let launchPoint = Vector3D.add(selfPosition, deltaLaunchPoint);
-
- let cmpVisual = Engine.QueryInterface(this.entity, IID_Visual);
+
+ let cmpVisual = Engine.QueryInterface(turretId ||this.entity, IID_Visual);
if (cmpVisual)
{
// if the projectile definition is missing from the template
Index: binaries/data/mods/public/simulation/templates/units/brit_champion_cavalry.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/units/brit_champion_cavalry.xml
+++ binaries/data/mods/public/simulation/templates/units/brit_champion_cavalry.xml
@@ -12,6 +12,16 @@
units/brit_champion_chariot
units/brit_champion_chariot.png
+
+
+
+ units/brit_champion_cavalry_r
+ 0
+ 1.4
+ -2.5
+
+
+
units/britons/chariot_javelinist_c_m.xml
Index: binaries/data/mods/public/simulation/templates/units/brit_hero_boudicca.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/units/brit_hero_boudicca.xml
+++ binaries/data/mods/public/simulation/templates/units/brit_hero_boudicca.xml
@@ -3,6 +3,11 @@
units/heroes/brit_hero_boudicca
+
+
+ true
+
+
5.0
@@ -15,6 +20,16 @@
female
units/brit_hero_boudicca.png
+
+
+
+ units/brit_hero_bouddica_r
+ 0
+ 1.4
+ -2.5
+
+
+
units/britons/hero_chariot_javelinist_boudicca_m.xml