7-0 Tactics





tactic传送门			表格传送门			旧版本txt语句传送门


什么是tactics文件?
tactics是单位战术文件,没有这个文件大部分单位无法攻击、无法站立、没有任何动作、没有任何战术,所以Tactics是非常重要的文件。

Tactics在protoy中的<Tactics>文件名.tactics</Tactics>定义,不同单位可以采用相同的tactics文件,一个单位只能拥有一个Tactics文件。(废话,不废话怎样教导那些智商需要充值的人,开玩笑的。)

tactics文件要用AOE3ED在DataPY.bar、Data3.bar、Data2.bar、Data.bar提取,要注意优先提取DataPY.bar、Data3.bar的文件,当这两个bar都找不到你要的文件,再去Data2.bar寻找,最后是Data.bar。

因为之前高考的原因,所以写这个教程的时候,我已经很久没有修改过帝国了,而且这个教程内容只是草草地在游戏测试一两遍,所以部分语句仅供参考,不保证100%正确,或者还有其他作用。如果有能力的人根本就不需要什么教程,这类人通常是照抄语句,然后就懂了怎样修改,而不是依赖什么教程,我希望你是这一类人。 (就算进入了大学也忙得要死,是哪个idiot说大学轻松的?)

我不能保证我的教程是100%正确,某些可以通过英文翻译的解释但在游戏不知道是什么效果在这个教程均为作用不明确。



说一些语句的规定与效果:
<action priority="100">Tactics调用名</action>中的priority="100"是优先级,数值越大优先级越高,会被优先使用,如果你把近战优先级改成高于远程,那么那个兵只会近战。
<throw>1</throw>只能给远距离攻击添加打飞效果,近战攻击添加的话,打死单位后那个单位不会消失。

		</transition>
<tactic>XXXXX/tactic>
<exit>1</exit>
<automatic>1</automatic>
<commandautomatic>1</commandautomatic>
</transition>
<exit>1</exit>作用在按钮 ,如果为0,切换按钮后你就不能再次切换其他按钮了,可以用来让玩家选择一个按钮效果
<automatic>1</automatic>作用于Battle.xml战术,当需要的时候会自动切换战术,例如间谍隐身攻击敌人,为0就不能切换。
<commandautomatic>1</commandautomatic>作用在按钮;与<automatic>1</automatic>一样,需要使用时自动切换按钮,不过帝国里面没有这种类型单位,你只能通过自己修改才能看到这个效果。(例如你设定带按钮单位其中按钮可以攻击,另一个则不能,当那个单位正在使用不能攻击的按钮而你又下达了攻击命令,进入射程后会自动切换可以攻击的按钮。)




温馨提示:屏幕不够大的,可以将屏幕移动到右边,可以一次性复制语句(支持tab制表符)。
不知道怎样移动到右边?下面有个滑条,用鼠标按住拖动到右边就可以了。


<action>语句:

自动生产单位:

(注:类似中国难民卡片不可以设定为旗军,虽然中国难民卡的确是旗军,但是我们新增旗军使用Maintain没有任何效果。)

	<action>
	<action>
<name stringid="StringID">XXXX</name>
<type>Maintain</type>
<rate type="XXXXXX">X</rate>
<active>1</active>
<singleuse>1</singleuse>
<persistent>1</persistent>
</action>
		<name stringid="StringID">XXXX</name>
定义tactics的Action名及其名称
		<type>Maintain</type>
类型。自动生产单位
		<rate type="XXXXXX">X</rate>
XXXXXX单位调用名,X为自动生产单位数量。

3.2版本补充:10个单位会变成10倍训练时间,例如某单位训练时间为30秒,用Maintain一次性训练10个需要用300秒。

		<active>1</active>
1为启用,0为未启用(需要借助科技激活),没有则默认启用
		<singleuse>1</singleuse>
该战术只能生产一次单位。
		<persistent>1</persistent>
1为无限次生产单位,0为不能自动生产单位,0一般与<singleuse>1</singleuse>配合使用,来生产一次单位,例如中国难民卡片。(如果建筑在建造中,并且带有语句<singleuse>1</singleuse> , 使用该战术生产单位时, 若为0,建造好建筑后不会生产单位,若为1,建造好建筑后会追加生产单位)
	</action>








强制生产单位(无视人口限制,无视训练时间,建议使用<singleuse>1</singleuse>语句,使其只能生产一次。):

	<action>

<action>
<name stringid="StringID">XXXX</name>
<type>Spawn</type>
<rate type="XXXXXX">X</rate>
<active>1</active>
<singleuse>1</singleuse>
<persistent>1</persistent>
</action>
		<name stringid="StringID">XXXX</name>
定义tactics的Action名及其名称
		<type>Spawn</type>
类型。强制生产单位
		<rate type="XXXXXX">X</rate>
XXXXXX单位调用名,X为强制生产单位数量。
		<active>1</active>
1为启用,0为未启用(需要借助科技激活),没有则默认启用
		<singleuse>1</singleuse>
该战术只能生产一次单位。
		<persistent>1</persistent>
1为无限次强制生产单位,0为不能生产单位,0一般与<singleuse>1</singleuse>配合使用,来生产一次单位,例如中国难民卡片。(如果建筑在建造中,并且带有语句<singleuse>1</singleuse> , 使用该战术生产单位时, 若为0,建造好建筑后不会生产单位,若为1,建造好建筑后会追加生产单位)
	</action>








被动能力·光环

	<action>

<action>
<name stringid="StringID">XXXX</name>
<type>AutoRangedModify</type>
<active>1</active>
<maxrange>XX</maxrange>
<modifyexclusive>1</modifyexclusive>
<persistent>1</persistent>
<modifytype>XXXX</modifytype>
<modifymultiplier>X.0</modifymultiplier>
<modelattachment>effects\ypack_auras\daimyopower.xml</modelattachment>
<modelattachmentbone>bonethatdoesntexist</modelattachmentbone>
<modifyabstracttype>xxxxx</modifyabstracttype>
<targetenemy>0</targetenemy>
</action>
		<name stringid="StringID">XXXX</name>
定义tactics的Action名及其名称
		<type>AutoRangedModify</type>
类型,远距离改变单位属性
		<active>1</active>
1为启用,0为未启用(需要借助科技激活),没有则默认启用
		<maxrange>X.0</maxrange>
影响范围(一般为12或24,全图的话写个1000吧)
		<modifyexclusive>1</modifyexclusive>
1为不可叠加光环,0或删除可以叠加光环,【叠加光环计算公式:原本属性*第一个光环倍数*第二个光环倍数*第三个光环倍数……,负面效果最低值为1,正面效果最高值为无限大,超过2147483648会显示-2147483648,若为生命值,此时该单位出于无敌状态,不会受到任何伤害,只会受到攻击力为2147483648以上的伤害】
		<persistent>1</persistent>
效果持续,默认为1,改成0该光环会失效。
		<modifytype>XXXX</modifytype>
改变单位属性类型,有MaxHP(生命值)、Damage(攻击力)、Speed(移动速度)、los(视野)、Bounty(击杀敌人后获得X倍经验值)、 GatherRate(采集效率) 、AutoGatherRate(自动采集茶叶)
		<modifymultiplier>X.0</modifymultiplier>
改变单位属性X倍数
		<modelattachment>effects\ypack_auras\daimyopower.xml</modelattachment>
调用单位xml以及gr2模型,作用是受光环影响,单位在地面上会出现该模型。即为白色光圈。
		<modelattachmentbone>bonethatdoesntexist</modelattachmentbone>
定义模型???不要管了,总之光环都会带这个语句。
		<modifyabstracttype>xxxxx</modifyabstracttype>
作用对象,可以使用单位标签或单位调用名,删除则默认为所有军事单位。
		<targetenemy>0</targetenemy>
0或删除为作用于己方(盟友不会受到影响),1为作用于敌军
	</action>








自动转化(畜牧、王者山丘)

	<action>

<action>
<name stringid="69161">AutoConvert</name>
<type>AutoConvert</type>
<maxrange>12.0</maxrange>
<persistent>1</persistent>
</action>
		<name stringid="69161">AutoConvert</name>
定义tactics的Action名及其名称
		<type>AutoConvert</type>
类型
		<maxrange>12.0</maxrange>
最大转化距离
		<persistent>1</persistent>
默认为1,如果为0的话不能转换
	</action>








(间谍、忍者等)隐身:

	<action>

<action>
<name stringid="46491">Stealth</name>
<type>Stealth</type>
<maxrange>20.0</maxrange>
<active>1</active>
<persistent>1</persistent>
</action>
		<name stringid="46491">Stealth</name>
定义tactics的Action名及其名称
		<type>Stealth</type>
类型,单位隐身
		<maxrange>20.0</maxrange>
在这个范围内会被反隐匿单位发现
		<active>1</active>
1为启用,0为未启用(需要借助科技激活),没有则默认启用
		<persistent>1</persistent>
持续,0或删除的话,无法进入隐匿模式
	</action>








自动采集资源:

	<action>

<action>
<name stringid="StringID">XXXX</name>
<type>AutoGather</type>
<active>0</active>
<persistent>1</persistent>
<Rate type="Food">0.250000</Rate>
</action>
		<name stringid="StringID">XXXX</name>
定义tactics的Action名及其名称
		<type>AutoGather</type>
