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