2
0

TownManager.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. /*
  2. * This program is free software: you can redistribute it and/or modify it under
  3. * the terms of the GNU General Public License as published by the Free Software
  4. * Foundation, either version 3 of the License, or (at your option) any later
  5. * version.
  6. *
  7. * This program is distributed in the hope that it will be useful, but WITHOUT
  8. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  9. * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
  10. * details.
  11. *
  12. * You should have received a copy of the GNU General Public License along with
  13. * this program. If not, see <http://www.gnu.org/licenses/>.
  14. */
  15. package com.l2jserver.gameserver.instancemanager;
  16. import com.l2jserver.gameserver.datatables.MapRegionTable;
  17. import com.l2jserver.gameserver.model.L2Object;
  18. import com.l2jserver.gameserver.model.entity.Castle;
  19. import com.l2jserver.gameserver.model.zone.L2ZoneType;
  20. import com.l2jserver.gameserver.model.zone.type.L2TownZone;
  21. public class TownManager
  22. {
  23. //private static final Logger _log = Logger.getLogger(TownManager.class.getName());
  24. // =========================================================
  25. // Property - Public
  26. public final static L2TownZone getClosestTown(L2Object activeObject)
  27. {
  28. switch (MapRegionTable.getInstance().getMapRegion(activeObject.getPosition().getX(), activeObject.getPosition().getY()))
  29. {
  30. case 0:
  31. return getTown(2); // TI
  32. case 1:
  33. return getTown(3); // Elven
  34. case 2:
  35. return getTown(1); // DE
  36. case 3:
  37. return getTown(4); // Orc
  38. case 4:
  39. return getTown(6); // Dwarven
  40. case 5:
  41. return getTown(7); // Gludio
  42. case 6:
  43. return getTown(5); // Gludin
  44. case 7:
  45. return getTown(8); // Dion
  46. case 8:
  47. return getTown(9); // Giran
  48. case 9:
  49. return getTown(10); // Oren
  50. case 10:
  51. return getTown(12); // Aden
  52. case 11:
  53. return getTown(11); // HV
  54. case 12:
  55. return getTown(9); // Giran Harbour
  56. case 13:
  57. return getTown(15); // Heine
  58. case 14:
  59. return getTown(14); // Rune
  60. case 15:
  61. return getTown(13); // Goddard
  62. case 16:
  63. return getTown(17); // Schuttgart
  64. case 17:
  65. return getTown(16); // Floran
  66. case 18:
  67. return getTown(19); //Primeval Isle
  68. case 19:
  69. return getTown(20); //Kamael Village
  70. case 20:
  71. return getTown(21); //South of Wastelands Camp
  72. case 21:
  73. return getTown(22); //Fantasy Island
  74. case 22:
  75. return getTown(23); //Neutral Zone
  76. case 23:
  77. return getTown(24);//Coliseum
  78. case 24:
  79. return getTown(25);//GM Consultation service
  80. case 25:
  81. return getTown(26);//Dimensional Gap
  82. case 26:
  83. return getTown(27);//Cemetery of the Empire
  84. case 27:
  85. return getTown(28);//inside the Steel Citadel
  86. case 28:
  87. return getTown(29);//Steel Citadel Resistance
  88. case 29:
  89. return getTown(30);//Inside Kamaloka
  90. case 30:
  91. return getTown(31);//Inside Nia Kamaloka
  92. case 31:
  93. return getTown(32);//Inside Rim Kamaloka
  94. case 32:
  95. return getTown(33);//near the Keucereus clan association location
  96. case 33:
  97. return getTown(34);//inside the Seed of Infinity
  98. case 34:
  99. return getTown(35);//outside the Seed of Infinity
  100. case 35:
  101. return getTown(36);//inside Aerial Cleft
  102. }
  103. return getTown(16); // Default to floran
  104. }
  105. public final static L2TownZone getSecondClosestTown(L2Object activeObject)
  106. {
  107. switch (MapRegionTable.getInstance().getMapRegion(activeObject.getPosition().getX(), activeObject.getPosition().getY()))
  108. {
  109. case 0:
  110. return getTown(5); // TI
  111. case 1:
  112. return getTown(5); // Elven
  113. case 2:
  114. return getTown(5); // DE
  115. case 3:
  116. return getTown(4); // Orc
  117. case 4:
  118. return getTown(6); // Dwarven
  119. case 5:
  120. return getTown(5); // Gludio
  121. case 6:
  122. return getTown(5); // Gludin
  123. case 7:
  124. return getTown(7); // Dion
  125. case 8:
  126. return getTown(11); // Giran
  127. case 9:
  128. return getTown(11); // Oren
  129. case 10:
  130. return getTown(11); // Aden
  131. case 11:
  132. return getTown(11); // HV
  133. case 12:
  134. return getTown(16); // Giran Harbour
  135. case 13:
  136. return getTown(16); // Heine
  137. case 14:
  138. return getTown(13); // Rune
  139. case 15:
  140. return getTown(12); // Goddard
  141. case 16:
  142. return getTown(6); // Schuttgart
  143. case 17:
  144. return getTown(16); // Floran
  145. case 18:
  146. return getTown(19); //Primeval Isle
  147. case 19:
  148. return getTown(20); //Kamael Village
  149. case 20:
  150. return getTown(21); //South of Wastelands Camp
  151. case 21:
  152. return getTown(22); //Fantasy Island
  153. case 22:
  154. return getTown(23); //Neutral Zone
  155. case 23:
  156. return getTown(24);//Coliseum
  157. case 24:
  158. return getTown(25);//GM Consultation service
  159. case 25:
  160. return getTown(26);//Dimensional Gap
  161. case 26:
  162. return getTown(27);//Cemetery of the Empire
  163. case 27:
  164. return getTown(28);//inside the Steel Citadel
  165. case 28:
  166. return getTown(29);//Steel Citadel Resistance
  167. case 29:
  168. return getTown(30);//Inside Kamaloka
  169. case 30:
  170. return getTown(31);//Inside Nia Kamaloka
  171. case 31:
  172. return getTown(32);//Inside Rim Kamaloka
  173. case 32:
  174. return getTown(33);//near the Keucereus clan association location
  175. case 33:
  176. return getTown(34);//inside the Seed of Infinity
  177. case 34:
  178. return getTown(35);//outside the Seed of Infinity
  179. case 35:
  180. return getTown(36);//inside Aerial Cleft
  181. }
  182. return getTown(16); // Default to floran
  183. }
  184. public final static int getClosestLocation(L2Object activeObject)
  185. {
  186. switch (MapRegionTable.getInstance().getMapRegion(activeObject.getPosition().getX(), activeObject.getPosition().getY()))
  187. {
  188. case 0:
  189. return 1; // TI
  190. case 1:
  191. return 4; // Elven
  192. case 2:
  193. return 3; // DE
  194. case 3:
  195. return 9; // Orc
  196. case 4:
  197. return 9; // Dwarven
  198. case 5:
  199. return 2; // Gludio
  200. case 6:
  201. return 2; // Gludin
  202. case 7:
  203. return 5; // Dion
  204. case 8:
  205. return 6; // Giran
  206. case 9:
  207. return 10; // Oren
  208. case 10:
  209. return 13; // Aden
  210. case 11:
  211. return 11; // HV
  212. case 12:
  213. return 6; // Giran Harbour
  214. case 13:
  215. return 12; // Heine
  216. case 14:
  217. return 14; // Rune
  218. case 15:
  219. return 15; // Goddard
  220. case 16:
  221. return 9; // Schuttgart
  222. /*
  223. case 17:
  224. return getTown(16); // Floran
  225. case 18:
  226. return getTown(19); //Primeval Isle
  227. case 19:
  228. return getTown(20); //Kamael Village
  229. case 20:
  230. return getTown(21); //South of Wastelands Camp
  231. case 21:
  232. return getTown(22); //Fantasy Island
  233. case 22:
  234. return 7; //Neutral Zone
  235. case 23:
  236. return getTown(24);//Coliseum
  237. case 24:
  238. return getTown(25);//GM Consultation service
  239. case 25:
  240. return getTown(26);//Dimensional Gap
  241. case 26:
  242. return getTown(27);//Cemetery of the Empire
  243. case 27:
  244. return getTown(28);//inside the Steel Citadel
  245. case 28:
  246. return getTown(29);//Steel Citadel Resistance
  247. case 29:
  248. return getTown(30);//Inside Kamaloka
  249. case 30:
  250. return getTown(31);//Inside Nia Kamaloka
  251. case 31:
  252. return getTown(32);//Inside Rim Kamaloka
  253. case 32:
  254. return getTown(33);//near the Keucereus clan association location
  255. case 33:
  256. return getTown(34);//inside the Seed of Infinity
  257. case 34:
  258. return getTown(35);//outside the Seed of Infinity
  259. case 35:
  260. return getTown(36);//inside Aerial Cleft
  261. */
  262. }
  263. return 0;
  264. }
  265. public final static boolean townHasCastleInSiege(int townId)
  266. {
  267. //int[] castleidarray = {0,0,0,0,0,0,0,1,2,3,4,0,5,0,0,6,0};
  268. int[] castleidarray = {0,0,0,0,0,0,0,1,2,3,4,0,5,7,8,6,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  269. int castleIndex= castleidarray[townId] ;
  270. if ( castleIndex > 0 )
  271. {
  272. Castle castle = CastleManager.getInstance().getCastles().get(CastleManager.getInstance().getCastleIndex(castleIndex));
  273. if (castle != null)
  274. return castle.getSiege().getIsInProgress();
  275. }
  276. return false;
  277. }
  278. public final static boolean townHasCastleInSiege(int x, int y)
  279. {
  280. int curtown= (MapRegionTable.getInstance().getMapRegion(x, y));
  281. //int[] castleidarray = {0,0,0,0,0,1,0,2,3,4,5,0,0,6,0,0,0,0};
  282. int[] castleidarray = {0,0,0,0,0,1,0,2,3,4,5,0,0,6,8,7,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  283. //find an instance of the castle for this town.
  284. int castleIndex = castleidarray[curtown];
  285. if ( castleIndex > 0 )
  286. {
  287. Castle castle = CastleManager.getInstance().getCastles().get(CastleManager.getInstance().getCastleIndex(castleIndex));
  288. if (castle != null)
  289. return castle.getSiege().getIsInProgress();
  290. }
  291. return false;
  292. }
  293. public final static L2TownZone getTown(int townId)
  294. {
  295. for (L2ZoneType temp : ZoneManager.getInstance().getAllZones())
  296. {
  297. if (temp instanceof L2TownZone && ((L2TownZone) temp).getTownId() == townId)
  298. return (L2TownZone) temp;
  299. }
  300. return null;
  301. }
  302. /**
  303. * Returns the town at that position (if any)
  304. * @param x
  305. * @param y
  306. * @param z
  307. * @return
  308. */
  309. public final static L2TownZone getTown(int x, int y, int z)
  310. {
  311. for (L2ZoneType temp : ZoneManager.getInstance().getZones(x, y, z))
  312. {
  313. if (temp instanceof L2TownZone)
  314. return (L2TownZone) temp;
  315. }
  316. return null;
  317. }
  318. }