类型。自动采集
		<active>0</active>
1为启用,0为未启用(需要借助科技激活),没有则默认启用
		<persistent>1</persistent>
持续生产,默认为1,改成0该自动采集会失效。
		<Rate type="Food">0.250000</Rate>
采集速率(Food为食物,一般在protoy.xml都要这个语句,所以优先执行protoy.xml的速率)
	</action>








采集资源:

	<action>

<action>
<name stringid="42178">Gather</name>
<type>Gather</type>
<maxrange>0.5</maxrange>
<rate type="XXXXX">1.0</rate>
</action>
		<name stringid="42178">Gather</name>
定义tactics的Action名及其名称
		<type>Gather</type>
类型。采集资源
		<maxrange>0.5</maxrange>
采集资源时最大间隔
		<rate type="XXXXX">1.0</rate>
采集对象(单位调用名或单位标签)以及采集速率
	</action>








畜牧在建筑物加快增长食物(可以理解成畜牧在建筑物采集食物):

	<action>

<action>
<name stringid="42178">Gather</name>
<type>Gather</type>
<maxrange>0.5</maxrange>
<rate type="LivestockPen">1.0</rate>
<rate type="Farm">1.0</rate>
<rate type="ypVillage">1.0</rate>
<addresourcestoinventory>1</addresourcestoinventory>
</action>
		<name stringid="42178">Gather</name>
定义tactics的Action名及其名称
		<type>Gather</type>
类型,采集
		<maxrange>0.5</maxrange>
畜牧在建筑采集的最大间隔
		<rate type="LivestockPen">1.0</rate>
采集对象以及速率
		<rate type="Farm">1.0</rate>
采集对象以及速率
		<rate type="ypVillage">1.0</rate>
采集对象以及速率
		<addresourcestoinventory>1</addresourcestoinventory>
采集资源加入单位自身资源,没有这句则直接获得资源(畜牧类单位,没有该句,则变成类似银行单位)
	</action>








畜牧自动增长食物:

	<action>

<action>
<name stringid="43295">AutoGatherFood</name>
<type>AutoGather</type>
<rate type="Food">0.200000</rate>
<persistent>1</persistent>
<addresourcestoinventory>1</addresourcestoinventory>
</action>
		<name stringid="43295">AutoGatherFood</name>
定义tactics的Action名及其名称
		<type>AutoGather</type>
类型自动采集
		<rate type="Food">0.200000</rate>
采集速率,帝国3大部分畜牧的采集速率都在protoy设定。
		<persistent>1</persistent>
持续采集,默认为1,改成0该自动采集会失效。
		<addresourcestoinventory>1</addresourcestoinventory>  
采集资源加入单位自身资源,没有这句则直接获得资源(畜牧类单位,没有该句,则变成类似银行单位)
	</action>








村民自动采集茶叶

	<action>


<action>
<name stringid="69149">AutoGatherTrade</name>
<type>AutoGather</type>
<donotautogatherunlessgathering>1</donotautogatherunlessgathering>
<active>0</active>
<persistent>1</persistent>
</action>
		<name stringid="69149">AutoGatherTrade</name>
定义tactics的Action名及其名称
		<type>AutoGather</type>
类型,自动采集
		<donotautogatherunlessgathering>1</donotautogatherunlessgathering>
没有在工作(采集)就停止自动采集
		<active>0</active>
1为启用,0为未启用(需要借助科技激活),没有则默认启用
		<persistent>1</persistent>
持续采集,默认为1,改成0该自动采集会失效。
	</action>



事实上“畜牧在建筑物加快增长食物”、“畜牧自动增长食物”、“村民自动采集茶叶”这三个都是一样的,都是使用<type>AutoGather</type>,只不过添加其他语句使得作用不一样。











村民狩猎与砍树(没有这个的话,打猎与砍树会直接变成攻击图标,但仍可以狩猎与砍树)

	<action>

<action>
<name stringid="69151">Hunting</name>
<type>Hunting</type>
<maxrange>10</maxrange>
<rate type="Herdable">1.0</rate>
<rate type="Huntable">1.0</rate>
<rate type="Tree">1.0</rate>
<typedmaxrange type="Herdable">0</typedmaxrange>
<typedmaxrange type="Huntable">10</typedmaxrange>
<typedmaxrange type="Tree">0</typedmaxrange>
</action>
		<name stringid="69151">Hunting</name>
定义tactics的Action名及其名称
		<type>Hunting</type>
类型,狩猎
		<maxrange>10</maxrange>
最大距离???
		<rate type="Herdable">1.0</rate>
对象,单位标签或调用名
		<rate type="Huntable">1.0</rate>
		<rate type="Tree">1.0</rate>
		<typedmaxrange type="Herdable">0</typedmaxrange>
真正起作用的最大距离??
		<typedmaxrange type="Huntable">10</typedmaxrange>
		<typedmaxrange type="Tree">0</typedmaxrange>
我不会告诉你我测试不出这几个语句有什么效果
	</action>








作用不明:NoWork


<action>
<name stringid="69183">NoWork</name>
<type>NoWork</type>
<maxrange>10</maxrange>
<rate type="Herdable">1.0</rate>
<rate type="Huntable">1.0</rate>
<typedmaxrange type="Herdable">0</typedmaxrange>
<typedmaxrange type="AbstractNuggetWater">0</typedmaxrange>
<typedmaxrange type="Huntable">10</typedmaxrange>
</action>
日本村民不能打猎好像是跟这个有关,但似乎还有其他作用。
一扇不知道会传送到哪里的传送门

<action>
<name stringid="69183">NoWork</name>
<type>NoWork</type>
<maxrange>10</maxrange>
<rate type="Herdable">1.0</rate>
<rate type="Huntable">1.0</rate>
<typedmaxrange type="Herdable">0</typedmaxrange>
<typedmaxrange type="AbstractNuggetWater">0</typedmaxrange>
<typedmaxrange type="Huntable">10</typedmaxrange>
</action>








作用不明:BoatManager


<action>
<dbaction>BoatManager</dbaction>
<name stringid="69156">BoatManager</name>
<type>BoatManager</type>
<persistent>1</persistent>
</action>
根据某大佬所说,这是让船只摇晃的设定。我没有试验过,起作用的应该是<type>BoatManager</type>

<action>
<dbaction>BoatManager</dbaction>
<name stringid="69156">BoatManager</name>
<type>BoatManager</type>
<persistent>1</persistent>
</action>








强制性的自动移动

这是某个大佬发现的,据说他是做科幻MOD的。
	<action>

<action>
<name stringid="StringID">AutoMove</name>
<type>Move</type>
<persistent>1</persistent>
</action>
		<name stringid="StringID">AutoMove</name>
定义tactics的Action名及其名称
		<type>Move</type>
类型,自动移动
		<persistent>1</persistent>
1为每时每刻都会向单位发出(无动作的)移动指令。
	</action>






















涉及单位动作的内容:









近战攻击

	<action>

<action>
<name stringid="38134">HandAttack</name>
<type>Attack</type>
<attackaction>1</attackaction>
<handlogic>1</handlogic>
<anim>HandAttack</anim>
<idleanim>CombatIdle</idleanim>
<maxrange>1.75</maxrange>
<impacteffect>effects\impacts\melee_no_weapon</impacteffect>
<rate type="Unit">1.0 </rate>
<speedboost>1</speedboost>
<targetspeedboost>1</targetspeedboost>
</action>
		<name stringid="38134">HandAttack</name>
定义tactics的Action名及其名称
		<type>Attack</type>
类型,攻击
		<attackaction>1</attackaction>
没有这句,整个攻击设定无效
		<handlogic>1</handlogic>
近战攻击都带有的语句,作用不明
		<anim>HandAttack</anim>
攻击动作【单位xml定义的动作】
		<idleanim>CombatIdle</idleanim>
空闲(默认)动作【单位xml定义的动作】
		<maxrange>1.75</maxrange>
最大攻击距离
		<impacteffect>effects\impacts\melee_no_weapon</impacteffect>
命中单位特效文件路径(格式为impacteffect),可在art1—5.bar找到该文件。
		<rate type="Unit">1.0 </rate>
可攻击对象
		<speedboost>1</speedboost>
命中敌人增速25%
		<targetspeedboost>1</targetspeedboost>
敌人受到攻击后会减速35%
	</action>








齐射攻击:

	<action>

<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>
<maxheight>0</maxheight>
<accuracy>1.0</accuracy>
<maxspread>5</maxspread>
<aimbonus>0</aimbonus>
<maxspread>5</maxspread>
<spreadfactor>0.25</spreadfactor>
<trackrating>12</trackrating>
<unintentionaldamagemultiplier>0.7</unintentionaldamagemultiplier>
<projectile>InvisibleProjectile</projectile>
<impacteffect>effects\impacts\gun</impacteffect>
<minrange>2</minrange>
<rate type="Unit">1.0 </rate>
<throw>1</throw>
<damage>13.000000</damage>
<maxrange>12.000000</maxrange>
<rof>2.000000</rof>
<instantballistics>1</instantballistics>
</action>
		<name stringid="38127">VolleyRangedAttack</name>
定义tactics的Action名及其名称
		<type>Attack</type>
类型,攻击
		<attackaction>1</attackaction>
