Skip to main content

wowlab_types/types/data/
gametable.rs

1use serde::{Deserialize, Serialize};
2use wowlab_engine_macros::CopyInsert;
3
4#[derive(Clone, CopyInsert, Debug, Default, Deserialize, Serialize)]
5#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6#[cfg_attr(feature = "wasm", derive(tsify::Tsify))]
7#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))]
8pub struct HpPerStaFlat {
9    pub level: i32,
10    pub health: f64,
11}
12
13#[derive(Clone, CopyInsert, Debug, Default, Deserialize, Serialize)]
14#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
15#[cfg_attr(feature = "wasm", derive(tsify::Tsify))]
16#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))]
17pub struct CombatRatingsFlat {
18    pub level: i32,
19    pub unused_0: f64,
20    pub defense_skill: f64,
21    pub dodge: f64,
22    pub parry: f64,
23    pub block: f64,
24    pub hit_melee: f64,
25    pub hit_ranged: f64,
26    pub hit_spell: f64,
27    pub crit_melee: f64,
28    pub crit_ranged: f64,
29    pub crit_spell: f64,
30    pub corruption: f64,
31    pub corruption_resistance: f64,
32    pub speed: f64,
33    pub resilience_crit_taken: f64,
34    pub resilience_player_damage: f64,
35    pub lifesteal: f64,
36    pub haste_melee: f64,
37    pub haste_ranged: f64,
38    pub haste_spell: f64,
39    pub avoidance: f64,
40    pub sturdiness: f64,
41    pub unused_7: f64,
42    pub expertise: f64,
43    pub armor_penetration: f64,
44    pub mastery: f64,
45    pub pvp_power: f64,
46    pub unused_27: f64,
47    pub versatility_damage_done: f64,
48    pub versatility_healing_done: f64,
49    pub versatility_damage_taken: f64,
50    pub unused_12: f64,
51}
52
53#[derive(Clone, CopyInsert, Debug, Default, Deserialize, Serialize)]
54#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
55#[cfg_attr(feature = "wasm", derive(tsify::Tsify))]
56#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))]
57pub struct CombatRatingsMultByIlvlFlat {
58    pub item_level: i32,
59    pub armor_multiplier: f64,
60    pub weapon_multiplier: f64,
61    pub trinket_multiplier: f64,
62    pub jewelry_multiplier: f64,
63}
64
65#[derive(Clone, CopyInsert, Debug, Deserialize, Serialize)]
66// #t(rust_similar_structs) stamina and combat-rating multipliers originate from distinct game tables
67pub struct StaminaMultByIlvlFlat {
68    pub item_level: i32,
69    pub armor_multiplier: f64,
70    pub weapon_multiplier: f64,
71    pub trinket_multiplier: f64,
72    pub jewelry_multiplier: f64,
73}
74
75#[derive(Clone, CopyInsert, Debug, Deserialize, Serialize)]
76pub struct BaseMpFlat {
77    pub level: i32,
78    pub rogue: f64,
79    pub druid: f64,
80    pub hunter: f64,
81    pub mage: f64,
82    pub paladin: f64,
83    pub priest: f64,
84    pub shaman: f64,
85    pub warlock: f64,
86    pub warrior: f64,
87    pub death_knight: f64,
88    pub monk: f64,
89    pub demon_hunter: f64,
90    pub evoker: f64,
91    pub adventurer: f64,
92    pub traveler: f64,
93}
94
95#[derive(Clone, CopyInsert, Debug, Default, Deserialize, Serialize)]
96#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
97#[cfg_attr(feature = "wasm", derive(tsify::Tsify))]
98#[cfg_attr(feature = "wasm", tsify(into_wasm_abi, from_wasm_abi))]
99pub struct SpellScalingFlat {
100    pub level: i32,
101    pub rogue: f64,
102    pub druid: f64,
103    pub hunter: f64,
104    pub mage: f64,
105    pub paladin: f64,
106    pub priest: f64,
107    pub shaman: f64,
108    pub warlock: f64,
109    pub warrior: f64,
110    pub death_knight: f64,
111    pub monk: f64,
112    pub demon_hunter: f64,
113    pub evoker: f64,
114    pub adventurer: f64,
115    pub traveler: f64,
116    pub item: f64,
117    pub consumable: f64,
118    pub gem1: f64,
119    pub gem2: f64,
120    pub gem3: f64,
121    pub health: f64,
122    pub damage_replace_stat: f64,
123    pub damage_secondary: f64,
124    pub mana_consumable: f64,
125}
126
127#[derive(Clone, CopyInsert, Debug, Deserialize, Serialize)]
128pub struct ArmorMitigationByLvlFlat {
129    pub level: i32,
130    pub constant: f64,
131}
132
133#[derive(Clone, CopyInsert, Debug, Deserialize, Serialize)]
134// #t(rust_similar_structs) NPC health remains a distinct source-table schema from base mana and damage budgets
135pub struct NpcTotalHpFlat {
136    pub level: i32,
137    pub rogue: f64,
138    pub druid: f64,
139    pub hunter: f64,
140    pub mage: f64,
141    pub paladin: f64,
142    pub priest: f64,
143    pub shaman: f64,
144    pub warlock: f64,
145    pub warrior: f64,
146    pub death_knight: f64,
147    pub monk: f64,
148    pub demon_hunter: f64,
149}
150
151#[derive(Clone, CopyInsert, Debug, Deserialize, Serialize)]
152// #t(rust_similar_structs) NPC damage remains a distinct source-table schema from base mana and health budgets
153pub struct NpcDamageByClassFlat {
154    pub level: i32,
155    pub rogue: f64,
156    pub druid: f64,
157    pub hunter: f64,
158    pub mage: f64,
159    pub paladin: f64,
160    pub priest: f64,
161    pub shaman: f64,
162    pub warlock: f64,
163    pub warrior: f64,
164    pub death_knight: f64,
165    pub monk: f64,
166    pub demon_hunter: f64,
167}
168
169#[derive(Clone, CopyInsert, Debug, Deserialize, Serialize)]
170pub struct ChallengeModeHealthFlat {
171    pub challenge_level: i32,
172    pub scalar: f64,
173}
174
175#[derive(Clone, CopyInsert, Debug, Deserialize, Serialize)]
176// #t(rust_similar_structs) challenge-mode damage and health scalars are separate source-table contracts
177pub struct ChallengeModeDamageFlat {
178    pub challenge_level: i32,
179    pub scalar: f64,
180}
181
182#[derive(Clone, CopyInsert, Debug, Deserialize, Serialize)]
183pub struct ItemSocketCostPerLevelFlat {
184    pub item_level: i32,
185    pub socket_cost: f64,
186}
187
188#[derive(Clone, CopyInsert, Debug, Deserialize, Serialize)]
189pub struct ProfessionRatingsFlat {
190    pub expansion: String,
191    pub inspiration_craft_crit: f64,
192    pub resourcefulness_reagent_reduction: f64,
193    pub finesse_gather_extra: f64,
194    pub deftness_gather_time_decrease: f64,
195    pub perception_gather_discover: f64,
196    pub craft_speed_time_decrease: f64,
197    pub multicraft_craft_extra: f64,
198    pub ingenuity_concentration_refund_chance: f64,
199    pub unused_was_perception_gather_range: f64,
200}
201
202#[derive(Clone, CopyInsert, Debug, Deserialize, Serialize)]
203pub struct BaseProfessionRatingsFlat {
204    pub profession: String,
205    pub inspiration_craft_crit: f64,
206    pub resourcefulness_reagent_reduction: f64,
207    pub finesse_gather_extra: f64,
208    pub deftness_gather_time_decrease: f64,
209    pub perception_gather_discover: f64,
210    pub craft_speed_time_decrease: f64,
211    pub multicraft_craft_extra: f64,
212    pub unused_was_finesse_gather_time_increase: f64,
213    pub unused_was_perception_gather_range: f64,
214}