Skip to main content

wowlab_manifest_schema/
lib.rs

1//! Canonical TOML schema for engine spec and items manifests.
2//!
3//! ```
4//! use wowlab_manifest_schema::{ScalarRef, SpellScalarField};
5//!
6//! let scalar: ScalarRef = toml::from_str(
7//!     "spell_id = 61304\nfield = \"gcd_ms\"\nmultiplier = 0.8",
8//! )?;
9//! assert!(matches!(
10//!     scalar,
11//!     ScalarRef::SpellRef {
12//!         field: SpellScalarField::GcdMs,
13//!         ..
14//!     }
15//! ));
16//! # Ok::<(), toml::de::Error>(())
17//! ```
18
19mod aura;
20mod combat;
21mod manifest;
22mod periodic;
23mod repository;
24mod repository_composition;
25mod scalar;
26mod spell;
27mod validation;
28
29pub use aura::{
30    ManifestAuraDef, ManifestAuraTickBehavior, SpellScopedPct, SpellScopedValue, StackingDamageMult,
31};
32pub use combat::{
33    AoeDef, ChannelDamageType, ChannelDef, DamageSchoolKind, EmpowerDef, ManifestDamageDef,
34    TickCostAltDef, TickCostDef, TickDamageAltDef,
35};
36pub use manifest::{
37    ContentEffectCoverage, ContentEffectStatus, EffectRef, EventEffectDef, ImpactProcDef,
38    ImpactProcHitDef, ImpactProcPhaseDef, ImpactProcRngDef, ItemImpactHookDef, ItemManifestEntry,
39    ItemsManifest, Manifest, ManifestHeroTalentTree, MasterySection, MetricKeysSection,
40    ResourceSection, RotationSchema, SecondaryResourceSection, SpecSection, SpellGroupDef,
41    TalentGatedAuraEffectDef,
42};
43pub use periodic::{
44    PeriodicApplyAura, PeriodicDamage, PeriodicHook, PeriodicRemoveStack, PeriodicResidualDamage,
45    PeriodicResource, PeriodicResourceDrain,
46};
47pub use repository::{ManifestLoadError, ManifestRepository, SharedBindings, SharedManifestPath};
48pub use scalar::{ScalarField, ScalarRef, SpellScalarField};
49pub use spell::{
50    AutoAttackDef, DamageEffectDef, ExtendAuraDef, ManifestProcAttribute, ManifestSpellDef,
51    OnCritReduceCharge, ReducesCd, ReducesCdChance, ResetsCdWhile,
52};
53pub use validation::{ManifestDiagnostic, ManifestDiagnosticLocation, ManifestReferenceKind};
54pub use wowlab_types::combat::{PeriodicDamageMode, SpellGroupRule};
55
56/// Current manifest schema version.
57pub const CURRENT_SCHEMA_VERSION: u32 = 1;