没有这句,整个攻击设定无效
		<rangedlogic>1</rangedlogic>
远距离攻击都带有的语句,作用不明
		<anim>Volley_standing_attack</anim>
攻击动作【单位xml定义的动作】
		<reloadanim>Volley_standing_reload</reloadanim>
装填动作【单位xml定义的动作】
		<idleanim>Volley_standing_idle</idleanim>
默认动作【单位xml定义的动作】
		<maxheight>0</maxheight>
远程攻击抛物线最大高度,0为直线
		<accuracy>1.0</accuracy>
命中率
		<accuracyreductionfactor>1.5</accuracyreductionfactor>
命中衰减率,数值越大距离越远越打不中
		<aimbonus>0</aimbonus>
作用不明
		<maxspread>5</maxspread>
作用不明
		<spreadfactor>0.25</spreadfactor>
作用不明
		<trackrating>12</trackrating>
发射物追踪效果,数值越大追踪能力越强
		<unintentionaldamagemultiplier>0.7</unintentionaldamagemultiplier>
作用不明
		<projectile>InvisibleProjectile</projectile>
发射物
		<impacteffect>effects\impacts\gun</impacteffect>
命中单位特效文件路径(格式为impacteffect),可在art1—5.bar找到该文件。
		<minrange>2</minrange>
最短攻击距离
		<rate type="Unit">1.0 </rate>
攻击对象
		<throw>0</throw>
1为将单位打飞(远距攻击是可以添加打飞)
		<damage>13.000000</damage>
伤害,实际上采用protoy.xml的数值(这个tactics与protoy的优先级问题)
		<maxrange>12.000000</maxrange>
最大射程,实际上采用protoy.xml的数值(这个tactics与protoy的优先级问题)
		<rof>2.000000</rof>
攻速,实际上采用protoy.xml的数值(这个tactics与protoy的优先级问题)
		<instantballistics>1</instantballistics>
百发百中。[添加后100%命中,但是一般情况下看不见发射物及其轨迹]
	</action>








炮轰攻击:

	<action>

<action>
<name stringid="38119">CannonAttack</name>
<reloadanim>Bombard_reload</reloadanim>
<type>Attack</type>
<attackaction>1</attackaction>
<rangedlogic>1</rangedlogic>
<anim>Bombard_ranged_attack</anim>
<idleanim>Bombard_ranged_idle</idleanim>
<boredanim>Bombard_bored</boredanim>
<maxheight>0</maxheight>
<accuracy>1.0</accuracy>
<aimbonus>0</aimbonus>
<maxspread>5</maxspread>
<spreadfactor>0.25</spreadfactor>
<trackrating>12</trackrating>
<unintentionaldamagemultiplier>1.0</unintentionaldamagemultiplier>
<projectile>Cannonball</projectile>
<impacteffect>effects\impacts\cannon</impacteffect>
<rate type="All">1.0 </rate>
<throw>1</throw>
<impactforcemin>500.0f</impactforcemin>
<impactforcemax>800.0f</impactforcemax>
<outerdamageareadistance>.25</outerdamageareadistance>
<outerdamageareafactor>.20</outerdamageareafactor>
<impactlaunchangle>10.0</impactlaunchangle>
<areasortmode>Directional</areasortmode>
<targetground>1</targetground>
<numberbounces>1</numberbounces>
<basedamagecap>1</basedamagecap>
<perfectaccuracy>1</perfectaccuracy>
</action>
		<name stringid="38119">CannonAttack</name>
定义tactics的Action名及其名称
		<reloadanim>Bombard_reload</reloadanim>
装填动作【单位xml定义的动作】
		<type>Attack</type>
类型,攻击
		<attackaction>1</attackaction>
没有这句,整个攻击设定无效
		<rangedlogic>1</rangedlogic>
远距离攻击都带有的语句,作用不明
		<anim>Bombard_ranged_attack</anim>
攻击动作【单位xml定义的动作】
		<idleanim>Bombard_ranged_idle</idleanim>
默认动作【单位xml定义的动作】
		<boredanim>Bombard_bored</boredanim>
无聊动作【单位xml定义的动作】
		<maxheight>0</maxheight>
远程攻击抛物线最大高度,0为直线
		<accuracy>1.0</accuracy>
命中率
		<aimbonus>0</aimbonus>
作用不明
		<maxspread>5</maxspread>
作用不明
		<spreadfactor>0.25</spreadfactor>
作用不明
		<trackrating>12</trackrating>
发射物追踪效果,数值越大追踪能力越强
		<unintentionaldamagemultiplier>1.0</unintentionaldamagemultiplier>
作用不明
		<projectile>Cannonball</projectile>
发射物(单位调用名)
		<impacteffect>effects\impacts\cannon</impacteffect>
命中单位特效文件路径(格式为impacteffect),可在art1—5.bar找到该文件。
		<rate type="All">1.0 </rate>
攻击对象
		<throw>1</throw>
将单位打飞效果(只能给远距离攻击添加打飞效果,近战攻击不可以添加)
		<impactforcemin>500.0f</impactforcemin>
最小冲击力(击杀单位后,冲击力越大,<throw>1</throw>打飞单位距离越远)
		<impactforcemax>800.0f</impactforcemax>
最大冲击力(击杀单位后,冲击力越大,<throw>1</throw>打飞单位距离越远)
		<outerdamageareadistance>.25</outerdamageareadistance>
反弹伤害距离(.25是0.25的意思)
		<outerdamageareafactor>.20</outerdamageareafactor>
反弹伤害倍数,包括第一次命中也会算上这个倍数(.20是0.20倍伤害的意思)
		<impactlaunchangle>10.0</impactlaunchangle>
<throw>1</throw>击飞单位后,单位被击飞的角度,90就是垂直上上
		<areasortmode>Directional</areasortmode>
作用不明
		<targetground>1</targetground>
1为炮弹打到地上后会反弹出去造成二次伤害,0为击中单位1次后就失效,当设定了命中率后,如果有这个语句也是百发百中
		<numberbounces>1</numberbounces>
最大反弹次数(第一下为命中,反弹出去击中地面造成伤害计第一次反弹,我试验过10次,最多的一次是反弹3下)
		<basedamagecap>1</basedamagecap>
决定的是伤害上限会不会计算伤害倍率,如火车伤害5上限20对步6倍但没有basecap,他打主目标打5*6=30但上限20于是就决定自己打20伤害就够了,而像鹰炮有basecap,它计算伤害上限时就会乘以倍率100伤200上限对步3倍就会有200*3=600的对步伤害上限
		<perfectaccuracy>1</perfectaccuracy>
完美射击???添加这语句后,就算你的命中率只有1%,除非对方移动,否则100%命中,就算没有打中对方,还是能造成伤害。
	</action>








城镇中心攻击:

	<action>

<action>
<name stringid="38133">RangedAttack</name>
<type>Attack</type>
<attackaction>1</attackaction>
<rangedlogic>1</rangedlogic>
<activeifcontainsunits>1</activeifcontainsunits>
<damagefactorcap>X</damagefactorcap>
<scalebycontainedunits>1</scalebycontainedunits>
<anim>RangedAttack</anim>
<maxheight>0</maxheight>
<accuracy>1.0</accuracy>
<aimbonus>0</aimbonus>
<maxspread>5</maxspread>
<spreadfactor>0.25</spreadfactor>
<trackrating>12</trackrating>
<unintentionaldamagemultiplier>0.7</unintentionaldamagemultiplier>
<projectile>InvisibleProjectile</projectile>
<impacteffect>effects\impacts\gun</impacteffect>
<rate type="Unit">1.0 </rate>
<instantballistics>1</instantballistics>
</action>
		<name stringid="38133">RangedAttack</name>
定义tactics的Action名及其名称
		<type>Attack</type>
类型,攻击
		<attackaction>1</attackaction>
没有这句,整个攻击设定无效
		<rangedlogic>1</rangedlogic>
远距离攻击都带有的语句,作用不明
		<activeifcontainsunits>1</activeifcontainsunits>
当有单位驻守的时候,才开启攻击,数值只能为1
		<damagefactorcap>X</damagefactorcap>
当驻守单位达到X后,停止增加伤害,与<scalebycontainedunits>1</scalebycontainedunits>联合使用
		<scalebycontainedunits>1</scalebycontainedunits>
驻守一个单位增加一次伤害(单位攻击力),数值只能为1
		<anim>RangedAttack</anim>
攻击动作【单位xml定义的动作】
		<maxheight>0</maxheight>
远程攻击抛物线最大高度,0为直线
		<accuracy>1.0</accuracy>
命中率
		<aimbonus>0</aimbonus>
作用不明
		<maxspread>5</maxspread>
作用不明
		<spreadfactor>0.25</spreadfactor>
作用不明
		<trackrating>12</trackrating>
发射物追踪效果,数值越大追踪能力越强
		<unintentionaldamagemultiplier>0.7</unintentionaldamagemultiplier>
作用不明
		<projectile>InvisibleProjectile</projectile>
发射物,proto调用名
		<impacteffect>effects\impacts\gun</impacteffect>
命中单位特效文件路径(格式为impacteffect),可在art1—5.bar找到该文件。
		<rate type="Unit">1.0 </rate>
可攻击对象,单位标签或调用名
		<instantballistics>1</instantballistics>
