Techtreey.xml:科技效果

注:Unittype为单位标签或单位调用名;Protoname为单位调用名;Techname为科技调用名;Techflag为科技的flag属性;StringID为Stringtabley.xml的5个数字;ResourceName为资源名称,有Food食物、Wood木材、Gold黄金、Trade茶叶、XP经验值、Fame隐藏资源总共6个其实还有一个skillpoints,但因为UI没办法正常显示,所以不推荐使用。
部分参考资料:林墓怪人整理的科技资料;在此向林墓怪人的无私奉献表示感谢。


<Tech name ='Techname' type ='Normal'>
Techname为科技调用名;type应该只存在Normal一种,如果使用神话时代遗留的Power则会闪退。



		<DBID>XXXX</DBID>
		DBID应该是没有用的。



		<DisplayNameID>StringID</DisplayNameID>
		科技名称(代码)。与stringtabley.xml关联。(去stringtabley.xml搜索这5个数字)



		<ResearchLimit>X.0000</ResearchLimit>
		科技可以研究次数,若不设定则默认为1。当大于1时会移动到图标会显示注释“您可以研究这个改良技术 X 次,而您目前已研究 x 次了。”
		注:对仅对普通科技有效,像升级时代或革命按钮这些科技是不可能改良第二次的。




		<ResearchPoints>X.0000</ResearchPoints>
		科技研发时间,数值越小研发越快;当研发时间小于1时会自动改良。0秒会自动改良,但是你要不要去试一下-1呢?



		<Status>UNOBTAINABLE</Status>
		该科技的默认状态,有Obtainable、Unobtainable两种;Obtainable:所有国家都开启该科技。Unobtainable:所有国家都未启用该科技,需要用其他科技启用该科技。注:经过实测这里可以使用Active,但不代表开局就已改良状态,而是与Obtainable一样。。



		<Icon>XXXXXX</Icon>
		科技图标文件的路径。



		<IconTextureCoords>A B C D</IconTextureCoords>
		对图标的图片进行按照像素百分比进行裁剪。
		A:x轴左端点;C:x轴右端点;C-A=图片的宽度。
		B:y轴上端点;D:y轴下端点;D-B=图片的高度。
		注意:全部按图片大小的百分比计算,如果设定0 0 1 1则代表使用整张图片,不进行裁剪。



		<Cost resourcetype ='资源'>资源数量</Cost>
		研发该科技所需资源数量,有Food、Wood、Gold、Ships、Trade、XP、Fame)



		鼠标移动到科技上的文字介绍(代码),(去stringtabley.xml搜索这5个数字)
		<RolloverTextID>StringID</RolloverTextID>


		主城等级达到X级才能显示本科技
		<HomeCityLevel>X</HomeCityLevel>




		该科技的基本属性与特殊效果。具体看Flag表格↓。
		<Flag>XXXXXXXX</Flag>
		这个表格非常重要。
		(总是有人问怎样无限研发科技,特意用72号字体标出此表格的重要性)
		事实证明:自从使用72号字体之后,从2018年到至今我都没有见过有人询问无限研发科技。除了因决定版protoy.xml的新增的flag导致无限研发失效。
		<Flag>Volatile</Flag>
当该科技满足其前提条件就会自动改良。注:假如你用其他科技关闭了该科技,如果满足前提条件,会立即再改良一次。
		<Flag>AlwaysShowButton</Flag>
该科技始终显示在 UI 中,即使无法进行研究。
		<Flag>HomeCity</Flag>
船运(船运实际上也属于特定科技。)注:卡片必须带有此flag,添加后无法通过UI按钮研究该科技,只能通过主城运送卡片。
		<Flag>Teamtech</Flag>
队伍科技;研究该科技后对整个队伍都有效。
		<Flag>UniqueTech</Flag>
独有科技
		<Flag>NativeDance</Flag>
大按钮科技:添加后变成土著文明那种大按钮科技。
		<Flag>YPCheckPopCap</Flag>
