Techtreey.xml:科技效果


注:Unittype为单位标签或单位调用名。Protoname为单位调用名。Techname为科技调用名。Techflag为科技的flag属性。StringID为Stringtabley.xml的5个数字。

部分参考资料:林墓怪人整理的科技资料;在此向林墓怪人的无私奉献表示感谢。

	<Tech name ='Techname' type ='Normal'>
Techname为科技调用名

	<Tech name ='Techname' type ='Normal'>
		<DBID>9999</DBID>
		<DisplayNameID>00001</DisplayNameID>
		<ResearchPoints>30.0000</ResearchPoints>
		<Status>UNOBTAINABLE</Status>
		<Icon>icon\123\456</Icon>
		<Cost resourcetype ='Fame'>100.0000</Cost>
		<HomeCityLevel>40</HomeCityLevel>
		<RolloverTextID>00002</RolloverTextID>
		<Flag>CountsTowardEconomicScore</Flag>
		<Prereqs>
			<TechStatus status ='Active'>Techname</TechStatus>
			<TechStatus status ='Active'>Colonialize</TechStatus>
		</Prereqs>
		<Effects>

		</Effects>
	</Tech>
		<DBID>XXXX</DBID>
DBID应该是没有用的。
		<DisplayNameID>StringID</DisplayNameID>
科技名称(代码)。与stringtabley.xml关联。(去stringtabley.xml搜索这5个数字)
		
		<ResearchPoints>X.0000</ResearchPoints>
科技研发时间,数值越少研发越快;当研发时间小于1时会自动改良。0秒会自动改良,但是你要不要去试一下-1呢?
		
		<Status>UNOBTAINABLE</Status>
该科技的默认状态,有Obtainable、Unobtainable、Active三种;
Obtainable:所有国家都开启该科技。
Unobtainable:所有国家都关闭该科技,需要用其他科技启用该科技。
Active:所有国家开局改良此科技。
		
		<Icon>XXXXXX</Icon>
科技图标文件的路径。
		<Cost resourcetype ='资源'>资源数量</Cost>
研发该科技所需资源数量,有Food、Wood、Gold、Ships、Trade、XP、Fame
		<RolloverTextID>StringID</RolloverTextID>
鼠标移动到科技上的文字介绍(代码),(去stringtabley.xml搜索这5个数字)
		<HomeCityLevel>X</HomeCityLevel>
主城等级达到X级才能显示本科技

		<Flag>XXXXXXXX</Flag>
该科技的基本属性与特殊效果。具体看Flag表格。
这个表格非常重要。
(总是有人问怎样无限研发科技,特意用72号字体标出此表格的重要性)
		<Flag>HomeCity</Flag>
船运(船运实际上也属于特定科技。)
		<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>
隐藏科技
		<Flag>YPAlwaysDisableButtonInGrid</Flag>
关闭该科技按钮,无法点击改良,只能显示。
		<Prereqs>

			到殖民时代才可以改良
			<TechStatus status ='Active'>Colonialize</TechStatus>



			到堡垒时代才可以改良
			<TechStatus status ='Active'>Fortressize</TechStatus>



			到工业时代才可以改良
			<TechStatus status ='Active'>Industrialize</TechStatus>



			到帝王时代才可以改良
			<TechStatus status ='Active'>Imperialize</TechStatus>



			改良某科技可以显示该科技【可以设定n个前提科技,所有前提科技改良后,才能显示该科技】
			<TechStatus status ='Active'>Techname</TechStatus>



			当设定的单位数量>X时开启本科技
			<typecount unit="Protoname" count="X.00" state="noneState aliveState buildingState" operator="lt"/>



			当设定的单位数量=X时开启本科技
			<typecount unit="Protoname" count="X.00" state="noneState aliveState buildingState" operator="gte"/>



			当设定的单位数量<X时开启本科技
			<typecount unit="Protoname" count="X.00" state="noneState aliveState buildingState" operator="gt"/>

		</Prereqs>
		<Effects>

各项科技类容及作用:



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

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

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

BasePercent为可叠加百分比,设定成1.00会在其基础上乘以1,即为不变,值得注意的是BasePercent的百分比加成的叠加计算为原数值*(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可更改为Absolute、Assign、Percent和BasePercent。





		启用科技

			<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>







		改变单位成本(Food食物可替换为Fame、Ships船运、Wood木材、Gold黄金、Trade茶叶和XP经验值。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>






		改变科技的研发成本(资源有Fame、Food食物、Wood木材、Gold黄金、Trade茶叶和XP经验值,下同。因游戏BUG,改变科技成本不能用BasePercent,科技无法增加船运成本,包括支援卡。科技成本为零时无法改变。Techname为科技调用名。)

			<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的资源流

			<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>





 

		改变单位A所能支持的人口数

			<Effect type ='Data' amount ='5.00' subtype ='PopulationCapAddition' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Unittype</Target></Effect>







		改变领事馆旗帜(A为国家调用名,具体参考civs.xml文件)

			<Effect civ ='A' type ='Data' amount ='0.00' subtype ='SetCivRelation' relativity ='Absolute'>
				<Target type ='Player'></Target></Effect>





 

		开启科技B后可运送单位A

			<Effect tech ='B' type ='Data' amount ='1.00' subtype ='FreeHomeCityUnitIfTechObtainable' unittype ='A' relativity ='Absolute'>
				<Target type ='Player'></Target></Effect>





 

		开启单位视野(例如AbstractNugget获取所有宝藏视野)

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





 


		获得敌方视野

			<Effect all ='true' type ='SharedLOS'></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>



		改变单位射程,需要加 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>




 

		获得地图上某类型单位单位视野(Unittype为单位标签或调用名)

			<Effect type ='Data' amount ='1.00' subtype ='RevealLOS' 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开启自动回血(速率为1/s,改成-1是减血,0为不掉血也不减血)

			<Effect type ='Data' amount ='1.00' subtype ='UnitRegenRate' unittype ='A' relativity ='Assign'>
				<Target type ='Player'></Target></Effect>




 

		单位C转化为单位A(包括建筑物。)

			<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 ='A' relativity ='Absolute'>
				<Target type ='ProtoUnit'>B</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>






		改变单位可驻守人数

			<Effect type ='Data' amount ='50' subtype ='MaximumContained' relativity ='Assign'>
				<Target type ='ProtoUnit'>Protoname</Target></Effect>


		</Effects>
	</Tech>
终于重制完成了,其实你从头看到尾都是一个表格来的,包括这句话。