百发百中[添加后100%命中,但是一般情况下看不见发射物及其轨迹]
	</action>








炸药桶攻击建筑物:

	<action>

<action>
<name stringid="38118">BuildingAttack</name>
<type>Attack</type>
<maxrange>1.75</maxrange>
<rate type="LogicalTypeShipsAndBuildings">1.0 </rate>
<attackaction>1</attackaction>
<handlogic>1</handlogic>
<speedboost>1</speedboost>
<anim>Raze_attack</anim>
<idleanim>Raze_idle</idleanim>
<impacteffect>effects\impacts\melee</impacteffect>
<targetspeedboost>1</targetspeedboost>
<basedamagecap>1</basedamagecap>
<selfdestruct>1</selfdestruct>
<physicsonselfdestruct>1</physicsonselfdestruct>
</action>
		<name stringid="38118">BuildingAttack</name>
定义tactics的Action名及其名称
		<type>Attack</type>
类型,攻击
		<maxrange>1.75</maxrange>
最大攻击距离
		<rate type="LogicalTypeShipsAndBuildings">1.0 </rate>
攻击对象,单位调用名或标签
		<attackaction>1</attackaction>
没有这句,整个攻击设定无效
		<handlogic>1</handlogic>
作用不明,近战攻击都带有的语句
		<speedboost>1</speedboost>
命中后增速25%,不过在这里没有用
		<anim>Raze_attack</anim>
攻击动作【单位xml定义的动作】
		<idleanim>Raze_idle</idleanim>
默认动作【单位xml定义的动作】
		<impacteffect>effects\impacts\melee</impacteffect>
命中单位特效文件路径(格式为impacteffect),可在art1—5.bar找到该文件。
		<targetspeedboost>1</targetspeedboost>
敌人受到攻击后会减速35%,不过在这里没有用
		<basedamagecap>1</basedamagecap>
决定的是伤害上限会不会计算伤害倍率,如火车伤害5上限20对步6倍但没有basecap,他打主目标打5*6=30但上限20于是就决定自己打20伤害就够了,而像鹰炮有basecap,它计算伤害上限时就会乘以倍率100伤200上限对步3倍就会有200*3=600的对步伤害上限
		<selfdestruct>1</selfdestruct>
攻击后死亡(自爆)
		<physicsonselfdestruct>1</physicsonselfdestruct>
自爆后会炸飞,与<selfdestruct>1</selfdestruct>联合使用
	</action>








(类似卡车)践踏攻击:

	<action>

<action>
<name stringid="09986">TrampleHandAttack</name>
<type>TruckAttack</type>
<maxrange>1.75</maxrange>
<rate type="Unit">1.0 </rate>
<attackaction>1</attackaction>
<handlogic>1</handlogic>
<speedboost>1</speedboost>
<anim>Idle</anim>
<idleanim>Idle</idleanim>
<damage>6.5</damage>
<rof>1.0</rof>
<targetspeedboost>1</targetspeedboost>
<basedamagecap>1</basedamagecap>
<persistent>1</persistent>
<projectile>InvisibleProjectileNoTracer</projectile>
<throw>1</throw>
</action>
		<name stringid="09986">TrampleHandAttack</name>
定义tactics的Action名及其名称
		<type>TruckAttack</type>
类型,践踏攻击(跟骑兵的践踏不一样的)
		<maxrange>1.75</maxrange>
能造成伤害最大距离(攻击距离)
		<rate type="Unit">1.0 </rate>
攻击对象
		<attackaction>1</attackaction>
没有这句,整个攻击设定无效
		<handlogic>1</handlogic>
近战攻击都有的语句
		<speedboost>1</speedboost>
命中敌人增加25%速度,在践踏攻击中好像没用
		<anim>Idle</anim>
攻击动作【单位xml定义的动作】
		<idleanim>Idle</idleanim>
默认动作【单位xml定义的动作】
		<damage>6.5</damage>
攻击力【因为优先级的问题,所以采用的是protoy.xml的攻击力】
		<rof>1.0</rof>
攻速【因为优先级的问题,所以采用的是protoy.xml的攻速】
		<targetspeedboost>1</targetspeedboost>
命中敌人后,敌人减35%速度,在践踏攻击中好像没用
		<basedamagecap>1</basedamagecap>
决定的是伤害上限会不会计算伤害倍率,如火车伤害5上限20对步6倍但没有basecap,他打主目标打5*6=30但上限20于是就决定自己打20伤害就够了,而像鹰炮有basecap,它计算伤害上限时就会乘以倍率100伤200上限对步3倍就会有200*3=600的对步伤害上限
		<persistent>1</persistent>
没什么可说的了,基本上0就是整个攻击失效
		<projectile>InvisibleProjectileNoTracer</projectile>
发射物
		<throw>1</throw>
将人打飞【践踏打飞人不会出现单位死了还存在的情况】
	</action>
你发现了吗?卡车的践踏攻击表面上是近战,实际上是远程攻击,发射物是InvisibleProjectileNoTracer,只要游戏中不存在InvisibleProjectileNoTracer,那么卡车就不能造成伤害了。









亚洲探险家击昏守护者:

	<action>

<action>
<name stringid="38124">Stun</name>
<type>StunAttack</type>
<anim>stun_attack</anim>
<idleanim>CombatIdle</idleanim>
<rangedlogic>1</rangedlogic>
<maxrange>16</maxrange>
<damage>75</damage>
<impacteffect>effects\impacts\arrow</impacteffect>
<rate type="Guardian">1.0 </rate>
<rof>1</rof>
<maxheight>0</maxheight>
<accuracy>1</accuracy>
<accuracyreductionfactor>0</accuracyreductionfactor>
<aimbonus>5</aimbonus>
<trackrating>12</trackrating>
<projectile>ypShuriken</projectile>
<instantballistics>0</instantballistics>
</action>
		<name stringid="38124">Stun</name>
定义tactics的Action名及其名称
		<type>StunAttack</type>
类型,击昏攻击
		<anim>stun_attack</anim>
攻击动作【单位xml定义的动作】
		<idleanim>CombatIdle</idleanim>
空闲(默认)动作【单位xml定义的动作】
		<rangedlogic>1</rangedlogic>
远距离攻击都带有的语句,作用不明
		<maxrange>16</maxrange>
最大攻击距离
		<damage>75</damage>
攻击力(一般在protoy.xml都有这个语句,所以优先执行protoy.xml的攻击力)
		<impacteffect>effects\impacts\arrow</impacteffect>
命中单位特效文件路径(格式为impacteffect),可在art1—5.bar找到该文件。
		<rate type="Guardian">1.0 </rate>
攻击对象,单位标签或调用名
		<rof>1</rof>
攻速(注:tactics的rof在Action技能中为释放速度)
		<maxheight>0</maxheight>
远程攻击抛物线最大高度,0为直线
		<accuracy>1</accuracy>
命中率
		<accuracyreductionfactor>0</accuracyreductionfactor>
命中衰减率,数值越大距离越远越打不中
		<aimbonus>5</aimbonus>
作用不明
		<trackrating>12</trackrating>
发射物追踪效果,数值越大追踪能力越强
		<projectile>ypShuriken</projectile>
发射物
		<instantballistics>1</instantballistics>
百发百中[添加后100%命中,但是一般情况下看不见发射物及其轨迹]
	</action>








(技能大自然友谊)转换守护者:

	<action>

<action>
<name stringid="48957">ConvertGuardian</name>
<type>ConvertGuardian</type>
<active>0</active>
<maxrange>16</maxrange>
<anim>Pickup</anim>
<rate type="Guardian">1.0</rate>
<rof>1.000000</rof>
</action>
		<name stringid="48957">ConvertGuardian</name>
定义tactics的Action名及其名称
		<type>ConvertGuardian</type>
类型,转换守护者
		<active>0</active>
1为启用,0为未启用(需要借助科技激活),没有则默认启用
		<maxrange>16</maxrange>
最大转换距离
		<anim>Pickup</anim>
捡宝藏动作【单位xml定义的动作】
		<rate type="Guardian">1.0</rate>
转换对象(实际上受到power.xml限制,两个文件相互影响)
		<rof>1.000000</rof>
攻速(注:tactics的rof在Action技能中为释放速度)
	</action>








回到集合点(只能由技能调用)

	<action>

<action>
<name stringid="48957">SmokeBomb</name>
<type>EscapeToTC</type>
<maxrange>16</maxrange>
<rate type="Unit">1.0 </rate>
<active>0</active>
<anim>Smokescreen</anim>
<rate type="Guardian">1.0</rate>
<rof>1.000000</rof>
</action>
		<name stringid="48957">SmokeBomb</name>
定义tactics的Action名及其名称
		<type>EscapeToTC</type>
类型,回到主城集合点
		<maxrange>16</maxrange>
可以说没有任何作用,因为对自己释放是0距离。
		<rate type="Unit">1.0 </rate>
就算是对自己释放也要设定释放对象的。
		<active>0</active>
注意,是0
		<anim>Smokescreen</anim>
单位xml定义的动作
		<rate type="Guardian">1.0</rate>
		<rate type="Unit">1.0 </rate>
攻速(注:tactics的rof在Action技能中为释放速度)
	</action>








治疗

	<action>

