Code review Part 5.
This commit is contained in:
		| @@ -124,7 +124,7 @@ public class CemeteryMonsters extends AbstractNpcAI | ||||
| 				{ | ||||
| 					for (int i = 0; i < 6; i++) | ||||
| 					{ | ||||
| 						Npc raider = addSpawn(ADEN_RAIDER, killer, true, 180000, false); | ||||
| 						final Npc raider = addSpawn(ADEN_RAIDER, killer, true, 180000, false); | ||||
| 						addAttackPlayerDesire(raider, killer); | ||||
| 					} | ||||
| 					break; | ||||
|   | ||||
| @@ -103,7 +103,7 @@ public class GainakSiege extends AbstractNpcAI | ||||
| 				startQuestTimer("GAINAK_WAR", getTimeBetweenSieges() * 60000, null, null); | ||||
| 				if (Config.ANNOUNCE_GAINAK_SIEGE) | ||||
| 				{ | ||||
| 					SystemMessage s = new SystemMessage(SystemMessageId.PROGRESS_EVENT_STAGE_S1); | ||||
| 					final SystemMessage s = new SystemMessage(SystemMessageId.PROGRESS_EVENT_STAGE_S1); | ||||
| 					s.addString("Gainak is now in peace."); | ||||
| 					Broadcast.toAllOnlinePlayers(s); | ||||
| 				} | ||||
| @@ -123,7 +123,7 @@ public class GainakSiege extends AbstractNpcAI | ||||
| 				startQuestTimer("GAINAK_WAR", SIEGE_DURATION * 60000, null, null); | ||||
| 				if (Config.ANNOUNCE_GAINAK_SIEGE) | ||||
| 				{ | ||||
| 					SystemMessage s = new SystemMessage(SystemMessageId.PROGRESS_EVENT_STAGE_S1); | ||||
| 					final SystemMessage s = new SystemMessage(SystemMessageId.PROGRESS_EVENT_STAGE_S1); | ||||
| 					s.addString("Gainak is now under siege."); | ||||
| 					Broadcast.toAllOnlinePlayers(s); | ||||
| 				} | ||||
|   | ||||
| @@ -130,7 +130,7 @@ public class TavernEmployee extends AbstractNpcAI | ||||
| 	@Override | ||||
| 	public String onAdvEvent(String event, Npc npc, PlayerInstance player) | ||||
| 	{ | ||||
| 		String htmltext = null; | ||||
| 		final String htmltext = null; | ||||
| 		switch (event) | ||||
| 		{ | ||||
| 			case "spam_text1": | ||||
|   | ||||
| @@ -42,7 +42,7 @@ public class ApherusLookout extends AbstractNpcAI | ||||
| 	@Override | ||||
| 	public String onAdvEvent(String event, Npc npc, PlayerInstance player) | ||||
| 	{ | ||||
| 		String htmltext = null; | ||||
| 		final String htmltext = null; | ||||
| 		if (event.equals("open_bag")) | ||||
| 		{ | ||||
| 			if (getRandom(100) < 7) | ||||
| @@ -58,11 +58,11 @@ public class ApherusLookout extends AbstractNpcAI | ||||
| 	@Override | ||||
| 	public String onKill(Npc npc, PlayerInstance killer, boolean isPet) | ||||
| 	{ | ||||
| 		Npc aPackage = addSpawn(APHERUS_PACKAGE, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000, false); | ||||
| 		final Npc aPackage = addSpawn(APHERUS_PACKAGE, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000, false); | ||||
| 		aPackage.setIsImmobilized(true); | ||||
| 		Npc bPackage = addSpawn(APHERUS_PACKAGE1, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000, false); | ||||
| 		final Npc bPackage = addSpawn(APHERUS_PACKAGE1, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000, false); | ||||
| 		bPackage.setIsImmobilized(true); | ||||
| 		Npc cPackage = addSpawn(APHERUS_PACKAGE2, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000, false); | ||||
| 		final Npc cPackage = addSpawn(APHERUS_PACKAGE2, npc.getX(), npc.getY(), npc.getZ(), 0, true, 120000, false); | ||||
| 		cPackage.setIsImmobilized(true); | ||||
| 		return super.onKill(npc, killer, isPet); | ||||
| 	} | ||||
|   | ||||
| @@ -52,7 +52,7 @@ public class FuryKiku extends AbstractNpcAI | ||||
| 		{ | ||||
| 			case "SPAWN": | ||||
| 			{ | ||||
| 				Party party = player.getParty(); | ||||
| 				final Party party = player.getParty(); | ||||
| 				if (party != null) | ||||
| 				{ | ||||
| 					party.getMembers().forEach(p -> addSpawn(FURYKIKU, p, true, 180000, true, 0)); | ||||
|   | ||||
| @@ -59,7 +59,7 @@ public class Kekropus extends AbstractNpcAI | ||||
| 	@Override | ||||
| 	public String onAdvEvent(String event, Npc npc, PlayerInstance player) | ||||
| 	{ | ||||
| 		String htmltext = null; | ||||
| 		final String htmltext = null; | ||||
| 		switch (event) | ||||
| 		{ | ||||
| 			case "teleport": | ||||
|   | ||||
| @@ -68,7 +68,7 @@ public class Hardin extends AbstractNpcAI | ||||
| 		 | ||||
| 		if (event.equals("list")) | ||||
| 		{ | ||||
| 			StringBuilder classes = new StringBuilder(); | ||||
| 			final StringBuilder classes = new StringBuilder(); | ||||
| 			for (ClassId c : ClassId.values()) | ||||
| 			{ | ||||
| 				if ((((c.level() != 4) && (c.getRace() != Race.ERTHEIA)) // | ||||
|   | ||||
| @@ -64,9 +64,9 @@ public class HarnakUndergroundRuinsZone extends AbstractNpcAI | ||||
| 		{ | ||||
| 			for (int zoneId = 60142; zoneId <= 60165; zoneId++) | ||||
| 			{ | ||||
| 				ZoneType zone = ZoneManager.getInstance().getZoneById(zoneId); | ||||
| 				final ZoneType zone = ZoneManager.getInstance().getZoneById(zoneId); | ||||
| 				_roomInfo.put(zone, new zoneInfo()); | ||||
| 				String zoneName = zone.getName().toLowerCase().replace(" ", "_"); | ||||
| 				final String zoneName = zone.getName().toLowerCase().replace(" ", "_"); | ||||
| 				_templates.stream().forEach(t -> t.spawn(g -> String.valueOf(g.getName()).equalsIgnoreCase(zoneName), null)); | ||||
| 			} | ||||
| 		} | ||||
| @@ -131,7 +131,7 @@ public class HarnakUndergroundRuinsZone extends AbstractNpcAI | ||||
| 		{ | ||||
| 			try | ||||
| 			{ | ||||
| 				zoneInfo currentInfo = _roomInfo.get(_zone); | ||||
| 				final zoneInfo currentInfo = _roomInfo.get(_zone); | ||||
| 				switch (currentInfo.getZoneStage()) | ||||
| 				{ | ||||
| 					case 0: | ||||
| @@ -169,7 +169,7 @@ public class HarnakUndergroundRuinsZone extends AbstractNpcAI | ||||
| 						if (currentInfo.getCurrentMonitorizedDamage() >= 10) | ||||
| 						{ | ||||
| 							_zone.broadcastPacket(new ExShowScreenMessage(NpcStringId.DEMONIC_SYSTEM_WILL_ACTIVATE, ExShowScreenMessage.TOP_CENTER, 3000)); | ||||
| 							String zoneName = _zone.getName().toLowerCase().replace(" ", "_"); | ||||
| 							final String zoneName = _zone.getName().toLowerCase().replace(" ", "_"); | ||||
| 							_templates.stream().forEach(t -> t.despawn(g -> String.valueOf(g.getName()).equalsIgnoreCase(zoneName))); | ||||
| 							_templates.stream().forEach(t -> t.spawn(g -> String.valueOf(g.getName()).equalsIgnoreCase(zoneName + "_demonic"), null)); | ||||
| 							_zone.getPlayersInside().forEach(temp -> temp.sendPacket(new ExSendUIEvent(temp, false, false, 600, 0, NpcStringId.DEMONIC_SYSTEM_ACTIVATED))); | ||||
| @@ -193,7 +193,7 @@ public class HarnakUndergroundRuinsZone extends AbstractNpcAI | ||||
| 								player.sendPacket(new ExSendUIEvent(player)); | ||||
| 							} | ||||
| 						} | ||||
| 						String zoneName = _zone.getName().toLowerCase().replace(" ", "_"); | ||||
| 						final String zoneName = _zone.getName().toLowerCase().replace(" ", "_"); | ||||
| 						_templates.stream().forEach(t -> t.despawn(g -> String.valueOf(g.getName()).equalsIgnoreCase(zoneName + "_demonic"))); | ||||
| 						_templates.stream().forEach(t -> t.spawn(g -> String.valueOf(g.getName()).equalsIgnoreCase(zoneName), null)); | ||||
| 						return; | ||||
| @@ -219,14 +219,14 @@ public class HarnakUndergroundRuinsZone extends AbstractNpcAI | ||||
| 			if (currentZone.getKey().isInsideZone(npc)) | ||||
| 			{ | ||||
| 				final zoneInfo currentInfo = currentZone.getValue(); | ||||
| 				int currentPoints = currentInfo.getCurrentPoints(); | ||||
| 				final int currentPoints = currentInfo.getCurrentPoints(); | ||||
| 				if (currentPoints == 300) | ||||
| 				{ | ||||
| 					if (currentInfo.getZoneStage() < 1) | ||||
| 					{ | ||||
| 						return super.onKill(npc, killer, isSummon); | ||||
| 					} | ||||
| 					int currentDamage = currentInfo.getCurrentMonitorizedDamage(); | ||||
| 					final int currentDamage = currentInfo.getCurrentMonitorizedDamage(); | ||||
| 					int calcDamage = currentDamage + 1; | ||||
| 					if (calcDamage >= 10) | ||||
| 					{ | ||||
| @@ -262,7 +262,7 @@ public class HarnakUndergroundRuinsZone extends AbstractNpcAI | ||||
| 		 | ||||
| 		if (npc.getDisplayEffect() > 0) | ||||
| 		{ | ||||
| 			MonsterInstance copy = (MonsterInstance) addSpawn(npc.getId(), npc.getX(), npc.getY(), npc.getZ(), 0, true, 0, false); | ||||
| 			final MonsterInstance copy = (MonsterInstance) addSpawn(npc.getId(), npc.getX(), npc.getY(), npc.getZ(), 0, true, 0, false); | ||||
| 			copy.setTarget(killer); | ||||
| 			copy.addDamageHate(killer, 500, 99999); | ||||
| 			copy.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, killer); | ||||
|   | ||||
| @@ -673,7 +673,7 @@ public class Raina extends AbstractNpcAI | ||||
| 	{ | ||||
| 		final int currentBaseId = player.getBaseClass(); | ||||
| 		final ClassId baseCID = ClassId.getClassId(currentBaseId); | ||||
| 		int baseClassId = (CategoryData.getInstance().isInCategory(CategoryType.FOURTH_CLASS_GROUP, baseCID.getId()) || CategoryData.getInstance().isInCategory(CategoryType.FIFTH_CLASS_GROUP, baseCID.getId()) || CategoryData.getInstance().isInCategory(CategoryType.SIXTH_CLASS_GROUP, baseCID.getId())) ? baseCID.getParent().getId() : currentBaseId; | ||||
| 		final int baseClassId = (CategoryData.getInstance().isInCategory(CategoryType.FOURTH_CLASS_GROUP, baseCID.getId()) || CategoryData.getInstance().isInCategory(CategoryType.FIFTH_CLASS_GROUP, baseCID.getId()) || CategoryData.getInstance().isInCategory(CategoryType.SIXTH_CLASS_GROUP, baseCID.getId())) ? baseCID.getParent().getId() : currentBaseId; | ||||
| 		 | ||||
| 		final Set<ClassId> availSubs = getSubclasses(player, baseClassId); | ||||
| 		 | ||||
| @@ -832,7 +832,7 @@ public class Raina extends AbstractNpcAI | ||||
| 				} | ||||
| 			} | ||||
| 			 | ||||
| 			Set<ClassId> unavailableClasses = subclassSetMap.get(pClass); | ||||
| 			final Set<ClassId> unavailableClasses = subclassSetMap.get(pClass); | ||||
| 			if (unavailableClasses != null) | ||||
| 			{ | ||||
| 				subclasses.removeAll(unavailableClasses); | ||||
|   | ||||
| @@ -382,7 +382,7 @@ public class Anakim extends AbstractNpcAI | ||||
| 						randomSpawn = _spawns.get(Rnd.get(_spawns.size())); | ||||
| 						if (randomSpawn != null) | ||||
| 						{ | ||||
| 							Npc remnant = addSpawn(REMNANT, randomSpawn.getX(), randomSpawn.getY(), randomSpawn.getZ(), randomSpawn.getHeading(), true, 0, false, 0); | ||||
| 							final Npc remnant = addSpawn(REMNANT, randomSpawn.getX(), randomSpawn.getY(), randomSpawn.getZ(), randomSpawn.getHeading(), true, 0, false, 0); | ||||
| 							_remnants.add(remnant); | ||||
| 						} | ||||
| 					} | ||||
| @@ -400,13 +400,13 @@ public class Anakim extends AbstractNpcAI | ||||
| 			} | ||||
| 			case "cancel_timers": | ||||
| 			{ | ||||
| 				QuestTimer activityTimer = getQuestTimer("check_activity_task", null, null); | ||||
| 				final QuestTimer activityTimer = getQuestTimer("check_activity_task", null, null); | ||||
| 				if (activityTimer != null) | ||||
| 				{ | ||||
| 					activityTimer.cancel(); | ||||
| 				} | ||||
| 				 | ||||
| 				QuestTimer forceEnd = getQuestTimer("end_anakim", null, null); | ||||
| 				final QuestTimer forceEnd = getQuestTimer("end_anakim", null, null); | ||||
| 				if (forceEnd != null) | ||||
| 				{ | ||||
| 					forceEnd.cancel(); | ||||
| @@ -561,7 +561,7 @@ public class Anakim extends AbstractNpcAI | ||||
| 			} | ||||
| 			if (!BOSS_ZONE.isInsideZone(npc)) // Npc moved out of the zone | ||||
| 			{ | ||||
| 				Spawn spawn = npc.getSpawn(); | ||||
| 				final Spawn spawn = npc.getSpawn(); | ||||
| 				if (spawn != null) | ||||
| 				{ | ||||
| 					npc.teleToLocation(spawn.getX(), spawn.getY(), spawn.getZ()); | ||||
| @@ -634,13 +634,13 @@ public class Anakim extends AbstractNpcAI | ||||
| 	 | ||||
| 	private long calcReuseFromDays(int day1Minute, int day1Hour, int day1Day, int day2Minute, int day2Hour, int day2Day) | ||||
| 	{ | ||||
| 		Calendar now = Calendar.getInstance(); | ||||
| 		Calendar day1 = (Calendar) now.clone(); | ||||
| 		final Calendar now = Calendar.getInstance(); | ||||
| 		final Calendar day1 = (Calendar) now.clone(); | ||||
| 		day1.set(Calendar.MINUTE, day1Minute); | ||||
| 		day1.set(Calendar.HOUR_OF_DAY, day1Hour); | ||||
| 		day1.set(Calendar.DAY_OF_WEEK, day1Day); | ||||
| 		 | ||||
| 		Calendar day2 = (Calendar) day1.clone(); | ||||
| 		final Calendar day2 = (Calendar) day1.clone(); | ||||
| 		day2.set(Calendar.MINUTE, day2Minute); | ||||
| 		day2.set(Calendar.HOUR_OF_DAY, day2Hour); | ||||
| 		day2.set(Calendar.DAY_OF_WEEK, day2Day); | ||||
|   | ||||
| @@ -150,7 +150,7 @@ public class BalokWarzone extends AbstractInstance | ||||
| 				case "stage_last_send_minions": | ||||
| 				{ | ||||
| 					 | ||||
| 					Npc minion = _minionList.get(Rnd.get(_minionList.size())); | ||||
| 					final Npc minion = _minionList.get(Rnd.get(_minionList.size())); | ||||
| 					if (minion != null) | ||||
| 					{ | ||||
| 						minion.setRunning(); | ||||
| @@ -183,14 +183,14 @@ public class BalokWarzone extends AbstractInstance | ||||
| 				{ | ||||
| 					for (int i = 0; i < 4; i++) | ||||
| 					{ | ||||
| 						Npc disciple = addSpawn(HELL_DISCIPLE, npc.getX(), npc.getY(), npc.getZ(), 0, true, 600000, false, world.getId()); | ||||
| 						final Npc disciple = addSpawn(HELL_DISCIPLE, npc.getX(), npc.getY(), npc.getZ(), 0, true, 600000, false, world.getId()); | ||||
| 						addAttackPlayerDesire(disciple, player); | ||||
| 					} | ||||
| 					break; | ||||
| 				} | ||||
| 				case "imprission_minions": | ||||
| 				{ | ||||
| 					int[] randomJail = PRISONS_SPAWN[Rnd.get(PRISONS_SPAWN.length)]; // Random jail | ||||
| 					final int[] randomJail = PRISONS_SPAWN[Rnd.get(PRISONS_SPAWN.length)]; // Random jail | ||||
| 					player.teleToLocation(randomJail[0], randomJail[1], randomJail[2]); | ||||
| 					world.broadcastPacket(new ExShowScreenMessage("$s1, locked away in the prison.".replace("$s1", player.getName()), 5000)); | ||||
| 					break; | ||||
| @@ -209,7 +209,7 @@ public class BalokWarzone extends AbstractInstance | ||||
| 			{ | ||||
| 				for (int[] a : MINION_SPAWN) | ||||
| 				{ | ||||
| 					Npc minion = addSpawn(MINION, a[0], a[1], a[2], a[3], false, 0, false, world.getId()); | ||||
| 					final Npc minion = addSpawn(MINION, a[0], a[1], a[2], a[3], false, 0, false, world.getId()); | ||||
| 					_minionList.add(minion); | ||||
| 					INVINCIBILITY_ACTIVATION.getSkill().applyEffects(minion, minion); | ||||
| 					world.setStatus(2); | ||||
|   | ||||
| @@ -83,7 +83,7 @@ public class Fafurion extends AbstractNpcAI | ||||
| 	@Override | ||||
| 	public String onAdvEvent(String event, Npc npc, PlayerInstance player) | ||||
| 	{ | ||||
| 		String htmltext = null; | ||||
| 		final String htmltext = null; | ||||
| 		switch (event) | ||||
| 		{ | ||||
| 			case "unlock_fafurion": | ||||
|   | ||||
| @@ -81,7 +81,7 @@ public class Helios extends AbstractNpcAI | ||||
| 	@Override | ||||
| 	public String onAdvEvent(String event, Npc npc, PlayerInstance player) | ||||
| 	{ | ||||
| 		String htmltext = null; | ||||
| 		final String htmltext = null; | ||||
| 		switch (event) | ||||
| 		{ | ||||
| 			case "unlock_helios": | ||||
|   | ||||
| @@ -200,14 +200,14 @@ public class Kelbim extends AbstractNpcAI | ||||
| 			{ | ||||
| 				for (int i = 0; i < Rnd.get((_bossStage * 5) / 2, _bossStage * 5); i++) | ||||
| 				{ | ||||
| 					Npc minion = addSpawn(KELBIM_GUARD, _kelbimBoss.getX(), _kelbimBoss.getY(), _kelbimBoss.getZ(), 0, true, 0, true, 0); | ||||
| 					final Npc minion = addSpawn(KELBIM_GUARD, _kelbimBoss.getX(), _kelbimBoss.getY(), _kelbimBoss.getZ(), 0, true, 0, true, 0); | ||||
| 					minion.setRunning(); | ||||
| 					((Attackable) minion).setIsRaidMinion(true); | ||||
| 					_minions.add(minion); | ||||
| 				} | ||||
| 				for (int i = 0; i < Rnd.get((_bossStage * 2) / 2, _bossStage * 2); i++) | ||||
| 				{ | ||||
| 					Npc minion = addSpawn(KELBIM_GUARDIANS[Rnd.get(KELBIM_GUARDIANS.length)], _kelbimBoss.getX(), _kelbimBoss.getY(), _kelbimBoss.getZ(), 0, true, 0, true, 0); | ||||
| 					final Npc minion = addSpawn(KELBIM_GUARDIANS[Rnd.get(KELBIM_GUARDIANS.length)], _kelbimBoss.getX(), _kelbimBoss.getY(), _kelbimBoss.getZ(), 0, true, 0, true, 0); | ||||
| 					minion.setRunning(); | ||||
| 					((Attackable) minion).setIsRaidMinion(true); | ||||
| 					_minions.add(minion); | ||||
| @@ -220,8 +220,8 @@ public class Kelbim extends AbstractNpcAI | ||||
| 				{ | ||||
| 					if (_kelbimBoss.isInCombat()) | ||||
| 					{ | ||||
| 						Skill randomAttackSkill = AREA_SKILLS[Rnd.get(AREA_SKILLS.length)]; | ||||
| 						List<Npc> skillNpcs = new ArrayList<>(); | ||||
| 						final Skill randomAttackSkill = AREA_SKILLS[Rnd.get(AREA_SKILLS.length)]; | ||||
| 						final List<Npc> skillNpcs = new ArrayList<>(); | ||||
| 						for (PlayerInstance pl : ZONE.getPlayersInside()) | ||||
| 						{ | ||||
| 							if (pl == null) | ||||
| @@ -230,7 +230,7 @@ public class Kelbim extends AbstractNpcAI | ||||
| 							} | ||||
| 							if (Rnd.get(100) > 40) | ||||
| 							{ | ||||
| 								Npc skillMob = addSpawn(KELBIM_SHOUT, pl.getX(), pl.getY(), pl.getZ() + 10, 0, true, 60000, false, 0); | ||||
| 								final Npc skillMob = addSpawn(KELBIM_SHOUT, pl.getX(), pl.getY(), pl.getZ() + 10, 0, true, 60000, false, 0); | ||||
| 								skillNpcs.add(skillMob); | ||||
| 								_minions.add(skillMob); | ||||
| 							} | ||||
| @@ -250,7 +250,7 @@ public class Kelbim extends AbstractNpcAI | ||||
| 			} | ||||
| 			case "cancel_timers": | ||||
| 			{ | ||||
| 				QuestTimer activityTimer = getQuestTimer("check_activity_task", null, null); | ||||
| 				final QuestTimer activityTimer = getQuestTimer("check_activity_task", null, null); | ||||
| 				if (activityTimer != null) | ||||
| 				{ | ||||
| 					activityTimer.cancel(); | ||||
| @@ -306,7 +306,7 @@ public class Kelbim extends AbstractNpcAI | ||||
| 	{ | ||||
| 		if (npc.getId() == ENTER_DEVICE) | ||||
| 		{ | ||||
| 			int status = GrandBossManager.getInstance().getBossStatus(KELBIM); | ||||
| 			final int status = GrandBossManager.getInstance().getBossStatus(KELBIM); | ||||
| 			if (status > ALIVE) | ||||
| 			{ | ||||
| 				return "34052-1.html"; | ||||
|   | ||||
| @@ -404,7 +404,7 @@ public class Lilith extends AbstractNpcAI | ||||
| 						randomSpawn = _spawns.get(Rnd.get(_spawns.size())); | ||||
| 						if (randomSpawn != null) | ||||
| 						{ | ||||
| 							Npc remnant = addSpawn(REMNANT, randomSpawn.getX(), randomSpawn.getY(), randomSpawn.getZ(), randomSpawn.getHeading(), true, 0, false, 0); | ||||
| 							final Npc remnant = addSpawn(REMNANT, randomSpawn.getX(), randomSpawn.getY(), randomSpawn.getZ(), randomSpawn.getHeading(), true, 0, false, 0); | ||||
| 							_remnants.add(remnant); | ||||
| 						} | ||||
| 					} | ||||
| @@ -422,13 +422,13 @@ public class Lilith extends AbstractNpcAI | ||||
| 			} | ||||
| 			case "cancel_timers": | ||||
| 			{ | ||||
| 				QuestTimer activityTimer = getQuestTimer("check_activity_task", null, null); | ||||
| 				final QuestTimer activityTimer = getQuestTimer("check_activity_task", null, null); | ||||
| 				if (activityTimer != null) | ||||
| 				{ | ||||
| 					activityTimer.cancel(); | ||||
| 				} | ||||
| 				 | ||||
| 				QuestTimer forceEnd = getQuestTimer("end_lilith", null, null); | ||||
| 				final QuestTimer forceEnd = getQuestTimer("end_lilith", null, null); | ||||
| 				if (forceEnd != null) | ||||
| 				{ | ||||
| 					forceEnd.cancel(); | ||||
| @@ -573,7 +573,7 @@ public class Lilith extends AbstractNpcAI | ||||
| 			} | ||||
| 			if (!BOSS_ZONE.isInsideZone(npc)) // Npc moved out of the zone | ||||
| 			{ | ||||
| 				Spawn spawn = npc.getSpawn(); | ||||
| 				final Spawn spawn = npc.getSpawn(); | ||||
| 				if (spawn != null) | ||||
| 				{ | ||||
| 					npc.teleToLocation(spawn.getX(), spawn.getY(), spawn.getZ()); | ||||
| @@ -646,13 +646,13 @@ public class Lilith extends AbstractNpcAI | ||||
| 	 | ||||
| 	private long calcReuseFromDays(int day1Minute, int day1Hour, int day1Day, int day2Minute, int day2Hour, int day2Day) | ||||
| 	{ | ||||
| 		Calendar now = Calendar.getInstance(); | ||||
| 		Calendar day1 = (Calendar) now.clone(); | ||||
| 		final Calendar now = Calendar.getInstance(); | ||||
| 		final Calendar day1 = (Calendar) now.clone(); | ||||
| 		day1.set(Calendar.MINUTE, day1Minute); | ||||
| 		day1.set(Calendar.HOUR_OF_DAY, day1Hour); | ||||
| 		day1.set(Calendar.DAY_OF_WEEK, day1Day); | ||||
| 		 | ||||
| 		Calendar day2 = (Calendar) day1.clone(); | ||||
| 		final Calendar day2 = (Calendar) day1.clone(); | ||||
| 		day2.set(Calendar.MINUTE, day2Minute); | ||||
| 		day2.set(Calendar.HOUR_OF_DAY, day2Hour); | ||||
| 		day2.set(Calendar.DAY_OF_WEEK, day2Day); | ||||
|   | ||||
| @@ -279,7 +279,7 @@ public class Lindvior extends AbstractNpcAI | ||||
| 			LOGGER.warning(getName() + ": Character: " + attacker.getName() + " attacked: " + npc.getName() + " wich is out of the boss zone!"); | ||||
| 		} | ||||
| 		 | ||||
| 		double percent = ((npc.getCurrentHp() - damage) / npc.getMaxHp()) * 100; | ||||
| 		final double percent = ((npc.getCurrentHp() - damage) / npc.getMaxHp()) * 100; | ||||
| 		if ((percent <= 80) && (_status == 0)) | ||||
| 		{ | ||||
| 			_zoneLair.broadcastPacket(new OnEventTrigger(RED_ZONE_EFFECT, true)); | ||||
| @@ -466,7 +466,7 @@ public class Lindvior extends AbstractNpcAI | ||||
| 		{ | ||||
| 			synchronized (_chargedValues) | ||||
| 			{ | ||||
| 				int index = npc.getScriptValue(); | ||||
| 				final int index = npc.getScriptValue(); | ||||
| 				if (!hasFlag(_chargedMask, 1 << index)) | ||||
| 				{ | ||||
| 					_chargedValues[index] += caster.isGM() ? (30 / 4) + 2 : (1 / 4) + 2; | ||||
| @@ -707,7 +707,7 @@ public class Lindvior extends AbstractNpcAI | ||||
| 			} | ||||
| 			case "stage_1_activate_generator": | ||||
| 			{ | ||||
| 				int index = npc.getScriptValue(); | ||||
| 				final int index = npc.getScriptValue(); | ||||
| 				if (!hasFlag(_activeMask, 1 << index)) | ||||
| 				{ | ||||
| 					_activeMask |= 1 << index; | ||||
| @@ -740,7 +740,7 @@ public class Lindvior extends AbstractNpcAI | ||||
| 			{ | ||||
| 				_skillCastTask = ThreadPool.scheduleAtFixedRate(() -> _generatorSpawn.forEach(generators -> | ||||
| 				{ | ||||
| 					int index = generators.getScriptValue(); | ||||
| 					final int index = generators.getScriptValue(); | ||||
| 					if (!generators.isCastingNow() && (generators.getEffectList().getBuffInfoBySkillId(SKILL_RECHARGE_POSIBLE.getSkillId()) == null) && !hasFlag(_chargedMask, 1 << index)) | ||||
| 					{ | ||||
| 						// TODO Need core implemented combo skill packet. | ||||
| @@ -878,7 +878,7 @@ public class Lindvior extends AbstractNpcAI | ||||
| 	 | ||||
| 	private void sendEventTrigger(boolean status, int... triggers) | ||||
| 	{ | ||||
| 		IClientOutgoingPacket[] pakets = new IClientOutgoingPacket[triggers.length]; | ||||
| 		final IClientOutgoingPacket[] pakets = new IClientOutgoingPacket[triggers.length]; | ||||
| 		for (int i = 0; i < triggers.length; i++) | ||||
| 		{ | ||||
| 			pakets[i] = new OnEventTrigger(triggers[i], status); | ||||
|   | ||||
| @@ -68,7 +68,7 @@ public class LindviorBoss extends AbstractNpcAI | ||||
| 	@Override | ||||
| 	public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon) | ||||
| 	{ | ||||
| 		double percent = ((npc.getCurrentHp() - damage) / npc.getMaxHp()) * 100; | ||||
| 		final double percent = ((npc.getCurrentHp() - damage) / npc.getMaxHp()) * 100; | ||||
| 		final int chance = getRandom(100); | ||||
| 		switch (npc.getId()) | ||||
| 		{ | ||||
|   | ||||
| @@ -232,7 +232,7 @@ public class Ramona extends AbstractNpcAI | ||||
| 				{ | ||||
| 					addSpawn(MP_CONTROL, RAMONA_SPAWN_LOC, false, 0, false); | ||||
| 				} | ||||
| 				QuestTimer activityTimer = getQuestTimer("CHECK_ACTIVITY_TASK", null, null); | ||||
| 				final QuestTimer activityTimer = getQuestTimer("CHECK_ACTIVITY_TASK", null, null); | ||||
| 				if (activityTimer != null) | ||||
| 				{ | ||||
| 					activityTimer.cancel(); | ||||
| @@ -341,7 +341,7 @@ public class Ramona extends AbstractNpcAI | ||||
| 			case RAMONA_3: | ||||
| 			{ | ||||
| 				_boss = Status.DEAD; | ||||
| 				long respawnTime = (Config.RAMONA_SPAWN_INTERVAL + getRandom(-Config.RAMONA_SPAWN_RANDOM, Config.RAMONA_SPAWN_RANDOM)) * 3600000; | ||||
| 				final long respawnTime = (Config.RAMONA_SPAWN_INTERVAL + getRandom(-Config.RAMONA_SPAWN_RANDOM, Config.RAMONA_SPAWN_RANDOM)) * 3600000; | ||||
| 				GlobalVariablesManager.getInstance().set(RAMONA_RESPAWN_VAR, System.currentTimeMillis() + respawnTime); | ||||
| 				startQuestTimer("RAMONA_UNLOCK", respawnTime, null, null); | ||||
| 				startQuestTimer("END_RAMONA", 90000, null, null); | ||||
|   | ||||
| @@ -296,7 +296,7 @@ public class Trasken extends AbstractNpcAI | ||||
| 		super(); | ||||
| 		_zoneLair = ZoneManager.getInstance().getZoneById(ZONE_ID, NoSummonFriendZone.class); | ||||
| 		_zoneLair2 = ZoneManager.getInstance().getZoneById(ZONE_ID_HEART, NoSummonFriendZone.class); | ||||
| 		int[] creature = new int[] | ||||
| 		final int[] creature = new int[] | ||||
| 		{ | ||||
| 			TRASKEN, | ||||
| 			TIE, | ||||
| @@ -344,7 +344,7 @@ public class Trasken extends AbstractNpcAI | ||||
| 	 | ||||
| 	private void init() | ||||
| 	{ | ||||
| 		int size = _zoneLair.getPlayersInside().size(); | ||||
| 		final int size = _zoneLair.getPlayersInside().size(); | ||||
| 		if ((size >= 14) && (size <= 28)) | ||||
| 		{ | ||||
| 			_playersToEnter = 7; | ||||
|   | ||||
| @@ -73,7 +73,7 @@ public class SellBuff implements IVoicedCommandHandler, IBypassHandler | ||||
| 	public boolean useBypass(String command, PlayerInstance player, Creature target) | ||||
| 	{ | ||||
| 		String cmd = ""; | ||||
| 		StringBuilder params = new StringBuilder(); | ||||
| 		final StringBuilder params = new StringBuilder(); | ||||
| 		final StringTokenizer st = new StringTokenizer(command, " "); | ||||
| 		 | ||||
| 		if (st.hasMoreTokens()) | ||||
| @@ -130,7 +130,7 @@ public class SellBuff implements IVoicedCommandHandler, IBypassHandler | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					StringBuilder title = new StringBuilder(); | ||||
| 					final StringBuilder title = new StringBuilder(); | ||||
| 					title.append("BUFF SELL: "); | ||||
| 					final StringTokenizer st = new StringTokenizer(params, " "); | ||||
| 					while (st.hasMoreTokens()) | ||||
|   | ||||
| @@ -65,7 +65,7 @@ public class RudolphsBlessing extends LongTimeEvent | ||||
| 			if (takeItems(player, ITEM_REQUIREMENT.getId(), ITEM_REQUIREMENT.getCount())) | ||||
| 			{ | ||||
| 				SkillCaster.triggerCast(player, player, RUDOLPH_TRYUCK.getSkill()); | ||||
| 				Skill rudolphsBlessing = SkillData.getInstance().getSkill(23297, 1); | ||||
| 				final Skill rudolphsBlessing = SkillData.getInstance().getSkill(23297, 1); | ||||
| 				rudolphsBlessing.applyEffects(player, player); | ||||
| 			} | ||||
| 			startQuestTimer("rudolph_eat", 10 * 60 * 1000, null, player); | ||||
|   | ||||
| @@ -199,7 +199,7 @@ public class SavingSanta extends LongTimeEvent | ||||
| 					continue; | ||||
| 				} | ||||
| 				 | ||||
| 				int result = pl.getEffectList().getBuffInfoBySkillId(23019).getSkill().getLevel() - skill.getLevel(); | ||||
| 				final int result = pl.getEffectList().getBuffInfoBySkillId(23019).getSkill().getLevel() - skill.getLevel(); | ||||
| 				 | ||||
| 				if (result == 0) | ||||
| 				{ | ||||
| @@ -216,7 +216,7 @@ public class SavingSanta extends LongTimeEvent | ||||
| 				} | ||||
| 				else if ((result == 1) || (result == -2)) | ||||
| 				{ | ||||
| 					int level = (pl.isAffectedBySkill(23022) ? (pl.getEffectList().getBuffInfoBySkillId(23022).getSkill().getLevel() + 1) : 1); | ||||
| 					final int level = (pl.isAffectedBySkill(23022) ? (pl.getEffectList().getBuffInfoBySkillId(23022).getSkill().getLevel() + 1) : 1); | ||||
| 					pl.broadcastPacket(new MagicSkillUse(pl, pl, 23022, level, 3000, 1)); | ||||
| 					SkillData.getInstance().getSkill(23022, level).applyEffects(pl, pl); | ||||
| 					 | ||||
| @@ -324,7 +324,7 @@ public class SavingSanta extends LongTimeEvent | ||||
| 					{ | ||||
| 						if (_rewardedPlayers.containsKey(pl.getAccountName())) | ||||
| 						{ | ||||
| 							long elapsedTimeSinceLastRewarded = System.currentTimeMillis() - _rewardedPlayers.get(pl.getAccountName()); | ||||
| 							final long elapsedTimeSinceLastRewarded = System.currentTimeMillis() - _rewardedPlayers.get(pl.getAccountName()); | ||||
| 							if (elapsedTimeSinceLastRewarded < MIN_TIME_BETWEEN_2_REWARDS) | ||||
| 							{ | ||||
| 								continue; | ||||
| @@ -339,10 +339,10 @@ public class SavingSanta extends LongTimeEvent | ||||
| 								continue; | ||||
| 							} | ||||
| 						} | ||||
| 						int locx = (int) (pl.getX() + (Math.pow(-1, getRandom(1, 2)) * 50)); | ||||
| 						int locy = (int) (pl.getY() + (Math.pow(-1, getRandom(1, 2)) * 50)); | ||||
| 						int heading = Util.calculateHeadingFrom(locx, locy, pl.getX(), pl.getY()); | ||||
| 						Npc santa = addSpawn(HOLIDAY_SANTA_ID, locx, locy, pl.getZ(), heading, false, 30000); | ||||
| 						final int locx = (int) (pl.getX() + (Math.pow(-1, getRandom(1, 2)) * 50)); | ||||
| 						final int locy = (int) (pl.getY() + (Math.pow(-1, getRandom(1, 2)) * 50)); | ||||
| 						final int heading = Util.calculateHeadingFrom(locx, locy, pl.getX(), pl.getY()); | ||||
| 						final Npc santa = addSpawn(HOLIDAY_SANTA_ID, locx, locy, pl.getZ(), heading, false, 30000); | ||||
| 						_rewardedPlayers.put(pl.getAccountName(), System.currentTimeMillis()); | ||||
| 						player.getVariables().set("LAST_SANTA_REWARD", System.currentTimeMillis()); | ||||
| 						startQuestTimer("SantaRewarding0", 500, santa, pl); | ||||
| @@ -446,7 +446,7 @@ public class SavingSanta extends LongTimeEvent | ||||
| 					{ | ||||
| 						if (_blessedPlayers.containsKey(plb.getAccountName())) | ||||
| 						{ | ||||
| 							long elapsedTimeSinceLastBlessed = currentTime - _blessedPlayers.get(plb.getAccountName()); | ||||
| 							final long elapsedTimeSinceLastBlessed = currentTime - _blessedPlayers.get(plb.getAccountName()); | ||||
| 							if (elapsedTimeSinceLastBlessed < MIN_TIME_BETWEEN_2_BLESSINGS) | ||||
| 							{ | ||||
| 								continue; | ||||
| @@ -504,12 +504,12 @@ public class SavingSanta extends LongTimeEvent | ||||
| 			{ | ||||
| 				for (PlayerInstance playerr : World.getInstance().getVisibleObjects(tree, PlayerInstance.class)) | ||||
| 				{ | ||||
| 					int xxMin = tree.getX() - 60; | ||||
| 					int yyMin = tree.getY() - 60; | ||||
| 					int xxMax = tree.getX() + 60; | ||||
| 					int yyMax = tree.getY() + 60; | ||||
| 					int playerX = playerr.getX(); | ||||
| 					int playerY = playerr.getY(); | ||||
| 					final int xxMin = tree.getX() - 60; | ||||
| 					final int yyMin = tree.getY() - 60; | ||||
| 					final int xxMax = tree.getX() + 60; | ||||
| 					final int yyMax = tree.getY() + 60; | ||||
| 					final int playerX = playerr.getX(); | ||||
| 					final int playerY = playerr.getY(); | ||||
| 					 | ||||
| 					if ((playerX > xxMin) && (playerX < xxMax) && (playerY > yyMin) && (playerY < yyMax)) | ||||
| 					{ | ||||
| @@ -528,7 +528,7 @@ public class SavingSanta extends LongTimeEvent | ||||
| 				 | ||||
| 				for (ItemHolder item : TREE_REQUIRED_ITEMS) | ||||
| 				{ | ||||
| 					long pieceCount = player.getInventory().getInventoryItemCount(item.getId(), -1); | ||||
| 					final long pieceCount = player.getInventory().getInventoryItemCount(item.getId(), -1); | ||||
| 					if (pieceCount >= item.getCount()) | ||||
| 					{ | ||||
| 						itemsOk = itemsOk + 1; | ||||
| @@ -573,7 +573,7 @@ public class SavingSanta extends LongTimeEvent | ||||
| 			else if (event.equalsIgnoreCase("SpecialTree")) | ||||
| 			{ | ||||
| 				htmltext = "<html><title>Christmas Event</title><body><br><br><table width=260><tr><td></td><td width=40></td><td width=40></td></tr><tr><td><font color=LEVEL>Special Christmas Tree</font></td><td width=40><img src=\"Icon.etc_x_mas_tree_i00\" width=32 height=32></td><td width=40></td></tr></table><br><br><table width=260>"; | ||||
| 				long pieceCount = player.getInventory().getInventoryItemCount(X_MAS_TREE1, -1); | ||||
| 				final long pieceCount = player.getInventory().getInventoryItemCount(X_MAS_TREE1, -1); | ||||
| 				int itemsOk = 0; | ||||
| 				 | ||||
| 				if (pieceCount >= 10) | ||||
| @@ -613,7 +613,7 @@ public class SavingSanta extends LongTimeEvent | ||||
| 			else if (event.equalsIgnoreCase("SantaHat")) | ||||
| 			{ | ||||
| 				htmltext = "<html><title>Christmas Event</title><body><br><br><table width=260><tr><td></td><td width=40></td><td width=40></td></tr><tr><td><font color=LEVEL>Santa's Hat</font></td><td width=40><img src=\"Icon.Accessory_santas_cap_i00\" width=32 height=32></td><td width=40></td></tr></table><br><br><table width=260>"; | ||||
| 				long pieceCount = player.getInventory().getInventoryItemCount(X_MAS_TREE1, -1); | ||||
| 				final long pieceCount = player.getInventory().getInventoryItemCount(X_MAS_TREE1, -1); | ||||
| 				int itemsOk = 0; | ||||
| 				 | ||||
| 				if (pieceCount >= 10) | ||||
| @@ -651,7 +651,7 @@ public class SavingSanta extends LongTimeEvent | ||||
| 			else if (event.equalsIgnoreCase("SavingSantaHat")) | ||||
| 			{ | ||||
| 				htmltext = "<html><title>Christmas Event</title><body><br><br><table width=260><tr><td></td><td width=40></td><td width=40></td></tr><tr><td><font color=LEVEL>Saving Santa's Hat</font></td><td width=40><img src=\"Icon.Accessory_santas_cap_i00\" width=32 height=32></td><td width=40></td></tr></table><br><br><table width=260>"; | ||||
| 				long pieceCount = player.getInventory().getAdena(); | ||||
| 				final long pieceCount = player.getInventory().getAdena(); | ||||
| 				int itemsOk = 0; | ||||
| 				 | ||||
| 				if (pieceCount >= 50000) | ||||
|   | ||||
| @@ -57,7 +57,7 @@ public class TrainingWithDandy extends LongTimeEvent | ||||
| 			} | ||||
| 			case "dandy_buff": | ||||
| 			{ | ||||
| 				Calendar calendar = Calendar.getInstance(); | ||||
| 				final Calendar calendar = Calendar.getInstance(); | ||||
| 				calendar.set(Calendar.MINUTE, 30); | ||||
| 				calendar.set(Calendar.HOUR_OF_DAY, 6); | ||||
| 				final long resetTime = calendar.getTimeInMillis(); | ||||
|   | ||||
| @@ -86,9 +86,9 @@ public class SkillTransfer extends AbstractNpcAI | ||||
| 			return; | ||||
| 		} | ||||
| 		 | ||||
| 		int pomanderId = PORMANDERS[index].getId(); | ||||
| 		final int pomanderId = PORMANDERS[index].getId(); | ||||
| 		// remove unsused HolyPomander | ||||
| 		PlayerInventory inv = player.getInventory(); | ||||
| 		final PlayerInventory inv = player.getInventory(); | ||||
| 		for (ItemInstance itemI : inv.getAllItemsByItemId(pomanderId)) | ||||
| 		{ | ||||
| 			inv.destroyItem("[HolyPomander - remove]", itemI, player, null); | ||||
|   | ||||
| @@ -736,7 +736,6 @@ public class MasterHandler | ||||
| 				catch (Exception e) | ||||
| 				{ | ||||
| 					LOGGER.log(Level.WARNING, "Failed loading handler: " + c.getSimpleName(), e); | ||||
| 					continue; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
|   | ||||
| @@ -176,9 +176,9 @@ public class AdminBuffs implements IAdminCommandHandler | ||||
| 		{ | ||||
| 			try | ||||
| 			{ | ||||
| 				StringTokenizer st = new StringTokenizer(command, " "); | ||||
| 				final StringTokenizer st = new StringTokenizer(command, " "); | ||||
| 				st.nextToken(); | ||||
| 				int objectId = Integer.parseInt(st.nextToken()); | ||||
| 				final int objectId = Integer.parseInt(st.nextToken()); | ||||
| 				viewBlockedEffects(activeChar, objectId); | ||||
| 				return true; | ||||
| 			} | ||||
| @@ -362,6 +362,7 @@ public class AdminBuffs implements IAdminCommandHandler | ||||
| 		} | ||||
| 		catch (Exception e) | ||||
| 		{ | ||||
| 			// Checked bellow. | ||||
| 		} | ||||
| 		 | ||||
| 		if ((target != null) && (skillId > 0)) | ||||
| @@ -389,6 +390,7 @@ public class AdminBuffs implements IAdminCommandHandler | ||||
| 		} | ||||
| 		catch (Exception e) | ||||
| 		{ | ||||
| 			// Checked bellow. | ||||
| 		} | ||||
| 		 | ||||
| 		if (target != null) | ||||
|   | ||||
| @@ -120,7 +120,7 @@ public class AdminInstanceZone implements IAdminCommandHandler | ||||
| 		{ | ||||
| 			int hours = 0; | ||||
| 			int minutes = 0; | ||||
| 			int id = entry.getKey(); | ||||
| 			final int id = entry.getKey(); | ||||
| 			final long remainingTime = (entry.getValue() - System.currentTimeMillis()) / 1000; | ||||
| 			if (remainingTime > 0) | ||||
| 			{ | ||||
|   | ||||
| @@ -30,8 +30,8 @@ import org.l2jmobius.gameserver.network.SystemMessageId; | ||||
| import org.l2jmobius.gameserver.util.BuilderUtil; | ||||
|  | ||||
| /** | ||||
|  * This class handles following admin commands: - kill = kills target Creature - kill_monster = kills target non-player - kill <radius> = If radius is specified, then ALL players only in that radius will be killed. - kill_monster <radius> = If radius is specified, then ALL non-players only in | ||||
|  * that radius will be killed. | ||||
|  * This class handles following admin commands: - kill = kills target Creature - kill_monster = kills target non-player - kill <radius> = If radius is specified, then ALL players only in that radius will be killed. - kill_monster <radius> = If radius is specified, then ALL non-players only in that | ||||
|  * radius will be killed. | ||||
|  * @version $Revision: 1.2.4.5 $ $Date: 2007/07/31 10:06:06 $ | ||||
|  */ | ||||
| public class AdminKill implements IAdminCommandHandler | ||||
|   | ||||
| @@ -316,7 +316,7 @@ public class AdminQuest implements IAdminCommandHandler | ||||
| 				{ | ||||
| 					continue; | ||||
| 				} | ||||
| 				else if (n.isDirectory()) | ||||
| 				if (n.isDirectory()) | ||||
| 				{ | ||||
| 					sb.append("<a action=\"bypass -h admin_script_dir " + c + "\">" + c + "</a><br1>"); | ||||
| 				} | ||||
| @@ -348,7 +348,7 @@ public class AdminQuest implements IAdminCommandHandler | ||||
| 				{ | ||||
| 					continue; | ||||
| 				} | ||||
| 				else if (n.isDirectory()) | ||||
| 				if (n.isDirectory()) | ||||
| 				{ | ||||
| 					sb.append("<a action=\"bypass -h admin_script_dir " + currentPath + "/" + c + "\">" + (questReducedNames ? getQuestName(c) : c) + "</a><br1>"); | ||||
| 				} | ||||
|   | ||||
| @@ -69,7 +69,7 @@ public class AdminShop implements IAdminCommandHandler | ||||
| 		{ | ||||
| 			try | ||||
| 			{ | ||||
| 				int listId = Integer.parseInt(command.substring(16).trim()); | ||||
| 				final int listId = Integer.parseInt(command.substring(16).trim()); | ||||
| 				MultisellData.getInstance().separateAndSend(listId, activeChar, null, false); | ||||
| 			} | ||||
| 			catch (NumberFormatException | IndexOutOfBoundsException e) | ||||
| @@ -81,7 +81,7 @@ public class AdminShop implements IAdminCommandHandler | ||||
| 		{ | ||||
| 			try | ||||
| 			{ | ||||
| 				int listId = Integer.parseInt(command.substring(20).trim()); | ||||
| 				final int listId = Integer.parseInt(command.substring(20).trim()); | ||||
| 				MultisellData.getInstance().separateAndSend(listId, activeChar, null, true); | ||||
| 			} | ||||
| 			catch (NumberFormatException | IndexOutOfBoundsException e) | ||||
|   | ||||
| @@ -101,6 +101,7 @@ public class AdminSkill implements IAdminCommandHandler | ||||
| 			} | ||||
| 			catch (StringIndexOutOfBoundsException e) | ||||
| 			{ | ||||
| 				// Not important. | ||||
| 			} | ||||
| 		} | ||||
| 		else if (command.startsWith("admin_skill_list")) | ||||
| @@ -116,6 +117,7 @@ public class AdminSkill implements IAdminCommandHandler | ||||
| 			} | ||||
| 			catch (StringIndexOutOfBoundsException e) | ||||
| 			{ | ||||
| 				// Not important. | ||||
| 			} | ||||
| 		} | ||||
| 		else if (command.startsWith("admin_add_skill")) | ||||
|   | ||||
| @@ -84,7 +84,7 @@ public class FindPvP implements IBypassHandler | ||||
| 			// Check if the player's clan is already outnumbering the PvP | ||||
| 			if (player.getClan() != null) | ||||
| 			{ | ||||
| 				Map<Integer, Integer> clanNumbers = new HashMap<>(); | ||||
| 				final Map<Integer, Integer> clanNumbers = new HashMap<>(); | ||||
| 				int allyId = player.getAllyId(); | ||||
| 				if (allyId == 0) | ||||
| 				{ | ||||
|   | ||||
| @@ -33,7 +33,7 @@ import org.l2jmobius.gameserver.network.serverpackets.ExItemAuctionInfoPacket; | ||||
|  | ||||
| public class ItemAuctionLink implements IBypassHandler | ||||
| { | ||||
| 	private static final SimpleDateFormat fmt = new SimpleDateFormat("HH:mm:ss dd.MM.yyyy"); | ||||
| 	private static final SimpleDateFormat SDF = new SimpleDateFormat("HH:mm:ss dd.MM.yyyy"); | ||||
| 	 | ||||
| 	private static final String[] COMMANDS = | ||||
| 	{ | ||||
| @@ -91,7 +91,7 @@ public class ItemAuctionLink implements IBypassHandler | ||||
| 					 | ||||
| 					if (nextAuction != null) | ||||
| 					{ | ||||
| 						player.sendMessage("The next auction will begin on the " + fmt.format(new Date(nextAuction.getStartingTime())) + "."); | ||||
| 						player.sendMessage("The next auction will begin on the " + SDF.format(new Date(nextAuction.getStartingTime())) + "."); | ||||
| 					} | ||||
| 					return true; | ||||
| 				} | ||||
|   | ||||
| @@ -408,7 +408,7 @@ public class NpcViewMod implements IBypassHandler | ||||
| 		{ | ||||
| 			final StringBuilder sb = new StringBuilder(); | ||||
| 			 | ||||
| 			int height = 64; | ||||
| 			final int height = 64; | ||||
| 			final DropHolder dropItem = dropList.get(i); | ||||
| 			final Item item = ItemTable.getInstance().getTemplate(dropItem.getItemId()); | ||||
| 			 | ||||
|   | ||||
| @@ -143,38 +143,38 @@ public class DropSearchBoard implements IParseBoardHandler | ||||
| 	public boolean parseCommunityBoardCommand(String command, PlayerInstance player) | ||||
| 	{ | ||||
| 		final String navigation = HtmCache.getInstance().getHtm(player, NAVIGATION_PATH); | ||||
| 		String[] params = command.split(" "); | ||||
| 		final String[] params = command.split(" "); | ||||
| 		String html = HtmCache.getInstance().getHtm(player, "data/html/CommunityBoard/Custom/dropsearch/main.html"); | ||||
| 		switch (params[0]) | ||||
| 		{ | ||||
| 			case "_bbs_search_item": | ||||
| 			{ | ||||
| 				String itemName = buildItemName(params); | ||||
| 				String result = buildItemSearchResult(itemName); | ||||
| 				final String itemName = buildItemName(params); | ||||
| 				final String result = buildItemSearchResult(itemName); | ||||
| 				html = html.replace("%searchResult%", result); | ||||
| 				break; | ||||
| 			} | ||||
| 			case "_bbs_search_drop": | ||||
| 			{ | ||||
| 				final DecimalFormat chanceFormat = new DecimalFormat("0.00##"); | ||||
| 				int itemId = Integer.parseInt(params[1]); | ||||
| 				final int itemId = Integer.parseInt(params[1]); | ||||
| 				int page = Integer.parseInt(params[2]); | ||||
| 				List<CBDropHolder> list = DROP_INDEX_CACHE.get(itemId); | ||||
| 				final List<CBDropHolder> list = DROP_INDEX_CACHE.get(itemId); | ||||
| 				int pages = list.size() / 14; | ||||
| 				if (pages == 0) | ||||
| 				{ | ||||
| 					pages++; | ||||
| 				} | ||||
| 				 | ||||
| 				int start = (page - 1) * 14; | ||||
| 				int end = Math.min(list.size() - 1, start + 14); | ||||
| 				StringBuilder builder = new StringBuilder(); | ||||
| 				final int start = (page - 1) * 14; | ||||
| 				final int end = Math.min(list.size() - 1, start + 14); | ||||
| 				final StringBuilder builder = new StringBuilder(); | ||||
| 				final double dropAmountEffectBonus = player.getStat().getValue(Stats.BONUS_DROP_AMOUNT, 1); | ||||
| 				final double dropRateEffectBonus = player.getStat().getValue(Stats.BONUS_DROP_RATE, 1); | ||||
| 				final double spoilRateEffectBonus = player.getStat().getValue(Stats.BONUS_SPOIL_RATE, 1); | ||||
| 				for (int index = start; index <= end; index++) | ||||
| 				{ | ||||
| 					CBDropHolder cbDropHolder = list.get(index); | ||||
| 					final CBDropHolder cbDropHolder = list.get(index); | ||||
| 					 | ||||
| 					// real time server rate calculations | ||||
| 					double rateChance = 1; | ||||
| @@ -299,15 +299,15 @@ public class DropSearchBoard implements IParseBoardHandler | ||||
| 			} | ||||
| 			case "_bbs_npc_trace": | ||||
| 			{ | ||||
| 				int npcId = Integer.parseInt(params[1]); | ||||
| 				List<NpcSpawnTemplate> spawnList = SpawnsData.getInstance().getNpcSpawns(npc -> npc.getId() == npcId); | ||||
| 				final int npcId = Integer.parseInt(params[1]); | ||||
| 				final List<NpcSpawnTemplate> spawnList = SpawnsData.getInstance().getNpcSpawns(npc -> npc.getId() == npcId); | ||||
| 				if (spawnList.isEmpty()) | ||||
| 				{ | ||||
| 					player.sendMessage("Cannot find any spawn. Maybe dropped by a boss or instance monster."); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					NpcSpawnTemplate spawn = spawnList.get(Rnd.get(spawnList.size())); | ||||
| 					final NpcSpawnTemplate spawn = spawnList.get(Rnd.get(spawnList.size())); | ||||
| 					player.getRadar().addMarker(spawn.getSpawnLocation().getX(), spawn.getSpawnLocation().getY(), spawn.getSpawnLocation().getZ()); | ||||
| 				} | ||||
| 				break; | ||||
| @@ -330,8 +330,8 @@ public class DropSearchBoard implements IParseBoardHandler | ||||
| 	private String buildItemSearchResult(String itemName) | ||||
| 	{ | ||||
| 		int limit = 0; | ||||
| 		Set<Integer> existInDropData = DROP_INDEX_CACHE.keySet(); | ||||
| 		List<Item> items = new ArrayList<>(); | ||||
| 		final Set<Integer> existInDropData = DROP_INDEX_CACHE.keySet(); | ||||
| 		final List<Item> items = new ArrayList<>(); | ||||
| 		for (Item item : ItemTable.getInstance().getAllItems()) | ||||
| 		{ | ||||
| 			if (item == null) | ||||
| @@ -363,7 +363,7 @@ public class DropSearchBoard implements IParseBoardHandler | ||||
| 		 | ||||
| 		int line = 0; | ||||
| 		 | ||||
| 		StringBuilder builder = new StringBuilder(items.size() * 28); | ||||
| 		final StringBuilder builder = new StringBuilder(items.size() * 28); | ||||
| 		int i = 0; | ||||
| 		for (Item item : items) | ||||
| 		{ | ||||
| @@ -416,7 +416,7 @@ public class DropSearchBoard implements IParseBoardHandler | ||||
| 	 */ | ||||
| 	private String buildItemName(String[] params) | ||||
| 	{ | ||||
| 		StringJoiner joiner = new StringJoiner(" "); | ||||
| 		final StringJoiner joiner = new StringJoiner(" "); | ||||
| 		for (int i = 1; i < params.length; i++) | ||||
| 		{ | ||||
| 			joiner.add(params[i]); | ||||
|   | ||||
| @@ -102,7 +102,7 @@ public class HomeBoard implements IParseBoardHandler | ||||
| 	@Override | ||||
| 	public String[] getCommunityBoardCommands() | ||||
| 	{ | ||||
| 		List<String> commands = new ArrayList<>(); | ||||
| 		final List<String> commands = new ArrayList<>(); | ||||
| 		commands.addAll(Arrays.asList(COMMANDS)); | ||||
| 		commands.addAll(Arrays.asList(CUSTOM_COMMANDS)); | ||||
| 		return commands.stream().filter(Objects::nonNull).toArray(String[]::new); | ||||
| @@ -204,7 +204,7 @@ public class HomeBoard implements IParseBoardHandler | ||||
| 			{ | ||||
| 				player.destroyItemByItemId("CB_Buff", Config.COMMUNITYBOARD_CURRENCY, Config.COMMUNITYBOARD_BUFF_PRICE * buffCount, player, true); | ||||
| 				final PetInstance pet = player.getPet(); | ||||
| 				List<Creature> targets = new ArrayList<>(4); | ||||
| 				final List<Creature> targets = new ArrayList<>(4); | ||||
| 				targets.add(player); | ||||
| 				if (pet != null) | ||||
| 				{ | ||||
|   | ||||
| @@ -36,7 +36,7 @@ public class DisableSkill extends AbstractEffect | ||||
| 	 | ||||
| 	public DisableSkill(StatsSet params) | ||||
| 	{ | ||||
| 		String disable = params.getString("disable"); | ||||
| 		final String disable = params.getString("disable"); | ||||
| 		if ((disable != null) && !disable.isEmpty()) | ||||
| 		{ | ||||
| 			disableSkills = new HashSet<>(); | ||||
|   | ||||
| @@ -38,7 +38,7 @@ public class DispelBySlotMyself extends AbstractEffect | ||||
| 	 | ||||
| 	public DispelBySlotMyself(StatsSet params) | ||||
| 	{ | ||||
| 		String dispel = params.getString("dispel"); | ||||
| 		final String dispel = params.getString("dispel"); | ||||
| 		if ((dispel != null) && !dispel.isEmpty()) | ||||
| 		{ | ||||
| 			_dispelAbnormals = new HashSet<>(); | ||||
|   | ||||
| @@ -34,10 +34,10 @@ import org.l2jmobius.gameserver.model.skills.Skill; | ||||
| public class DispelCaster extends AbstractEffect | ||||
| { | ||||
| 	private final Set<AbnormalType> _dispelAbnormals; | ||||
|  | ||||
| 	 | ||||
| 	public DispelCaster(StatsSet params) | ||||
| 	{ | ||||
| 		String dispel = params.getString("dispel"); | ||||
| 		final String dispel = params.getString("dispel"); | ||||
| 		if ((dispel != null) && !dispel.isEmpty()) | ||||
| 		{ | ||||
| 			_dispelAbnormals = new HashSet<>(); | ||||
| @@ -51,19 +51,19 @@ public class DispelCaster extends AbstractEffect | ||||
| 			_dispelAbnormals = Collections.<AbnormalType> emptySet(); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	 | ||||
| 	@Override | ||||
| 	public EffectType getEffectType() | ||||
| 	{ | ||||
| 		return EffectType.DISPEL_BY_SLOT; | ||||
| 	} | ||||
|  | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean isInstant() | ||||
| 	{ | ||||
| 		return true; | ||||
| 	} | ||||
|  | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void instant(Creature effector, Creature effected, Skill skill, ItemInstance item) | ||||
| 	{ | ||||
| @@ -71,7 +71,7 @@ public class DispelCaster extends AbstractEffect | ||||
| 		{ | ||||
| 			return; | ||||
| 		} | ||||
|  | ||||
| 		 | ||||
| 		// The effectlist should already check if it has buff with this abnormal type or not. | ||||
| 		effector.getEffectList().stopEffects(info -> !info.getSkill().isIrreplacableBuff() && _dispelAbnormals.contains(info.getSkill().getAbnormalType()), true, true); | ||||
| 	} | ||||
|   | ||||
| @@ -51,7 +51,7 @@ public class FatalBlow extends AbstractEffect | ||||
| 		_criticalChance = params.getDouble("criticalChance", 0); | ||||
| 		_overHit = params.getBoolean("overHit", false); | ||||
| 		 | ||||
| 		String abnormals = params.getString("abnormalType", null); | ||||
| 		final String abnormals = params.getString("abnormalType", null); | ||||
| 		if ((abnormals != null) && !abnormals.isEmpty()) | ||||
| 		{ | ||||
| 			_abnormals = new HashSet<>(); | ||||
|   | ||||
| @@ -87,7 +87,7 @@ public class RebalanceHP extends AbstractEffect | ||||
| 				} | ||||
| 			} | ||||
| 			 | ||||
| 			double percentHP = currentHPs / fullHP; | ||||
| 			final double percentHP = currentHPs / fullHP; | ||||
| 			for (PlayerInstance member : party.getMembers()) | ||||
| 			{ | ||||
| 				if (!member.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, member, true)) | ||||
|   | ||||
| @@ -70,7 +70,7 @@ public class RebalanceHPSummon extends AbstractEffect | ||||
| 		fullHP += effector.getMaxHp(); | ||||
| 		currentHPs += effector.getCurrentHp(); | ||||
| 		 | ||||
| 		double percentHP = currentHPs / fullHP; | ||||
| 		final double percentHP = currentHPs / fullHP; | ||||
| 		for (Summon summon : effector.getServitors().values()) | ||||
| 		{ | ||||
| 			if (!summon.isDead() && Util.checkIfInRange(skill.getAffectRange(), effector, summon, true)) | ||||
|   | ||||
| @@ -109,7 +109,7 @@ public class RestorationRandom extends AbstractEffect | ||||
| 				continue; | ||||
| 			} | ||||
| 			 | ||||
| 			long itemCount = (long) (createdItem.getCount() * Config.RATE_EXTRACTABLE); | ||||
| 			final long itemCount = (long) (createdItem.getCount() * Config.RATE_EXTRACTABLE); | ||||
| 			final ItemInstance newItem = player.addItem("Extract", createdItem.getId(), itemCount, effector, false); | ||||
| 			 | ||||
| 			if (createdItem.getMaxEnchant() > 0) | ||||
|   | ||||
| @@ -53,8 +53,8 @@ public class RestoreSymbolSeal extends AbstractEffect | ||||
| 			return; | ||||
| 		} | ||||
| 		 | ||||
| 		PlayerInstance player = effected.getActingPlayer(); | ||||
| 		int basicAmount = _amount; | ||||
| 		final PlayerInstance player = effected.getActingPlayer(); | ||||
| 		final int basicAmount = _amount; | ||||
| 		double amount = 0; | ||||
| 		switch (_mode) | ||||
| 		{ | ||||
|   | ||||
| @@ -75,7 +75,7 @@ public class TrackLimitedSkill extends AbstractEffect | ||||
| 	private void trackAeoreLimit(Creature effector, Creature effected, int limitSkillId) | ||||
| 	{ | ||||
| 		limitAeoreLevel = 0; | ||||
| 		EffectList effectList = effected.getEffectList(); | ||||
| 		final EffectList effectList = effected.getEffectList(); | ||||
| 		for (BuffInfo debuff : effectList.getDebuffs()) | ||||
| 		{ | ||||
| 			if (debuff.getSkill().getId() == limitSkillId) | ||||
| @@ -98,7 +98,7 @@ public class TrackLimitedSkill extends AbstractEffect | ||||
| 	private void trackSigelLimit(Creature effector, Creature effected, int limitSkillId) | ||||
| 	{ | ||||
| 		limitSigelLevel = 0; | ||||
| 		EffectList effectList = effected.getEffectList(); | ||||
| 		final EffectList effectList = effected.getEffectList(); | ||||
| 		for (BuffInfo debuff : effectList.getDebuffs()) | ||||
| 		{ | ||||
| 			if (debuff.getSkill().getId() == limitSkillId) | ||||
| @@ -121,7 +121,7 @@ public class TrackLimitedSkill extends AbstractEffect | ||||
| 	private void trackIssLimit(Creature effector, Creature effected, int limitSkillId) | ||||
| 	{ | ||||
| 		limitIssLevel = 0; | ||||
| 		EffectList effectList = effected.getEffectList(); | ||||
| 		final EffectList effectList = effected.getEffectList(); | ||||
| 		for (BuffInfo debuff : effectList.getDebuffs()) | ||||
| 		{ | ||||
| 			if (debuff.getSkill().getId() == limitSkillId) | ||||
|   | ||||
| @@ -277,7 +277,7 @@ public class AltarOfShilen extends AbstractInstance | ||||
| 		final Instance world = npc.getInstanceWorld(); | ||||
| 		if (world != null) | ||||
| 		{ | ||||
| 			int npcId = npc.getId(); | ||||
| 			final int npcId = npc.getId(); | ||||
| 			if (!_killedMonsters.containsKey(npcId)) | ||||
| 			{ | ||||
| 				_killedMonsters.put(npcId, 1); | ||||
| @@ -410,7 +410,7 @@ public class AltarOfShilen extends AbstractInstance | ||||
| 	public String onFirstTalk(Npc npc, PlayerInstance player) | ||||
| 	{ | ||||
| 		final Instance world = npc.getInstanceWorld(); | ||||
| 		String htmltext = null; | ||||
| 		final String htmltext = null; | ||||
| 		if (isInInstance(world)) | ||||
| 		{ | ||||
| 			switch (npc.getId()) | ||||
|   | ||||
| @@ -103,13 +103,13 @@ public class CrystalCavernsEmeraldSquare extends AbstractInstance | ||||
| 			{ | ||||
| 				case "HP_REGEN_TIMER": | ||||
| 				{ | ||||
| 					int value = ((baseId == 5) || (baseId == 6)) ? 5 : baseId; | ||||
| 					final int value = ((baseId == 5) || (baseId == 6)) ? 5 : baseId; | ||||
| 					npc.getStat().addFixedValue(Stats.REGENERATE_HP_RATE, Double.valueOf(value * 1000)); | ||||
| 					break; | ||||
| 				} | ||||
| 				case "SUPPORT_SPAWN_TIMER": | ||||
| 				{ | ||||
| 					int supportVal = npcVars.getInt("SUPPORT_VALUE", 0); | ||||
| 					final int supportVal = npcVars.getInt("SUPPORT_VALUE", 0); | ||||
| 					 | ||||
| 					if (supportVal > 3) | ||||
| 					{ | ||||
|   | ||||
| @@ -166,7 +166,7 @@ public class KartiaHelperElise extends AbstractNpcAI | ||||
| 				final Map<WorldObject, Integer> hpMap = new HashMap<>(); | ||||
| 				instance.getAliveNpcs(KARTIA_FRIENDS).forEach(friend -> hpMap.put(friend, friend != null ? friend.getCurrentHpPercent() : 100)); | ||||
| 				hpMap.put(plr, plr != null ? plr.getCurrentHpPercent() : 100); | ||||
| 				Map<WorldObject, Integer> sortedHpMap = Util.sortByValue(hpMap, false); | ||||
| 				final Map<WorldObject, Integer> sortedHpMap = Util.sortByValue(hpMap, false); | ||||
| 				 | ||||
| 				// See if any friends are below 80% HP and add to list of people to heal. | ||||
| 				final List<WorldObject> peopleToHeal = new ArrayList<>(); | ||||
| @@ -195,12 +195,12 @@ public class KartiaHelperElise extends AbstractNpcAI | ||||
| 						{ | ||||
| 							if (personToHeal.getInstanceType() == InstanceType.PlayerInstance) | ||||
| 							{ | ||||
| 								PlayerInstance thePlayer = (PlayerInstance) personToHeal; | ||||
| 								final PlayerInstance thePlayer = (PlayerInstance) personToHeal; | ||||
| 								thePlayer.setCurrentHp((thePlayer.getMaxHp() * .20) + thePlayer.getCurrentHp()); | ||||
| 							} | ||||
| 							else | ||||
| 							{ | ||||
| 								Npc npcToHeal = (Npc) personToHeal; | ||||
| 								final Npc npcToHeal = (Npc) personToHeal; | ||||
| 								npcToHeal.setCurrentHp((npcToHeal.getMaxHp() * .20) + npcToHeal.getCurrentHp()); | ||||
| 							} | ||||
| 						} | ||||
|   | ||||
| @@ -225,7 +225,7 @@ public class StoryOfTauti extends AbstractInstance | ||||
| 			{ | ||||
| 				if (!npc.isDead()) | ||||
| 				{ | ||||
| 					for (final Npc nearby : World.getInstance().getVisibleObjectsInRange(npc, FriendlyNpcInstance.class, 1000)) | ||||
| 					for (Npc nearby : World.getInstance().getVisibleObjectsInRange(npc, FriendlyNpcInstance.class, 1000)) | ||||
| 					{ | ||||
| 						if ((nearby.getId() == FLAME_FLOWER) && npc.isScriptValue(0) && nearby.isScriptValue(0)) | ||||
| 						{ | ||||
| @@ -786,7 +786,7 @@ public class StoryOfTauti extends AbstractInstance | ||||
| 				case FLAME_FLOWER: | ||||
| 				{ | ||||
| 					npc.setCurrentHp(npc.getMaxHp() * 0.20); | ||||
| 					for (final Npc tombstone : World.getInstance().getVisibleObjectsInRange(npc, MonsterInstance.class, 500)) | ||||
| 					for (Npc tombstone : World.getInstance().getVisibleObjectsInRange(npc, MonsterInstance.class, 500)) | ||||
| 					{ | ||||
| 						if (tombstone.getId() == SEAL_TOMBSTONE) | ||||
| 						{ | ||||
| @@ -863,7 +863,7 @@ public class StoryOfTauti extends AbstractInstance | ||||
| 				} | ||||
| 				case NPC_1: | ||||
| 				{ | ||||
| 					for (final PlayerInstance nearby : World.getInstance().getVisibleObjectsInRange(npc, PlayerInstance.class, 2000)) | ||||
| 					for (PlayerInstance nearby : World.getInstance().getVisibleObjectsInRange(npc, PlayerInstance.class, 2000)) | ||||
| 					{ | ||||
| 						if (npc.isScriptValue(0) && (nearby != null)) | ||||
| 						{ | ||||
|   | ||||
| @@ -46,7 +46,7 @@ public class Q00032_AnObviousLie extends Quest | ||||
| 	// Misc | ||||
| 	private static final int MIN_LVL = 45; | ||||
| 	// Reward | ||||
| 	private static final Map<String, Integer> EARS = new HashMap<>(); | ||||
| 	private static final Map<String, Integer> EARS = new HashMap<>(); | ||||
| 	static | ||||
| 	{ | ||||
| 		EARS.put("cat", 6843); // Cat Ears | ||||
|   | ||||
| @@ -90,7 +90,7 @@ public class Q00454_CompletelyLost extends Quest | ||||
| 				final PlayerInstance leader = npc.getVariables().getObject("leader", PlayerInstance.class); | ||||
| 				if (leader != null) | ||||
| 				{ | ||||
| 					double dist = Util.calculateDistance(npc, leader, false, false); | ||||
| 					final double dist = Util.calculateDistance(npc, leader, false, false); | ||||
| 					if (dist > 1000) | ||||
| 					{ | ||||
| 						if (((dist > 5000) && (dist < 6900)) || ((dist > 31000) && (dist < 32000))) | ||||
|   | ||||
| @@ -92,7 +92,7 @@ public class Q00564_BasicMissionKartiasLabyrinthSolo extends Quest | ||||
| 			} | ||||
| 			case "34413-09.html": | ||||
| 			{ | ||||
| 				StringBuilder str = new StringBuilder("000"); | ||||
| 				final StringBuilder str = new StringBuilder("000"); | ||||
| 				checkQuestCompleted(player, str); // Initialize the array with all quests completed | ||||
| 				 | ||||
| 				if (str.indexOf("1") == -1) // verify if no quest completed | ||||
| @@ -153,7 +153,7 @@ public class Q00564_BasicMissionKartiasLabyrinthSolo extends Quest | ||||
| 					{ | ||||
| 						if (qs.isCond(2)) | ||||
| 						{ | ||||
| 							StringBuilder str = new StringBuilder("000"); | ||||
| 							final StringBuilder str = new StringBuilder("000"); | ||||
| 							checkQuestCompleted(player, str); // Initialize the array with all quests completed | ||||
| 							 | ||||
| 							if (str.indexOf("1") != -1) // verify if any quest completed | ||||
| @@ -183,7 +183,7 @@ public class Q00564_BasicMissionKartiasLabyrinthSolo extends Quest | ||||
| 	private StringBuilder checkQuestCompleted(PlayerInstance player, StringBuilder string) | ||||
| 	{ | ||||
| 		int index = 0; | ||||
| 		char ch = '1'; | ||||
| 		final char ch = '1'; | ||||
| 		final QuestState st1 = player.getQuestState("Q00497_IncarnationOfGreedZellakaSolo"); | ||||
| 		if ((st1 != null) && st1.isCompleted()) | ||||
| 		{ | ||||
|   | ||||
| @@ -101,7 +101,7 @@ public class Q00567_BasicMissionIsleOfSouls extends Quest | ||||
| 			} | ||||
| 			case "34413-07.html": | ||||
| 			{ | ||||
| 				StringBuilder str = new StringBuilder("00"); | ||||
| 				final StringBuilder str = new StringBuilder("00"); | ||||
| 				checkQuestCompleted(player, str); // Initialize the array with all quests completed | ||||
| 				 | ||||
| 				if (str.indexOf("11") != -1) // verify if all quests completed | ||||
| @@ -220,7 +220,7 @@ public class Q00567_BasicMissionIsleOfSouls extends Quest | ||||
| 						} | ||||
| 						else | ||||
| 						{ | ||||
| 							StringBuilder str = new StringBuilder("00"); | ||||
| 							final StringBuilder str = new StringBuilder("00"); | ||||
| 							checkQuestCompleted(player, str); // Initialize the array with all quests completed | ||||
| 							if (str.indexOf("11") != -1) // verify if all quests completed | ||||
| 							{ | ||||
| @@ -258,7 +258,7 @@ public class Q00567_BasicMissionIsleOfSouls extends Quest | ||||
| 	private StringBuilder checkQuestCompleted(PlayerInstance player, StringBuilder string) | ||||
| 	{ | ||||
| 		int index = 0; | ||||
| 		char ch = '1'; | ||||
| 		final char ch = '1'; | ||||
| 		final QuestState st1 = player.getQuestState("Q00752_UncoverTheSecret"); | ||||
| 		if ((st1 != null) && st1.isCompleted()) | ||||
| 		{ | ||||
|   | ||||
| @@ -222,8 +222,8 @@ public class Q00783_VestigeOfTheMagicPower extends Quest | ||||
| 			 | ||||
| 			for (PlayerInstance singleMember : partyMember) | ||||
| 			{ | ||||
| 				QuestState qsPartyMember = getQuestState(singleMember, false); | ||||
| 				double distance = npc.calculateDistance3D(singleMember); | ||||
| 				final QuestState qsPartyMember = getQuestState(singleMember, false); | ||||
| 				final double distance = npc.calculateDistance3D(singleMember); | ||||
| 				if ((qsPartyMember != null) && (distance <= 1000)) | ||||
| 				{ | ||||
| 					if (qsPartyMember.isCond(2) && giveItemRandomly(singleMember, npc, HIGH_GRADE_FRAGMENT_OF_CHAOS, 1, 300, 1, true)) | ||||
|   | ||||
| @@ -134,7 +134,7 @@ public class Q00833_DevilsTreasureTauti extends Quest | ||||
| 	@Override | ||||
| 	public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) | ||||
| 	{ | ||||
| 		Party party = killer.getParty(); | ||||
| 		final Party party = killer.getParty(); | ||||
| 		if (party != null) | ||||
| 		{ | ||||
| 			party.getMembers().forEach(p -> onKill(npc, p)); | ||||
|   | ||||
| @@ -246,7 +246,7 @@ public class Q10589_WhereFatesIntersect extends Quest | ||||
| 	@Override | ||||
| 	public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) | ||||
| 	{ | ||||
| 		QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false); | ||||
| 		final QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false); | ||||
| 		if ((qs != null) && qs.isCond(KILLING_COND)) | ||||
| 		{ | ||||
| 			final PlayerInstance player = qs.getPlayer(); | ||||
|   | ||||
| @@ -141,37 +141,31 @@ public class Q10590_ReawakenedFate extends Quest | ||||
| 			} | ||||
| 			case "34513-10.html": | ||||
| 			{ | ||||
| 				if (qs.isCond(7)) | ||||
| 				if (qs.isCond(7) && (player.getLevel() >= 99)) | ||||
| 				{ | ||||
| 					if (player.getLevel() >= 99) | ||||
| 					{ | ||||
| 						// Reward â„–1 | ||||
| 						takeItems(player, VAMPIRE_ICHOR, -1); | ||||
| 						giveItems(player, ACHIEVEMENT_BOX, 1); | ||||
| 						giveItems(player, RUBIN_LV2, 1); | ||||
| 						showOnScreenMsg(player, NpcStringId.YOU_ARE_READY_TO_ADD_A_DUAL_CLASS_NTALK_TO_THE_DUAL_CLASS_MASTER, ExShowScreenMessage.TOP_CENTER, 10000); | ||||
| 						qs.exitQuest(false, true); | ||||
| 						htmltext = event; | ||||
| 					} | ||||
| 					break; | ||||
| 					// Reward â„–1 | ||||
| 					takeItems(player, VAMPIRE_ICHOR, -1); | ||||
| 					giveItems(player, ACHIEVEMENT_BOX, 1); | ||||
| 					giveItems(player, RUBIN_LV2, 1); | ||||
| 					showOnScreenMsg(player, NpcStringId.YOU_ARE_READY_TO_ADD_A_DUAL_CLASS_NTALK_TO_THE_DUAL_CLASS_MASTER, ExShowScreenMessage.TOP_CENTER, 10000); | ||||
| 					qs.exitQuest(false, true); | ||||
| 					htmltext = event; | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case "34513-11.html": | ||||
| 			{ | ||||
| 				if (qs.isCond(7)) | ||||
| 				if (qs.isCond(7) && (player.getLevel() >= 99)) | ||||
| 				{ | ||||
| 					if (player.getLevel() >= 99) | ||||
| 					{ | ||||
| 						// Reward â„–2 | ||||
| 						takeItems(player, VAMPIRE_ICHOR, -1); | ||||
| 						giveItems(player, ACHIEVEMENT_BOX, 1); | ||||
| 						giveItems(player, SAPPHIRE_LV2, 1); | ||||
| 						showOnScreenMsg(player, NpcStringId.YOU_ARE_READY_TO_ADD_A_DUAL_CLASS_NTALK_TO_THE_DUAL_CLASS_MASTER, ExShowScreenMessage.TOP_CENTER, 10000); | ||||
| 						qs.exitQuest(false, true); | ||||
| 						htmltext = event; | ||||
| 					} | ||||
| 					break; | ||||
| 					// Reward â„–2 | ||||
| 					takeItems(player, VAMPIRE_ICHOR, -1); | ||||
| 					giveItems(player, ACHIEVEMENT_BOX, 1); | ||||
| 					giveItems(player, SAPPHIRE_LV2, 1); | ||||
| 					showOnScreenMsg(player, NpcStringId.YOU_ARE_READY_TO_ADD_A_DUAL_CLASS_NTALK_TO_THE_DUAL_CLASS_MASTER, ExShowScreenMessage.TOP_CENTER, 10000); | ||||
| 					qs.exitQuest(false, true); | ||||
| 					htmltext = event; | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case "34513-12.html": | ||||
| 			{ | ||||
|   | ||||
| @@ -158,41 +158,35 @@ public class Q10591_NobleMaterial extends Quest | ||||
| 			} | ||||
| 			case "33907-05.html": | ||||
| 			{ | ||||
| 				if (qs.isCond(7)) | ||||
| 				if (qs.isCond(7) && (player.getLevel() >= MIN_LEVEL)) | ||||
| 				{ | ||||
| 					if (player.getLevel() >= MIN_LEVEL) | ||||
| 					{ | ||||
| 						// Reward â„–1 | ||||
| 						addExpAndSp(player, EXP, SP); | ||||
| 						giveAdena(player, ADENA_AMOUNT, false); | ||||
| 						giveItems(player, ACHIEVEMENT_BOX_LV_100, 1); | ||||
| 						giveItems(player, ACQUIRE_NOBLESSE_PRIVILEGES, 1); | ||||
| 						giveItems(player, WARRIOR_CICLET_BOX_LV5, 1); | ||||
| 						showOnScreenMsg(player, NpcStringId.CONGRATULATIONS_YOU_ARE_NOW_A_NOBLESSE, ExShowScreenMessage.TOP_CENTER, 10000); | ||||
| 						qs.exitQuest(false, true); | ||||
| 						htmltext = event; | ||||
| 					} | ||||
| 					break; | ||||
| 					// Reward â„–1 | ||||
| 					addExpAndSp(player, EXP, SP); | ||||
| 					giveAdena(player, ADENA_AMOUNT, false); | ||||
| 					giveItems(player, ACHIEVEMENT_BOX_LV_100, 1); | ||||
| 					giveItems(player, ACQUIRE_NOBLESSE_PRIVILEGES, 1); | ||||
| 					giveItems(player, WARRIOR_CICLET_BOX_LV5, 1); | ||||
| 					showOnScreenMsg(player, NpcStringId.CONGRATULATIONS_YOU_ARE_NOW_A_NOBLESSE, ExShowScreenMessage.TOP_CENTER, 10000); | ||||
| 					qs.exitQuest(false, true); | ||||
| 					htmltext = event; | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case "33907-06.html": | ||||
| 			{ | ||||
| 				if (qs.isCond(7)) | ||||
| 				if (qs.isCond(7) && (player.getLevel() >= MIN_LEVEL)) | ||||
| 				{ | ||||
| 					if (player.getLevel() >= MIN_LEVEL) | ||||
| 					{ | ||||
| 						// Reward â„–2 | ||||
| 						addExpAndSp(player, EXP, SP); | ||||
| 						giveAdena(player, ADENA_AMOUNT, false); | ||||
| 						giveItems(player, ACHIEVEMENT_BOX_LV_100, 1); | ||||
| 						giveItems(player, ACQUIRE_NOBLESSE_PRIVILEGES, 1); | ||||
| 						giveItems(player, WIZARD_CICLET_BOX_LV5, 1); | ||||
| 						showOnScreenMsg(player, NpcStringId.CONGRATULATIONS_YOU_ARE_NOW_A_NOBLESSE, ExShowScreenMessage.TOP_CENTER, 10000); | ||||
| 						qs.exitQuest(false, true); | ||||
| 						htmltext = event; | ||||
| 					} | ||||
| 					break; | ||||
| 					// Reward â„–2 | ||||
| 					addExpAndSp(player, EXP, SP); | ||||
| 					giveAdena(player, ADENA_AMOUNT, false); | ||||
| 					giveItems(player, ACHIEVEMENT_BOX_LV_100, 1); | ||||
| 					giveItems(player, ACQUIRE_NOBLESSE_PRIVILEGES, 1); | ||||
| 					giveItems(player, WIZARD_CICLET_BOX_LV5, 1); | ||||
| 					showOnScreenMsg(player, NpcStringId.CONGRATULATIONS_YOU_ARE_NOW_A_NOBLESSE, ExShowScreenMessage.TOP_CENTER, 10000); | ||||
| 					qs.exitQuest(false, true); | ||||
| 					htmltext = event; | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case "33907-07.html": | ||||
| 			{ | ||||
|   | ||||
| @@ -131,7 +131,7 @@ public class Q10801_TheDimensionalWarpPart1 extends Quest | ||||
| 	@Override | ||||
| 	public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) | ||||
| 	{ | ||||
| 		Party party = killer.getParty(); | ||||
| 		final Party party = killer.getParty(); | ||||
| 		if (party != null) | ||||
| 		{ | ||||
| 			party.getMembers().forEach(p -> onKill(npc, p)); | ||||
|   | ||||
| @@ -131,7 +131,7 @@ public class Q10802_TheDimensionalWarpPart2 extends Quest | ||||
| 	@Override | ||||
| 	public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) | ||||
| 	{ | ||||
| 		Party party = killer.getParty(); | ||||
| 		final Party party = killer.getParty(); | ||||
| 		if (party != null) | ||||
| 		{ | ||||
| 			party.getMembers().forEach(p -> onKill(npc, p)); | ||||
|   | ||||
| @@ -133,7 +133,7 @@ public class Q10803_TheDimensionalWarpPart3 extends Quest | ||||
| 	@Override | ||||
| 	public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) | ||||
| 	{ | ||||
| 		Party party = killer.getParty(); | ||||
| 		final Party party = killer.getParty(); | ||||
| 		if (party != null) | ||||
| 		{ | ||||
| 			party.getMembers().forEach(p -> onKill(npc, p)); | ||||
|   | ||||
| @@ -133,7 +133,7 @@ public class Q10804_TheDimensionalWarpPart4 extends Quest | ||||
| 	@Override | ||||
| 	public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) | ||||
| 	{ | ||||
| 		Party party = killer.getParty(); | ||||
| 		final Party party = killer.getParty(); | ||||
| 		if (party != null) | ||||
| 		{ | ||||
| 			party.getMembers().forEach(p -> onKill(npc, p)); | ||||
|   | ||||
| @@ -133,7 +133,7 @@ public class Q10805_TheDimensionalWarpPart5 extends Quest | ||||
| 	@Override | ||||
| 	public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) | ||||
| 	{ | ||||
| 		Party party = killer.getParty(); | ||||
| 		final Party party = killer.getParty(); | ||||
| 		if (party != null) | ||||
| 		{ | ||||
| 			party.getMembers().forEach(p -> onKill(npc, p)); | ||||
|   | ||||
| @@ -131,7 +131,7 @@ public class Q10806_TheDimensionalWarpPart6 extends Quest | ||||
| 	@Override | ||||
| 	public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) | ||||
| 	{ | ||||
| 		Party party = killer.getParty(); | ||||
| 		final Party party = killer.getParty(); | ||||
| 		if (party != null) | ||||
| 		{ | ||||
| 			party.getMembers().forEach(p -> onKill(npc, p)); | ||||
|   | ||||
| @@ -131,7 +131,7 @@ public class Q10807_TheDimensionalWarpPart7 extends Quest | ||||
| 	@Override | ||||
| 	public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) | ||||
| 	{ | ||||
| 		Party party = killer.getParty(); | ||||
| 		final Party party = killer.getParty(); | ||||
| 		if (party != null) | ||||
| 		{ | ||||
| 			party.getMembers().forEach(p -> onKill(npc, p)); | ||||
|   | ||||
| @@ -212,23 +212,20 @@ public class Q10824_ConfrontingTheGreatestDanger extends Quest | ||||
| 				if (qs.isCond(1)) | ||||
| 				{ | ||||
| 					htmltext = "34018-07.html"; | ||||
| 					break; | ||||
| 				} | ||||
| 				else if (qs.isCond(2)) | ||||
| 				{ | ||||
| 					htmltext = "34018-08.html"; | ||||
| 					break; | ||||
| 				} | ||||
| 				else if (qs.isCond(3)) | ||||
| 				{ | ||||
| 					htmltext = "34018-11.htm"; | ||||
| 					break; | ||||
| 				} | ||||
| 				else if (qs.isCond(4)) | ||||
| 				{ | ||||
| 					htmltext = "34018-12.html"; | ||||
| 					break; | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case State.COMPLETED: | ||||
| 			{ | ||||
| @@ -271,5 +268,4 @@ public class Q10824_ConfrontingTheGreatestDanger extends Quest | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	// TODO: Dimensional Raid - https://l2wiki.com/Dimensional_Raid | ||||
| } | ||||
| @@ -151,8 +151,8 @@ public class Q11025_PathOfDestinyProving extends Quest | ||||
| 					addSpawn(MYSTERIOUS_MAGE, npc, true, 300000); | ||||
| 					showOnScreenMsg(player, NpcStringId.TALK_TO_THE_MYSTERIOUS_WIZARD_2, ExShowScreenMessage.TOP_CENTER, 10000); | ||||
| 					npc.deleteMe(); | ||||
| 					break; | ||||
| 				} | ||||
| 				break; | ||||
| 			} | ||||
| 			case "falver": | ||||
| 			{ | ||||
|   | ||||
| @@ -16,7 +16,7 @@ | ||||
|  */ | ||||
| package quests.Q11027_PathOfDestinyOvercome; | ||||
|  | ||||
| import java.util.HashMap; | ||||
| import java.util.EnumMap; | ||||
| import java.util.Map; | ||||
| import java.util.Map.Entry; | ||||
|  | ||||
| @@ -58,7 +58,7 @@ public class Q11027_PathOfDestinyOvercome extends Quest | ||||
| 	private static final int ATELIA = 39542; | ||||
| 	// Reward | ||||
| 	private static final int CHAOS_POMANDER = 37374; | ||||
| 	private static final Map<CategoryType, Integer> AWAKE_POWER = new HashMap<>(); | ||||
| 	private static final Map<CategoryType, Integer> AWAKE_POWER = new EnumMap<>(CategoryType.class); | ||||
| 	static | ||||
| 	{ | ||||
| 		AWAKE_POWER.put(CategoryType.SIXTH_SIGEL_GROUP, 32264); | ||||
|   | ||||
| @@ -173,14 +173,11 @@ public class Q11033_AntidoteIngredients extends Quest | ||||
| 	public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) | ||||
| 	{ | ||||
| 		final QuestState qs = getQuestState(killer, false); | ||||
| 		if ((qs != null) && qs.isCond(1)) | ||||
| 		if ((qs != null) && qs.isCond(1) && giveItemRandomly(killer, SECRET_MATERIAL, 1, 15, 0.5, true)) | ||||
| 		{ | ||||
| 			if (giveItemRandomly(killer, SECRET_MATERIAL, 1, 15, 0.5, true)) | ||||
| 			{ | ||||
| 				qs.setCond(2, true); | ||||
| 				giveItems(killer, SOE_KALESIN); | ||||
| 				showOnScreenMsg(killer, NpcStringId.USE_SCROLL_OF_ESCAPE_PIO_IN_YOUR_INVENTORY_NTALK_TO_PIO_TO_COMPLETE_THE_QUEST, ExShowScreenMessage.TOP_CENTER, 10000); | ||||
| 			} | ||||
| 			qs.setCond(2, true); | ||||
| 			giveItems(killer, SOE_KALESIN); | ||||
| 			showOnScreenMsg(killer, NpcStringId.USE_SCROLL_OF_ESCAPE_PIO_IN_YOUR_INVENTORY_NTALK_TO_PIO_TO_COMPLETE_THE_QUEST, ExShowScreenMessage.TOP_CENTER, 10000); | ||||
| 		} | ||||
| 		return super.onKill(npc, killer, isSummon); | ||||
| 	} | ||||
|   | ||||
| @@ -169,14 +169,11 @@ public class Q11035_DeathlyMischief extends Quest | ||||
| 	public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) | ||||
| 	{ | ||||
| 		final QuestState qs = getQuestState(killer, false); | ||||
| 		if ((qs != null) && qs.isCond(1)) | ||||
| 		if ((qs != null) && qs.isCond(1) && giveItemRandomly(killer, BREATH_OF_DEATH, 1, 15, 0.5, true)) | ||||
| 		{ | ||||
| 			if (giveItemRandomly(killer, BREATH_OF_DEATH, 1, 15, 0.5, true)) | ||||
| 			{ | ||||
| 				qs.setCond(2, true); | ||||
| 				giveItems(killer, SOE_TARTI); | ||||
| 				showOnScreenMsg(killer, NpcStringId.USE_SCROLL_OF_ESCAPE_TARTI_IN_YOUR_INVENTORY_NTALK_TO_TARTI_TO_COMPLETE_THE_QUEST, ExShowScreenMessage.TOP_CENTER, 10000); | ||||
| 			} | ||||
| 			qs.setCond(2, true); | ||||
| 			giveItems(killer, SOE_TARTI); | ||||
| 			showOnScreenMsg(killer, NpcStringId.USE_SCROLL_OF_ESCAPE_TARTI_IN_YOUR_INVENTORY_NTALK_TO_TARTI_TO_COMPLETE_THE_QUEST, ExShowScreenMessage.TOP_CENTER, 10000); | ||||
| 		} | ||||
| 		return super.onKill(npc, killer, isSummon); | ||||
| 	} | ||||
|   | ||||
| @@ -159,14 +159,11 @@ public class Q11038_GrowlersTurnedViolent extends Quest | ||||
| 	public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) | ||||
| 	{ | ||||
| 		final QuestState qs = getQuestState(killer, false); | ||||
| 		if ((qs != null) && qs.isCond(1)) | ||||
| 		if ((qs != null) && qs.isCond(1) && giveItemRandomly(killer, CORRUPTED_ENERGY, 1, 15, 0.5, true)) | ||||
| 		{ | ||||
| 			if (giveItemRandomly(killer, CORRUPTED_ENERGY, 1, 15, 0.5, true)) | ||||
| 			{ | ||||
| 				qs.setCond(2, true); | ||||
| 				giveItems(killer, SOE_PIO); | ||||
| 				showOnScreenMsg(killer, NpcStringId.USE_SCROLL_OF_ESCAPE_PIO_IN_YOUR_INVENTORY_NTALK_TO_PIO_TO_COMPLETE_THE_QUEST, ExShowScreenMessage.TOP_CENTER, 10000); | ||||
| 			} | ||||
| 			qs.setCond(2, true); | ||||
| 			giveItems(killer, SOE_PIO); | ||||
| 			showOnScreenMsg(killer, NpcStringId.USE_SCROLL_OF_ESCAPE_PIO_IN_YOUR_INVENTORY_NTALK_TO_PIO_TO_COMPLETE_THE_QUEST, ExShowScreenMessage.TOP_CENTER, 10000); | ||||
| 		} | ||||
| 		return super.onKill(npc, killer, isSummon); | ||||
| 	} | ||||
|   | ||||
| @@ -158,14 +158,11 @@ public class Q11039_CommunicationBreakdown extends Quest | ||||
| 	public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) | ||||
| 	{ | ||||
| 		final QuestState qs = getQuestState(killer, false); | ||||
| 		if ((qs != null) && qs.isCond(1)) | ||||
| 		if ((qs != null) && qs.isCond(1) && giveItemRandomly(killer, EMBEDDED_SHARD, 1, 15, 0.5, true)) | ||||
| 		{ | ||||
| 			if (giveItemRandomly(killer, EMBEDDED_SHARD, 1, 15, 0.5, true)) | ||||
| 			{ | ||||
| 				qs.setCond(2, true); | ||||
| 				giveItems(killer, SOE_PIO); | ||||
| 				showOnScreenMsg(killer, NpcStringId.USE_SCROLL_OF_ESCAPE_PIO_IN_YOUR_INVENTORY_NTALK_TO_PIO_TO_COMPLETE_THE_QUEST, ExShowScreenMessage.TOP_CENTER, 10000); | ||||
| 			} | ||||
| 			qs.setCond(2, true); | ||||
| 			giveItems(killer, SOE_PIO); | ||||
| 			showOnScreenMsg(killer, NpcStringId.USE_SCROLL_OF_ESCAPE_PIO_IN_YOUR_INVENTORY_NTALK_TO_PIO_TO_COMPLETE_THE_QUEST, ExShowScreenMessage.TOP_CENTER, 10000); | ||||
| 		} | ||||
| 		return super.onKill(npc, killer, isSummon); | ||||
| 	} | ||||
|   | ||||
| @@ -162,14 +162,11 @@ public class Q11043_SomeonesTrace extends Quest | ||||
| 	public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) | ||||
| 	{ | ||||
| 		final QuestState qs = getQuestState(killer, false); | ||||
| 		if ((qs != null) && qs.isCond(1)) | ||||
| 		if ((qs != null) && qs.isCond(1) && giveItemRandomly(killer, ORC_EMPOWERING_POTION, 1, 15, 0.5, true)) | ||||
| 		{ | ||||
| 			if (giveItemRandomly(killer, ORC_EMPOWERING_POTION, 1, 15, 0.5, true)) | ||||
| 			{ | ||||
| 				qs.setCond(2, true); | ||||
| 				giveItems(killer, SOE_RECLOUS); | ||||
| 				showOnScreenMsg(killer, NpcStringId.USE_SCROLL_OF_ESCAPE_RECLOUS_IN_YOUR_INVENTORY_NTALK_TO_RECLOUS_TO_COMPLETE_THE_QUEST, ExShowScreenMessage.TOP_CENTER, 10000); | ||||
| 			} | ||||
| 			qs.setCond(2, true); | ||||
| 			giveItems(killer, SOE_RECLOUS); | ||||
| 			showOnScreenMsg(killer, NpcStringId.USE_SCROLL_OF_ESCAPE_RECLOUS_IN_YOUR_INVENTORY_NTALK_TO_RECLOUS_TO_COMPLETE_THE_QUEST, ExShowScreenMessage.TOP_CENTER, 10000); | ||||
| 		} | ||||
| 		return super.onKill(npc, killer, isSummon); | ||||
| 	} | ||||
|   | ||||
| @@ -162,14 +162,11 @@ public class Q11045_TheyMustBeUpToSomething extends Quest | ||||
| 	public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) | ||||
| 	{ | ||||
| 		final QuestState qs = getQuestState(killer, false); | ||||
| 		if ((qs != null) && qs.isCond(1)) | ||||
| 		if ((qs != null) && qs.isCond(1) && giveItemRandomly(killer, KETRA_ORDER, 1, 15, 0.5, true)) | ||||
| 		{ | ||||
| 			if (giveItemRandomly(killer, KETRA_ORDER, 1, 15, 0.5, true)) | ||||
| 			{ | ||||
| 				qs.setCond(2, true); | ||||
| 				giveItems(killer, SOE_RECLOUS); | ||||
| 				showOnScreenMsg(killer, NpcStringId.USE_SCROLL_OF_ESCAPE_RECLOUS_IN_YOUR_INVENTORY_NTALK_TO_RECLOUS_TO_COMPLETE_THE_QUEST, ExShowScreenMessage.TOP_CENTER, 10000); | ||||
| 			} | ||||
| 			qs.setCond(2, true); | ||||
| 			giveItems(killer, SOE_RECLOUS); | ||||
| 			showOnScreenMsg(killer, NpcStringId.USE_SCROLL_OF_ESCAPE_RECLOUS_IN_YOUR_INVENTORY_NTALK_TO_RECLOUS_TO_COMPLETE_THE_QUEST, ExShowScreenMessage.TOP_CENTER, 10000); | ||||
| 		} | ||||
| 		return super.onKill(npc, killer, isSummon); | ||||
| 	} | ||||
|   | ||||
| @@ -195,7 +195,7 @@ public class Q00683_AdventOfKrofinSubspecies extends Quest | ||||
| 	@Override | ||||
| 	public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) | ||||
| 	{ | ||||
| 		QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false); | ||||
| 		final QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false); | ||||
| 		if ((qs != null) && qs.isCond(KILLING_COND)) | ||||
| 		{ | ||||
| 			final PlayerInstance player = qs.getPlayer(); | ||||
|   | ||||
| @@ -192,7 +192,7 @@ public class Q00684_DisturbedFields extends Quest | ||||
| 	@Override | ||||
| 	public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) | ||||
| 	{ | ||||
| 		QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false); | ||||
| 		final QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false); | ||||
| 		if ((qs != null) && qs.isCond(KILLING_COND)) | ||||
| 		{ | ||||
| 			final PlayerInstance player = qs.getPlayer(); | ||||
|   | ||||
| @@ -168,7 +168,7 @@ public class Q10517_FafurionsMinions extends Quest | ||||
| 	@Override | ||||
| 	public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) | ||||
| 	{ | ||||
| 		QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false); | ||||
| 		final QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false); | ||||
| 		if ((qs != null) && qs.isCond(KILLING_COND)) | ||||
| 		{ | ||||
| 			final PlayerInstance player = qs.getPlayer(); | ||||
|   | ||||
| @@ -204,7 +204,7 @@ public class Q10518_SucceedingThePriestess extends Quest | ||||
| 	@Override | ||||
| 	public String onKill(Npc npc, PlayerInstance killer, boolean isSummon) | ||||
| 	{ | ||||
| 		QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false); | ||||
| 		final QuestState qs = PARTY_QUEST ? getRandomPartyMemberState(killer, -1, 3, npc) : getQuestState(killer, false); | ||||
| 		if (qs != null) | ||||
| 		{ | ||||
| 			if (qs.isCond(KILLING_COND_1) && CommonUtil.contains(MONSTERS_1, npc.getId())) | ||||
|   | ||||
| @@ -276,28 +276,25 @@ public abstract class AirShipController extends AbstractNpcAI | ||||
| 	@Override | ||||
| 	public String onEnterZone(Creature creature, ZoneType zone) | ||||
| 	{ | ||||
| 		if (creature instanceof ControllableAirShipInstance) | ||||
| 		if ((creature instanceof ControllableAirShipInstance) && (_dockedShip == null)) | ||||
| 		{ | ||||
| 			if (_dockedShip == null) | ||||
| 			_dockedShip = (ControllableAirShipInstance) creature; | ||||
| 			_dockedShip.setInDock(_dockZone); | ||||
| 			_dockedShip.setOustLoc(_oustLoc); | ||||
| 			 | ||||
| 			// Ship is not empty - display movie to passengers and dock | ||||
| 			if (!_dockedShip.isEmpty()) | ||||
| 			{ | ||||
| 				_dockedShip = (ControllableAirShipInstance) creature; | ||||
| 				_dockedShip.setInDock(_dockZone); | ||||
| 				_dockedShip.setOustLoc(_oustLoc); | ||||
| 				if (_movie != null) | ||||
| 				{ | ||||
| 					playMovie(_dockedShip.getPassengers(), _movie); | ||||
| 				} | ||||
| 				 | ||||
| 				// Ship is not empty - display movie to passengers and dock | ||||
| 				if (!_dockedShip.isEmpty()) | ||||
| 				{ | ||||
| 					if (_movie != null) | ||||
| 					{ | ||||
| 						playMovie(_dockedShip.getPassengers(), _movie); | ||||
| 					} | ||||
| 					 | ||||
| 					ThreadPool.schedule(_decayTask, 1000); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					_departSchedule = ThreadPool.schedule(_departTask, DEPART_INTERVAL); | ||||
| 				} | ||||
| 				ThreadPool.schedule(_decayTask, 1000); | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				_departSchedule = ThreadPool.schedule(_departTask, DEPART_INTERVAL); | ||||
| 			} | ||||
| 		} | ||||
| 		return null; | ||||
| @@ -306,20 +303,17 @@ public abstract class AirShipController extends AbstractNpcAI | ||||
| 	@Override | ||||
| 	public String onExitZone(Creature creature, ZoneType zone) | ||||
| 	{ | ||||
| 		if (creature instanceof ControllableAirShipInstance) | ||||
| 		if ((creature instanceof ControllableAirShipInstance) && creature.equals(_dockedShip)) | ||||
| 		{ | ||||
| 			if (creature.equals(_dockedShip)) | ||||
| 			if (_departSchedule != null) | ||||
| 			{ | ||||
| 				if (_departSchedule != null) | ||||
| 				{ | ||||
| 					_departSchedule.cancel(false); | ||||
| 					_departSchedule = null; | ||||
| 				} | ||||
| 				 | ||||
| 				_dockedShip.setInDock(0); | ||||
| 				_dockedShip = null; | ||||
| 				_isBusy = false; | ||||
| 				_departSchedule.cancel(false); | ||||
| 				_departSchedule = null; | ||||
| 			} | ||||
| 			 | ||||
| 			_dockedShip.setInDock(0); | ||||
| 			_dockedShip = null; | ||||
| 			_isBusy = false; | ||||
| 		} | ||||
| 		return null; | ||||
| 	} | ||||
| @@ -358,14 +352,11 @@ public abstract class AirShipController extends AbstractNpcAI | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		if (_arrivalPath == null) | ||||
| 		else if (!ZoneManager.getInstance().getZoneById(_dockZone, ScriptZone.class).isInsideZone(_shipSpawnX, _shipSpawnY, _shipSpawnZ)) | ||||
| 		{ | ||||
| 			if (!ZoneManager.getInstance().getZoneById(_dockZone, ScriptZone.class).isInsideZone(_shipSpawnX, _shipSpawnY, _shipSpawnZ)) | ||||
| 			{ | ||||
| 				LOGGER.warning(getName() + ": Arrival path is null and spawn point not in zone " + _dockZone + ", controller disabled"); | ||||
| 				_isBusy = true; | ||||
| 				return; | ||||
| 			} | ||||
| 			LOGGER.warning(getName() + ": Arrival path is null and spawn point not in zone " + _dockZone + ", controller disabled"); | ||||
| 			_isBusy = true; | ||||
| 			return; | ||||
| 		} | ||||
| 		 | ||||
| 		if (_departPath != null) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 MobiusDevelopment
					MobiusDevelopment