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.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...