Powers.xml-制作帝国时代3技能







部分语句作用


		<placement forceonmap="1" enemy="" allowgaia="">full</placement>
在视野内可凭空释放技能。
		<placement forceonmap="1" enemy="" allowgaia="">unit</placement>
只能对单位释放
		<placement forceonmap="1">LOSDontCare</placement>
无视视野,可凭空释放技能。



技能的对象玩家,在type="UnitModify"type="swapunit"使用。

		<powerplayerrelation>all</powerplayerrelation>
所有玩家与大自然
		<powerplayerrelation>player</powerplayerrelation>
当前玩家
		<powerplayerrelation>ally</powerplayerrelation>
当前玩家与盟友
		<powerplayerrelation>Enemy</powerplayerrelation>
大自然与敌人
除了all,我还尝试了none、allowgaia、forceonmap、gaiaOnly、EnemyNotGaia、Self、Any,都是指向所有玩家与大自然,又或者说没有这些定义,然后作用对象默认为所有玩家与大自然。




发送地图警示,如下图所示,地图有一个黑色闪烁的小方框。


<minimapeventtime sendalertto="none">1</minimapeventtime>
不发送

<minimapeventtime sendalertto="player">1</minimapeventtime>
给当前玩家发送

<minimapeventtime sendalertto="ally">1</minimapeventtime>
给当前玩家于盟友发送

<minimapeventtime sendalertto="Enemy">1</minimapeventtime>
给敌人(与大自然)发送

<minimapeventtime sendalertto="all">1</minimapeventtime>
给所有玩家发送






<activetime>X</activetime>为技能作用时间,改成-1为无限。






3.5版本:<soundset></soundset>设定释放技能音效并不是无属性标签,添加某些属性可以创造出不同效果,如下:
<soundset type="XXXXX" listenertype="XXXXXXX" playdelay="1.0" loop="1" positional="1" >soundsetname(soundsety.xml)</soundset>
 type="StartSound" 技能释放后播放音效
 type="ExistSound" 技能释放后直到技能结束前都会不停播放音效(类似卡车那种噪音),建议与loop="1" positional="1"一起使用。
 type="EndSound" 技能释放结束后持续播放音效
 listenertype="IfOnScreenAllExceptCaster" 如果屏幕在释放范围内,所有玩家(不包括自己)都能听到这个音效
 listenertype="IfOnScreenAlly" 如果屏幕在释放范围内,盟友(不包括自己)都能听到这个音效
 listenertype="IfOnScreenEnemy" 如果屏幕在释放范围内,敌军都能听到这个音效
 listenertype="IfOnScreenCaster" 如果屏幕在释放范围内,只有自己能听到这个音效
 listenertype="IfOnScreenAll" 如果屏幕在释放范围内,所有玩家(包括自己)都能听到这个音效
 listenertype="AllExceptCaster" 所有玩家(不包括自己)都能听到这个音效
 playdelay="1.0" 播放该音效的延迟时间(秒)
 loop="1" 循环播放音效
 positional="1" 仅在技能释放范围能听到音效



<playsbattlemusic/>从字面上就可以看出,播放战斗音乐。(攻击敌人城镇、贸易站那种)




下面的为部分技能的模板:





被动技能:

	<power name="ypPowerShrineAura" type="UnitAction">
技能调用名
	<power name="PowerName" type="UnitAction">
<displaynameid>StringID</displaynameid>
<rolloverid>StringID</rolloverid>
<icon>art\</icon>
<allowduringnorush>1</allowduringnorush>
</power>
		<displaynameid>70309</displaynameid>
技能名称
		<rolloverid>70310</rolloverid>
技能介绍
		<icon>art\ui\techs\asians\tech_toshogu_passive_ability</icon>
技能图标
		<allowduringnorush>1</allowduringnorush>
允许在条约局使用,不过这个有什么意义呢?被动技能只是一个摆设而已。
	</power>
	<power name="ypUnitElephantSpeed" type="UnitAction">
		<displaynameid>70135</displaynameid>
		<rolloverid>70136</rolloverid>
		<icon>art\ui\techs\asians\tech_passive_terror_charge_icon_64</icon>
		<allowduringnorush>1</allowduringnorush>
	</power>
