|
|
@ -3,8 +3,7 @@ use serde::{Serialize, Deserialize}; |
|
|
|
|
|
|
|
#[derive(Debug, Copy, Clone, PartialEq, Eq, Ord, PartialOrd)]
|
|
|
|
pub enum Attribute {
|
|
|
|
None,
|
|
|
|
Native,
|
|
|
|
Native = 1,
|
|
|
|
ABeast,
|
|
|
|
Machine,
|
|
|
|
Dark,
|
|
|
@ -26,8 +25,7 @@ impl WeaponAttribute { |
|
|
|
|
|
|
|
#[derive(Debug, Copy, Clone, PartialEq)]
|
|
|
|
pub enum WeaponSpecial {
|
|
|
|
None,
|
|
|
|
Draw,
|
|
|
|
Draw = 1,
|
|
|
|
Drain,
|
|
|
|
Fill,
|
|
|
|
Gush,
|
|
|
@ -893,15 +891,16 @@ impl Weapon { |
|
|
|
let mut result = [0u8; 16];
|
|
|
|
result[0..3].copy_from_slice(&self.weapon.value());
|
|
|
|
result[3] = self.grind;
|
|
|
|
result[4] = self.special.unwrap_or(WeaponSpecial::None).value();
|
|
|
|
result[4] = self.special.map(|s| s.value()).unwrap_or(0);
|
|
|
|
|
|
|
|
if self.tekked == false {
|
|
|
|
result[4] += 0x80
|
|
|
|
};
|
|
|
|
|
|
|
|
result[6..8].copy_from_slice(&self.attrs[0].unwrap_or(WeaponAttribute{attr: Attribute::None, value: 0}).value());
|
|
|
|
result[8..10].copy_from_slice(&self.attrs[1].unwrap_or(WeaponAttribute{attr: Attribute::None, value: 0}).value());
|
|
|
|
result[10..12].copy_from_slice(&self.attrs[2].unwrap_or(WeaponAttribute{attr: Attribute::None, value: 0}).value());
|
|
|
|
result[6..8].copy_from_slice(&self.attrs[0].map(|s| s.value()).unwrap_or([0,0]));
|
|
|
|
result[8..10].copy_from_slice(&self.attrs[1].map(|s| s.value()).unwrap_or([0,0]));
|
|
|
|
result[10..12].copy_from_slice(&self.attrs[2].map(|s| s.value()).unwrap_or([0,0]));
|
|
|
|
|
|
|
|
result
|
|
|
|
}
|
|
|
|
}
|
|
|
|