检测人口上限、检测单位建造上限
		<Flag>CheckLandHCGatherPoint</Flag>
检测是否有主城集结点,若没有将不能研发该科技。
		<Flag>CheckWaterHCGatherPoint</Flag>
检测是否有海军集结点,若没有将不能研发该科技。
		<Flag>YPNeverObtainableAfterUse</Flag>
已经研究了该科技,不能再次启用该科技
		<Flag>YPInfiniteTech</Flag>
该科技可无限研发
		<Flag>UpgradeTech</Flag>
升级科技
		<Flag>AgeUpgrade</Flag>
时代升级科技
		<Flag>YPConsulateTech</Flag>
领事馆科技
		<Flag>ypConsulateImprovementImperial</Flag>
帝王时代领事馆科技
		<Flag>YPNativeImprovement</Flag>
原住民科技
		<Flag>YPMonasteryTech</Flag>
寺院科技
		<Flag>YPGridShiftRowRightOne</Flag>
科技排列时,自动空开第一格 (演武堂的设定)
		<Flag>RevoltTech</Flag>
革命科技
		<Flag>OrPrereqs</Flag>
改良一个前提科技即可开启(若该科技有两种以上前提科技)
		<Flag>CountsTowardEconomicScore</Flag>
此科技计算入经济分数。
		<Flag>CountsTowardMilitaryScore</Flag>
此科技计算入军事分数。
		<Flag>Shadow</Flag>
隐藏科技;不会在UI显示按钮,改良后也不会在屏幕左方显示通知。
		<Flag>YPAlwaysDisableButtonInGrid</Flag>
关闭该科技按钮,无法点击改良,只能显示。
		<Flag>DynamicCost</Flag>
科技成本=设定值X敌方玩家人口点数总和。
		<Flag>YPRecalcHCTrainQueuePointsWhenShipped</Flag>
在研究技术时强制重新计算当前排队的本土城市卡的运输时间。
<Prereqs>前置条件开始标签 到殖民时代才可以改良 <TechStatus status ='Active'>Colonialize</TechStatus> 到堡垒时代才可以改良 <TechStatus status ='Active'>Fortressize</TechStatus> 到工业时代才可以改良 <TechStatus status ='Active'>Industrialize</TechStatus> 到帝王时代才可以改良 <TechStatus status ='Active'>Imperialize</TechStatus> 到达时代才会显示科技。Age0为发现时代,Age1为殖民时代,Age2为堡垒时代,Age3为工业时代,Age4为帝王时代,与上面5个改良科技条件不同,上面五个条件在未到达所需时代时,会显示为灰色+所需时代的图标,而<SpecificAge>AgeX</SpecificAge>在未到达所设定的时代时,不会显示图标,到了所需时代才会出现。 <SpecificAge>AgeX</SpecificAge> 改良某科技可以显示该科技【可以设定n个前提科技,所有前提科技改良后,才能显示该科技】 <TechStatus status ='Active'>Techname</TechStatus> 当设定的单位数量符合运算规则时才会显示本科技,unit可以使用单位调用名或单位标签;state的属性有aliveState[存活数量]、buildingState[某建筑的建造数量]、deadState[死亡数量]、anyState[包括了所有state]、noneState[不明,但建议在前面加上];总共5种,可以设定多个state,中间用空格隔开。operator的运算符有lt[小于]、lte[小于等于]、gte[大于等于]、gt[大于]、eq[等于]、neq或ne[等于;注:经过实际测试,neq、ne在帝国3里面的确为等于,而不是不等于] 假如你只使用了一个deadState,如果不生效在前面增加一个noneState,不生效的资料来自https://www.aoebbs.net/thread-1750-1-1.html;只使用了一个deadState实测变成了anyState。 <typecount unit='Unittype' count='X.00' state='noneState aliveState buildingState' operator='lt'/> 当玩家在civs设定的文化为xxxxx时,才会显示此科技;文化名称参考10-7 cultures.xml <Culture> <culturename>xxxxx</culturename> </Culture> 当玩家的国家调用名为xxxxx,才会显示此科技;国家调用名参考15-Civ ID&Civ Name <civilization> <civname>xxxxx</civname> </civilization> </Prereqs>前置条件结束标签 <Effects>

