battler_data/moves/
move_flag.rs1use serde_string_enum::{
2 DeserializeLabeledStringEnum,
3 SerializeLabeledStringEnum,
4};
5
6#[derive(
8 Debug, Clone, PartialEq, Eq, Hash, SerializeLabeledStringEnum, DeserializeLabeledStringEnum,
9)]
10pub enum MoveFlag {
11 #[string = "AccuracyLowering"]
13 AccuracyLowering,
14 #[string = "BypassSubstitute"]
16 #[alias = "BypassSub"]
17 BypassSubstitute,
18 #[string = "BypassMaxGuard"]
20 BypassMaxGuard,
21 #[string = "Bite"]
23 Bite,
24 #[string = "Bullet"]
26 Bullet,
27 #[string = "CallsMove"]
29 CallsMove,
30 #[string = "Charge"]
32 Charge,
33 #[string = "Contact"]
35 Contact,
36 #[string = "CrashDamage"]
38 CrashDamage,
39 #[string = "Dance"]
41 Dance,
42 #[string = "Distance"]
44 Distance,
45 #[string = "EvasionRaising"]
47 EvasionRaising,
48 #[string = "FailCopycat"]
50 FailCopycat,
51 #[string = "FailEncore"]
53 FailEncore,
54 #[string = "FailInstruct"]
56 FailInstruct,
57 #[string = "FailMeFirst"]
59 FailMeFirst,
60 #[string = "FailMimic"]
62 FailMimic,
63 #[string = "Future"]
65 Future,
66 #[string = "Gravity"]
68 Gravity,
69 #[string = "Heal"]
71 Heal,
72 #[string = "Max"]
74 Max,
75 #[string = "Mirror"]
77 Mirror,
78 #[string = "MustPressure"]
80 MustPressure,
81 #[string = "NoAssist"]
83 NoAssist,
84 #[string = "NoMetronome"]
86 NoMetronome,
87 #[string = "NoParentalBond"]
89 NoParentalBond,
90 #[string = "NoSketch"]
92 NoSketch,
93 #[string = "NoSleepTalk"]
95 NoSleepTalk,
96 #[string = "OHKO"]
98 OHKO,
99 #[string = "PledgeCombo"]
101 PledgeCombo,
102 #[string = "Powder"]
104 Powder,
105 #[string = "Protect"]
107 Protect,
108 #[string = "Pulse"]
110 Pulse,
111 #[string = "Punch"]
113 Punch,
114 #[string = "Recharge"]
116 Recharge,
117 #[string = "Reflectable"]
119 Reflectable,
120 #[string = "SleepInducing"]
122 SleepInducing,
123 #[string = "SleepUsable"]
125 SleepUsable,
126 #[string = "Slicing"]
128 Slicing,
129 #[string = "Snatch"]
131 Snatch,
132 #[string = "Sound"]
134 Sound,
135 #[string = "Stalling"]
137 Stalling,
138 #[string = "Thawing"]
140 Thawing,
141 #[string = "ThawsTarget"]
143 ThawsTarget,
144 #[string = "WeakenThroughProtection"]
146 WeakenThroughProtection,
147 #[string = "Wind"]
149 Wind,
150 #[string = "Z"]
152 Z,
153}
154
155#[cfg(test)]
156mod move_flags_test {
157 use crate::{
158 MoveFlag,
159 test_util::{
160 test_string_deserialization,
161 test_string_serialization,
162 },
163 };
164
165 #[test]
166 fn serializes_to_string() {
167 test_string_serialization(MoveFlag::BypassSubstitute, "BypassSubstitute");
168 test_string_serialization(MoveFlag::Bite, "Bite");
169 test_string_serialization(MoveFlag::Thawing, "Thawing");
170 }
171
172 #[test]
173 fn deserializes_lowercase() {
174 test_string_deserialization("charge", MoveFlag::Charge);
175 test_string_deserialization("noparentalbond", MoveFlag::NoParentalBond);
176 test_string_deserialization("reflectable", MoveFlag::Reflectable);
177 }
178}