- Хроники
- Prelude
- Исходники
- Присутствуют
- Сборка
- L2jmobius Essence
I have a skill to configure, after dealing damage it gathers all the mobs around...
I'm partial to the "PullBack" code
But pullback pulls mobs in front of your character.
How do I make the pullback not pull the mobs in front of the character, but rather bring them together?
skill "Spiral Shot"
What should I change in this handler for this to happen?
I'm partial to the "PullBack" code
But pullback pulls mobs in front of your character.
How do I make the pullback not pull the mobs in front of the character, but rather bring them together?
skill "Spiral Shot"
What should I change in this handler for this to happen?
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками Вход или Регистрация>.
*/
package handlers.effecthandlers;
import org.l2jmobius.gameserver.enums.FlyType;
import org.l2jmobius.gameserver.geoengine.GeoEngine;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.Skill;
import org.l2jmobius.gameserver.model.stats.Formulas;
import org.l2jmobius.gameserver.network.serverpackets.FlyToLocation;
import org.l2jmobius.gameserver.network.serverpackets.ValidateLocation;
/**
* An effect that pulls effected target back to the effector.
* @author Nik
*/
public class Pull extends AbstractEffect
{
private final int _speed;
private final int _delay;
private final int _animationSpeed;
private final FlyType _type;
public Pull(StatSet params)
{
_speed = params.getInt("speed", 0);
_delay = params.getInt("delay", _speed);
_animationSpeed = params.getInt("animationSpeed", 0);
_type = params.getEnum("type", FlyType.class, FlyType.WARP_FORWARD); // type 9
}
@Override
public boolean calcSuccess(Creature effector, Creature effected, Skill skill)
{
return Formulas.calcProbability(100, effector, effected, skill);
}
@Override
public boolean isInstant()
{
return true;
}
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
// Prevent pulling raids and town NPCs.
if ((effected == null) || effected.isRaid() || (effected.isNpc() && !effected.isAttackable()))
{
return;
}
// Prevent pulling debuff blocked characters.
if ((effected.isDebuffBlocked()))
{
return;
}
// In retail, you get debuff, but you are not even moved if there is obstacle. You are still disabled from using skills and moving though.
if (GeoEngine.getInstance().canMoveToTarget(effected.getX(), effected.getY(), effected.getZ(), effector.getX(), effector.getY(), effector.getZ(), effected.getInstanceWorld()))
{
effected.broadcastPacket(new FlyToLocation(effected, effector, _type, _speed, _delay, _animationSpeed));
effected.setXYZ(effector.getX(), effector.getY(), GeoEngine.getInstance().getHeight(effector.getX(), effector.getY(), effector.getZ()) + 10);
effected.broadcastPacket(new ValidateLocation(effected), false);
effected.revalidateZone(true);
}
}
}