718 lines
31 KiB
Rust
718 lines
31 KiB
Rust
|
use std::convert::{TryFrom, Into};
|
||
|
|
||
|
pub enum ShieldTypeError {
|
||
|
UnknownShield(String)
|
||
|
}
|
||
|
|
||
|
#[derive(Debug, Copy, Clone, PartialEq)]
|
||
|
pub enum ShieldType {
|
||
|
Barrier,
|
||
|
Shield,
|
||
|
CoreShield,
|
||
|
GigaShield,
|
||
|
SoulBarrier,
|
||
|
HardShield,
|
||
|
BraveBarrier,
|
||
|
SolidShield,
|
||
|
FlameBarrier,
|
||
|
PlasmaBarrier,
|
||
|
FreezeBarrier,
|
||
|
PsychicBarrier,
|
||
|
GeneralShield,
|
||
|
ProtectBarrier,
|
||
|
GloriousShield,
|
||
|
ImperialBarrier,
|
||
|
GuardianShield,
|
||
|
DivinityBarrier,
|
||
|
UltimateShield,
|
||
|
SpiritualShield,
|
||
|
CelestialShield,
|
||
|
InvisibleGuard,
|
||
|
SacredGuard,
|
||
|
SPartsver116,
|
||
|
SPartsver201,
|
||
|
LightRelief,
|
||
|
ShieldOfDelsaber,
|
||
|
ForceWall,
|
||
|
RangerWall,
|
||
|
HunterWall,
|
||
|
AttributeWall,
|
||
|
SecretGear,
|
||
|
CombatGear,
|
||
|
ProtoRegeneGear,
|
||
|
RegenerateGear,
|
||
|
RegeneGearAdv,
|
||
|
FlowensShield,
|
||
|
CustomBarrierveroo,
|
||
|
DbsShield,
|
||
|
RedRing,
|
||
|
TripolicShield,
|
||
|
StandstillShield,
|
||
|
SafetyHeart,
|
||
|
KasamiBracer,
|
||
|
GodsShieldSuzaku,
|
||
|
GodsShieldGenbu,
|
||
|
GodsShieldByakko,
|
||
|
GodsShieldSeiryu,
|
||
|
HuntersShell,
|
||
|
RicosGlasses,
|
||
|
RicosEarring,
|
||
|
BlueRing,
|
||
|
Barrier2,
|
||
|
SecureFeet,
|
||
|
Barrier3,
|
||
|
Barrier4,
|
||
|
Barrier5,
|
||
|
Barrier6,
|
||
|
RestaMerge,
|
||
|
AntiMerge,
|
||
|
ShiftaMerge,
|
||
|
DebandMerge,
|
||
|
FoieMerge,
|
||
|
GifoieMerge,
|
||
|
RafoieMerge,
|
||
|
RedMerge,
|
||
|
BartaMerge,
|
||
|
GibartaMerge,
|
||
|
RabartaMerge,
|
||
|
BlueMerge,
|
||
|
ZondeMerge,
|
||
|
GizondeMerge,
|
||
|
RazondeMerge,
|
||
|
YellowMerge,
|
||
|
RecoveryBarrier,
|
||
|
AssistBarrier,
|
||
|
RedBarrier,
|
||
|
BlueBarrier,
|
||
|
YellowBarrier,
|
||
|
WeaponsGoldShield,
|
||
|
BlackGear,
|
||
|
WorksGuard,
|
||
|
RagolRing,
|
||
|
BlueRing2,
|
||
|
BlueRing3,
|
||
|
BlueRing4,
|
||
|
BlueRing5,
|
||
|
BlueRing6,
|
||
|
BlueRing7,
|
||
|
BlueRing8,
|
||
|
BlueRing9,
|
||
|
GreenRing,
|
||
|
GreenRing2,
|
||
|
GreenRing3,
|
||
|
GreenRing4,
|
||
|
GreenRing5,
|
||
|
GreenRing6,
|
||
|
GreenRing7,
|
||
|
GreenRing8,
|
||
|
YellowRing,
|
||
|
YellowRing2,
|
||
|
YellowRing3,
|
||
|
YellowRing4,
|
||
|
YellowRing5,
|
||
|
YellowRing6,
|
||
|
YellowRing7,
|
||
|
YellowRing8,
|
||
|
PurpleRing,
|
||
|
PurpleRing2,
|
||
|
PurpleRing3,
|
||
|
PurpleRing4,
|
||
|
PurpleRing5,
|
||
|
PurpleRing6,
|
||
|
PurpleRing7,
|
||
|
PurpleRing8,
|
||
|
WhiteRing,
|
||
|
WhiteRing2,
|
||
|
WhiteRing3,
|
||
|
WhiteRing4,
|
||
|
WhiteRing5,
|
||
|
WhiteRing6,
|
||
|
WhiteRing7,
|
||
|
WhiteRing8,
|
||
|
BlackRing,
|
||
|
BlackRing2,
|
||
|
BlackRing3,
|
||
|
BlackRing4,
|
||
|
BlackRing5,
|
||
|
BlackRing6,
|
||
|
BlackRing7,
|
||
|
BlackRing8,
|
||
|
WeaponsSilverShield,
|
||
|
WeaponsCopperShield,
|
||
|
Gratia,
|
||
|
TripolicReflector,
|
||
|
StrikerPlus,
|
||
|
RegenerateGearBP,
|
||
|
Rupika,
|
||
|
YataMirror,
|
||
|
BunnyEars,
|
||
|
CatEars,
|
||
|
ThreeSeals,
|
||
|
GodsShieldkouryu,
|
||
|
DfShield,
|
||
|
FromTheDepths,
|
||
|
DeRolLeShield,
|
||
|
HoneycombReflector,
|
||
|
Epsiguard,
|
||
|
AngelRing,
|
||
|
UnionGuard,
|
||
|
UnionGuard2,
|
||
|
UnionGuard3,
|
||
|
UnionGuard4,
|
||
|
StinkShield,
|
||
|
Unknownb,
|
||
|
Genpei,
|
||
|
Genpei2,
|
||
|
Genpei3,
|
||
|
Genpei4,
|
||
|
Genpei5,
|
||
|
Genpei6,
|
||
|
Genpei7,
|
||
|
Genpei8,
|
||
|
Genpei9,
|
||
|
Genpei10,
|
||
|
}
|
||
|
|
||
|
impl ShieldType {
|
||
|
pub fn value(&self) -> [u8; 3] {
|
||
|
match self {
|
||
|
ShieldType::Barrier => [0x01, 0x02, 0x00],
|
||
|
ShieldType::Shield => [0x01, 0x02, 0x01],
|
||
|
ShieldType::CoreShield => [0x01, 0x02, 0x02],
|
||
|
ShieldType::GigaShield => [0x01, 0x02, 0x03],
|
||
|
ShieldType::SoulBarrier => [0x01, 0x02, 0x04],
|
||
|
ShieldType::HardShield => [0x01, 0x02, 0x05],
|
||
|
ShieldType::BraveBarrier => [0x01, 0x02, 0x06],
|
||
|
ShieldType::SolidShield => [0x01, 0x02, 0x07],
|
||
|
ShieldType::FlameBarrier => [0x01, 0x02, 0x08],
|
||
|
ShieldType::PlasmaBarrier => [0x01, 0x02, 0x09],
|
||
|
ShieldType::FreezeBarrier => [0x01, 0x02, 0x0A],
|
||
|
ShieldType::PsychicBarrier => [0x01, 0x02, 0x0B],
|
||
|
ShieldType::GeneralShield => [0x01, 0x02, 0x0C],
|
||
|
ShieldType::ProtectBarrier => [0x01, 0x02, 0x0D],
|
||
|
ShieldType::GloriousShield => [0x01, 0x02, 0x0E],
|
||
|
ShieldType::ImperialBarrier => [0x01, 0x02, 0x0F],
|
||
|
ShieldType::GuardianShield => [0x01, 0x02, 0x10],
|
||
|
ShieldType::DivinityBarrier => [0x01, 0x02, 0x11],
|
||
|
ShieldType::UltimateShield => [0x01, 0x02, 0x12],
|
||
|
ShieldType::SpiritualShield => [0x01, 0x02, 0x13],
|
||
|
ShieldType::CelestialShield => [0x01, 0x02, 0x14],
|
||
|
ShieldType::InvisibleGuard => [0x01, 0x02, 0x15],
|
||
|
ShieldType::SacredGuard => [0x01, 0x02, 0x16],
|
||
|
ShieldType::SPartsver116 => [0x01, 0x02, 0x17],
|
||
|
ShieldType::SPartsver201 => [0x01, 0x02, 0x18],
|
||
|
ShieldType::LightRelief => [0x01, 0x02, 0x19],
|
||
|
ShieldType::ShieldOfDelsaber => [0x01, 0x02, 0x1A],
|
||
|
ShieldType::ForceWall => [0x01, 0x02, 0x1B],
|
||
|
ShieldType::RangerWall => [0x01, 0x02, 0x1C],
|
||
|
ShieldType::HunterWall => [0x01, 0x02, 0x1D],
|
||
|
ShieldType::AttributeWall => [0x01, 0x02, 0x1E],
|
||
|
ShieldType::SecretGear => [0x01, 0x02, 0x1F],
|
||
|
ShieldType::CombatGear => [0x01, 0x02, 0x20],
|
||
|
ShieldType::ProtoRegeneGear => [0x01, 0x02, 0x21],
|
||
|
ShieldType::RegenerateGear => [0x01, 0x02, 0x22],
|
||
|
ShieldType::RegeneGearAdv => [0x01, 0x02, 0x23],
|
||
|
ShieldType::FlowensShield => [0x01, 0x02, 0x24],
|
||
|
ShieldType::CustomBarrierveroo => [0x01, 0x02, 0x25],
|
||
|
ShieldType::DbsShield => [0x01, 0x02, 0x26],
|
||
|
ShieldType::RedRing => [0x01, 0x02, 0x27],
|
||
|
ShieldType::TripolicShield => [0x01, 0x02, 0x28],
|
||
|
ShieldType::StandstillShield => [0x01, 0x02, 0x29],
|
||
|
ShieldType::SafetyHeart => [0x01, 0x02, 0x2A],
|
||
|
ShieldType::KasamiBracer => [0x01, 0x02, 0x2B],
|
||
|
ShieldType::GodsShieldSuzaku => [0x01, 0x02, 0x2C],
|
||
|
ShieldType::GodsShieldGenbu => [0x01, 0x02, 0x2D],
|
||
|
ShieldType::GodsShieldByakko => [0x01, 0x02, 0x2E],
|
||
|
ShieldType::GodsShieldSeiryu => [0x01, 0x02, 0x2F],
|
||
|
ShieldType::HuntersShell => [0x01, 0x02, 0x30],
|
||
|
ShieldType::RicosGlasses => [0x01, 0x02, 0x31],
|
||
|
ShieldType::RicosEarring => [0x01, 0x02, 0x32],
|
||
|
ShieldType::BlueRing => [0x01, 0x02, 0x33],
|
||
|
ShieldType::Barrier2 => [0x01, 0x02, 0x34],
|
||
|
ShieldType::SecureFeet => [0x01, 0x02, 0x35],
|
||
|
ShieldType::Barrier3 => [0x01, 0x02, 0x36],
|
||
|
ShieldType::Barrier4 => [0x01, 0x02, 0x37],
|
||
|
ShieldType::Barrier5 => [0x01, 0x02, 0x38],
|
||
|
ShieldType::Barrier6 => [0x01, 0x02, 0x39],
|
||
|
ShieldType::RestaMerge => [0x01, 0x02, 0x3A],
|
||
|
ShieldType::AntiMerge => [0x01, 0x02, 0x3B],
|
||
|
ShieldType::ShiftaMerge => [0x01, 0x02, 0x3C],
|
||
|
ShieldType::DebandMerge => [0x01, 0x02, 0x3D],
|
||
|
ShieldType::FoieMerge => [0x01, 0x02, 0x3E],
|
||
|
ShieldType::GifoieMerge => [0x01, 0x02, 0x3F],
|
||
|
ShieldType::RafoieMerge => [0x01, 0x02, 0x40],
|
||
|
ShieldType::RedMerge => [0x01, 0x02, 0x41],
|
||
|
ShieldType::BartaMerge => [0x01, 0x02, 0x42],
|
||
|
ShieldType::GibartaMerge => [0x01, 0x02, 0x43],
|
||
|
ShieldType::RabartaMerge => [0x01, 0x02, 0x44],
|
||
|
ShieldType::BlueMerge => [0x01, 0x02, 0x45],
|
||
|
ShieldType::ZondeMerge => [0x01, 0x02, 0x46],
|
||
|
ShieldType::GizondeMerge => [0x01, 0x02, 0x47],
|
||
|
ShieldType::RazondeMerge => [0x01, 0x02, 0x48],
|
||
|
ShieldType::YellowMerge => [0x01, 0x02, 0x49],
|
||
|
ShieldType::RecoveryBarrier => [0x01, 0x02, 0x4A],
|
||
|
ShieldType::AssistBarrier => [0x01, 0x02, 0x4B],
|
||
|
ShieldType::RedBarrier => [0x01, 0x02, 0x4C],
|
||
|
ShieldType::BlueBarrier => [0x01, 0x02, 0x4D],
|
||
|
ShieldType::YellowBarrier => [0x01, 0x02, 0x4E],
|
||
|
ShieldType::WeaponsGoldShield => [0x01, 0x02, 0x4F],
|
||
|
ShieldType::BlackGear => [0x01, 0x02, 0x50],
|
||
|
ShieldType::WorksGuard => [0x01, 0x02, 0x51],
|
||
|
ShieldType::RagolRing => [0x01, 0x02, 0x52],
|
||
|
ShieldType::BlueRing2 => [0x01, 0x02, 0x53],
|
||
|
ShieldType::BlueRing3 => [0x01, 0x02, 0x54],
|
||
|
ShieldType::BlueRing4 => [0x01, 0x02, 0x55],
|
||
|
ShieldType::BlueRing5 => [0x01, 0x02, 0x56],
|
||
|
ShieldType::BlueRing6 => [0x01, 0x02, 0x57],
|
||
|
ShieldType::BlueRing7 => [0x01, 0x02, 0x58],
|
||
|
ShieldType::BlueRing8 => [0x01, 0x02, 0x59],
|
||
|
ShieldType::BlueRing9 => [0x01, 0x02, 0x5A],
|
||
|
ShieldType::GreenRing => [0x01, 0x02, 0x5B],
|
||
|
ShieldType::GreenRing2 => [0x01, 0x02, 0x5C],
|
||
|
ShieldType::GreenRing3 => [0x01, 0x02, 0x5D],
|
||
|
ShieldType::GreenRing4 => [0x01, 0x02, 0x5E],
|
||
|
ShieldType::GreenRing5 => [0x01, 0x02, 0x5F],
|
||
|
ShieldType::GreenRing6 => [0x01, 0x02, 0x60],
|
||
|
ShieldType::GreenRing7 => [0x01, 0x02, 0x61],
|
||
|
ShieldType::GreenRing8 => [0x01, 0x02, 0x62],
|
||
|
ShieldType::YellowRing => [0x01, 0x02, 0x63],
|
||
|
ShieldType::YellowRing2 => [0x01, 0x02, 0x64],
|
||
|
ShieldType::YellowRing3 => [0x01, 0x02, 0x65],
|
||
|
ShieldType::YellowRing4 => [0x01, 0x02, 0x66],
|
||
|
ShieldType::YellowRing5=> [0x01, 0x02, 0x67],
|
||
|
ShieldType::YellowRing6 => [0x01, 0x02, 0x68],
|
||
|
ShieldType::YellowRing7 => [0x01, 0x02, 0x69],
|
||
|
ShieldType::YellowRing8 => [0x01, 0x02, 0x6A],
|
||
|
ShieldType::PurpleRing => [0x01, 0x02, 0x6B],
|
||
|
ShieldType::PurpleRing2 => [0x01, 0x02, 0x6C],
|
||
|
ShieldType::PurpleRing3 => [0x01, 0x02, 0x6D],
|
||
|
ShieldType::PurpleRing4 => [0x01, 0x02, 0x6E],
|
||
|
ShieldType::PurpleRing5=> [0x01, 0x02, 0x6F],
|
||
|
ShieldType::PurpleRing6 => [0x01, 0x02, 0x70],
|
||
|
ShieldType::PurpleRing7 => [0x01, 0x02, 0x71],
|
||
|
ShieldType::PurpleRing8 => [0x01, 0x02, 0x72],
|
||
|
ShieldType::WhiteRing => [0x01, 0x02, 0x73],
|
||
|
ShieldType::WhiteRing2 => [0x01, 0x02, 0x74],
|
||
|
ShieldType::WhiteRing3 => [0x01, 0x02, 0x75],
|
||
|
ShieldType::WhiteRing4 => [0x01, 0x02, 0x76],
|
||
|
ShieldType::WhiteRing5 => [0x01, 0x02, 0x77],
|
||
|
ShieldType::WhiteRing6=> [0x01, 0x02, 0x78],
|
||
|
ShieldType::WhiteRing7 => [0x01, 0x02, 0x79],
|
||
|
ShieldType::WhiteRing8 => [0x01, 0x02, 0x7A],
|
||
|
ShieldType::BlackRing => [0x01, 0x02, 0x7B],
|
||
|
ShieldType::BlackRing2 => [0x01, 0x02, 0x7C],
|
||
|
ShieldType::BlackRing3 => [0x01, 0x02, 0x7D],
|
||
|
ShieldType::BlackRing4 => [0x01, 0x02, 0x7E],
|
||
|
ShieldType::BlackRing5 => [0x01, 0x02, 0x7F],
|
||
|
ShieldType::BlackRing6 => [0x01, 0x02, 0x80],
|
||
|
ShieldType::BlackRing7 => [0x01, 0x02, 0x81],
|
||
|
ShieldType::BlackRing8 => [0x01, 0x02, 0x82],
|
||
|
ShieldType::WeaponsSilverShield => [0x01, 0x02, 0x83],
|
||
|
ShieldType::WeaponsCopperShield => [0x01, 0x02, 0x84],
|
||
|
ShieldType::Gratia => [0x01, 0x02, 0x85],
|
||
|
ShieldType::TripolicReflector => [0x01, 0x02, 0x86],
|
||
|
ShieldType::StrikerPlus => [0x01, 0x02, 0x87],
|
||
|
ShieldType::RegenerateGearBP => [0x01, 0x02, 0x88],
|
||
|
ShieldType::Rupika => [0x01, 0x02, 0x89],
|
||
|
ShieldType::YataMirror => [0x01, 0x02, 0x8A],
|
||
|
ShieldType::BunnyEars => [0x01, 0x02, 0x8B],
|
||
|
ShieldType::CatEars => [0x01, 0x02, 0x8C],
|
||
|
ShieldType::ThreeSeals => [0x01, 0x02, 0x8D],
|
||
|
ShieldType::GodsShieldkouryu => [0x01, 0x02, 0x8E],
|
||
|
ShieldType::DfShield => [0x01, 0x02, 0x8F],
|
||
|
ShieldType::FromTheDepths => [0x01, 0x02, 0x90],
|
||
|
ShieldType::DeRolLeShield => [0x01, 0x02, 0x91],
|
||
|
ShieldType::HoneycombReflector => [0x01, 0x02, 0x92],
|
||
|
ShieldType::Epsiguard => [0x01, 0x02, 0x93],
|
||
|
ShieldType::AngelRing => [0x01, 0x02, 0x94],
|
||
|
ShieldType::UnionGuard => [0x01, 0x02, 0x95],
|
||
|
ShieldType::UnionGuard2 => [0x01, 0x02, 0x96],
|
||
|
ShieldType::UnionGuard3 => [0x01, 0x02, 0x97],
|
||
|
ShieldType::UnionGuard4 => [0x01, 0x02, 0x98],
|
||
|
ShieldType::StinkShield => [0x01, 0x02, 0x99],
|
||
|
ShieldType::Unknownb => [0x01, 0x02, 0x9A],
|
||
|
ShieldType::Genpei => [0x01, 0x02, 0x9B],
|
||
|
ShieldType::Genpei2 => [0x01, 0x02, 0x9C],
|
||
|
ShieldType::Genpei3 => [0x01, 0x02, 0x9D],
|
||
|
ShieldType::Genpei4 => [0x01, 0x02, 0x9E],
|
||
|
ShieldType::Genpei5 => [0x01, 0x02, 0x9F],
|
||
|
ShieldType::Genpei6 => [0x01, 0x02, 0xA0],
|
||
|
ShieldType::Genpei7 => [0x01, 0x02, 0xA1],
|
||
|
ShieldType::Genpei8 => [0x01, 0x02, 0xA2],
|
||
|
ShieldType::Genpei9 => [0x01, 0x02, 0xA3],
|
||
|
ShieldType::Genpei10 => [0x01, 0x02, 0xA4],
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
impl TryFrom<&str> for ShieldType {
|
||
|
type Error = ShieldTypeError;
|
||
|
fn try_from(value: &str) -> Result<ShieldType, ShieldTypeError> {
|
||
|
match value {
|
||
|
"Barrier" => Ok(ShieldType::Barrier),
|
||
|
"Shield" => Ok(ShieldType::Shield),
|
||
|
"CoreShield" => Ok(ShieldType::CoreShield),
|
||
|
"GigaShield" => Ok(ShieldType::GigaShield),
|
||
|
"SoulBarrier" => Ok(ShieldType::SoulBarrier),
|
||
|
"HardShield" => Ok(ShieldType::HardShield),
|
||
|
"BraveBarrier" => Ok(ShieldType::BraveBarrier),
|
||
|
"SolidShield" => Ok(ShieldType::SolidShield),
|
||
|
"FlameBarrier" => Ok(ShieldType::FlameBarrier),
|
||
|
"PlasmaBarrier" => Ok(ShieldType::PlasmaBarrier),
|
||
|
"FreezeBarrier" => Ok(ShieldType::FreezeBarrier),
|
||
|
"PsychicBarrier" => Ok(ShieldType::PsychicBarrier),
|
||
|
"GeneralShield" => Ok(ShieldType::GeneralShield),
|
||
|
"ProtectBarrier" => Ok(ShieldType::ProtectBarrier),
|
||
|
"GloriousShield" => Ok(ShieldType::GloriousShield),
|
||
|
"ImperialBarrier" => Ok(ShieldType::ImperialBarrier),
|
||
|
"GuardianShield" => Ok(ShieldType::GuardianShield),
|
||
|
"DivinityBarrier" => Ok(ShieldType::DivinityBarrier),
|
||
|
"UltimateShield" => Ok(ShieldType::UltimateShield),
|
||
|
"SpiritualShield" => Ok(ShieldType::SpiritualShield),
|
||
|
"CelestialShield" => Ok(ShieldType::CelestialShield),
|
||
|
"InvisibleGuard" => Ok(ShieldType::InvisibleGuard),
|
||
|
"SacredGuard" => Ok(ShieldType::SacredGuard),
|
||
|
"SPartsver116" => Ok(ShieldType::SPartsver116),
|
||
|
"SPartsver201" => Ok(ShieldType::SPartsver201),
|
||
|
"LightRelief" => Ok(ShieldType::LightRelief),
|
||
|
"ShieldOfDelsaber" => Ok(ShieldType::ShieldOfDelsaber),
|
||
|
"ForceWall" => Ok(ShieldType::ForceWall),
|
||
|
"RangerWall" => Ok(ShieldType::RangerWall),
|
||
|
"HunterWall" => Ok(ShieldType::HunterWall),
|
||
|
"AttributeWall" => Ok(ShieldType::AttributeWall),
|
||
|
"SecretGear" => Ok(ShieldType::SecretGear),
|
||
|
"CombatGear" => Ok(ShieldType::CombatGear),
|
||
|
"ProtoRegeneGear" => Ok(ShieldType::ProtoRegeneGear),
|
||
|
"RegenerateGear" => Ok(ShieldType::RegenerateGear),
|
||
|
"RegeneGearAdv" => Ok(ShieldType::RegeneGearAdv),
|
||
|
"FlowensShield" => Ok(ShieldType::FlowensShield),
|
||
|
"CustomBarrierveroo" => Ok(ShieldType::CustomBarrierveroo),
|
||
|
"DbsShield" => Ok(ShieldType::DbsShield),
|
||
|
"RedRing" => Ok(ShieldType::RedRing),
|
||
|
"TripolicShield" => Ok(ShieldType::TripolicShield),
|
||
|
"StandstillShield" => Ok(ShieldType::StandstillShield),
|
||
|
"SafetyHeart" => Ok(ShieldType::SafetyHeart),
|
||
|
"KasamiBracer" => Ok(ShieldType::KasamiBracer),
|
||
|
"GodsShieldSuzaku" => Ok(ShieldType::GodsShieldSuzaku),
|
||
|
"GodsShieldGenbu" => Ok(ShieldType::GodsShieldGenbu),
|
||
|
"GodsShieldByakko" => Ok(ShieldType::GodsShieldByakko),
|
||
|
"GodsShieldSeiryu" => Ok(ShieldType::GodsShieldSeiryu),
|
||
|
"HuntersShell" => Ok(ShieldType::HuntersShell),
|
||
|
"RicosGlasses" => Ok(ShieldType::RicosGlasses),
|
||
|
"RicosEarring" => Ok(ShieldType::RicosEarring),
|
||
|
"BlueRing" => Ok(ShieldType::BlueRing),
|
||
|
"Barrier2" => Ok(ShieldType::Barrier2),
|
||
|
"SecureFeet" => Ok(ShieldType::SecureFeet),
|
||
|
"Barrier3" => Ok(ShieldType::Barrier3),
|
||
|
"Barrier4" => Ok(ShieldType::Barrier4),
|
||
|
"Barrier5" => Ok(ShieldType::Barrier5),
|
||
|
"Barrier6" => Ok(ShieldType::Barrier6),
|
||
|
"RestaMerge" => Ok(ShieldType::RestaMerge),
|
||
|
"AntiMerge" => Ok(ShieldType::AntiMerge),
|
||
|
"ShiftaMerge" => Ok(ShieldType::ShiftaMerge),
|
||
|
"DebandMerge" => Ok(ShieldType::DebandMerge),
|
||
|
"FoieMerge" => Ok(ShieldType::FoieMerge),
|
||
|
"GifoieMerge" => Ok(ShieldType::GifoieMerge),
|
||
|
"RafoieMerge" => Ok(ShieldType::RafoieMerge),
|
||
|
"RedMerge" => Ok(ShieldType::RedMerge),
|
||
|
"BartaMerge" => Ok(ShieldType::BartaMerge),
|
||
|
"GibartaMerge" => Ok(ShieldType::GibartaMerge),
|
||
|
"RabartaMerge" => Ok(ShieldType::RabartaMerge),
|
||
|
"BlueMerge" => Ok(ShieldType::BlueMerge),
|
||
|
"ZondeMerge" => Ok(ShieldType::ZondeMerge),
|
||
|
"GizondeMerge" => Ok(ShieldType::GizondeMerge),
|
||
|
"RazondeMerge" => Ok(ShieldType::RazondeMerge),
|
||
|
"YellowMerge" => Ok(ShieldType::YellowMerge),
|
||
|
"RecoveryBarrier" => Ok(ShieldType::RecoveryBarrier),
|
||
|
"AssistBarrier" => Ok(ShieldType::AssistBarrier),
|
||
|
"RedBarrier" => Ok(ShieldType::RedBarrier),
|
||
|
"BlueBarrier" => Ok(ShieldType::BlueBarrier),
|
||
|
"YellowBarrier" => Ok(ShieldType::YellowBarrier),
|
||
|
"WeaponsGoldShield" => Ok(ShieldType::WeaponsGoldShield),
|
||
|
"BlackGear" => Ok(ShieldType::BlackGear),
|
||
|
"WorksGuard" => Ok(ShieldType::WorksGuard),
|
||
|
"RagolRing" => Ok(ShieldType::RagolRing),
|
||
|
"BlueRing2" => Ok(ShieldType::BlueRing2),
|
||
|
"BlueRing3" => Ok(ShieldType::BlueRing3),
|
||
|
"BlueRing4" => Ok(ShieldType::BlueRing4),
|
||
|
"BlueRing5" => Ok(ShieldType::BlueRing5),
|
||
|
"BlueRing6" => Ok(ShieldType::BlueRing6),
|
||
|
"BlueRing7" => Ok(ShieldType::BlueRing7),
|
||
|
"BlueRing8" => Ok(ShieldType::BlueRing8),
|
||
|
"BlueRing9" => Ok(ShieldType::BlueRing9),
|
||
|
"GreenRing" => Ok(ShieldType::GreenRing),
|
||
|
"GreenRing2" => Ok(ShieldType::GreenRing2),
|
||
|
"GreenRing3" => Ok(ShieldType::GreenRing3),
|
||
|
"GreenRing4" => Ok(ShieldType::GreenRing4),
|
||
|
"GreenRing5" => Ok(ShieldType::GreenRing5),
|
||
|
"GreenRing6" => Ok(ShieldType::GreenRing6),
|
||
|
"GreenRing7" => Ok(ShieldType::GreenRing7),
|
||
|
"GreenRing8" => Ok(ShieldType::GreenRing8),
|
||
|
"YellowRing" => Ok(ShieldType::YellowRing),
|
||
|
"YellowRing2" => Ok(ShieldType::YellowRing2),
|
||
|
"YellowRing3" => Ok(ShieldType::YellowRing3),
|
||
|
"YellowRing4" => Ok(ShieldType::YellowRing4),
|
||
|
"YellowRing5" => Ok(ShieldType::YellowRing5),
|
||
|
"YellowRing6" => Ok(ShieldType::YellowRing6),
|
||
|
"YellowRing7" => Ok(ShieldType::YellowRing7),
|
||
|
"YellowRing8" => Ok(ShieldType::YellowRing8),
|
||
|
"PurpleRing" => Ok(ShieldType::PurpleRing),
|
||
|
"PurpleRing2" => Ok(ShieldType::PurpleRing2),
|
||
|
"PurpleRing3" => Ok(ShieldType::PurpleRing3),
|
||
|
"PurpleRing4" => Ok(ShieldType::PurpleRing4),
|
||
|
"PurpleRing5" => Ok(ShieldType::PurpleRing5),
|
||
|
"PurpleRing6" => Ok(ShieldType::PurpleRing6),
|
||
|
"PurpleRing7" => Ok(ShieldType::PurpleRing7),
|
||
|
"PurpleRing8" => Ok(ShieldType::PurpleRing8),
|
||
|
"WhiteRing" => Ok(ShieldType::WhiteRing),
|
||
|
"WhiteRing2" => Ok(ShieldType::WhiteRing2),
|
||
|
"WhiteRing3" => Ok(ShieldType::WhiteRing3),
|
||
|
"WhiteRing4" => Ok(ShieldType::WhiteRing4),
|
||
|
"WhiteRing5" => Ok(ShieldType::WhiteRing5),
|
||
|
"WhiteRing6" => Ok(ShieldType::WhiteRing6),
|
||
|
"WhiteRing7" => Ok(ShieldType::WhiteRing7),
|
||
|
"WhiteRing8" => Ok(ShieldType::WhiteRing8),
|
||
|
"BlackRing" => Ok(ShieldType::BlackRing),
|
||
|
"BlackRing2" => Ok(ShieldType::BlackRing2),
|
||
|
"BlackRing3" => Ok(ShieldType::BlackRing3),
|
||
|
"BlackRing4" => Ok(ShieldType::BlackRing4),
|
||
|
"BlackRing5" => Ok(ShieldType::BlackRing5),
|
||
|
"BlackRing6" => Ok(ShieldType::BlackRing6),
|
||
|
"BlackRing7" => Ok(ShieldType::BlackRing7),
|
||
|
"BlackRing8" => Ok(ShieldType::BlackRing8),
|
||
|
"WeaponsSilverShield" => Ok(ShieldType::WeaponsSilverShield),
|
||
|
"WeaponsCopperShield" => Ok(ShieldType::WeaponsCopperShield),
|
||
|
"Gratia" => Ok(ShieldType::Gratia),
|
||
|
"TripolicReflector" => Ok(ShieldType::TripolicReflector),
|
||
|
"StrikerPlus" => Ok(ShieldType::StrikerPlus),
|
||
|
"RegenerateGearBP" => Ok(ShieldType::RegenerateGearBP),
|
||
|
"Rupika" => Ok(ShieldType::Rupika),
|
||
|
"YataMirror" => Ok(ShieldType::YataMirror),
|
||
|
"BunnyEars" => Ok(ShieldType::BunnyEars),
|
||
|
"CatEars" => Ok(ShieldType::CatEars),
|
||
|
"ThreeSeals" => Ok(ShieldType::ThreeSeals),
|
||
|
"GodsShieldkouryu" => Ok(ShieldType::GodsShieldkouryu),
|
||
|
"DfShield" => Ok(ShieldType::DfShield),
|
||
|
"FromTheDepths" => Ok(ShieldType::FromTheDepths),
|
||
|
"DeRolLeShield" => Ok(ShieldType::DeRolLeShield),
|
||
|
"HoneycombReflector" => Ok(ShieldType::HoneycombReflector),
|
||
|
"Epsiguard" => Ok(ShieldType::Epsiguard),
|
||
|
"AngelRing" => Ok(ShieldType::AngelRing),
|
||
|
"UnionGuard" => Ok(ShieldType::UnionGuard),
|
||
|
"UnionGuard2" => Ok(ShieldType::UnionGuard2),
|
||
|
"UnionGuard3" => Ok(ShieldType::UnionGuard3),
|
||
|
"UnionGuard4" => Ok(ShieldType::UnionGuard4),
|
||
|
"StinkShield" => Ok(ShieldType::StinkShield),
|
||
|
"Unknownb" => Ok(ShieldType::Unknownb),
|
||
|
"Genpei" => Ok(ShieldType::Genpei),
|
||
|
"Genpei2" => Ok(ShieldType::Genpei2),
|
||
|
"Genpei3" => Ok(ShieldType::Genpei3),
|
||
|
"Genpei4" => Ok(ShieldType::Genpei4),
|
||
|
"Genpei5" => Ok(ShieldType::Genpei5),
|
||
|
"Genpei6" => Ok(ShieldType::Genpei6),
|
||
|
"Genpei7" => Ok(ShieldType::Genpei7),
|
||
|
"Genpei8" => Ok(ShieldType::Genpei8),
|
||
|
"Genpei9" => Ok(ShieldType::Genpei9),
|
||
|
"Genpei10" => Ok(ShieldType::Genpei10),
|
||
|
_ => Err(ShieldTypeError::UnknownShield(value.to_string()))
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
impl Into<String> for ShieldType {
|
||
|
fn into(self) -> String {
|
||
|
match self {
|
||
|
ShieldType::Barrier => "Barrier",
|
||
|
ShieldType::Shield => "Shield",
|
||
|
ShieldType::CoreShield => "CoreShield",
|
||
|
ShieldType::GigaShield => "GigaShield",
|
||
|
ShieldType::SoulBarrier => "SoulBarrier",
|
||
|
ShieldType::HardShield => "HardShield",
|
||
|
ShieldType::BraveBarrier => "BraveBarrier",
|
||
|
ShieldType::SolidShield => "SolidShield",
|
||
|
ShieldType::FlameBarrier => "FlameBarrier",
|
||
|
ShieldType::PlasmaBarrier => "PlasmaBarrier",
|
||
|
ShieldType::FreezeBarrier => "FreezeBarrier",
|
||
|
ShieldType::PsychicBarrier => "PsychicBarrier",
|
||
|
ShieldType::GeneralShield => "GeneralShield",
|
||
|
ShieldType::ProtectBarrier => "ProtectBarrier",
|
||
|
ShieldType::GloriousShield => "GloriousShield",
|
||
|
ShieldType::ImperialBarrier => "ImperialBarrier",
|
||
|
ShieldType::GuardianShield => "GuardianShield",
|
||
|
ShieldType::DivinityBarrier => "DivinityBarrier",
|
||
|
ShieldType::UltimateShield => "UltimateShield",
|
||
|
ShieldType::SpiritualShield => "SpiritualShield",
|
||
|
ShieldType::CelestialShield => "CelestialShield",
|
||
|
ShieldType::InvisibleGuard => "InvisibleGuard",
|
||
|
ShieldType::SacredGuard => "SacredGuard",
|
||
|
ShieldType::SPartsver116 => "SPartsver116",
|
||
|
ShieldType::SPartsver201 => "SPartsver201",
|
||
|
ShieldType::LightRelief => "LightRelief",
|
||
|
ShieldType::ShieldOfDelsaber => "ShieldOfDelsaber",
|
||
|
ShieldType::ForceWall => "ForceWall",
|
||
|
ShieldType::RangerWall => "RangerWall",
|
||
|
ShieldType::HunterWall => "HunterWall",
|
||
|
ShieldType::AttributeWall => "AttributeWall",
|
||
|
ShieldType::SecretGear => "SecretGear",
|
||
|
ShieldType::CombatGear => "CombatGear",
|
||
|
ShieldType::ProtoRegeneGear => "ProtoRegeneGear",
|
||
|
ShieldType::RegenerateGear => "RegenerateGear",
|
||
|
ShieldType::RegeneGearAdv => "RegeneGearAdv",
|
||
|
ShieldType::FlowensShield => "FlowensShield",
|
||
|
ShieldType::CustomBarrierveroo => "CustomBarrierveroo",
|
||
|
ShieldType::DbsShield => "DbsShield",
|
||
|
ShieldType::RedRing => "RedRing",
|
||
|
ShieldType::TripolicShield => "TripolicShield",
|
||
|
ShieldType::StandstillShield => "StandstillShield",
|
||
|
ShieldType::SafetyHeart => "SafetyHeart",
|
||
|
ShieldType::KasamiBracer => "KasamiBracer",
|
||
|
ShieldType::GodsShieldSuzaku => "GodsShieldSuzaku",
|
||
|
ShieldType::GodsShieldGenbu => "GodsShieldGenbu",
|
||
|
ShieldType::GodsShieldByakko => "GodsShieldByakko",
|
||
|
ShieldType::GodsShieldSeiryu => "GodsShieldSeiryu",
|
||
|
ShieldType::HuntersShell => "HuntersShell",
|
||
|
ShieldType::RicosGlasses => "RicosGlasses",
|
||
|
ShieldType::RicosEarring => "RicosEarring",
|
||
|
ShieldType::BlueRing => "BlueRing",
|
||
|
ShieldType::Barrier2 => "Barrier2",
|
||
|
ShieldType::SecureFeet => "SecureFeet",
|
||
|
ShieldType::Barrier3 => "Barrier3",
|
||
|
ShieldType::Barrier4 => "Barrier4",
|
||
|
ShieldType::Barrier5 => "Barrier5",
|
||
|
ShieldType::Barrier6 => "Barrier6",
|
||
|
ShieldType::RestaMerge => "RestaMerge",
|
||
|
ShieldType::AntiMerge => "AntiMerge",
|
||
|
ShieldType::ShiftaMerge => "ShiftaMerge",
|
||
|
ShieldType::DebandMerge => "DebandMerge",
|
||
|
ShieldType::FoieMerge => "FoieMerge",
|
||
|
ShieldType::GifoieMerge => "GifoieMerge",
|
||
|
ShieldType::RafoieMerge => "RafoieMerge",
|
||
|
ShieldType::RedMerge => "RedMerge",
|
||
|
ShieldType::BartaMerge => "BartaMerge",
|
||
|
ShieldType::GibartaMerge => "GibartaMerge",
|
||
|
ShieldType::RabartaMerge => "RabartaMerge",
|
||
|
ShieldType::BlueMerge => "BlueMerge",
|
||
|
ShieldType::ZondeMerge => "ZondeMerge",
|
||
|
ShieldType::GizondeMerge => "GizondeMerge",
|
||
|
ShieldType::RazondeMerge => "RazondeMerge",
|
||
|
ShieldType::YellowMerge => "YellowMerge",
|
||
|
ShieldType::RecoveryBarrier => "RecoveryBarrier",
|
||
|
ShieldType::AssistBarrier => "AssistBarrier",
|
||
|
ShieldType::RedBarrier => "RedBarrier",
|
||
|
ShieldType::BlueBarrier => "BlueBarrier",
|
||
|
ShieldType::YellowBarrier => "YellowBarrier",
|
||
|
ShieldType::WeaponsGoldShield => "WeaponsGoldShield",
|
||
|
ShieldType::BlackGear => "BlackGear",
|
||
|
ShieldType::WorksGuard => "WorksGuard",
|
||
|
ShieldType::RagolRing => "RagolRing",
|
||
|
ShieldType::BlueRing2 => "BlueRing2",
|
||
|
ShieldType::BlueRing3 => "BlueRing3",
|
||
|
ShieldType::BlueRing4 => "BlueRing4",
|
||
|
ShieldType::BlueRing5 => "BlueRing5",
|
||
|
ShieldType::BlueRing6 => "BlueRing6",
|
||
|
ShieldType::BlueRing7 => "BlueRing7",
|
||
|
ShieldType::BlueRing8 => "BlueRing8",
|
||
|
ShieldType::BlueRing9 => "BlueRing9",
|
||
|
ShieldType::GreenRing => "GreenRing",
|
||
|
ShieldType::GreenRing2 => "GreenRing2",
|
||
|
ShieldType::GreenRing3 => "GreenRing3",
|
||
|
ShieldType::GreenRing4 => "GreenRing4",
|
||
|
ShieldType::GreenRing5 => "GreenRing5",
|
||
|
ShieldType::GreenRing6 => "GreenRing6",
|
||
|
ShieldType::GreenRing7 => "GreenRing7",
|
||
|
ShieldType::GreenRing8 => "GreenRing8",
|
||
|
ShieldType::YellowRing => "YellowRing",
|
||
|
ShieldType::YellowRing2 => "YellowRing2",
|
||
|
ShieldType::YellowRing3 => "YellowRing3",
|
||
|
ShieldType::YellowRing4 => "YellowRing4",
|
||
|
ShieldType::YellowRing5 => "YellowRing5",
|
||
|
ShieldType::YellowRing6 => "YellowRing6",
|
||
|
ShieldType::YellowRing7 => "YellowRing7",
|
||
|
ShieldType::YellowRing8 => "YellowRing8",
|
||
|
ShieldType::PurpleRing => "PurpleRing",
|
||
|
ShieldType::PurpleRing2 => "PurpleRing2",
|
||
|
ShieldType::PurpleRing3 => "PurpleRing3",
|
||
|
ShieldType::PurpleRing4 => "PurpleRing4",
|
||
|
ShieldType::PurpleRing5 => "PurpleRing5",
|
||
|
ShieldType::PurpleRing6 => "PurpleRing6",
|
||
|
ShieldType::PurpleRing7 => "PurpleRing7",
|
||
|
ShieldType::PurpleRing8 => "PurpleRing8",
|
||
|
ShieldType::WhiteRing => "WhiteRing",
|
||
|
ShieldType::WhiteRing2 => "WhiteRing2",
|
||
|
ShieldType::WhiteRing3 => "WhiteRing3",
|
||
|
ShieldType::WhiteRing4 => "WhiteRing4",
|
||
|
ShieldType::WhiteRing5 => "WhiteRing5",
|
||
|
ShieldType::WhiteRing6 => "WhiteRing6",
|
||
|
ShieldType::WhiteRing7 => "WhiteRing7",
|
||
|
ShieldType::WhiteRing8 => "WhiteRing8",
|
||
|
ShieldType::BlackRing => "BlackRing",
|
||
|
ShieldType::BlackRing2 => "BlackRing2",
|
||
|
ShieldType::BlackRing3 => "BlackRing3",
|
||
|
ShieldType::BlackRing4 => "BlackRing4",
|
||
|
ShieldType::BlackRing5 => "BlackRing5",
|
||
|
ShieldType::BlackRing6 => "BlackRing6",
|
||
|
ShieldType::BlackRing7 => "BlackRing7",
|
||
|
ShieldType::BlackRing8 => "BlackRing8",
|
||
|
ShieldType::WeaponsSilverShield => "WeaponsSilverShield",
|
||
|
ShieldType::WeaponsCopperShield => "WeaponsCopperShield",
|
||
|
ShieldType::Gratia => "Gratia",
|
||
|
ShieldType::TripolicReflector => "TripolicReflector",
|
||
|
ShieldType::StrikerPlus => "StrikerPlus",
|
||
|
ShieldType::RegenerateGearBP => "RegenerateGearBP",
|
||
|
ShieldType::Rupika => "Rupika",
|
||
|
ShieldType::YataMirror => "YataMirror",
|
||
|
ShieldType::BunnyEars => "BunnyEars",
|
||
|
ShieldType::CatEars => "CatEars",
|
||
|
ShieldType::ThreeSeals => "ThreeSeals",
|
||
|
ShieldType::GodsShieldkouryu => "GodsShieldkouryu",
|
||
|
ShieldType::DfShield => "DfShield",
|
||
|
ShieldType::FromTheDepths => "FromTheDepths",
|
||
|
ShieldType::DeRolLeShield => "DeRolLeShield",
|
||
|
ShieldType::HoneycombReflector => "HoneycombReflector",
|
||
|
ShieldType::Epsiguard => "Epsiguard",
|
||
|
ShieldType::AngelRing => "AngelRing",
|
||
|
ShieldType::UnionGuard => "UnionGuard",
|
||
|
ShieldType::UnionGuard2 => "UnionGuard2",
|
||
|
ShieldType::UnionGuard3 => "UnionGuard3",
|
||
|
ShieldType::UnionGuard4 => "UnionGuard4",
|
||
|
ShieldType::StinkShield => "StinkShield",
|
||
|
ShieldType::Unknownb => "Unknownb",
|
||
|
ShieldType::Genpei => "Genpei",
|
||
|
ShieldType::Genpei2 => "Genpei2",
|
||
|
ShieldType::Genpei3 => "Genpei3",
|
||
|
ShieldType::Genpei4 => "Genpei4",
|
||
|
ShieldType::Genpei5 => "Genpei5",
|
||
|
ShieldType::Genpei6 => "Genpei6",
|
||
|
ShieldType::Genpei7 => "Genpei7",
|
||
|
ShieldType::Genpei8 => "Genpei8",
|
||
|
ShieldType::Genpei9 => "Genpei9",
|
||
|
ShieldType::Genpei10 => "Genpei10",
|
||
|
}.to_string()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// TODO: TryFrom<&str> done maybe - wilson someone with braincells check
|
||
|
// TODO Into<String> ^^
|
||
|
|
||
|
|
||
|
#[derive(Debug, Copy, Clone, PartialEq)]
|
||
|
pub struct Shield {
|
||
|
pub shield: ShieldType,
|
||
|
pub dfp: u8,
|
||
|
pub evp: u8,
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
impl Shield {
|
||
|
pub fn as_bytes(&self) -> [u8; 16] {
|
||
|
let mut result = [0; 16];
|
||
|
result[0..3].copy_from_slice(&self.shield.value());
|
||
|
// TODO: other attrs
|
||
|
|
||
|
result
|
||
|
}
|
||
|
}
|