Ticket #697: units_promotion_2011_04_24.diff
File units_promotion_2011_04_24.diff, 61.1 KB (added by , 13 years ago) |
---|
-
binaries/data/mods/public/gui/session/selection.js
193 193 // Update the selection to take care of changes (like units that have been killed) 194 194 EntitySelection.prototype.update = function() 195 195 { 196 this.checkRenamedEntities(); 196 197 for each (var ent in this.selected) 197 198 { 198 199 var entState = GetEntityState(ent); … … 221 222 } 222 223 }; 223 224 225 /** 226 * Update selection if some selected entities was renamed 227 * (in case of unit promotion or finishing building structure) 228 */ 229 EntitySelection.prototype.checkRenamedEntities = function() 230 { 231 var renamedEntities = Engine.GuiInterfaceCall("GetRenamedEntities", true); 232 if (renamedEntities.length > 0) 233 { 234 var removeFromSelectionList = []; 235 var addToSelectionList = []; 236 for each (var renamedEntity in renamedEntities) 237 { 238 if (this.selected[renamedEntity.entity]) 239 { 240 removeFromSelectionList.push(renamedEntity.entity); 241 addToSelectionList.push(renamedEntity.newentity); 242 } 243 } 244 this.removeList(removeFromSelectionList); 245 this.addList(addToSelectionList); 246 } 247 } 248 224 249 EntitySelection.prototype.addList = function(ents) 225 250 { 226 251 var selectionSize = this.toList().length; -
binaries/data/mods/public/gui/session/session.xml
522 522 <object type="image" sprite="resourceForeground" ghost="true" name="resourceBar"/> 523 523 <object type="image" sprite="statsBarShader" ghost="true"/> 524 524 </object> 525 526 <!-- Experience bar --> 527 <object size="46 0 58 100%" type="image" name="experience" tooltip="XP" tooltip_style="snToolTip"> 528 <object type="image" sprite="experienceBackground" ghost="true"/> 529 <object type="image" sprite="experienceForeground" ghost="true" name="experienceBar"/> 530 <object type="image" sprite="statsBarShader" ghost="true"/> 531 </object> 525 532 </object> 526 533 527 534 <!-- Specific Name --> -
binaries/data/mods/public/gui/session/selection_details.js
65 65 { 66 66 getGUIObjectByName("health").hidden = true; 67 67 } 68 69 // Experience 70 if (entState.promotion) 71 { 72 var experienceBar = getGUIObjectByName("experienceBar"); 73 var experienceSize = experienceBar.size; 74 experienceSize.rtop = 100 - 100 * Math.max(0, Math.min(1, 1.0 * entState.promotion.curr / entState.promotion.req)); 75 experienceBar.size = experienceSize; 76 77 var experience = "[font=\"serif-bold-13\"]XP [/font]" + entState.promotion.curr; 78 if (entState.promotion.curr < entState.promotion.req) experience += "/" + entState.promotion.req; 79 getGUIObjectByName("experience").tooltip = experience; 80 getGUIObjectByName("experience").hidden = false; 81 } 82 else 83 { 84 getGUIObjectByName("experience").hidden = true; 85 } 68 86 69 87 // Resource stats 70 88 var resources = ""; -
binaries/data/mods/public/gui/session/sprites.xml
714 714 <sprite name="staminaForeground"> 715 715 <image backcolor="blue"/> 716 716 </sprite> 717 718 <sprite name="experienceBackground"> 719 <image backcolor="darkgray"/> 720 </sprite> 717 721 722 <sprite name="experienceForeground"> 723 <image backcolor="white"/> 724 </sprite> 725 718 726 <!-- ================================ ================================ --> 719 727 <!-- Chat --> 720 728 <!-- ================================ ================================ --> -
binaries/data/mods/public/simulation/components/GuiInterface.js
20 20 this.placementEntity = undefined; // = undefined or [templateName, entityID] 21 21 this.rallyPoints = undefined; 22 22 this.notifications = []; 23 this.renamedEntities = []; 23 24 }; 24 25 25 26 /* … … 91 92 return ret; 92 93 }; 93 94 95 GuiInterface.prototype.GetRenamedEntities = function(player, clearList) 96 { 97 var result = this.renamedEntities.slice(); 98 if (clearList) this.renamedEntities = []; 99 return result; 100 }; 101 94 102 GuiInterface.prototype.GetEntityState = function(player, ent) 95 103 { 96 104 var cmpTempMan = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager); … … 210 218 }; 211 219 } 212 220 221 var cmpPromotion = Engine.QueryInterface(ent, IID_Promotion); 222 if (cmpPromotion) 223 { 224 ret.promotion = { 225 "curr": cmpPromotion.GetCurrentXp(), 226 "req": cmpPromotion.GetRequiredXp() 227 }; 228 } 229 213 230 var cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager); 214 231 ret.visibility = cmpRangeManager.GetLosVisibility(ent, player); 215 232 … … 501 518 cmpRangeManager.SetDebugOverlay(enabled); 502 519 }; 503 520 521 GuiInterface.prototype.OnGlobalEntityRenamed = function(msg) 522 { 523 this.renamedEntities.push(msg); 524 } 525 504 526 // List the GuiInterface functions that can be safely called by GUI scripts. 505 527 // (GUI scripts are non-deterministic and untrusted, so these functions must be 506 528 // appropriately careful. They are called with a first argument "player", which is … … 510 532 511 533 "GetSimulationState": 1, 512 534 "GetExtendedSimulationState": 1, 535 "GetRenamedEntities": 1, 513 536 "GetEntityState": 1, 514 537 "GetTemplateData": 1, 515 538 "GetNextNotification": 1, -
binaries/data/mods/public/simulation/components/Foundation.js
196 196 Engine.PostMessage(this.entity, MT_ConstructionFinished, 197 197 { "entity": this.entity, "newentity": building }); 198 198 199 Engine.BroadcastMessage(MT_EntityRenamed, { entity: this.entity, newentity: building }); 200 199 201 Engine.DestroyEntity(this.entity); 200 202 } 201 203 }; -
binaries/data/mods/public/simulation/components/ResourceGatherer.js
86 86 }; 87 87 88 88 /** 89 * Used to instantly give resources to unit 90 * @param resources The same structure as returned form GetCarryingStatus 91 */ 92 ResourceGatherer.prototype.GiveResources = function(resources) 93 { 94 for each (var resource in resources) 95 { 96 this.carrying[resource.type] = +(resource.amount); 97 } 98 }; 99 100 /** 89 101 * Returns the generic type of one particular resource this unit is 90 102 * currently carrying, or undefined if none. 91 103 */ -
binaries/data/mods/public/simulation/components/Loot.js
17 17 "<element name='metal'><data type='nonNegativeInteger'/></element>" + 18 18 "</optional>"; 19 19 20 /*21 * TODO: this all needs to be designed and implemented22 */23 24 20 Loot.prototype.Serialize = null; // we have no dynamic state to save 25 21 22 Loot.prototype.GetXp = function() 23 { 24 return this.template.xp; 25 }; 26 27 Loot.prototype.GetResources = function() 28 { 29 return { 30 "food": +(this.template.food || 0), 31 "wood": +(this.template.wood || 0), 32 "metal": +(this.template.metal || 0), 33 "stone": +(this.template.stone || 0) 34 }; 35 }; 36 26 37 Engine.RegisterComponentType(IID_Loot, "Loot", Loot); -
binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js
5 5 Engine.LoadComponentScript("interfaces/GarrisonHolder.js"); 6 6 Engine.LoadComponentScript("interfaces/Health.js"); 7 7 Engine.LoadComponentScript("interfaces/Identity.js"); 8 Engine.LoadComponentScript("interfaces/Promotion.js"); 8 9 Engine.LoadComponentScript("interfaces/RallyPoint.js"); 9 10 Engine.LoadComponentScript("interfaces/ResourceDropsite.js"); 10 11 Engine.LoadComponentScript("interfaces/ResourceGatherer.js"); -
binaries/data/mods/public/simulation/components/Identity.js
115 115 116 116 Identity.prototype.GetRank = function() 117 117 { 118 if (this.template.Rank) 119 return this.template.Rank; 120 return ""; 118 return (this.template.Rank || ""); 121 119 }; 122 120 123 121 Identity.prototype.GetClassesList = function() -
binaries/data/mods/public/simulation/components/UnitAI.js
110 110 // ignore 111 111 }, 112 112 113 "EntityRenamed": function(msg) { 114 // ignore 115 }, 116 113 117 // Formation handlers: 114 118 115 119 "FormationLeave": function(msg) { … … 305 309 this.SetNextState("INDIVIDUAL.GARRISON.GARRISONED"); 306 310 } 307 311 }, 312 313 "Order.Cheering": function(msg) { 314 this.SetNextState("INDIVIDUAL.CHEERING"); 315 }, 308 316 309 317 // States for the special entity representing a group of units moving in formation: 310 318 "FORMATIONCONTROLLER": { … … 412 420 error("Animal got moved into INDIVIDUAL.* state"); 413 421 }, 414 422 415 "Attacked": function(msg) { 423 "Attacked": function(msg) { 416 424 if (this.GetStance().targetAttackers) 417 425 { 418 426 this.RespondToTargetedEntities([msg.data.attacker]); … … 533 541 }, 534 542 535 543 "COMBAT": { 544 "EntityRenamed": function(msg) { 545 if (this.order.data.target == msg.entity) 546 this.order.data.target = msg.newentity; 547 }, 548 536 549 "Attacked": function(msg) { 537 550 // If we're already in combat mode, ignore anyone else 538 551 // who's attacking us … … 980 993 }, 981 994 }, 982 995 996 "CHEERING": { 997 "enter": function() { 998 // Unit is invulnerable while cheering 999 var cmpDamageReceiver = Engine.QueryInterface(this.entity, IID_DamageReceiver); 1000 cmpDamageReceiver.SetInvulnerability(true); 1001 this.SelectAnimation("promotion"); 1002 this.StartTimer(4000, 4000); 1003 return false; 1004 }, 1005 1006 "leave": function() { 1007 this.StopTimer(); 1008 var cmpDamageReceiver = Engine.QueryInterface(this.entity, IID_DamageReceiver); 1009 cmpDamageReceiver.SetInvulnerability(false); 1010 }, 1011 1012 "Timer": function(msg) { 1013 this.FinishOrder(); 1014 }, 1015 }, 983 1016 }, 984 1017 985 1018 "ANIMAL": { … … 1322 1355 UnitAI.prototype.PushOrderFront = function(type, data) 1323 1356 { 1324 1357 var order = { "type": type, "data": data }; 1325 this.orderQueue.unshift(order); 1326 1327 this.order = order; 1328 UnitFsm.ProcessMessage(this, {"type": "Order."+this.order.type, "data": this.order.data}); 1358 // If current order is cheering then add new order after it 1359 if (this.order && this.order.type == "Cheering") 1360 { 1361 var cheeringOrder = this.orderQueue.shift(); 1362 this.orderQueue.unshift(cheeringOrder, order); 1363 } 1364 else 1365 { 1366 this.orderQueue.unshift(order); 1367 this.order = order; 1368 UnitFsm.ProcessMessage(this, {"type": "Order."+this.order.type, "data": this.order.data}); 1369 } 1329 1370 }; 1330 1371 1331 1372 UnitAI.prototype.ReplaceOrder = function(type, data) 1332 1373 { 1333 this.orderQueue = []; 1334 this.PushOrder(type, data); 1374 // If current order is cheering then add new order after it 1375 if (this.order && this.order.type == "Cheering") 1376 { 1377 var order = { "type": type, "data": data }; 1378 var cheeringOrder = this.orderQueue.shift(); 1379 this.orderQueue = [ cheeringOrder, order ]; 1380 } 1381 else 1382 { 1383 this.orderQueue = []; 1384 this.PushOrder(type, data); 1385 } 1335 1386 }; 1336 1387 1388 UnitAI.prototype.GetOrders = function() 1389 { 1390 return this.orderQueue.slice(); 1391 } 1392 1393 UnitAI.prototype.AddOrders = function(orders) 1394 { 1395 for each (var order in orders) 1396 { 1397 this.PushOrder(order.type, order.data); 1398 } 1399 } 1400 1337 1401 UnitAI.prototype.TimerHandler = function(data, lateness) 1338 1402 { 1339 1403 // Reset the timer … … 1401 1465 UnitFsm.ProcessMessage(this, {"type": "ConstructionFinished", "data": msg}); 1402 1466 }; 1403 1467 1468 UnitAI.prototype.OnGlobalEntityRenamed = function(msg) 1469 { 1470 UnitFsm.ProcessMessage(this, {"type": "EntityRenamed", "entity": msg.entity, "newentity": msg.newentity}); 1471 } 1472 1404 1473 UnitAI.prototype.OnAttacked = function(msg) 1405 1474 { 1406 1475 UnitFsm.ProcessMessage(this, {"type": "Attacked", "data": msg}); … … 1907 1976 this.AddOrder("Repair", { "target": target, "autocontinue": autocontinue }, queued); 1908 1977 }; 1909 1978 1979 UnitAI.prototype.Cheer = function() 1980 { 1981 this.AddOrder("Cheering", null, false); 1982 }; 1983 1910 1984 UnitAI.prototype.SetStance = function(stance) 1911 1985 { 1912 1986 if (g_Stances[stance]) -
binaries/data/mods/public/simulation/components/Looter.js
3 3 Looter.prototype.Schema = 4 4 "<empty/>"; 5 5 6 /* 7 * T ODO: this all needs to be designed and implemented6 /** 7 * Try to collect loot from target entity 8 8 */ 9 9 Looter.prototype.Collect = function(targetEntity) 10 { 11 var cmpLoot = Engine.QueryInterface(targetEntity, IID_Loot); 12 if (!cmpLoot) return; 13 14 var xp = cmpLoot.GetXp(); 15 if (xp > 0) 16 { 17 var cmpPromotion = Engine.QueryInterface(this.entity, IID_Promotion); 18 if (cmpPromotion) cmpPromotion.IncreaseXp(xp); 19 } 20 var cmpPlayer = QueryOwnerInterface(this.entity, IID_Player); 21 cmpPlayer.AddResources(cmpLoot.GetResources()); 22 } 23 10 24 Engine.RegisterComponentType(IID_Looter, "Looter", Looter); 11 25 -
binaries/data/mods/public/simulation/components/Armour.js
19 19 20 20 Armour.prototype.Init = function() 21 21 { 22 this.invulnerable = false; 22 23 }; 23 24 24 25 Armour.prototype.Serialize = null; // we have no dynamic state to save 25 26 27 Armour.prototype.SetInvulnerability = function(invulnerability) 28 { 29 this.invulnerable = invulnerability; 30 }; 31 26 32 Armour.prototype.TakeDamage = function(hack, pierce, crush) 27 33 { 34 if (this.invulnerable) return { "killed": false }; 28 35 // Adjust damage values based on armour 29 36 var adjHack = Math.max(0, hack - this.template.Hack); 30 37 var adjPierce = Math.max(0, pierce - this.template.Pierce); -
binaries/data/mods/public/simulation/components/Attack.js
211 211 212 212 /** 213 213 * Called when some units kills something (another unit, building, animal etc) 214 * update player statistics only for now215 214 */ 216 215 Attack.prototype.TargetKilled = function(killerEntity, targetEntity) 217 216 { … … 219 218 if (cmpKillerPlayerStatisticsTracker) cmpKillerPlayerStatisticsTracker.KilledEntity(targetEntity); 220 219 var cmpTargetPlayerStatisticsTracker = QueryOwnerInterface(targetEntity, IID_StatisticsTracker); 221 220 if (cmpTargetPlayerStatisticsTracker) cmpTargetPlayerStatisticsTracker.LostEntity(targetEntity); 221 222 // if unit can collect loot, lets try to collect it 223 var cmpLooter = Engine.QueryInterface(killerEntity, IID_Looter); 224 if (cmpLooter) 225 { 226 cmpLooter.Collect(targetEntity); 227 } 222 228 } 223 229 224 230 /** -
binaries/data/mods/public/simulation/components/Promotion.js
4 4 "<element name='Entity'>" + 5 5 "<text/>" + 6 6 "</element>" + 7 "<element name='Req '>" +7 "<element name='RequiredXp'>" + 8 8 "<data type='positiveInteger'/>" + 9 9 "</element>"; 10 10 11 /* 12 * TODO: this all needs to be designed and implemented 13 */ 11 Promotion.prototype.Init = function() 12 { 13 this.currentXp = 0; 14 } 15 16 Promotion.prototype.GetRequiredXp = function() 17 { 18 return +(this.template.RequiredXp); 19 }; 14 20 21 Promotion.prototype.GetCurrentXp = function() 22 { 23 return +(this.currentXp || 0); 24 }; 25 26 Promotion.prototype.GetPromotedTemplateName = function() 27 { 28 return this.template.Entity; 29 } 30 31 Promotion.prototype.Promote = function(promotedTemplateName) 32 { 33 // Create promoted unit entity 34 var promotedUnitEntity = Engine.AddEntity(promotedTemplateName); 35 36 // Copy parameters from current entity to promoted one 37 var cmpCurrentUnitPosition = Engine.QueryInterface(this.entity, IID_Position); 38 var cmpPromotedUnitPosition = Engine.QueryInterface(promotedUnitEntity, IID_Position); 39 if (cmpCurrentUnitPosition.IsInWorld()) 40 { 41 var pos = cmpCurrentUnitPosition.GetPosition2D(); 42 cmpPromotedUnitPosition.JumpTo(pos.x, pos.y); 43 } 44 var rot = cmpCurrentUnitPosition.GetRotation(); 45 cmpPromotedUnitPosition.SetYRotation(rot.y); 46 cmpPromotedUnitPosition.SetXZRotation(rot.x, rot.z); 47 var heightOffset = cmpCurrentUnitPosition.GetHeightOffset(); 48 cmpPromotedUnitPosition.SetHeightOffset(heightOffset); 49 50 var cmpCurrentUnitOwnership = Engine.QueryInterface(this.entity, IID_Ownership); 51 var cmpPromotedUnitOwnership = Engine.QueryInterface(promotedUnitEntity, IID_Ownership); 52 cmpPromotedUnitOwnership.SetOwner(cmpCurrentUnitOwnership.GetOwner()); 53 54 var cmpPromotedUnitPromotion = Engine.QueryInterface(promotedUnitEntity, IID_Promotion); 55 if (cmpPromotedUnitPromotion) 56 cmpPromotedUnitPromotion.IncreaseXp(this.currentXp); 57 58 var cmpCurrentUnitResourceGatherer = Engine.QueryInterface(this.entity, IID_ResourceGatherer); 59 var cmpPromotedUnitResourceGatherer = Engine.QueryInterface(promotedUnitEntity, IID_ResourceGatherer); 60 if (cmpCurrentUnitResourceGatherer && cmpPromotedUnitResourceGatherer) 61 { 62 var carriedResorces = cmpCurrentUnitResourceGatherer.GetCarryingStatus(); 63 cmpPromotedUnitResourceGatherer.GiveResources(carriedResorces); 64 } 65 66 var cmpCurrentUnitAI = Engine.QueryInterface(this.entity, IID_UnitAI); 67 var cmpPromotedUnitAI = Engine.QueryInterface(promotedUnitEntity, IID_UnitAI); 68 cmpPromotedUnitAI.Cheer(); 69 var orders = cmpCurrentUnitAI.GetOrders(); 70 cmpPromotedUnitAI.AddOrders(orders); 71 72 Engine.BroadcastMessage(MT_EntityRenamed, { entity: this.entity, newentity: promotedUnitEntity }); 73 74 // Destroy current entity 75 Engine.DestroyEntity(this.entity); 76 } 77 78 Promotion.prototype.IncreaseXp = function(amount) 79 { 80 this.currentXp += +(amount); 81 82 if (this.currentXp >= this.template.RequiredXp) 83 { 84 var promotionTemplate = this.template; 85 do 86 { 87 this.currentXp -= promotionTemplate.RequiredXp; 88 var promotedTemplateName = promotionTemplate.Entity; 89 var cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager); 90 var template = cmpTemplateManager.GetTemplate(promotedTemplateName); 91 promotionTemplate = template.Promotion || null; 92 } 93 while (promotionTemplate != null && this.currentXp >= promotionTemplate.RequiredXp); 94 this.Promote(promotedTemplateName); 95 } 96 } 97 15 98 Engine.RegisterComponentType(IID_Promotion, "Promotion", Promotion); -
binaries/data/mods/public/simulation/components/Formation.js
286 286 this.RemoveMembers([msg.entity]); 287 287 }; 288 288 289 Formation.prototype.OnGlobalEntityRenamed = function(msg) 290 { 291 if (this.members[msg.entity]) 292 { 293 this.members.splice(this.members.indexOf(msg.entity), 1); 294 this.members.push(msg.newentity); 295 296 var cmpOldUnitAI = Engine.QueryInterface(msg.entity, IID_UnitAI); 297 cmpOldUnitAI.SetFormationController(INVALID_ENTITY); 298 299 var cmpNewUnitAI = Engine.QueryInterface(msg.newentity, IID_UnitAI); 300 cmpNewUnitAI.SetFormationController(this.entity); 301 } 302 } 303 289 304 Engine.RegisterComponentType(IID_Formation, "Formation", Formation); -
binaries/data/mods/public/simulation/templates/units/hele_infantry_javelinist_b.xml
8 8 <Icon>units/hele_infantry_javelinist.png</Icon> 9 9 </Identity> 10 10 <Promotion> 11 <Entity> hele_infantry_javelinist_a</Entity>11 <Entity>units/hele_infantry_javelinist_a</Entity> 12 12 </Promotion> 13 13 <Cost> 14 14 <Resources> -
binaries/data/mods/public/simulation/templates/units/hele_infantry_javelinist_e.xml
1 1 <?xml version="1.0" encoding="utf-8"?> 2 2 <Entity parent="units/hele_infantry_javelinist_a"> 3 <Identity>4 <Rank>Elite</Rank>5 </Identity>6 3 <ResourceGatherer> 7 4 <BaseSpeed>0.5</BaseSpeed> 8 5 </ResourceGatherer> … … 22 19 <VisualActor> 23 20 <Actor>units/hellenes/infantry_javelinist_e.xml</Actor> 24 21 </VisualActor> 22 <Promotion disable=""/> 25 23 </Entity> -
binaries/data/mods/public/simulation/templates/units/celt_cavalry_javelinist_a.xml
4 4 <Rank>Advanced</Rank> 5 5 </Identity> 6 6 <Promotion> 7 <Entity> celt_cavalry_javelinist_e</Entity>7 <Entity>units/celt_cavalry_javelinist_e</Entity> 8 8 </Promotion> 9 9 <ResourceGatherer> 10 10 <BaseSpeed>0.75</BaseSpeed> -
binaries/data/mods/public/simulation/templates/units/celt_cavalry_javelinist_b.xml
8 8 <Icon>units/celt_cavalry_javelinist.png</Icon> 9 9 </Identity> 10 10 <Promotion> 11 <Entity> celt_cavalry_javelinist_a</Entity>11 <Entity>units/celt_cavalry_javelinist_a</Entity> 12 12 </Promotion> 13 13 <Armour> 14 14 <Hack>2.0</Hack> -
binaries/data/mods/public/simulation/templates/units/celt_cavalry_javelinist_e.xml
1 1 <?xml version="1.0" encoding="utf-8"?> 2 2 <Entity parent="units/celt_cavalry_javelinist_a"> 3 <Identity>4 <Rank>Elite</Rank>5 </Identity>6 3 <ResourceGatherer> 7 4 <BaseSpeed>0.5</BaseSpeed> 8 5 </ResourceGatherer> … … 29 26 <VisualActor> 30 27 <Actor>units/celts/cavalry_javelinist_e.xml</Actor> 31 28 </VisualActor> 29 <Promotion disable=""/> 32 30 </Entity> -
binaries/data/mods/public/simulation/templates/units/rome_legionnaire_marian.xml
9 9 <Icon>units/rome_super_legion_marian.png</Icon> 10 10 </Identity> 11 11 <Promotion> 12 <Entity> rome_legionnaire_imperial</Entity>13 <Req >500</Req>12 <Entity>units/rome_legionnaire_imperial</Entity> 13 <RequiredXp>500</RequiredXp> 14 14 </Promotion> 15 15 <VisualActor> 16 16 <Actor>units/romans/super_unit_3.xml</Actor> -
binaries/data/mods/public/simulation/templates/units/hele_infantry_spearman_a.xml
4 4 <Rank>Advanced</Rank> 5 5 </Identity> 6 6 <Promotion> 7 <Entity> hele_infantry_spearman_e</Entity>7 <Entity>units/hele_infantry_spearman_e</Entity> 8 8 </Promotion> 9 9 <ResourceGatherer> 10 10 <BaseSpeed>0.75</BaseSpeed> -
binaries/data/mods/public/simulation/templates/units/hele_infantry_spearman_b.xml
8 8 <Icon>units/hele_infantry_spearman.png</Icon> 9 9 </Identity> 10 10 <Promotion> 11 <Entity> hele_infantry_spearman_a</Entity>11 <Entity>units/hele_infantry_spearman_a</Entity> 12 12 </Promotion> 13 13 <Cost> 14 14 <Resources> -
binaries/data/mods/public/simulation/templates/units/hele_infantry_spearman_e.xml
1 1 <?xml version="1.0" encoding="utf-8"?> 2 2 <Entity parent="units/hele_infantry_spearman_a"> 3 <Identity>4 <Rank>Elite</Rank>5 </Identity>6 3 <ResourceGatherer> 7 4 <BaseSpeed>0.5</BaseSpeed> 8 5 </ResourceGatherer> … … 33 30 <VisualActor> 34 31 <Actor>units/hellenes/infantry_spearman_e.xml</Actor> 35 32 </VisualActor> 36 33 <Promotion disable=""/> 37 34 </Entity> -
binaries/data/mods/public/simulation/templates/units/hele_cavalry_javelinist_a.xml
4 4 <Rank>Advanced</Rank> 5 5 </Identity> 6 6 <Promotion> 7 <Entity> hele_cavalry_javelinist_e</Entity>7 <Entity>units/hele_cavalry_javelinist_e</Entity> 8 8 </Promotion> 9 9 <ResourceGatherer> 10 10 <BaseSpeed>0.75</BaseSpeed> -
binaries/data/mods/public/simulation/templates/units/hele_cavalry_javelinist_b.xml
8 8 <Icon>units/hele_cavalry_javelinist.png</Icon> 9 9 </Identity> 10 10 <Promotion> 11 <Entity> hele_cavalry_javelinist_a</Entity>11 <Entity>units/hele_cavalry_javelinist_a</Entity> 12 12 </Promotion> 13 13 <Vision> 14 14 <Range>110</Range> -
binaries/data/mods/public/simulation/templates/units/celt_infantry_javelinist_a.xml
4 4 <Rank>Advanced</Rank> 5 5 </Identity> 6 6 <Promotion> 7 <Entity> celt_infantry_javelinist_e</Entity>7 <Entity>units/celt_infantry_javelinist_e</Entity> 8 8 </Promotion> 9 9 <ResourceGatherer> 10 10 <BaseSpeed>0.75</BaseSpeed> -
binaries/data/mods/public/simulation/templates/units/celt_infantry_javelinist_b.xml
8 8 <Icon>units/celt_infantry_javelinist.png</Icon> 9 9 </Identity> 10 10 <Promotion> 11 <Entity> celt_infantry_javelinist_a</Entity>11 <Entity>units/celt_infantry_javelinist_a</Entity> 12 12 </Promotion> 13 13 <Armour> 14 14 <Hack>2.0</Hack> -
binaries/data/mods/public/simulation/templates/units/hele_cavalry_javelinist_e.xml
1 1 <?xml version="1.0" encoding="utf-8"?> 2 2 <Entity parent="units/hele_cavalry_javelinist_a"> 3 <Identity>4 <Rank>Elite</Rank>5 </Identity>6 3 <ResourceGatherer> 7 4 <BaseSpeed>0.5</BaseSpeed> 8 5 </ResourceGatherer> … … 29 26 <VisualActor> 30 27 <Actor>units/hellenes/cavalry_javelinist_e.xml</Actor> 31 28 </VisualActor> 32 29 <Promotion disable=""/> 33 30 </Entity> -
binaries/data/mods/public/simulation/templates/units/celt_infantry_javelinist_e.xml
1 1 <?xml version="1.0" encoding="utf-8"?> 2 2 <Entity parent="units/celt_infantry_javelinist_a"> 3 <Identity>4 <Rank>Elite</Rank>5 </Identity>6 3 <ResourceGatherer> 7 4 <BaseSpeed>0.5</BaseSpeed> 8 5 </ResourceGatherer> … … 29 26 <VisualActor> 30 27 <Actor>units/celts/infantry_javelinist_e.xml</Actor> 31 28 </VisualActor> 29 <Promotion disable=""/> 32 30 </Entity> -
binaries/data/mods/public/simulation/templates/units/mace_hypaspist.xml
8 8 <Icon>units/macedonian_hypaspist.png</Icon> 9 9 </Identity> 10 10 <Promotion> 11 <Entity> mace_argyraspis</Entity>12 <Req >500</Req>11 <Entity>units/mace_argyraspis</Entity> 12 <RequiredXp>500</RequiredXp> 13 13 </Promotion> 14 14 <Cost> 15 15 <Resources> -
binaries/data/mods/public/simulation/templates/units/iber_infantry_javelinist_a.xml
1 1 <?xml version="1.0" encoding="utf-8"?> 2 2 <Entity parent="units/iber_infantry_javelinist_b"> 3 3 <Promotion> 4 <Entity> iber_infantry_javelinist_e</Entity>4 <Entity>units/iber_infantry_javelinist_e</Entity> 5 5 </Promotion> 6 6 <VisualActor> 7 7 <Actor>units/iberians/infantry_javelinist_a.xml</Actor> -
binaries/data/mods/public/simulation/templates/units/iber_infantry_javelinist_b.xml
7 7 <Icon>units/cart_cavalry_javelinist.png</Icon> 8 8 </Identity> 9 9 <Promotion> 10 <Entity> iber_infantry_javelinist_a</Entity>10 <Entity>units/iber_infantry_javelinist_a</Entity> 11 11 </Promotion> 12 12 <VisualActor> 13 13 <Actor>units/iberians/infantry_javelinist_b.xml</Actor> -
binaries/data/mods/public/simulation/templates/units/celt_infantry_spearman_a.xml
4 4 <Rank>Advanced</Rank> 5 5 </Identity> 6 6 <Promotion> 7 <Entity> celt_infantry_spearman_e</Entity>7 <Entity>units/celt_infantry_spearman_e</Entity> 8 8 </Promotion> 9 9 <ResourceGatherer> 10 10 <BaseSpeed>0.75</BaseSpeed> -
binaries/data/mods/public/simulation/templates/units/celt_infantry_spearman_b.xml
8 8 <Icon>units/celt_infantry_spearman.png</Icon> 9 9 </Identity> 10 10 <Promotion> 11 <Entity> celt_infantry_spearman_a</Entity>11 <Entity>units/celt_infantry_spearman_a</Entity> 12 12 </Promotion> 13 13 <Armour> 14 14 <Hack>3.0</Hack> -
binaries/data/mods/public/simulation/templates/units/iber_infantry_swordsman_a.xml
1 1 <?xml version="1.0" encoding="utf-8"?> 2 2 <Entity parent="units/iber_infantry_swordsman_b"> 3 3 <Promotion> 4 <Entity> iber_infantry_swordsman_e</Entity>4 <Entity>units/iber_infantry_swordsman_e</Entity> 5 5 </Promotion> 6 6 <VisualActor> 7 7 <Actor>units/iberians/infantry_swordsman_a.xml</Actor> -
binaries/data/mods/public/simulation/templates/units/iber_cavalry_spearman_a.xml
1 1 <?xml version="1.0" encoding="utf-8"?> 2 2 <Entity parent="units/iber_cavalry_spearman_b"> 3 3 <Promotion> 4 <Entity> iber_cavalry_spearman_e</Entity>4 <Entity>units/iber_cavalry_spearman_e</Entity> 5 5 </Promotion> 6 6 <VisualActor> 7 7 <Actor>units/iberians/cavalry_spearman_a.xml</Actor> -
binaries/data/mods/public/simulation/templates/units/iber_infantry_swordsman_b.xml
7 7 <History>The Iberians were master sword-smiths and the falcata was their greatest creation. Wielded by superb swordsmen equipped with light armor and a buckler known as a caetra, they caused untold carnage. Thanks to this Iberian infantry were fast and agile unlike many of their opponents and could bite hard when they attacked. Their skill with sword and buckler were legendary, allowing them to go toe-to-toe with heavy infantry.</History> 8 8 </Identity> 9 9 <Promotion> 10 <Entity> iber_infantry_swordsman_a</Entity>10 <Entity>units/iber_infantry_swordsman_a</Entity> 11 11 </Promotion> 12 12 <VisualActor> 13 13 <Actor>units/iberians/infantry_swordsman_b.xml</Actor> -
binaries/data/mods/public/simulation/templates/units/iber_cavalry_spearman_b.xml
7 7 <History>Armed like the light infantry, Iberian cavalry were often pursued as mercenaries, especially by the Carthaginians. Mounted on excellent horses and wielding high-grade swords they were capable of taking on heavy or light cavalry. As with all Iberians armor was scarce, but they wore the ubiquitous sinew caps made famous by the peoples of the peninsula.</History> 8 8 </Identity> 9 9 <Promotion> 10 <Entity> iber_cavalry_spearman_a</Entity>10 <Entity>units/iber_cavalry_spearman_a</Entity> 11 11 </Promotion> 12 12 <VisualActor> 13 13 <Actor>units/iberians/cavalry_spearman_b.xml</Actor> -
binaries/data/mods/public/simulation/templates/units/hele_cavalry_swordsman_a.xml
4 4 <Rank>Advanced</Rank> 5 5 </Identity> 6 6 <Promotion> 7 <Entity> hele_cavalry_swordsman_e</Entity>7 <Entity>units/hele_cavalry_swordsman_e</Entity> 8 8 </Promotion> 9 9 <ResourceGatherer> 10 10 <BaseSpeed>0.75</BaseSpeed> -
binaries/data/mods/public/simulation/templates/units/celt_infantry_spearman_e.xml
1 1 <?xml version="1.0" encoding="utf-8"?> 2 2 <Entity parent="units/celt_infantry_spearman_a"> 3 <Identity>4 <Rank>Elite</Rank>5 </Identity>6 3 <ResourceGatherer> 7 4 <BaseSpeed>0.5</BaseSpeed> 8 5 </ResourceGatherer> … … 33 30 <VisualActor> 34 31 <Actor>units/celts/infantry_spearman_e.xml</Actor> 35 32 </VisualActor> 33 <Promotion disable=""/> 36 34 </Entity> -
binaries/data/mods/public/simulation/templates/units/hele_cavalry_swordsman_b.xml
8 8 <Icon>units/hele_cavalry_swordsman.png</Icon> 9 9 </Identity> 10 10 <Promotion> 11 <Entity> hele_cavalry_swordsman_a</Entity>11 <Entity>units/hele_cavalry_swordsman_a</Entity> 12 12 </Promotion> 13 13 <Vision> 14 14 <Range>110</Range> -
binaries/data/mods/public/simulation/templates/units/hele_cavalry_swordsman_e.xml
1 1 <?xml version="1.0" encoding="utf-8"?> 2 2 <Entity parent="units/hele_cavalry_swordsman_a"> 3 <Identity>4 <Rank>Elite</Rank>5 </Identity>6 3 <ResourceGatherer> 7 4 <BaseSpeed>0.5</BaseSpeed> 8 5 </ResourceGatherer> … … 31 28 <VisualActor> 32 29 <Actor>units/hellenes/cavalry_swordsman_e.xml</Actor> 33 30 </VisualActor> 34 31 <Promotion disable=""/> 35 32 </Entity> -
binaries/data/mods/public/simulation/templates/units/iber_infantry_slinger_a.xml
1 1 <?xml version="1.0" encoding="utf-8"?> 2 2 <Entity parent="units/iber_infantry_slinger_b"> 3 3 <Promotion> 4 <Entity> iber_infantry_slinger_e</Entity>4 <Entity>units/iber_infantry_slinger_e</Entity> 5 5 </Promotion> 6 6 <VisualActor> 7 7 <Actor>units/iberians/infantry_slinger_a.xml</Actor> -
binaries/data/mods/public/simulation/templates/units/iber_infantry_slinger_b.xml
7 7 <History>Iberian slingers were the undisputed masters of the weapon and extracted a high toll of the enemy. Going into combat scantily clad at best, the slinger carried three slings tied around his waist, each of a different length allowing him to attack opponents from all ranges. Unlike other cultures, the Iberian slingers threw rocks instead of specially made lead shot.</History> 8 8 </Identity> 9 9 <Promotion> 10 <Entity> iber_infantry_slinger_a</Entity>10 <Entity>units/iber_infantry_slinger_a</Entity> 11 11 </Promotion> 12 12 <VisualActor> 13 13 <Actor>units/iberians/infantry_slinger_b.xml</Actor> -
binaries/data/mods/public/simulation/templates/units/iber_infantry_spearman_a.xml
1 1 <?xml version="1.0" encoding="utf-8"?> 2 2 <Entity parent="units/iber_infantry_spearman_b"> 3 3 <Promotion> 4 <Entity> iber_infantry_spearman_e</Entity>4 <Entity>units/iber_infantry_spearman_e</Entity> 5 5 </Promotion> 6 6 <VisualActor> 7 7 <Actor>units/iberians/infantry_spearman_a.xml</Actor> -
binaries/data/mods/public/simulation/templates/units/iber_infantry_spearman_b.xml
7 7 <History>A long-bladed spear was a chief melee weapon of the Iberian infantry, often used after the javelins had been thrown. Typically carried by infantry know as scutarii for their long oval body shields, the spearmen would close in formation to attack their opponents. Usually lightly armored, they were quick and had a ferocious reputation.</History> 8 8 </Identity> 9 9 <Promotion> 10 <Entity> iber_infantry_spearman_a</Entity>10 <Entity>units/iber_infantry_spearman_a</Entity> 11 11 </Promotion> 12 12 <VisualActor> 13 13 <Actor>units/iberians/infantry_spearman_b.xml</Actor> -
binaries/data/mods/public/simulation/templates/units/celt_cavalry_spearman_a.xml
4 4 <Rank>Advanced</Rank> 5 5 </Identity> 6 6 <Promotion> 7 <Entity> celt_cavalry_spearman_e</Entity>7 <Entity>units/celt_cavalry_spearman_e</Entity> 8 8 </Promotion> 9 9 <ResourceGatherer> 10 10 <BaseSpeed>0.75</BaseSpeed> -
binaries/data/mods/public/simulation/templates/units/celt_cavalry_spearman_b.xml
10 10 <Icon>units/celt_cavalry_spearman.png</Icon> 11 11 </Identity> 12 12 <Promotion> 13 <Entity> celt_cavalry_spearman_a</Entity>13 <Entity>units/celt_cavalry_spearman_a</Entity> 14 14 </Promotion> 15 15 <Cost> 16 16 <BuildTime>10</BuildTime> -
binaries/data/mods/public/simulation/templates/units/rome_legionnaire_imperial.xml
8 8 <Icon>units/rome_super_legion_imperial.png</Icon> 9 9 </Identity> 10 10 <Promotion> 11 <Entity> rome_centurio_imperial</Entity>12 <Req >700</Req>11 <Entity>units/rome_centurio_imperial</Entity> 12 <RequiredXp>700</RequiredXp> 13 13 </Promotion> 14 14 <Armour> 15 15 <Hack>10.0</Hack> -
binaries/data/mods/public/simulation/templates/units/celt_cavalry_spearman_e.xml
1 1 <?xml version="1.0" encoding="utf-8"?> 2 2 <Entity parent="units/celt_cavalry_spearman_a"> 3 <Identity>4 <Rank>Elite</Rank>5 </Identity>6 3 <ResourceGatherer> 7 4 <BaseSpeed>0.5</BaseSpeed> 8 5 </ResourceGatherer> … … 28 25 <VisualActor> 29 26 <Actor>units/celts/cavalry_spearman_e.xml</Actor> 30 27 </VisualActor> 28 <Promotion disable=""/> 31 29 </Entity> -
binaries/data/mods/public/simulation/templates/units/celt_cavalry_swordsman_a.xml
4 4 <Rank>Advanced</Rank> 5 5 </Identity> 6 6 <Promotion> 7 <Entity> celt_cavalry_swordsman_e</Entity>7 <Entity>units/celt_cavalry_swordsman_e</Entity> 8 8 </Promotion> 9 9 <ResourceGatherer> 10 10 <BaseSpeed>0.75</BaseSpeed> -
binaries/data/mods/public/simulation/templates/units/celt_cavalry_swordsman_b.xml
8 8 <Icon>units/celt_cavalry_swordsman.png</Icon> 9 9 </Identity> 10 10 <Promotion> 11 <Entity> celt_cavalry_swordsman_a</Entity>11 <Entity>units/celt_cavalry_swordsman_a</Entity> 12 12 </Promotion> 13 13 <Armour> 14 14 <Hack>3.0</Hack> -
binaries/data/mods/public/simulation/templates/units/celt_cavalry_swordsman_e.xml
1 1 <?xml version="1.0" encoding="utf-8"?> 2 2 <Entity parent="units/celt_cavalry_swordsman_a"> 3 <Identity>4 <Rank>Elite</Rank>5 </Identity>6 3 <ResourceGatherer> 7 4 <BaseSpeed>0.5</BaseSpeed> 8 5 </ResourceGatherer> … … 31 28 <VisualActor> 32 29 <Actor>units/celts/cavalry_swordsman_e.xml</Actor> 33 30 </VisualActor> 31 <Promotion disable=""/> 34 32 </Entity> -
binaries/data/mods/public/simulation/templates/units/hele_infantry_archer_a.xml
4 4 <Rank>Advanced</Rank> 5 5 </Identity> 6 6 <Promotion> 7 <Entity> hele_infantry_archer_e</Entity>7 <Entity>units/hele_infantry_archer_e</Entity> 8 8 </Promotion> 9 9 <ResourceGatherer> 10 10 <BaseSpeed>0.75</BaseSpeed> -
binaries/data/mods/public/simulation/templates/units/hele_infantry_archer_b.xml
9 9 <Icon>units/hele_infantry_archer.png</Icon> 10 10 </Identity> 11 11 <Promotion> 12 <Entity> hele_infantry_archer_a</Entity>12 <Entity>units/hele_infantry_archer_a</Entity> 13 13 </Promotion> 14 14 <Cost> 15 15 <Resources> -
binaries/data/mods/public/simulation/templates/units/hele_infantry_javelinist_a.xml
4 4 <Rank>Advanced</Rank> 5 5 </Identity> 6 6 <Promotion> 7 <Entity> hele_infantry_javelinist_e</Entity>7 <Entity>units/hele_infantry_javelinist_e</Entity> 8 8 </Promotion> 9 9 <ResourceGatherer> 10 10 <BaseSpeed>0.75</BaseSpeed> -
binaries/data/mods/public/simulation/templates/units/hele_infantry_archer_e.xml
1 1 <?xml version="1.0" encoding="utf-8"?> 2 2 <Entity parent="units/hele_infantry_archer_a"> 3 <Identity>4 <Rank>Elite</Rank>5 </Identity>6 3 <ResourceGatherer> 7 4 <BaseSpeed>0.5</BaseSpeed> 8 5 </ResourceGatherer> … … 33 30 <VisualActor> 34 31 <Actor>units/hellenes/infantry_archer_e.xml</Actor> 35 32 </VisualActor> 33 <Promotion disable=""/> 36 34 </Entity> -
binaries/data/mods/public/simulation/templates/template_unit_infantry.xml
6 6 <Rank>Basic</Rank> 7 7 </Identity> 8 8 <Promotion> 9 <Req >600</Req>9 <RequiredXp>600</RequiredXp> 10 10 </Promotion> 11 11 <Cost> 12 12 <BuildTime>9</BuildTime> -
binaries/data/mods/public/simulation/templates/template_unit_cavalry.xml
6 6 <Rank>Basic</Rank> 7 7 </Identity> 8 8 <Promotion> 9 <Req >900</Req>9 <RequiredXp>900</RequiredXp> 10 10 </Promotion> 11 11 <Position> 12 12 <Anchor>pitch</Anchor> -
binaries/data/mods/public/simulation/templates/template_unit.xml
91 91 <Range>24</Range> 92 92 <RetainInFog>false</RetainInFog> 93 93 <AlwaysVisible>false</AlwaysVisible> 94 </Vision> 94 </Vision> 95 <Looter/> 95 96 <VisualActor> 96 97 <SilhouetteDisplay>true</SilhouetteDisplay> 97 98 <SilhouetteOccluder>false</SilhouetteOccluder> -
binaries/data/mods/public/art/actors/units/hellenes/infantry_spearman_a.xml
Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
27 27 <animation file="infantry/general/death/inf_04.psa" name="Death" speed="400"/> 28 28 <animation file="infantry/general/death/inf_06.psa" name="Death" speed="500"/> 29 29 <animation file="infantry/general/death/inf_07.psa" name="Death" speed="400"/> 30 <animation file="biped/inf_salute_c.psa" name="Promotion" speed="288"/> 30 31 </animations> 31 32 <mesh>skeletal/m_tunic_short.dae</mesh> 32 33 <props> -
binaries/data/mods/public/art/actors/units/hellenes/infantry_spearman_e.xml
27 27 <animation file="infantry/general/death/inf_04.psa" name="Death" speed="400"/> 28 28 <animation file="infantry/general/death/inf_06.psa" name="Death" speed="500"/> 29 29 <animation file="infantry/general/death/inf_07.psa" name="Death" speed="400"/> 30 <animation file="biped/inf_salute_c.psa" name="Promotion" speed="288"/> 30 31 </animations> 31 32 <mesh>skeletal/m_tunic_short.dae</mesh> 32 33 <props> -
binaries/data/mods/public/art/actors/units/hellenes/infantry_archer_a.xml
28 28 <animation file="infantry/general/death/inf_04.psa" name="Death" speed="400"/> 29 29 <animation file="infantry/general/death/inf_06.psa" name="Death" speed="500"/> 30 30 <animation file="infantry/general/death/inf_07.psa" name="Death" speed="400"/> 31 <animation file="biped/inf_salute_c.psa" name="Promotion" speed="288"/> 31 32 </animations> 32 33 <mesh>skeletal/m_tunic_short.dae</mesh> 33 34 <props> -
binaries/data/mods/public/art/actors/units/hellenes/infantry_javelinist_a.xml
30 30 <animation file="infantry/general/death/inf_05.psa" name="Death" speed="600"/> 31 31 <animation file="infantry/general/death/inf_06.psa" name="Death" speed="500"/> 32 32 <animation file="infantry/general/death/inf_07.psa" name="Death" speed="400"/> 33 <animation file="biped/inf_salute_c.psa" name="Promotion" speed="288"/> 33 34 </animations> 34 35 <props> 35 36 <prop actor="props/units/heads/floppy_b.xml" attachpoint="helmet"/> -
binaries/data/mods/public/art/actors/units/hellenes/infantry_archer_e.xml
27 27 <animation file="infantry/general/death/inf_04.psa" name="Death" speed="400"/> 28 28 <animation file="infantry/general/death/inf_06.psa" name="Death" speed="500"/> 29 29 <animation file="infantry/general/death/inf_07.psa" name="Death" speed="400"/> 30 <animation file="biped/inf_salute_c.psa" name="Promotion" speed="288"/> 30 31 </animations> 31 32 <mesh>skeletal/m_tunic_long.dae</mesh> 32 33 <props> -
binaries/data/mods/public/art/actors/units/hellenes/infantry_javelinist_e.xml
30 30 <animation file="infantry/general/death/inf_05.psa" name="Death" speed="600"/> 31 31 <animation file="infantry/general/death/inf_06.psa" name="Death" speed="500"/> 32 32 <animation file="infantry/general/death/inf_07.psa" name="Death" speed="400"/> 33 <animation file="biped/inf_salute_c.psa" name="Promotion" speed="288"/> 33 34 </animations> 34 35 <mesh>skeletal/m_tunic_long.dae</mesh> 35 36 <props> -
binaries/data/mods/public/art/actors/units/celts/infantry_spearman_a.xml
30 30 <animation file="infantry/general/death/inf_04.psa" name="Death" speed="400"/> 31 31 <animation file="infantry/general/death/inf_06.psa" name="Death" speed="500"/> 32 32 <animation file="infantry/general/death/inf_07.psa" name="Death" speed="400"/> 33 <animation file="biped/inf_salute_c.psa" name="Promotion" speed="288"/> 33 34 </animations> 34 35 <mesh>skeletal/m_pants_celt.dae</mesh> 35 36 <props> -
binaries/data/mods/public/art/actors/units/celts/infantry_spearman_e.xml
31 31 <animation file="infantry/general/death/inf_04.psa" name="Death" speed="400"/> 32 32 <animation file="infantry/general/death/inf_06.psa" name="Death" speed="500"/> 33 33 <animation file="infantry/general/death/inf_07.psa" name="Death" speed="400"/> 34 <animation file="biped/inf_salute_c.psa" name="Promotion" speed="288"/> 34 35 </animations> 35 36 <mesh>skeletal/m_pants_celt.dae</mesh> 36 37 <props> -
binaries/data/mods/public/art/actors/units/celts/infantry_javelinist_a.xml
33 33 <animation file="infantry/general/death/inf_04.psa" name="Death" speed="400"/> 34 34 <animation file="infantry/general/death/inf_06.psa" name="Death" speed="500"/> 35 35 <animation file="infantry/general/death/inf_07.psa" name="Death" speed="400"/> 36 <animation file="biped/inf_salute_c.psa" name="Promotion" speed="288"/> 36 37 </animations> 37 38 <mesh>skeletal/m_pants.dae</mesh> 38 39 <props> -
binaries/data/mods/public/art/actors/units/celts/infantry_javelinist_e.xml
31 31 <animation file="infantry/general/death/inf_04.psa" name="Death" speed="400"/> 32 32 <animation file="infantry/general/death/inf_06.psa" name="Death" speed="500"/> 33 33 <animation file="infantry/general/death/inf_07.psa" name="Death" speed="400"/> 34 <animation file="biped/inf_salute_c.psa" name="Promotion" speed="288"/> 34 35 </animations> 35 36 <mesh>skeletal/m_tights.dae</mesh> 36 37 <props> -
binaries/data/mods/public/art/actors/units/celts/super_unit_1.xml
4 4 <group> 5 5 <variant frequency="1" name="Base"> 6 6 <animations> 7 <animation file="biped/ not used/inf_salute_a.psa" name="Idle" speed="302"/>8 <animation file="biped/ not used/inf_salute_b.psa" name="Idle" speed="291"/>9 <animation file="biped/ not used/inf_salute_c.psa" name="Idle" speed="288"/>10 <animation file="biped/ not used/inf_salute_d.psa" name="Idle" speed="296"/>11 <animation file="biped/ not used/inf_salute_e.psa" name="Idle" speed="311"/>7 <animation file="biped/inf_salute_a.psa" name="Idle" speed="302"/> 8 <animation file="biped/inf_salute_b.psa" name="Idle" speed="291"/> 9 <animation file="biped/inf_salute_c.psa" name="Idle" speed="288"/> 10 <animation file="biped/inf_salute_d.psa" name="Idle" speed="296"/> 11 <animation file="biped/inf_salute_e.psa" name="Idle" speed="311"/> 12 12 <animation file="biped/walk_spearshield.psa" name="Walk" speed="120"/> 13 13 <animation file="infantry/sword/move/run/isw_s_off_01.psa" name="Run" speed="40"/> 14 14 <animation event="0.5" file="infantry/sword/attack/isw_s_em_04.psa" name="Attack" speed="80"/>