Powers.xml

技能释放前转动的圆圈

		<rangeindicatorprotoid radius="X.0" indicatorcount="Y" speed="Z">Protoname</rangeindicatorprotoid>
radius="X.0"为圆圈半径;	indicatorcount="Y"为单位数量;	speed="Z"为转动速度;	Protoname为单位调用名。
一般技能半径为10,数量16个PowerRanger,转动速度为0.6。
		<rangeindicatorprotoid radius="10.0" indicatorcount="16" speed="0.6">PowerRanger</rangeindicatorprotoid>








释放技能设定

		<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为无限。








技能释放后播放音效

		<startsoundset>soundsetname(soundsety.xml)</startsoundset>
技能使用后出现的音效,自行参考soundsety.xml。
		如果需要更详细的设定,建议使用以下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" 所有玩家(不包括自己)都能听到这个音效
 listenertype="Caster" 只有自己能听到这个音效
 listenertype="All" 所有玩家(包括自己)都能听到这个音效
 playdelay="1.0" 播放该音效的延迟时间(秒)
 loop="1" 循环播放音效
 positional="1" 仅在技能释放范围能听到音效








将背景音乐改变为battlemusic

<playsbattlemusic/> 释放技能后将背景音乐改成战斗音乐。(攻击敌人城镇、贸易站那种)








以下部分为技能模板。


被动技能:

	<power name="ypPowerShrineAura" type="UnitAction">
技能调用名
		<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"放置单位
		<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"为告密者技能专属设定,玩家分数那里会显示图标。
		<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.xml的设定是一样的: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"将军效果
		<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">
技能调用名
		<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>
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">
技能调用名
		<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",全屏回血
		<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"
		<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":转换单位
		<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" 修改单位属性
		<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>