各项科技类容及作用:




			启用科技
			<Effect type ='TechStatus' status ='obtainable'>Techname</Effect>



			禁用科技
			<Effect type ='TechStatus' status ='unobtainable'>Techname</Effect>



			直接改良科技
			<Effect type ='TechStatus' status ='active'>Techname</Effect>



			升级到X+1时代
			<Effect type ='SetAge'>AgeX</Effect>



			改良科技后屏幕左方会显示信息,StringID为stringtabley的5个数字。
			<Effect type ='TextOutput'>StringID</Effect>



			改良科技后屏幕左方会显示信息,StringID为stringtabley的5个数字,此信息发给除了自己以外的所有玩家。
			<Effect type ="TextOutputAll">StringID</Effect>



			改良科技后强制进入主城
			<Effect type ="ShowHCView"/>



			改良科技后强制回到游戏世界(地图)
			<Effect type ="ShowWorldView"/>



			改良科技后播放wav语音,Soundname参考soundsets.xml、soundsetsx.xml、soundsetsy.xml(用AOE3ED去sound文件夹的bar里面寻找)
			<Effect type="Sound">Soundname</Effect>



			获取所有玩家视野(间谍科技)
			<Effect all="true" type="SharedLOS"/>



			封锁禁运敌人主城
			<Effect type="Blockade" delay="10.00"/>



relativity = 'XXX'设定
Assign直接变为你设定的数值,例如你设定了速度科技,原单位的速度为5,使用Assign设定数值为8,那么那个单位速度会变成8。

Absolute是在其基础上进行加减,例如你设定了速度科技,原单位的速度为5,使用Absolute设定数值为10,那么那个单位速度会变成15。

Percent是在其基础上进行百分比改变,设定成1.00会在其基础上乘以1,即为不变。例如你设定了速度科技,原单位的速度为5,使用Percent设定数值为1.2,那么那个单位速度会变成6。

BasePercent为可叠加百分比,设定成1.00会在其基础上乘以1,即为不变,值得注意的是BasePercent的百分比加成的叠加计算为原数值*(1+x%+y%),而不是原数值*x%*y%。
例如你设定了速度科技,原单位的速度为5,使用BasePercent设定数值为1.2倍,速度变为5*(1+0.2)=6,再研究另一个1.5倍的BasePercent速度科技,单位的速度为5*(1+0.2+0.5)=8.5,如果你再研究了一个0.8倍的BasePercent速度科技,单位的速度为5*(1+0.2+0.5-0.2)=7.5.。

凡带有relativity = 'XXX'字样的句式中的XXX可更改为AbsoluteAssignPercentBasePercent

关于xml代码规范:

事实上,正确的格式化应该是这样的,</Target>与</Effect>应当换行
例如下面的“改变单位成本”正确的格式化(代码规范)应像这样: <Effect type ='Data' amount ='0.75' subtype ='Cost' resource ='Food' relativity ='BasePercent'> <Target type ='ProtoUnit'>Unittype</Target> </Effect>
但是帝国时代3data文件夹所有的techtree.xml都遗留下了</Target>与</Effect>不换行这种格式,所以圣典依然是采用下面这种格式。


			改变单位成本(Food食物可替换为Ships船运、Wood木材、Gold黄金、Trade茶叶、XP经验值、Fame。Unittype为单位标签或单位调用名)
			<Effect type ='Data' amount ='0.75' subtype ='Cost' resource ='Food' relativity ='BasePercent'>
				<Target type ='ProtoUnit'>Unittype</Target></Effect>



			改变单位采集速度(AbstractVillager是所有采集者,A是单位调用名或单位标签(例如矿场、种植园);
			<Effect type ='Data' action ='Gather' amount ='X.00' subtype ='WorkRate' unittype ='A' relativity ='BasePercent'>
				<Target type ='ProtoUnit'>AbstractVillager</Target></Effect>



			修改银行等自动收集资源的建筑物时,要在Gather前加Auto,并在其后加Food食物、Wood木材和Coin钱币。等你接觸Tctics文件后就会知道为什么要这样设定。)
