v2.1.0: fixed randomUsingDefaults still using deck for weapon generation

This commit is contained in:
Evan Debenham
2023-05-24 23:32:30 -04:00
parent 8c6a45a9c9
commit 13fb3387e7
@@ -598,7 +598,11 @@ public class Generator {
//overrides any deck systems and always uses default probs //overrides any deck systems and always uses default probs
// except for artifacts, which must always use a deck // except for artifacts, which must always use a deck
public static Item randomUsingDefaults( Category cat ){ public static Item randomUsingDefaults( Category cat ){
if (cat.defaultProbs == null || cat == Category.ARTIFACT) { if (cat == Category.WEAPON){
return randomWeapon(true);
} else if (cat == Category.MISSILE){
return randomMissile(true);
} else if (cat.defaultProbs == null || cat == Category.ARTIFACT) {
return random(cat); return random(cat);
} else { } else {
return ((Item) Reflection.newInstance(cat.classes[Random.chances(cat.defaultProbs)])).random(); return ((Item) Reflection.newInstance(cat.classes[Random.chances(cat.defaultProbs)])).random();
@@ -635,10 +639,23 @@ public class Generator {
} }
public static MeleeWeapon randomWeapon(int floorSet) { public static MeleeWeapon randomWeapon(int floorSet) {
return randomWeapon(floorSet, false);
}
public static MeleeWeapon randomWeapon(boolean useDefaults) {
return randomWeapon(Dungeon.depth / 5, false);
}
public static MeleeWeapon randomWeapon(int floorSet, boolean useDefaults) {
floorSet = (int)GameMath.gate(0, floorSet, floorSetTierProbs.length-1); floorSet = (int)GameMath.gate(0, floorSet, floorSetTierProbs.length-1);
MeleeWeapon w = (MeleeWeapon)random(wepTiers[Random.chances(floorSetTierProbs[floorSet])]); MeleeWeapon w;
if (useDefaults){
w = (MeleeWeapon) randomUsingDefaults(wepTiers[Random.chances(floorSetTierProbs[floorSet])]);
} else {
w = (MeleeWeapon) random(wepTiers[Random.chances(floorSetTierProbs[floorSet])]);
}
w.random(); w.random();
return w; return w;
} }
@@ -656,10 +673,23 @@ public class Generator {
} }
public static MissileWeapon randomMissile(int floorSet) { public static MissileWeapon randomMissile(int floorSet) {
return randomMissile(floorSet, false);
}
public static MissileWeapon randomMissile(boolean useDefaults) {
return randomMissile(Dungeon.depth / 5, useDefaults);
}
public static MissileWeapon randomMissile(int floorSet, boolean useDefaults) {
floorSet = (int)GameMath.gate(0, floorSet, floorSetTierProbs.length-1); floorSet = (int)GameMath.gate(0, floorSet, floorSetTierProbs.length-1);
MissileWeapon w = (MissileWeapon)random(misTiers[Random.chances(floorSetTierProbs[floorSet])]); MissileWeapon w;
if (useDefaults){
w = (MissileWeapon)randomUsingDefaults(misTiers[Random.chances(floorSetTierProbs[floorSet])]);
} else {
w = (MissileWeapon)random(misTiers[Random.chances(floorSetTierProbs[floorSet])]);
}
w.random(); w.random();
return w; return w;
} }