U3Games

Games | Desarrollo & Soporte => L2 | Sección de Servidores => Lineage => L2 | Implementaciones => Mensaje iniciado por: Jerry en Ago 02, 2025, 07:38 PM

Título: Infinity SS and Arrows - aCis
Publicado por: Jerry en Ago 02, 2025, 07:38 PM
Index: net.sf.l2j;Config.java
===================================================================
--- net.sf.l2j;Config.java (revision 84)
+++ net.sf.l2j;Config.java (working copy)

+ /** Infinity SS and Arrows */
+ public static boolean INFINITY_SS;
+ public static boolean INFINITY_ARROWS;

+ INFINITY_SS = player.getProperty("InfinitySS", false);
+ INFINITY_ARROWS = player.getProperty("InfinityArrows", false);

Index: net.sf.l2j.gameserver.handler.itemhandlers;BeastSoulShot.java
===================================================================
--- net.sf.l2j.gameserver.handler.itemhandlers;BeastSoulShot.java (revision 84)
+++ net.sf.l2j.gameserver.handler.itemhandlers;BeastSoulShot.java (working copy)

// SoulShots are already active.
if (activePet.isChargedShot(ShotType.SOULSHOT))
return;

+ // If the player doesn't have enough beast soulshot remaining, remove any auto soulshot task.
+ if (!Config.INFINITY_SS && !activeOwner.destroyItemWithoutTrace("Consume", item.getObjectId(), activePet.getSoulShotsPerHit(), null, false))
+ {
+ if (!activeOwner.disableAutoShot(item.getItemId()))
+ activeOwner.sendPacket(SystemMessageId.NOT_ENOUGH_SOULSHOTS_FOR_PET);
+ return;
+ }

Index: net.sf.l2j.gameserver.handler.itemhandlers;BeastSpiritShot.java
===================================================================
--- net.sf.l2j.gameserver.handler.itemhandlers;BeastSpiritShot.java (revision 84)
+++ net.sf.l2j.gameserver.handler.itemhandlers;BeastSpiritShot.java (working copy)

// shots are already active.
if (activePet.isChargedShot(isBlessed ? ShotType.BLESSED_SPIRITSHOT : ShotType.SPIRITSHOT))
return;

+ if (!Config.INFINITY_SS && !activeOwner.destroyItemWithoutTrace("Consume", item.getObjectId(), activePet.getSpiritShotsPerHit(), null, false))
+ {
+ if (!activeOwner.disableAutoShot(itemId))
+ activeOwner.sendPacket(SystemMessageId.NOT_ENOUGH_SPIRITSHOTS_FOR_PET);
+ return;
+ }

Index: net.sf.l2j.gameserver.handler.itemhandlers;BlessedSpiritShot.java
===================================================================
--- net.sf.l2j.gameserver.handler.itemhandlers;BlessedSpiritShot.java (revision 84)
+++ net.sf.l2j.gameserver.handler.itemhandlers;BlessedSpiritShot.java (working copy)

// Check for correct grade.
if (weaponItem.getCrystalType() != item.getItem().getCrystalType())
{
if (!activeChar.getAutoSoulShot().contains(itemId))
activeChar.sendPacket(SystemMessageId.SPIRITSHOTS_GRADE_MISMATCH);

return;
}

+ // Consume bss if player has enough of them
+ if (!Config.INFINITY_SS && !activeChar.destroyItemWithoutTrace("Consume", item.getObjectId(), weaponItem.getSpiritShotCount(), null, false))
+ {
+ if (!activeChar.disableAutoShot(itemId))
+ activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_SPIRITSHOTS);
+
+ return;
+ }

Index: net.sf.l2j.gameserver.handler.itemhandlers;SoulShots.java
===================================================================
--- net.sf.l2j.gameserver.handler.itemhandlers;SoulShots.java (revision 84)
+++ net.sf.l2j.gameserver.handler.itemhandlers;SoulShots.java (working copy)

// Consume Soulshots if player has enough of them.
int ssCount = weaponItem.getSoulShotCount();
if (weaponItem.getReducedSoulShot() > 0 && Rnd.get(100) < weaponItem.getReducedSoulShotChance())
ssCount = weaponItem.getReducedSoulShot();

+ if (!Config.INFINITY_SS && !activeChar.destroyItemWithoutTrace("Consume", item.getObjectId(), ssCount, null, false))
+ {
+ if (!activeChar.disableAutoShot(itemId))
+ activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_SOULSHOTS);
+
+ return;
+ }

Index: net.sf.l2j.gameserver.handler.itemhandlers;SpiritShot.java
===================================================================
--- net.sf.l2j.gameserver.handler.itemhandlers;SpiritShot.java (revision 84)
+++ net.sf.l2j.gameserver.handler.itemhandlers;SpiritShot.java (working copy)

if (weaponItem.getCrystalType() != item.getItem().getCrystalType())
{
if (!activeChar.getAutoSoulShot().contains(itemId))
activeChar.sendPacket(SystemMessageId.SPIRITSHOTS_GRADE_MISMATCH);

return;
}

+ // Consume sps if player has enough of them
+ if (!Config.INFINITY_SS && !activeChar.destroyItemWithoutTrace("Consume", item.getObjectId(), weaponItem.getSpiritShotCount(), null, false))
+ {
+ if (!activeChar.disableAutoShot(itemId))
+ activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_SPIRITSHOTS);
+ return;
+ }

Index: net.sf.l2j.gameserver.model.actor;Creature.java
===================================================================
--- net.sf.l2j.gameserver.model.actor;Creature.java (revision 84)
+++ net.sf.l2j.gameserver.model.actor;Creature.java (working copy)

private boolean doAttackHitByBow(Attack attack, Creature target, int sAtk, Weapon weapon)
{
int damage1 = 0;
byte shld1 = 0;
boolean crit1 = false;

// Calculate if hit is missed or not
boolean miss1 = Formulas.calcHitMiss(this, target);

+ // Consume arrows
+ if (!Config.INFINITY_ARROWS)
+ reduceArrowCount();


Index: config/player.propertis
===================================================================
--- config/player.propertis (revision 84)
+++ config/player.propertis (working copy)

# Infinity SS and Arrows
InfinitySS = True
InfinityArrows = True