nil_core/military/unit/
heavy_cavalry.rs1use super::stats::prelude::*;
5use super::{UnitChunk, UnitChunkSize, UnitId, UnitKind};
6use crate::check_total_resource_ratio;
7use crate::infrastructure::building::{BuildingId, BuildingLevel};
8use crate::infrastructure::requirements::InfrastructureRequirements;
9use crate::ranking::score::Score;
10use crate::resources::prelude::*;
11use nil_core_macros::Unit;
12
13#[derive(Unit, Clone, Debug)]
14pub struct HeavyCavalry;
15
16impl HeavyCavalry {
17 pub const ID: UnitId = UnitId::HeavyCavalry;
18 pub const KIND: UnitKind = UnitKind::Cavalry;
19 pub const BUILDING: BuildingId = BuildingId::Stable;
20
21 pub const SCORE: Score = Score::new(6);
22
23 pub const STATS: UnitStats = UnitStats::builder()
24 .attack(Power::new(150))
25 .infantry_defense(Power::new(200))
26 .cavalry_defense(Power::new(80))
27 .ranged_defense(Power::new(180))
28 .ranged_debuff(RangedDebuff::MIN)
29 .speed(Speed::new(3.5))
30 .haul(Haul::new(50))
31 .build();
32
33 pub const CHUNK: UnitChunk = UnitChunk {
34 size: UnitChunkSize::new(5),
35 cost: Cost::new(4750),
36 wood_ratio: ResourceRatio::new(0.2),
37 stone_ratio: ResourceRatio::new(0.15),
38 iron_ratio: ResourceRatio::new(0.65),
39 maintenance_ratio: MaintenanceRatio::new(0.005),
40 workforce: Workforce::new(3),
41 };
42
43 pub const INFRASTRUCTURE_REQUIREMENTS: InfrastructureRequirements =
44 InfrastructureRequirements::builder()
45 .stable(BuildingLevel::new(3))
46 .build();
47}
48
49check_total_resource_ratio!(
50 HeavyCavalry::CHUNK.wood_ratio,
51 HeavyCavalry::CHUNK.stone_ratio,
52 HeavyCavalry::CHUNK.iron_ratio
53);