Jump to content
  • 0

Question

Posted

Hello everyone!

I'm using l2j Frozen and i have soulshot issue.

When i'm using 2-handed sword (or any melee weapon) my soulshot wont load properly.Every 2-3 hits i miss 1 soulshot (less dmg)

How can i change the soulshot re-load time?I looked over here:

 

		final int timeAtk = calculateTimeBetweenAttacks(target, weaponItem);
		
		// Recharge any active auto soulshot tasks for player (or player's summon if one exists).
		if (this instanceof L2PcInstance)
		{
			((L2PcInstance) this).rechargeAutoSoulShot(true, false, false, timeAtk);
		}
		else if (this instanceof L2Summon)
		{
			((L2Summon) this).getOwner().rechargeAutoSoulShot(true, false, true, timeAtk);
		}
		
		// Verify if soulshots are charged.
		boolean wasSSCharged;
		
		if (this instanceof L2Summon && !(this instanceof L2PetInstance))
		{
			wasSSCharged = ((L2Summon) this).getChargedSoulShot() != L2ItemInstance.CHARGED_NONE;
		}
		else
		{
			wasSSCharged = weaponInst != null && weaponInst.getChargedSoulshot() != L2ItemInstance.CHARGED_NONE;
		}
		
		// Get the Attack Speed of the L2Character (delay (in milliseconds) before next attack)
		// the hit is calculated to happen halfway to the animation - might need further tuning e.g. in bow case
		final int timeToHit = timeAtk / 2;
		_attackEndTime = GameTimeController.getGameTicks();
		_attackEndTime += (timeAtk / GameTimeController.MILLIS_IN_TICK);
		_attackEndTime -= 1;
		
		int ssGrade = 0;
		
		if (weaponItem != null)
		{
			ssGrade = weaponItem.getCrystalType();
		}
		
		// Create a Server->Client packet Attack
		Attack attack = new Attack(this, wasSSCharged, ssGrade);
		
		boolean hitted;
		
		// Set the Attacking Body part to CHEST
		setAttackingBodypart();
		
		// Heading calculation on every attack
		this.setHeading(Util.calculateHeadingFrom(this.getX(), this.getY(), target.getX(), target.getY()));
		
		// Get the Attack Reuse Delay of the L2Weapon
		final int reuse = calculateReuseTime(target, weaponItem);
		
		// Select the type of attack to start
		if (weaponItem == null)
		{
			hitted = doAttackHitSimple(attack, target, timeToHit);
		}
		else if (weaponItem.getItemType() == L2WeaponType.BOW)
		{
			hitted = doAttackHitByBow(attack, target, timeAtk, reuse);
		}
		else if (weaponItem.getItemType() == L2WeaponType.POLE)
		{
			hitted = doAttackHitByPole(attack, timeToHit);
		}
		else if (isUsingDualWeapon())
		{
			hitted = doAttackHitByDual(attack, target, timeToHit);
		}
		else
		{
			hitted = doAttackHitSimple(attack, target, timeToHit);
		}
		
		// Flag the attacker if it's a L2PcInstance outside a PvP area
		L2PcInstance player = null;
		
		if (this instanceof L2PcInstance)
		{
			player = (L2PcInstance) this;
		}
		else if (this instanceof L2Summon)
		{
			player = ((L2Summon) this).getOwner();
		}
		
		if (player != null)
		{
			player.updatePvPStatus(target);
		}
		
		// Check if hit isn't missed
		if (!hitted)
		{
			// MAJAX fix
			sendPacket(new SystemMessage(SystemMessageId.MISSED_TARGET));
			// Abort the attack of the L2Character and send Server->Client ActionFailed packet
			abortAttack();
		}
		else
		{
			/*
			 * ADDED BY nexus - 2006-08-17 As soon as we know that our hit landed, we must discharge any active soulshots. This must be done so to avoid unwanted soulshot consumption.
			 */
			
			// If we didn't miss the hit, discharge the shoulshots, if any
			if (this instanceof L2Summon && !(this instanceof L2PetInstance))
			{
				((L2Summon) this).setChargedSoulShot(L2ItemInstance.CHARGED_NONE);
			}
			else if (weaponInst != null)
			{
				weaponInst.setChargedSoulshot(L2ItemInstance.CHARGED_NONE);
			}
			
			if (player != null)
			{
				if (player.isCursedWeaponEquiped())
				{
					// If hitted by a cursed weapon, Cp is reduced to 0
					if (!target.isInvul())
					{
						target.setCurrentCp(0);
					}
				}
				else if (player.isHero())
				{
					if (target instanceof L2PcInstance && ((L2PcInstance) target).isCursedWeaponEquiped())
					{
						// If a cursed weapon is hitted by a Hero, Cp is reduced to 0
						target.setCurrentCp(0);
					}
				}
			}
			
			weaponInst = null;
			weaponItem = null;
		}
		
		// If the Server->Client packet Attack contains at least 1 hit, send the Server->Client packet Attack
		// to the L2Character AND to all L2PcInstance in the _KnownPlayers of the L2Character
		if (attack.hasHits())
		{
			broadcastPacket(attack);
			fireEvent(EventType.ATTACK.name, new Object[]
			{
				getTarget()
			});
		}
		
		// Like L2OFF mobs id 27181 can teleport players near cabrio
		if (this instanceof L2MonsterInstance && ((L2MonsterInstance) this).getNpcId() == 27181)
		{
			final int rndNum = Rnd.get(100);
			final L2PcInstance gettarget = (L2PcInstance) this.getTarget();
			
			if (rndNum < 5 && gettarget != null)
				gettarget.teleToLocation(179768, 6364, -2734);
		}
		
		// Like L2OFF if target is not auto attackable you give only one hit
		if (this instanceof L2PcInstance && target instanceof L2PcInstance && !target.isAutoAttackable(this))
		{
			((L2PcInstance) this).getAI().clientStopAutoAttack();
			((L2PcInstance) this).getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, this);
		}
		
		// Notify AI with EVT_READY_TO_ACT
		ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(CtrlEvent.EVT_READY_TO_ACT), timeAtk + reuse);
		
		attack = null;
		player = null;
	}

 




