Hello, how i can delete a condition for party from Kamaloka instances? And i want to delete too level conditions. To make available after level 1-85.
Spoiler
/*
* Copyright (C) 2004-2015 L2J DataPack
*
* This file is part of L2J DataPack.
*
* L2J DataPack 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.
*
* L2J DataPack 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 instances.Kamaloka;import instances.AbstractInstance;import java.util.ArrayList;import java.util.Arrays;import java.util.Calendar;import java.util.List;import java.util.Map;import l2r.gameserver.data.xml.impl.SkillData;import l2r.gameserver.instancemanager.InstanceManager;import l2r.gameserver.model.L2Party;import l2r.gameserver.model.L2Spawn;import l2r.gameserver.model.L2World;import l2r.gameserver.model.Location;import l2r.gameserver.model.actor.L2Character;import l2r.gameserver.model.actor.L2Npc;import l2r.gameserver.model.actor.instance.L2PcInstance;import l2r.gameserver.model.effects.L2Effect;import l2r.gameserver.model.entity.Instance;import l2r.gameserver.model.instancezone.InstanceWorld;import l2r.gameserver.model.skills.L2Skill;import l2r.gameserver.network.SystemMessageId;import l2r.gameserver.network.serverpackets.SystemMessage;public final classKamaloka extends AbstractInstance{/*
* Reset time for all kamaloka Default: 6:30AM on server time
*/privatestatic final int RESET_HOUR =6;/*
* Time after which instance without players will be destroyed Default: 5 minutes
*/privatestatic final int EMPTY_DESTROY_TIME =5;/*
* Time to destroy instance (and eject players away) after boss defeat Default: 5 minutes
*/privatestatic final int EXIT_TIME =5;/*
* Maximum level difference between players level and kamaloka level Default: 5
*/privatestatic final int MAX_LEVEL_DIFFERENCE =5;/*
* If true shaman in the first room will have same npcId as other mobs, making radar useless Default: true (but not retail like)
*/privatestatic final boolean STEALTH_SHAMAN =true;// Template IDs for Kamaloka// @formatter:offprivatestatic final int[] TEMPLATE_IDS ={57,58,73,60,61,74,63,64,75,66,67,76,69,70,77,72,78,79,134};// Level of the Kamalokaprivatestatic final int[] LEVEL ={85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85};// Duration of the instance, minutesprivatestatic final int[] DURATION ={30,30,45,30,30,45,30,30,45,30,30,45,30,30,45,30,45,45,45};// Maximum party size for the instanceprivatestatic final int[] MAX_PARTY_SIZE ={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};/**
* List of buffs NOT removed on enter from player and pet<br>
* On retail only newbie guide buffs not removed<br>
* CAUTION: array must be sorted in ascension order!
*/protectedstatic final int[] BUFFS_WHITELIST ={4322,4323,4324,4325,4326,4327,4328,4329,4330,4331,5632,5637,5950};// @formatter:on// Teleport points into instances x, y, zprivatestatic final Location[] TELEPORTS ={newLocation(-88429,-220629,-7903),newLocation(-82464,-219532,-7899),newLocation(-10700,-174882,-10936),// -76280, -185540, -10936newLocation(-89683,-213573,-8106),newLocation(-81413,-213568,-8104),newLocation(-10700,-174882,-10936),// -76280, -174905, -10936newLocation(-89759,-206143,-8120),newLocation(-81415,-206078,-8107),newLocation(-10700,-174882,-10936),newLocation(-56999,-219856,-8117),newLocation(-48794,-220261,-8075),newLocation(-10700,-174882,-10936),newLocation(-56940,-212939,-8072),newLocation(-55566,-206139,-8120),newLocation(-10700,-174882,-10936),newLocation(-49805,-206139,-8117),newLocation(-10700,-174882,-10936),newLocation(-10700,-174882,-10936),newLocation(22003,-174886,-10900),};// Respawn delay for the mobs in the first room, seconds Default: 25privatestatic final int FIRST_ROOM_RESPAWN_DELAY =25;//@formatter:off/*
* First room information, null if room not spawned
* Skill is casted on the boss when shaman is defeated and mobs respawn stopped
* Default: 5699 (decrease pdef)
*
* shaman npcId, minions npcId, skillId, skillLvl
*/privatestatic final int[][] FIRST_ROOM ={null,null,{22485,22486,5699,1},null,null,{22488,22489,5699,2},null,null,{22491,22492,5699,3},null,null,{22494,22495,5699,4},null,null,{22497,22498,5699,5},null,{22500,22501,5699,6},{22503,22504,5699,7},{25706,25707,5699,7}};/*
* First room spawns, null if room not spawned
*
* x, y, z
*/privatestatic final int[][][] FIRST_ROOM_SPAWNS ={null,null,{{-12381,-174973,-10955},{-12413,-174905,-10955},{-12377,-174838,-10953},{-12316,-174903,-10953},{-12326,-174786,-10953},{-12330,-175024,-10953},{-12211,-174900,-10955},{-12238,-174849,-10953},{-12233,-174954,-10953}},null,null,{{-12381,-174973,-10955},{-12413,-174905,-10955},{-12377,-174838,-10953},{-12316,-174903,-10953},{-12326,-174786,-10953},{-12330,-175024,-10953},{-12211,-174900,-10955},{-12238,-174849,-10953},{-12233,-174954,-10953}},null,null,{{-12381,-174973,-10955},{-12413,-174905,-10955},{-12377,-174838,-10953},{-12316,-174903,-10953},{-12326,-174786,-10953},{-12330,-175024,-10953},{-12211,-174900,-10955},{-12238,-174849,-10953},{-12233,-174954,-10953}},null,null,{{-12381,-174973,-10955},{-12413,-174905,-10955},{-12377,-174838,-10953},{-12316,-174903,-10953},{-12326,-174786,-10953},{-12330,-175024,-10953},{-12211,-174900,-10955},{-12238,-174849,-10953},{-12233,-174954,-10953}},null,null,{{-12381,-174973,-10955},{-12413,-174905,-10955},{-12377,-174838,-10953},{-12316,-174903,-10953},{-12326,-174786,-10953},{-12330,-175024,-10953},{-12211,-174900,-10955},{-12238,-174849,-10953},{-12233,-174954,-10953}},null,{{-12381,-174973,-10955},{-12413,-174905,-10955},{-12377,-174838,-10953},{-12316,-174903,-10953},{-12326,-174786,-10953},{-12330,-175024,-10953},{-12211,-174900,-10955},{-12238,-174849,-10953},{-12233,-174954,-10953}},{{-12381,-174973,-10955},{-12413,-174905,-10955},{-12377,-174838,-10953},{-12316,-174903,-10953},{-12326,-174786,-10953},{-12330,-175024,-10953},{-12211,-174900,-10955},{-12238,-174849,-10953},{-12233,-174954,-10953}},{{20409,-174827,-10912},{20409,-174947,-10912},{20494,-174887,-10912},{20494,-174767,-10912},{20614,-174887,-10912},{20579,-174827,-10912},{20579,-174947,-10912},{20494,-175007,-10912},{20374,-174887,-10912}}};/*
* Second room information, null if room not spawned
* Skill is casted on the boss when all mobs are defeated
* Default: 5700 (decrease mdef)
*
* npcId, skillId, skillLvl
*/privatestatic final int[][] SECOND_ROOM ={null,null,{22487,5700,1},null,null,{22490,5700,2},null,null,{22493,5700,3},null,null,{22496,5700,4},null,null,{22499,5700,5},null,{22502,5700,6},{22505,5700,7},{25708,5700,7}};/*
* Spawns for second room, null if room not spawned
*
* x, y, z
*/privatestatic final int[][][] SECOND_ROOM_SPAWNS ={null,null,{{-14547,-174901,-10690},{-14543,-175030,-10690},{-14668,-174900,-10690},{-14538,-174774,-10690},{-14410,-174904,-10690}},null,null,{{-14547,-174901,-10690},{-14543,-175030,-10690},{-14668,-174900,-10690},{-14538,-174774,-10690},{-14410,-174904,-10690}},null,null,{{-14547,-174901,-10690},{-14543,-175030,-10690},{-14668,-174900,-10690},{-14538,-174774,-10690},{-14410,-174904,-10690}},null,null,{{-14547,-174901,-10690},{-14543,-175030,-10690},{-14668,-174900,-10690},{-14538,-174774,-10690},{-14410,-174904,-10690}},null,null,{{-14547,-174901,-10690},{-14543,-175030,-10690},{-14668,-174900,-10690},{-14538,-174774,-10690},{-14410,-174904,-10690}},null,{{-14547,-174901,-10690},{-14543,-175030,-10690},{-14668,-174900,-10690},{-14538,-174774,-10690},{-14410,-174904,-10690}},{{-14547,-174901,-10690},{-14543,-175030,-10690},{-14668,-174900,-10690},{-14538,-174774,-10690},{-14410,-174904,-10690}},{{18175,-174991,-10653},{18070,-174890,-10655},{18157,-174886,-10655},{18249,-174885,-10653},{18144,-174821,-10648}}};// miniboss info// skill is casted on the boss when miniboss is defeated// npcId, x, y, z, skill id, skill level/*
* Miniboss information, null if miniboss not spawned
* Skill is casted on the boss when miniboss is defeated
* Default: 5701 (decrease patk)
*
* npcId, x, y, z, skillId, skillLvl
*/privatestatic final int[][] MINIBOSS ={null,null,{25616,-16874,-174900,-10427,5701,1},null,null,{25617,-16874,-174900,-10427,5701,2},null,null,{25618,-16874,-174900,-10427,5701,3},null,null,{25619,-16874,-174900,-10427,5701,4},null,null,{25620,-16874,-174900,-10427,5701,5},null,{25621,-16874,-174900,-10427,5701,6},{25622,-16874,-174900,-10427,5701,7},{25709,15828,-174885,-10384,5701,7}};/*
* Bosses of the kamaloka
* Instance ends when boss is defeated
*
* npcId, x, y, z
*/privatestatic final int[][] BOSS ={{18554,-88998,-220077,-7892},{18555,-81891,-220078,-7893},{29129,-20659,-174903,-9983},{18558,-89183,-213564,-8100},{18559,-81937,-213566,-8100},{29132,-20659,-174903,-9983},{18562,-89054,-206144,-8115},{18564,-81937,-206077,-8100},{29135,-20659,-174903,-9983},{18566,-56281,-219859,-8115},{18568,-49336,-220260,-8068},{29138,-20659,-174903,-9983},{18571,-56415,-212939,-8068},{18573,-56281,-206140,-8115},{29141,-20659,-174903,-9983},{18577,-49084,-206140,-8115},{29144,-20659,-174903,-9983},{29147,-20659,-174903,-9983},{25710,12047,-174887,-9944}};/*
* Escape telepoters spawns, null if not spawned
*
* x, y, z
*/privatestatic final int[][] TELEPORTERS ={null,null,{-10865,-174905,-10944},null,null,{-10865,-174905,-10944},null,null,{-10865,-174905,-10944},null,null,{-10865,-174905,-10944},null,null,{-10865,-174905,-10944},null,{-10865,-174905,-10944},{-10865,-174905,-10944},{21837,-174885,-10904}};/*
* Escape teleporter npcId
*/privatestatic final int TELEPORTER =32496;/*
* Kamaloka captains (start npc's) npcIds.
*/privatestatic final int[] CAPTAINS ={30332,30071,30916,30196,31981,31340};//@formatter:onprotectedclassKamaWorld extends InstanceWorld{publicint index;// 0-18 index of the kama type in arrayspublicint shaman =0;// objectId of the shamanpublicList<L2Spawn> firstRoom;// list of the spawns in the first room (excluding shaman)publicList<Integer> secondRoom;// list of objectIds mobs in the second roompublicint miniBoss =0;// objectId of the minibosspublic L2Npc boss =null;// boss}publicKamaloka(){
super(Kamaloka.class.getSimpleName());
addFirstTalkId(TELEPORTER);
addTalkId(TELEPORTER);
addStartNpc(CAPTAINS);
addTalkId(CAPTAINS);for(int[] mob : FIRST_ROOM){if(mob !=null){if(STEALTH_SHAMAN){
addKillId(mob[1]);}else{
addKillId(mob[0]);}}}for(int[] mob : SECOND_ROOM){if(mob !=null){
addKillId(mob[0]);}}for(int[] mob : MINIBOSS){if(mob !=null){
addKillId(mob[0]);}}for(int[] mob : BOSS){
addKillId(mob[0]);}}/**
* Check if party with player as leader allowed to enter
* @param player party leader
* @param index (0-18) index of the kamaloka in arrays
* @return true if party allowed to enter
*/privatestatic final boolean checkPartyConditions(L2PcInstance player,int index){if(player.isGM()){returntrue;}
final L2Party party = player.getParty();// player must be in party// ...and be party leader// party must not exceed max size for selected instanceif(party.getMemberCount()> MAX_PARTY_SIZE[index]){
player.sendPacket(SystemMessageId.PARTY_EXCEEDED_THE_LIMIT_CANT_ENTER);returnfalse;}// get level of the instance
final int level = LEVEL[index];// and client name
final String instanceName =InstanceManager.getInstance().getInstanceIdName(TEMPLATE_IDS[index]);Map<Integer,Long> instanceTimes;// for each party memberfor(L2PcInstance partyMember : party.getMembers()){// player level must be in rangeif(Math.abs(player.getLevel()- level)> MAX_LEVEL_DIFFERENCE){SystemMessage sm =SystemMessage.getSystemMessage(SystemMessageId.C1_S_LEVEL_REQUIREMENT_IS_NOT_SUFFICIENT_AND_CANNOT_BE_ENTERED);
sm.addPcName(player);
player.sendPacket(sm);returnfalse;}// player must be near party leaderif(!partyMember.isInsideRadius(player,1000,true,true)){SystemMessage sm =SystemMessage.getSystemMessage(SystemMessageId.C1_IS_IN_A_LOCATION_WHICH_CANNOT_BE_ENTERED_THEREFORE_IT_CANNOT_BE_PROCESSED);
sm.addPcName(partyMember);
player.sendPacket(sm);returnfalse;}// get instances reenter times for player
instanceTimes =InstanceManager.getInstance().getAllInstanceTimes(partyMember.getObjectId());if(instanceTimes !=null){for(int id : instanceTimes.keySet()){// find instance with same name (kamaloka or labyrinth)// TODO: Zoey76: Don't use instance name, use other system.if(!instanceName.equals(InstanceManager.getInstance().getInstanceIdName(id))){continue;}// if found instance still can't be reentered - exitif(System.currentTimeMillis()< instanceTimes.get(id)){SystemMessage sm =SystemMessage.getSystemMessage(SystemMessageId.C1_MAY_NOT_RE_ENTER_YET);
sm.addPcName(partyMember);
player.sendPacket(sm);returnfalse;}}}}returntrue;}/**
* Removing all buffs from player and pet except BUFFS_WHITELIST
* @param ch player
*/privatestatic final void removeBuffs(L2Character ch){for(L2Effect e : ch.getEffectList().getEffects()){if(e ==null){continue;}
L2Skill skill = e.getSkill();if(skill.isDebuff()|| skill.isStayAfterDeath()){continue;}if(Arrays.binarySearch(BUFFS_WHITELIST, skill.getId())>=0){continue;}
e.exit();}if(ch.getSummon()!=null){for(L2Effect e : ch.getSummon().getEffectList().getEffects()){if(e ==null){continue;}
L2Skill skill = e.getSkill();if(skill.isDebuff()|| skill.isStayAfterDeath()){continue;}if(Arrays.binarySearch(BUFFS_WHITELIST, skill.getId())>=0){continue;}
e.exit();}}}/**
* Handling enter of the players into kamaloka
* @param player party leader
* @param index (0-18) kamaloka index in arrays
*/private final synchronized void enterInstance(L2PcInstance player,int index){int templateId = TEMPLATE_IDS[index];// check for existing instances for this playerInstanceWorld world =InstanceManager.getInstance().getPlayerWorld(player);// player already in the instanceif(world !=null){// but not in kamalokaif(!(world instanceofKamaWorld)||(world.getTemplateId()!= templateId)){
player.sendPacket(SystemMessageId.YOU_HAVE_ENTERED_ANOTHER_INSTANT_ZONE_THEREFORE_YOU_CANNOT_ENTER_CORRESPONDING_DUNGEON);return;}// check for level difference again on reenterif(player.getLevel()<=10){SystemMessage sm =SystemMessage.getSystemMessage(SystemMessageId.C1_S_LEVEL_REQUIREMENT_IS_NOT_SUFFICIENT_AND_CANNOT_BE_ENTERED);
sm.addPcName(player);
player.sendPacket(sm);return;}// check what instance still existInstance inst =InstanceManager.getInstance().getInstance(world.getInstanceId());if(inst !=null){
removeBuffs(player);
teleportPlayer(player, TELEPORTS[index], world.getInstanceId());}return;}// Creating new kamaloka instanceif(!checkPartyConditions(player, index)){return;}// Creating dynamic instance without template
final int instanceId =InstanceManager.getInstance().createDynamicInstance(null);
final Instance inst =InstanceManager.getInstance().getInstance(instanceId);// set name for the kamaloka
inst.setName(InstanceManager.getInstance().getInstanceIdName(templateId));// set return location
inst.setExitLoc(newLocation(player));// disable summon friend into instance
inst.setAllowSummon(false);// set duration and empty destroy time
inst.setDuration(DURATION[index]*60000);
inst.setEmptyDestroyTime(EMPTY_DESTROY_TIME *60000);// Creating new instanceWorld, using our instanceId and templateId
world =newKamaWorld();
world.setInstanceId(instanceId);
world.setTemplateId(templateId);// set index for easy access to the arrays((KamaWorld) world).index = index;InstanceManager.getInstance().addWorld(world);
world.setStatus(0);// spawn npcs
spawnKama((KamaWorld) world);if(player.isGM()){
world.addAllowed(player.getObjectId());
removeBuffs(player);
teleportPlayer(player, TELEPORTS[index], instanceId);}else{// and finally teleport party into instance
final L2Party party = player.getParty();for(L2PcInstance partyMember : party.getMembers()){
world.addAllowed(partyMember.getObjectId());
removeBuffs(partyMember);
teleportPlayer(partyMember, TELEPORTS[index], instanceId);}}return;}/**
* Called on instance finish and handles reenter time for instance
* @param world instanceWorld
*/@Overrideprotected final void finishInstance(InstanceWorld world){if(world instanceofKamaWorld){Calendar reenter =Calendar.getInstance();
reenter.set(Calendar.MINUTE,10);// if time is >= RESET_HOUR - roll to the next dayif(reenter.get(Calendar.HOUR_OF_DAY)>= RESET_HOUR){
reenter.add(Calendar.DATE,1);}
reenter.set(Calendar.HOUR_OF_DAY, RESET_HOUR);SystemMessage sm =SystemMessage.getSystemMessage(SystemMessageId.INSTANT_ZONE_FROM_HERE_S1_S_ENTRY_HAS_BEEN_RESTRICTED);
sm.addInstanceName(world.getTemplateId());// set instance reenter time for all allowed playersfor(int objectId : world.getAllowed()){
L2PcInstance obj = L2World.getInstance().getPlayer(objectId);if((obj !=null)&& obj.isOnline()){InstanceManager.getInstance().setInstanceTime(objectId, world.getTemplateId(), reenter.getTimeInMillis());
obj.sendPacket(sm);}}// destroy instance after EXIT_TIMEInstance inst =InstanceManager.getInstance().getInstance(world.getInstanceId());
inst.setDuration(EXIT_TIME *60000);
inst.setEmptyDestroyTime(0);}}/**
* Spawn all NPCs in kamaloka
* @param world instanceWorld
*/private final void spawnKama(KamaWorld world){int[] npcs;int[][] spawns;
L2Npc npc;
final int index = world.index;// first room
npcs = FIRST_ROOM[index];
spawns = FIRST_ROOM_SPAWNS[index];if(npcs !=null){
world.firstRoom =newArrayList<>(spawns.length -1);int shaman = getRandom(spawns.length);// random position for shamanfor(int i =0; i < spawns.length; i++){if(i == shaman){// stealth shaman use same npcId as other mobs
npc = addSpawn(STEALTH_SHAMAN ? npcs[1]: npcs[0], spawns[i][0], spawns[i][1], spawns[i][2],0,false,0,false, world.getInstanceId());
world.shaman = npc.getObjectId();}else{
npc = addSpawn(npcs[1], spawns[i][0], spawns[i][1], spawns[i][2],0,false,0,false, world.getInstanceId());
L2Spawn spawn = npc.getSpawn();
spawn.setRespawnDelay(FIRST_ROOM_RESPAWN_DELAY);
spawn.setAmount(1);
spawn.startRespawn();
world.firstRoom.add(spawn);// store mobs spawns}
npc.setIsNoRndWalk(true);}}// second room
npcs = SECOND_ROOM[index];
spawns = SECOND_ROOM_SPAWNS[index];if(npcs !=null){
world.secondRoom =newArrayList<>(spawns.length);for(int[] spawn : spawns){
npc = addSpawn(npcs[0], spawn[0], spawn[1], spawn[2],0,false,0,false, world.getInstanceId());
npc.setIsNoRndWalk(true);
world.secondRoom.add(npc.getObjectId());}}// minibossif(MINIBOSS[index]!=null){
npc = addSpawn(MINIBOSS[index][0], MINIBOSS[index][1], MINIBOSS[index][2], MINIBOSS[index][3],0,false,0,false, world.getInstanceId());
npc.setIsNoRndWalk(true);
world.miniBoss = npc.getObjectId();}// escape teleporterif(TELEPORTERS[index]!=null){
addSpawn(TELEPORTER, TELEPORTERS[index][0], TELEPORTERS[index][1], TELEPORTERS[index][2],0,false,0,false, world.getInstanceId());}// boss
world.boss = addSpawn(BOSS[index][0], BOSS[index][1], BOSS[index][2], BOSS[index][3],0,false,0,false, world.getInstanceId());}/**
* Handles only player's enter, single parameter - integer kamaloka index
*/@Overridepublic final String onAdvEvent(String event, L2Npc npc, L2PcInstance player){
enterInstance(player,Integer.parseInt(event));return"";}/**
* Talk with captains and using of the escape teleporter
*/@Overridepublic final String onTalk(L2Npc npc, L2PcInstance player){
final int npcId = npc.getId();if(npcId == TELEPORTER){
final L2Party party = player.getParty();// only party leader can talk with escape teleporterif((party !=null)&& party.isLeader(player)){
final InstanceWorld world =InstanceManager.getInstance().getWorld(npc.getInstanceId());if(world instanceofKamaWorld){// party members must be in the instanceif(world.isAllowed(player.getObjectId())){Instance inst =InstanceManager.getInstance().getInstance(world.getInstanceId());// teleports entire party awayfor(L2PcInstance partyMember : party.getMembers()){if((partyMember !=null)&&(partyMember.getInstanceId()== world.getInstanceId())){
teleportPlayer(partyMember, inst.getExitLoc(),0);}}}}}}else{return npcId +".htm";}return"";}/**
* Only escape teleporters first talk handled
*/@Overridepublic final String onFirstTalk(L2Npc npc, L2PcInstance player){if(npc.getId()== TELEPORTER){if(player.isGM()){return"32496.htm";}if(player.isInParty()&& player.getParty().isLeader(player)){return"32496.htm";}return"32496-no.htm";}return"";}@Overridepublic final String onKill(L2Npc npc, L2PcInstance player, boolean isSummon){
final InstanceWorld tmpWorld =InstanceManager.getInstance().getWorld(npc.getInstanceId());if(tmpWorld instanceofKamaWorld){
final KamaWorld world =(KamaWorld) tmpWorld;
final int objectId = npc.getObjectId();// first room was spawned ?if(world.firstRoom !=null){// is shaman killed ?if((world.shaman !=0)&&(world.shaman == objectId)){
world.shaman =0;// stop respawn of the minionsfor(L2Spawn spawn : world.firstRoom){if(spawn !=null){
spawn.stopRespawn();}}
world.firstRoom.clear();
world.firstRoom =null;if(world.boss !=null){
final int skillId = FIRST_ROOM[world.index][2];
final int skillLvl = FIRST_ROOM[world.index][3];if((skillId !=0)&&(skillLvl !=0)){
final L2Skill skill =SkillData.getInstance().getInfo(skillId, skillLvl);if(skill !=null){
skill.getEffects(world.boss, world.boss);}}}return super.onKill(npc, player, isSummon);}}// second room was spawned ?if(world.secondRoom !=null){
boolean all =true;// check for all mobs in the second roomfor(int i =0; i < world.secondRoom.size(); i++){// found killed now mobif(world.secondRoom.get(i)== objectId){
world.secondRoom.set(i,0);}elseif(world.secondRoom.get(i)!=0){
all =false;}}// all mobs killed ?if(all){
world.secondRoom.clear();
world.secondRoom =null;if(world.boss !=null){
final int skillId = SECOND_ROOM[world.index][1];
final int skillLvl = SECOND_ROOM[world.index][2];if((skillId !=0)&&(skillLvl !=0)){
final L2Skill skill =SkillData.getInstance().getInfo(skillId, skillLvl);if(skill !=null){
skill.getEffects(world.boss, world.boss);}}}return super.onKill(npc, player, isSummon);}}// miniboss spawned ?if((world.miniBoss !=0)&&(world.miniBoss == objectId)){
world.miniBoss =0;if(world.boss !=null){
final int skillId = MINIBOSS[world.index][4];
final int skillLvl = MINIBOSS[world.index][5];if((skillId !=0)&&(skillLvl !=0)){
final L2Skill skill =SkillData.getInstance().getInfo(skillId, skillLvl);if(skill !=null){
skill.getEffects(world.boss, world.boss);}}}return super.onKill(npc, player, isSummon);}// boss was killed, finish instanceif((world.boss !=null)&&(world.boss == npc)){
world.boss =null;
finishInstance(world);}}return super.onKill(npc, player, isSummon);}@Overridepublicvoid onEnterInstance(L2PcInstance player,InstanceWorld world, boolean firstEntrance){}}
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.
My official facebook profile!: https://www.facebook.com/spectrumL2
Specifications:
Revamped L2JACIS revision FROM the core
Private project!!! Revision that has been receiving corrections for over 3 years!!!
Events already installed in the revision:
TVT
CTF
KTB
PARTY FARM
SPOIL EVENT
CRAZY RATES
TOURNAMENT
TIME ZONE (INSTANCE)
All working correctly!!!
SIEGE ESSENTIAL FEATURES:
Walls fix
Gates fix
Flags fix
100% functional:
OLYMPIADS:
Implemented settings
Hero receives enchanted Weapons with equal status PvP Weapons
Optional /true/false
Hero can acquire all Hero Weapons
Optional true/false
OTHER IMPLEMENTATIONS:
Teleport fixed (directly to Giran)
Teleport effect classic
Vip skins vip collor name
Pack NPCs with effect already configured
BOSES already configured
Mobs already configured
CLASS BALANCE SPECIAL SYSTEM
We have a SPECIAL system developed for Class Balance with only 1 digit in XML %tage of configurable debuffs
Player limitation system in BOSES or PvP zones
BS blocking system in FLEG zones or events
Among others dozens of improvements made in the review...
price: 390 USD !
OBS: WE CAN CHANGE THE BANNER AND NAME OF THE SERVICE TO THE ONE OF YOUR PREFERENCE BUT THE SETTINGS MUST BE KEPT ANY CHANGES REQUIRE ADDITION
Server is Online – 1,000+ Active Players!
We’re excited to announce the addition of a Europe Proxy to improve connectivity for our EU players!
Clans can now benefit from VIP Access to help you catch up faster.
🎯 If you're a clan leader with at least 9 active members, join our Discord and open a ticket to claim your VIP rewards!
The Telegram team is rolling out a new batch of Stars-only gifts you’ll be able to mint as NFTs.
Don’t miss your chance to join the next Telegram trend and earn from it!
Buy Telegram Stars cheap and KYC-free
1 Star from $0.0149 (min. 50 Stars, bulk discounts available)
Promo code STARS5 — 5 % off
Pay any way you like: bank cards · crypto · other popular methods
How to purchase:
➡Online Store — Click
➡ Telegram bot — Click
Other services:
➡ SMM panel — Click
Regular buyers get extra discounts and promo codes.
Support:
➡ Telegram: https://t.me/solomon_bog
➡ Telegram channel: https://t.me/accsforyou_shop
➡ Discord: https://discord.gg/y9AStFFsrh
➡ WhatsApp: https://wa.me/79051904467
➡ Email: solomonbog@socnet.store
Use these contacts to discuss wholesale orders, partnerships (current list: https://socnet.bgng.io/partners) or to become a supplier.
SocNet — your shop for digital goods and premium subscriptions
Question
0flee
Hello, how i can delete a condition for party from Kamaloka instances? And i want to delete too level conditions. To make available after level 1-85.
Greetings
4 answers to this question
Recommended Posts
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.