<action>
<name stringid="70488">Heal</name>
<type>Heal</type>
<active>0</active>
<maxrange>12</maxrange>
<rate type="LogicalTypeHealed">10.0</rate>
<anim>Heal</anim>
</action>
		<name stringid="70488">Heal</name>
定义tactics的Action名及其名称
		<type>Heal</type>
类型,治疗
		<active>0</active>
1为启用,0为未启用(需要借助科技激活),没有则默认启用
		<maxrange>12</maxrange>
治疗最大范围
		<rate type="LogicalTypeHealed">X.0</rate>
治疗对象,单位标签或调用名,X.0是该对象的治疗速度
		<anim>Heal</anim>
单位xml定义的动作
	</action>








建造能力:

	<action>

<action>
<name stringid="69147">Build</name>
<type>Build</type>
<anim>Build</anim>
<maxrange>0.2</maxrange>
<rate type="Building">1.0</rate>
</action>
		<name stringid="69147">Build</name>
定义tactics的Action名及其名称
		<type>Build</type>
类型,建造建筑
		<anim>Build</anim>
单位xml定义的动作
		<maxrange>0.2</maxrange>
距离被建造建筑物最大距离
		<rate type="Building">1.0</rate>
可建造对象,单位标签或调用名
	</action>








捡宝藏

	<action>

<action>
<name stringid="69148">Discover</name>
<type>Discover</type>
<anim>Pickup</anim>
<maxrange>0.2</maxrange>
<rate type="AbstractNuggetLand">1.0</rate>
</action>
		<name stringid="69148">Discover</name>
定义tactics的Action名及其名称
		<type>Discover</type>
类型,捡宝藏
		<anim>Pickup</anim>
单位xml定义的动作
		<maxrange>0.2</maxrange>
距离宝藏最大距离
		<rate type="AbstractNuggetLand">1.0</rate>
目标对象,单位标签或调用名
	</action>









关于火舞祭典内容没有列出,因为太多,搞起来会很头疼,自己研究吧,中国奇观自动生产单位也是用了火舞祭典的语句,与另一个生产单位相比较,最大区别是卡人口、上限会停止训练,而不是重新训练,而且不会受到秘籍speed always wins影响。
直接添加到非火舞祭典的tactics即可使用,根据某个人所说,亚洲国家每时每刻都自带一个跳舞的农民,所以可以使用跳舞奖励自动生产单位,而欧洲国家则因为没有跳舞农民,所以不会自动生产。

火舞祭典生产单位

	<action>

<action>
<name stringid="68976">StandardArmySpawn</name>
<type>DanceBonus</type>
<active>1</active>
<persistent>1</persistent>
<dancebonustype>UnitSpawn</dancebonustype>
<modifyprotoid>ypStandardArmySpawn</modifyprotoid>
<modifymultiplier>0.065</modifymultiplier>
<modifyexponent>1.03</modifyexponent>
<modifybase>0.0</modifybase>
</action>
		<name stringid="68976">StandardArmySpawn</name>
定义tactics的Action名及其名称
		<type>DanceBonus</type>
类型,跳舞奖励
		<active>1</active>
1为启用,0为未启用(需要借助科技激活),没有则默认启用
		<persistent>1</persistent>
持续生效,没什么可说的了,基本上0就是没有效果
		<dancebonustype>UnitSpawn</dancebonustype>
奖励类型,生产单位(其他的自己研究)
		<modifyprotoid>ypStandardArmySpawn</modifyprotoid>
生产对象,proto调用名
		<modifymultiplier>0.065</modifymultiplier>
作用不明
		<modifyexponent>1.03</modifyexponent>
作用不明
		<modifybase>0.0</modifybase>
作用不明
	</action>





















<Tactic>语句:

第一个tactics设定为游戏单位建造后默认勾选的战术,如果你第一个设定的是Volley,那么勾选的就是Volley,非军事单位一般用Normal。









Normal

	<tactic>

<tactic>
Normal
<action>XXXXX</action>
</tactic>
		Normal
非军事单位一般用Normal
		<action>XXXXX</action>
开启上述action部分定义的战术,(用action调用名)
	</tactic>








Volley:远程单位齐射模式

	<tactic>

<tactic>
Volley
<action priority="100">VolleyRangedAttack</action>
<action priority="75">BuildingAttack</action>
<action priority="25">VolleyHandAttack</action>
<attacktype>LogicalTypeRangedUnitsAttack</attacktype>
<autoattacktype>LogicalTypeRangedUnitsAutoAttack</autoattacktype>
<attackresponsetype>LogicalTypeRangedUnitsAttack</attackresponsetype>
<runaway>1</runaway>
<autoretarget>1</autoretarget>
<transition>
<tactic>Normal</tactic>
<length>0</length>
<exit>1</exit>
</transition>
<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>
		Volley
齐射模式,对应Battle.xml
		<action priority="100">VolleyRangedAttack</action>
开启上述action部分定义的战术,(用action调用名)
		<action priority="75">BuildingAttack</action>
开启上述action部分定义的战术,(用action调用名)
		<action priority="25">VolleyHandAttack</action>
开启上述action部分定义的战术,(用action调用名)
		<attacktype>LogicalTypeRangedUnitsAttack</attacktype>
攻击对象,没有这句就不能攻击,具体看表格部分。
		<autoattacktype>LogicalTypeRangedUnitsAutoAttack</autoattacktype> 
自动攻击对象,没有这句不能自动攻击,具体看表格部分。
		<attackresponsetype>LogicalTypeRangedUnitsAttack</attackresponsetype>
反击对象,没有这句不会自动反击,具体看表格部分。
		<runaway>1</runaway>
受到视距外攻击是否逃跑
		<autoretarget>1</autoretarget>
是否自动寻找攻击目标
		<transition>
<tactic>Normal</tactic>
<length>0</length>
<exit>1</exit>
</transition>
在这里没用的,具体看炮兵或者隐匿战术
		<idleanim>Volley_standing_idle</idleanim>
默认动作【单位xml定义的动作】
		<boredanim>Volley_standing_bored</boredanim>
无聊动作【单位xml定义的动作】
		<deathanim>Death_by_melee</deathanim>
死亡动作【单位xml定义的动作】
		<walkanim>Volley_walk</walkanim>
走路动作【单位xml定义的动作】
		<joganim>Volley_jog</joganim>
慢跑动作【单位xml定义的动作】
		<runanim>Volley_run</runanim>
奔跑动作【单位xml定义的动作】
	</tactic>








Defend:单位站岗&防御模式

	<tactic>

<tactic>
Defend
<action priority="100">DefendRangedAttack</action>
<action priority="75">BuildingAttack</action>
<action priority="25">DefendHandAttack</action>
<attacktype>LogicalTypeRangedUnitsAttack</attacktype>
<autoattacktype>LogicalTypeRangedUnitsAutoAttack</autoattacktype>
<attackresponsetype>LogicalTypeRangedUnitsAttack</attackresponsetype>
<runaway>0</runaway>
<autoretarget>1</autoretarget>
<transition>
<tactic>Normal</tactic>
<length>0</length>
<exit>1</exit>
</transition>
<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>
		Defend
站岗模式,若为步兵、骑兵则额外增加防御模式;对应Battle.xml
		<action priority="100">DefendRangedAttack</action>
开启上述action部分定义的战术,(用action调用名)
		<action priority="75">BuildingAttack</action>
开启上述action部分定义的战术,(用action调用名)
		<action priority="25">DefendHandAttack</action>
开启上述action部分定义的战术,(用action调用名)
		<attacktype>LogicalTypeRangedUnitsAttack</attacktype>
攻击对象,没有这句就不能攻击,具体看表格部分。
		<autoattacktype>LogicalTypeRangedUnitsAutoAttack</autoattacktype>
自动攻击对象,没有这句不能自动攻击,具体看表格部分。
		<attackresponsetype>LogicalTypeRangedUnitsAttack</attackresponsetype>
反击对象,没有这句不会自动反击,具体看表格部分。
		<runaway>0</runaway>
受到视距外攻击是否逃跑
		<autoretarget>1</autoretarget>
是否自动寻找攻击目标
		<transition>
<tactic>Normal</tactic>
<length>0</length>
<exit>1</exit>
</transition>
在这里没用的,具体看炮兵或者隐匿战术
		<idleanim>Defend_idle</idleanim>
默认动作【单位xml定义的动作】
		<boredanim>Defend_bored</boredanim>
无聊动作【单位xml定义的动作】
		<deathanim>Death_by_melee</deathanim>
死亡动作【单位xml定义的动作】
		<walkanim>Cover_walk</walkanim>
走路动作【单位xml定义的动作】
		<joganim>Cover_jog</joganim>
慢跑动作【单位xml定义的动作】
		<runanim>Cover_run</runanim>
奔跑动作【单位xml定义的动作】
	</tactic>








Stagger:远程单位分散模式

	<tactic>

<tactic>
Stagger
<action priority="100">StaggerRangedAttack</action>
<action priority="75">BuildingAttack</action>
<action priority="25">StaggerHandAttack</action>
<attacktype>LogicalTypeRangedUnitsAttack</attacktype>
<autoattacktype>LogicalTypeRangedUnitsAutoAttack</autoattacktype>
<attackresponsetype>LogicalTypeRangedUnitsAttack</attackresponsetype>
<runaway>0</runaway>
<autoretarget>1</autoretarget>
<transition>
<tactic>Normal</tactic>
<length>0</length>
<exit>1</exit>
</transition>
<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>
		Stagger
