Jump to content
  • 0

Raidboss Return Back To The Spawn


ČυяŞŀŅğ

Question

Hello...

 

How is possible to make raid bosses , return back to their starting respawn? i'm talking about costum rbs.. players take them far.. lurring rbs xD

 

Im using L2J Freya Latest rev.

 

 

 

Thank you in advance :)

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Find this method checkAndReturnToSpawn() in L2RaidBossInstance.java

 

you'll see this:

if (!isInCombat() && !isMovementDisabled())

 

remove !isInCombat() and rbs should now go back to their spawn point if lured too far away.

Link to comment
Share on other sites

  • 0
/*
 * 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 3 of the License, 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, see <http://www.gnu.org/licenses/>.
 */
package com.l2jserver.gameserver.model.actor.instance;

import com.l2jserver.Config;
import com.l2jserver.gameserver.ThreadPoolManager;
import com.l2jserver.gameserver.instancemanager.RaidBossPointsManager;
import com.l2jserver.gameserver.instancemanager.RaidBossSpawnManager;
import com.l2jserver.gameserver.model.L2Skill;
import com.l2jserver.gameserver.model.L2Spawn;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.L2Summon;
import com.l2jserver.gameserver.model.entity.Hero;
import com.l2jserver.gameserver.network.SystemMessageId;
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
import com.l2jserver.gameserver.templates.chars.L2NpcTemplate;
import com.l2jserver.util.Rnd;

/**
 * This class manages all RaidBoss.
 * In a group mob, there are one master called RaidBoss and several slaves called Minions.
 *
 * @version $Revision: 1.20.4.6 $ $Date: 2005/04/06 16:13:39 $
 */
public class L2RaidBossInstance extends L2MonsterInstance
{
	private static final int RAIDBOSS_MAINTENANCE_INTERVAL = 30000; // 30 sec
	
	private RaidBossSpawnManager.StatusEnum _raidStatus;
	private boolean _useRaidCurse = true;
	
	/**
	 * Constructor of L2RaidBossInstance (use L2Character and L2NpcInstance constructor).<BR><BR>
	 *
	 * <B><U> Actions</U> :</B><BR><BR>
	 * <li>Call the L2Character constructor to set the _template of the L2RaidBossInstance (copy skills from template to object and link _calculators to NPC_STD_CALCULATOR) </li>
	 * <li>Set the name of the L2RaidBossInstance</li>
	 * <li>Create a RandomAnimation Task that will be launched after the calculated delay if the server allow it </li><BR><BR>
	 *
	 * @param objectId Identifier of the object to initialized
	 * @param L2NpcTemplate Template to apply to the NPC
	 */
	public L2RaidBossInstance(int objectId, L2NpcTemplate template)
	{
		super(objectId, template);
		setInstanceType(InstanceType.L2RaidBossInstance);
		setIsRaid(true);
	}
	
	@Override
	public void onSpawn()
	{
		setIsNoRndWalk(true);
		super.onSpawn();
	}
	
	@Override
	protected int getMaintenanceInterval()
	{
		return RAIDBOSS_MAINTENANCE_INTERVAL;
	}
	
	@Override
	public boolean doDie(L2Character killer)
	{
		if (!super.doDie(killer))
			return false;
		
		L2PcInstance player = null;
		if (killer instanceof L2PcInstance)
			player = (L2PcInstance) killer;
		else if (killer instanceof L2Summon)
			player = ((L2Summon) killer).getOwner();
		
		if (player != null)
		{
			broadcastPacket(SystemMessage.getSystemMessage(SystemMessageId.RAID_WAS_SUCCESSFUL));
			if (player.getParty() != null)
			{
				for (L2PcInstance member : player.getParty().getPartyMembers())
				{
					RaidBossPointsManager.getInstance().addPoints(member, this.getNpcId(), (this.getLevel() / 2) + Rnd.get(-5, 5));
					if(member.isNoble())
						Hero.getInstance().setRBkilled(member.getObjectId(), this.getNpcId());
				}
			}
			else
			{
				RaidBossPointsManager.getInstance().addPoints(player, this.getNpcId(), (this.getLevel() / 2) + Rnd.get(-5, 5));
				if(player.isNoble())
					Hero.getInstance().setRBkilled(player.getObjectId(), this.getNpcId());
			}
		}
		
		RaidBossSpawnManager.getInstance().updateStatus(this, true);
		return true;
	}
	
