Skip to main content

homm5_types/hero/
mod.rs

1use serde::{Serialize, Deserialize};
2use crate::common::FileRef;
3
4#[derive(Debug, Serialize, Deserialize)]
5pub struct Coordinate {
6    pub x: u8,
7    pub y: u8
8}
9
10#[derive(Debug, Serialize, Deserialize)]
11pub struct PossessionMarkerTile {
12    pub x: u8,
13    pub y: u8
14}
15
16#[derive(Debug, Serialize, Deserialize)]
17#[allow(non_snake_case)]
18pub struct Skill {
19    pub Mastery: String,
20    pub SkillID: String,
21}
22
23#[derive(Debug, Serialize, Deserialize)]
24#[allow(non_snake_case)]
25pub struct Editable {
26    pub NameFileRef: Option<FileRef>,
27    pub BiographyFileRef: Option<FileRef>,
28    pub Offence: u16,
29    pub Defence: u16,
30    pub Spellpower: u16,
31    pub Knowledge: u16,
32    // #[serde(rename = "Item")]
33    // pub skills: Option<Vec<Skill>>,
34    // #[serde(rename = "Item")]
35    // pub perkIDs: Option<Vec<String>>,
36    // #[serde(rename = "Item")]
37    // pub spellIDs: Option<Vec<String>>,
38    pub Ballista: bool,
39    pub FirstAidTent: bool,
40    pub AmmoCart: bool,
41    //pub FavoriteEnemies: Option<Vec<String>>
42}
43
44#[derive(Debug, Serialize, Deserialize)]
45#[allow(non_snake_case)]
46pub struct AdvMapHeroShared {
47    pub Model: Option<FileRef>,
48    pub AnimSet: Option<FileRef>,
49    // #[serde(rename = "Item")]
50    // pub blockedTiles: Option<Vec<Coordinate>>,
51    // #[serde(rename = "Item")]
52    // pub holeTiles: Option<Vec<Coordinate>>,
53    // #[serde(rename = "Item")]
54    // pub activeTiles: Option<Vec<Coordinate>>,
55    // #[serde(rename = "Item")]
56    // pub passableTiles: Option<Vec<Coordinate>>,
57    // pub PossessionMarkerTile: Option<PossessionMarkerTile>,
58    // pub Effect: Option<FileRef>,
59    // pub EffectWhenOwned: Option<FileRef>,
60    // pub messageFileRef: Option<FileRef>,
61    pub WaterBased: bool,
62    pub ApplyHeroTrace: bool,
63    // pub SoundEffect: Option<FileRef>,
64    // pub flybyMessageFileRef: Option<FileRef>,
65    // pub ObjectTypeFileRef: Option<FileRef>,
66    pub FlyPassable: bool,
67    //pub AdventureSoundEffect: Option<FileRef>,
68    //pub RazedStatic: Option<FileRef>,
69    pub Icon128: Option<String>,
70    pub InternalName: String,
71    pub Class: String,
72    pub Specialization: String,
73    pub PrimarySkill: Skill,
74    pub SpecializationNameFileRef: Option<FileRef>,
75    pub SpecializationDescFileRef: Option<FileRef>,
76    pub SpecializationIcon: Option<FileRef>,
77    pub FaceTexture: Option<FileRef>,
78    // pub FaceTextureSmall: Option<FileRef>,
79    // pub HeroCharacterArena: Option<FileRef>,
80    // pub HeroCharacterArenaMelee: Option<String>,
81    // pub HeroCharacterAdventure: Option<FileRef>,
82    // pub HeroIndividualCamera: Option<FileRef>,
83    // pub CombatVisual: Option<FileRef>,
84    pub TownType: String,
85    pub Editable: Editable,
86    // pub ArrowButtonState: u8,
87    // pub Decal: Option<FileRef>,
88    // pub Selection: Option<FileRef>,
89    // pub Trace: Option<FileRef>,
90    // pub RaceTraitIcon: Option<FileRef>,
91    // pub RaceTraitDescFileRef: Option<FileRef>,
92    pub ScenarioHero: bool,
93    // pub AdventureMusic: Option<FileRef>,
94    // pub HideInEditor: bool
95}