|
@ -452,8 +452,8 @@ pub enum MapArea { |
|
|
OlgaFlow,
|
|
|
OlgaFlow,
|
|
|
BarbaRay,
|
|
|
BarbaRay,
|
|
|
GolDragon,
|
|
|
GolDragon,
|
|
|
// Seaside2,
|
|
|
|
|
|
// Tower,
|
|
|
|
|
|
|
|
|
SeasideNight,
|
|
|
|
|
|
Tower,
|
|
|
Pioneer2Ep4,
|
|
|
Pioneer2Ep4,
|
|
|
CraterEast,
|
|
|
CraterEast,
|
|
|
CraterWest,
|
|
|
CraterWest,
|
|
@ -507,8 +507,8 @@ impl MapArea { |
|
|
(Episode::Two, 13) => Ok(MapArea::OlgaFlow),
|
|
|
(Episode::Two, 13) => Ok(MapArea::OlgaFlow),
|
|
|
(Episode::Two, 14) => Ok(MapArea::BarbaRay),
|
|
|
(Episode::Two, 14) => Ok(MapArea::BarbaRay),
|
|
|
(Episode::Two, 15) => Ok(MapArea::GolDragon),
|
|
|
(Episode::Two, 15) => Ok(MapArea::GolDragon),
|
|
|
// (Episode::Two, 16) => Ok(MapArea::Seaside2),
|
|
|
|
|
|
// (Episode::Two, 17) => Ok(MapArea::Tower),
|
|
|
|
|
|
|
|
|
(Episode::Two, 16) => Ok(MapArea::SeasideNight),
|
|
|
|
|
|
(Episode::Two, 17) => Ok(MapArea::Tower),
|
|
|
(Episode::Four, 0) => Ok(MapArea::Pioneer2Ep4),
|
|
|
(Episode::Four, 0) => Ok(MapArea::Pioneer2Ep4),
|
|
|
(Episode::Four, 1) => Ok(MapArea::CraterEast),
|
|
|
(Episode::Four, 1) => Ok(MapArea::CraterEast),
|
|
|
(Episode::Four, 2) => Ok(MapArea::CraterWest),
|
|
|
(Episode::Four, 2) => Ok(MapArea::CraterWest),
|
|
@ -540,6 +540,7 @@ impl MapArea { |
|
|
MapArea::DeRolLe => Some(5),
|
|
|
MapArea::DeRolLe => Some(5),
|
|
|
MapArea::VolOpt => Some(7),
|
|
|
MapArea::VolOpt => Some(7),
|
|
|
MapArea::DarkFalz => Some(9),
|
|
|
MapArea::DarkFalz => Some(9),
|
|
|
|
|
|
|
|
|
MapArea::VrTempleAlpha => Some(0),
|
|
|
MapArea::VrTempleAlpha => Some(0),
|
|
|
MapArea::VrTempleBeta => Some(1),
|
|
|
MapArea::VrTempleBeta => Some(1),
|
|
|
MapArea::VrSpaceshipAlpha => Some(2),
|
|
|
MapArea::VrSpaceshipAlpha => Some(2),
|
|
@ -555,8 +556,9 @@ impl MapArea { |
|
|
MapArea::OlgaFlow => Some(9),
|
|
|
MapArea::OlgaFlow => Some(9),
|
|
|
MapArea::BarbaRay => Some(2),
|
|
|
MapArea::BarbaRay => Some(2),
|
|
|
MapArea::GolDragon => Some(5),
|
|
|
MapArea::GolDragon => Some(5),
|
|
|
// MapArea::Seaside2 => Some(0),
|
|
|
|
|
|
// MapArea::Tower => Some(0),
|
|
|
|
|
|
|
|
|
MapArea::SeasideNight => Some(7),
|
|
|
|
|
|
MapArea::Tower => Some(9),
|
|
|
|
|
|
|
|
|
MapArea::CraterEast => Some(2),
|
|
|
MapArea::CraterEast => Some(2),
|
|
|
MapArea::CraterWest => Some(3),
|
|
|
MapArea::CraterWest => Some(3),
|
|
|
MapArea::CraterSouth => Some(4),
|
|
|
MapArea::CraterSouth => Some(4),
|
|
@ -604,8 +606,8 @@ impl MapArea { |
|
|
MapArea::OlgaFlow => 13,
|
|
|
MapArea::OlgaFlow => 13,
|
|
|
MapArea::BarbaRay => 14,
|
|
|
MapArea::BarbaRay => 14,
|
|
|
MapArea::GolDragon => 15,
|
|
|
MapArea::GolDragon => 15,
|
|
|
// MapArea::Seaside2 => 16,
|
|
|
|
|
|
// MapArea::Tower => 17,
|
|
|
|
|
|
|
|
|
MapArea::SeasideNight => 16,
|
|
|
|
|
|
MapArea::Tower => 17,
|
|
|
MapArea::Pioneer2Ep4 => 0,
|
|
|
MapArea::Pioneer2Ep4 => 0,
|
|
|
MapArea::CraterEast => 1,
|
|
|
MapArea::CraterEast => 1,
|
|
|
MapArea::CraterWest => 2,
|
|
|
MapArea::CraterWest => 2,
|
|
@ -645,12 +647,12 @@ impl MapVariant { |
|
|
MapArea::VrTempleAlpha | MapArea::VrTempleBeta => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::VrTempleAlpha | MapArea::VrTempleBeta => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::VrSpaceshipAlpha | MapArea::VrSpaceshipBeta => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::VrSpaceshipAlpha | MapArea::VrSpaceshipBeta => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::Cca => 0,
|
|
|
MapArea::Cca => 0,
|
|
|
MapArea::JungleAreaNorth => 0,
|
|
|
|
|
|
MapArea::JungleAreaEast => 0,
|
|
|
|
|
|
|
|
|
MapArea::JungleAreaNorth | MapArea::JungleAreaEast => 0,
|
|
|
MapArea::Mountain => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::Mountain => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::Seaside => 0,
|
|
|
|
|
|
|
|
|
MapArea::Seaside | MapArea::SeasideNight=> 0,
|
|
|
MapArea::SeabedUpper | MapArea::SeabedLower => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::SeabedUpper | MapArea::SeabedLower => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::BarbaRay | MapArea::GolDragon | MapArea::GalGryphon | MapArea::OlgaFlow => 0,
|
|
|
MapArea::BarbaRay | MapArea::GolDragon | MapArea::GalGryphon | MapArea::OlgaFlow => 0,
|
|
|
|
|
|
MapArea::Tower => 0,
|
|
|
|
|
|
|
|
|
MapArea::Pioneer2Ep4 => 0,
|
|
|
MapArea::Pioneer2Ep4 => 0,
|
|
|
MapArea::CraterEast | MapArea::CraterWest | MapArea::CraterSouth | MapArea::CraterNorth | MapArea::CraterInterior => 0,
|
|
|
MapArea::CraterEast | MapArea::CraterWest | MapArea::CraterSouth | MapArea::CraterNorth | MapArea::CraterInterior => 0,
|
|
@ -661,8 +663,7 @@ impl MapVariant { |
|
|
|
|
|
|
|
|
let minor = match map {
|
|
|
let minor = match map {
|
|
|
MapArea::Pioneer2Ep1 => 0,
|
|
|
MapArea::Pioneer2Ep1 => 0,
|
|
|
MapArea::Forest1 => rand::thread_rng().gen_range(0, 5),
|
|
|
|
|
|
MapArea::Forest2 => rand::thread_rng().gen_range(0, 5),
|
|
|
|
|
|
|
|
|
MapArea::Forest1 | MapArea::Forest2 => rand::thread_rng().gen_range(0, 5),
|
|
|
MapArea::Caves1 | MapArea::Caves2 | MapArea::Caves3 => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::Caves1 | MapArea::Caves2 | MapArea::Caves3 => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::Mines1 | MapArea::Mines2 => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::Mines1 | MapArea::Mines2 => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::Ruins1 | MapArea::Ruins2 | MapArea::Ruins3 => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::Ruins1 | MapArea::Ruins2 | MapArea::Ruins3 => rand::thread_rng().gen_range(0, 2),
|
|
@ -672,15 +673,12 @@ impl MapVariant { |
|
|
MapArea::VrTempleAlpha | MapArea::VrTempleBeta => 0,
|
|
|
MapArea::VrTempleAlpha | MapArea::VrTempleBeta => 0,
|
|
|
MapArea::VrSpaceshipAlpha | MapArea::VrSpaceshipBeta => 0,
|
|
|
MapArea::VrSpaceshipAlpha | MapArea::VrSpaceshipBeta => 0,
|
|
|
MapArea::Cca => rand::thread_rng().gen_range(0, 3),
|
|
|
MapArea::Cca => rand::thread_rng().gen_range(0, 3),
|
|
|
MapArea::JungleAreaNorth => rand::thread_rng().gen_range(0, 3),
|
|
|
|
|
|
MapArea::JungleAreaEast => rand::thread_rng().gen_range(0, 3),
|
|
|
|
|
|
|
|
|
MapArea::JungleAreaNorth | MapArea::JungleAreaEast => rand::thread_rng().gen_range(0, 3),
|
|
|
MapArea::Mountain => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::Mountain => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::Seaside => rand::thread_rng().gen_range(0, 3),
|
|
|
|
|
|
|
|
|
MapArea::Seaside | MapArea::SeasideNight => rand::thread_rng().gen_range(0, 3),
|
|
|
MapArea::SeabedUpper | MapArea::SeabedLower => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::SeabedUpper | MapArea::SeabedLower => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::GalGryphon => 0,
|
|
|
|
|
|
MapArea::OlgaFlow => 0,
|
|
|
|
|
|
MapArea::BarbaRay => 0,
|
|
|
|
|
|
MapArea::GolDragon => 0,
|
|
|
|
|
|
|
|
|
MapArea::BarbaRay | MapArea::GolDragon | MapArea::GalGryphon | MapArea::OlgaFlow => 0,
|
|
|
|
|
|
MapArea::Tower => 0,
|
|
|
|
|
|
|
|
|
MapArea::Pioneer2Ep4 => 0,
|
|
|
MapArea::Pioneer2Ep4 => 0,
|
|
|
MapArea::CraterEast | MapArea::CraterWest | MapArea::CraterSouth | MapArea::CraterNorth | MapArea::CraterInterior => rand::thread_rng().gen_range(0, 3),
|
|
|
MapArea::CraterEast | MapArea::CraterWest | MapArea::CraterSouth | MapArea::CraterNorth | MapArea::CraterInterior => rand::thread_rng().gen_range(0, 3),
|
|
@ -699,21 +697,22 @@ impl MapVariant { |
|
|
else {
|
|
|
else {
|
|
|
let major = match map {
|
|
|
let major = match map {
|
|
|
MapArea::Pioneer2Ep1 => 0,
|
|
|
MapArea::Pioneer2Ep1 => 0,
|
|
|
MapArea::Forest1 => 0, | MapArea::Forest2 => 0,
|
|
|
|
|
|
|
|
|
MapArea::Forest1 | MapArea::Forest2 => 0,
|
|
|
MapArea::Caves1 | MapArea::Caves2 | MapArea::Caves3 => rand::thread_rng().gen_range(0, 3),
|
|
|
MapArea::Caves1 | MapArea::Caves2 | MapArea::Caves3 => rand::thread_rng().gen_range(0, 3),
|
|
|
MapArea::Mines1 | MapArea::Mines2 => rand::thread_rng().gen_range(0, 3), // no offline-specific maps
|
|
|
|
|
|
MapArea::Ruins1 | MapArea::Ruins2 | MapArea::Ruins3 => rand::thread_rng().gen_range(0, 3), // no offline-specific maps
|
|
|
|
|
|
|
|
|
MapArea::Mines1 | MapArea::Mines2 => rand::thread_rng().gen_range(0, 3),
|
|
|
|
|
|
MapArea::Ruins1 | MapArea::Ruins2 | MapArea::Ruins3 => rand::thread_rng().gen_range(0, 3),
|
|
|
MapArea::Dragon | MapArea::DeRolLe | MapArea::VolOpt | MapArea::DarkFalz => 0,
|
|
|
MapArea::Dragon | MapArea::DeRolLe | MapArea::VolOpt | MapArea::DarkFalz => 0,
|
|
|
|
|
|
|
|
|
MapArea::Pioneer2Ep2 => 0,
|
|
|
MapArea::Pioneer2Ep2 => 0,
|
|
|
MapArea::VrTempleAlpha | MapArea::VrTempleBeta | MapArea::VrSpaceshipAlpha | MapArea::VrSpaceshipBeta => rand::thread_rng().gen_range(0, 2),
|
|
|
|
|
|
|
|
|
MapArea::VrTempleAlpha | MapArea::VrTempleBeta => rand::thread_rng().gen_range(0, 2),
|
|
|
|
|
|
MapArea::VrSpaceshipAlpha | MapArea::VrSpaceshipBeta => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::Cca => 0,
|
|
|
MapArea::Cca => 0,
|
|
|
MapArea::JungleAreaNorth => 0,
|
|
|
|
|
|
MapArea::JungleAreaEast => 0,
|
|
|
|
|
|
|
|
|
MapArea::JungleAreaNorth | MapArea::JungleAreaEast => 0,
|
|
|
MapArea::Mountain => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::Mountain => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::Seaside => 0,
|
|
|
|
|
|
|
|
|
MapArea::Seaside | MapArea::SeasideNight => 0,
|
|
|
MapArea::SeabedUpper | MapArea::SeabedLower => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::SeabedUpper | MapArea::SeabedLower => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::BarbaRay | MapArea::GolDragon | MapArea::GalGryphon | MapArea::OlgaFlow => 0,
|
|
|
MapArea::BarbaRay | MapArea::GolDragon | MapArea::GalGryphon | MapArea::OlgaFlow => 0,
|
|
|
|
|
|
MapArea::Tower => 0,
|
|
|
|
|
|
|
|
|
MapArea::Pioneer2Ep4 => 0,
|
|
|
MapArea::Pioneer2Ep4 => 0,
|
|
|
MapArea::CraterEast | MapArea::CraterWest | MapArea::CraterSouth | MapArea::CraterNorth | MapArea::CraterInterior => 0,
|
|
|
MapArea::CraterEast | MapArea::CraterWest | MapArea::CraterSouth | MapArea::CraterNorth | MapArea::CraterInterior => 0,
|
|
@ -724,25 +723,22 @@ impl MapVariant { |
|
|
|
|
|
|
|
|
let minor = match map {
|
|
|
let minor = match map {
|
|
|
MapArea::Pioneer2Ep1 => 0,
|
|
|
MapArea::Pioneer2Ep1 => 0,
|
|
|
MapArea::Forest1 => rand::thread_rng().gen_range(0, 3),
|
|
|
|
|
|
MapArea::Forest2 => rand::thread_rng().gen_range(0, 3),
|
|
|
|
|
|
|
|
|
MapArea::Forest1 | MapArea::Forest2 => rand::thread_rng().gen_range(0, 3),
|
|
|
MapArea::Caves1 | MapArea::Caves2 | MapArea::Caves3 => 0,
|
|
|
MapArea::Caves1 | MapArea::Caves2 | MapArea::Caves3 => 0,
|
|
|
MapArea::Mines1 | MapArea::Mines2 => rand::thread_rng().gen_range(0, 2), // no offline-specific maps
|
|
|
|
|
|
MapArea::Ruins1 | MapArea::Ruins2 | MapArea::Ruins3 => rand::thread_rng().gen_range(0, 2),// no offline-specific maps
|
|
|
|
|
|
|
|
|
MapArea::Mines1 | MapArea::Mines2 => rand::thread_rng().gen_range(0, 2),
|
|
|
|
|
|
MapArea::Ruins1 | MapArea::Ruins2 | MapArea::Ruins3 => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::Dragon | MapArea::DeRolLe | MapArea::VolOpt | MapArea::DarkFalz => 0,
|
|
|
MapArea::Dragon | MapArea::DeRolLe | MapArea::VolOpt | MapArea::DarkFalz => 0,
|
|
|
|
|
|
|
|
|
MapArea::Pioneer2Ep2 => 0,
|
|
|
MapArea::Pioneer2Ep2 => 0,
|
|
|
MapArea::VrTempleAlpha | MapArea::VrTempleBeta | MapArea::VrSpaceshipAlpha | MapArea::VrSpaceshipBeta => 0,
|
|
|
|
|
|
|
|
|
MapArea::VrTempleAlpha | MapArea::VrTempleBeta => 0,
|
|
|
|
|
|
MapArea::VrSpaceshipAlpha | MapArea::VrSpaceshipBeta => 0,
|
|
|
MapArea::Cca => rand::thread_rng().gen_range(0, 3),
|
|
|
MapArea::Cca => rand::thread_rng().gen_range(0, 3),
|
|
|
MapArea::JungleAreaNorth => rand::thread_rng().gen_range(0, 3),
|
|
|
|
|
|
MapArea::JungleAreaEast => rand::thread_rng().gen_range(0, 3),
|
|
|
|
|
|
|
|
|
MapArea::JungleAreaNorth | MapArea::JungleAreaEast => rand::thread_rng().gen_range(0, 3),
|
|
|
MapArea::Mountain => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::Mountain => rand::thread_rng().gen_range(0, 2),
|
|
|
MapArea::Seaside => rand::thread_rng().gen_range(0, 3),
|
|
|
|
|
|
|
|
|
MapArea::Seaside | MapArea::SeasideNight => rand::thread_rng().gen_range(0, 3),
|
|
|
MapArea::SeabedUpper | MapArea::SeabedLower => 0,
|
|
|
MapArea::SeabedUpper | MapArea::SeabedLower => 0,
|
|
|
MapArea::GalGryphon => 0,
|
|
|
|
|
|
MapArea::OlgaFlow => 0,
|
|
|
|
|
|
MapArea::BarbaRay => 0,
|
|
|
|
|
|
MapArea::GolDragon => 0,
|
|
|
|
|
|
|
|
|
MapArea::BarbaRay | MapArea::GolDragon | MapArea::GalGryphon | MapArea::OlgaFlow => 0,
|
|
|
|
|
|
MapArea::Tower => 0,
|
|
|
|
|
|
|
|
|
MapArea::Pioneer2Ep4 => 0,
|
|
|
MapArea::Pioneer2Ep4 => 0,
|
|
|
MapArea::CraterEast | MapArea::CraterWest | MapArea::CraterSouth | MapArea::CraterNorth | MapArea::CraterInterior => rand::thread_rng().gen_range(0, 3),
|
|
|
MapArea::CraterEast | MapArea::CraterWest | MapArea::CraterSouth | MapArea::CraterNorth | MapArea::CraterInterior => rand::thread_rng().gen_range(0, 3),
|
|
@ -807,6 +803,7 @@ impl MapVariant { |
|
|
MapArea::SubDesert2 => format!("data/maps/map_desert02_0{}_0{}e.dat", self.major, self.minor),
|
|
|
MapArea::SubDesert2 => format!("data/maps/map_desert02_0{}_0{}e.dat", self.major, self.minor),
|
|
|
MapArea::SubDesert3 => format!("data/maps/map_desert03_0{}_0{}e.dat", self.major, self.minor),
|
|
|
MapArea::SubDesert3 => format!("data/maps/map_desert03_0{}_0{}e.dat", self.major, self.minor),
|
|
|
MapArea::SaintMillion => "data/maps/map_boss09_00_00e.dat".into(),
|
|
|
MapArea::SaintMillion => "data/maps/map_boss09_00_00e.dat".into(),
|
|
|
|
|
|
_ => unreachable!(),
|
|
|
}
|
|
|
}
|
|
|
} else { // Offline
|
|
|
} else { // Offline
|
|
|
match self.map {
|
|
|
match self.map {
|
|
@ -859,6 +856,7 @@ impl MapVariant { |
|
|
MapArea::SubDesert2 => format!("data/maps/map_desert02_0{}_0{}e.dat", self.major, self.minor),
|
|
|
MapArea::SubDesert2 => format!("data/maps/map_desert02_0{}_0{}e.dat", self.major, self.minor),
|
|
|
MapArea::SubDesert3 => format!("data/maps/map_desert03_0{}_0{}e.dat", self.major, self.minor),
|
|
|
MapArea::SubDesert3 => format!("data/maps/map_desert03_0{}_0{}e.dat", self.major, self.minor),
|
|
|
MapArea::SaintMillion => "data/maps/map_boss09_00_00e.dat".into(),
|
|
|
MapArea::SaintMillion => "data/maps/map_boss09_00_00e.dat".into(),
|
|
|
|
|
|
_ => unreachable!(),
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@ -909,6 +907,7 @@ impl MapVariant { |
|
|
MapArea::SubDesert2 => format!("data/maps/map_desert02_0{}_0{}o.dat", self.major, self.minor),
|
|
|
MapArea::SubDesert2 => format!("data/maps/map_desert02_0{}_0{}o.dat", self.major, self.minor),
|
|
|
MapArea::SubDesert3 => format!("data/maps/map_desert03_0{}_0{}o.dat", self.major, self.minor),
|
|
|
MapArea::SubDesert3 => format!("data/maps/map_desert03_0{}_0{}o.dat", self.major, self.minor),
|
|
|
MapArea::SaintMillion => "data/maps/map_boss09_00_00o.dat".into(),
|
|
|
MapArea::SaintMillion => "data/maps/map_boss09_00_00o.dat".into(),
|
|
|
|
|
|
_ => unreachable!(),
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
} else {
|
|
|
match self.map {
|
|
|
match self.map {
|
|
@ -961,6 +960,7 @@ impl MapVariant { |
|
|
MapArea::SubDesert2 => format!("data/maps/map_desert02_0{}_0{}o.dat", self.major, self.minor),
|
|
|
MapArea::SubDesert2 => format!("data/maps/map_desert02_0{}_0{}o.dat", self.major, self.minor),
|
|
|
MapArea::SubDesert3 => format!("data/maps/map_desert03_0{}_0{}o.dat", self.major, self.minor),
|
|
|
MapArea::SubDesert3 => format!("data/maps/map_desert03_0{}_0{}o.dat", self.major, self.minor),
|
|
|
MapArea::SaintMillion => "data/maps/map_boss09_00_00o.dat".into(),
|
|
|
MapArea::SaintMillion => "data/maps/map_boss09_00_00o.dat".into(),
|
|
|
|
|
|
_ => unreachable!(),
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|