省略其他被动技能。
类似上面的语句都是被动技能,全部都只是摆设,除了中国和尚教化、日本和尚闪躲、日本奇观被动技能效果在主程序定义,其他都是在tactics定义的。 【在主程序定义的效果不能修改】







主动技能:放置单位

	<power name="Powername" type="TempUnit">
技能调用名,type="TempUnit"放置单位

<power name="Powername" type="TempUnit">
<displaynameid>StringID</displaynameid>
<rolloverid>StringID</rolloverid>
<icon>art\</icon>
<minimapeventtime sendalertto="ally">1</minimapeventtime>
<activetime>-1</activetime>
<createunit quantity="X" radius="X" delay="0.0">Protoname</createunit>
<placement forceonmap="1">LOSDontCare</placement>
<startsoundset>PowerIceCream</startsoundset>
<rangeindicatorprotoid radius="12.0" indicatorcount="16" speed="0.6">PowerRanger</rangeindicatorprotoid>
<allowduringnorush>1</allowduringnorush>
<alwaysaddtoplayer>1</alwaysaddtoplayer>
</power>
		<displaynameid>StringID</displaynameid>
技能名称
		<rolloverid>StringID</rolloverid>
技能结束
		<icon>art\</icon>
技能图标
		<minimapeventtime sendalertto="ally">1</minimapeventtime>
给自己与盟友发送地图警示。
		<activetime>-1</activetime>
单位存活时间,-1为无限
		<createunit quantity="X" radius="X" delay="0.0">Protoname</createunit>
放置单位,quantity数量,radius半径,delay延迟时间(秒)
		<placement forceonmap="1">LOSDontCare</placement>
无视视野,可凭空释放技能
		<startsoundset>PowerIceCream</startsoundset>
技能使用后出现的声音。soundsety.xml
		<rangeindicatorprotoid radius="12.0" indicatorcount="16" speed="0.6">PowerRanger</rangeindicatorprotoid>
技能释放前转动的圆圈
		<allowduringnorush>1</allowduringnorush>
允许在条约局使用
		<alwaysaddtoplayer>1</alwaysaddtoplayer>
作用不明
	</power>






科技效果技能

	<power name="Powername" type="Informers">
技能调用名,type="Informers"为告密者技能专属设定,玩家分数那里会显示图标。

<power name="Powername" type="Informers">
<displaynameid>SrtingID</displaynameid>
<rolloverid>SrtingID</rolloverid>
<icon>art\ui\abilities\ability_informers</icon>
<activetime>60</activetime>
<effect type="SharedLOS">
<target type="General"/>
</effect>
<placement forceonmap="1" ally="">full</placement>
<allowduringnorush>1</allowduringnorush>
<startsoundset>PowerInformers</startsoundset>
</power>
		<displaynameid>SrtingID</displaynameid>
技能名称
		<rolloverid>SrtingID</rolloverid>
技能介绍
		<icon>art\ui\abilities\ability_informers</icon>
技能图标
		<activetime>60</activetime>
持续时间
		<effect type="SharedLOS">
			<target type="General"/>
获得敌人视野,只能type="Informers"使用。
		</effect>
		<placement forceonmap="1" ally="">full</placement>
在视野内可凭空释放技能。
		<allowduringnorush>1</allowduringnorush>
允许在条约局使用
		<startsoundset>PowerInformers</startsoundset>
技能使用后出现的声音(soundsety设定的wav语音。)技能使用后出现的声音(soundsety设定的wav语音。)
	</power>
分割线

relativity=""与techtreey的设定是一样的:

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.。
分割线
	<power name="PowerTest" type="GeneralEffect">
type="GeneralEffect"将军效果

<power name="PowerTest" type="GeneralEffect">
<displaynameid>StringID</displaynameid>
<rolloverid>StringID</rolloverid>
<icon>art\</icon>
<minimapeventtime sendalertto="none">1</minimapeventtime>
<activetime>60</activetime>
</power>
		<displaynameid>StringID</displaynameid>
