Synced presumably forgotten changes from Summon to SummonMulti effect.

This commit is contained in:
MobiusDevelopment 2022-10-09 21:54:14 +00:00
parent e46fbd724f
commit 41f9321e60
24 changed files with 360 additions and 168 deletions

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}

View File

@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.instance.Servitor;
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.BuffInfo;
@ -53,6 +54,12 @@ public class SummonMulti extends AbstractEffect
_summonPoints = params.getInt("summonPoints", 0);
}
@Override
public EffectType getEffectType()
{
return EffectType.SUMMON;
}
@Override
public boolean isInstant()
{
@ -62,7 +69,7 @@ public class SummonMulti extends AbstractEffect
@Override
public void instant(Creature effector, Creature effected, Skill skill, Item item)
{
if (!effector.isPlayer())
if (!effected.isPlayer())
{
return;
}
@ -72,6 +79,7 @@ public class SummonMulti extends AbstractEffect
{
return;
}
final NpcTemplate template = NpcData.getInstance().getTemplate(_npcId);
final Servitor summon = new Servitor(template, player);
final int consumeItemInterval = (_consumeItemInterval > 0 ? _consumeItemInterval : (template.getRace() != Race.SIEGE_WEAPON ? 240 : 60)) * 1000;
@ -84,21 +92,21 @@ public class SummonMulti extends AbstractEffect
summon.setItemConsume(_consumeItem);
summon.setItemConsumeInterval(consumeItemInterval);
if (summon.getLevel() >= ExperienceData.getInstance().getMaxLevel())
final int maxPetLevel = ExperienceData.getInstance().getMaxPetLevel();
if (summon.getLevel() >= maxPetLevel)
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(ExperienceData.getInstance().getMaxLevel() - 1));
LOGGER.warning(getClass().getSimpleName() + ": (" + summon.getName() + ") NpcID: " + summon.getId() + " has a level above " + ExperienceData.getInstance().getMaxLevel() + ". Please rectify.");
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(maxPetLevel - 1));
}
else
{
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % ExperienceData.getInstance().getMaxLevel()));
summon.getStat().setExp(ExperienceData.getInstance().getExpForLevel(summon.getLevel() % maxPetLevel));
}
// Summons must have their master buffs upon spawn.
for (BuffInfo effect : player.getEffectList().getEffects())
{
final Skill sk = effect.getSkill();
if (!sk.isBad())
if (!sk.isBad() && !sk.isTransformation() && skill.isSharedWithSummon())
{
sk.applyEffects(player, summon, false, effect.getTime());
}
@ -112,7 +120,7 @@ public class SummonMulti extends AbstractEffect
player.addServitor(summon);
summon.setShowSummonAnimation(true);
summon.setRunning();
summon.spawnMe();
summon.setRunning();
}
}