分散模式,对应Battle.xml
		<action priority="100">StaggerRangedAttack</action>
开启上述action部分定义的战术,(用action调用名)
		<action priority="75">BuildingAttack</action>
开启上述action部分定义的战术,(用action调用名)
		<action priority="25">StaggerHandAttack</action>
开启上述action部分定义的战术,(用action调用名)
		<attacktype>LogicalTypeRangedUnitsAttack</attacktype>
攻击对象,没有这句就不能攻击,具体看表格部分。
		<autoattacktype>LogicalTypeRangedUnitsAutoAttack</autoattacktype>
自动攻击对象,没有这句不能自动攻击,具体看表格部分。
		<attackresponsetype>LogicalTypeRangedUnitsAttack</attackresponsetype>
反击对象,没有这句不会自动反击,具体看表格部分。
		<runaway>0</runaway>
受到视距外攻击是否逃跑
		<autoretarget>1</autoretarget>
是否自动寻找攻击目标
		<transition>
<tactic>Normal</tactic>
<length>0</length>
<exit>1</exit>
</transition>
在这里没用的,具体看炮兵或者隐匿战术
		<idleanim>Cover_idle</idleanim>
默认动作【单位xml定义的动作】
		<boredanim>Cover_bored</boredanim>
无聊动作【单位xml定义的动作】
		<deathanim>Death_by_melee</deathanim>
死亡动作【单位xml定义的动作】
		<walkanim>Cover_walk</walkanim>
走路动作【单位xml定义的动作】
		<joganim>Cover_jog</joganim>
慢跑动作【单位xml定义的动作】
		<runanim>Cover_run</runanim>
奔跑动作【单位xml定义的动作】
	</tactic>








Melee:远程单位近战

	<tactic>

<tactic>
Melee
<action priority="100">BuildingAttack</action>
<action priority="25">MeleeHandAttack</action>
<attacktype>LogicalTypeRangedUnitsAttack</attacktype>
<autoattacktype>LogicalTypeRangedUnitsAutoAttack</autoattacktype>
<attackresponsetype>LogicalTypeRangedUnitsAttack</attackresponsetype>
<runaway>0</runaway>
<autoretarget>1</autoretarget>
<transition>
<tactic>Normal</tactic>
<length>0</length>
<exit>1</exit>
</transition>
<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>
		Melee
近战模式,对应Battle.xml
		<action priority="100">BuildingAttack</action>
开启上述action部分定义的战术,(用action调用名)
		<action priority="25">MeleeHandAttack</action>
开启上述action部分定义的战术,(用action调用名)
		<attacktype>LogicalTypeRangedUnitsAttack</attacktype>
攻击对象,没有这句就不能攻击,具体看表格部分。
		<autoattacktype>LogicalTypeRangedUnitsAutoAttack</autoattacktype>
自动攻击对象,没有这句不能自动攻击,具体看表格部分。
		<attackresponsetype>LogicalTypeRangedUnitsAttack</attackresponsetype>
反击对象,没有这句不会自动反击,具体看表格部分。
		<runaway>0</runaway>
受到视距外攻击是否逃跑
		<autoretarget>1</autoretarget>
是否自动寻找攻击目标
		<transition>
<tactic>Normal</tactic>
<length>0</length>
<exit>1</exit>
</transition>
在这里没用的,具体看炮兵或者隐匿战术
		<idleanim>Charge_idle</idleanim>
默认动作【单位xml定义的动作】
		<boredanim>Charge_bored</boredanim>
无聊动作【单位xml定义的动作】
		<deathanim>Death_by_melee</deathanim>
死亡动作【单位xml定义的动作】
		<walkanim>Charge_walk</walkanim>
走路动作【单位xml定义的动作】
		<joganim>Charge_jog</joganim>
慢跑动作【单位xml定义的动作】
		<runanim>Charge_run</runanim>
奔跑动作【单位xml定义的动作】
	</tactic>








Limber:炮兵移动模式

	<tactic>

<tactic>
Limber
<speedmodifier>1.0</speedmodifier>
<attacktype>LogicalTypeRangedUnitsAttack</attacktype>
<attackresponsetype>LogicalTypeRangedUnitsAttack</attackresponsetype>
<transition>
<tactic>Bombard</tactic>
<action>Limber</action>
<anim>Bombard_unlimber</anim>
<length>2</length>
<exit>1</exit>
<automatic>1</automatic>
<commandautomatic>1</commandautomatic>
</transition>
<deathanim>Death_by_melee</deathanim>
</tactic>
		Limber
移动战术,对应Battle.xml
		<speedmodifier>1.0</speedmodifier>
1.0倍移动速度,即保持不变
		<attacktype>LogicalTypeRangedUnitsAttack</attacktype>
攻击对象,没有就不能这句攻击,具体看表格部分。
		<attackresponsetype>LogicalTypeRangedUnitsAttack</attackresponsetype>
反击对象,没有不会自动反击,具体看表格部分。
		<transition>
			<tactic>Bombard</tactic>
切换到Bombard
			<action>Limber</action>
不知道有什么用,只知道不会影响到炮兵切换模式
			<anim>Bombard_unlimber</anim>
切换战术的动作【单位xml定义的动作】
			<length>2</length>
切换所需时间
			<exit>1</exit>
在这里没有用,这个是protocommand按钮的功能。
			<automatic>1</automatic>
在炮轰战术时,当需要远距离移动的时候会自动切换
			<commandautomatic>1</commandautomatic>
在这里没有用,这个是protocommand按钮的功能。
		</transition>
		<deathanim>Death_by_melee</deathanim>
死亡动作【单位xml定义的动作】
	</tactic>








Bombard:炮兵炮轰模式

	<tactic>

<tactic>
Bombard
<speedmodifier>0.4</speedmodifier>
<attacktype>LogicalTypeRangedUnitsAttack</attacktype>
<autoattacktype>LogicalTypeRangedUnitsAutoAttack</autoattacktype>
<attackresponsetype>LogicalTypeRangedUnitsAttack</attackresponsetype>
<exclusive>1</exclusive>
<action>CannonAttack</action>
<transition>
<tactic>Limber</tactic>
<action>Limber</action>
<anim>Bombard_limber</anim>
<length>4</length>
<exit>1</exit>
</transition>
<throw>1</throw>
<idleanim>Bombard_ranged_idle</idleanim>
<boredanim>Bombard_bored</boredanim>
<walkanim>Bombard_Walk</walkanim>
<joganim>Bombard_Jog</joganim>
<runanim>Bombard_Run</runanim>
<deathanim>Bombard_Death</deathanim>
</tactic>
		Bombard
炮轰战术,对应Battle.xml
		<speedmodifier>0.4</speedmodifier>
0.4倍速移动度
		<attacktype>LogicalTypeRangedUnitsAttack</attacktype>
攻击对象,没有这句就不能攻击,具体看表格部分。
		<autoattacktype>LogicalTypeRangedUnitsAutoAttack</autoattacktype>
自动攻击对象,没有这句不能自动攻击,具体看表格部分。
		<attackresponsetype>LogicalTypeRangedUnitsAttack</attackresponsetype>
反击对象,没有这句不会自动反击,具体看表格部分。
		<exclusive>1</exclusive>
作用不明
		<action>CannonAttack</action>
开启上述action部分定义的战术,(用action调用名)
		<transition>
			<tactic>Limber</tactic>
切换到Limber
			<action>Limber</action>
不知道有什么用,只知道不会影响到炮兵切换模式
			<anim>Bombard_limber</anim>
切换战术的动作【单位xml定义的动作】
			<length>4</length>
切换时间(以秒为单位)
			<exit>1</exit>
在这里没有用,这个是protocommand按钮的功能。
		</transition>
		<throw>1</throw>
将人打飞效果
		<idleanim>Bombard_ranged_idle</idleanim>
默认动作【单位xml定义的动作】
		<boredanim>Bombard_bored</boredanim>
无聊动作【单位xml定义的动作】
		<walkanim>Bombard_walk</walkanim>
走路动作【单位xml定义的动作】
		<joganim>Bombard_jog</joganim>
慢跑动作【单位xml定义的动作】
		<runanim>Bombard_run</runanim>
奔跑动作【单位xml定义的动作】
		<deathanim>Bombard_Death</deathanim>
死亡动作【单位xml定义的动作】
	</tactic>








Stealth:隐匿战术

	<tactic>

<tactic>
Stealth
<action>Stealth</action>
<checkifcanstealth range="20.0">1</checkifcanstealth>
<speedmodifier>0.5</speedmodifier>
<attacktype>LogicalTypeHandUnitsAttack</attacktype>
<transition>
<tactic>Melee</tactic>
<length>0.8</length>
<anim>Cover_Out</anim>
<exit>1</exit>
<automatic>1</automatic>
<commandautomatic>1</commandautomatic>
</transition>
<transition>
<tactic>Defend</tactic>
<length>0.8</length>
<anim>Cover_Out</anim>
<exit>1</exit>
<automatic>1</automatic>
<commandautomatic>1</commandautomatic>
</transition>
<transition>
<tactic>Cover</tactic>
<length>0.8</length>
<anim>Cover_Out</anim>
<exit>1</exit>
<automatic>1</automatic>
<commandautomatic>1</commandautomatic>
</transition>
<autoretarget>0</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>
		Stealth