例如修改银行自动采集:
			<Effect type ='Data' action ='AutoGather' amount ='X.00' subtype ='WorkRate' unittype ='A' relativity ='BasePercent'>
				<Target type ='ProtoUnit'>Bank</Target></Effect>



			改变单位的可采集者数量(比如稻田允许10个农民采集,使用以下语句后稻田只允许8个农民采集。...10-2=8啊,我还能说些什么...)
			<Effect type ='Data' amount ='-2.00' subtype ='GathererLimit' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Protoname</Target></Effect>



			改变单位在稻田的采集速度(Food食物只可改为Gold黄金。)ypRicePaddy为稻田的单位调用名。
			<Effect type ='Data2' action ='Gather' amount ='1.00' subtype ='WorkRateSpecific' resource ='Food' unittype ='ypRicePaddy' relativity ='BasePercent'>
				<Target type ='ProtoUnit'>Protoname</Target></Effect>



			改变科技的研发成本。因游戏BUG,改变科技成本不能用BasePercent,科技无法增加船运成本,包括支援卡。科技成本为零时无法改变。Techname为科技调用名。(资源有Food食物、Wood木材、Gold黄金、Trade茶叶、XP经验值、Fame,下面不再重复资源类型)
			<Effect type ='Data' amount ='资源数量' subtype ='Cost' resource ='资源' relativity ='Absolute'>
				<Target type ='Tech'>Techname</Target></Effect>



			改变所有科技成本(如果数据里没有相应科技成本函数,则无法改变。)
			<Effect type ='Data' amount ='0.60' subtype ='Cost' resource ='资源' relativity ='Percent'>
				<Target type ='techAll'></Target></Effect>



			改变特定科技成本(如Teamtech队伍科技。具体参照Flag表格)
			<Effect type ='Data' amount ='0.60' subtype ='Cost' resource ='资源' relativity ='Percent'>
				<Target type ='techWithFlag'>TechFlag</Target></Effect>



			改变所有科技研究速度(包括船运)
			<Effect type ='Data' amount ='0.01' subtype ='ResearchPoints' relativity ='Percent'>
				<Target type ='techAll'></Target></Effect>



			给予玩家X份/s的资源流(可以负数,会将已获得的资源流减到0为止,但是资源流小于0不会扣玩家资源)
			<Effect type ='Data' amount ='X.00' subtype ='ResourceTrickleRate' resource ='资源' relativity ='Absolute'>
				<Target type ='Player'></Target></Effect>



			直接获得X资源
			<Effect type ='Data' amount ='X.00' subtype ='Resource' resource ='资源' relativity ='Absolute'>
				<Target type ='Player'></Target></Effect>



			将A资源按1:X的比例换为C资源
			<Effect type ='ResourceExchange' multiplier ='X' toresource ='C' fromresource ='A'></Effect>



			改变单位提供的资源上限,一般用于提升资源箱所携带资源的上限。
			<Effect type ='Data' amount ='X.00' subtype ='InventoryAmount' resource ='ResourceName' relativity ='BasePercent'>
				<Target type ='ProtoUnit'>Protoname</Target></Effect>


			改变单位每次搬运可携带资源上限,需要在protoy.xml定义<dropsitegathering>1</dropsitegathering>才会有效果,具体请看12-7 类似帝国2的采集。
			<Effect type='Data' amount='X.00' subtype='CarryCapacity' resource='ResourceName' relativity='BasePercent'>
					<Target type='ProtoUnit'>Unittype</Target>
				</Effect>



			改变单位A所能支持的人口数
			<Effect type ='Data' amount ='5.00' subtype ='PopulationCapAddition' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Unittype</Target></Effect>



			改变领事馆旗帜(Civname为国家调用名,具体参考civs.xml文件)
			<Effect civ ='Civname' type ='Data' amount ='0.00' subtype ='SetCivRelation' relativity ='Absolute'>
				<Target type ='Player'></Target></Effect>


			替换国家,需要与<Effect type="SetAge">Age0</Effect>联合使用,否则会丢失当前时代,无法训练任何单位。
			Civname为国家调用名,具体参考civs.xml文件。注:该代码存在BUG
			由于内容太长,所以隐藏了科技效果,如需查看请点击右边的按钮:
			<Effect civ='Civname' type='Data' amount='0.00' subtype='SetCivilization'  relativity='Absolute'>
				<Target type='Player'/>
			</Effect>
			<Effect type="SetAge">Age0</Effect>


			开启科技B后可运送单位A
			<Effect tech ='B' type ='Data' amount ='1.00' subtype ='FreeHomeCityUnitIfTechObtainable' unittype ='A' relativity ='Absolute'>
				<Target type ='Player'></Target></Effect>



			开启贸易路线视野
			<Effect type="Data" amount="1.00" subtype="EnableTradeRouteLOS" relativity="Absolute">
				<Target type="Player"/></Effect>



			关闭贸易路线视野
			<Effect type="Data" amount="0.00" subtype="EnableTradeRouteLOS" relativity="Absolute">
				<Target type="Player"/></Effect>



			开启单位视野(例如AbstractNugget获取所有宝藏视野,amount属性应该没有被调用,无论是0还是1都会获得视野。)
			<Effect type ='Data' amount ='0.00' subtype ='RevealLOS' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Unittype</Target></Effect>

			<Effect type ='Data' amount ='1.00' subtype ='RevealLOS' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Unittype</Target></Effect>



			改变人口上限(因游戏限制,最高为250;如需突破250上限,请使用UHC)
			<Effect type ='Data' amount ='X.00' subtype ='PopulationCapExtra' relativity ='Absolute'>
				<Target type ='Player'></Target></Effect>



			改变人口上限,并且支援对应的人口数,不用造住房(因游戏限制,最高为250;如需突破250上限,请使用UHC)
			<Effect type ='Data' amount ='X.00' subtype ='PopulationCapBonus' relativity ='Absolute'>
				<Target type ='Player'></Target></Effect>



			减少单位所占人口数(最低为1,若0人口单位受该科技影响,人口会再次变成1。)
			<Effect type ='Data' amount ='-1' subtype ='PopulationCount' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Unittype</Target></Effect>



			改变单位建造上限(如果你将没有建造限制的单位增加2上限,那么该单位的建造上限为1,因为无限制=-1;-1+2=?)
			<Effect type ='Data' amount ='X' subtype ='Buildlimit' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Unittype</Target></Effect>



			改变单位训练时间
			<Effect type ='Data' amount ='0.75' subtype ='TrainPoints' relativity ='BasePercent'>
				<Target type ='ProtoUnit'>Unittype</Target></Effect>



			改变单位的训练时代
			<Effect type ='Data' amount ='-2.00' subtype ='AllowedAge' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Unittype</Target></Effect>



			改变单位训练工作倍率(意思是改变A训练单位的速度,而不影响你所训练的单位在其它单位训练的时间)
			<Effect type ='Data' amount ='2.00' subtype ='BuildingWorkRate' relativity ='BasePercent'>
				<Target type ='ProtoUnit'>Unittype</Target></Effect>



			改变A建造\训练B的速度
			<Effect type ='Data' action ='Build' amount ='3.00' subtype ='WorkRate' unittype ='B' relativity ='BasePercent'>
				<Target type ='ProtoUnit'>A</Target></Effect>



			训练1组单位时的人数上限(PlayerSpecificTrainLimitPerAction)由5更变为10(但排程人数上限仍为25不变),数量只能设定>5,对旗军和村民、捆绑训练单位无效。
			<Effect type ='Data' amount ='10.00' subtype ='PlayerSpecificTrainLimitPerAction' relativity ='Absolute'>
				<Target type ='Player'></Target></Effect>



			单位的近程攻击伤害力(所有模式)均+15%
			<Effect type ='Data' amount ='1.15' subtype ='DamageForAllHandLogicActions' relativity ='BasePercent'>
				<Target type ='ProtoUnit'>Unit</Target></Effect>



			*************************************************************************************************************
			改变单位所有攻击力
			<Effect type ='Data' amount ='1.25' subtype ='Damage' allactions ='1' relativity ='BasePercent'>
				<Target type ='ProtoUnit'>Unittype</Target></Effect>



			改变单位A对单位B的攻击加成
			<Effect type ='Data' amount ='0.50' subtype ='DamageBonus' unittype ='B' allactions ='1' relativity ='Absolute'>
				<Target type ='ProtoUnit'>A</Target></Effect>


			因为上面两个语句都采用了allactions ='1';所以能改变单位所有攻击力与所有攻击力的加成。

			allactions ='1'的作用是对该单位的tactics所有action生效。

			如果只想对某个模式的攻击增加伤害,将allactions ='1'删除,然后加上action ='xxxxxxx'看样子不加上黑幕你是不会留意这里的。


			例如只改变所有远程攻击的伤害:
			<Effect type ='Data' amount ='1.25' subtype ='Damage' action ='RangedAttack' relativity ='BasePercent'>
				<Target type ='ProtoUnit'>Unittype</Target></Effect>
	
