|
@ -85,7 +85,7 @@ pub struct MapEnemy { |
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
impl MapEnemy {
|
|
|
impl MapEnemy {
|
|
|
fn from_raw(enemy: RawMapEnemy, episode: &Episode /*, battleparam */) -> Result<MapEnemy, MapEnemyError> {
|
|
|
|
|
|
|
|
|
fn from_raw(enemy: RawMapEnemy, episode: &Episode, map_area: &MapArea /*, battleparam */) -> Result<MapEnemy, MapEnemyError> {
|
|
|
let monster = match (enemy, episode) {
|
|
|
let monster = match (enemy, episode) {
|
|
|
(RawMapEnemy {id: 64, ..}, _) => MonsterType::Hildebear,
|
|
|
(RawMapEnemy {id: 64, ..}, _) => MonsterType::Hildebear,
|
|
|
(RawMapEnemy {id: 65, ..}, Episode::Four) => MonsterType::SandRappy,
|
|
|
(RawMapEnemy {id: 65, ..}, Episode::Four) => MonsterType::SandRappy,
|
|
@ -174,7 +174,7 @@ impl MapEnemy { |
|
|
|
|
|
|
|
|
Ok(MapEnemy {
|
|
|
Ok(MapEnemy {
|
|
|
monster: monster,
|
|
|
monster: monster,
|
|
|
map_area: MapArea::from_value(&episode, enemy.map_area as u32)?,
|
|
|
|
|
|
|
|
|
map_area: map_area.clone(),
|
|
|
hp: 0,
|
|
|
hp: 0,
|
|
|
dropped_item: false,
|
|
|
dropped_item: false,
|
|
|
gave_exp: false,
|
|
|
gave_exp: false,
|
|
@ -534,11 +534,12 @@ fn objects_from_map_data(path: PathBuf, episode: &Episode) -> Vec<Option<MapObje |
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn enemy_data_from_map_data(path: PathBuf, episode: &Episode) -> Vec<Option<MapEnemy>> {
|
|
|
|
|
|
|
|
|
fn enemy_data_from_map_data(map_variant: &MapVariant, episode: &Episode) -> Vec<Option<MapEnemy>> {
|
|
|
|
|
|
let path = map_variant.dat_file();
|
|
|
let mut cursor = File::open(path).unwrap();
|
|
|
let mut cursor = File::open(path).unwrap();
|
|
|
let mut enemy_data = Vec::new();
|
|
|
let mut enemy_data = Vec::new();
|
|
|
while let Ok(enemy) = RawMapEnemy::from_byte_stream(&mut cursor) {
|
|
|
while let Ok(enemy) = RawMapEnemy::from_byte_stream(&mut cursor) {
|
|
|
let new_enemy = MapEnemy::from_raw(enemy, episode);
|
|
|
|
|
|
|
|
|
let new_enemy = MapEnemy::from_raw(enemy, episode, &map_variant.map);
|
|
|
enemy_data.append(&mut new_enemy
|
|
|
enemy_data.append(&mut new_enemy
|
|
|
.map_or(vec![None], |monster| {
|
|
|
.map_or(vec![None], |monster| {
|
|
|
let mut monsters = Vec::new();
|
|
|
let mut monsters = Vec::new();
|
|
@ -666,7 +667,7 @@ impl Maps { |
|
|
|
|
|
|
|
|
let mut maps = Maps {
|
|
|
let mut maps = Maps {
|
|
|
enemy_data: map_variants.iter().fold(Vec::new(), |mut enemy_data, map_variant| {
|
|
|
enemy_data: map_variants.iter().fold(Vec::new(), |mut enemy_data, map_variant| {
|
|
|
enemy_data.append(&mut enemy_data_from_map_data(map_variant.dat_file().into(), &episode));
|
|
|
|
|
|
|
|
|
enemy_data.append(&mut enemy_data_from_map_data(&map_variant, &episode));
|
|
|
enemy_data
|
|
|
enemy_data
|
|
|
}),
|
|
|
}),
|
|
|
object_data: map_variants.iter().map(|map_variant| {
|
|
|
object_data: map_variants.iter().map(|map_variant| {
|
|
|