	/**
	 * Spawn all minions at a regular interval Also if boss is too far from home
	 * location at the time of this check, teleport it home
	 * 
	 */
	@Override
	protected void startMaintenanceTask()
	{
		if (getTemplate().getMinionData() != null)
			getMinionList().spawnMinions();
		
		_maintenanceTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Runnable() {
			public void run()
			{
				checkAndReturnToSpawn();
			}
		}, 60000, getMaintenanceInterval()+Rnd.get(5000));
	}
	
	protected void checkAndReturnToSpawn()
	{
		if (isDead() || isMovementDisabled())
			return;
		
		// Gordon does not have permanent spawn
		if (getNpcId() == 29095)
			return;
		
		final L2Spawn spawn = getSpawn();
		if (spawn == null)
			return;
		
		final int spawnX = spawn.getLocx();
		final int spawnY = spawn.getLocy();
		final int spawnZ = spawn.getLocz();
		
		if (!isInCombat() && !isMovementDisabled())
		{
			if (!isInsideRadius(spawnX, spawnY, spawnZ, Math.max(Config.MAX_DRIFT_RANGE, 200), true, false))
				teleToLocation(spawnX, spawnY, spawnZ, false);
		}
	}
	
	/**
	 * Reduce the current HP of the L2Attackable, update its _aggroList and launch the doDie Task if necessary.<BR><BR>
	 *
	 */
	@Override
	public void reduceCurrentHp(double damage, L2Character attacker, boolean awake, boolean isDOT, L2Skill skill)
	{
		super.reduceCurrentHp(damage, attacker, awake, isDOT, skill);
	}
	
	public void setRaidStatus (RaidBossSpawnManager.StatusEnum status)
	{
		_raidStatus = status;
	}
	
	public RaidBossSpawnManager.StatusEnum getRaidStatus()
	{
		return _raidStatus;
	}
	
	@Override
	public float getVitalityPoints(int damage)
	{
		return - super.getVitalityPoints(damage) / 100;
	}
	
	@Override
	public boolean useVitalityRate()
	{
		return false;
	}
	
	public void setUseRaidCurse(boolean val)
	{
		_useRaidCurse = val;
	}
	
	/* (non-Javadoc)
	 * @see com.l2jserver.gameserver.model.actor.L2Character#giveRaidCurse()
	 */
	@Override
	public boolean giveRaidCurse()
	{
		return _useRaidCurse;
	}
}

I See this one 

if (!isInsideRadius(spawnX, spawnY, spawnZ, Math.max(Config.MAX_DRIFT_RANGE, 200), true, false))

on npc.properties its

# Maximum distance mobs can randomly go from spawn point.
# DEFAULT NEEDS TO BE VERIFIED, MUST BE CHANGED HERE AND IN CONFIG.JAVA IF NOT CORRECT
# Default: 300
MaxDriftRange = 300

I change this

		if (!isMovementDisabled())
		{
			if (!isInsideRadius(spawnX, spawnY, spawnZ, Math.max(Config.MAX_DRIFT_RANGE, 200), true, false))
				teleToLocation(spawnX, spawnY, spawnZ, false);
		}
	}

Seems to working but , the range is too big , like 7-8 k range. Can we make it lower? maybe this must be lower in there? (Config.MAX_DRIFT_RANGE, 200)

