L2JMobius

High Five Improvements in FourSepulcherManager

kinghanker · 3 · 2446

Offline kinghanker

  • Knight
  • ***
    • Posts: 64
Recently there were some fixes in FourSepulcherManager and I got stuck on this part of the code with a strange obsession. After reviewing the code a few times I'm trying to improve it in several aspects and I'm bringing some changes that can be very useful. Some snippets of the code I've already finished and I don't intend to go back for more changes, so as I finish I'll update this topic and when I finish everything I put the entire file for downloads.
I hope my changes serve as improvements for everyone  ;D

Code: [Select]
-protected byte minuteSelect(byte value)
-{
- byte min = value;
- if ((min % 5) != 0) // if doesn't divides on 5 fully
- {
- // mad table for selecting proper minutes...
- // may be there is a better way to do this
- switch (min)
- {
- case 6:
- case 7:
- {
- min = 5;
- break;
- }
- case 8:
- case 9:
- case 11:
- case 12:
- {
- min = 10;
- break;
- }
- case 13:
- case 14:
- case 16:
- case 17:
- {
- min = 15;
- break;
- }
- case 18:
- case 19:
- case 21:
- case 22:
- {
- min = 20;
- break;
- }
- case 23:
- case 24:
- case 26:
- case 27:
- {
- min = 25;
- break;
- }
- case 28:
- case 29:
- case 31:
- case 32:
- {
- min = 30;
- break;
- }
- case 33:
- case 34:
- case 36:
- case 37:
- {
- min = 35;
- break;
- }
- case 38:
- case 39:
- case 41:
- case 42:
- {
- min = 40;
- break;
- }
- case 43:
- case 44:
- case 46:
- case 47:
- {
- min = 45;
- break;
- }
- case 48:
- case 49:
- case 51:
- case 52:
- {
- min = 50;
- break;
- }
- case 53:
- case 54:
- case 56:
- case 57:
- {
- min = 55;
- break;
- }
- }
- }
- return min;
-}
+protected int minuteSelect(byte min)
+{
+ final byte round = (byte)5;
+ final byte remainder = (byte)(min % round);
+ final byte cut = (byte)Math.round(round / 2);
+
+ return (remainder < cut ? (min - remainder) / round : (min + (round - remainder)) / round) * round;
+}
---------------------------------------------------------------
-final byte min = minuteSelect(value);
+final int min = minuteSelect(value);


Offline kinghanker

  • Knight
  • ***
    • Posts: 64
Code: [Select]
public void clean()
  {
- for (int i = 31921; i < 31925; i++)
+ for (Entry<Integer, int[]> hallSpawn : _startHallSpawns.entrySet())
  {
- final int[] loc = _startHallSpawns.get(i);
+ final int[] loc = hallSpawn.getValue();
  GrandBossManager.getInstance().getZone(loc[0], loc[1], loc[2]).oustAllPlayers();
  }
-
+
  deleteAllMobs();
-
  closeAllDoors();
-
- _hallInUse.clear();
- _hallInUse.put(31921, false);
- _hallInUse.put(31922, false);
- _hallInUse.put(31923, false);
- _hallInUse.put(31924, false);
-
+
+ for (Entry<Integer, int[]> hallSpawn : _startHallSpawns.entrySet())
+ {
+ _hallInUse.put(hallSpawn.getKey(), false);
+ }
+
  for (int npcId : _archonSpawned.keySet())
  {