添加建造建筑能力


如果你曾经给不能建造建筑的单位添加了建造建筑的图标,那么在那个单位显示的建筑按钮一定是灰色的,并且不能按下去。


原因是因为这个单位没有开启建造能力,也没有建造动作(有的单位可能有,例如火枪手,只不过是tactics没有开启建筑能力,所以不能建造建筑。)
不说废话了,接下来教你怎样添加建造建筑能力(我采用的单位是铁军)。
1.先把你要添加的建筑按钮弄好,(效果就是上面截图的样子,图标灰色,不能建造)

  protoy.xml - 记事本 ____ X
文件(F)  编辑(E)  格式(O)  查看(V)  帮助(H)
	<Unit id ='940' name ='ypMercIronTroop'>
		<DBID>1391</DBID>
		<DisplayNameID>60771</DisplayNameID>
		<EditorNameID>60772</EditorNameID>
		<PopulationCount>2</PopulationCount>
		<ObstructionRadiusX>0.4900</ObstructionRadiusX>
		<ObstructionRadiusZ>0.4900</ObstructionRadiusZ>
		<FormationCategory>Ranged</FormationCategory>
		<MaxVelocity>4.5000</MaxVelocity>
		<MaxRunVelocity>6.5000</MaxRunVelocity>
		<MovementType>land</MovementType>
		<TurnRate>18.0000</TurnRate>
		<AnimFile>units\asians\mercenaries\iron_troop\iron_troop.xml</AnimFile>
		<ImpactType>Flesh</ImpactType>
		<PhysicsInfo>dude</PhysicsInfo>
		<Icon>units\asians\mercenaries\iron_troop\iron_troop_icon_64</Icon>
		<PortraitIcon>units\asians\mercenaries\iron_troop\iron_troop_icon_portrait</PortraitIcon>
		<RolloverTextID>60770</RolloverTextID>
		<ShortRolloverTextID>60769</ShortRolloverTextID>
		<InitialHitpoints>225.0000</InitialHitpoints>
		<MaxHitpoints>225.0000</MaxHitpoints>
		<LOS>20.0000</LOS>
		<ProjectileProtoUnit>Arrow</ProjectileProtoUnit>
		<AutoAttackRange>20.0000</AutoAttackRange>
		<UnitAIType>RangedCombative</UnitAIType>
		<TrainPoints>40.0000</TrainPoints>
		<Bounty>20.0000</Bounty>
		<BuildBounty>20.0000</BuildBounty>
		<Cost resourcetype ='Gold'>200.0000</Cost>
		<AllowedAge>2</AllowedAge>
		<Armor type ='Ranged' value ='0.6000'></Armor>
		<UnitType>LogicalTypeHealed</UnitType>
		<UnitType>LogicalTypeValidSharpshoot</UnitType>
		<UnitType>LogicalTypeNeededForVictory</UnitType>
		<UnitType>LogicalTypeHandUnitsAutoAttack</UnitType>
		<UnitType>LogicalTypeLandMilitary</UnitType>
		<UnitType>LogicalTypeScout</UnitType>
		<UnitType>LogicalTypeValidSPCUnitsDeadCondition</UnitType>
		<UnitType>LogicalTypeGarrisonInShips</UnitType>
		<UnitType>LogicalTypeRangedUnitsAutoAttack</UnitType>
		<UnitType>LogicalTypeVillagersAttack</UnitType>
		<UnitType>LogicalTypeHandUnitsAttack</UnitType>
		<UnitType>LogicalTypeRangedUnitsAttack</UnitType>
		<UnitType>LogicalTypeMinimapFilterMilitary</UnitType>
		<UnitType>Military</UnitType>
		<UnitType>UnitClass</UnitType>
		<UnitType>Unit</UnitType>
		<UnitType>AbstractArcher</UnitType>
		<UnitType>Mercenary</UnitType>
		<UnitType>AbstractInfantry</UnitType>
		<UnitType>CountsTowardMilitaryScore</UnitType>
		<UnitType>AbstractCavalryInfantry</UnitType>
		<UnitType>Ranged</UnitType>
		<UnitType>HasBountyValue</UnitType>
		<UnitType>AbstractRangedInfantry</UnitType>
		<UnitType>ConvertsHerds</UnitType>
		<Flag>CollidesWithProjectiles</Flag>
		<Flag>ApplyHandicapTraining</Flag>
		<Flag>CorpseDecays</Flag>
		<Flag>ShowGarrisonButton</Flag>
		<Flag>DontRotateObstruction</Flag>
		<Flag>ObscuredByUnits</Flag>
		<Flag>VisibleUnderFogIfGaia</Flag>
		<Flag>Tracked</Flag>
		<Train row ='0' page ='6' column ='0'>ypOutpostAsian</Train>
		<Train row ='0' page ='6' column ='1'>ypWarAcademy</Train>
		<Train row ='0' page ='6' column ='2'>ypCastle</Train>
		<Train row ='0' page ='6' column ='3'>ypDockAsian</Train>
		<Command page ='10' column ='1'>Stop</Command>
		<Command page ='10' column ='0'>Garrison</Command>
		<Command page ='10' column ='2'>Delete</Command>
		<Tactics>IronTroop.tactics</Tactics>
		<ProtoAction>
			<Name>BuildingAttack</Name>
			<Damage>22.000000</Damage>
			<DamageType>Siege</DamageType>
			<ROF>3.000000</ROF>
		</ProtoAction>
		<ProtoAction>
			<Name>DefendHandAttack</Name>
			<Damage>16.000000</Damage>
			<DamageType>Hand</DamageType>
			<ROF>1.500000</ROF>
			<DamageBonus type ='AbstractHeavyInfantry'>2.000000</DamageBonus>
			<DamageBonus type ='xpEagleKnight'>2.000000</DamageBonus>
			<DamageBonus type ='AbstractLightCavalry'>2.000000</DamageBonus>
			<DamageBonus type ='AbstractCavalry'>0.750000</DamageBonus>
			<DamageBonus type ='xpCoyoteMan'>0.750000</DamageBonus>
		</ProtoAction>
		<ProtoAction>
			<Name>DefendRangedAttack</Name>
			<Damage>25.000000</Damage>
			<DamageType>Ranged</DamageType>
			<MaxRange>16.000000</MaxRange>
			<ROF>1.500000</ROF>
			<DamageBonus type ='AbstractHeavyInfantry'>2.000000</DamageBonus>
			<DamageBonus type ='xpEagleKnight'>2.000000</DamageBonus>
			<DamageBonus type ='AbstractLightCavalry'>2.000000</DamageBonus>
			<DamageBonus type ='AbstractCavalry'>0.750000</DamageBonus>
			<DamageBonus type ='xpCoyoteMan'>0.750000</DamageBonus>
		</ProtoAction>
		<ProtoAction>
			<Name>MeleeHandAttack</Name>
			<Damage>16.000000</Damage>
			<DamageType>Hand</DamageType>
			<ROF>1.500000</ROF>
			<DamageBonus type ='AbstractHeavyInfantry'>2.000000</DamageBonus>
			<DamageBonus type ='xpEagleKnight'>2.000000</DamageBonus>
			<DamageBonus type ='AbstractLightCavalry'>2.000000</DamageBonus>
			<DamageBonus type ='xpCoyoteMan'>0.750000</DamageBonus>
			<DamageBonus type ='AbstractCavalry'>0.750000</DamageBonus>
		</ProtoAction>
		<ProtoAction>
			<Name>StaggerHandAttack</Name>
			<Damage>16.000000</Damage>
			<DamageType>Hand</DamageType>
			<ROF>1.500000</ROF>
			<DamageBonus type ='AbstractHeavyInfantry'>2.000000</DamageBonus>
			<DamageBonus type ='xpEagleKnight'>2.000000</DamageBonus>
			<DamageBonus type ='AbstractLightCavalry'>2.000000</DamageBonus>
			<DamageBonus type ='xpCoyoteMan'>0.750000</DamageBonus>
			<DamageBonus type ='AbstractCavalry'>0.750000</DamageBonus>
		</ProtoAction>
		<ProtoAction>
			<Name>StaggerRangedAttack</Name>
			<Damage>25.000000</Damage>
			<DamageType>Ranged</DamageType>
			<MaxRange>16.000000</MaxRange>
			<ROF>1.500000</ROF>
			<DamageBonus type ='AbstractHeavyInfantry'>2.000000</DamageBonus>
			<DamageBonus type ='AbstractLightCavalry'>2.000000</DamageBonus>
			<DamageBonus type ='xpEagleKnight'>2.000000</DamageBonus>
			<DamageBonus type ='xpCoyoteMan'>0.750000</DamageBonus>
			<DamageBonus type ='AbstractCavalry'>0.750000</DamageBonus>
		</ProtoAction>
		<ProtoAction>
			<Name>VolleyHandAttack</Name>
			<Damage>16.000000</Damage>
			<DamageType>Hand</DamageType>
			<ROF>1.500000</ROF>
			<DamageBonus type ='AbstractHeavyInfantry'>2.000000</DamageBonus>
			<DamageBonus type ='AbstractLightCavalry'>2.000000</DamageBonus>
			<DamageBonus type ='xpEagleKnight'>2.000000</DamageBonus>
			<DamageBonus type ='AbstractCavalry'>0.750000</DamageBonus>
			<DamageBonus type ='xpCoyoteMan'>0.750000</DamageBonus>
		</ProtoAction>
		<ProtoAction>
			<Name>VolleyRangedAttack</Name>
			<Damage>25.000000</Damage>
			<DamageType>Ranged</DamageType>
			<MaxRange>16.000000</MaxRange>
			<ROF>1.500000</ROF>
			<DamageBonus type ='AbstractHeavyInfantry'>2.000000</DamageBonus>
			<DamageBonus type ='xpEagleKnight'>2.000000</DamageBonus>
			<DamageBonus type ='AbstractLightCavalry'>2.000000</DamageBonus>
			<DamageBonus type ='xpCoyoteMan'>0.750000</DamageBonus>
			<DamageBonus type ='AbstractCavalry'>0.750000</DamageBonus>
		</ProtoAction>
	</Unit>


