#[derive(Debug, PartialEq, Eq, Hash, Ord, PartialOrd, Copy, Clone)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub enum SpellCastResult {
AffectingCombat,
AlreadyAtFullHealth,
AlreadyAtFullMana,
AlreadyBeingTamed,
AlreadyHaveCharm,
AlreadyHaveSummon,
AlreadyOpen,
MorePowerfulSpellActive,
BadImplicitTargets,
BadTargets,
CantBeCharmed,
CantBeDisenchanted,
CantBeProspected,
CantCastOnTapped,
CantDuelWhileInvisible,
CantDuelWhileStealthed,
CantTooCloseToEnemy,
CantDoThatYet,
CasterDead,
Charmed,
ChestInUse,
Confused,
DontReport,
EquippedItem,
EquippedItemClass,
EquippedItemClassMainhand,
EquippedItemClassOffhand,
ErrorX,
Fizzle,
Fleeing,
FoodLowlevel,
Highlevel,
Immune,
Interrupted,
InterruptedCombat,
ItemAlreadyEnchanted,
ItemGone,
EnchantNotExistingItem,
ItemNotReady,
LevelRequirement,
LineOfSight,
Lowlevel,
SkillNotHighEnough,
MainhandEmpty,
Moving,
NeedAmmo,
NeedRequiresSomething,
NeedExoticAmmo,
Nopath,
NotBehind,
NotFishable,
NotHere,
NotInfront,
NotInControl,
NotKnown,
NotMounted,
NotOnTaxi,
NotOnTransport,
NotReady,
NotShapeshift,
NotStanding,
NotTradeable,
NotTrading,
NotUnsheathed,
NotWhileGhost,
NoAmmo,
NoChargesRemain,
NoChampion,
NoComboPoints,
NoDueling,
NoEndurance,
NoFish,
NoItemsWhileShapeshifted,
NoMountsAllowed,
NoPet,
NoPower,
NothingToDispel,
NothingToSteal,
OnlyAbovewater,
OnlyDaytime,
OnlyIndoors,
OnlyMounted,
OnlyNighttime,
OnlyOutdoors,
OnlyShapeshift,
OnlyStealthed,
OnlyUnderwater,
OutOfRange,
Pacified,
Possessed,
RequiresArea,
RequiresSpellFocus,
Rooted,
Silenced,
SpellInProgress,
SpellLearned,
SpellUnavailable,
Stunned,
TargetsDead,
TargetAffectingCombat,
TargetAurastate,
TargetDueling,
TargetEnemy,
TargetEnraged,
TargetFriendly,
TargetInCombat,
TargetIsPlayer,
TargetNotDead,
TargetNotInParty,
TargetNotLooted,
TargetNotPlayer,
TargetNoPockets,
TargetNoWeapons,
TargetUnskinnable,
ThirstSatiated,
TooClose,
TooManyOfItem,
TrainingPoints,
TryAgain,
UnitNotBehind,
UnitNotInfront,
WrongPetFood,
NotWhileFatigued,
TargetNotInInstance,
NotWhileTrading,
TargetNotInRaid,
DisenchantWhileLooting,
ProspectWhileLooting,
TargetFreeforall,
NoEdibleCorpses,
OnlyBattlegrounds,
TargetNotGhost,
TooManySkills,
CantUseNewItem,
WrongWeather,
DamageImmune,
PreventedByMechanic,
PlayTime,
Reputation,
MinSkill,
Unknown,
}
impl SpellCastResult {
pub const fn as_int(&self) -> u8 {
match self {
Self::AffectingCombat => 0x0,
Self::AlreadyAtFullHealth => 0x1,
Self::AlreadyAtFullMana => 0x2,
Self::AlreadyBeingTamed => 0x3,
Self::AlreadyHaveCharm => 0x4,
Self::AlreadyHaveSummon => 0x5,
Self::AlreadyOpen => 0x6,
Self::MorePowerfulSpellActive => 0x7,
Self::BadImplicitTargets => 0x9,
Self::BadTargets => 0xa,
Self::CantBeCharmed => 0xb,
Self::CantBeDisenchanted => 0xc,
Self::CantBeProspected => 0xd,
Self::CantCastOnTapped => 0xe,
Self::CantDuelWhileInvisible => 0xf,
Self::CantDuelWhileStealthed => 0x10,
Self::CantTooCloseToEnemy => 0x11,
Self::CantDoThatYet => 0x12,
Self::CasterDead => 0x13,
Self::Charmed => 0x14,
Self::ChestInUse => 0x15,
Self::Confused => 0x16,
Self::DontReport => 0x17,
Self::EquippedItem => 0x18,
Self::EquippedItemClass => 0x19,
Self::EquippedItemClassMainhand => 0x1a,
Self::EquippedItemClassOffhand => 0x1b,
Self::ErrorX => 0x1c,
Self::Fizzle => 0x1d,
Self::Fleeing => 0x1e,
Self::FoodLowlevel => 0x1f,
Self::Highlevel => 0x20,
Self::Immune => 0x22,
Self::Interrupted => 0x23,
Self::InterruptedCombat => 0x24,
Self::ItemAlreadyEnchanted => 0x25,
Self::ItemGone => 0x26,
Self::EnchantNotExistingItem => 0x27,
Self::ItemNotReady => 0x28,
Self::LevelRequirement => 0x29,
Self::LineOfSight => 0x2a,
Self::Lowlevel => 0x2b,
Self::SkillNotHighEnough => 0x2c,
Self::MainhandEmpty => 0x2d,
Self::Moving => 0x2e,
Self::NeedAmmo => 0x2f,
Self::NeedRequiresSomething => 0x30,
Self::NeedExoticAmmo => 0x31,
Self::Nopath => 0x32,
Self::NotBehind => 0x33,
Self::NotFishable => 0x34,
Self::NotHere => 0x35,
Self::NotInfront => 0x36,
Self::NotInControl => 0x37,
Self::NotKnown => 0x38,
Self::NotMounted => 0x39,
Self::NotOnTaxi => 0x3a,
Self::NotOnTransport => 0x3b,
Self::NotReady => 0x3c,
Self::NotShapeshift => 0x3d,
Self::NotStanding => 0x3e,
Self::NotTradeable => 0x3f,
Self::NotTrading => 0x40,
Self::NotUnsheathed => 0x41,
Self::NotWhileGhost => 0x42,
Self::NoAmmo => 0x43,
Self::NoChargesRemain => 0x44,
Self::NoChampion => 0x45,
Self::NoComboPoints => 0x46,
Self::NoDueling => 0x47,
Self::NoEndurance => 0x48,
Self::NoFish => 0x49,
Self::NoItemsWhileShapeshifted => 0x4a,
Self::NoMountsAllowed => 0x4b,
Self::NoPet => 0x4c,
Self::NoPower => 0x4d,
Self::NothingToDispel => 0x4e,
Self::NothingToSteal => 0x4f,
Self::OnlyAbovewater => 0x50,
Self::OnlyDaytime => 0x51,
Self::OnlyIndoors => 0x52,
Self::OnlyMounted => 0x53,
Self::OnlyNighttime => 0x54,
Self::OnlyOutdoors => 0x55,
Self::OnlyShapeshift => 0x56,
Self::OnlyStealthed => 0x57,
Self::OnlyUnderwater => 0x58,
Self::OutOfRange => 0x59,
Self::Pacified => 0x5a,
Self::Possessed => 0x5b,
Self::RequiresArea => 0x5d,
Self::RequiresSpellFocus => 0x5e,
Self::Rooted => 0x5f,
Self::Silenced => 0x60,
Self::SpellInProgress => 0x61,
Self::SpellLearned => 0x62,
Self::SpellUnavailable => 0x63,
Self::Stunned => 0x64,
Self::TargetsDead => 0x65,
Self::TargetAffectingCombat => 0x66,
Self::TargetAurastate => 0x67,
Self::TargetDueling => 0x68,
Self::TargetEnemy => 0x69,
Self::TargetEnraged => 0x6a,
Self::TargetFriendly => 0x6b,
Self::TargetInCombat => 0x6c,
Self::TargetIsPlayer => 0x6d,
Self::TargetNotDead => 0x6e,
Self::TargetNotInParty => 0x6f,
Self::TargetNotLooted => 0x70,
Self::TargetNotPlayer => 0x71,
Self::TargetNoPockets => 0x72,
Self::TargetNoWeapons => 0x73,
Self::TargetUnskinnable => 0x74,
Self::ThirstSatiated => 0x75,
Self::TooClose => 0x76,
Self::TooManyOfItem => 0x77,
Self::TrainingPoints => 0x79,
Self::TryAgain => 0x7a,
Self::UnitNotBehind => 0x7b,
Self::UnitNotInfront => 0x7c,
Self::WrongPetFood => 0x7d,
Self::NotWhileFatigued => 0x7e,
Self::TargetNotInInstance => 0x7f,
Self::NotWhileTrading => 0x80,
Self::TargetNotInRaid => 0x81,
Self::DisenchantWhileLooting => 0x82,
Self::ProspectWhileLooting => 0x83,
Self::TargetFreeforall => 0x85,
Self::NoEdibleCorpses => 0x86,
Self::OnlyBattlegrounds => 0x87,
Self::TargetNotGhost => 0x88,
Self::TooManySkills => 0x89,
Self::CantUseNewItem => 0x8a,
Self::WrongWeather => 0x8b,
Self::DamageImmune => 0x8c,
Self::PreventedByMechanic => 0x8d,
Self::PlayTime => 0x8e,
Self::Reputation => 0x8f,
Self::MinSkill => 0x90,
Self::Unknown => 0x91,
}
}
pub const fn variants() -> [Self; 141] {
[
Self::AffectingCombat,
Self::AlreadyAtFullHealth,
Self::AlreadyAtFullMana,
Self::AlreadyBeingTamed,
Self::AlreadyHaveCharm,
Self::AlreadyHaveSummon,
Self::AlreadyOpen,
Self::MorePowerfulSpellActive,
Self::BadImplicitTargets,
Self::BadTargets,
Self::CantBeCharmed,
Self::CantBeDisenchanted,
Self::CantBeProspected,
Self::CantCastOnTapped,
Self::CantDuelWhileInvisible,
Self::CantDuelWhileStealthed,
Self::CantTooCloseToEnemy,
Self::CantDoThatYet,
Self::CasterDead,
Self::Charmed,
Self::ChestInUse,
Self::Confused,
Self::DontReport,
Self::EquippedItem,
Self::EquippedItemClass,
Self::EquippedItemClassMainhand,
Self::EquippedItemClassOffhand,
Self::ErrorX,
Self::Fizzle,
Self::Fleeing,
Self::FoodLowlevel,
Self::Highlevel,
Self::Immune,
Self::Interrupted,
Self::InterruptedCombat,
Self::ItemAlreadyEnchanted,
Self::ItemGone,
Self::EnchantNotExistingItem,
Self::ItemNotReady,
Self::LevelRequirement,
Self::LineOfSight,
Self::Lowlevel,
Self::SkillNotHighEnough,
Self::MainhandEmpty,
Self::Moving,
Self::NeedAmmo,
Self::NeedRequiresSomething,
Self::NeedExoticAmmo,
Self::Nopath,
Self::NotBehind,
Self::NotFishable,
Self::NotHere,
Self::NotInfront,
Self::NotInControl,
Self::NotKnown,
Self::NotMounted,
Self::NotOnTaxi,
Self::NotOnTransport,
Self::NotReady,
Self::NotShapeshift,
Self::NotStanding,
Self::NotTradeable,
Self::NotTrading,
Self::NotUnsheathed,
Self::NotWhileGhost,
Self::NoAmmo,
Self::NoChargesRemain,
Self::NoChampion,
Self::NoComboPoints,
Self::NoDueling,
Self::NoEndurance,
Self::NoFish,
Self::NoItemsWhileShapeshifted,
Self::NoMountsAllowed,
Self::NoPet,
Self::NoPower,
Self::NothingToDispel,
Self::NothingToSteal,
Self::OnlyAbovewater,
Self::OnlyDaytime,
Self::OnlyIndoors,
Self::OnlyMounted,
Self::OnlyNighttime,
Self::OnlyOutdoors,
Self::OnlyShapeshift,
Self::OnlyStealthed,
Self::OnlyUnderwater,
Self::OutOfRange,
Self::Pacified,
Self::Possessed,
Self::RequiresArea,
Self::RequiresSpellFocus,
Self::Rooted,
Self::Silenced,
Self::SpellInProgress,
Self::SpellLearned,
Self::SpellUnavailable,
Self::Stunned,
Self::TargetsDead,
Self::TargetAffectingCombat,
Self::TargetAurastate,
Self::TargetDueling,
Self::TargetEnemy,
Self::TargetEnraged,
Self::TargetFriendly,
Self::TargetInCombat,
Self::TargetIsPlayer,
Self::TargetNotDead,
Self::TargetNotInParty,
Self::TargetNotLooted,
Self::TargetNotPlayer,
Self::TargetNoPockets,
Self::TargetNoWeapons,
Self::TargetUnskinnable,
Self::ThirstSatiated,
Self::TooClose,
Self::TooManyOfItem,
Self::TrainingPoints,
Self::TryAgain,
Self::UnitNotBehind,
Self::UnitNotInfront,
Self::WrongPetFood,
Self::NotWhileFatigued,
Self::TargetNotInInstance,
Self::NotWhileTrading,
Self::TargetNotInRaid,
Self::DisenchantWhileLooting,
Self::ProspectWhileLooting,
Self::TargetFreeforall,
Self::NoEdibleCorpses,
Self::OnlyBattlegrounds,
Self::TargetNotGhost,
Self::TooManySkills,
Self::CantUseNewItem,
Self::WrongWeather,
Self::DamageImmune,
Self::PreventedByMechanic,
Self::PlayTime,
Self::Reputation,
Self::MinSkill,
Self::Unknown,
]
}
pub const fn from_int(value: u8) -> Result<Self, crate::errors::EnumError> {
match value {
0 => Ok(Self::AffectingCombat),
1 => Ok(Self::AlreadyAtFullHealth),
2 => Ok(Self::AlreadyAtFullMana),
3 => Ok(Self::AlreadyBeingTamed),
4 => Ok(Self::AlreadyHaveCharm),
5 => Ok(Self::AlreadyHaveSummon),
6 => Ok(Self::AlreadyOpen),
7 => Ok(Self::MorePowerfulSpellActive),
9 => Ok(Self::BadImplicitTargets),
10 => Ok(Self::BadTargets),
11 => Ok(Self::CantBeCharmed),
12 => Ok(Self::CantBeDisenchanted),
13 => Ok(Self::CantBeProspected),
14 => Ok(Self::CantCastOnTapped),
15 => Ok(Self::CantDuelWhileInvisible),
16 => Ok(Self::CantDuelWhileStealthed),
17 => Ok(Self::CantTooCloseToEnemy),
18 => Ok(Self::CantDoThatYet),
19 => Ok(Self::CasterDead),
20 => Ok(Self::Charmed),
21 => Ok(Self::ChestInUse),
22 => Ok(Self::Confused),
23 => Ok(Self::DontReport),
24 => Ok(Self::EquippedItem),
25 => Ok(Self::EquippedItemClass),
26 => Ok(Self::EquippedItemClassMainhand),
27 => Ok(Self::EquippedItemClassOffhand),
28 => Ok(Self::ErrorX),
29 => Ok(Self::Fizzle),
30 => Ok(Self::Fleeing),
31 => Ok(Self::FoodLowlevel),
32 => Ok(Self::Highlevel),
34 => Ok(Self::Immune),
35 => Ok(Self::Interrupted),
36 => Ok(Self::InterruptedCombat),
37 => Ok(Self::ItemAlreadyEnchanted),
38 => Ok(Self::ItemGone),
39 => Ok(Self::EnchantNotExistingItem),
40 => Ok(Self::ItemNotReady),
41 => Ok(Self::LevelRequirement),
42 => Ok(Self::LineOfSight),
43 => Ok(Self::Lowlevel),
44 => Ok(Self::SkillNotHighEnough),
45 => Ok(Self::MainhandEmpty),
46 => Ok(Self::Moving),
47 => Ok(Self::NeedAmmo),
48 => Ok(Self::NeedRequiresSomething),
49 => Ok(Self::NeedExoticAmmo),
50 => Ok(Self::Nopath),
51 => Ok(Self::NotBehind),
52 => Ok(Self::NotFishable),
53 => Ok(Self::NotHere),
54 => Ok(Self::NotInfront),
55 => Ok(Self::NotInControl),
56 => Ok(Self::NotKnown),
57 => Ok(Self::NotMounted),
58 => Ok(Self::NotOnTaxi),
59 => Ok(Self::NotOnTransport),
60 => Ok(Self::NotReady),
61 => Ok(Self::NotShapeshift),
62 => Ok(Self::NotStanding),
63 => Ok(Self::NotTradeable),
64 => Ok(Self::NotTrading),
65 => Ok(Self::NotUnsheathed),
66 => Ok(Self::NotWhileGhost),
67 => Ok(Self::NoAmmo),
68 => Ok(Self::NoChargesRemain),
69 => Ok(Self::NoChampion),
70 => Ok(Self::NoComboPoints),
71 => Ok(Self::NoDueling),
72 => Ok(Self::NoEndurance),
73 => Ok(Self::NoFish),
74 => Ok(Self::NoItemsWhileShapeshifted),
75 => Ok(Self::NoMountsAllowed),
76 => Ok(Self::NoPet),
77 => Ok(Self::NoPower),
78 => Ok(Self::NothingToDispel),
79 => Ok(Self::NothingToSteal),
80 => Ok(Self::OnlyAbovewater),
81 => Ok(Self::OnlyDaytime),
82 => Ok(Self::OnlyIndoors),
83 => Ok(Self::OnlyMounted),
84 => Ok(Self::OnlyNighttime),
85 => Ok(Self::OnlyOutdoors),
86 => Ok(Self::OnlyShapeshift),
87 => Ok(Self::OnlyStealthed),
88 => Ok(Self::OnlyUnderwater),
89 => Ok(Self::OutOfRange),
90 => Ok(Self::Pacified),
91 => Ok(Self::Possessed),
93 => Ok(Self::RequiresArea),
94 => Ok(Self::RequiresSpellFocus),
95 => Ok(Self::Rooted),
96 => Ok(Self::Silenced),
97 => Ok(Self::SpellInProgress),
98 => Ok(Self::SpellLearned),
99 => Ok(Self::SpellUnavailable),
100 => Ok(Self::Stunned),
101 => Ok(Self::TargetsDead),
102 => Ok(Self::TargetAffectingCombat),
103 => Ok(Self::TargetAurastate),
104 => Ok(Self::TargetDueling),
105 => Ok(Self::TargetEnemy),
106 => Ok(Self::TargetEnraged),
107 => Ok(Self::TargetFriendly),
108 => Ok(Self::TargetInCombat),
109 => Ok(Self::TargetIsPlayer),
110 => Ok(Self::TargetNotDead),
111 => Ok(Self::TargetNotInParty),
112 => Ok(Self::TargetNotLooted),
113 => Ok(Self::TargetNotPlayer),
114 => Ok(Self::TargetNoPockets),
115 => Ok(Self::TargetNoWeapons),
116 => Ok(Self::TargetUnskinnable),
117 => Ok(Self::ThirstSatiated),
118 => Ok(Self::TooClose),
119 => Ok(Self::TooManyOfItem),
121 => Ok(Self::TrainingPoints),
122 => Ok(Self::TryAgain),
123 => Ok(Self::UnitNotBehind),
124 => Ok(Self::UnitNotInfront),
125 => Ok(Self::WrongPetFood),
126 => Ok(Self::NotWhileFatigued),
127 => Ok(Self::TargetNotInInstance),
128 => Ok(Self::NotWhileTrading),
129 => Ok(Self::TargetNotInRaid),
130 => Ok(Self::DisenchantWhileLooting),
131 => Ok(Self::ProspectWhileLooting),
133 => Ok(Self::TargetFreeforall),
134 => Ok(Self::NoEdibleCorpses),
135 => Ok(Self::OnlyBattlegrounds),
136 => Ok(Self::TargetNotGhost),
137 => Ok(Self::TooManySkills),
138 => Ok(Self::CantUseNewItem),
139 => Ok(Self::WrongWeather),
140 => Ok(Self::DamageImmune),
141 => Ok(Self::PreventedByMechanic),
142 => Ok(Self::PlayTime),
143 => Ok(Self::Reputation),
144 => Ok(Self::MinSkill),
145 => Ok(Self::Unknown),
v => Err(crate::errors::EnumError::new(NAME, v as i128),)
}
}
}
#[cfg(feature = "print-testcase")]
impl SpellCastResult {
pub const fn as_test_case_value(&self) -> &'static str {
match self {
Self::AffectingCombat => "AFFECTING_COMBAT",
Self::AlreadyAtFullHealth => "ALREADY_AT_FULL_HEALTH",
Self::AlreadyAtFullMana => "ALREADY_AT_FULL_MANA",
Self::AlreadyBeingTamed => "ALREADY_BEING_TAMED",
Self::AlreadyHaveCharm => "ALREADY_HAVE_CHARM",
Self::AlreadyHaveSummon => "ALREADY_HAVE_SUMMON",
Self::AlreadyOpen => "ALREADY_OPEN",
Self::MorePowerfulSpellActive => "MORE_POWERFUL_SPELL_ACTIVE",
Self::BadImplicitTargets => "BAD_IMPLICIT_TARGETS",
Self::BadTargets => "BAD_TARGETS",
Self::CantBeCharmed => "CANT_BE_CHARMED",
Self::CantBeDisenchanted => "CANT_BE_DISENCHANTED",
Self::CantBeProspected => "CANT_BE_PROSPECTED",
Self::CantCastOnTapped => "CANT_CAST_ON_TAPPED",
Self::CantDuelWhileInvisible => "CANT_DUEL_WHILE_INVISIBLE",
Self::CantDuelWhileStealthed => "CANT_DUEL_WHILE_STEALTHED",
Self::CantTooCloseToEnemy => "CANT_TOO_CLOSE_TO_ENEMY",
Self::CantDoThatYet => "CANT_DO_THAT_YET",
Self::CasterDead => "CASTER_DEAD",
Self::Charmed => "CHARMED",
Self::ChestInUse => "CHEST_IN_USE",
Self::Confused => "CONFUSED",
Self::DontReport => "DONT_REPORT",
Self::EquippedItem => "EQUIPPED_ITEM",
Self::EquippedItemClass => "EQUIPPED_ITEM_CLASS",
Self::EquippedItemClassMainhand => "EQUIPPED_ITEM_CLASS_MAINHAND",
Self::EquippedItemClassOffhand => "EQUIPPED_ITEM_CLASS_OFFHAND",
Self::ErrorX => "ERROR",
Self::Fizzle => "FIZZLE",
Self::Fleeing => "FLEEING",
Self::FoodLowlevel => "FOOD_LOWLEVEL",
Self::Highlevel => "HIGHLEVEL",
Self::Immune => "IMMUNE",
Self::Interrupted => "INTERRUPTED",
Self::InterruptedCombat => "INTERRUPTED_COMBAT",
Self::ItemAlreadyEnchanted => "ITEM_ALREADY_ENCHANTED",
Self::ItemGone => "ITEM_GONE",
Self::EnchantNotExistingItem => "ENCHANT_NOT_EXISTING_ITEM",
Self::ItemNotReady => "ITEM_NOT_READY",
Self::LevelRequirement => "LEVEL_REQUIREMENT",
Self::LineOfSight => "LINE_OF_SIGHT",
Self::Lowlevel => "LOWLEVEL",
Self::SkillNotHighEnough => "SKILL_NOT_HIGH_ENOUGH",
Self::MainhandEmpty => "MAINHAND_EMPTY",
Self::Moving => "MOVING",
Self::NeedAmmo => "NEED_AMMO",
Self::NeedRequiresSomething => "NEED_REQUIRES_SOMETHING",
Self::NeedExoticAmmo => "NEED_EXOTIC_AMMO",
Self::Nopath => "NOPATH",
Self::NotBehind => "NOT_BEHIND",
Self::NotFishable => "NOT_FISHABLE",
Self::NotHere => "NOT_HERE",
Self::NotInfront => "NOT_INFRONT",
Self::NotInControl => "NOT_IN_CONTROL",
Self::NotKnown => "NOT_KNOWN",
Self::NotMounted => "NOT_MOUNTED",
Self::NotOnTaxi => "NOT_ON_TAXI",
Self::NotOnTransport => "NOT_ON_TRANSPORT",
Self::NotReady => "NOT_READY",
Self::NotShapeshift => "NOT_SHAPESHIFT",
Self::NotStanding => "NOT_STANDING",
Self::NotTradeable => "NOT_TRADEABLE",
Self::NotTrading => "NOT_TRADING",
Self::NotUnsheathed => "NOT_UNSHEATHED",
Self::NotWhileGhost => "NOT_WHILE_GHOST",
Self::NoAmmo => "NO_AMMO",
Self::NoChargesRemain => "NO_CHARGES_REMAIN",
Self::NoChampion => "NO_CHAMPION",
Self::NoComboPoints => "NO_COMBO_POINTS",
Self::NoDueling => "NO_DUELING",
Self::NoEndurance => "NO_ENDURANCE",
Self::NoFish => "NO_FISH",
Self::NoItemsWhileShapeshifted => "NO_ITEMS_WHILE_SHAPESHIFTED",
Self::NoMountsAllowed => "NO_MOUNTS_ALLOWED",
Self::NoPet => "NO_PET",
Self::NoPower => "NO_POWER",
Self::NothingToDispel => "NOTHING_TO_DISPEL",
Self::NothingToSteal => "NOTHING_TO_STEAL",
Self::OnlyAbovewater => "ONLY_ABOVEWATER",
Self::OnlyDaytime => "ONLY_DAYTIME",
Self::OnlyIndoors => "ONLY_INDOORS",
Self::OnlyMounted => "ONLY_MOUNTED",
Self::OnlyNighttime => "ONLY_NIGHTTIME",
Self::OnlyOutdoors => "ONLY_OUTDOORS",
Self::OnlyShapeshift => "ONLY_SHAPESHIFT",
Self::OnlyStealthed => "ONLY_STEALTHED",
Self::OnlyUnderwater => "ONLY_UNDERWATER",
Self::OutOfRange => "OUT_OF_RANGE",
Self::Pacified => "PACIFIED",
Self::Possessed => "POSSESSED",
Self::RequiresArea => "REQUIRES_AREA",
Self::RequiresSpellFocus => "REQUIRES_SPELL_FOCUS",
Self::Rooted => "ROOTED",
Self::Silenced => "SILENCED",
Self::SpellInProgress => "SPELL_IN_PROGRESS",
Self::SpellLearned => "SPELL_LEARNED",
Self::SpellUnavailable => "SPELL_UNAVAILABLE",
Self::Stunned => "STUNNED",
Self::TargetsDead => "TARGETS_DEAD",
Self::TargetAffectingCombat => "TARGET_AFFECTING_COMBAT",
Self::TargetAurastate => "TARGET_AURASTATE",
Self::TargetDueling => "TARGET_DUELING",
Self::TargetEnemy => "TARGET_ENEMY",
Self::TargetEnraged => "TARGET_ENRAGED",
Self::TargetFriendly => "TARGET_FRIENDLY",
Self::TargetInCombat => "TARGET_IN_COMBAT",
Self::TargetIsPlayer => "TARGET_IS_PLAYER",
Self::TargetNotDead => "TARGET_NOT_DEAD",
Self::TargetNotInParty => "TARGET_NOT_IN_PARTY",
Self::TargetNotLooted => "TARGET_NOT_LOOTED",
Self::TargetNotPlayer => "TARGET_NOT_PLAYER",
Self::TargetNoPockets => "TARGET_NO_POCKETS",
Self::TargetNoWeapons => "TARGET_NO_WEAPONS",
Self::TargetUnskinnable => "TARGET_UNSKINNABLE",
Self::ThirstSatiated => "THIRST_SATIATED",
Self::TooClose => "TOO_CLOSE",
Self::TooManyOfItem => "TOO_MANY_OF_ITEM",
Self::TrainingPoints => "TRAINING_POINTS",
Self::TryAgain => "TRY_AGAIN",
Self::UnitNotBehind => "UNIT_NOT_BEHIND",
Self::UnitNotInfront => "UNIT_NOT_INFRONT",
Self::WrongPetFood => "WRONG_PET_FOOD",
Self::NotWhileFatigued => "NOT_WHILE_FATIGUED",
Self::TargetNotInInstance => "TARGET_NOT_IN_INSTANCE",
Self::NotWhileTrading => "NOT_WHILE_TRADING",
Self::TargetNotInRaid => "TARGET_NOT_IN_RAID",
Self::DisenchantWhileLooting => "DISENCHANT_WHILE_LOOTING",
Self::ProspectWhileLooting => "PROSPECT_WHILE_LOOTING",
Self::TargetFreeforall => "TARGET_FREEFORALL",
Self::NoEdibleCorpses => "NO_EDIBLE_CORPSES",
Self::OnlyBattlegrounds => "ONLY_BATTLEGROUNDS",
Self::TargetNotGhost => "TARGET_NOT_GHOST",
Self::TooManySkills => "TOO_MANY_SKILLS",
Self::CantUseNewItem => "CANT_USE_NEW_ITEM",
Self::WrongWeather => "WRONG_WEATHER",
Self::DamageImmune => "DAMAGE_IMMUNE",
Self::PreventedByMechanic => "PREVENTED_BY_MECHANIC",
Self::PlayTime => "PLAY_TIME",
Self::Reputation => "REPUTATION",
Self::MinSkill => "MIN_SKILL",
Self::Unknown => "UNKNOWN",
}
}
}
const NAME: &str = "SpellCastResult";
impl Default for SpellCastResult {
fn default() -> Self {
Self::AffectingCombat
}
}
impl std::fmt::Display for SpellCastResult {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::AffectingCombat => f.write_str("AffectingCombat"),
Self::AlreadyAtFullHealth => f.write_str("AlreadyAtFullHealth"),
Self::AlreadyAtFullMana => f.write_str("AlreadyAtFullMana"),
Self::AlreadyBeingTamed => f.write_str("AlreadyBeingTamed"),
Self::AlreadyHaveCharm => f.write_str("AlreadyHaveCharm"),
Self::AlreadyHaveSummon => f.write_str("AlreadyHaveSummon"),
Self::AlreadyOpen => f.write_str("AlreadyOpen"),
Self::MorePowerfulSpellActive => f.write_str("MorePowerfulSpellActive"),
Self::BadImplicitTargets => f.write_str("BadImplicitTargets"),
Self::BadTargets => f.write_str("BadTargets"),
Self::CantBeCharmed => f.write_str("CantBeCharmed"),
Self::CantBeDisenchanted => f.write_str("CantBeDisenchanted"),
Self::CantBeProspected => f.write_str("CantBeProspected"),
Self::CantCastOnTapped => f.write_str("CantCastOnTapped"),
Self::CantDuelWhileInvisible => f.write_str("CantDuelWhileInvisible"),
Self::CantDuelWhileStealthed => f.write_str("CantDuelWhileStealthed"),
Self::CantTooCloseToEnemy => f.write_str("CantTooCloseToEnemy"),
Self::CantDoThatYet => f.write_str("CantDoThatYet"),
Self::CasterDead => f.write_str("CasterDead"),
Self::Charmed => f.write_str("Charmed"),
Self::ChestInUse => f.write_str("ChestInUse"),
Self::Confused => f.write_str("Confused"),
Self::DontReport => f.write_str("DontReport"),
Self::EquippedItem => f.write_str("EquippedItem"),
Self::EquippedItemClass => f.write_str("EquippedItemClass"),
Self::EquippedItemClassMainhand => f.write_str("EquippedItemClassMainhand"),
Self::EquippedItemClassOffhand => f.write_str("EquippedItemClassOffhand"),
Self::ErrorX => f.write_str("ErrorX"),
Self::Fizzle => f.write_str("Fizzle"),
Self::Fleeing => f.write_str("Fleeing"),
Self::FoodLowlevel => f.write_str("FoodLowlevel"),
Self::Highlevel => f.write_str("Highlevel"),
Self::Immune => f.write_str("Immune"),
Self::Interrupted => f.write_str("Interrupted"),
Self::InterruptedCombat => f.write_str("InterruptedCombat"),
Self::ItemAlreadyEnchanted => f.write_str("ItemAlreadyEnchanted"),
Self::ItemGone => f.write_str("ItemGone"),
Self::EnchantNotExistingItem => f.write_str("EnchantNotExistingItem"),
Self::ItemNotReady => f.write_str("ItemNotReady"),
Self::LevelRequirement => f.write_str("LevelRequirement"),
Self::LineOfSight => f.write_str("LineOfSight"),
Self::Lowlevel => f.write_str("Lowlevel"),
Self::SkillNotHighEnough => f.write_str("SkillNotHighEnough"),
Self::MainhandEmpty => f.write_str("MainhandEmpty"),
Self::Moving => f.write_str("Moving"),
Self::NeedAmmo => f.write_str("NeedAmmo"),
Self::NeedRequiresSomething => f.write_str("NeedRequiresSomething"),
Self::NeedExoticAmmo => f.write_str("NeedExoticAmmo"),
Self::Nopath => f.write_str("Nopath"),
Self::NotBehind => f.write_str("NotBehind"),
Self::NotFishable => f.write_str("NotFishable"),
Self::NotHere => f.write_str("NotHere"),
Self::NotInfront => f.write_str("NotInfront"),
Self::NotInControl => f.write_str("NotInControl"),
Self::NotKnown => f.write_str("NotKnown"),
Self::NotMounted => f.write_str("NotMounted"),
Self::NotOnTaxi => f.write_str("NotOnTaxi"),
Self::NotOnTransport => f.write_str("NotOnTransport"),
Self::NotReady => f.write_str("NotReady"),
Self::NotShapeshift => f.write_str("NotShapeshift"),
Self::NotStanding => f.write_str("NotStanding"),
Self::NotTradeable => f.write_str("NotTradeable"),
Self::NotTrading => f.write_str("NotTrading"),
Self::NotUnsheathed => f.write_str("NotUnsheathed"),
Self::NotWhileGhost => f.write_str("NotWhileGhost"),
Self::NoAmmo => f.write_str("NoAmmo"),
Self::NoChargesRemain => f.write_str("NoChargesRemain"),
Self::NoChampion => f.write_str("NoChampion"),
Self::NoComboPoints => f.write_str("NoComboPoints"),
Self::NoDueling => f.write_str("NoDueling"),
Self::NoEndurance => f.write_str("NoEndurance"),
Self::NoFish => f.write_str("NoFish"),
Self::NoItemsWhileShapeshifted => f.write_str("NoItemsWhileShapeshifted"),
Self::NoMountsAllowed => f.write_str("NoMountsAllowed"),
Self::NoPet => f.write_str("NoPet"),
Self::NoPower => f.write_str("NoPower"),
Self::NothingToDispel => f.write_str("NothingToDispel"),
Self::NothingToSteal => f.write_str("NothingToSteal"),
Self::OnlyAbovewater => f.write_str("OnlyAbovewater"),
Self::OnlyDaytime => f.write_str("OnlyDaytime"),
Self::OnlyIndoors => f.write_str("OnlyIndoors"),
Self::OnlyMounted => f.write_str("OnlyMounted"),
Self::OnlyNighttime => f.write_str("OnlyNighttime"),
Self::OnlyOutdoors => f.write_str("OnlyOutdoors"),
Self::OnlyShapeshift => f.write_str("OnlyShapeshift"),
Self::OnlyStealthed => f.write_str("OnlyStealthed"),
Self::OnlyUnderwater => f.write_str("OnlyUnderwater"),
Self::OutOfRange => f.write_str("OutOfRange"),
Self::Pacified => f.write_str("Pacified"),
Self::Possessed => f.write_str("Possessed"),
Self::RequiresArea => f.write_str("RequiresArea"),
Self::RequiresSpellFocus => f.write_str("RequiresSpellFocus"),
Self::Rooted => f.write_str("Rooted"),
Self::Silenced => f.write_str("Silenced"),
Self::SpellInProgress => f.write_str("SpellInProgress"),
Self::SpellLearned => f.write_str("SpellLearned"),
Self::SpellUnavailable => f.write_str("SpellUnavailable"),
Self::Stunned => f.write_str("Stunned"),
Self::TargetsDead => f.write_str("TargetsDead"),
Self::TargetAffectingCombat => f.write_str("TargetAffectingCombat"),
Self::TargetAurastate => f.write_str("TargetAurastate"),
Self::TargetDueling => f.write_str("TargetDueling"),
Self::TargetEnemy => f.write_str("TargetEnemy"),
Self::TargetEnraged => f.write_str("TargetEnraged"),
Self::TargetFriendly => f.write_str("TargetFriendly"),
Self::TargetInCombat => f.write_str("TargetInCombat"),
Self::TargetIsPlayer => f.write_str("TargetIsPlayer"),
Self::TargetNotDead => f.write_str("TargetNotDead"),
Self::TargetNotInParty => f.write_str("TargetNotInParty"),
Self::TargetNotLooted => f.write_str("TargetNotLooted"),
Self::TargetNotPlayer => f.write_str("TargetNotPlayer"),
Self::TargetNoPockets => f.write_str("TargetNoPockets"),
Self::TargetNoWeapons => f.write_str("TargetNoWeapons"),
Self::TargetUnskinnable => f.write_str("TargetUnskinnable"),
Self::ThirstSatiated => f.write_str("ThirstSatiated"),
Self::TooClose => f.write_str("TooClose"),
Self::TooManyOfItem => f.write_str("TooManyOfItem"),
Self::TrainingPoints => f.write_str("TrainingPoints"),
Self::TryAgain => f.write_str("TryAgain"),
Self::UnitNotBehind => f.write_str("UnitNotBehind"),
Self::UnitNotInfront => f.write_str("UnitNotInfront"),
Self::WrongPetFood => f.write_str("WrongPetFood"),
Self::NotWhileFatigued => f.write_str("NotWhileFatigued"),
Self::TargetNotInInstance => f.write_str("TargetNotInInstance"),
Self::NotWhileTrading => f.write_str("NotWhileTrading"),
Self::TargetNotInRaid => f.write_str("TargetNotInRaid"),
Self::DisenchantWhileLooting => f.write_str("DisenchantWhileLooting"),
Self::ProspectWhileLooting => f.write_str("ProspectWhileLooting"),
Self::TargetFreeforall => f.write_str("TargetFreeforall"),
Self::NoEdibleCorpses => f.write_str("NoEdibleCorpses"),
Self::OnlyBattlegrounds => f.write_str("OnlyBattlegrounds"),
Self::TargetNotGhost => f.write_str("TargetNotGhost"),
Self::TooManySkills => f.write_str("TooManySkills"),
Self::CantUseNewItem => f.write_str("CantUseNewItem"),
Self::WrongWeather => f.write_str("WrongWeather"),
Self::DamageImmune => f.write_str("DamageImmune"),
Self::PreventedByMechanic => f.write_str("PreventedByMechanic"),
Self::PlayTime => f.write_str("PlayTime"),
Self::Reputation => f.write_str("Reputation"),
Self::MinSkill => f.write_str("MinSkill"),
Self::Unknown => f.write_str("Unknown"),
}
}
}
impl TryFrom<u8> for SpellCastResult {
type Error = crate::errors::EnumError;
fn try_from(value: u8) -> Result<Self, Self::Error> {
Self::from_int(value)
}
}
impl TryFrom<u16> for SpellCastResult {
type Error = crate::errors::EnumError;
fn try_from(value: u16) -> Result<Self, Self::Error> {
TryInto::<u8>::try_into(value)
.map_err(|_| crate::errors::EnumError::new(NAME, value.into()))?
.try_into()
}
}
impl TryFrom<u32> for SpellCastResult {
type Error = crate::errors::EnumError;
fn try_from(value: u32) -> Result<Self, Self::Error> {
TryInto::<u8>::try_into(value)
.map_err(|_| crate::errors::EnumError::new(NAME, value.into()))?
.try_into()
}
}
impl TryFrom<u64> for SpellCastResult {
type Error = crate::errors::EnumError;
fn try_from(value: u64) -> Result<Self, Self::Error> {
TryInto::<u8>::try_into(value)
.map_err(|_| crate::errors::EnumError::new(NAME, value.into()))?
.try_into()
}
}
impl TryFrom<i8> for SpellCastResult {
type Error = crate::errors::EnumError;
fn try_from(value: i8) -> Result<Self, Self::Error> {
let v = u8::from_le_bytes(value.to_le_bytes());
Self::from_int(v)
}
}
impl TryFrom<i16> for SpellCastResult {
type Error = crate::errors::EnumError;
fn try_from(value: i16) -> Result<Self, Self::Error> {
TryInto::<u8>::try_into(value)
.map_err(|_| crate::errors::EnumError::new(NAME, value.into()))?
.try_into()
}
}
impl TryFrom<i32> for SpellCastResult {
type Error = crate::errors::EnumError;
fn try_from(value: i32) -> Result<Self, Self::Error> {
TryInto::<u8>::try_into(value)
.map_err(|_| crate::errors::EnumError::new(NAME, value.into()))?
.try_into()
}
}
impl TryFrom<i64> for SpellCastResult {
type Error = crate::errors::EnumError;
fn try_from(value: i64) -> Result<Self, Self::Error> {
TryInto::<u8>::try_into(value)
.map_err(|_| crate::errors::EnumError::new(NAME, value.into()))?
.try_into()
}
}
impl TryFrom<usize> for SpellCastResult {
type Error = crate::errors::EnumError;
fn try_from(value: usize) -> Result<Self, Self::Error> {
TryInto::<u8>::try_into(value)
.map_err(|_| crate::errors::EnumError::new(NAME, value as i128))?
.try_into()
}
}