MinionSpawnManager.java 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456
  1. /*
  2. * Copyright (C) 2004-2015 L2J DataPack
  3. *
  4. * This file is part of L2J DataPack.
  5. *
  6. * L2J DataPack is free software: you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation, either version 3 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * L2J DataPack is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License
  17. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  18. */
  19. package ai.group_template;
  20. import java.util.HashSet;
  21. import java.util.Set;
  22. import ai.npc.AbstractNpcAI;
  23. import com.l2jserver.gameserver.model.actor.L2Npc;
  24. import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance;
  25. import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
  26. import com.l2jserver.gameserver.model.holders.MinionHolder;
  27. import com.l2jserver.gameserver.network.NpcStringId;
  28. import com.l2jserver.gameserver.network.clientpackets.Say2;
  29. /**
  30. * Minion Spawn Manager.
  31. * @author Zealar
  32. */
  33. public final class MinionSpawnManager extends AbstractNpcAI
  34. {
  35. private static final Set<Integer> NPC = new HashSet<>(354);
  36. static
  37. {
  38. NPC.add(18344); // Ancient Egg
  39. NPC.add(18352); // Kamael Guard
  40. NPC.add(18353); // Guardian of Records
  41. NPC.add(18354); // Guardian of Observation
  42. NPC.add(18355); // Spicula's Guard
  43. NPC.add(18356); // Harkilgamed's Gatekeeper
  44. NPC.add(18357); // Rodenpicula's Gatekeeper
  45. NPC.add(18359); // Arviterre's Guardian
  46. NPC.add(18360); // Katenar's Gatekeeper
  47. NPC.add(18361); // Guardian of Prediction
  48. NPC.add(18484); // Naia Failan
  49. NPC.add(18491); // Lock
  50. NPC.add(18547); // Ancient Experiment
  51. NPC.add(18551); // Cruma Phantom
  52. NPC.add(35375); // Bloody Lord Nurka
  53. NPC.add(20376); // Varikan Brigand Leader
  54. NPC.add(20398); // Vrykolakas
  55. NPC.add(20520); // Pirate Captain Uthanka
  56. NPC.add(20522); // White Fang
  57. NPC.add(20738); // Kobold Looter Bepook
  58. NPC.add(20745); // Gigantiops
  59. NPC.add(20747); // Roxide
  60. NPC.add(20749); // Death Fire
  61. NPC.add(20751); // Snipe
  62. NPC.add(20753); // Dark Lord
  63. NPC.add(20755); // Talakin
  64. NPC.add(20758); // Dragon Bearer Chief
  65. NPC.add(20761); // Pytan
  66. NPC.add(20767); // Timak Orc Troop Leader
  67. NPC.add(20773); // Conjurer Bat Lord
  68. NPC.add(20939); // Tanor Silenos Warrior
  69. NPC.add(20941); // Tanor Silenos Chieftain
  70. NPC.add(20944); // Nightmare Lord
  71. NPC.add(20956); // Past Knight
  72. NPC.add(20959); // Dark Guard
  73. NPC.add(20963); // Bloody Lord
  74. NPC.add(20974); // Spiteful Soul Leader
  75. NPC.add(20977); // Elmoradan's Lady
  76. NPC.add(20980); // Hallate's Follower Mul
  77. NPC.add(20983); // Binder
  78. NPC.add(20986); // Sairon
  79. NPC.add(20991); // Swamp Tribe
  80. NPC.add(20994); // Garden Guard Leader
  81. NPC.add(21075); // Slaughter Bathin
  82. NPC.add(21078); // Magus Valac
  83. NPC.add(21081); // Power Angel Amon
  84. NPC.add(21090); // Bloody Guardian
  85. NPC.add(21312); // Eye of Ruler
  86. NPC.add(21343); // Ketra Commander
  87. NPC.add(21345); // Ketra's Head Shaman
  88. NPC.add(21347); // Ketra Prophet
  89. NPC.add(21369); // Varka's Commander
  90. NPC.add(21371); // Varka's Head Magus
  91. NPC.add(21373); // Varka's Prophet
  92. NPC.add(21432); // Chakram Beetle
  93. NPC.add(21434); // Seer of Blood
  94. NPC.add(21512); // Splinter Stakato Drone
  95. NPC.add(21517); // Needle Stakato Drone
  96. NPC.add(21541); // Pilgrim of Splendor
  97. NPC.add(21544); // Judge of Splendor
  98. NPC.add(21596); // Requiem Lord
  99. NPC.add(21599); // Requiem Priest
  100. NPC.add(21652); // Scarlet Stakato Noble
  101. NPC.add(21653); // Assassin Beetle
  102. NPC.add(21654); // Necromancer of Destruction
  103. NPC.add(21655); // Arimanes of Destruction
  104. NPC.add(21656); // Ashuras of Destruction
  105. NPC.add(21657); // Magma Drake
  106. NPC.add(22028); // Vagabond of the Ruins
  107. NPC.add(22080); // Massive Lost Bandersnatch
  108. NPC.add(22084); // Panthera
  109. NPC.add(22092); // Frost Iron Golem
  110. NPC.add(22096); // Ursus
  111. NPC.add(22100); // Freya's Gardener
  112. NPC.add(22102); // Freya's Servant
  113. NPC.add(22104); // Freya's Dog
  114. NPC.add(22155); // Triol's High Priest
  115. NPC.add(22159); // Triol's High Priest
  116. NPC.add(22163); // Triol's High Priest
  117. NPC.add(22167); // Triol's High Priest
  118. NPC.add(22171); // Triol's High Priest
  119. NPC.add(22188); // Andreas' Captain of the Royal Guard
  120. NPC.add(22196); // Velociraptor
  121. NPC.add(22198); // Velociraptor
  122. NPC.add(22202); // Ornithomimus
  123. NPC.add(22205); // Deinonychus
  124. NPC.add(22210); // Pachycephalosaurus
  125. NPC.add(22213); // Wild Strider
  126. NPC.add(22223); // Velociraptor
  127. NPC.add(22224); // Ornithomimus
  128. NPC.add(22225); // Deinonychus
  129. NPC.add(22275); // Gatekeeper Lohan
  130. NPC.add(22277); // Gatekeeper Provo
  131. NPC.add(22305); // Kechi's Captain
  132. NPC.add(22306); // Kechi's Captain
  133. NPC.add(22307); // Kechi's Captain
  134. NPC.add(22320); // Junior Watchman
  135. NPC.add(22321); // Junior Summoner
  136. NPC.add(22346); // Quarry Foreman
  137. NPC.add(22363); // Body Destroyer
  138. NPC.add(22370); // Passageway Captain
  139. NPC.add(22377); // Master Zelos
  140. NPC.add(22390); // Foundry Foreman
  141. NPC.add(22416); // Kechi's Captain
  142. NPC.add(22423); // Original Sin Warden
  143. NPC.add(22431); // Original Sin Warden
  144. NPC.add(22448); // Leodas
  145. NPC.add(22449); // Amaskari
  146. NPC.add(22621); // Male Spiked Stakato
  147. NPC.add(22625); // Cannibalistic Stakato Leader
  148. NPC.add(22630); // Spiked Stakato Nurse
  149. NPC.add(22666); // Barif
  150. NPC.add(22670); // Cursed Lord
  151. NPC.add(22742); // Ornithomimus
  152. NPC.add(22743); // Deinonychus
  153. NPC.add(25001); // Greyclaw Kutus
  154. NPC.add(25004); // Turek Mercenary Captain
  155. NPC.add(25007); // Retreat Spider Cletu
  156. NPC.add(25010); // Furious Thieles
  157. NPC.add(25013); // Ghost of Peasant Leader
  158. NPC.add(25016); // The 3rd Underwater Guardian
  159. NPC.add(25020); // Breka Warlock Pastu
  160. NPC.add(25023); // Stakato Queen Zyrnna
  161. NPC.add(25026); // Ketra Commander Atis
  162. NPC.add(25029); // Atraiban
  163. NPC.add(25032); // Eva's Guardian Millenu
  164. NPC.add(25035); // Shilen's Messenger Cabrio
  165. NPC.add(25038); // Tirak
  166. NPC.add(25041); // Remmel
  167. NPC.add(25044); // Barion
  168. NPC.add(25047); // Karte
  169. NPC.add(25051); // Rahha
  170. NPC.add(25054); // Kernon
  171. NPC.add(25057); // Beacon of Blue Sky
  172. NPC.add(25060); // Unrequited Kael
  173. NPC.add(25064); // Wizard of Storm Teruk
  174. NPC.add(25067); // Captain of Red Flag Shaka
  175. NPC.add(25070); // Enchanted Forest Watcher Ruell
  176. NPC.add(25073); // Bloody Priest Rudelto
  177. NPC.add(25076); // Princess Molrang
  178. NPC.add(25079); // Cat's Eye Bandit
  179. NPC.add(25082); // Leader of Cat Gang
  180. NPC.add(25085); // Timak Orc Chief Ranger
  181. NPC.add(25089); // Soulless Wild Boar
  182. NPC.add(25092); // Korim
  183. NPC.add(25095); // Elf Renoa
  184. NPC.add(25099); // Rotting Tree Repiro
  185. NPC.add(25103); // Sorcerer Isirr
  186. NPC.add(25106); // Ghost of the Well Lidia
  187. NPC.add(25109); // Antharas Priest Cloe
  188. NPC.add(25112); // Beleth's Agent, Meana
  189. NPC.add(25115); // Icarus Sample 1
  190. NPC.add(25119); // Messenger of Fairy Queen Berun
  191. NPC.add(25122); // Refugee Applicant Leo
  192. NPC.add(25128); // Vuku Grand Seer Gharmash
  193. NPC.add(25131); // Carnage Lord Gato
  194. NPC.add(25134); // Leto Chief Talkin
  195. NPC.add(25137); // Beleth's Seer, Sephia
  196. NPC.add(25140); // Hekaton Prime
  197. NPC.add(25143); // Fire of Wrath Shuriel
  198. NPC.add(25146); // Serpent Demon Bifrons
  199. NPC.add(25149); // Zombie Lord Crowl
  200. NPC.add(25152); // Flame Lord Shadar
  201. NPC.add(25155); // Shaman King Selu
  202. NPC.add(25159); // Paniel the Unicorn
  203. NPC.add(25166); // Ikuntai
  204. NPC.add(25170); // Lizardmen Leader Hellion
  205. NPC.add(25173); // Tiger King Karuta
  206. NPC.add(25176); // Black Lily
  207. NPC.add(25179); // Guardian of the Statue of Giant Karum
  208. NPC.add(25182); // Demon Kuri
  209. NPC.add(25185); // Tasaba Patriarch Hellena
  210. NPC.add(25189); // Cronos's Servitor Mumu
  211. NPC.add(25192); // Earth Protector Panathen
  212. NPC.add(25199); // Water Dragon Seer Sheshark
  213. NPC.add(25202); // Krokian Padisha Sobekk
  214. NPC.add(25205); // Ocean Flame Ashakiel
  215. NPC.add(25208); // Water Couatle Ateka
  216. NPC.add(25211); // Sebek
  217. NPC.add(25214); // Fafurion's Page Sika
  218. NPC.add(25217); // Cursed Clara
  219. NPC.add(25220); // Death Lord Hallate
  220. NPC.add(25223); // Soul Collector Acheron
  221. NPC.add(25226); // Roaring Lord Kastor
  222. NPC.add(25230); // Timak Seer Ragoth
  223. NPC.add(25235); // Vanor Chief Kandra
  224. NPC.add(25238); // Abyss Brukunt
  225. NPC.add(25241); // Harit Hero Tamash
  226. NPC.add(25245); // Last Lesser Giant Glaki
  227. NPC.add(25249); // Menacing Palatanos
  228. NPC.add(25252); // Palibati Queen Themis
  229. NPC.add(25256); // Taik High Prefect Arak
  230. NPC.add(25260); // Iron Giant Totem
  231. NPC.add(25263); // Kernon's Faithful Servant Kelone
  232. NPC.add(25266); // Bloody Empress Decarbia
  233. NPC.add(25269); // Beast Lord Behemoth
  234. NPC.add(25273); // Carnamakos
  235. NPC.add(25277); // Lilith's Witch Marilion
  236. NPC.add(25283); // Lilith
  237. NPC.add(25286); // Anakim
  238. NPC.add(25290); // Daimon the White-Eyed
  239. NPC.add(25293); // Hesti Guardian Deity of the Hot Springs
  240. NPC.add(25296); // Icicle Emperor Bumbalump
  241. NPC.add(25299); // Ketra's Hero Hekaton
  242. NPC.add(25302); // Ketra's Commander Tayr
  243. NPC.add(25306); // Soul of Fire Nastron
  244. NPC.add(25309); // Varka's Hero Shadith
  245. NPC.add(25312); // Varka's Commander Mos
  246. NPC.add(25316); // Soul of Water Ashutar
  247. NPC.add(25319); // Ember
  248. NPC.add(25322); // Demon's Agent Falston
  249. NPC.add(25325); // Flame of Splendor Barakiel
  250. NPC.add(25328); // Eilhalder von Hellmann
  251. NPC.add(25352); // Giant Wasteland Basilisk
  252. NPC.add(25354); // Gargoyle Lord Sirocco
  253. NPC.add(25357); // Sukar Wererat Chief
  254. NPC.add(25360); // Tiger Hornet
  255. NPC.add(25362); // Tracker Leader Sharuk
  256. NPC.add(25366); // Kuroboros' Priest
  257. NPC.add(25369); // Soul Scavenger
  258. NPC.add(25373); // Malex Herald of Dagoniel
  259. NPC.add(25375); // Zombie Lord Ferkel
  260. NPC.add(25378); // Madness Beast
  261. NPC.add(25380); // Kaysha Herald of Icarus
  262. NPC.add(25383); // Revenant of Sir Calibus
  263. NPC.add(25385); // Evil Spirit Tempest
  264. NPC.add(25388); // Red Eye Captain Trakia
  265. NPC.add(25392); // Captain of Queen's Royal Guards
  266. NPC.add(25395); // Archon Suscepter
  267. NPC.add(25398); // Beleth's Eye
  268. NPC.add(25401); // Skyla
  269. NPC.add(25404); // Corsair Captain Kylon
  270. NPC.add(25407); // Lord Ishka
  271. NPC.add(25410); // Road Scavenger Leader
  272. NPC.add(25412); // Necrosentinel Royal Guard
  273. NPC.add(25415); // Nakondas
  274. NPC.add(25418); // Dread Avenger Kraven
  275. NPC.add(25420); // Orfen's Handmaiden
  276. NPC.add(25423); // Fairy Queen Timiniel
  277. NPC.add(25426); // Betrayer of Urutu Freki
  278. NPC.add(25429); // Mammon Collector Talos
  279. NPC.add(25431); // Flamestone Golem
  280. NPC.add(25434); // Bandit Leader Barda
  281. NPC.add(25438); // Thief Kelbar
  282. NPC.add(25441); // Evil Spirit Cyrion
  283. NPC.add(25444); // Enmity Ghost Ramdal
  284. NPC.add(25447); // Immortal Savior Mardil
  285. NPC.add(25450); // Cherub Galaxia
  286. NPC.add(25453); // Meanas Anor
  287. NPC.add(25456); // Mirror of Oblivion
  288. NPC.add(25460); // Deadman Ereve
  289. NPC.add(25463); // Harit Guardian Garangky
  290. NPC.add(25467); // Gorgolos
  291. NPC.add(25470); // Last Titan Utenus
  292. NPC.add(25473); // Grave Robber Kim
  293. NPC.add(25475); // Ghost Knight Kabed
  294. NPC.add(25478); // Shilen's Priest Hisilrome
  295. NPC.add(25481); // Magus Kenishee
  296. NPC.add(25484); // Zaken's Chief Mate Tillion
  297. NPC.add(25487); // Water Spirit Lian
  298. NPC.add(25490); // Gwindorr
  299. NPC.add(25493); // Eva's Spirit Niniel
  300. NPC.add(25496); // Fafurion's Envoy Pingolpin
  301. NPC.add(25498); // Fafurion's Henchman Istary
  302. NPC.add(25501); // Boss Akata
  303. NPC.add(25504); // Nellis' Vengeful Spirit
  304. NPC.add(25506); // Rayito the Looter
  305. NPC.add(25509); // Dark Shaman Varangka
  306. NPC.add(25514); // Queen Shyeed
  307. NPC.add(25524); // Flamestone Giant
  308. NPC.add(25528); // Tiberias
  309. NPC.add(25536); // Hannibal
  310. NPC.add(25546); // Rhianna the Traitor
  311. NPC.add(25549); // Tesla the Deceiver
  312. NPC.add(25554); // Brutus the Obstinate
  313. NPC.add(25557); // Ranger Karankawa
  314. NPC.add(25560); // Sargon the Mad
  315. NPC.add(25563); // Beautiful Atrielle
  316. NPC.add(25566); // Nagen the Tomboy
  317. NPC.add(25569); // Jax the Destroyer
  318. NPC.add(25572); // Hager the Outlaw
  319. NPC.add(25575); // All-Seeing Rango
  320. NPC.add(25579); // Helsing
  321. NPC.add(25582); // Gillien
  322. NPC.add(25585); // Medici
  323. NPC.add(25589); // Brand the Exile
  324. NPC.add(25593); // Gerg the Hunter
  325. NPC.add(25600); // Temenir
  326. NPC.add(25601); // Draksius
  327. NPC.add(25602); // Kiretcenah
  328. NPC.add(25671); // Queen Shyeed
  329. NPC.add(25674); // Gwindorr
  330. NPC.add(25677); // Water Spirit Lian
  331. NPC.add(25681); // Gorgolos
  332. NPC.add(25684); // Last Titan Utenus
  333. NPC.add(25687); // Hekaton Prime
  334. NPC.add(25703); // Gigantic Golem
  335. NPC.add(25710); // Lost Captain
  336. NPC.add(25735); // Greyclaw Kutus
  337. NPC.add(25738); // Lead Tracker Sharuk
  338. NPC.add(25741); // Sukar Wererat Chief
  339. NPC.add(25744); // Ikuntai
  340. NPC.add(25747); // Zombie Lord Crowl
  341. NPC.add(25750); // Zombie Lord Ferkel
  342. NPC.add(25754); // Fire Lord Shadar
  343. NPC.add(25757); // Soul Collector Acheron
  344. NPC.add(25760); // Lord Ishka
  345. NPC.add(25763); // Demon Kuri
  346. NPC.add(25767); // Carnage Lord Gato
  347. NPC.add(25770); // Ketra Commander Atis
  348. NPC.add(25773); // Beacon of Blue Sky
  349. NPC.add(25776); // Earth Protector Panathen
  350. NPC.add(25779); // Betrayer of Urutu Freki
  351. NPC.add(25782); // Nellis' Vengeful Spirit
  352. NPC.add(25784); // Rayito the Looter
  353. NPC.add(25787); // Ketra's Hero Hekaton
  354. NPC.add(25790); // Varka's Hero Shadith
  355. NPC.add(25794); // Kernon
  356. NPC.add(25797); // Meanas Anor
  357. NPC.add(25800); // Mammon Collector Talos
  358. NPC.add(27036); // Calpico
  359. NPC.add(27041); // Varangka's Messenger
  360. NPC.add(27062); // Tanukia
  361. NPC.add(27065); // Roko
  362. NPC.add(27068); // Murtika
  363. NPC.add(27093); // Delu Chief Kalkis
  364. NPC.add(27108); // Stenoa Gorgon Queen
  365. NPC.add(27110); // Shyslassys
  366. NPC.add(27112); // Gorr
  367. NPC.add(27113); // Baraham
  368. NPC.add(27114); // Succubus Queen
  369. NPC.add(27185); // Fairy Tree of Wind
  370. NPC.add(27186); // Fairy Tree of Star
  371. NPC.add(27187); // Fairy Tree of Twilight
  372. NPC.add(27188); // Fairy Tree of Abyss
  373. NPC.add(27259); // Archangel Iconoclasis
  374. NPC.add(27260); // Archangel Iconoclasis
  375. NPC.add(27266); // Fallen Angel Haures
  376. NPC.add(27267); // Fallen Angel Haures
  377. NPC.add(27290); // White Wing Commander
  378. NPC.add(29001); // Queen Ant
  379. NPC.add(29030); // Fenril Hound Kerinne
  380. NPC.add(29033); // Fenril Hound Freki
  381. NPC.add(29037); // Fenril Hound Kinaz
  382. NPC.add(29040); // Wings of Flame, Ixion
  383. NPC.add(29056); // Ice Fairy Sirra
  384. NPC.add(29062); // Andreas Van Halter
  385. NPC.add(29096); // Anais
  386. NPC.add(29129); // Lost Captain
  387. NPC.add(29132); // Lost Captain
  388. NPC.add(29135); // Lost Captain
  389. NPC.add(29138); // Lost Captain
  390. NPC.add(29141); // Lost Captain
  391. NPC.add(29144); // Lost Captain
  392. NPC.add(29147); // Lost Captain
  393. }
  394. private static final NpcStringId[] ON_ATTACK_MSG =
  395. {
  396. NpcStringId.COME_OUT_YOU_CHILDREN_OF_DARKNESS,
  397. NpcStringId.SHOW_YOURSELVES,
  398. NpcStringId.DESTROY_THE_ENEMY_MY_BROTHERS,
  399. NpcStringId.FORCES_OF_DARKNESS_FOLLOW_ME
  400. };
  401. private static final int[] ON_ATTACK_NPC =
  402. {
  403. 20767, // Timak Orc Troop Leader
  404. };
  405. private MinionSpawnManager()
  406. {
  407. super(MinionSpawnManager.class.getSimpleName(), "ai/group_template");
  408. addSpawnId(NPC);
  409. addAttackId(ON_ATTACK_NPC);
  410. }
  411. @Override
  412. public String onSpawn(L2Npc npc)
  413. {
  414. if (npc.getTemplate().getParameters().getSet().get("SummonPrivateRate") == null)
  415. {
  416. ((L2MonsterInstance) npc).getMinionList().spawnMinions(npc.getTemplate().getParameters().getMinionList("Privates"));
  417. }
  418. return super.onSpawn(npc);
  419. }
  420. @Override
  421. public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon)
  422. {
  423. if (npc.isMonster())
  424. {
  425. final L2MonsterInstance monster = (L2MonsterInstance) npc;
  426. if (!monster.isTeleporting())
  427. {
  428. if (getRandom(1, 100) <= npc.getTemplate().getParameters().getInt("SummonPrivateRate", 0))
  429. {
  430. for (MinionHolder is : npc.getTemplate().getParameters().getMinionList("Privates"))
  431. {
  432. addMinion((L2MonsterInstance) npc, is.getId());
  433. }
  434. broadcastNpcSay(npc, Say2.NPC_ALL, ON_ATTACK_MSG[getRandom(ON_ATTACK_MSG.length)]);
  435. }
  436. }
  437. }
  438. return super.onAttack(npc, attacker, damage, isSummon);
  439. }
  440. public static void main(String[] args)
  441. {
  442. new MinionSpawnManager();
  443. }
  444. }