Skip to main content

wowlab_engine_content/generated/items/
mod.rs

1//! @generated by codegen-cli from manifests/items.toml -- do not edit by hand.
2#![allow(non_snake_case)]
3use wowlab_engine_combat::CombatSystemBuilder;
4use wowlab_engine_gamedata::ResolvedGameData;
5use wowlab_engine_ports::ResolveDependencies;
6pub(crate) mod aberrant_spellforge;
7pub(crate) mod algethar_puzzle_box;
8pub(crate) mod all_devouring_nucleus;
9pub(crate) mod araz_ritual_forge;
10pub(crate) mod arcanoweave_cord;
11pub(crate) mod brand_ceaseless_ire;
12pub(crate) mod bursting_lightshard;
13pub(crate) mod candle_confidant;
14pub(crate) mod chromebustible_bomb_suit;
15pub(crate) mod darkfuse_medichopper;
16pub(crate) mod diamantine_voidcore;
17pub(crate) mod emberwing_feather;
18pub(crate) mod flarendo_pilot_light;
19pub(crate) mod foul_behemoth_chelicera;
20pub(crate) mod gallagio_bottle_service;
21pub(crate) mod gaze_of_the_alnseer;
22pub(crate) mod geargrinder_spare_keys;
23pub(crate) mod heart_of_ancient_hunger;
24pub(crate) mod high_speakers_accretion;
25pub(crate) mod house_of_cards;
26pub(crate) mod junkmaestro_mega_magnet;
27pub(crate) mod kuj0_flame_vents;
28pub(crate) mod light_company_guidon;
29pub(crate) mod locuswalkers_ribbon;
30pub(crate) mod loomithar_living_silk;
31pub(crate) mod mad_queens_mandate;
32pub(crate) mod mereldar_toll;
33pub(crate) mod mister_lock_n_stalk;
34pub(crate) mod overclocked_gear_a_rang;
35pub(crate) mod ovinax_mercurial_egg;
36pub(crate) mod perfidious_projector;
37pub(crate) mod radiant_plume;
38pub(crate) mod ringing_ritual_mud;
39pub(crate) mod signet_of_the_priory;
40pub(crate) mod sikrans_endless_arsenal;
41pub(crate) mod skarmorak_shard;
42pub(crate) mod skyterror_corrosive_organ;
43pub(crate) mod soulbinder_embrace;
44pub(crate) mod sporecallers_blooming_loop;
45pub(crate) mod spymasters_web;
46pub(crate) mod torq_big_red_button;
47pub(crate) mod treacherous_transmitter;
48pub(crate) mod umbral_plume;
49pub(crate) mod unyielding_netherprism;
50pub(crate) mod vaelgors_final_stare;
51pub(crate) mod vexie_pit_whistle;
52const SIMPLE_EQUIP_AURA_ITEMS: &[(u32, &str, &[u32])] = &[
53    (212_456, "Void Reapers Contract", &[444_067]),
54    (219_311, "Void Pactstone", &[443_537]),
55    (219_312, "Empowering Crystal Anubikkaj", &[443_538]),
56    (219_314, "Ara Kara Sacbrood", &[443_541]),
57    (219_305, "Carved Blazikon Wax", &[443_527]),
58    (219_307, "Remnant Of Darkness", &[443_530]),
59    (219_302, "Scrapsinger Symphony", &[443_414]),
60    (219_304, "Conductors Wax Whistle", &[443_525]),
61    (219_317, "Harvester Edict", &[451_055]),
62    (219_316, "Ceaseless Swarmgland", &[443_545]),
63    (219_315, "Refracting Aggression Module", &[443_544]),
64    (219_296, "Entropic Skardyn Core", &[443_380]),
65    (225_577, "Sureki Zealots Insignia", &[457_683]),
66    (225_578, "Seal Of The Poisoned Pact", &[457_815, 457_918]),
67    (228_411, "Cyrces Circlet", &[462_342]),
68    (219_297, "Cinderbrew Stein", &[446_648]),
69    (242_394, "Eradicating Arcanocore", &[1_233_384]),
70    (242_400, "Nexus Kings Command", &[1_232_776]),
71    (242_397, "Sigil Cosmic Hunt", &[1_235_360]),
72    (242_398, "Naazindhris Mystic Lash", &[1_235_387]),
73    (242_399, "Screams Forgotten Sky", &[1_235_272]),
74    (242_395, "Astral Antenna", &[1_234_714]),
75    (230_026, "Scrapfield 9001", &[466_671]),
76    (230_198, "Eye Of Kezan", &[469_888]),
77    (230_194, "Reverb Radio", &[471_567]),
78    (230_192, "Mugs Moxie Jug", &[471_548]),
79    (232_541, "Improvised Seaforium Pacemaker", &[1_218_714, 1_218_712]),
80    (232_545, "Gigazap Zap Cap", &[1_219_103]),
81    (230_199, "Zee Thug Hotline", &[1_217_356, 1_217_829]),
82    (219_321, "Cirral Concoctory", &[443_559]),
83    (219_295, "Sigil Algari Concordance", &[443_378]),
84];
85type ItemRegisterFn = fn(
86    CombatSystemBuilder,
87    &ResolvedGameData,
88    wowlab_engine_gamedata::ItemBudget,
89) -> CombatSystemBuilder;
90const ITEMS: &[(u32, ItemRegisterFn)] = &[
91    (220_202, spymasters_web::register),
92    (221_023, treacherous_transmitter::register),
93    (220_305, ovinax_mercurial_egg::register),
94    (212_454, mad_queens_mandate::register),
95    (212_451, aberrant_spellforge::register),
96    (219_300, skarmorak_shard::register),
97    (219_308, signet_of_the_priory::register),
98    (212_453, skyterror_corrosive_organ::register),
99    (219_915, foul_behemoth_chelicera::register),
100    (219_313, mereldar_toll::register),
101    (219_303, high_speakers_accretion::register),
102    (219_301, overclocked_gear_a_rang::register),
103    (219_310, bursting_lightshard::register),
104    (242_401, brand_ceaseless_ire::register),
105    (242_402, araz_ritual_forge::register),
106    (242_404, all_devouring_nucleus::register),
107    (242_392, diamantine_voidcore::register),
108    (242_396, unyielding_netherprism::register),
109    (242_403, perfidious_projector::register),
110    (242_393, loomithar_living_silk::register),
111    (242_391, soulbinder_embrace::register),
112    (230_027, house_of_cards::register),
113    (230_019, vexie_pit_whistle::register),
114    (230_190, torq_big_red_button::register),
115    (230_191, flarendo_pilot_light::register),
116    (230_188, gallagio_bottle_service::register),
117    (230_197, geargrinder_spare_keys::register),
118    (230_029, chromebustible_bomb_suit::register),
119    (230_193, mister_lock_n_stalk::register),
120    (230_189, junkmaestro_mega_magnet::register),
121    (232_542, darkfuse_medichopper::register),
122    (232_543, ringing_ritual_mud::register),
123    (232_546, kuj0_flame_vents::register),
124    (225_649, candle_confidant::register),
125    (212_449, sikrans_endless_arsenal::register),
126    (249_343, gaze_of_the_alnseer::register),
127    (260_235, umbral_plume::register),
128    (249_806, radiant_plume::register),
129    (239_664, arcanoweave_cord::register),
130    (249_346, vaelgors_final_stare::register),
131    (249_344, light_company_guidon::register),
132    (250_144, emberwing_feather::register),
133    (249_342, heart_of_ancient_hunger::register),
134    (249_809, locuswalkers_ribbon::register),
135    (268_290, sporecallers_blooming_loop::register),
136    (193_701, algethar_puzzle_box::register),
137];
138///Generated item spell identifiers and display names in manifest order.
139pub const REGISTERED_ITEMS: &[(u32, &str)] = &[
140    (220_202, "SPYMASTERS_WEB"),
141    (221_023, "TREACHEROUS_TRANSMITTER"),
142    (220_305, "OVINAX_MERCURIAL_EGG"),
143    (212_454, "MAD_QUEENS_MANDATE"),
144    (212_451, "ABERRANT_SPELLFORGE"),
145    (219_300, "SKARMORAK_SHARD"),
146    (219_308, "SIGNET_OF_THE_PRIORY"),
147    (212_453, "SKYTERROR_CORROSIVE_ORGAN"),
148    (212_456, "VOID_REAPERS_CONTRACT"),
149    (219_915, "FOUL_BEHEMOTH_CHELICERA"),
150    (219_313, "MERELDAR_TOLL"),
151    (219_303, "HIGH_SPEAKERS_ACCRETION"),
152    (219_311, "VOID_PACTSTONE"),
153    (219_312, "EMPOWERING_CRYSTAL_ANUBIKKAJ"),
154    (219_314, "ARA_KARA_SACBROOD"),
155    (219_305, "CARVED_BLAZIKON_WAX"),
156    (219_307, "REMNANT_OF_DARKNESS"),
157    (219_301, "OVERCLOCKED_GEAR_A_RANG"),
158    (219_302, "SCRAPSINGER_SYMPHONY"),
159    (219_304, "CONDUCTORS_WAX_WHISTLE"),
160    (219_317, "HARVESTER_EDICT"),
161    (219_316, "CEASELESS_SWARMGLAND"),
162    (219_310, "BURSTING_LIGHTSHARD"),
163    (219_315, "REFRACTING_AGGRESSION_MODULE"),
164    (219_296, "ENTROPIC_SKARDYN_CORE"),
165    (225_577, "SUREKI_ZEALOTS_INSIGNIA"),
166    (225_578, "SEAL_OF_THE_POISONED_PACT"),
167    (228_411, "CYRCES_CIRCLET"),
168    (219_297, "CINDERBREW_STEIN"),
169    (242_401, "BRAND_CEASELESS_IRE"),
170    (242_402, "ARAZ_RITUAL_FORGE"),
171    (242_404, "ALL_DEVOURING_NUCLEUS"),
172    (242_392, "DIAMANTINE_VOIDCORE"),
173    (242_394, "ERADICATING_ARCANOCORE"),
174    (242_400, "NEXUS_KINGS_COMMAND"),
175    (242_397, "SIGIL_COSMIC_HUNT"),
176    (242_398, "NAAZINDHRIS_MYSTIC_LASH"),
177    (242_399, "SCREAMS_FORGOTTEN_SKY"),
178    (242_395, "ASTRAL_ANTENNA"),
179    (242_396, "UNYIELDING_NETHERPRISM"),
180    (242_403, "PERFIDIOUS_PROJECTOR"),
181    (242_393, "LOOMITHAR_LIVING_SILK"),
182    (242_391, "SOULBINDER_EMBRACE"),
183    (230_027, "HOUSE_OF_CARDS"),
184    (230_019, "VEXIE_PIT_WHISTLE"),
185    (230_026, "SCRAPFIELD_9001"),
186    (230_190, "TORQ_BIG_RED_BUTTON"),
187    (230_191, "FLARENDO_PILOT_LIGHT"),
188    (230_198, "EYE_OF_KEZAN"),
189    (230_194, "REVERB_RADIO"),
190    (230_192, "MUGS_MOXIE_JUG"),
191    (230_188, "GALLAGIO_BOTTLE_SERVICE"),
192    (230_197, "GEARGRINDER_SPARE_KEYS"),
193    (230_029, "CHROMEBUSTIBLE_BOMB_SUIT"),
194    (230_193, "MISTER_LOCK_N_STALK"),
195    (230_189, "JUNKMAESTRO_MEGA_MAGNET"),
196    (232_541, "IMPROVISED_SEAFORIUM_PACEMAKER"),
197    (232_542, "DARKFUSE_MEDICHOPPER"),
198    (232_543, "RINGING_RITUAL_MUD"),
199    (232_545, "GIGAZAP_ZAP_CAP"),
200    (232_546, "KUJ0_FLAME_VENTS"),
201    (230_199, "ZEE_THUG_HOTLINE"),
202    (219_321, "CIRRAL_CONCOCTORY"),
203    (225_649, "CANDLE_CONFIDANT"),
204    (219_295, "SIGIL_ALGARI_CONCORDANCE"),
205    (212_449, "SIKRANS_ENDLESS_ARSENAL"),
206    (249_343, "GAZE_OF_THE_ALNSEER"),
207    (260_235, "UMBRAL_PLUME"),
208    (249_806, "RADIANT_PLUME"),
209    (239_664, "ARCANOWEAVE_CORD"),
210    (249_346, "VAELGORS_FINAL_STARE"),
211    (249_344, "LIGHT_COMPANY_GUIDON"),
212    (250_144, "EMBERWING_FEATHER"),
213    (249_342, "HEART_OF_ANCIENT_HUNGER"),
214    (249_809, "LOCUSWALKERS_RIBBON"),
215    (268_290, "SPORECALLERS_BLOOMING_LOOP"),
216    (193_701, "ALGETHAR_PUZZLE_BOX"),
217];
218pub(crate) const ITEM_RESOLVE_IDS: &[ResolveDependencies] = &[
219    ResolveDependencies::new(220_202, &[444_958, 444_959]),
220    ResolveDependencies::new(221_023, &[446_209, 449_946]),
221    ResolveDependencies::new(220_305, &[445_066, 445_560]),
222    ResolveDependencies::new(212_454, &[443_124, 443_128]),
223    ResolveDependencies::new(212_451, &[443_415, 445_619]),
224    ResolveDependencies::new(219_300, &[443_407, 443_409]),
225    ResolveDependencies::new(219_308, &[443_531, 450_877]),
226    ResolveDependencies::new(212_453, &[444_488, 444_489]),
227    ResolveDependencies::new(212_456, &[444_067]),
228    ResolveDependencies::new(219_915, &[444_258, 444_264]),
229    ResolveDependencies::new(219_313, &[450_561, 450_641]),
230    ResolveDependencies::new(219_303, &[443_415, 462_035]),
231    ResolveDependencies::new(219_311, &[443_537]),
232    ResolveDependencies::new(219_312, &[443_538]),
233    ResolveDependencies::new(219_314, &[443_541]),
234    ResolveDependencies::new(219_305, &[443_527]),
235    ResolveDependencies::new(219_307, &[443_530]),
236    ResolveDependencies::new(219_301, &[443_411, 446_764]),
237    ResolveDependencies::new(219_302, &[443_414]),
238    ResolveDependencies::new(219_304, &[443_525]),
239    ResolveDependencies::new(219_317, &[451_055]),
240    ResolveDependencies::new(219_316, &[443_545]),
241    ResolveDependencies::new(219_310, &[443_536, 450_916]),
242    ResolveDependencies::new(219_315, &[443_544]),
243    ResolveDependencies::new(219_296, &[443_380]),
244    ResolveDependencies::new(225_577, &[457_683]),
245    ResolveDependencies::new(225_578, &[457_815, 457_918]),
246    ResolveDependencies::new(228_411, &[462_342]),
247    ResolveDependencies::new(219_297, &[446_648]),
248    ResolveDependencies::new(242_401, &[1_235_225]),
249    ResolveDependencies::new(242_402, &[1_232_797, 1_232_802]),
250    ResolveDependencies::new(242_404, &[1_235_500]),
251    ResolveDependencies::new(242_392, &[1_234_996]),
252    ResolveDependencies::new(242_394, &[1_233_384]),
253    ResolveDependencies::new(242_400, &[1_232_776]),
254    ResolveDependencies::new(242_397, &[1_235_360]),
255    ResolveDependencies::new(242_398, &[1_235_387]),
256    ResolveDependencies::new(242_399, &[1_235_272]),
257    ResolveDependencies::new(242_395, &[1_234_714]),
258    ResolveDependencies::new(242_396, &[1_233_553, 1_233_556]),
259    ResolveDependencies::new(242_403, &[1_235_557, 1_244_636]),
260    ResolveDependencies::new(242_393, &[1_232_719, 1_232_721]),
261    ResolveDependencies::new(242_391, &[1_235_218, 1_235_425]),
262    ResolveDependencies::new(230_027, &[466_680, 466_681]),
263    ResolveDependencies::new(230_019, &[466_646, 466_652]),
264    ResolveDependencies::new(230_026, &[466_671]),
265    ResolveDependencies::new(230_190, &[470_042, 470_286]),
266    ResolveDependencies::new(230_191, &[471_057, 471_142]),
267    ResolveDependencies::new(230_198, &[469_888]),
268    ResolveDependencies::new(230_194, &[471_567]),
269    ResolveDependencies::new(230_192, &[471_548]),
270    ResolveDependencies::new(230_188, &[471_213, 471_214]),
271    ResolveDependencies::new(230_197, &[471_058, 471_059]),
272    ResolveDependencies::new(230_029, &[466_693, 466_810]),
273    ResolveDependencies::new(230_193, &[467_469, 467_485]),
274    ResolveDependencies::new(230_189, &[471_211, 471_212]),
275    ResolveDependencies::new(232_541, &[1_218_712, 1_218_714]),
276    ResolveDependencies::new(232_542, &[1_220_488, 1_220_605]),
277    ResolveDependencies::new(232_543, &[1_219_102, 1_221_145]),
278    ResolveDependencies::new(232_545, &[1_219_103]),
279    ResolveDependencies::new(232_546, &[1_218_716, 1_219_410]),
280    ResolveDependencies::new(230_199, &[1_217_356, 1_217_829]),
281    ResolveDependencies::new(219_321, &[443_559]),
282    ResolveDependencies::new(225_649, &[455_451]),
283    ResolveDependencies::new(219_295, &[443_378]),
284    ResolveDependencies::new(212_449, &[447_970]),
285    ResolveDependencies::new(249_343, &[1_256_896, 1_266_686, 1_266_687]),
286    ResolveDependencies::new(260_235, &[1_265_808, 1_265_809]),
287    ResolveDependencies::new(249_806, &[1_260_592, 1_260_615]),
288    ResolveDependencies::new(239_664, &[1_241_529, 1_241_530]),
289    ResolveDependencies::new(249_346, &[1_259_293, 1_260_459]),
290    ResolveDependencies::new(249_344, &[1_251_817, 1_259_633]),
291    ResolveDependencies::new(250_144, &[1_250_508]),
292    ResolveDependencies::new(249_342, &[1_251_822, 1_262_753]),
293    ResolveDependencies::new(249_809, &[1_259_314, 1_259_317, 1_268_058]),
294    ResolveDependencies::new(268_290, &[1_285_138, 1_286_135, 1_286_316]),
295    ResolveDependencies::new(193_701, &[383_781]),
296];
297pub(crate) const ITEM_USE_SPELLS: &[(u32, u32)] = &[
298    (220_202, 444_959),
299    (221_023, 449_946),
300    (220_305, 445_560),
301    (212_454, 443_124),
302    (212_451, 445_619),
303    (219_300, 443_407),
304    (219_308, 443_531),
305    (212_453, 444_489),
306    (219_915, 444_264),
307    (219_313, 450_561),
308    (219_303, 443_415),
309    (219_301, 443_411),
310    (219_310, 443_536),
311    (242_402, 1_232_802),
312    (242_396, 1_233_556),
313    (242_403, 1_244_636),
314    (242_393, 1_232_721),
315    (242_391, 1_235_425),
316    (230_027, 466_681),
317    (230_019, 466_652),
318    (230_190, 470_286),
319    (230_191, 471_142),
320    (230_188, 471_214),
321    (230_197, 471_059),
322    (230_029, 466_810),
323    (230_193, 467_485),
324    (230_189, 471_212),
325    (232_542, 1_220_488),
326    (232_543, 1_219_102),
327    (232_546, 1_218_716),
328    (225_649, 455_451),
329    (212_449, 447_970),
330    (249_346, 1_260_459),
331    (249_344, 1_259_633),
332    (250_144, 1_250_508),
333    (193_701, 383_781),
334];
335pub(crate) const ITEM_DAMAGE_IDENTITIES: &[(
336    u32,
337    &[wowlab_engine_combat::DamageActionId],
338)] = &[
339    (
340        220_202,
341        wowlab_engine_combat::generated_identities::items::spymasters_web::damage::ALL,
342    ),
343    (
344        221_023,
345        wowlab_engine_combat::generated_identities::items::treacherous_transmitter::damage::ALL,
346    ),
347    (
348        220_305,
349        wowlab_engine_combat::generated_identities::items::ovinax_mercurial_egg::damage::ALL,
350    ),
351    (
352        212_454,
353        wowlab_engine_combat::generated_identities::items::mad_queens_mandate::damage::ALL,
354    ),
355    (
356        212_451,
357        wowlab_engine_combat::generated_identities::items::aberrant_spellforge::damage::ALL,
358    ),
359    (
360        219_300,
361        wowlab_engine_combat::generated_identities::items::skarmorak_shard::damage::ALL,
362    ),
363    (
364        219_308,
365        wowlab_engine_combat::generated_identities::items::signet_of_the_priory::damage::ALL,
366    ),
367    (
368        212_453,
369        wowlab_engine_combat::generated_identities::items::skyterror_corrosive_organ::damage::ALL,
370    ),
371    (
372        212_456,
373        wowlab_engine_combat::generated_identities::items::void_reapers_contract::damage::ALL,
374    ),
375    (
376        219_915,
377        wowlab_engine_combat::generated_identities::items::foul_behemoth_chelicera::damage::ALL,
378    ),
379    (
380        219_313,
381        wowlab_engine_combat::generated_identities::items::mereldar_toll::damage::ALL,
382    ),
383    (
384        219_303,
385        wowlab_engine_combat::generated_identities::items::high_speakers_accretion::damage::ALL,
386    ),
387    (
388        219_311,
389        wowlab_engine_combat::generated_identities::items::void_pactstone::damage::ALL,
390    ),
391    (
392        219_312,
393        wowlab_engine_combat::generated_identities::items::empowering_crystal_anubikkaj::damage::ALL,
394    ),
395    (
396        219_314,
397        wowlab_engine_combat::generated_identities::items::ara_kara_sacbrood::damage::ALL,
398    ),
399    (
400        219_305,
401        wowlab_engine_combat::generated_identities::items::carved_blazikon_wax::damage::ALL,
402    ),
403    (
404        219_307,
405        wowlab_engine_combat::generated_identities::items::remnant_of_darkness::damage::ALL,
406    ),
407    (
408        219_301,
409        wowlab_engine_combat::generated_identities::items::overclocked_gear_a_rang::damage::ALL,
410    ),
411    (
412        219_302,
413        wowlab_engine_combat::generated_identities::items::scrapsinger_symphony::damage::ALL,
414    ),
415    (
416        219_304,
417        wowlab_engine_combat::generated_identities::items::conductors_wax_whistle::damage::ALL,
418    ),
419    (
420        219_317,
421        wowlab_engine_combat::generated_identities::items::harvester_edict::damage::ALL,
422    ),
423    (
424        219_316,
425        wowlab_engine_combat::generated_identities::items::ceaseless_swarmgland::damage::ALL,
426    ),
427    (
428        219_310,
429        wowlab_engine_combat::generated_identities::items::bursting_lightshard::damage::ALL,
430    ),
431    (
432        219_315,
433        wowlab_engine_combat::generated_identities::items::refracting_aggression_module::damage::ALL,
434    ),
435    (
436        219_296,
437        wowlab_engine_combat::generated_identities::items::entropic_skardyn_core::damage::ALL,
438    ),
439    (
440        225_577,
441        wowlab_engine_combat::generated_identities::items::sureki_zealots_insignia::damage::ALL,
442    ),
443    (
444        225_578,
445        wowlab_engine_combat::generated_identities::items::seal_of_the_poisoned_pact::damage::ALL,
446    ),
447    (
448        228_411,
449        wowlab_engine_combat::generated_identities::items::cyrces_circlet::damage::ALL,
450    ),
451    (
452        219_297,
453        wowlab_engine_combat::generated_identities::items::cinderbrew_stein::damage::ALL,
454    ),
455    (
456        242_401,
457        wowlab_engine_combat::generated_identities::items::brand_ceaseless_ire::damage::ALL,
458    ),
459    (
460        242_402,
461        wowlab_engine_combat::generated_identities::items::araz_ritual_forge::damage::ALL,
462    ),
463    (
464        242_404,
465        wowlab_engine_combat::generated_identities::items::all_devouring_nucleus::damage::ALL,
466    ),
467    (
468        242_392,
469        wowlab_engine_combat::generated_identities::items::diamantine_voidcore::damage::ALL,
470    ),
471    (
472        242_394,
473        wowlab_engine_combat::generated_identities::items::eradicating_arcanocore::damage::ALL,
474    ),
475    (
476        242_400,
477        wowlab_engine_combat::generated_identities::items::nexus_kings_command::damage::ALL,
478    ),
479    (
480        242_397,
481        wowlab_engine_combat::generated_identities::items::sigil_cosmic_hunt::damage::ALL,
482    ),
483    (
484        242_398,
485        wowlab_engine_combat::generated_identities::items::naazindhris_mystic_lash::damage::ALL,
486    ),
487    (
488        242_399,
489        wowlab_engine_combat::generated_identities::items::screams_forgotten_sky::damage::ALL,
490    ),
491    (
492        242_395,
493        wowlab_engine_combat::generated_identities::items::astral_antenna::damage::ALL,
494    ),
495    (
496        242_396,
497        wowlab_engine_combat::generated_identities::items::unyielding_netherprism::damage::ALL,
498    ),
499    (
500        242_403,
501        wowlab_engine_combat::generated_identities::items::perfidious_projector::damage::ALL,
502    ),
503    (
504        242_393,
505        wowlab_engine_combat::generated_identities::items::loomithar_living_silk::damage::ALL,
506    ),
507    (
508        242_391,
509        wowlab_engine_combat::generated_identities::items::soulbinder_embrace::damage::ALL,
510    ),
511    (
512        230_027,
513        wowlab_engine_combat::generated_identities::items::house_of_cards::damage::ALL,
514    ),
515    (
516        230_019,
517        wowlab_engine_combat::generated_identities::items::vexie_pit_whistle::damage::ALL,
518    ),
519    (
520        230_026,
521        wowlab_engine_combat::generated_identities::items::scrapfield_9001::damage::ALL,
522    ),
523    (
524        230_190,
525        wowlab_engine_combat::generated_identities::items::torq_big_red_button::damage::ALL,
526    ),
527    (
528        230_191,
529        wowlab_engine_combat::generated_identities::items::flarendo_pilot_light::damage::ALL,
530    ),
531    (
532        230_198,
533        wowlab_engine_combat::generated_identities::items::eye_of_kezan::damage::ALL,
534    ),
535    (
536        230_194,
537        wowlab_engine_combat::generated_identities::items::reverb_radio::damage::ALL,
538    ),
539    (
540        230_192,
541        wowlab_engine_combat::generated_identities::items::mugs_moxie_jug::damage::ALL,
542    ),
543    (
544        230_188,
545        wowlab_engine_combat::generated_identities::items::gallagio_bottle_service::damage::ALL,
546    ),
547    (
548        230_197,
549        wowlab_engine_combat::generated_identities::items::geargrinder_spare_keys::damage::ALL,
550    ),
551    (
552        230_029,
553        wowlab_engine_combat::generated_identities::items::chromebustible_bomb_suit::damage::ALL,
554    ),
555    (
556        230_193,
557        wowlab_engine_combat::generated_identities::items::mister_lock_n_stalk::damage::ALL,
558    ),
559    (
560        230_189,
561        wowlab_engine_combat::generated_identities::items::junkmaestro_mega_magnet::damage::ALL,
562    ),
563    (
564        232_541,
565        wowlab_engine_combat::generated_identities::items::improvised_seaforium_pacemaker::damage::ALL,
566    ),
567    (
568        232_542,
569        wowlab_engine_combat::generated_identities::items::darkfuse_medichopper::damage::ALL,
570    ),
571    (
572        232_543,
573        wowlab_engine_combat::generated_identities::items::ringing_ritual_mud::damage::ALL,
574    ),
575    (
576        232_545,
577        wowlab_engine_combat::generated_identities::items::gigazap_zap_cap::damage::ALL,
578    ),
579    (
580        232_546,
581        wowlab_engine_combat::generated_identities::items::kuj0_flame_vents::damage::ALL,
582    ),
583    (
584        230_199,
585        wowlab_engine_combat::generated_identities::items::zee_thug_hotline::damage::ALL,
586    ),
587    (
588        219_321,
589        wowlab_engine_combat::generated_identities::items::cirral_concoctory::damage::ALL,
590    ),
591    (
592        225_649,
593        wowlab_engine_combat::generated_identities::items::candle_confidant::damage::ALL,
594    ),
595    (
596        219_295,
597        wowlab_engine_combat::generated_identities::items::sigil_algari_concordance::damage::ALL,
598    ),
599    (
600        212_449,
601        wowlab_engine_combat::generated_identities::items::sikrans_endless_arsenal::damage::ALL,
602    ),
603    (
604        249_343,
605        wowlab_engine_combat::generated_identities::items::gaze_of_the_alnseer::damage::ALL,
606    ),
607    (
608        260_235,
609        wowlab_engine_combat::generated_identities::items::umbral_plume::damage::ALL,
610    ),
611    (
612        249_806,
613        wowlab_engine_combat::generated_identities::items::radiant_plume::damage::ALL,
614    ),
615    (
616        239_664,
617        wowlab_engine_combat::generated_identities::items::arcanoweave_cord::damage::ALL,
618    ),
619    (
620        249_346,
621        wowlab_engine_combat::generated_identities::items::vaelgors_final_stare::damage::ALL,
622    ),
623    (
624        249_344,
625        wowlab_engine_combat::generated_identities::items::light_company_guidon::damage::ALL,
626    ),
627    (
628        250_144,
629        wowlab_engine_combat::generated_identities::items::emberwing_feather::damage::ALL,
630    ),
631    (
632        249_342,
633        wowlab_engine_combat::generated_identities::items::heart_of_ancient_hunger::damage::ALL,
634    ),
635    (
636        249_809,
637        wowlab_engine_combat::generated_identities::items::locuswalkers_ribbon::damage::ALL,
638    ),
639    (
640        268_290,
641        wowlab_engine_combat::generated_identities::items::sporecallers_blooming_loop::damage::ALL,
642    ),
643    (
644        193_701,
645        wowlab_engine_combat::generated_identities::items::algethar_puzzle_box::damage::ALL,
646    ),
647];
648pub(crate) fn register_equipped(
649    mut builder: CombatSystemBuilder,
650    data: &ResolvedGameData,
651    equipped: &[wowlab_engine_ports::EquippedItem],
652) -> Result<CombatSystemBuilder, wowlab_engine_ports::EngineError> {
653    for item in equipped {
654        if let Some((_, identities)) = ITEM_DAMAGE_IDENTITIES
655            .iter()
656            .find(|(item_id, _)| *item_id == item.item_id)
657        {
658            builder = builder.effect_identities(identities);
659        }
660
661        if let Some(&(_, register)) = ITEMS
662            .iter()
663            .find(|(registered_id, _)| *registered_id == item.item_id)
664        {
665            builder = register(builder, data, crate::items::item_budget(data, item)?);
666        }
667
668        if let Some(&(_, display, aura_ids)) = SIMPLE_EQUIP_AURA_ITEMS
669            .iter()
670            .find(|(registered_id, _, _)| *registered_id == item.item_id)
671        {
672            builder = crate::items::register_simple_equip_auras(
673                data,
674                display,
675                aura_ids,
676                || builder,
677            );
678        }
679
680        if let Some(&(_, use_spell)) = ITEM_USE_SPELLS
681            .iter()
682            .find(|(registered_id, _)| *registered_id == item.item_id)
683        {
684            builder = builder.item_use_spell(item.slot, use_spell);
685        }
686    }
687
688    builder = register_player_cast_hooks(builder, equipped);
689    builder = register_player_impact_hooks(builder, data, equipped);
690
691    Ok(builder)
692}
693const PLAYER_CAST_HOOKS: &[(u32, wowlab_engine_combat::CastHookFn)] = &[
694    (219_915, crate::hooks::items::foul_behemoth_chelicera::on_player_cast),
695    (242_404, crate::hooks::items::all_devouring_nucleus::on_player_cast),
696    (242_392, crate::hooks::items::diamantine_voidcore::on_player_cast),
697    (249_342, crate::hooks::items::heart_of_ancient_hunger::on_player_cast),
698    (249_809, crate::hooks::items::locuswalkers_ribbon::on_player_cast),
699];
700fn register_player_cast_hooks(
701    mut builder: CombatSystemBuilder,
702    equipped: &[wowlab_engine_ports::EquippedItem],
703) -> CombatSystemBuilder {
704    for item in equipped {
705        if let Some(&(_, hook)) = PLAYER_CAST_HOOKS
706            .iter()
707            .find(|(registered_id, _)| *registered_id == item.item_id)
708        {
709            builder = builder.on_player_cast(hook);
710        }
711    }
712
713    builder
714}
715type PlayerImpactHookEntry = (
716    u32,
717    Option<u32>,
718    wowlab_engine_combat::ImpactProcFn,
719    bool,
720    bool,
721    bool,
722);
723const PLAYER_IMPACT_HOOKS: &[PlayerImpactHookEntry] = &[
724    (
725        249_343,
726        Some(1_256_896),
727        crate::hooks::items::gaze_of_the_alnseer::on_player_impact,
728        false,
729        true,
730        false,
731    ),
732    (
733        239_664,
734        Some(1_241_529),
735        crate::hooks::items::arcanoweave_cord::on_player_impact,
736        false,
737        false,
738        false,
739    ),
740    (
741        268_290,
742        Some(1_285_138),
743        crate::hooks::items::sporecallers_blooming_loop::on_player_impact,
744        false,
745        false,
746        false,
747    ),
748];
749fn register_player_impact_hooks(
750    mut builder: CombatSystemBuilder,
751    data: &ResolvedGameData,
752    equipped: &[wowlab_engine_ports::EquippedItem],
753) -> CombatSystemBuilder {
754    for item in equipped {
755        if let Some(
756            &(_, driver_spell_id, hook, periodic_only, skip_periodic, crit_only),
757        ) = PLAYER_IMPACT_HOOKS
758            .iter()
759            .find(|(registered_id, ..)| *registered_id == item.item_id)
760        {
761            builder = builder
762                .register_impact_proc(wowlab_engine_combat::ImpactProc {
763                    driver: driver_spell_id
764                        .map_or_else(
765                            wowlab_engine_combat::ProcDriver::default,
766                            |driver| {
767                                wowlab_engine_combat::ProcDriver::from_spell(
768                                    data,
769                                    driver,
770                                    wowlab_engine_combat::ProcTriggerSide::Caster,
771                                )
772                            },
773                        ),
774                    actor_filter: wowlab_engine_combat::ImpactActorFilter::Player,
775                    chance: 1.0,
776                    fire: hook,
777                    spell_filter: None,
778                    periodic_only,
779                    skip_periodic,
780                    crit_only,
781                });
782        }
783    }
784
785    builder
786}