action ='xxxxxxx'    应该不用我告诉你怎样使用吧?
HandAttack 所有近战攻击 RangedAttack 所有远距攻击 TrampleHandAttack 践踏攻击
MeleeHandAttack 近战攻击 CoverHandAttack 掩护模式近战攻击 DefendHandAttack 防御模式近战攻击
MeleeHandAttack 齐射单位远程攻击 StaggerRangedAttack 分散模式远程攻击 DefendRangedAttack 防御模式远程攻击
CannonAttack 炮轰攻击 GuardianAttack 守护者攻击 BuildingAttack 攻城攻击
LongRangeAttack 远距离射击 MortarAttack 迫击炮战船攻击 BroadsideAttack 舷侧攻击
其他的自己查Tactics,而且因为不同单位tactics定义的actionname可能不一样,所以是这些并不是通用的。
改变单位攻击溅射范围,需要加 action ='攻击方式',如CannonAttack炮轰攻击,例如: <Effect type ='Data' amount ='1.25' subtype ='DamageArea' action ='CannonAttack' relativity ='BasePercent'> <Target type ='ProtoUnit'>Unittype</Target></Effect> V3.5版本补充:范围伤害的范围不支持小数点,出现小数则向下取整,例如0.5≈0,1.9≈1,2.5≈2;即使在科技运算中,也是先将protoy定义的范围向下取整再运算科技加成。 例如2-0.5=1≠2,0.5+0.5=0≠1,0.5X2=0;对此计算有疑问?第一个数字为protoy定义的范围,优先向下取整,然后运算后再一次向下取整;0.5+0.5实际为0+0.5,然后又向下取整,最后变成0。 V3.7版本补充:决定版已修正不能存在小数点问题,因此该限制仅在亚洲王朝存在。 改变范围伤害可造成的最大伤害数值(伤害上限在神击有特殊定义,具体参考9-8 神击技能) <Effect type="Data" action="CannonAttack" amount="1.50" subtype="DamageCap" relativity="BasePercent"> <Target type="ProtoUnit">Unittype</Target></Effect> 改变单位射程,需要加 action ='攻击方式',如CannonAttack炮轰攻击,例如: <Effect type ='Data' amount ='1.25' subtype ='MaximumRange' action ='CannonAttack' relativity ='Absolute'> <Target type ='ProtoUnit'>Unittype</Target></Effect> *************************************提醒你一下,只有上面的会用上action************************************** 改变单位生命值(Hitpoints可替换为DamageArea攻击范围、MaximumRange射程、LOS视野和MaximumVelocity行走速度) <Effect type ='Data' amount ='1.25' subtype ='Hitpoints' relativity ='BasePercent'> <Target type ='ProtoUnit'>Unittype</Target></Effect> 改变单位移动速度(Unittype为单位标签或调用名) <Effect type ='Data' amount ='1.25' subtype ='MaximumVelocity' relativity ='BasePercent'> <Target type ='ProtoUnit'>Unittype</Target></Effect> 改变单位护甲值(Unittype为单位标签或调用名) <Effect type ='Data' amount ='1.00' subtype ='Armor' relativity ='BasePercent'> <Target type ='ProtoUnit'>Unittype</Target></Effect> 改变单位视野(Unittype为单位标签或调用名) <Effect type ='Data' amount ='1.00' subtype ='LOS' relativity ='Absolute'> <Target type ='ProtoUnit'>Unittype</Target></Effect> 改变A治疗B的速度(一般B用LogicalTypeHealed,即所有可接受治疗的单位。) <Effect type ='Data' action ='Heal' amount ='1.5' subtype ='WorkRate' unittype ='B' relativity ='BasePercent'> <Target type ='ProtoUnit'>Unittype</Target></Effect> 改变治疗者治疗范围 <Effect type ='Data' action ='Heal' amount ='X.00' subtype ='MaximumRange' relativity ='Absolute'> <Target type ='ProtoUnit'>Unittype</Target></Effect> 将单位A图标变成单位B的图标 <Effect type ='Data' amount ='1.00' subtype ='CopyUnitPortraitAndIcon' unittype ='A' relativity ='Absolute'> <Target type ='ProtoUnit'>B</Target></Effect> 改变单位贴图【需要配合单位动画XML文件修改,利用replacetexture语句(或者在gr2模型定义新贴图)】 <Effect type ='Data' amount ='0.00' subtype ='UpdateVisual' unittype ='Protoname' relativity ='Absolute'> <Target type ='Player'></Target></Effect> 改变单位名称(none改成国家文化名字后将只作用于此文化国家。)StringID为stringtabley的5个数字。 <Effect type ='SetName' proto ='Protoname' culture ='none' newName ='StringID'></Effect> 停用单位(0是停用,1是启用,-1是停用。) <Effect type ='Data' amount ='0' subtype ='Enable' relativity ='Absolute'> <Target type ='ProtoUnit'>A</Target></Effect> 启用单位(0是停用,1是启用,-1是停用。) <Effect type ='Data' amount ='1' subtype ='Enable' relativity ='Absolute'> <Target type ='ProtoUnit'>A</Target></Effect> 单位A开启自动回血(速率为每秒回复X%血量,改成-1是减血,0为不掉血也不减血。) 这个我没有测试过,如果不生效,先在civs定义单位自动回血,具体参考4-2 自动回血 <Effect type ='Data' amount ='1.00' subtype ='UnitRegenRate' unittype ='A' relativity ='Assign'> <Target type ='Player'></Target></Effect> 单位C转化为单位A(包括建筑物。);这个语句有三个BUG↓ 第一个BUG:如果在被转换的单位改良转换单位科技,在改良完成后,游戏会立刻闪退。 第二个BUG:转换后的新单位会丢失tactic,会处于默认战术,也有可能是延续是一个单位的战术,或者根本不存在,有攻击数据之类的,但是自动生产、光环全部丢失,直到玩家切换战术。 第三个BUG:新单位仍然会继承旧单位所携带资源数值,例如你用猎物转换成木材箱,木材箱不能收集木材,只能收集食物。 <Effect type ='TransformUnit' toprotoid ='A' fromprotoid ='C'></Effect> 单位A开启建造建造建筑能力 <Effect type ='Data' action ='Build' amount ='1.0' subtype ='ActionEnable' relativity ='Absolute'> <Target type ='ProtoUnit'>A</Target></Effect> 让A可以训练B(若没有建造能力的A建造建筑,需“开启单位建造能力”。另外你必须先启用B,否则你用这个语句没有任何作用。) 不知道什么是“必须先启用B”?真是拿你没办法。请点击此处。 <Effect type ='Data' amount ='1.0' subtype ='AddTrain' unittype ='B' relativity ='Absolute'> <Target type ='ProtoUnit'>A</Target></Effect> 开启A单位建造能力(Build可替换为其它能力,如Spawn自动生产,具体名称参考单位tactics文件。) <Effect type ='Data' action ='Build' amount ='1.0' subtype ='ActionEnable' relativity ='Absolute'> <Target type ='ProtoUnit'>A</Target></Effect> 单位开启单位战术、光环,(Actionname为Tactics的定义) <Effect type ='Data' action ='Actionname' amount ='1.0' subtype ='ActionEnable' relativity ='Absolute'> <Target type ='ProtoUnit'>Protoname</Target></Effect> 激活一次战术(例如中国难民卡片,用的就是这个语句,Actionname为Tactics的定义) <Effect type ='Data' action ='Actionname' amount ='1.00' subtype ='ActionAdd' unittype ='Protoname' relativity ='Absolute'> <Target type ='Player'></Target></Effect> 单位开启战术按钮(例如有的单位要运送卡片才能拥有隐匿战术,Tacticsname为Tactics定义的战术名,Unittype为单位标签或单位调用名) <Effect type ='Data' amount ='1.00' tactic ='Tacticsname' subtype ='TacticEnable' relativity ='Absolute'> <Target type ='ProtoUnit'>Unittype</Target></Effect> 运送X数量的单位 <Effect type ='Data' amount ='X' subtype ='FreeHomeCityUnit' unittype ='Protoname' relativity ='Absolute'> <Target type ='Player'></Target></Effect> 运送X数量的A(X<0时,开局30分钟内每过[2÷(X的绝对值)]分钟即可运送一单位的A。) <Effect type ='Data' amount ='X' subtype ='FreeHomeCityUnit' unittype ='A' relativity ='Absolute'> <Target type ='Player'></Target></Effect> 运送1单位的A,里面有3单位的F <Effect type ='Data2' amount ='1.00' amount2 ='3.00' subtype ='FreeHomeCityUnitShipped' unittype ='A' unittype2 ='F' relativity ='Absolute'> <Target type ='Player'></Target></Effect> 当然,运送多个单位也是可以的,例如运送3只船,每只船里面有50个单位 <Effect type ='Data2' amount ='3.00' amount2 ='50.00' subtype ='FreeHomeCityUnitShipped' unittype ='xpIronclad' unittype2 ='xpColonialMilitia' relativity ='Absolute'> <Target type ='Player'></Target></Effect> 某科技在Obtainable或active状态下才会运送单位 <Effect tech="Techname" type="Data" amount="2.00" subtype="FreeHomeCityUnitIfTechObtainable" unittype="YPCastleWagon" relativity="Absolute"> <Target type="Player"/></Effect> 疑似随机运送单位,我设定10数量,有多次出现10、8个、9个,有时候也会出现7个、6个、5个。 <Effect type="Data" amount="10.00" subtype="FreeHomeCityMerc" unittype="ypMercIronTroop" relativity="Absolute"> <Target type="Player"/></Effect> 改变单位可驻守人数 <Effect type ='Data' amount ='50' subtype ='MaximumContained' relativity ='Assign'> <Target type ='ProtoUnit'>Protoname</Target></Effect> </Effects> </Tech>