隐匿战术,对应Battle.xml
		<action>Stealth</action>
开启上述action部分定义的战术,(用action调用名)
		<checkifcanstealth range="20.0">1</checkifcanstealth>
反隐匿单位会在定义范围内发现该单位的定义,实际上距离是在action中的<maxrange>20.0</maxrange>定义的,或者说action那个优先级比这个要高,(又或者说range="20.0"这个定义是没有用的)。
		<speedmodifier>0.5</speedmodifier>
切换到该战术时,移动速度X0.5倍
		<attacktype>LogicalTypeHandUnitsAttack</attacktype>
攻击对象,没有这句就不能攻击,具体看表格部分。
		<transition>
隐匿单位其他战术也有<transition>,不过圣典只列出隐匿战术的,效果都是差不多的。
			<tactic>Melee</tactic>
切换到Melee战术
			<length>0.8</length>
切换时间【以秒为单位】
			<anim>Cover_Out</anim>
切换战术的动作【单位xml定义的动作】
			<exit>1</exit>
在这里没有用,这个是protocommand按钮的功能。
			<automatic>1</automatic>
在隐匿战术时,当需要攻击的时候会自动切换到<transition>定义的第一个战术,即为Melee
			<commandautomatic>1</commandautomatic>
在这里没有用,这个是protocommand按钮的功能。
		</transition>
		<transition>
			<tactic>Defend</tactic>
切换到Defend战术
			<length>0.8</length>
切换时间【以秒为单位】
			<anim>Cover_Out</anim>
切换战术的动作【单位xml定义的动作】
			<exit>1</exit>
在这里没有用,这个是protocommand按钮的功能。
			<automatic>1</automatic>
在隐匿战术时,当需要攻击的时候会自动切换到<transition>定义的第一个战术,即为Melee,所以这句在这里没有作用
			<commandautomatic>1</commandautomatic>
在这里没有用,这个是protocommand按钮的功能。
		</transition>
		<transition>
			<tactic>Cover</tactic>
切换到Cover战术
			<length>0.8</length>
切换时间【以秒为单位】
			<anim>Cover_Out</anim>
切换战术的动作【单位xml定义的动作】
			<exit>1</exit>
在这里没有用,这个是protocommand按钮的功能。
			<automatic>1</automatic>
在隐匿战术时,当需要攻击的时候会自动切换到<transition>定义的第一个战术,即为Melee,所以这句在这里没有作用
			<commandautomatic>1</commandautomatic>
在这里没有用,这个是protocommand按钮的功能。
		</transition>
		<autoretarget>0</autoretarget>
是否自动寻找攻击目标
		<idleanim>Charge_idle</idleanim>
默认动作【单位xml定义的动作】
		<boredanim>Charge_bored</boredanim>
无聊动作【单位xml定义的动作】
		<deathanim>Death_by_melee</deathanim>
死亡动作【单位xml定义的动作】
		<walkanim>Charge_walk</walkanim>
走路动作【单位xml定义的动作】
		<joganim>Charge_jog</joganim>
慢跑动作【单位xml定义的动作】
		<runanim>Charge_run</runanim>
奔跑动作【单位xml定义的动作】
	</tactic>








Button:拿颐和园生产禁卫军作为补充:


这些都是按钮,与Battle.xml无关,这些按钮还需要在protoy.xml定义才会显示,原本没有按钮的单位要加上<Flag>ShowTactics</Flag>。
	<tactic>

<tactic>
ForbiddenArmy
<action>ForbiddenArmySpawn</action>
<protounitcommand>WonderForbiddenArmy</protounitcommand>
<agerequirement>X</agerequirement>
<active>1</active>
<transition>
<tactic>Food</tactic>
<length>2</length>
<exit>1</exit>
</transition>
<transition>
<tactic>MingArmy</tactic>
<length>2</length>
<exit>1</exit>
</transition>
</tactic>
		ForbiddenArmy
自定义调用名,无需对应Battle.xml
		<action>ForbiddenArmySpawn</action>
开启上述action部分定义的战术,(用action调用名)
		<protounitcommand>WonderForbiddenArmy</protounitcommand>
按钮,对应Protounitcommands.xml。
		<agerequirement>X</agerequirement>
在X时代开启该战术,0发现时代,1殖民时代,2堡垒时代,3工业时代,4帝国时代
		<active>1</active>
1为启用,0为禁用(需要科技开启),删除则默认为启用
		<transition>
<tactic>Food</tactic>
<length>2</length>
<exit>1</exit>
</transition>
切换到Food??????什么鬼,颐和园有这个按钮吗????
		<transition>
			<tactic>MingArmy</tactic>
切换到MingArmy
			<length>2</length>
切换时间(以秒为单位)
			<exit>1</exit>
如果为0,切换到MingArmy后你就不能切换其他战术了,可以用来实现让玩家选择一个战术(按钮)这种效果
		</transition>
		其他语句省略...
	</tactic>














返回顶部

此表格需结合上述语句的解释来使用,因为类型不同,某些语句有不同作用。

语句 作用及效果
<action>
 
	<name stringid="StringID">XXXX</name>
stringid="StringID"可以不加,作用是显示战术名称(近战攻击、远距攻击),XXXX是action调用名可以自定义,原有的action调用名受主程序限制,即使你定义了新的StringID都不会改变,你只能定义新的调用名才能自定义StringID
		<type>XXXXX</type>
类型,具体作用看下表,不能自定义
		<type>Spawn</type>
强制生产单位,生产单位时间为0,无视人口限制,建议使用<singleuse>1</singleuse>语句,使其只能生产一次。
		<type>Maintain</type>
自动生产单位,会受到快速秘籍影响,因上限或其他原因无法训练,会重新开始训练。
		<type>AutoRangedModify</type>
远距离改变单位属性
		<type>AutoConvert</type>
畜牧、王者山丘的自动转化设定
		<type>Stealth</type>
单位隐身
		<type>AutoGather</type>
自动采集资源
		<type>Gather</type>
采集资源
		<type>Hunting</type>
狩猎,具体看非表格内容
		<type>NoWork</type>
作用不明
		<type>Attack</type>
攻击
		<type>StunAttack</type>
击昏攻击
		<type>TruckAttack</type>
践踏攻击
		<type>ConvertGuardian</type>
转换宝藏守护者
		<type>Heal</type>
治疗
		<type>Build</type>
建造建造能力
		<type>Discover</type>
捡宝藏
		<type>DanceBonus</type>
跳舞奖励
		<type>BoatManager</type>
作用不明
		<rate type="XXXXXX">1</rate>
根据<type>XXXXX</type>定义不同,效果也不同,XXXXXX为proto调用名、资源类型等。
		<active>X</active>
1为启用,0为未启用(需要借助科技激活),没有这个语句则默认启用
		<singleuse>1</singleuse>
类型<type>Maintain</type>只能生产一次单位
		<persistent>1</persistent>
为1定义的效果可以生效,0则为失效。除了类型<type>Maintain</type>为0有其他效果。
		<maxrange>X</maxrange>
根据<type>XXXXX</type>定义不同,效果也不同,影响范围、治疗范围或射程等
		<minrange>X</minrange>
最短射程,应该可用于其他类型,像<maxrange>X</maxrange>那样,我没有试过,因为没有使用这个的必要。
		<modifyexclusive>1</modifyexclusive>
【在类型<type>AutoRangedModify</type>下使用】
1为不可叠加光环,0或删除可以叠加光环,【叠加光环计算公式:原本属性*第一个光环倍数*第二个光环倍数*第三个光环倍数……,负面效果最低值为1,正面效果最高值为无限大,超过2147483648会显示-2147483648,若为生命值,此时该单位出于无敌状态,不会受到任何伤害,只会受到攻击力为2147483648以上的伤害】
		<modifytype>XXXX</modifytype>
【在类型<type>AutoRangedModify</type>下使用】改变单位属性类型,有MaxHP(生命值)、Damage(攻击力)、Speed(移动速度)、los(视野)、Bounty(击杀敌人后获得X倍经验值)、 GatherRate(采集效率)、AutoGatherRate(自动采集茶叶)
		<modifymultiplier>X.0</modifymultiplier>
【在类型<type>AutoRangedModify</type>下使用】改变单位属性X倍数
		<modelattachment>effects\ypack_auras\daimyopower.xml</modelattachment>
【在类型<type>AutoRangedModify</type>下使用】
调用单位xml以及gr2模型,作用是受光环影响,单位在地面上会出现该模型。即为白色光圈。
		<modelattachmentbone>bonethatdoesntexist</modelattachmentbone>
【在类型<type>AutoRangedModify</type>下使用】
定义模型???光环都带这个语句。
		<modifyabstracttype>xxxxx</modifyabstracttype>
【在类型<type>AutoRangedModify</type>下使用】
光环作用对象,使用单位标签或单位调用名,删除则默认为所有军事单位。
		<targetenemy>0</targetenemy>
【在类型<type>AutoRangedModify</type>下使用】
光环作用对象,0或删除为作用于己方(盟友不会受影响),1为作用于敌军
		<addresourcestoinventory>1</addresourcestoinventory>
