AgathionSkillHolder stores directly skills instead of holders.
This commit is contained in:
@@ -29,7 +29,7 @@ import org.l2jmobius.commons.util.IXmlReader;
|
||||
import org.l2jmobius.gameserver.data.ItemTable;
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import org.l2jmobius.gameserver.model.skill.Skill;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
@@ -69,49 +69,53 @@ public class AgathionData implements IXmlReader
|
||||
|
||||
final int enchant = set.getInt("enchant", 0);
|
||||
|
||||
final Map<Integer, List<SkillHolder>> mainSkills = AGATHION_SKILLS.containsKey(id) ? AGATHION_SKILLS.get(id).getMainSkills() : new HashMap<>();
|
||||
final List<SkillHolder> mainSkillList = new ArrayList<>();
|
||||
final Map<Integer, List<Skill>> mainSkills = AGATHION_SKILLS.containsKey(id) ? AGATHION_SKILLS.get(id).getMainSkills() : new HashMap<>();
|
||||
final List<Skill> mainSkillList = new ArrayList<>();
|
||||
final String main = set.getString("mainSkill", "");
|
||||
for (String skill : main.split(";"))
|
||||
for (String ids : main.split(";"))
|
||||
{
|
||||
if (skill.isEmpty())
|
||||
if (ids.isEmpty())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
final String[] split = skill.split(",");
|
||||
final String[] split = ids.split(",");
|
||||
final int skillId = Integer.parseInt(split[0]);
|
||||
final int level = Integer.parseInt(split[1]);
|
||||
if (SkillData.getInstance().getSkill(skillId, level) == null)
|
||||
|
||||
final Skill skill = SkillData.getInstance().getSkill(skillId, level);
|
||||
if (skill == null)
|
||||
{
|
||||
LOGGER.info(getClass().getSimpleName() + ": Could not find agathion skill id " + skillId + ".");
|
||||
return;
|
||||
}
|
||||
|
||||
mainSkillList.add(new SkillHolder(skillId, level));
|
||||
mainSkillList.add(skill);
|
||||
}
|
||||
mainSkills.put(enchant, mainSkillList);
|
||||
|
||||
final Map<Integer, List<SkillHolder>> subSkills = AGATHION_SKILLS.containsKey(id) ? AGATHION_SKILLS.get(id).getSubSkills() : new HashMap<>();
|
||||
final List<SkillHolder> subSkillList = new ArrayList<>();
|
||||
final Map<Integer, List<Skill>> subSkills = AGATHION_SKILLS.containsKey(id) ? AGATHION_SKILLS.get(id).getSubSkills() : new HashMap<>();
|
||||
final List<Skill> subSkillList = new ArrayList<>();
|
||||
final String sub = set.getString("subSkill", "");
|
||||
for (String skill : sub.split(";"))
|
||||
for (String ids : sub.split(";"))
|
||||
{
|
||||
if (skill.isEmpty())
|
||||
if (ids.isEmpty())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
final String[] split = skill.split(",");
|
||||
final String[] split = ids.split(",");
|
||||
final int skillId = Integer.parseInt(split[0]);
|
||||
final int level = Integer.parseInt(split[1]);
|
||||
if (SkillData.getInstance().getSkill(skillId, level) == null)
|
||||
|
||||
final Skill skill = SkillData.getInstance().getSkill(skillId, level);
|
||||
if (skill == null)
|
||||
{
|
||||
LOGGER.info(getClass().getSimpleName() + ": Could not find agathion skill id " + skillId + ".");
|
||||
return;
|
||||
}
|
||||
|
||||
subSkillList.add(new SkillHolder(skillId, level));
|
||||
subSkillList.add(skill);
|
||||
}
|
||||
subSkills.put(enchant, subSkillList);
|
||||
|
||||
|
@@ -20,31 +20,33 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.l2jmobius.gameserver.model.skill.Skill;
|
||||
|
||||
/**
|
||||
* @author Mobius
|
||||
*/
|
||||
public class AgathionSkillHolder
|
||||
{
|
||||
private final Map<Integer, List<SkillHolder>> _mainSkill;
|
||||
private final Map<Integer, List<SkillHolder>> _subSkill;
|
||||
private final Map<Integer, List<Skill>> _mainSkill;
|
||||
private final Map<Integer, List<Skill>> _subSkill;
|
||||
|
||||
public AgathionSkillHolder(Map<Integer, List<SkillHolder>> mainSkill, Map<Integer, List<SkillHolder>> subSkill)
|
||||
public AgathionSkillHolder(Map<Integer, List<Skill>> mainSkill, Map<Integer, List<Skill>> subSkill)
|
||||
{
|
||||
_mainSkill = mainSkill;
|
||||
_subSkill = subSkill;
|
||||
}
|
||||
|
||||
public Map<Integer, List<SkillHolder>> getMainSkills()
|
||||
public Map<Integer, List<Skill>> getMainSkills()
|
||||
{
|
||||
return _mainSkill;
|
||||
}
|
||||
|
||||
public Map<Integer, List<SkillHolder>> getSubSkills()
|
||||
public Map<Integer, List<Skill>> getSubSkills()
|
||||
{
|
||||
return _subSkill;
|
||||
}
|
||||
|
||||
public List<SkillHolder> getMainSkills(int enchantLevel)
|
||||
public List<Skill> getMainSkills(int enchantLevel)
|
||||
{
|
||||
if (!_mainSkill.containsKey(enchantLevel))
|
||||
{
|
||||
@@ -53,7 +55,7 @@ public class AgathionSkillHolder
|
||||
return _mainSkill.get(enchantLevel);
|
||||
}
|
||||
|
||||
public List<SkillHolder> getSubSkills(int enchantLevel)
|
||||
public List<Skill> getSubSkills(int enchantLevel)
|
||||
{
|
||||
if (!_subSkill.containsKey(enchantLevel))
|
||||
{
|
||||
|
@@ -73,7 +73,6 @@ import org.l2jmobius.gameserver.model.events.impl.item.OnItemEnchantAdd;
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemSoulCrystalAdd;
|
||||
import org.l2jmobius.gameserver.model.events.impl.item.OnItemTalk;
|
||||
import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import org.l2jmobius.gameserver.model.item.Armor;
|
||||
import org.l2jmobius.gameserver.model.item.EtcItem;
|
||||
@@ -947,36 +946,36 @@ public class Item extends WorldObject
|
||||
{
|
||||
boolean update = false;
|
||||
// Remove old skills.
|
||||
for (SkillHolder holder : agathionSkills.getMainSkills(_enchantLevel))
|
||||
for (Skill skill : agathionSkills.getMainSkills(_enchantLevel))
|
||||
{
|
||||
getActingPlayer().removeSkill(holder.getSkill(), false, holder.getSkill().isPassive());
|
||||
getActingPlayer().removeSkill(skill, false, skill.isPassive());
|
||||
update = true;
|
||||
}
|
||||
for (SkillHolder holder : agathionSkills.getSubSkills(_enchantLevel))
|
||||
for (Skill skill : agathionSkills.getSubSkills(_enchantLevel))
|
||||
{
|
||||
getActingPlayer().removeSkill(holder.getSkill(), false, holder.getSkill().isPassive());
|
||||
getActingPlayer().removeSkill(skill, false, skill.isPassive());
|
||||
update = true;
|
||||
}
|
||||
// Add new skills.
|
||||
if (getLocationSlot() == Inventory.PAPERDOLL_AGATHION1)
|
||||
{
|
||||
for (SkillHolder holder : agathionSkills.getMainSkills(enchantLevel))
|
||||
for (Skill skill : agathionSkills.getMainSkills(enchantLevel))
|
||||
{
|
||||
if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, getActingPlayer(), getActingPlayer()))
|
||||
if (skill.isPassive() && !skill.checkConditions(SkillConditionScope.PASSIVE, getActingPlayer(), getActingPlayer()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
getActingPlayer().addSkill(holder.getSkill(), false);
|
||||
getActingPlayer().addSkill(skill, false);
|
||||
update = true;
|
||||
}
|
||||
}
|
||||
for (SkillHolder holder : agathionSkills.getSubSkills(enchantLevel))
|
||||
for (Skill skill : agathionSkills.getSubSkills(enchantLevel))
|
||||
{
|
||||
if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, getActingPlayer(), getActingPlayer()))
|
||||
if (skill.isPassive() && !skill.checkConditions(SkillConditionScope.PASSIVE, getActingPlayer(), getActingPlayer()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
getActingPlayer().addSkill(holder.getSkill(), false);
|
||||
getActingPlayer().addSkill(skill, false);
|
||||
update = true;
|
||||
}
|
||||
if (update)
|
||||
|
@@ -54,7 +54,6 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemUn
|
||||
import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ArmorsetSkillHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import org.l2jmobius.gameserver.model.item.EtcItem;
|
||||
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
||||
import org.l2jmobius.gameserver.model.item.appearance.AppearanceStone;
|
||||
@@ -1412,14 +1411,14 @@ public abstract class Inventory extends ItemContainer
|
||||
if (agathionSkills != null)
|
||||
{
|
||||
boolean update = false;
|
||||
for (SkillHolder holder : agathionSkills.getMainSkills(old.getEnchantLevel()))
|
||||
for (Skill skill : agathionSkills.getMainSkills(old.getEnchantLevel()))
|
||||
{
|
||||
getOwner().getActingPlayer().removeSkill(holder.getSkill(), false, holder.getSkill().isPassive());
|
||||
getOwner().getActingPlayer().removeSkill(skill, false, skill.isPassive());
|
||||
update = true;
|
||||
}
|
||||
for (SkillHolder holder : agathionSkills.getSubSkills(old.getEnchantLevel()))
|
||||
for (Skill skill : agathionSkills.getSubSkills(old.getEnchantLevel()))
|
||||
{
|
||||
getOwner().getActingPlayer().removeSkill(holder.getSkill(), false, holder.getSkill().isPassive());
|
||||
getOwner().getActingPlayer().removeSkill(skill, false, skill.isPassive());
|
||||
update = true;
|
||||
}
|
||||
if (update)
|
||||
@@ -1459,23 +1458,23 @@ public abstract class Inventory extends ItemContainer
|
||||
boolean update = false;
|
||||
if (slot == PAPERDOLL_AGATHION1)
|
||||
{
|
||||
for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel()))
|
||||
for (Skill skill : agathionSkills.getMainSkills(item.getEnchantLevel()))
|
||||
{
|
||||
if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, getOwner().getActingPlayer(), getOwner().getActingPlayer()))
|
||||
if (skill.isPassive() && !skill.checkConditions(SkillConditionScope.PASSIVE, getOwner().getActingPlayer(), getOwner().getActingPlayer()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
getOwner().getActingPlayer().addSkill(holder.getSkill(), false);
|
||||
getOwner().getActingPlayer().addSkill(skill, false);
|
||||
update = true;
|
||||
}
|
||||
}
|
||||
for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel()))
|
||||
for (Skill skill : agathionSkills.getSubSkills(item.getEnchantLevel()))
|
||||
{
|
||||
if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, getOwner().getActingPlayer(), getOwner().getActingPlayer()))
|
||||
if (skill.isPassive() && !skill.checkConditions(SkillConditionScope.PASSIVE, getOwner().getActingPlayer(), getOwner().getActingPlayer()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
getOwner().getActingPlayer().addSkill(holder.getSkill(), false);
|
||||
getOwner().getActingPlayer().addSkill(skill, false);
|
||||
update = true;
|
||||
}
|
||||
if (update)
|
||||
|
@@ -42,10 +42,10 @@ import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDe
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemDrop;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerItemTransfer;
|
||||
import org.l2jmobius.gameserver.model.holders.AgathionSkillHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import org.l2jmobius.gameserver.model.item.ItemTemplate;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.item.type.EtcItemType;
|
||||
import org.l2jmobius.gameserver.model.skill.Skill;
|
||||
import org.l2jmobius.gameserver.model.skill.SkillConditionScope;
|
||||
import org.l2jmobius.gameserver.model.variables.ItemVariables;
|
||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||
@@ -1019,33 +1019,33 @@ public class PlayerInventory extends Inventory
|
||||
if (agathionSkills != null)
|
||||
{
|
||||
// Remove old skills.
|
||||
for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel()))
|
||||
for (Skill skill : agathionSkills.getMainSkills(item.getEnchantLevel()))
|
||||
{
|
||||
_owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive());
|
||||
_owner.removeSkill(skill, false, skill.isPassive());
|
||||
}
|
||||
for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel()))
|
||||
for (Skill skill : agathionSkills.getSubSkills(item.getEnchantLevel()))
|
||||
{
|
||||
_owner.removeSkill(holder.getSkill(), false, holder.getSkill().isPassive());
|
||||
_owner.removeSkill(skill, false, skill.isPassive());
|
||||
}
|
||||
// Add new skills.
|
||||
if (item.getLocationSlot() == Inventory.PAPERDOLL_AGATHION1)
|
||||
{
|
||||
for (SkillHolder holder : agathionSkills.getMainSkills(item.getEnchantLevel()))
|
||||
for (Skill skill : agathionSkills.getMainSkills(item.getEnchantLevel()))
|
||||
{
|
||||
if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner))
|
||||
if (skill.isPassive() && !skill.checkConditions(SkillConditionScope.PASSIVE, _owner, _owner))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
_owner.addSkill(holder.getSkill(), false);
|
||||
_owner.addSkill(skill, false);
|
||||
}
|
||||
}
|
||||
for (SkillHolder holder : agathionSkills.getSubSkills(item.getEnchantLevel()))
|
||||
for (Skill skill : agathionSkills.getSubSkills(item.getEnchantLevel()))
|
||||
{
|
||||
if (holder.getSkill().isPassive() && !holder.getSkill().checkConditions(SkillConditionScope.PASSIVE, _owner, _owner))
|
||||
if (skill.isPassive() && !skill.checkConditions(SkillConditionScope.PASSIVE, _owner, _owner))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
_owner.addSkill(holder.getSkill(), false);
|
||||
_owner.addSkill(skill, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user