собсно пробуйте, у меня это реализовано с помощью типа таргета
PHP код:
case TARGET_FRIEND:
{
if(activeChar.isMonster() || activeChar.isSiegeGuard())
{
targets.add(activeChar);
for(Creature c : World.getAroundCharacters(activeChar, _skillRadius, 900))
{
if(!c.isDead() && (c.isMonster() || c.isSiegeGuard()))
targets.add(c);
}
break;
}
Player player = activeChar.getPlayer();
for(Player target : World.getAroundPlayers(player, _skillRadius, 600))
{
boolean check = false;
if(check = player.getParty() != null && (player.getParty() == target.getParty()
|| player.getClanId() != 0 && target.getClanId() == player.getClanId()
|| player.getAllyId() != 0 && target.getAllyId() == player.getAllyId()))
check = true;
if(target == player)
continue;
if(!check)
continue;
if(checkTarget(player, target, aimingTarget, forceUse, false) != null)
continue;
addTargetAndPetToList(targets, player, target);
}
addTargetAndPetToList(targets, player, player);
break;
}
PHP код:
private void addTargetAndPetToList(List<Creature> targets, Player actor, Player target)
{
if((actor == target || actor.isInRange(target, _skillRadius)) && target.isDead() == _isCorpse)
targets.add(target);
Summon pet = target.getPet();
if(pet != null && actor.isInRange(pet, _skillRadius) && pet.isDead() == _isCorpse)
targets.add(pet);
}
По второму скилу(не знаю как на овере, беру пример с лыжи. адаптировать думаю будет не проблема):
Сам эффект:
PHP код:
public final class BlockResurrection extends AbstractEffect
{
public BlockResurrection(Condition attachCond, Condition applyCond, StatsSet set, StatsSet params)
{
super(attachCond, applyCond, set, params);
}
@Override
public int getEffectFlags()
{
return EffectFlag.BLOCK_RESURRECTION.getMask();
}
}
EffectFlag.BLOCK_RESURRECTION
PHP код:
public enum EffectFlag
{
NONE,
CHARM_OF_COURAGE,
CHARM_OF_LUCK,
PHOENIX_BLESSING,
NOBLESS_BLESSING,
SILENT_MOVE,
PROTECTION_BLESSING,
RELAXING,
FEAR,
CONFUSED,
MUTED,
PSYCHICAL_MUTED,
PSYCHICAL_ATTACK_MUTED,
DISARMED,
ROOTED,
SLEEP,
STUNNED,
BETRAYED,
INVUL,
PARALYZED,
[COLOR="Red"]BLOCK_RESURRECTION[/COLOR],
SERVITOR_SHARE;
public int getMask()
{
return 1 << ordinal();
}
}
L2Character функция beginCast добавить:
После:
PHP код:
if (skill.hasEffectType(L2EffectType.RESURRECTION))
{
это
PHP код:
if (isResurrectionBlocked() || target.isResurrectionBlocked())
{
sendPacket(SystemMessageId.REJECT_RESURRECTION); // Reject resurrection
target.sendPacket(SystemMessageId.REJECT_RESURRECTION);
функция isResurrectionBlocked
PHP код:
public boolean isResurrectionBlocked()
{
return isAffected(EffectFlag.BLOCK_RESURRECTION);
}
Добавить в енум AbnormalTypes
PHP код:
BLOCK_RESURRECTION
Поправьте если где-то ошибся