1use noisy_float::prelude::*;
6use serde::{Deserialize, Serialize};
7
8use super::attribute::Attribute;
9
10#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
12pub enum WeaponTargetType {
13 Ground,
15 Air,
17 Any,
19}
20
21#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
23pub struct WeaponBonus {
24 against: Attribute,
26 damage: R32,
28}
29
30#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
32pub struct Weapon {
33 target_type: WeaponTargetType,
34 damage_per_hit: R32,
36 damage_splash: R32,
38 attacks: u32,
40 range: R32,
42 cooldown: R32,
44 bonuses: Vec<WeaponBonus>,
46}