sqr/equipment/ap

这是纹章装备的nut文件的文件夹路径,首先进入这个路径.我的PVF有这些纹章的nut文件.

我们以100000106这个文件为例

function sq_AddFunctionName(appendage)
{
	appendage.sq_AddFunctionName("onStart", "onStart_appendage_100000106")
	appendage.sq_AddFunctionName("onEnd", "onEnd_appendage_100000106")
}

function onStart_appendage_100000106(appendage)
{
	if (!appendage) return;
	local obj = appendage.getParent();
	if (!obj)
	{
		appendage.setValid(false);
		return;
	}
	
	local spectrumAppendage = appendage.sq_GetOcularSpectrum("ocularSpectrum");
	
	if(!spectrumAppendage)
	{
		spectrumAppendage = appendage.sq_AddOcularSpectrum("ocularSpectrum", obj, obj, 100);
	}
	sq_SetParameterOcularSpectrum(spectrumAppendage, 100, 50, true, sq_RGBA(0, 255, 255, 155), sq_RGBA(0, 255, 255, 0), 2, 2, 2);
	sq_SetParameterOcularSpectrum(spectrumAppendage, 100, 50, true, sq_RGBA(0, 255, 255, 155), sq_RGBA(0, 255, 255, 0), 2, 0, 1);
	
	local physicalAttack = 125;
	local physicalDefense = 125;
	local magicalAttack = 125;
	local magicalDefense = 125;
	local equipmentphysicalAttack = 85;
	local equipmentmagicalAttack = 85;
	local equipmentphysicalgenuine = 85;
	local equipmentmagicalgenuine = 85;
	local attackall = 15;
	local physicalrate = 10;
	local magicaltate = 10;
	local stuck = -9;
	local cooltime = -0.1;

	local change_appendage = appendage.sq_getChangeStatus("100000106");

	if (!change_appendage)
	{
		change_appendage = appendage.sq_AddChangeStatus("100000106", obj, obj, 0, 37, false, physicalAttack);
	}
	if (change_appendage)
	{
		change_appendage.clearParameter();
		change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_ATTACK, false, physicalAttack.tofloat());
		change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_DEFENSE, false, physicalDefense.tofloat());
		change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_ATTACK, false, magicalAttack.tofloat());
		change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_DEFENSE, false, magicalDefense.tofloat());
		change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_PHYSICAL_ATTACK, false, equipmentphysicalAttack.tofloat());
		change_appendage.addParameter(CHANGE_STATUS_TYPE_EQUIPMENT_MAGICAL_ATTACK, false, equipmentmagicalAttack.tofloat());
		change_appendage.addParameter(CHANGE_STATUS_TYPE_ADDITIONAL_PHYSICAL_GENUINE_ATTACK, false, equipmentphysicalgenuine.tofloat());
		change_appendage.addParameter(CHANGE_STATUS_TYPE_ADDITIONAL_MAGICAL_GENUINE_ATTACK, false, equipmentmagicalgenuine.tofloat());
		change_appendage.addParameter(CHANGE_STATUS_TYPE_ELEMENT_ATTACK_ALL, false, attackall.tofloat());
		change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_CRITICAL_DAMAGE_RATE, false, physicalrate.tofloat());
		change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_CRITICAL_DAMAGE_RATE, false, magicaltate.tofloat());
		change_appendage.addParameter(CHANGE_STATUS_TYPE_STUCK, false, stuck.tofloat());
		change_appendage.addParameter(CHANGE_STATUS_TYPE_COOLTIME_DECLINE, false, cooltime.tofloat());
	}
}

function onEnd_appendage_100000106(appendage)
{
	if (!appendage) return;

	local obj = appendage.getParent();

	local spectrumAppendage = appendage.sq_GetOcularSpectrum("ocularSpectrum");
	if (spectrumAppendage)
	{
		spectrumAppendage.endCreateSpectrum();
	}
}

可以看到38行有一个字段 local cooltime = -0.1; 很明显cooltime是减CD,这里设置的是-10%的CD.

另外61行,可以看到 change_appendage.addParameter(CHANGE_STATUS_TYPE_COOLTIME_DECLINE, false, cooltime.tofloat());

这边是加载这个减CD的属性,只需要修改这两处,就能给纹章增加这个减CD的属性

当然,需要记得在装备描述内加入这个此条的文字描述,要不然属性能生效,但是道具说明内看不到这条属性

同理,我们可以加入增加伤害的属性,例如 额外暴击伤害 +20%

local physicalrate = 20;

local magicaltate = 20;

需要加入以上这两条属性,然后在下方加入

change_appendage.addParameter(CHANGE_STATUS_TYPE_PHYSICAL_CRITICAL_DAMAGE_RATE, false, physicalrate.tofloat());

change_appendage.addParameter(CHANGE_STATUS_TYPE_MAGICAL_CRITICAL_DAMAGE_RATE, false, magicaltate.tofloat());

为什么是两条,一条是魔法爆伤,一条是物理爆伤,是分开计算的.

还可以加入其他属性,也可以DIY加入你想要的属性

ps:nut文件中有两处100000106,这是消耗品列表中纹章的代码,也就是说,这个纹章的逻辑是这样的,穿戴了纹章,进图加载属性.