Добрый день.
Сборка: aCis
Хроники: Interlude
Не работает эффект Signet (скилы данного эффекта: Symbol of Defence/Resistance/Assasin и т.д.)
При использовании способности, спавнится купол, которой по идее, должен накладывать на союзников положительный эффект.
В моём случае, купол спавнится и ничего не делает. Перебробовал все, от пириписки кода эффекта но наглого копипаста с других работающих ресурсов, результат - 0.
Я прошу подсказку, по какой причине купол не накладывает эффект на персонажа.
Собственно - сам код EffectSignet
package net.sf.l2j.gameserver.skills.effects;
import javolution.util.FastList;
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.model.L2Effect;
import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.model.actor.L2Character;
import net.sf.l2j.gameserver.model.actor.instance.L2EffectPointInstance;
import net.sf.l2j.gameserver.network.SystemMessageId;
import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse;
import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
import net.sf.l2j.gameserver.skills.Env;
import net.sf.l2j.gameserver.skills.l2skills.L2SkillSignet;
import net.sf.l2j.gameserver.skills.l2skills.L2SkillSignetCasttime;
import net.sf.l2j.gameserver.templates.skills.L2EffectType;
/**
* @authors Forsaiken, Sami
*/
public class EffectSignet extends L2Effect
{
private L2Skill _skill;
private L2EffectPointInstance _actor;
public EffectSignet(Env env, EffectTemplate template)
{
super(env, template);
}
@Override
public L2EffectType getEffectType()
{
return L2EffectType.SIGNET_EFFECT;
}
@Override
public boolean onStart()
{
if(getSkill() instanceof L2SkillSignet)
{
_skill = SkillTable.getInstance().getInfo(((L2SkillSignet) getSkill()).effectId, getLevel());
}
else if(getSkill() instanceof L2SkillSignetCasttime)
{
_skill = SkillTable.getInstance().getInfo(((L2SkillSignetCasttime) getSkill()).effectId, getLevel());
}
_actor = (L2EffectPointInstance) getEffected();
return true;
}
@Override
public boolean onActionTime()
{
//if (getCount() == getTotalCount() - 1) return true; // do nothing first time
if(_skill == null)
return true;
int mpConsume = _skill.getMpConsume();
if(mpConsume > getEffector().getStatus().getCurrentMp())
{
getEffector().sendPacket(SystemMessage.getSystemMessage(SystemMessageId.SKILL_REMOVED_DUE_LACK_MP));
return false;
}
getEffector().reduceCurrentMp(mpConsume);
for(L2Character cha : _actor.getKnownList().getKnownCharactersInRadius(getSkill().getSkillRadius()))
{
if(cha == null)
{
continue;
}
_skill.getEffects(_actor, cha);
// there doesn't seem to be a visible effect with MagicSkillLaunched packet...
_actor.broadcastPacket(new MagicSkillUse(_actor, cha, _skill.getId(), _skill.getLevel(), 0, 0));
}
return true;
}
@Override
public void onExit()
{
if(_actor != null)
{
_actor.deleteMe();
}
}
}
Скилл в .xml
<skill id="454" levels="1" name="Symbol of Defense">
<set name="target" val="TARGET_SELF" />
<set name="skillType" val="SIGNET" />
<set name="operateType" val="OP_ACTIVE" />
<set name="hitTime" val="5000" />
<set name="staticHitTime" val="true" />
<set name="reuseDelay" val="1800000" />
<set name="staticReuse" val="true" />
<set name="skillRadius" val="180" />
<set name="magicLvl" val="80" />
<set name="effectNpcId" val="13018" />
<set name="effectId" val="5123" />
<set name="power" val="200" />
<set name="mpInitialConsume" val="36" />
<set name="mpConsume" val="44" />
<for>
<effect count="24" name="Signet" time="5" val="0" />
</for>
</skill>
Скил который должен юзать купол (.xml):
<skill id="5123" levels="1" name="Maximum Defense">
<set name="magicLvl" val="80" />
<set name="target" val="TARGET_ONE" />
<set name="skillType" val="CONT" />
<set name="operateType" val="OP_ACTIVE" />
<for>
<effect name="Buff" time="7" val="0" stackOrder="1" stackType="combination">
<add order="0x40" stat="pDef" val="1000" />
<add order="0x40" stat="mDef" val="800" />
<sub order="0x40" stat="cancelVuln" val="80" />
</effect>
</for>
</skill>
Спасибо.