技能名称
		<rolloverid>StringID</rolloverid>
技能介绍
		<icon>art\</icon>
技能图标
		<minimapeventtime sendalertto="none">1</minimapeventtime>
不发送地图警示。
		<activetime>60</activetime>
持续时间

<effect type="MaximumVelocity" relativity="BasePercent" amount="2.0">
<target type="ProtoUnit">Unittype</target>
</effect>
 
改变移动速度
 

<effect type="HitPoints" relativity="BasePercent" amount="2.0">
<target type="ProtoUnit">Unittype</target>
</effect>
 
改变生命值
 

<effect type="Damage" relativity="BasePercent" amount="2.0">
<target type="ProtoUnit">Unittype</target>
</effect>
 
改变攻击力
 

<effect type="Cost" resource ="ResourceName" relativity="BasePercent" amount="0.5">
<target type="ProtoUnit">Unittype</target>
</effect>
 
改变建造成本
 

<effect type="TrainPoints" relativity="BasePercent" amount="0.5">
<target type="ProtoUnit">Unittype</target>
</effect>
 
改变单位训练时间
 

<effect amount ='10.00' type ='Armor' relativity ='BasePercent'>
<target type="ProtoUnit">Unittype</target>
</effect>
 
改变单位护甲
 

<effect type="ResourceTrickleRate" resource ="ResourceName" relativity="Absolute" amount="X.00">
<target type ='Player'></target>
</effect>
 
获得资源流
 

<effect type="CanTargetButTakesNoDamage">
<target type="ProtoUnit">Unittype</target>
</effect>
 
无敌状态,不会受到任何伤害
 

<effect type="ActionEnable" action=" ActionName ">
<target type="ProtoUnit">Unittype</target>
</effect>
 
开启Tactics战术
 

<effect type="Cost" resource ='Unittype' relativity="BasePercent" amount="0.01">
<target type="techAll"></target>
</effect>
改变所有科技成本,该效果有BUG,例如你设定了0.1倍,使用技能没用效果,当技能结束后,科技成本会变成10倍。

</power>
 






主动技能:攻击技能

	<power name="ypPowername" type="UnitAction">
技能调用名

<power name="ypPowername" type="UnitAction">
<displaynameid>StringID</displaynameid>
<rolloverid>StringID</rolloverid>
<icon>art\</icon>
<minimapeventtime sendalertto="player">1</minimapeventtime>
<activetime>8</activetime>
<radius>5.0</radius>
<placement forceonmap="1" enemy="" allowgaia="">unit</placement>
<abstractattacktargettype>Unittype</abstractattacktargettype>
<explicitlyrestrictedattacktargettype>Unittype</explicitlyrestrictedattacktargettype>
<unitaction>Actionname</unitaction>
</power>
		<displaynameid>StringID</displaynameid>
技能名称
		<rolloverid>StringID</rolloverid>
技能介绍
		<icon>art\</icon>
技能图标
		<minimapeventtime sendalertto="player">1</minimapeventtime>
给当前玩家发送地图警示。
		<activetime>8</activetime>
没用。
		<radius>5.0</radius>
没用+1。
		<placement forceonmap="1" enemy="" allowgaia="">unit</placement>
对单位释放
		<abstractattacktargettype>Unittype</abstractattacktargettype>
可对指定的单位类型使用该技能
		<explicitlyrestrictedattacktargettype>Unittype</explicitlyrestrictedattacktargettype>
不能对指定的单位类型使用该技能
		<unitaction>Actionname</unitaction>
对应Tactics文件的Actionname
	</power>
protoy.xml的定义:

<ProtoAction>
<Name>Actionname</Name>
<Damage>X.000000</Damage>
<DamageType>XXXXX</DamageType>
<ROF>X.000000</ROF>
<DamageCap>X.000000</DamageCap>
<DamageArea>X.000000</DamageArea>
<DamageFlags>GAIAEnemy</DamageFlags>
<DamageBonus type ='Unittype'>X.000000</DamageBonus>
</ProtoAction>
		<ProtoAction>
			<Name>Actionname</Name>
Tactics的Actionname
			<Damage>X.000000</Damage>
攻击力
			<DamageType>XXXXX</DamageType>
伤害类型(Hand、Ranged、Siege)
			<ROF>X.000000</ROF>
攻速
			<DamageCap>X.000000</DamageCap>
范伤害围,溅伤上限
			<DamageArea>X.000000</DamageArea>
伤害范围
			<DamageFlags>GAIAEnemy</DamageFlags>
范围伤害类型(GAIAEnemy、Enemy)
			<DamageBonus type ='Unittype'>X.000000</DamageBonus>
对给定的单位类型X倍伤害。
		</ProtoAction>






主动技能:治疗

	<power name="PowerHeal" type="UnitAction">
技能调用名

<power name="PowerHeal" type="UnitAction">
<displaynameid>StringID</displaynameid>
<rolloverid>StringID</rolloverid>
<icon>art\</icon>
<minimapeventtime sendalertto="player">1</minimapeventtime>
<activetime>8</activetime>
<radius>10.0</radius>
<placement forceonmap="1" ally="">full</placement>
<abstractattacktargettype>LogicalTypeHealed</abstractattacktargettype>
<rangeindicatorprotoid radius="10.0" indicatorcount="8" speed="0.6">PowerRanger</rangeindicatorprotoid>
<unitaction>Heal</unitaction>
<hitpointstoheal>400</hitpointstoheal>
<allowduringnorush>1</allowduringnorush>
</power>
		<displaynameid>StringID</displaynameid>
技能名称
		<rolloverid>StringID</rolloverid>
技能介绍
		<icon>art\</icon>
技能图标
		<minimapeventtime sendalertto="player">1</minimapeventtime>
给自己发送地图警示。
		<activetime>8</activetime>
持续时间
		<radius>10.0</radius>
作用半径范围
		<placement forceonmap="1" ally="">full</placement>
在视野内可凭空释放技能。
		<abstractattacktargettype>LogicalTypeHealed</abstractattacktargettype>
治疗对象
		<rangeindicatorprotoid radius="10.0" indicatorcount="8" speed="0.6">PowerRanger</rangeindicatorprotoid>
技能释放前转动的圆圈
		<unitaction>Heal</unitaction>
对应Tactics的Actionnam【Heal】
		<hitpointstoheal>400</hitpointstoheal>
hitpointstoheal;治疗上限为1000血
		<allowduringnorush>1</allowduringnorush>
允许在条约局使用
	</power>






主动技能:卓越(全屏回血技能)

	<power name="ypPowerGoodFortune" type="GoodFortune">
type="GoodFortune",全屏回血

<power name="ypPowerGoodFortune" type="GoodFortune">
<displaynameid>62772</displaynameid>
<rolloverid>62766</rolloverid>
<icon>art\ui\abilities\ability_good_fortune</icon>
<minimapeventtime sendalertto="none">1</minimapeventtime>
<activetime>20</activetime>
<radius>0.0</radius>
<placement forceonmap="1" ally="">full</placement>
<abstractattacktargettype>LogicalTypeHealed</abstractattacktargettype>
<rangeindicatorprotoid radius="10.0" indicatorcount="8" speed="0.6">PowerRanger</rangeindicatorprotoid>
<unitaction>Heal</unitaction>
<soundset type="StartSound" listenertype="Caster">PowerGoodFortune</soundset>
<hitpointstoheal>1000</hitpointstoheal>
<rate>1000</rate>
<allowduringnorush>1</allowduringnorush>
</power>
		<displaynameid>62772</displaynameid>
技能名称
		<rolloverid>62766</rolloverid>
技能介绍
		<icon>art\ui\abilities\ability_good_fortune</icon>
技能图标
		<minimapeventtime sendalertto="none">1</minimapeventtime>
不发送地图警示。
		<activetime>20</activetime>
治疗作用时间
		<radius>0.0</radius>
radius没有作用
		<placement forceonmap="1" ally="">full</placement>
