From fe0f7ba41e76a60d38f29971cf6285cd04a334aa Mon Sep 17 00:00:00 2001 From: andy Date: Thu, 3 Dec 2020 01:57:44 +0000 Subject: [PATCH] initial wrapping stuff --- src/entity/item/weapon.rs | 47 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/src/entity/item/weapon.rs b/src/entity/item/weapon.rs index b26da45..186c701 100644 --- a/src/entity/item/weapon.rs +++ b/src/entity/item/weapon.rs @@ -1454,6 +1454,44 @@ pub enum WeaponModifier { }, } +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub enum WrappingPaper { + White_Pink, // 0 + Yellow_Blue, + Black_Yellow, + LightBlue_Orange, + Pink_YellowGreen, + Red_Green, + Magenta, + Blue, + Yellow, + Vermillion, + Green, +} + +impl WrappingPaper { + pub fn value(&self) -> u8 { + *self as u8 + } + + pub fn from(data: u8) -> Option { + match data { + 0 => Some(WrappingPaper::White_Pink), + 1 => Some(WrappingPaper::Yellow_Blue), + 2 => Some(WrappingPaper::Black_Yellow), + 3 => Some(WrappingPaper::LightBlue_Orange), + 4 => Some(WrappingPaper::Pink_YellowGreen), + 5 => Some(WrappingPaper::Red_Green), + 6 => Some(WrappingPaper::Magenta), + 7 => Some(WrappingPaper::Blue), + 8 => Some(WrappingPaper::Yellow), + 9 => Some(WrappingPaper::Vermillion), + 10 => Some(WrappingPaper::Green), + _ => None, + } + } +} + #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct Weapon { pub weapon: WeaponType, @@ -1461,6 +1499,8 @@ pub struct Weapon { pub grind: u8, pub attrs: [Option; 3], pub tekked: bool, + pub modifiers: Vec, + pub wrapped: Option, } @@ -1472,6 +1512,8 @@ impl Weapon { grind: 0, attrs: [None; 3], tekked: true, + modifiers: Vec::new(), + wrapped: None, } } @@ -1525,6 +1567,11 @@ impl Weapon { result[0..3].copy_from_slice(&self.weapon.value()); result[3] = self.grind; result[4] = self.special.map(|s| s.value()).unwrap_or(0); + + if self.wrapped.is_some() { + result[4] += 0x40; + result[5] = self.wrapped.unwrap().value(); + }; if self.tekked == false { result[4] += 0x80