Jump to content

Recommended Posts

Posted

When 2 or more cardinals or other healers in one party the heal gets nerfed

net.sf.l2j.gameserver.handler.skillhandlers.heal.java

public void useSkill(Creature activeChar, L2Skill skill, WorldObject[] targets)
    {
        
        +int healers = 0;
        +int minus = 2;
        +
    +    if (activeChar.getParty() != null)
        +{
        +    for (Player player : activeChar.getParty().getMembers())
        +    {
        +        if (player != null && player.getClassId().getId() == 97)
            +    {
            +        healers++;
            +        
            +        if (minus != 2 && (player.getPvpFlag() != 0 || player.getKarma() > 0))
            +            minus = 2;
        +        }
        +    }
        +}

//go here

        hp = power;
                    hp *= target.calcStat(Stats.HEAL_EFFECTIVNESS, 100, null, null) / 100;
                    
            }
//and paste this too

        +if (healers >= 2) // 2 or more healers in party
            +{
            +    int nerfValue = (2 + (healers - minus));
            +    hp /= nerfValue;
        +    }
            
            // If you have full HP and you get HP buff, u will receive 0HP restored message

Posted

Do you realize that your int minus is always 2 and so, your check under a loop is redundant? And null check under a loop is also kinda useless. 

Posted (edited)
32 minutes ago, camenomat0 said:

Well, but what's the point? With the same logic, make a 3 Archer Pt do less crt. damage,or have less range.

The point is the share ;) Btw not bad idea about archers :P

 

@OnTopic

As sweets said you have useless checks and variables, You can update your post. Something like that would be better

 

 

### Eclipse Workspace Patch 1.0
#P aCis_gameserver
Index: java/net/sf/l2j/gameserver/handler/skillhandlers/Heal.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/skillhandlers/Heal.java	(revision 3)
+++ java/net/sf/l2j/gameserver/handler/skillhandlers/Heal.java	(working copy)
@@ -1,5 +1,7 @@
 package net.sf.l2j.gameserver.handler.skillhandlers;
 
+import java.util.stream.Collectors;
+
 import net.sf.l2j.gameserver.handler.ISkillHandler;
 import net.sf.l2j.gameserver.handler.SkillHandler;
 import net.sf.l2j.gameserver.model.L2Skill;
@@ -111,6 +113,10 @@
 					hp *= target.calcStat(Stats.HEAL_EFFECTIVNESS, 100, null, null) / 100;
 			}
 			
+			final int healers = activeChar.getParty() == null ? 0 : activeChar.getParty().getMembers().stream().filter(mem -> mem.getClassId().getId() == 97).collect(Collectors.toList()).size();
+			if (healers >= 2)
+				hp /= healers;
+			
 			// If you have full HP and you get HP buff, u will receive 0HP restored message
 			if ((target.getCurrentHp() + hp) >= target.getMaxHp())
 				hp = target.getMaxHp() - target.getCurrentHp();

 

Edited by melron
  • Thanks 1
Posted (edited)

Where should i start and where should i end. 

I'll just write down that the whole thing you did can be done in 1 row more correctly. Cause basically no matter how many healers you have you always divine

by two since is static and does not increase in loop.

hp = hp / (activeChar.getParty() !=null ? activeChar.getParty().getPartyMembers().parallelStream().filter((player) -> player.getClassId().getId() == 97).count() : 1);

if (hp < 0){
 hp = 0;           
}

 

Edited by Evie Frye
Posted
29 minutes ago, SweeTs said:

@Evie Frye wanted to be a badass and used parallelStream, even if it has a much higher overhead compared to a sequential one. Don't be like Evie :(

 

@SweeTs I came, I saw, I conquered, thank you and goodnight.  

 

 

Posted
1 hour ago, Evie Frye said:

Where should i start and where should i end. 

I'll just write down that the whole thing you did can be done in 1 row more correctly. Cause basically no matter how many healers you have you always divine

by two since is static and does not increase in loop.


hp = hp % (activeChar.getParty() !=null ? activeChar.getParty().getPartyMembers().parallelStream().filter((player) -> player.getClassId().getId() == 99).count() : 1);

if (hp < 0){
 hp = 0;           
}

 

 

Great Job as always,such unique way fixing things.

49 minutes ago, SweeTs said:

@Evie Frye wanted to be a badass and used parallelStream, even if it has a much higher overhead compared to a sequential one. Don't be like Evie :(

 

No one can be like that.

  • Like 1
Posted
4 minutes ago, melron said:

my eyes are bleeding and stop spamming

 

