Dark Cloud Mansion - Final Room (FifthRoom)

Support for the latest build of L2J Server, get help here with installations, upgrades, problems.
Do not post bugs reports here, use viewforum.php?f=77 instead.
There is no support for other server builds than the official provided by l2jserver.com
Forum rules
READ NOW: L2j Forums Rules of Conduct
Post Reply
amado
Posts: 4
Joined: Mon Nov 23, 2009 9:21 am

Dark Cloud Mansion - Final Room (FifthRoom)

Post by amado »

Hi all
I have a bug in DCM quest, at Final Room (FifthRoom) in my server.
The True:
There are 7 mobs in this room you have to guess the 3 right mobs in a row. If the mob is guessed right he will say something like “Good job” and disappear.

If the mob is guessed wrong he will agro you, you need to kill it and then all the 7 mobs will appear again. It’s a kind of a riddle.
There is no system in it, you can hit the same mobs all over again or just hit them randomly.
But, when I wrong with mobs, 7 mobs don't appear again.
Please help me!

Here is my code in DarkCloudMansion.java file

Code: Select all

public class DarkCloudMansion extends Quest{	public DarkCloudMansion(int questId, String name, String descr)	{		super(questId, name, descr); 		addFirstTalkId(BSM);		addFirstTalkId(SOTruth);		addStartNpc(YIYEN);		addTalkId(YIYEN);		addTalkId(SOTruth);		addAttackId(SC); 		for (int mob : BS)			addAttackId(mob);		for (int mob : CCG)			addAttackId(mob);		for (int mob : TOKILL)			addKillId(mob);	} 	private class DMCNpc	{		public L2Npc npc;		public boolean isDead = false;		public L2Npc golem = null;		public int status = 0;		public int order = 0;		public int count = 0;	} 	private class DMCRoom	{		public FastList<DMCNpc> npcList = new FastList<DMCNpc>();		public int counter = 0;		public int reset = 0;		public int founded = 0;		public int[] Order;	} 	private class DMCWorld extends InstanceWorld	{		public FastMap<String, DMCRoom> rooms = new FastMap<String, DMCRoom>(); 		public DMCWorld()		{			InstanceManager.getInstance().super();		}	} 	private static boolean debug = false;	private static boolean noRndWalk = true; 	private static String qn = "DarkCloudMansion";	private static final int INSTANCEID = 9; 	private class teleCoord	{		int instanceId;		int x;		int y;		int z;	} 	//Items	private static int CC = 9690; //Contaminated Crystal 	//NPCs	private static int YIYEN = 32282;	private static int SOFaith = 32288; //Symbol of Faith	private static int SOAdversity = 32289; //Symbol of Adversity	private static int SOAdventure = 32290; //Symbol of Adventure	private static int SOTruth = 32291; //Symbol of Truth	private static int BSM = 32324; //Black Stone Monolith	private static int SC = 22402; //Shadow Column 	//Mobs	private static int[] CCG = {			18369, 18370	}; //Chromatic Crystal Golem	private static int[] BM = {			22272, 22273, 22274	}; //Beleth's Minions	private static int[] HG = {			22264, 22264	}; //[22318,22319] #Hall Guards	private static int[] BS = {			18371, 18372, 18373, 18374, 18375, 18376, 18377	}; //Beleth's Samples	private static int[] TOKILL = {			18371, 18372, 18373, 18374, 18375, 18376, 18377, 22318, 22319, 22272, 22273, 22274, 18369, 18370, 22402, 22264	}; 	//Doors/Walls	private static int D1 = 24230001; //Starting Room	private static int D2 = 24230002; //First Room	private static int D3 = 24230005; //Second Room	private static int D4 = 24230003; //Third Room	private static int D5 = 24230004; //Forth Room	private static int D6 = 24230006; //Fifth Room	private static int W1 = 24230007; //Wall 1	/*private static int W2 = 24230008; //Wall 2	private static int W3 = 24230009; //Wall 3	private static int W4 = 24230010; //Wall 4	private static int W5 = 24230011; //Wall 5	private static int W6 = 24230012; //Wall 6	private static int W7 = 24230013; //Wall 7*/ 	private static String[] _spawnChat = {			"Trust me!", "Pick me!", "I'm the real one!", "Not that dude, I'm the real one!", "Don't be fooled! Don't be fooled! I'm the real one!!"	}; 	private static String[] _decayChat = {			"Can't you even find out?", "I'm the real one! Phew!!", "Find me!"	}; 	private static String[] _successChat = {			"Excellent choice! Teehee!", "Huh?! How did you know it was me?", "You've done well!", "Oh... very sensible?"	}; 	private static String[] _faildChat = {			"Sorry, but...I'm the fake one.", "You've been fooled!"	}; 	//Second room - random monolith order	private static int[][] MonolithOrder = new int[][] {			{					1, 2, 3, 4, 5, 6			}, {					6, 5, 4, 3, 2, 1			}, {					4, 5, 6, 3, 2, 1			}, {					2, 6, 3, 5, 1, 4			}, {					4, 1, 5, 6, 2, 3			}, {					3, 5, 1, 6, 2, 4			}, {					6, 1, 3, 4, 5, 2			}, {					5, 6, 1, 2, 4, 3			}, {					5, 2, 6, 3, 4, 1			}, {					1, 5, 2, 6, 3, 4			}, {					1, 2, 3, 6, 5, 4			}, {					6, 4, 3, 1, 5, 2			}, {					3, 5, 2, 4, 1, 6			}, {					3, 2, 4, 5, 1, 6			}, {					5, 4, 3, 1, 6, 2			},	}; 	//Second room - golem spawn locatons - random	private static int[][] GolemSpawn = new int[][] {			{					CCG[0], 148060, 181389			}, {					CCG[1], 147910, 181173			}, {					CCG[0], 147810, 181334			}, {					CCG[1], 147713, 181179			}, {					CCG[0], 147569, 181410			}, {					CCG[1], 147810, 181517			}, {					CCG[0], 147805, 181281			}	}; 	//forth room - random shadow column	private static int[][] ColumnRows = new int[][] {			{					1, 1, 0, 1, 0			}, {					0, 1, 1, 0, 1			}, {					1, 0, 1, 1, 0			}, {					0, 1, 0, 1, 1			}, {					1, 0, 1, 0, 1			}	}; 	//Fifth room - beleth order	private static int[][] Beleths = new int[][] {			{					1, 0, 1, 0, 1, 0, 0			}, {					0, 0, 1, 0, 1, 1, 0			}, {					0, 0, 0, 1, 0, 1, 1			}, {					1, 0, 1, 1, 0, 0, 0			}, {					1, 1, 0, 0, 0, 1, 0			}, {					0, 1, 0, 1, 0, 1, 0			}, {					0, 0, 0, 1, 1, 1, 0			}, {					1, 0, 1, 0, 0, 1, 0			}, {					0, 1, 1, 0, 0, 0, 1			}	}; 	protected void openDoor(int doorId, int instanceId)	{		for (L2DoorInstance door : InstanceManager.getInstance().getInstance(instanceId).getDoors())		{			if (door.getDoorId() == doorId)				door.openMe();		}	} 	private boolean checkConditions(L2PcInstance player)	{		if (debug)			return true;		else		{			L2Party party = player.getParty();			if (party == null)			{				player.sendPacket(new SystemMessage(SystemMessageId.NOT_IN_PARTY_CANT_ENTER));				return false;			}			if (party.getLeader() != player)			{				player.sendPacket(new SystemMessage(SystemMessageId.ONLY_PARTY_LEADER_CAN_ENTER));				return false;			}			if (party.getMemberCount() > 2)			{				player.sendPacket(new SystemMessage(SystemMessageId.PARTY_EXCEEDED_THE_LIMIT_CANT_ENTER));				return false;			}			for (L2PcInstance partyMember : party.getPartyMembers())			{				if (partyMember.getLevel() < 78)				{					SystemMessage sm = new SystemMessage(SystemMessageId.C1_LEVEL_REQUIREMENT_NOT_SUFFICIENT);					sm.addPcName(partyMember);					player.sendPacket(sm);					return false;				}				if (!partyMember.isInsideRadius(player, 1000, true, true))				{					SystemMessage sm = new SystemMessage(SystemMessageId.C1_IS_IN_LOCATION_THAT_CANNOT_BE_ENTERED);					sm.addPcName(partyMember);					player.sendPacket(sm);					return false;				}			} 			return true;		}	} 	private void teleportplayer(L2PcInstance player, teleCoord teleto)	{		player.setInstanceId(teleto.instanceId);		player.teleToLocation(teleto.x, teleto.y, teleto.z);		L2Summon pet = player.getPet();		if (pet != null)		{			pet.setInstanceId(teleto.instanceId);			pet.teleToLocation(teleto.x, teleto.y, teleto.z);		} 		return;	} 	protected int enterInstance(L2PcInstance player, String template, teleCoord teleto)	{		int instanceId = 0;		//check for existing instances for this player		InstanceWorld world = InstanceManager.getInstance().getPlayerWorld(player);		//existing instance		if (world != null)		{			if (!(world instanceof DMCWorld))			{				player.sendPacket(new SystemMessage(SystemMessageId.ALREADY_ENTERED_ANOTHER_INSTANCE_CANT_ENTER));				return 0;			}			teleto.instanceId = world.instanceId;			teleportplayer(player, teleto);			return instanceId;		}		//New instance		else		{			if (!checkConditions(player))				return 0;			L2Party party = player.getParty();			instanceId = InstanceManager.getInstance().createDynamicInstance(template);			world = new DMCWorld();			world.instanceId = instanceId;			world.templateId = INSTANCEID;			InstanceManager.getInstance().addWorld(world);			_log.info("DarkCloudMansion: started " + template + " Instance: " + instanceId + " created by player: " + player.getName());			runStartRoom((DMCWorld) world);			// teleport players			teleto.instanceId = instanceId;			if (debug && party == null)			{				world.allowed.add(player.getObjectId());				teleportplayer(player, teleto);			}			else			{				for (L2PcInstance partyMember : party.getPartyMembers())				{					if (partyMember.getQuestState(qn) == null)						newQuestState(partyMember);					world.allowed.add(partyMember.getObjectId());					teleportplayer(partyMember, teleto);				}			} 			return instanceId;		}	} 	protected void exitInstance(L2PcInstance player, teleCoord tele)	{		player.setInstanceId(0);		player.teleToLocation(tele.x, tele.y, tele.z);		L2Summon pet = player.getPet();		if (pet != null)		{			pet.setInstanceId(0);			pet.teleToLocation(tele.x, tele.y, tele.z);		}	} 	protected void runStartRoom(DMCWorld world)	{		world.status = 0;		DMCRoom StartRoom = new DMCRoom();		DMCNpc thisnpc; 		thisnpc = new DMCNpc();		thisnpc.npc = addSpawn(BM[0], 146817, 180335, -6117, 0, false, 0, false, world.instanceId);		StartRoom.npcList.add(thisnpc);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true); 		thisnpc = new DMCNpc();		thisnpc.npc = addSpawn(BM[0], 146741, 180589, -6117, 0, false, 0, false, world.instanceId);		StartRoom.npcList.add(thisnpc);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		world.rooms.put("StartRoom", StartRoom);		if (debug)			_log.info("DarkCloudMansion: first room spawned in instance " + world.instanceId);	} 	protected void spawnHall(DMCWorld world)	{		DMCRoom Hall = new DMCRoom();		DMCNpc thisnpc;		world.rooms.remove("Hall"); //remove room instance to avoid adding mob every time 		thisnpc = new DMCNpc();		thisnpc.npc = addSpawn(BM[1], 147217, 180112, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		Hall.npcList.add(thisnpc); 		thisnpc = new DMCNpc();		thisnpc.npc = addSpawn(BM[2], 147217, 180209, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		Hall.npcList.add(thisnpc); 		thisnpc = new DMCNpc();		thisnpc.npc = addSpawn(BM[1], 148521, 180112, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		Hall.npcList.add(thisnpc); 		thisnpc = new DMCNpc();		thisnpc.npc = addSpawn(BM[0], 148521, 180209, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		Hall.npcList.add(thisnpc); 		thisnpc = new DMCNpc();		thisnpc.npc = addSpawn(BM[1], 148525, 180910, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		Hall.npcList.add(thisnpc); 		thisnpc = new DMCNpc();		thisnpc.npc = addSpawn(BM[2], 148435, 180910, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		Hall.npcList.add(thisnpc); 		thisnpc = new DMCNpc();		thisnpc.npc = addSpawn(BM[1], 147242, 180910, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		Hall.npcList.add(thisnpc); 		thisnpc = new DMCNpc();		thisnpc.npc = addSpawn(BM[2], 147242, 180819, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		Hall.npcList.add(thisnpc); 		world.rooms.put("Hall", Hall);		if (debug)			_log.info("DarkCloudMansion: hall spawned");	} 	protected void runHall(DMCWorld world)	{		spawnHall(world);		world.status = 1;		openDoor(D1, world.instanceId);	} 	protected void runFirstRoom(DMCWorld world)	{		DMCRoom FirstRoom = new DMCRoom();		DMCNpc thisnpc; 		thisnpc = new DMCNpc();		thisnpc.npc = addSpawn(HG[1], 147842, 179837, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		FirstRoom.npcList.add(thisnpc); 		thisnpc = new DMCNpc();		thisnpc.npc = addSpawn(HG[0], 147711, 179708, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		FirstRoom.npcList.add(thisnpc); 		thisnpc = new DMCNpc();		thisnpc.npc = addSpawn(HG[1], 147842, 179552, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		FirstRoom.npcList.add(thisnpc); 		thisnpc = new DMCNpc();		thisnpc.npc = addSpawn(HG[0], 147964, 179708, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		FirstRoom.npcList.add(thisnpc); 		world.rooms.put("FirstRoom", FirstRoom);		world.status = 2;		openDoor(D2, world.instanceId);		if (debug)			_log.info("DarkCloudMansion: spawned first room");	} 	protected void runHall2(DMCWorld world)	{		addSpawn(SOFaith, 147818, 179643, -6117, 0, false, 0, false, world.instanceId);		spawnHall(world);		world.status = 3;	} 	protected void runSecondRoom(DMCWorld world)	{		DMCRoom SecondRoom = new DMCRoom();		DMCNpc thisnpc; 		// TODO: find a better way to initialize to [1,0,0,0,0,0,0]		SecondRoom.Order = new int[7];		SecondRoom.Order[0] = 1;		for (int i = 1; i < 7; i++)			SecondRoom.Order[i] = 0; 		int i = Rnd.get(MonolithOrder.length); 		thisnpc = new DMCNpc();		thisnpc.npc = addSpawn(BSM, 147800, 181150, -6117, 0, false, 0, false, world.instanceId);		thisnpc.order = MonolithOrder[i][0];		SecondRoom.npcList.add(thisnpc); 		thisnpc = new DMCNpc();		thisnpc.npc = addSpawn(BSM, 147900, 181215, -6117, 0, false, 0, false, world.instanceId);		thisnpc.order = MonolithOrder[i][1];		SecondRoom.npcList.add(thisnpc); 		thisnpc = new DMCNpc();		thisnpc.npc = addSpawn(BSM, 147900, 181345, -6117, 0, false, 0, false, world.instanceId);		thisnpc.order = MonolithOrder[i][2];		SecondRoom.npcList.add(thisnpc); 		thisnpc = new DMCNpc();		thisnpc.npc = addSpawn(BSM, 147800, 181410, -6117, 0, false, 0, false, world.instanceId);		thisnpc.order = MonolithOrder[i][3];		SecondRoom.npcList.add(thisnpc); 		thisnpc = new DMCNpc();		thisnpc.npc = addSpawn(BSM, 147700, 181345, -6117, 0, false, 0, false, world.instanceId);		thisnpc.order = MonolithOrder[i][4];		SecondRoom.npcList.add(thisnpc); 		thisnpc = new DMCNpc();		thisnpc.npc = addSpawn(BSM, 147700, 181215, -6117, 0, false, 0, false, world.instanceId);		thisnpc.order = MonolithOrder[i][5];		SecondRoom.npcList.add(thisnpc); 		world.rooms.put("SecondRoom", SecondRoom);		world.status = 4;		openDoor(D3, world.instanceId);		if (debug)			_log.info("DarkCloudMansion: spawned second room");	} 	protected void runHall3(DMCWorld world)	{		addSpawn(SOAdversity, 147808, 181281, -6117, 16383, false, 0, false, world.instanceId);		spawnHall(world);		world.status = 5;	} 	protected void runThirdRoom(DMCWorld world)	{		DMCRoom ThirdRoom = new DMCRoom();		DMCNpc thisnpc = new DMCNpc();		thisnpc.isDead = false;		thisnpc.npc = addSpawn(BM[1], 148765, 180450, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		ThirdRoom.npcList.add(thisnpc);		thisnpc.npc = addSpawn(BM[2], 148865, 180190, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		ThirdRoom.npcList.add(thisnpc);		thisnpc.npc = addSpawn(BM[1], 148995, 180190, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		ThirdRoom.npcList.add(thisnpc);		thisnpc.npc = addSpawn(BM[0], 149090, 180450, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		ThirdRoom.npcList.add(thisnpc);		thisnpc.npc = addSpawn(BM[1], 148995, 180705, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		ThirdRoom.npcList.add(thisnpc);		thisnpc.npc = addSpawn(BM[2], 148865, 180705, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		ThirdRoom.npcList.add(thisnpc);		world.rooms.put("ThirdRoom", ThirdRoom);		world.status = 6;		openDoor(D4, world.instanceId);		if (debug)			_log.info("DarkCloudMansion: spawned third room");	} 	protected void runThirdRoom2(DMCWorld world)	{		addSpawn(SOAdventure, 148910, 178397, -6117, 16383, false, 0, false, world.instanceId);		DMCRoom ThirdRoom = new DMCRoom();		DMCNpc thisnpc = new DMCNpc();		thisnpc.isDead = false;		thisnpc.npc = addSpawn(BM[1], 148765, 180450, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		ThirdRoom.npcList.add(thisnpc);		thisnpc.npc = addSpawn(BM[2], 148865, 180190, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		ThirdRoom.npcList.add(thisnpc);		thisnpc.npc = addSpawn(BM[1], 148995, 180190, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		ThirdRoom.npcList.add(thisnpc);		thisnpc.npc = addSpawn(BM[0], 149090, 180450, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		ThirdRoom.npcList.add(thisnpc);		thisnpc.npc = addSpawn(BM[1], 148995, 180705, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		ThirdRoom.npcList.add(thisnpc);		thisnpc.npc = addSpawn(BM[2], 148865, 180705, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			thisnpc.npc.setIsNoRndWalk(true);		ThirdRoom.npcList.add(thisnpc);		world.rooms.put("ThirdRoom2", ThirdRoom);		world.status = 8;		if (debug)			_log.info("DarkCloudMansion: spawned third room second time");	} 	protected void runForthRoom(DMCWorld world)	{		DMCRoom ForthRoom = new DMCRoom();		ForthRoom.counter = 0;		DMCNpc thisnpc;		int temp[] = new int[7];		int templist[][] = new int[7][5];		int xx = 0; 		for (int i = 0; i < 7; i++)			temp[i] = Rnd.get(ColumnRows.length); 		for (int i = 0; i < 7; i++)			templist[i] = ColumnRows[temp[i]]; 		for (int x = 148660; x < 149285; x += 125)		{			int yy = 0;			for (int y = 179280; y > 178405; y -= 125)			{				thisnpc = new DMCNpc();				thisnpc.npc = addSpawn(SC, x, y, -6115, 16215, false, 0, false, world.instanceId);				thisnpc.status = templist[yy][xx];				thisnpc.order = yy;				ForthRoom.npcList.add(thisnpc);				yy++;			}			xx++;		}		//TODO: unify this into previous loop		for (DMCNpc npc : ForthRoom.npcList)		{			if (npc.status == 0)				npc.npc.setIsInvul(true);		} 		world.rooms.put("ForthRoom", ForthRoom);		world.status = 7;		openDoor(D5, world.instanceId);		if (debug)			_log.info("DarkCloudMansion: spawned forth room");	} 	protected void runFifthRoom(DMCWorld world)	{		spawnFifthRoom(world);		world.status = 9;		openDoor(D6, world.instanceId);		if (debug)			_log.info("DarkCloudMansion: spawned fifth room");	} 	private void spawnFifthRoom(DMCWorld world)	{		int idx = 0;		int temp[] = new int[6];		DMCRoom FifthRoom = new DMCRoom();		DMCNpc thisnpc; 		temp = Beleths[Rnd.get(Beleths.length)]; 		FifthRoom.reset = 0;		FifthRoom.founded = 0; 		for (int x = 148720; x < 149175; x += 65)		{			thisnpc = new DMCNpc();			thisnpc.npc = addSpawn(BS[idx], x, 182145, -6117, 48810, false, 0, false, world.instanceId);			thisnpc.npc.setIsNoRndWalk(true);			thisnpc.order = idx;			thisnpc.status = temp[idx];			thisnpc.count = 0;			FifthRoom.npcList.add(thisnpc);			if (temp[idx] == 1 && Rnd.get(100) < 95)				thisnpc.npc.broadcastPacket(new NpcSay(thisnpc.npc.getObjectId(), 0, thisnpc.npc.getNpcId(), _spawnChat[Rnd.get(_spawnChat.length)]));			else if (temp[idx] != 1 && Rnd.get(100) < 67)				thisnpc.npc.broadcastPacket(new NpcSay(thisnpc.npc.getObjectId(), 0, thisnpc.npc.getNpcId(), _spawnChat[Rnd.get(_spawnChat.length)]));			idx++;		} 		world.rooms.put("FifthRoom", FifthRoom);	} 	protected boolean checkKillProgress(L2Npc npc, DMCRoom room)	{		boolean cont = true;		for (DMCNpc npcobj : room.npcList)		{			if (npcobj.npc == npc)				npcobj.isDead = true;			if (npcobj.isDead == false)				cont = false;		} 		return cont;	} 	protected void spawnRndGolem(DMCWorld world, DMCNpc npc)	{		if (npc.golem != null)			return; 		int i = Rnd.get(GolemSpawn.length);		int mobId = GolemSpawn[i][0];		int x = GolemSpawn[i][1];		int y = GolemSpawn[i][2]; 		npc.golem = addSpawn(mobId, x, y, -6117, 0, false, 0, false, world.instanceId);		if (noRndWalk)			npc.golem.setIsNoRndWalk(true);	} 	protected void checkStone(L2Npc npc, int order[], DMCNpc npcObj, DMCWorld world)	{		for (int i = 1; i < 7; i++)		{			//if there is a non zero value in the precedent step, the sequence is ok			if (order[i] == 0 && order[i - 1] != 0)			{				if (npcObj.order == i && npcObj.status == 0)				{					order[i] = 1;					npcObj.status = 1;					npcObj.isDead = true;					npc.broadcastPacket(new MagicSkillUse(npc, npc, 5441, 1, 1, 0));					return;				}			}		} 		spawnRndGolem(world, npcObj);	} 	protected void endInstance(DMCWorld world)	{		world.status = 10;		addSpawn(SOTruth, 148911, 181940, -6117, 16383, false, 0, false, world.instanceId);		world.rooms.clear();		if (debug)			_log.info("DarkCloudMansion: finished");	} 	protected void checkBelethSample(DMCWorld world, L2Npc npc, L2PcInstance player)	{		DMCRoom FifthRoom = world.rooms.get("FifthRoom"); 		for (DMCNpc mob : FifthRoom.npcList)		{			if (mob.npc == npc)			{				if (mob.count == 0)				{					mob.count = 1;					if (mob.status == 1)					{						mob.npc.broadcastPacket(new NpcSay(mob.npc.getObjectId(), 0, mob.npc.getNpcId(), _successChat[Rnd.get(_successChat.length)]));						FifthRoom.founded += 1;						startQuestTimer("decayMe", 1500, npc, player);					}					else					{						FifthRoom.reset = 1;						mob.npc.broadcastPacket(new NpcSay(mob.npc.getObjectId(), 0, mob.npc.getNpcId(), _faildChat[Rnd.get(_faildChat.length)]));						startQuestTimer("decayChatBelethSamples", 4000, npc, player);						startQuestTimer("decayBelethSamples", 4500, npc, player);					}				}				else					return;			}		}	} 	protected void killedBelethSample(DMCWorld world, L2Npc npc)	{		int decayedSamples = 0;		DMCRoom FifthRoom = world.rooms.get("FifthRoom"); 		for (DMCNpc mob : FifthRoom.npcList)		{			if (mob.npc == npc)			{				decayedSamples += 1;				mob.count = 2;			}			else			{				if (mob.count == 2)					decayedSamples += 1;			}		} 		if (FifthRoom.reset == 1)		{			for (DMCNpc mob : FifthRoom.npcList)			{				if (mob.count == 0 || (mob.status == 1 && mob.count != 2))				{					decayedSamples += 1;					mob.npc.decayMe();					mob.count = 2;				}			}			if (decayedSamples == 7)				spawnFifthRoom(world);		}		else		{			if (FifthRoom.reset == 0 && FifthRoom.founded == 3)			{				for (DMCNpc mob : FifthRoom.npcList)					mob.npc.decayMe();				endInstance(world);			}		}	} 	protected boolean allStonesDone(DMCWorld world)	{		DMCRoom SecondRoom = world.rooms.get("SecondRoom"); 		for (DMCNpc mob : SecondRoom.npcList)		{			if (mob.isDead)				continue;			else				return false;		} 		return true;	} 	protected void removeMonoliths(DMCWorld world)	{		DMCRoom SecondRoom = world.rooms.get("SecondRoom"); 		for (DMCNpc mob : SecondRoom.npcList)			mob.npc.decayMe();	} 	protected void chkShadowColumn(DMCWorld world, L2Npc npc)	{		DMCRoom ForthRoom = world.rooms.get("ForthRoom"); 		for (DMCNpc mob : ForthRoom.npcList)		{			if (mob.npc == npc)			{				for (int i = 0; i < 7; i++)				{					if (mob.order == i && ForthRoom.counter == i)					{						openDoor(W1 + i, world.instanceId);						ForthRoom.counter += 1;						if (ForthRoom.counter == 7)							runThirdRoom2(world);					}				}			}		}	} 	@Override	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)	{		if (npc == null)			return ""; 		InstanceWorld tmpworld = InstanceManager.getInstance().getWorld(npc.getInstanceId());		DMCWorld world;		if (tmpworld instanceof DMCWorld)			world = (DMCWorld) tmpworld;		else			return ""; 		if (world.rooms.containsKey("FifthRoom"))		{			DMCRoom FifthRoom = world.rooms.get("FifthRoom");			if (event.equalsIgnoreCase("decayMe"))			{				for (DMCNpc mob : FifthRoom.npcList)				{					if (mob.npc == npc || (FifthRoom.reset == 0 && FifthRoom.founded == 3))					{						mob.npc.decayMe();						mob.count = 2;					}				}				if (FifthRoom.reset == 0 && FifthRoom.founded == 3)					endInstance(world);			}			else if (event.equalsIgnoreCase("decayBelethSamples"))			{				for (DMCNpc mob : FifthRoom.npcList)				{					if (mob.count == 0)					{						mob.npc.decayMe();						mob.count = 2;					}				}			}			else if (event.equalsIgnoreCase("decayChatBelethSamples"))			{				for (DMCNpc mob : FifthRoom.npcList)				{					if (mob.status == 1)						mob.npc.broadcastPacket(new NpcSay(mob.npc.getObjectId(), 0, mob.npc.getNpcId(), _decayChat[Rnd.get(_decayChat.length)]));				}			}		} 		return "";	} 	@Override	public String onKill(L2Npc npc, L2PcInstance player, boolean isPet)	{		InstanceWorld tmpworld = InstanceManager.getInstance().getWorld(npc.getInstanceId());		DMCWorld world;		if (tmpworld instanceof DMCWorld)		{			world = (DMCWorld) tmpworld;			if (world.status == 0)			{				if (checkKillProgress(npc, world.rooms.get("StartRoom")))					runHall(world);			}			if (world.status == 1)			{				if (checkKillProgress(npc, world.rooms.get("Hall")))					runFirstRoom(world);			}			if (world.status == 2)			{				if (checkKillProgress(npc, world.rooms.get("FirstRoom")))					runHall2(world);			}			if (world.status == 3)			{				if (checkKillProgress(npc, world.rooms.get("Hall")))					runSecondRoom(world);			}			if (world.status == 4)			{				DMCRoom SecondRoom = world.rooms.get("SecondRoom");				for (DMCNpc mob : SecondRoom.npcList)				{					if (mob.golem == npc)						mob.golem = null;				}			}			if (world.status == 5)			{				if (checkKillProgress(npc, world.rooms.get("Hall")))					runThirdRoom(world);			}			if (world.status == 6)			{				if (checkKillProgress(npc, world.rooms.get("ThirdRoom")))					runForthRoom(world);			}			if (world.status == 7)				chkShadowColumn(world, npc);			if (world.status == 8)			{				if (checkKillProgress(npc, world.rooms.get("ThirdRoom2")))					runFifthRoom(world);			}			if (world.status == 9)				killedBelethSample(world, npc);		} 		return "";	} 	@Override	public String onAttack(L2Npc npc, L2PcInstance player, int damage, boolean isPet, L2Skill skill)	{		InstanceWorld tmpworld = InstanceManager.getInstance().getWorld(npc.getInstanceId());		DMCWorld world;		if (tmpworld instanceof DMCWorld)		{			world = (DMCWorld) tmpworld;			if (world.status == 7)			{				DMCRoom ForthRoom = world.rooms.get("ForthRoom");				for (DMCNpc mob : ForthRoom.npcList)				{					if (mob.npc == npc)					{						if (mob.npc.isInvul() && Rnd.get(100) < 12)						{							if (debug)								_log.info("DarkCloudMansion: spawn room 4 guard");							addSpawn(BM[Rnd.get(BM.length)], player.getX(), player.getY(), player.getZ(), 0, false, 0, false, world.instanceId);						}					}				}			}			if (world.status == 9)				checkBelethSample(world, npc, player);		} 		return "";	} 	@Override	public String onFirstTalk(L2Npc npc, L2PcInstance player)	{		InstanceWorld tmpworld = InstanceManager.getInstance().getWorld(npc.getInstanceId());		DMCWorld world;		if (tmpworld instanceof DMCWorld)		{			world = (DMCWorld) tmpworld;			if (world.status == 4)			{				DMCRoom SecondRoom = world.rooms.get("SecondRoom");				for (DMCNpc mob : SecondRoom.npcList)				{					if (mob.npc == npc)						checkStone(npc, SecondRoom.Order, mob, world);				} 				if (allStonesDone(world))				{					removeMonoliths(world);					runHall3(world);				}			} 			if (npc.getNpcId() == SOTruth && world.status == 10)			{				npc.showChatWindow(player);				QuestState st = player.getQuestState(qn);				if (st == null)					st = newQuestState(player); 				if (st.getQuestItemsCount(CC) < 1)					st.giveItems(CC, 1);			}		} 		return "";	} 	@Override	public String onTalk(L2Npc npc, L2PcInstance player)	{		int npcId = npc.getNpcId();		if (npcId == YIYEN)		{			teleCoord tele = new teleCoord();			tele.x = 146534;			tele.y = 180464;			tele.z = -6117;			enterInstance(player, "DarkCloudMansion.xml", tele);		}		else		{			InstanceWorld tmpworld = InstanceManager.getInstance().getWorld(npc.getInstanceId());			DMCWorld world;			if (tmpworld instanceof DMCWorld)				world = (DMCWorld) tmpworld;			else				return ""; 			if (npcId == SOTruth)			{				teleCoord tele = new teleCoord();				tele.x = 139968;				tele.y = 150367;				tele.z = -3111;				if (world.allowed.contains(player.getObjectId()))				{					if (debug)						_log.info("DarkCloudMansion - id " + player.getObjectId() + " removed from allowed player in this Instances.");					world.allowed.remove(world.allowed.indexOf(player.getObjectId()));				}				exitInstance(player, tele);				int instanceId = npc.getInstanceId();				Instance instance = InstanceManager.getInstance().getInstance(instanceId);				if (instance.isEmpty())					InstanceManager.getInstance().destroyInstance(instanceId); 				return "";			}		} 		return "";	} 	public static void main(String[] args)	{		// now call the constructor (starts up the)		new DarkCloudMansion(-1, "DarkCloudMansion", qn);	}}
Many Thanks
kurtspirit
Posts: 411
Joined: Thu Mar 12, 2009 8:20 pm
Location: Toulouse, France

Re: Dark Cloud Mansion - Final Room (FifthRoom)

Post by kurtspirit »

Sorry i reply here but i have allways same problem.. Have you resolve it?? How have you done that?? THank you
kurtspirit
Posts: 411
Joined: Thu Mar 12, 2009 8:20 pm
Location: Toulouse, France

Re: Dark Cloud Mansion - Final Room (FifthRoom)

Post by kurtspirit »

I test it with clean DP/Core and working well... One dev can tell me what is the file used in core when mobs final respawn ?? l2npc.java?? I'll try to correct this , i have some custom so i want to check it , maybe one make this problem..
Thank you
kurtspirit
Posts: 411
Joined: Thu Mar 12, 2009 8:20 pm
Location: Toulouse, France

Re: Dark Cloud Mansion - Final Room (FifthRoom)

Post by kurtspirit »

PLease help me, DCM don't want to work :/ I try to find which files is used for this instance but i'm really lost.. Can you help me please??
Actually, mob respawn just 1 or 2 times and after nothing..
Thank you
kurtspirit
Posts: 411
Joined: Thu Mar 12, 2009 8:20 pm
Location: Toulouse, France

Re: Dark Cloud Mansion - Final Room (FifthRoom)

Post by kurtspirit »

A last Up for helping me please...
Post Reply