Skip to content

Celestial/Barrier Problem.

Featured Replies

L2jfrozen/1004 interlude.

If you have celestial on and you cast sonic barrier or another celestial type , after the first celestial worn out the second one doesn't continue  giving you invulnerability.

I guess is core sided so tell me what else I need to post.

EffectInvincible.java
 

/*
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 * 02111-1307, USA.
 *
 * http://www.gnu.org/copyleft/gpl.html
 */
package com.l2jfrozen.gameserver.skills.effects;

import com.l2jfrozen.gameserver.model.L2Effect;
import com.l2jfrozen.gameserver.skills.Env;

public class EffectInvincible extends L2Effect
{
	public EffectInvincible(Env env, EffectTemplate template)
	{
		super(env, template);
	}

	@Override
	public EffectType getEffectType()
	{
		return L2Effect.EffectType.INVINCIBLE;
	}

	@Override
	public void onStart()
	{
		getEffected().setIsInvul(true);
	}

	@Override
	public boolean onActionTime()
	{
		//Commented. But I'm not really sure about this, could cause some bugs.
		//getEffected().setIsInvul(false);
		return false;
	}

	@Override
	public void onExit()
	{
		getEffected().setIsInvul(false);
	}
}



 

Not sure but shouldn't one buff override another? That would solve it.

Problem is the onExit, setting char false for invul. Not taking into consideration the second celestial.

The structure is bad, but you can check the method onExit if the same skill type exists and if yes, simply don't remove the invul

  • Author
21 hours ago, SweeTs said:

Not sure but shouldn't one buff override another? That would solve it.

Problem is the onExit, setting char false for invul. Not taking into consideration the second celestial.

even when I add stacktypes and one overrides the other the problem still exists.

 

 

20 hours ago, melron said:

The structure is bad, but you can check the method onExit if the same skill type exists and if yes, simply don't remove the invul

How can I fix this??

I changed

public void onExit()
	{
		getEffected().setIsInvul(false);

to

public void onExit()
	{
		getEffected().setIsInvul(true);

and it does work even if another celestial is active but you stay invul even if the skill effect stop which is why is false I guess.

Same stackType won't fix that if you think about. What's happening is 

 

Active skill, set invul true > cast new skill, set invul true > in the same time, old skill launches onExit which sets invul false.

 

I suppose.

 

Devilish code ]:->

 

So yeah, looping your active buffs, checking for still type is the way, easiest way so far.

  • Author
2 hours ago, SweeTs said:

Same stackType won't fix that if you think about. What's happening is 

 

Active skill, set invul true > cast new skill, set invul true > in the same time, old skill launches onExit which sets invul false.

 

I suppose.

 

Devilish code ]:->

 

So yeah, looping your active buffs, checking for still type is the way, easiest way so far.

And how do I do that?

5 hours ago, SweeTs said:

Loop your active buffs, check for specific skill type

You can find several examples over sources. If you find skill, do nothing else set invul false.

 

Hint

for (L2Effect

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.