Fixed item auto use based on item skill availability.

This commit is contained in:
MobiusDevelopment
2020-09-10 15:05:54 +00:00
parent 1a57435680
commit 901e0d3fc1
2 changed files with 28 additions and 6 deletions

View File

@@ -222,6 +222,7 @@ import org.l2jmobius.gameserver.model.fishing.Fishing;
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder; import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.DamageTakenHolder; import org.l2jmobius.gameserver.model.holders.DamageTakenHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
import org.l2jmobius.gameserver.model.holders.MonsterBookCardHolder; import org.l2jmobius.gameserver.model.holders.MonsterBookCardHolder;
import org.l2jmobius.gameserver.model.holders.MonsterBookRewardHolder; import org.l2jmobius.gameserver.model.holders.MonsterBookRewardHolder;
import org.l2jmobius.gameserver.model.holders.MovieHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder;
@@ -14269,14 +14270,14 @@ public class PlayerInstance extends Playable
_autoUseTask = ThreadPool.scheduleAtFixedRate(() -> _autoUseTask = ThreadPool.scheduleAtFixedRate(() ->
{ {
if (hasBlockActions() || isControlBlocked() || isAlikeDead()) if (hasBlockActions() || isControlBlocked() || isAlikeDead() || isInsideZone(ZoneId.PEACE))
{ {
return; return;
} }
if (Config.ENABLE_AUTO_ITEM) if (Config.ENABLE_AUTO_ITEM)
{ {
for (int itemId : _autoSupplyItems) ITEMS: for (int itemId : _autoSupplyItems)
{ {
final ItemInstance item = _inventory.getItemByItemId(itemId); final ItemInstance item = _inventory.getItemByItemId(itemId);
if (item == null) if (item == null)
@@ -14284,6 +14285,16 @@ public class PlayerInstance extends Playable
removeAutoSupplyItem(itemId); removeAutoSupplyItem(itemId);
continue; continue;
} }
for (ItemSkillHolder itemSkillHolder : item.getItem().getAllSkills())
{
final Skill skill = itemSkillHolder.getSkill();
if (isAffectedBySkill(skill.getId()) || hasSkillReuse(skill.getReuseHashCode()) || !skill.checkCondition(this, this, false))
{
continue ITEMS;
}
}
final int reuseDelay = item.getReuseDelay(); final int reuseDelay = item.getReuseDelay();
if ((reuseDelay <= 0) || (getItemRemainingReuseTime(item.getObjectId()) <= 0)) if ((reuseDelay <= 0) || (getItemRemainingReuseTime(item.getObjectId()) <= 0))
{ {
@@ -14330,7 +14341,7 @@ public class PlayerInstance extends Playable
removeAutoSkill(skillId); removeAutoSkill(skillId);
continue; continue;
} }
if (!isAffectedBySkill(skillId) && !isInsideZone(ZoneId.PEACE) && !hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(this, this, false)) if (!isAffectedBySkill(skillId) && !hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(this, this, false))
{ {
// Summon check. // Summon check.
if (skill.getAffectScope() == AffectScope.SUMMON_EXCEPT_MASTER) if (skill.getAffectScope() == AffectScope.SUMMON_EXCEPT_MASTER)

View File

@@ -226,6 +226,7 @@ import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
import org.l2jmobius.gameserver.model.holders.DamageTakenHolder; import org.l2jmobius.gameserver.model.holders.DamageTakenHolder;
import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder; import org.l2jmobius.gameserver.model.holders.ElementalSpiritDataHolder;
import org.l2jmobius.gameserver.model.holders.ItemHolder; import org.l2jmobius.gameserver.model.holders.ItemHolder;
import org.l2jmobius.gameserver.model.holders.ItemSkillHolder;
import org.l2jmobius.gameserver.model.holders.MovieHolder; import org.l2jmobius.gameserver.model.holders.MovieHolder;
import org.l2jmobius.gameserver.model.holders.PlayerEventHolder; import org.l2jmobius.gameserver.model.holders.PlayerEventHolder;
import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder; import org.l2jmobius.gameserver.model.holders.PreparedMultisellListHolder;
@@ -14216,14 +14217,14 @@ public class PlayerInstance extends Playable
_autoUseTask = ThreadPool.scheduleAtFixedRate(() -> _autoUseTask = ThreadPool.scheduleAtFixedRate(() ->
{ {
if (hasBlockActions() || isControlBlocked() || isAlikeDead()) if (hasBlockActions() || isControlBlocked() || isAlikeDead() || isInsideZone(ZoneId.PEACE))
{ {
return; return;
} }
if (Config.ENABLE_AUTO_ITEM) if (Config.ENABLE_AUTO_ITEM)
{ {
for (int itemId : _autoSupplyItems) ITEMS: for (int itemId : _autoSupplyItems)
{ {
final ItemInstance item = _inventory.getItemByItemId(itemId); final ItemInstance item = _inventory.getItemByItemId(itemId);
if (item == null) if (item == null)
@@ -14231,6 +14232,16 @@ public class PlayerInstance extends Playable
removeAutoSupplyItem(itemId); removeAutoSupplyItem(itemId);
continue; continue;
} }
for (ItemSkillHolder itemSkillHolder : item.getItem().getAllSkills())
{
final Skill skill = itemSkillHolder.getSkill();
if (isAffectedBySkill(skill.getId()) || hasSkillReuse(skill.getReuseHashCode()) || !skill.checkCondition(this, this, false))
{
continue ITEMS;
}
}
final int reuseDelay = item.getReuseDelay(); final int reuseDelay = item.getReuseDelay();
if ((reuseDelay <= 0) || (getItemRemainingReuseTime(item.getObjectId()) <= 0)) if ((reuseDelay <= 0) || (getItemRemainingReuseTime(item.getObjectId()) <= 0))
{ {
@@ -14277,7 +14288,7 @@ public class PlayerInstance extends Playable
removeAutoSkill(skillId); removeAutoSkill(skillId);
continue; continue;
} }
if (!isAffectedBySkill(skillId) && !isInsideZone(ZoneId.PEACE) && !hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(this, this, false)) if (!isAffectedBySkill(skillId) && !hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(this, this, false))
{ {
// Summon check. // Summon check.
if (skill.getAffectScope() == AffectScope.SUMMON_EXCEPT_MASTER) if (skill.getAffectScope() == AffectScope.SUMMON_EXCEPT_MASTER)