在视野内可凭空释放技能。
		<abstractattacktargettype>LogicalTypeHealed</abstractattacktargettype>
治疗对象--单位标签
		<rangeindicatorprotoid radius="10.0" indicatorcount="8" speed="0.6">PowerRanger</rangeindicatorprotoid>
技能释放前转动的圆圈
		<unitaction>Heal</unitaction>
没用,天坛根本没有tactics
		<soundset type="StartSound" listenertype="Caster">PowerGoodFortune</soundset>
soundsety设定的wav语音。
		<hitpointstoheal>1000</hitpointstoheal>
hitpointstoheal;治疗上限为1000血
		<rate>1000</rate>
治疗速度
		<allowduringnorush>1</allowduringnorush>
允许在条约局使用
	</power>






主动技能:停战(停战等同于条约)

	<power name="ypPowerCeaseFire" type="CeaseFire">
停战,停战效果写在主程序了。调用方法为使用type="CeaseFire"

<power name="ypPowerCeaseFire" type="CeaseFire">
<displaynameid>62771</displaynameid>
<rolloverid>62765</rolloverid>
<icon>art\ui\abilities\ability_ceasefire</icon>
<minimapeventtime sendalertto="none">1</minimapeventtime>
<activetime>20</activetime>
<placement forceonmap="1" ally="">full</placement>
<soundset type="StartSound" listenertype="All">PowerCeaseFire</soundset>
</power>
		<displaynameid>62771</displaynameid>
技能名称
		<rolloverid>62765</rolloverid>
技能介绍
		<icon>art\ui\abilities\ability_ceasefire</icon>
技能图标
		<minimapeventtime sendalertto="none">1</minimapeventtime>
不发送地图警示。
		<activetime>20</activetime>
停战时间
		<placement forceonmap="1" ally="">full</placement>
在视野内可凭空释放技能。
		<soundset type="StartSound" listenertype="All">PowerCeaseFire</soundset>
soundsety设定的wav语音。(soundsety设定的wav语音。)
	</power>






主动技能:转换单位

	<power name="PowerConvert" type="swapunit">
技能调用名,type="swapunit":转换单位

<power name="PowerConvert" type="swapunit">
<displaynameid>StringID</displaynameid>
<rolloverid>StringID</rolloverid>
<icon>art\</icon>
<minimapeventtime sendalertto="player">1</minimapeventtime>
<activetime>0</activetime>
<radius>10.0</radius>
<placement forceonmap="1" enemy="" allowgaia="">full</placement>
<abstracttype swapto="ToProtoname">FromUnittype</abstracttype>
<abstracttype swapto="Protoname">Unittype</abstracttype>
<abstracttype swapto="Protoname">Unittype</abstracttype>
<swapdelay>0.0</swapdelay>
<allowduringnorush>1</allowduringnorush>
<powerplayerrelation>XXXX</powerplayerrelation>
<sfx>Protoname</sfx>
<retainhitpointratio/>
<ConvertUsingMinMax minswapamount="5" maxswapamount="7"/>
<SwapUsingMinMax minswapamount="5" maxswapamount="7"/>
</power>
		<displaynameid>StringID</displaynameid>
技能名称
		<rolloverid>StringID</rolloverid>
技能介绍
		<icon>art\</icon>
技能图标
		<minimapeventtime sendalertto="player">1</minimapeventtime>
给自己发送地图警示。
		<activetime>0</activetime>
技能作用时间,到设定时间后,会立即转换单位(与swapdelay效果一样)
		<radius>10.0</radius>
作用半径
		<placement forceonmap="1" enemy="" allowgaia="">full</placement>
在视野内可凭空释放技能。
		<abstracttype swapto="ToProtoname">FromUnittype</abstracttype>
FromUnittype:被转换的单位标签;ToProtoname:转换后的单位调用名
		<abstracttype swapto="Protoname">Unittype</abstracttype>
同上
		<abstracttype swapto="Protoname">Unittype</abstracttype>
可自行添加,每一句都会有效果
		<swapdelay>0.0</swapdelay>
