|
|
|
|
@ -1259,14 +1259,20 @@ void PlaceMiniSetRandom(const Miniset &miniset, int rndper)
|
|
|
|
|
Point SelectChamber() |
|
|
|
|
{ |
|
|
|
|
int chamber; |
|
|
|
|
if (!HasChamber1) |
|
|
|
|
chamber = PickRandomlyAmong({ 2, 3 }); |
|
|
|
|
else if (!HasChamber2) |
|
|
|
|
chamber = PickRandomlyAmong({ 3, 1 }); |
|
|
|
|
else if (!HasChamber3) |
|
|
|
|
chamber = PickRandomlyAmong({ 2, 1 }); |
|
|
|
|
else |
|
|
|
|
if (HasChamber1 && HasChamber2 && HasChamber3) { |
|
|
|
|
chamber = GenerateRnd(3) + 1; |
|
|
|
|
} else if (HasChamber1 && HasChamber2) { |
|
|
|
|
chamber = PickRandomlyAmong({ 2, 1 }); // Reverse order to match vanilla
|
|
|
|
|
} else if (HasChamber1 && HasChamber3) { |
|
|
|
|
chamber = PickRandomlyAmong({ 3, 1 }); // Reverse order to match vanilla
|
|
|
|
|
} else if (HasChamber2 && HasChamber3) { |
|
|
|
|
chamber = PickRandomlyAmong({ 2, 3 }); |
|
|
|
|
} else { |
|
|
|
|
// The dungeon generation logic ensures that chamber 2 is available if
|
|
|
|
|
// either (or both of) 1 or 3 aren't, so if we ever end up with a single
|
|
|
|
|
// chamber layout it's always chamber 2.
|
|
|
|
|
chamber = 2; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
switch (chamber) { |
|
|
|
|
case 1: |
|
|
|
|
|