Edited by ČυяŞŀŅğ
  • Upvote 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   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.



  • Posts

    • I've been on the hunt for an affordable SMM panel that covers all the major platforms, and boy, did I strike gold with this one. Their services are top-notch, and what I appreciate the most is the genuine engagement they provide. Do you know how some panels offer bots or fake comments? Well, that's not the case here.
    • Good luck with your project. free games
    • It’s now not exceptional to giggle at someone else’s misfortune,” the jester chastised, clambering to his feet OSRS gold as a 2d determine stepped into the red mild. Uttering a small cry, the wizard swung the glowing tip of the body of workers in the course of the newcomer.   It changed into a goblin. He carried a damaged-tipped spear and sported unwell-becoming chain mail that became too massive for his small body. As he moved, the dented bronze helmet he wore slipped down over his eyes. The creature gave a strangled gurgle in his confusion, and righted the helmet.   “Do now not fear him,” the jester stated. “He lives by the roadside, and begs off strangers.” “I do no longer worry him,” the wizard spoke back, his composure regained. “From the appearance of him, he’s without a doubt now not a fighter. However he ought to be careful now not to make a nuisance of himself, for if he does, most likely he shall be slain.”   “He knows,” the jester answered, his expression severe. “however that is neither here nor there, my friend. Guests of your order are rare indeed in recent times.” He paused, and his expression lightened. “might you possibly be part of us for a past due supper? I’ve roasted a bird over a fireplace.”   He’s in reality a friendly fellow, the wizard mused. Then he glanced within the direction of the partitions, which the darkness had reduced to buy OSRS GP little greater than a black outline.
    • Particularly, it's been stated that the Rogue intended to mimic the gameplay of Diablo 2's murderer and Diablo 3's Demon Hunter, growing a perfect union of the two in one individual. Rogues can use crossbows, imbue arrows with unique homes, and lots extra that all scream Demon Hunter, making it the top generation of the class. At the same time as the Rogue may not be a Demon Hunter in name, it stands to purpose that most of the tendencies discovered in the latter will draw fans to buy cheap Diablo IV Gold the former. As such, even though little is thought and its launch is far away, Demon Hunter enthusiasts probably can't cross incorrect for the Rogue in terms of gameplay.   Diablo 4 lessons: New vs. Acquainted Diablo 4 Barbarian Sorceress Druid Rogue 5th elegance query Mark Of route, the high Dex-primarily based gameplay was only one motive lovers were drawn to the Demon Hunter. The alternative came from the sheer "rule of cool" aspect that the Demon Hunter inherently has; because the "wildcard" magnificence of Diablo 3, it drew eyes as a much less conventional Diablo or RPG class. Combined with the lore built around it, and it turned into a win-win scenario. SMMOexpificantly, snowfall should and should cross for the same marvel attraction in its final Diablo 4 class display.   Right now, each elegance in Diablo 4 has been taken from others: the mainstay Barbarian, the mystical Druids and Sorceresses, and the generation of the Rogue. But if it were to introduce a wildcard magnificence, although it's unlikely to be Dex-based, it could catch the "new" that drew many lovers to the Demon Hunter in the first place. A heavy tank-based elegance makes experience, so possibly in preference to going with a Holy Warrior like Paladin or Crusader, it would be interesting if cheap Diablo 4 Gold brought a Blackguard/Fallen Paladin (however, of course, this is just speculation).
    • So , that's the people I'm sharing my experiences with. However, don't go by yourself. It will make getting in five minutes WoTLK Gold quicker. You'll be working with people who have I recommend joining a guild. Like my best advice, join a huge Guild and create a name for yourself, make friends in the guild and play with the people.   Mental state and, ultimately, it'll end up being a lot more fun than being surrounded by sweaty, hardcore players dressed in the top raid gear, threatening to kick you out because you're only 10 DPS less than what your simulation told you to be doing. Now. I'm aware that this is an odd video. I feel like that's not happening at all.   Like that's not like as long as you're going into the raid, I believe that in the event that you go through the process, it's confident you're not like wasting time. This is true, dude. I never had this shit happen. I've never even had this should happen What do you mean? Oh, man, it's always the same. That's nuts. You're a streamer. I wasn't . I wasn't in the wrath of. I have never been kicked out in any of my groups in the past. Oh, my bro, when did I ever do anything wrong? didn't do that? I'm dead. In 2022, I'm not sure if the year is really that different. I'm beginning to feel that people are overplaying this. I believe they are massively and wildly playing this do not need to shout right man. You're right, these classic Andy's widely used. No, bro. For instance, if I'm in the area and I look at the raids, like I see people all around. They're pissing garbage.   They're just so terrible. Like most of the gamers, they have a terrible time playing it. It's as simple as looking buy WoTLK Classic Gold your character's name and then. It's easy GDK and p. Also, we are going to be doing GD K p knacks raids shortly after McConnell and I have lost everything we begin using for GD K P raids.  
  • 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