转换延迟时间,到设定时间才会被转换。
		<allowduringnorush>1</allowduringnorush>
允许在条约局使用
		<powerplayerrelation>XXXX</powerplayerrelation>
技能的对象玩家
		<sfx>Protoname</sfx>
会在转换东西生成一个0血单位,可以用来制作粒子特效
		<retainhitpointratio/>
转换后保留原有生命值。没有任何属性,如果想重置新单位的生命值,你只能删掉这句。
		<ConvertUsingMinMax minswapamount="5" maxswapamount="7"/>
<SwapUsingMinMax minswapamount="5" maxswapamount="7"/>
最小、最大转换限制(我不知道是哪个语句生效,你自己测试吧,或者两个都加上去)
	</power>






主动技能:修改单位属性

	<power name="Powername" type="UnitModify">
技能调用名,type="UnitModify" 修改单位属性

<power name="Powername" type="UnitModify">
<displaynameid>StringID</displaynameid>
<rolloverid>StringID</rolloverid>
<icon>art\</icon>
<minimapeventtime sendalertto="player">1</minimapeventtime>
<activetime>60</activetime>
<unitmodify amount="X.0" apply="multiply">MaxHP</unitmodify>
<unitmodify amount="X.0" apply="multiply">Damage</unitmodify>
<unitmodify amount="X.0" apply="multiply">Speed</unitmodify>
<unitmodify amount="X.0" apply="multiply">LOS</unitmodify>
<unitmodify amount="X.0" apply="multiply">Bounty</unitmodify>
<unitmodify amount="X.0" apply="multiply">GatherRate</unitmodify>
<unitmodify amount="X.0" apply="multiply">AutoGatherRate</unitmodify>
<powerplayerrelation>XXXX</powerplayerrelation>
<radius>10.0</radius>
<abstractattacktargettype>Unittype</abstractattacktargettype>
<placement forceonmap="1">full</placement>
<rangeindicatorprotoid radius="10.0" indicatorcount="16" speed="0.6">PowerRanger</rangeindicatorprotoid>
</power>
		<displaynameid>StringID</displaynameid>
技能名称
		<rolloverid>StringID</rolloverid>
技能介绍
		<icon>art\</icon>
技能图标
		<minimapeventtime sendalertto="player">1</minimapeventtime>
给自己发送地图警示。
		<activetime>60</activetime>
技能持续时间
		<unitmodify amount="X.0" apply="multiply">MaxHP</unitmodify>
X倍最大生命值
		<unitmodify amount="X.0" apply="multiply">Damage</unitmodify>
X倍攻击力
		<unitmodify amount="X.0" apply="multiply">Speed</unitmodify>
X倍速度
		<unitmodify amount="X.0" apply="multiply">LOS</unitmodify>
X倍视野(有BUG,被改变的视野无法复原)
		<unitmodify amount="X.0" apply="multiply">Bounty</unitmodify>
X倍杀伤经验值
		<unitmodify amount="X.0" apply="multiply">GatherRate</unitmodify>
X倍采集效率
		<unitmodify amount="X.0" apply="multiply">AutoGatherRate</unitmodify>
X倍自动采集(茶叶)效率
		<powerplayerrelation>XXXX</powerplayerrelation>
技能的对象玩家
		<radius>10.0</radius>
作用半径
		<abstractattacktargettype>Unittype</abstractattacktargettype>
作用单位类型
		<placement forceonmap="1">full</placement>
在视野内可凭空释放技能。
		<rangeindicatorprotoid radius="10.0" indicatorcount="16" speed="0.6">PowerRanger</rangeindicatorprotoid>
技能释放前转动的圆圈
	</power>

3.5版本补充:

apply="multiply"可以修改成add或set。
multiply计算倍数。
add在现有基础上增加。例如增加5速度:<unitmodify amount="5.0" apply="add">Speed</unitmodify>

set变成设定值。例如最大生命值设定为1000(大于1000生命值也会被强制降到1000):<unitmodify amount="1000.0" apply="set">MaxHP</unitmodify>