yo budd, he did a good job fixing it and just mentioned it as the code looks nice,is not spam or anything,always on topic replies, never went off topic so please stop repeat yourselfe.Stop try to create drama for no reason, peace.

 

 

Posted
1 minute ago, camenomat0 said:

 

yo budd, he did a good job fixing it and just mentioned it as the code looks nice,is not spam or anything,always on topic replies, never went off topic so please stop repeat yourselfe.Stop try to create drama for no reason, peace.

 

He speaks for the topic owner.. The way he wrote the code is bleh. 

Posted (edited)
16 minutes ago, camenomat0 said:

 

yo budd, he did a good job fixing it and just mentioned it as the code looks nice,is not spam or anything,always on topic replies, never went off topic so please stop repeat yourselfe.Stop try to create drama for no reason, peace.

 

 

My answer was not only for this topic. peace

 

p.s the bleeding eyes thing wasn't for u

 

p.s2 how do you know if his code is good or not? With a small glance his code will give 0 heal if 2 or more healers found int the party

 

Proof:

858 heal % 3 (healers) ? 

 

result is 0...

 

Evie probably made a mistake and wanted to divide (/=)  instead of modulo...

Edited by melron
Posted (edited)
16 minutes ago, melron said:

My answer was not only for this topic. peace

 

p.s the bleeding eyes thing wasn't for u

 

p.s2 how do you know if his code is good or not? With a small glance his code will give 0 heal if 2 or more healers found int he game

 

Proof:

858 heal % 3 (healers) ? 

 

result is 0...

 

Evie probably made a mistake and wanted to divide (/=)  instead of ...

 

I wrote % instead of / (fixed also in my main post). 

About @SweeTs true Steam is slower and generally function forEach is slower than a normal loop but for such a small code won't affect much. We all know

VM is slow as fuck but let's no exaggerate.

Edited by Evie Frye
Posted (edited)
59 minutes ago, Evie Frye said:

 

We all know

VM is slow as fuck but let's no exaggerate.

Idk where you read this, we're not in 2006 btw.

Edited by An4rchy
Posted

1.4 mass heal if healer is 2 bad code.. i know heal give 2.1k heal if pt have 3 healers? give 800 hp ?

all party match is die. and dont forget l2 no have only heal's you can fix debuff. stun, silence, fear

all this.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • I'll give you my wallet if you want, haha
    • To make up for some of the waiting time we’re hosting a 3v3 Tournament on open Beta, and this time we’re raising the stakes with a $1,300 prize pool 💰   🏆 PRIZE POOL BREAKDOWN (Over 2000$ Worth of prices total)   🥇 1st Place — $700 🥈 2nd Place —$300 🥉 3rd Place — $200 🏅 4th Place — $100  5th -6th Place - $100 in Gold Coins each    All Participating Teams: $50 in Gold!   All Prices will be Paid out instantly after the tour, no waiting time and conditions. This is not simply a marketing move, we want to give back to the community.   📅 Date: Wednesday 06.05.2026 ⏰ Time: 20:00 Central European Timezone (Berlin) 📍Format: 3v3   ⚔️Why join? Cash Prices for top 4 and rewards for all participants Payments to winners sent out straight after the tournament - No waiting time or rules that you have to play live server to obtain the reward. Clean format, smooth matches, and solid prize pool and a chance to experience our brand new files   📝How to join: Form your 3-player team Group Leader Sign up here: ⁠📍・3v3-tour-registration (Include Name of Group, Name of Group Leader)   Be ready on match day!     A separate post with rules for the tournament and class setups will follow shortly.   Tag your teammates, lock in your roster, and get ready to compete. We'll be happy to see you on the OBT!   💬 Questions? Ask in ⁠🎫・ticket or send us a message   See you on L2Dark! 😏   Discord: https://discord.gg/FAJwnFpb8M
    • You should check if that condition is supported by your current sources. You can find this in  DocumentBase#parsePlayerCondition If it isnt there and you want to follow the same pattern of the other item conditions, create a custom condition to parse the classId (or multiple class ids) (there are examples to copy the code). Alternatively, you can create your own condition handler. Your condition should look like this: <cond msgId="1518"> <player classId="ADVENTURER,PALADIN" /> </cond> or <cond msgId="1518"> <player classId="93,5" /> </cond>  
    • it's Interlude client forgot to mention
    • idk if acis have this option, but you can put inside item smth like that atleast on H5         <cond msgId="1518">             <player class_id_restriction="93, 101, 108, 117" /> <!-- Dagger Masters -->         </cond>
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..