我把铁军的tactics修改成IronTroop.tactics了,因为我不想影响到其他单位,所以把tactics改成了IronTroop.tactics。(实际上添加建造能力改不改都没有影响的,原因是有建造能力,没有可建造的建筑。)。




3.把铁军的tactics文件提取出来,将名称修改成IronTroop.tactics。
按照格式(只要<tactic>在上面就可以)添加下列语句,(如果原本就有的话,把<active>0</active>改成<active>1</active>(前面7-4已经说过了,<active>0</active>为需要用科技技激活),然后添加<rate type="Building">1.0</rate>)
	<action>
		<name stringid="69147">Build</name>
		<type>Build</type>
		<anim>Build</anim>
		<active>1</active>
		<maxrange>0.2</maxrange>
		<rate type="Building">1.0</rate>
	</action>



  IronTroop.tactics - 记事本 ____ X
文件(F)  编辑(E)  格式(O)  查看(V)  帮助(H)
<!-- converted from XMB to XML -->

<tactics>
	<action>
		<name stringid="38127">VolleyRangedAttack</name>
		<type>Attack</type>
		<attackaction>1</attackaction>
		<rangedlogic>1</rangedlogic>
		<anim>Volley_standing_attack</anim>
		<reloadanim>Volley_standing_reload</reloadanim>
		<idleanim>Volley_standing_idle</idleanim>
		<accuracy>1.0</accuracy>
		<accuracyreductionfactor>0.5</accuracyreductionfactor>
		<aimbonus>0</aimbonus>
		<maxspread>5</maxspread>
		<spreadfactor>0.25</spreadfactor>
		<trackrating>12</trackrating>
		<unintentionaldamagemultiplier>0.7</unintentionaldamagemultiplier>
		<projectile>Arrow</projectile>
		<minrange>2</minrange>
		<rate type="Unit">1.0 </rate>
	</action>
	<action>
		<name stringid="38130">VolleyHandAttack</name>
		<type>Attack</type>
		<maxrange>1.75</maxrange>
		<rate type="Unit">1.0 </rate>
		<attackaction>1</attackaction>
		<handlogic>1</handlogic>
		<speedboost>1</speedboost>
		<impacteffect>effects\impacts\melee</impacteffect>
		<anim>charge_attack</anim>
		<idleanim>charge_idle</idleanim>
	</action>
	<action>
		<name stringid="38118">BuildingAttack</name>
		<type>Attack</type>
		<maxrange>6</maxrange>
		<rate type="LogicalTypeShipsAndBuildings">1.0 </rate>
		<attackaction>1</attackaction>
		<rangedlogic>1</rangedlogic>
		<speedboost>1</speedboost>
		<impacteffect>effects\impacts\torch</impacteffect>
		<projectile>ArrowFlaming</projectile>
		<anim>Volley_standing_attack</anim>
		<reloadanim>Volley_standing_reload</reloadanim>
	</action>
	<action>
		<name stringid="38136">DefendRangedAttack</name>
		<type>Attack</type>
		<attackaction>1</attackaction>
		<rangedlogic>1</rangedlogic>
		<impacteffect>effects\impacts\arrow</impacteffect>
		<anim>Volley_standing_attack</anim>
		<reloadanim>Volley_standing_reload</reloadanim>
		<accuracy>1.0</accuracy>
		<accuracyreductionfactor>0.5</accuracyreductionfactor>
		<aimbonus>0</aimbonus>
		<maxspread>5</maxspread>
		<spreadfactor>0.25</spreadfactor>
		<trackrating>12</trackrating>
		<unintentionaldamagemultiplier>0.7</unintentionaldamagemultiplier>
		<projectile>Arrow</projectile>
		<minrange>2</minrange>
		<rate type="Unit">1.0 </rate>
	</action>
	<action>
		<name stringid="38137">DefendHandAttack</name>
		<type>Attack</type>
		<maxrange>1.75</maxrange>
		<rate type="Unit">1.0 </rate>
		<attackaction>1</attackaction>
		<handlogic>1</handlogic>
		<speedboost>1</speedboost>
		<anim>charge_attack</anim>
		<idleanim>charge_idle</idleanim>
		<impacteffect>effects\impacts\melee</impacteffect>
	</action>
	<action>
		<name stringid="38135">MeleeHandAttack</name>
		<type>Attack</type>
		<maxrange>1.75</maxrange>
		<rate type="Unit">1.0 </rate>
		<attackaction>1</attackaction>
		<handlogic>1</handlogic>
		<speedboost>1</speedboost>
		<impacteffect>effects\impacts\melee</impacteffect>
		<anim>Charge_attack</anim>
		<idleanim>Charge_idle</idleanim>
		<impacteffect>effects\impacts\melee</impacteffect>
		<damage>6.5</damage>
		<rof>1.0</rof>
	</action>
	<action>
		<name stringid="38129">StaggerRangedAttack</name>
		<type>Attack</type>
		<attackaction>1</attackaction>
		<rangedlogic>1</rangedlogic>
		<anim>Volley_standing_attack</anim>
		<reloadanim>Volley_standing_reload</reloadanim>
		<idleanim>Volley_standing_idle</idleanim>
		<accuracy>1.0</accuracy>
		<accuracyreductionfactor>0.5</accuracyreductionfactor>
		<aimbonus>0</aimbonus>
		<maxspread>5</maxspread>
		<spreadfactor>0.25</spreadfactor>
		<trackrating>12</trackrating>
		<unintentionaldamagemultiplier>0.7</unintentionaldamagemultiplier>
		<projectile>Arrow</projectile>
		<minrange>2</minrange>
		<rate type="Unit">1.0 </rate>
	</action>
	<action>
		<name stringid="38132">StaggerHandAttack</name>
		<type>Attack</type>
		<maxrange>1.75</maxrange>
		<rate type="Unit">1.0 </rate>
		<attackaction>1</attackaction>
		<handlogic>1</handlogic>
		<speedboost>1</speedboost>
		<anim>charge_attack</anim>
		<idleanim>charge_idle</idleanim>
		<impacteffect>effects\impacts\melee</impacteffect>
		<damage>6.5</damage>
		<rof>1.0</rof>
	</action>
	<action>
		<name stringid="69147">Build</name>
		<type>Build</type>
		<anim>Build</anim>
		<active>1</active>
		<maxrange>0.2</maxrange>
		<rate type="Building">1.0</rate>
	</action>
	<tactic>
		Volley
		<action priority="100">VolleyRangedAttack</action>
		<action priority="75">BuildingAttack</action>
		<action priority="25">VolleyHandAttack</action>
		<action>Build</action>
		<attacktype>LogicalTypeRangedUnitsAttack</attacktype>
		<autoattacktype>LogicalTypeRangedUnitsAutoAttack</autoattacktype>
		<attackresponsetype>LogicalTypeRangedUnitsAttack</attackresponsetype>
		<runaway>1</runaway>
		<autoretarget>1</autoretarget>
		<idleanim>Volley_standing_idle</idleanim>
		<boredanim>Volley_standing_bored</boredanim>
		<deathanim>Death_by_melee</deathanim>
		<walkanim>Volley_walk</walkanim>
		<joganim>Volley_jog</joganim>
		<runanim>Volley_run</runanim>
	</tactic>
	<tactic>
		Defend
		<action priority="100">DefendRangedAttack</action>
		<action priority="75">BuildingAttack</action>
		<action priority="25">DefendHandAttack</action>
		<action>Build</action>
		<attacktype>LogicalTypeRangedUnitsAttack</attacktype>
		<autoattacktype>LogicalTypeRangedUnitsAutoAttack</autoattacktype>
		<attackresponsetype>LogicalTypeRangedUnitsAttack</attackresponsetype>
		<runaway>0</runaway>
		<autoretarget>1</autoretarget>
		<idleanim>Defend_idle</idleanim>
		<boredanim>Defend_bored</boredanim>
		<deathanim>Death_by_melee</deathanim>
		<walkanim>Cover_walk</walkanim>
		<joganim>Cover_jog</joganim>
		<runanim>Cover_run</runanim>
	</tactic>
	<tactic>
		Stagger
		<action priority="100">StaggerRangedAttack</action>
		<action priority="75">BuildingAttack</action>
		<action priority="25">StaggerHandAttack</action>
		<action>Build</action>
		<attacktype>LogicalTypeRangedUnitsAttack</attacktype>
		<autoattacktype>LogicalTypeRangedUnitsAutoAttack</autoattacktype>
		<attackresponsetype>LogicalTypeRangedUnitsAttack</attackresponsetype>
		<runaway>0</runaway>
		<autoretarget>1</autoretarget>
		<idleanim>Cover_ranged_idle</idleanim>
		<boredanim>Cover_bored</boredanim>
		<deathanim>Death_by_melee</deathanim>
		<walkanim>Cover_walk</walkanim>
		<joganim>Cover_jog</joganim>
		<runanim>Cover_run</runanim>
	</tactic>
	<tactic>
		Melee
		<action priority="100">BuildingAttack</action>
		<action priority="75">MeleeHandAttack</action>
		<action>Build</action>
		<attacktype>LogicalTypeRangedUnitsAttack</attacktype>
		<autoattacktype>LogicalTypeRangedUnitsAutoAttack</autoattacktype>
		<attackresponsetype>LogicalTypeRangedUnitsAttack</attackresponsetype>
		<runaway>0</runaway>
		<autoretarget>1</autoretarget>
		<idleanim>Charge_idle</idleanim>
		<boredanim>Charge_bored</boredanim>
		<deathanim>Death_by_melee</deathanim>
		<walkanim>Charge_walk</walkanim>
		<joganim>Charge_jog</joganim>
		<runanim>Charge_run</runanim>
	</tactic>
</tactics>

如果给原本没有建造动作的单位添加的话,要记得在所有tactic那里添加 <action>Build</action>开启建造建筑的设定。(当然你也可以设定某个战术不添加,那样的话切换到那战术就不能建造建筑了。)




4.接下来添加建造动画,把铁军的单位xml提取出来,按照格式添加下列语句:
这个是顶部的attach附件:
	<attachment>
		hammer
		<component>
			hammer
			<assetreference type="GrannyModel">
				<file>units\attachments\hammer_villager</file>
			</assetreference>
		</component>
		<anim>
			Idle
			<component>hammer</component>
		</anim>
	</attachment>
	<attachment>
		saw
		<component>
			saw_villager
			<assetreference type="GrannyModel">
				<file>units\attachments\saw_villager</file>
			</assetreference>
		</component>
		<anim>
			Idle
			<component>saw_villager</component>
		</anim>
	</attachment>
	<attachment>
		measure tape
		<component>
			measure tape
			<assetreference type="GrannyModel">
				<file>units\attachments\measuring_tape</file>
			</assetreference>
		</component>
		<anim>
			Idle
			<component>measure tape</component>
		</anim>
	</attachment>


这个是底部的anim动作(下面的Build就是对应tactics的<anim>Build</anim>,自己往上面搜索一下吧。):
	<anim>
		Build
		<assetreference type="GrannyAnim">
			<file>animation_library\villager\villager_male_build1</file>
			<weight>90</weight>
			<tag type="SpecificSoundSet" checkvisible="1" set="Build">0.36</tag>
			<tag type="SpecificSoundSet" checkvisible="1" set="Build">0.66</tag>
			<tag type="SpecificSoundSet" checkvisible="1" set="Build">1.00</tag>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\2_leg_task\Build_b</file>
			<weight>10</weight>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\2_leg_task\Build_c</file>
			<weight>10</weight>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\2_leg_task\Build_d</file>
			<weight>10</weight>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\2_leg_task\Build_e</file>
			<weight>10</weight>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\2_leg_task\Build_f</file>
			<weight>10</weight>
		</assetreference>
		<component>ModelComp</component>
		<attach a="hammer" frombone="MASTER" tobone="Bip01 Prop1" syncanims="0"/>
		<attach a="measure tape" frombone="MASTER" tobone="Bip01 Prop2" syncanims="0"/>
	</anim>
	<anim>
		BuildLifting
		<assetreference type="GrannyAnim">
			<file>animation_library\2_leg_task\BuildLifting</file>
			<weight>90</weight>
			<tag type="Attack">0.66</tag>
			<tag type="SpecificSoundSet" checkvisible="1" set="Build">0.39</tag>
			<tag type="SpecificSoundSet" checkvisible="1" set="Build">0.69</tag>
			<tag type="SpecificSoundSet" checkvisible="1" set="Build">1.00</tag>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\2_leg_task\human_build_standing_idlea</file>
			<weight>10</weight>
			<tag type="Attack">0.66</tag>
		</assetreference>
		<component>ModelComp</component>
		<attach a="hammer" frombone="MASTER" tobone="Bip01 Prop1" syncanims="0"/>
	</anim>
	<anim>
		BuildSaw
		<assetreference type="GrannyAnim">
			<file>animation_library\2_leg_task\human_saw_standing</file>
			<weight>90</weight>
			<tag type="SpecificSoundSet" checkvisible="1" set="BuildSaw">0.07</tag>
			<tag type="SpecificSoundSet" checkvisible="1" set="BuildSaw">0.34</tag>
			<tag type="SpecificSoundSet" checkvisible="1" set="BuildSaw">0.73</tag>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\2_leg_task\human_saw_standing_idlea</file>
			<weight>10</weight>
		</assetreference>
		<component>ModelComp</component>
		<attach a="saw" frombone="MASTER" tobone="Bip01 Prop1" syncanims="0"/>
	</anim>
	<anim>
		BuildStaking
		<assetreference type="GrannyAnim">
			<file>animation_library\2_leg_task\human_saw_a</file>
			<weight>90</weight>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\2_leg_task\human_saw_idlea</file>
			<weight>10</weight>
		</assetreference>
		<component>ModelComp</component>
		<attach a="saw" frombone="MASTER" tobone="Bip01 Prop1" syncanims="0"/>
	</anim>

  iron_troop.xml.xml - 记事本 ____ X
文件(F)  编辑(E)  格式(O)  查看(V)  帮助(H)
<!-- converted from XMB to XML -->

<animfile>
	<definebone>Bone01</definebone>
	<definebone>Bip01 Prop2</definebone>
	<definebone>bone_quiver</definebone>
	<definebone>bone_bow</definebone>
	<definebone>Bip01 Prop1</definebone>
	<attachment>
		hammer
		<component>
			hammer
			<assetreference type="GrannyModel">
				<file>units\attachments\hammer_villager</file>
			</assetreference>
		</component>
		<anim>
			Idle
			<component>hammer</component>
		</anim>
	</attachment>
	<attachment>
		saw
		<component>
			saw_villager
			<assetreference type="GrannyModel">
				<file>units\attachments\saw_villager</file>
			</assetreference>
		</component>
		<anim>
			Idle
			<component>saw_villager</component>
		</anim>
	</attachment>
	<attachment>
		measure tape
		<component>
			measure tape
			<assetreference type="GrannyModel">
				<file>units\attachments\measuring_tape</file>
			</assetreference>
		</component>
		<anim>
			Idle
			<component>measure tape</component>
		</anim>
	</attachment>
	<attachment>
		arrow_attachment
		<component>
			arrow
			<assetreference type="GrannyModel">
				<file>units\attachments\arrow_attachment</file>
			</assetreference>
		</component>
		<anim>
			Idle
			<component>arrow</component>
		</anim>
	</attachment>
	<attachment>
		flaming_arrow
		<component>
			emitter
			<assetreference type="ParticleSystem">
				<file>effects\fire\arrowFire_Longbow.particle</file>
			</assetreference>
		</component>
		<anim>
			Idle
			<component>emitter</component>
		</anim>
	</attachment>
	<attachment>
		staff
		<component>
			staff
			<assetreference type="GrannyModel">
				<file>units\asians\mercenaries\iron_troop\Iron_Troop_Staff</file>
			</assetreference>
		</component>
		<anim>
			Idle
			<component>staff</component>
		</anim>
	</attachment>
	<attachment>
		bow
		<component>
			bow
			<assetreference type="GrannyModel">
				<file>units\asians\mercenaries\iron_troop\Iron_Troop_Bow</file>
			</assetreference>
		</component>
		<anim>
			Idle
			<component>bow</component>
		</anim>
	</attachment>
	<component>
		ModelComp
		<logic type="Tech">
			<none>
				<logic type="LowPoly">
					<normal>
						<assetreference type="GrannyModel">
							<file>units\asians\mercenaries\iron_troop\Iron_Troop</file>
						</assetreference>
					</normal>
					<lowpoly>
						<assetreference type="GrannyModel">
							<file>units\asians\mercenaries\iron_troop\LPIronTroop</file>
						</assetreference>
					</lowpoly>
				</logic>
			</none>
		</logic>
		<decal>
			<effecttype>default</effecttype>
			<texture isfakeshadow="1">shadows_selections\shadow_hero_64x64</texture>
			<selectedtexture>shadows_selections\selection_hero_64x64</selectedtexture>
			<width>1.0</width>
			<height>1.0</height>
		</decal>
	</component>
	<anim>
		Death_by_melee
		<assetreference type="GrannyAnim">
			<file>animation_library\range\death_standing_rifleman_A</file>
			<tag type="SpecificSoundSet" checkvisible="1" set="RagdollImpact">0.51</tag>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\range\death_standing_rifleman_B</file>
			<tag type="SpecificSoundSet" checkvisible="1" set="RagdollImpact">0.17</tag>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\range\death_standing_rifleman_C</file>
			<tag type="SpecificSoundSet" checkvisible="1" set="RagdollImpact">0.73</tag>
		</assetreference>
		<component>ModelComp</component>
		<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
	</anim>
	<anim>
		Death_by_range
		<assetreference type="GrannyAnim">
			<file>animation_library\range\death_standing_rifleman_A</file>
			<tag type="SpecificSoundSet" checkvisible="1" set="RagdollImpact">0.51</tag>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\range\death_standing_rifleman_B</file>
			<tag type="SpecificSoundSet" checkvisible="1" set="RagdollImpact">0.18</tag>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\range\death_standing_rifleman_C</file>
			<tag type="SpecificSoundSet" checkvisible="1" set="RagdollImpact">0.73</tag>
		</assetreference>
		<component>ModelComp</component>
		<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
	</anim>
	<anim>
		Death_by_havoc
		<assetreference type="GrannyAnim">
			<file>animation_library\range\havoc_death</file>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\range\havoc_deathB</file>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\range\havoc_deathC</file>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\range\havoc_deathD</file>
		</assetreference>
		<component>ModelComp</component>
		<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
	</anim>
	<anim>
		Death_havoc_flail
		<assetreference type="GrannyAnim">
			<file>animation_library\range\havoc_flail</file>
		</assetreference>
		<component>ModelComp</component>
		<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
	</anim>
	<anim>
		Cheer
		<assetreference type="GrannyAnim">
			<file>animation_library\shared\cheer_A</file>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\shared\cheer_B</file>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\shared\cheer_C</file>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\shared\cheer_D</file>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\shared\cheer_E</file>
		</assetreference>
		<component>ModelComp</component>
		<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
		<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
	</anim>
	<anim>
		Recoil
		<assetreference type="GrannyAnim">
			<file>animation_library\shared\recoil_A</file>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\shared\recoil_C</file>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\shared\recoil_E</file>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\shared\recoil_G</file>
		</assetreference>
		<component>ModelComp</component>
		<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
	</anim>
	<anim>
		HC_openDoor
		<assetreference type="GrannyAnim">
			<file>animation_library\shared\doorOpen</file>
		</assetreference>
		<component>ModelComp</component>
		<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
	</anim>
	<anim>
		HC_closeDoor
		<assetreference type="GrannyAnim">
			<file>animation_library\shared\doorClose</file>
		</assetreference>
		<component>ModelComp</component>
		<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
	</anim>
	<anim>
		Raze_Idle
		<assetreference type="GrannyAnim">
			<file>animation_library\range\volley\longbow_volley_standing_idle</file>
		</assetreference>
		<component>ModelComp</component>
		<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
	</anim>
	<anim>
		Raze_Attack
		<assetreference type="GrannyAnim">
			<file>animation_library\range\volley\longbow_volley_standing_fire</file>
			<tag type="Attack">0.98</tag>
			<tag type="SpecificSoundSet" checkvisible="1" set="Arrows">0.98</tag>
		</assetreference>
		<component>ModelComp</component>
		<attach a="flaming_arrow" frombone="bone_quiver" tobone="R HAND" syncanims="0"/>
		<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
		<attach a="arrow_attachment" frombone="bone_quiver" tobone="Bip01 Prop2" syncanims="0"/>
	</anim>
	<anim>
		Cover_ranged_idle
		<assetreference type="GrannyAnim">
			<file>animation_library\range\cover\longbow_cover_idle</file>
		</assetreference>
		<component>ModelComp</component>
		<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
	</anim>
	<anim>
		Cover_bored
		<assetreference type="GrannyAnim">
			<file>animation_library\range\volley\longbow_volley_standing_boredB</file>
		</assetreference>
		<component>ModelComp</component>
		<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
	</anim>
	<anim>
		Cover_Walk
		<assetreference type="GrannyAnim">
			<file>animation_library\range\cover\longbow_cover_walk</file>
			<tag type="FootstepLeft" footprinttype="HumanLeft">0.16</tag>
			<tag type="FootstepRight" footprinttype="HumanRight">0.56</tag>
		</assetreference>
		<component>ModelComp</component>
		<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
		<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
	</anim>
	<anim>
		Cover_Jog
		<assetreference type="GrannyAnim">
			<file>animation_library\shared\jog_generic_upper</file>
			<file>animation_library\shared\jog_generic_lower</file>
			<tag type="FootstepLeft" footprinttype="HumanLeft">0.60</tag>
			<tag type="FootstepRight" footprinttype="HumanRight">0.10</tag>
		</assetreference>
		<component>ModelComp</component>
		<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
		<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
	</anim>
	<anim>
		Cover_Run
		<assetreference type="GrannyAnim">
			<file>animation_library\shared\run_generic_upper</file>
			<file>animation_library\shared\run_generic_lower</file>
			<tag type="FootstepLeft" footprinttype="HumanLeft">0.08</tag>
			<tag type="FootstepRight" footprinttype="HumanRight">0.60</tag>
		</assetreference>
		<component>ModelComp</component>
		<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
		<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
	</anim>
	<anim>
		Volley_standing_idle
		<assetreference type="GrannyAnim">
			<file>animation_library\range\volley\longbow_volley_standing_idle</file>
		</assetreference>
		<component>ModelComp</component>
		<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
	</anim>
	<anim>
		Volley_standing_attack
		<assetreference type="GrannyAnim">
			<file>units\asians\japanese\yumi\yumi_attackRanged00</file>
			<tag type="Attack">0.14</tag>
			<tag type="SpecificSoundSet" checkvisible="1" set="Arrows">0.14</tag>
		</assetreference>
		<component>ModelComp</component>
		<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
		<attach a="arrow_attachment" frombone="bone_quiver" tobone="Bip01 Prop2" syncanims="0"/>
	</anim>
	<anim>
		Volley_standing_bored
		<assetreference type="GrannyAnim">
			<file>animation_library\range\volley\longbow_volley_standing_boredA</file>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\range\volley\longbow_volley_standing_boredB</file>
		</assetreference>
		<component>ModelComp</component>
		<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
	</anim>
	<anim>
		Volley_Walk
		<assetreference type="GrannyAnim">
			<file>animation_library\shared\walk_generic</file>
			<tag type="FootstepLeft" footprinttype="HumanLeft">0.14</tag>
			<tag type="FootstepRight" footprinttype="HumanRight">0.61</tag>
		</assetreference>
		<component>ModelComp</component>
		<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
	</anim>
	<anim>
		Volley_Jog
		<assetreference type="GrannyAnim">
			<file>animation_library\shared\jog_generic_upper</file>
			<file>animation_library\shared\jog_generic_lower</file>
			<tag type="FootstepLeft" footprinttype="HumanLeft">0.60</tag>
			<tag type="FootstepRight" footprinttype="HumanRight">0.10</tag>
		</assetreference>
		<component>ModelComp</component>
		<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
	</anim>
	<anim>
		Volley_Run
		<assetreference type="GrannyAnim">
			<file>animation_library\shared\run_generic_upper</file>
			<file>animation_library\shared\run_generic_lower</file>
			<tag type="FootstepLeft" footprinttype="HumanLeft">0.08</tag>
			<tag type="FootstepRight" footprinttype="HumanRight">0.60</tag>
		</assetreference>
		<component>ModelComp</component>
		<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
	</anim>
	<anim>
		Defend_idle
		<assetreference type="GrannyAnim">
			<file>animation_library\range\defend\longbow_defend_combat_idle</file>
		</assetreference>
		<component>ModelComp</component>
		<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
	</anim>
	<anim>
		Defend_bored
		<assetreference type="GrannyAnim">
			<file>animation_library\range\defend\longbow_defend_combat_idle</file>
		</assetreference>
		<component>ModelComp</component>
		<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
	</anim>
	<anim>
		Charge_idle
		<assetreference type="GrannyAnim">
			<file>animation_library\range\charge\longbow_charge_idle</file>
		</assetreference>
		<component>ModelComp</component>
		<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
	</anim>
	<anim>
		Charge_bored
		<assetreference type="GrannyAnim">
			<file>animation_library\range\volley\longbow_volley_standing_boredB</file>
		</assetreference>
		<component>ModelComp</component>
		<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
	</anim>
	<anim>
		Charge_attack
		<assetreference type="GrannyAnim">
			<file>animation_library\range\defend\longbow_defend_melee_A</file>
			<tag type="Attack">0.52</tag>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\range\defend\longbow_defend_melee_B</file>
			<tag type="Attack">0.27</tag>
			<tag type="SpecificSoundSet" checkvisible="1" set="Swoosh">0.21</tag>
			<tag type="SpecificSoundSet" checkvisible="1" set="Swoosh">0.56</tag>
		</assetreference>
		<component>ModelComp</component>
		<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
	</anim>
	<anim>
		Charge_walk
		<assetreference type="GrannyAnim">
			<file>animation_library\range\charge\longbow_charge_walk</file>
			<tag type="FootstepLeft" footprinttype="HumanLeft">0.60</tag>
			<tag type="FootstepRight" footprinttype="HumanRight">0.08</tag>
		</assetreference>
		<component>ModelComp</component>
		<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
	</anim>
	<anim>
		Charge_jog
		<assetreference type="GrannyAnim">
			<file>animation_library\range\charge\longbow_charge_jog</file>
			<tag type="FootstepLeft" footprinttype="HumanLeft">0.69</tag>
			<tag type="FootstepRight" footprinttype="HumanRight">0.15</tag>
		</assetreference>
		<component>ModelComp</component>
		<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
	</anim>
	<anim>
		Charge_run
		<assetreference type="GrannyAnim">
			<file>animation_library\range\charge\longbow_charge_run</file>
			<tag type="FootstepLeft" footprinttype="HumanLeft">0.68</tag>
			<tag type="FootstepRight" footprinttype="HumanRight">0.13</tag>
		</assetreference>
		<component>ModelComp</component>
		<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
	</anim>
	<anim>
		kidnap_hostageA_idle
		<assetreference type="GrannyAnim">
			<file>nuggets\outlaw_kidnap\kidnap_hostageA_idleD</file>
			<weight>40</weight>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>nuggets\outlaw_kidnap\kidnap_hostageA_idleB</file>
			<weight>20</weight>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>nuggets\outlaw_kidnap\kidnap_hostageA_idleC</file>
			<weight>20</weight>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>nuggets\outlaw_kidnap\kidnap_hostageA_idleA</file>
			<weight>20</weight>
		</assetreference>
		<component>ModelComp</component>
	</anim>
	<anim>
		kidnap_hostageA_exit
		<assetreference type="GrannyAnim">
			<file>nuggets\outlaw_kidnap\kidnap_hostageA_exit</file>
		</assetreference>
		<component>ModelComp</component>
	</anim>
	<anim>
		Build
		<assetreference type="GrannyAnim">
			<file>animation_library\villager\villager_male_build1</file>
			<weight>90</weight>
			<tag type="SpecificSoundSet" checkvisible="1" set="Build">0.36</tag>
			<tag type="SpecificSoundSet" checkvisible="1" set="Build">0.66</tag>
			<tag type="SpecificSoundSet" checkvisible="1" set="Build">1.00</tag>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\2_leg_task\Build_b</file>
			<weight>10</weight>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\2_leg_task\Build_c</file>
			<weight>10</weight>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\2_leg_task\Build_d</file>
			<weight>10</weight>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\2_leg_task\Build_e</file>
			<weight>10</weight>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\2_leg_task\Build_f</file>
			<weight>10</weight>
		</assetreference>
		<component>ModelComp</component>
		<attach a="hammer" frombone="MASTER" tobone="Bip01 Prop1" syncanims="0"/>
		<attach a="measure tape" frombone="MASTER" tobone="Bip01 Prop2" syncanims="0"/>
	</anim>
	<anim>
		BuildLifting
		<assetreference type="GrannyAnim">
			<file>animation_library\2_leg_task\BuildLifting</file>
			<weight>90</weight>
			<tag type="Attack">0.66</tag>
			<tag type="SpecificSoundSet" checkvisible="1" set="Build">0.39</tag>
			<tag type="SpecificSoundSet" checkvisible="1" set="Build">0.69</tag>
			<tag type="SpecificSoundSet" checkvisible="1" set="Build">1.00</tag>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\2_leg_task\human_build_standing_idlea</file>
			<weight>10</weight>
			<tag type="Attack">0.66</tag>
		</assetreference>
		<component>ModelComp</component>
		<attach a="hammer" frombone="MASTER" tobone="Bip01 Prop1" syncanims="0"/>
	</anim>
	<anim>
		BuildSaw
		<assetreference type="GrannyAnim">
			<file>animation_library\2_leg_task\human_saw_standing</file>
			<weight>90</weight>
			<tag type="SpecificSoundSet" checkvisible="1" set="BuildSaw">0.07</tag>
			<tag type="SpecificSoundSet" checkvisible="1" set="BuildSaw">0.34</tag>
			<tag type="SpecificSoundSet" checkvisible="1" set="BuildSaw">0.73</tag>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\2_leg_task\human_saw_standing_idlea</file>
			<weight>10</weight>
		</assetreference>
		<component>ModelComp</component>
		<attach a="saw" frombone="MASTER" tobone="Bip01 Prop1" syncanims="0"/>
	</anim>
	<anim>
		BuildStaking
		<assetreference type="GrannyAnim">
			<file>animation_library\2_leg_task\human_saw_a</file>
			<weight>90</weight>
		</assetreference>
		<assetreference type="GrannyAnim">
			<file>animation_library\2_leg_task\human_saw_idlea</file>
			<weight>10</weight>
		</assetreference>
		<component>ModelComp</component>
		<attach a="saw" frombone="MASTER" tobone="Bip01 Prop1" syncanims="0"/>
	</anim>
</animfile>











PS:


说一种特殊情况,有的单位是枪或其他武器附加在单位模型下面,这样会导致所有动作都会带着一把枪,包括你加上去的建造动画,原因是因为每个动作都会调用到单位模型,然后2通过模型调用枪或其他武器了,解决办法是删除所有模型下面的武器,然后将删除的语句加到你认为需要添加到的动作上。