【在类型<type>Gather</type>或<type>AutoGather</type>下使用】采集资源加入单位自身资源,没有这句则直接获得资源(畜牧类单位,没有该句,则变成类似银行单位)
		<attackaction>1</attackaction>
定义攻击?没有这句,整个攻击设定无效。
		<handlogic>1</handlogic>
定义近战攻击?    近战攻击都带有的语句,作用不明
		<rangedlogic>1</rangedlogic>
定义远距攻击?    远距攻击都带有的语句,作用不明
		<anim>XXXXXXX</anim>
攻击动作【单位xml定义的动作】
		<idleanim>XXXXXXX</idleanim>
空闲(默认)动作【单位xml定义的动作】
		<reloadanim>XXXXXXX</reloadanim>
装填动作【单位xml定义的动作】
		<impacteffect>XXX\XXXX\XXXXX</impacteffect>
命中单位特效文件路径(格式为impacteffect),可在art1—5.bar找到该文件。
		<speedboost>1</speedboost>
命中敌人增速25%,一般用于近战
		<targetspeedboost>1</targetspeedboost>
敌人受到攻击后会减速35%,一般用于近战
		<maxheight>X</maxheight>
远程攻击抛物线最大高度,0为直线
		<accuracy>1.0</accuracy>
命中率(百分比数值)
		<accuracyreductionfactor>1.5</accuracyreductionfactor>
命中衰减率,数值越大距离越远越打不中
		<aimbonus>0</aimbonus>
作用不明
		<maxspread>5</maxspread>
作用不明
		<spreadfactor>0.25</spreadfactor>
作用不明
		<trackrating>12</trackrating>
发射物追踪效果,数值越大追踪能力越强
		<unintentionaldamagemultiplier>0.7</unintentionaldamagemultiplier>
作用不明
		<projectile>XXXXXX</projectile>
发射物,XXXXXX为proto调用名
		<throw>1</throw>
将人打飞,只能给远程攻击添加,否则会有BUG
		<impactlaunchangle>10.0</impactlaunchangle>
<throw>1</throw>击飞单位后,单位被击飞的角度,90就是垂直上上
		<impactforcemin>500.0f</impactforcemin>
最小冲击力(击杀单位后,冲击力越大,<throw>1</throw>打飞单位距离越远)
		<impactforcemax>800.0f</impactforcemax>
最大冲击力(击杀单位后,冲击力越大,<throw>1</throw>打飞单位距离越远)
		<damage>X.000000</damage>
攻击力,因为优先级的原因,实际上采用protoy.xml的数值
		<rof>2.000000</rof>
攻速,实际上采用protoy.xml的数值
		<instantballistics>1</instantballistics>
百发百中[添加后100%命中,但是一般情况下看不见发射物及其轨迹]
		<perfectaccuracy>1</perfectaccuracy>
完美射击???添加这语句后,就算你的命中率只有1%,除非对方移动,否则100%命中,就算没有打中对方,还是能造成伤害。【用鹰炮测试的,迫击炮不命中不会造成伤害,也许是陆地与水的区别】一般用于炮轰攻击
		<targetground>1</targetground>
1为炮弹打到地上后会反弹出去造成二次伤害,0为击中单位1次后就失效,当设定了命中率后,如果有这个语句也是百发百中。一般用于炮轰攻击
		<outerdamageareadistance>.25</outerdamageareadistance>
反弹伤害距离(.25是0.25的意思),计算方法不明一般用于炮轰攻击,与<targetground>1</targetground>联合使用
		<outerdamageareafactor>.20</outerdamageareafactor>
反弹伤害倍数,包括第一次命中也会算上这个倍数(.20是0.20的意思),倍数越大伤害越高,改个1000000试试看吧。一般用于炮轰攻击,与<targetground>1</targetground>联合使用
		<numberbounces>1</numberbounces>
最大反弹次数(第一下为命中,反弹出去击中地面造成伤害计第一次反弹,我试验过10次,最多的一次是反弹4下)一般用于炮轰攻击,与<targetground>1</targetground>联合使用
		<basedamagecap>1</basedamagecap>
决定的是伤害上限会不会计算伤害倍率,如火车伤害5上限20对步6倍但没有basecap,他打主目标打5*6=30但上限20于是就决定自己打20伤害就够了,而像鹰炮有basecap,它计算伤害上限时就会乘以倍率100伤200上限对步3倍就会有200*3=600的对步伤害上限
		<activeifcontainsunits>1</activeifcontainsunits>
当有单位驻守的时候,才开启攻击, 数值只能为1
		<damagefactorcap>X</damagefactorcap>
驻守单位达到X后,停止增加伤害,与<scalebycontainedunits>1</scalebycontainedunits>联合使用
		<scalebycontainedunits>1</scalebycontainedunits>
驻守一个单位增加一次伤害(单位攻击力), 数值只能为1
		<selfdestruct>1</selfdestruct>
攻击后死亡(炸药桶、火帆船的设定)
		<physicsonselfdestruct>1</physicsonselfdestruct>
自爆后会炸飞,与<selfdestruct>1</selfdestruct>联合使用
		<dancebonustype>XXXXX</dancebonustype>
跳舞类型,此教程没有列出。【在类型<type>DanceBonus</type>中使用】
		<modifyprotoid>XXXXXXX</modifyprotoid>
作用对象;【在类型<type>DanceBonus</type>中使用】
	</action>
 
	<tactic>
 
		XXXXXX
Tactic另一个调用名,与Battle.xml对应,若为按钮设定可以不对应。
		<active>0</active>
数值0为不能使用该战术与不会显示该战术,需要用科技启用该战术;删除该句或者数值1为默认开启该战术。
		<protounitcommand>XXXXXX</protounitcommand>
对应Protounitcommands.xml的1按钮
		<agerequirement>X</agerequirement>
在X时代开启该战术,0发现时代,1殖民时代,2堡垒时代,3工业时代,4帝国时代
		<speedmodifier>X</speedmodifier>
X倍移动速度
		<checkifcanstealth range="20.0">1</checkifcanstealth>
【用于Stealth战术】反隐匿单位会在定义范围内发现该单位的定义,实际上距离是在action中的<maxrange>20.0</maxrange>定义的,或者说action那个优先级比这个要高,(又或者说range="20.0"这个定义是没有用的)。
		<action>XXXXX</action>
开启action部分定义的战术
		<action priority="Y">XXXXX</action>
开启action部分定义的战术,Y为优先值,数值越大,该战术优先使用。
		<attacktype>LogicalTypeRangedUnitsAttack</attacktype>
		<attacktype>LogicalTypeHandUnitsAttack</attacktype>
		<attacktype>LogicalTypeVillagersAttack</attacktype>
攻击对象,采用的是protoy的单位标签。没有添加就不能攻击。
注:并不是说可以攻击所有带有该标签的单位,这个指定后还需要在Action的攻击语句用Rate指定可攻击对象。
		<autoattacktype>LogicalTypeRangedUnitsAutoAttack</autoattacktype>
		<autoattacktype>LogicalTypeHandUnitsAutoAttack</autoattacktype>
自动攻击对象,用的是protoy的单位标签。没有这句不能自动攻击。
注:并不是说可以攻击所有带有该标签的单位,这个指定后还需要在Action的攻击语句用Rate指定可攻击对象。
		<attackresponsetype>LogicalTypeRangedUnitsAttack</attackresponsetype>
		<attackresponsetype>LogicalTypeHandUnitsAttack</attackresponsetype>
反击对象,用的是protoy的单位标签。没有这句,被人攻击后会跑,不会自动反击。
注:并不是说可以攻击所有带有该标签的单位,这个指定后还需要在Action的攻击语句用Rate指定可攻击对象。
		<runaway>0</runaway>
受到视距外攻击是否逃跑
		<autoretarget>1</autoretarget>
是否自动寻找攻击目标
		<exclusive>1</exclusive>
作用不明,一般在炮兵出现
		<throw>1</throw>
将人打飞效果
		<transition>
 
			<tactic>XXXXX</tactic>
切换到XXXXX战术
			<anim>XXXXXX</anim>
切换战术的动作【单位xml定义的动作】
			<length>X</length>
切换战术所需时间,数值越大越慢。
			<exit>1</exit>
用于Protounitcommands.xml的按钮 ,如果为0,切换战术后你就不能再次切换其他战术了,可以用来制作让玩家只能选择一个按钮的修改。
			<automatic>1</automatic>
用于Battle.xml战术,当需要的时候会自动切换战术,例如间谍隐身攻击敌人,为0就不能切换。
			<commandautomatic>1</commandautomatic>
与<automatic>1</automatic>一样,需要时自动切换按钮,不过帝国里面没有这种类型单位,你只能通过自己修改才能看到这个效果。
		</transition>
 
		<idleanim>XXXXXXX</idleanim>
默认动作【单位xml定义的动作】
		<boredanim>XXXXXXX</boredanim>
无聊动作【单位xml定义的动作】
		<deathanim>XXXXXXX</deathanim>
死亡动作【单位xml定义的动作】
		<walkanim>XXXXXXX</walkanim>
走路动作【单位xml定义的动作】
		<joganim>XXXXXXX</joganim>
慢跑动作【单位xml定义的动作】
		<runanim>XXXXXXX</runanim>
奔跑动作【单位xml定义的动作】
	</tactic>