I dont know if i'm looking right.

Thanks for the help!

3 answers to this question

Recommended Posts

  • 0
Posted

if (this instanceof L2PcInstance)
        {
            ((L2PcInstance) this).rechargeAutoSoulShot(true, false, false, timeAtk + 5);
        }
        else if (this instanceof L2Summon)
        {
            ((L2Summon) this).getOwner().rechargeAutoSoulShot(true, false, true, timeAtk + 5);
        }
        

Guest
This topic is now closed to further replies.


  • Posts

    • Don’t miss the new Telegram gifts with our Telegram Stars purchasing bot! A great opportunity to invest in a stable digital asset at an early stage while the market is still forming. Buy other existing gifts in the official store using Telegram Stars, pay for subscriptions, donate to games and projects, pay for Premium subscriptions, and react to messages in channels! Low prices, multiple payment options, and other cool unique features! ⚡ Try it today — SOCNET STARS BOT ⚡ Active links to SOCNET stores: Digital Goods Store (Website): Go Store Telegram Bot: Go – convenient access to the store via Telegram messenger. ⭐ Telegram Stars Purchase Bot: Go – fast and profitable way to buy stars in Telegram. SMM Panel: Go – promote your social media accounts. We present to you the current list of promotions and special offers for purchasing our products and services: 1️⃣ Promo code OCTOBER2025 (8% discount) for purchases in our store (Website, bot) in October! You can also use the promo code SOCNET (15% discount) for your first purchase. 2️⃣ Get $1 on your store balance or a 10–20% discount — just write your username after registration on our website using the template: "SEND ME BONUS, MY USERNAME IS..." — post it in our forum thread! 3️⃣ Get $1 for your first SMM Panel trial — simply open a ticket titled “Get Trial Bonus” on our website (Support). 4️⃣ Weekly ⭐ Telegram Stars giveaways in our Telegram channel and in our Telegram Stars bot! News: ➡ Telegram Channel: https://t.me/accsforyou_shop ➡ WhatsApp Channel: https://chat.whatsapp.com/K8rBy500nA73z27PxgaJUw?mode=ems_copy_t ➡ Discord Server: https://discord.gg/y9AStFFsrh Contacts and Support: ➡ Telegram: https://t.me/socnet_support ➡ WhatsApp: https://wa.me/79051904467 ➡ Discord: socnet_support ➡ ✉ Email: solomonbog@socnet.store
    • Yes, just keep this post=)
    • When something’s inconvenient, people always find a way to make life easier.   It’s dark? Turn on a lamp — no more tripping around. The socket’s hiding under the bed? Boom, extension cord. Noisy neighbor? Headphones and soundproof walls. Too lazy to move? Just have a kid, problem solved. Lost one sock? Humanity just gave up on that one.   And for everything else — there’s VibeSMS. Because getting your verification codes should be as simple as flipping a switch 💡⚡   Website: https://vibe-sms.net/ 📱 Telegram channel: https://t.me/vibe_sms  
    • We still bumping posts?
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock