v0.7.0: adjusted the spawn mechanics of alchemy rooms, and spawnrates of some consumables
This commit is contained in:
parent
b6cfc6db56
commit
9fc8ec2f0d
|
@ -54,7 +54,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfInvisibility;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfLevitation;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfLiquidFlame;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfMight;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfMindVision;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfParalyticGas;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfPurity;
|
||||
|
@ -76,7 +75,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfIdentify;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfLullaby;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMagicMapping;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMagicalInfusion;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMirrorImage;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfPsionicBlast;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRage;
|
||||
|
@ -218,34 +216,35 @@ public class Generator {
|
|||
GOLD.probs = new float[]{ 1 };
|
||||
|
||||
SCROLL.classes = new Class<?>[]{
|
||||
ScrollOfUpgrade.class, //3 drop every chapter, see Dungeon.souNeeded()
|
||||
ScrollOfIdentify.class,
|
||||
ScrollOfTeleportation.class,
|
||||
ScrollOfRemoveCurse.class,
|
||||
ScrollOfUpgrade.class,
|
||||
ScrollOfRecharging.class,
|
||||
ScrollOfMagicMapping.class,
|
||||
ScrollOfRage.class,
|
||||
ScrollOfTerror.class,
|
||||
ScrollOfMirrorImage.class,
|
||||
ScrollOfRecharging.class,
|
||||
ScrollOfLullaby.class,
|
||||
ScrollOfMagicalInfusion.class,
|
||||
ScrollOfPsionicBlast.class,
|
||||
ScrollOfMirrorImage.class };
|
||||
SCROLL.probs = new float[]{ 30, 10, 20, 0, 15, 15, 12, 8, 8, 0, 4, 10 };
|
||||
ScrollOfRage.class,
|
||||
ScrollOfTeleportation.class,
|
||||
ScrollOfTerror.class,
|
||||
/*ScrollOfTransmutation.class*/ //1 additional scroll guaranteed on floors 6-19
|
||||
};
|
||||
SCROLL.probs = new float[]{ 0, 6, 4, 3, 3, 3, 2, 2, 2, 2, 2/*, 1*/ };
|
||||
|
||||
POTION.classes = new Class<?>[]{
|
||||
PotionOfStrength.class, //2 drop every chapter, see Dungeon.posNeeded()
|
||||
PotionOfHealing.class,
|
||||
PotionOfExperience.class,
|
||||
PotionOfToxicGas.class,
|
||||
PotionOfParalyticGas.class,
|
||||
PotionOfLiquidFlame.class,
|
||||
PotionOfLevitation.class,
|
||||
PotionOfStrength.class,
|
||||
PotionOfMindVision.class,
|
||||
PotionOfPurity.class,
|
||||
PotionOfFrost.class,
|
||||
PotionOfLiquidFlame.class,
|
||||
PotionOfToxicGas.class,
|
||||
/* PotionOfHaste.class */
|
||||
PotionOfInvisibility.class,
|
||||
PotionOfMight.class,
|
||||
PotionOfFrost.class };
|
||||
POTION.probs = new float[]{ 45, 4, 15, 10, 15, 10, 0, 20, 12, 10, 0, 10 };
|
||||
PotionOfLevitation.class,
|
||||
PotionOfParalyticGas.class,
|
||||
PotionOfPurity.class,
|
||||
PotionOfExperience.class};
|
||||
POTION.probs = new float[]{ 0, 6, 4, 3, 3, 3, /*2,*/ 2, 2, 2, 2, 1 };
|
||||
|
||||
//TODO: add last ones when implemented
|
||||
WAND.classes = new Class<?>[]{
|
||||
|
|
|
@ -42,9 +42,9 @@ import com.watabou.utils.Random;
|
|||
|
||||
import java.util.HashMap;
|
||||
|
||||
//TODO specific implementation
|
||||
public class SecretLaboratoryRoom extends SecretRoom {
|
||||
|
||||
//TODO adjust based on changes to generator chances
|
||||
private static HashMap<Class<? extends Potion>, Float> potionChances = new HashMap<>();
|
||||
static{
|
||||
potionChances.put(PotionOfHealing.class, 2f);
|
||||
|
@ -70,7 +70,7 @@ public class SecretLaboratoryRoom extends SecretRoom {
|
|||
Painter.set( level, pot, Terrain.ALCHEMY );
|
||||
|
||||
Alchemy alchemy = new Alchemy();
|
||||
alchemy.seed( level, pot.x + level.width() * pot.y, Random.IntRange(30, 60) );
|
||||
alchemy.seed( level, pot.x + level.width() * pot.y, Random.IntRange(20, 30) );
|
||||
level.blobs.put( Alchemy.class, alchemy );
|
||||
|
||||
int n = Random.IntRange( 2, 3 );
|
||||
|
|
|
@ -40,7 +40,6 @@ import com.watabou.utils.Random;
|
|||
|
||||
import java.util.HashMap;
|
||||
|
||||
//TODO specific implementation
|
||||
public class SecretLibraryRoom extends SecretRoom {
|
||||
|
||||
@Override
|
||||
|
@ -53,6 +52,7 @@ public class SecretLibraryRoom extends SecretRoom {
|
|||
return Math.max(7, super.minHeight());
|
||||
}
|
||||
|
||||
//TODO adjust based on changes to generator chances
|
||||
private static HashMap<Class<? extends Scroll>, Float> scrollChances = new HashMap<>();
|
||||
static{
|
||||
scrollChances.put( ScrollOfIdentify.class, 1f );
|
||||
|
|
|
@ -25,7 +25,6 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Alchemy;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.keys.IronKey;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
||||
|
@ -55,10 +54,11 @@ public class LaboratoryRoom extends SpecialRoom {
|
|||
Painter.set( level, pot, Terrain.ALCHEMY );
|
||||
|
||||
Alchemy alchemy = new Alchemy();
|
||||
alchemy.seed( level, pot.x + level.width() * pot.y, Random.IntRange(25, 50) );
|
||||
int chapter = 1 + Dungeon.depth/5;
|
||||
alchemy.seed( level, pot.x + level.width() * pot.y, chapter*10 + Random.IntRange(0, 20) );
|
||||
level.blobs.put( Alchemy.class, alchemy );
|
||||
|
||||
int n = Random.IntRange( 2, 3 );
|
||||
int n = Random.IntRange( 1, 2 );
|
||||
for (int i=0; i < n; i++) {
|
||||
int pos;
|
||||
do {
|
||||
|
@ -69,8 +69,7 @@ public class LaboratoryRoom extends SpecialRoom {
|
|||
level.drop( prize( level ), pos );
|
||||
}
|
||||
|
||||
entrance.set( Door.Type.LOCKED );
|
||||
level.addItemToSpawn( new IronKey( Dungeon.depth ) );
|
||||
entrance.set( Door.Type.REGULAR );
|
||||
}
|
||||
|
||||
private static Item prize( Level level ) {
|
||||
|
|
|
@ -30,7 +30,6 @@ import com.watabou.utils.Random;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
||||
public class SpecialRoom extends Room {
|
||||
|
||||
|
@ -61,7 +60,7 @@ public class SpecialRoom extends Room {
|
|||
|
||||
private static final ArrayList<Class<? extends SpecialRoom>> ALL_SPEC = new ArrayList<>( Arrays.asList(
|
||||
WeakFloorRoom.class, MagicWellRoom.class, CryptRoom.class, PoolRoom.class, GardenRoom.class, LibraryRoom.class, ArmoryRoom.class,
|
||||
TreasuryRoom.class, TrapsRoom.class, StorageRoom.class, StatueRoom.class, LaboratoryRoom.class, VaultRoom.class
|
||||
TreasuryRoom.class, TrapsRoom.class, StorageRoom.class, StatueRoom.class, VaultRoom.class
|
||||
) );
|
||||
|
||||
public static ArrayList<Class<? extends Room>> runSpecials = new ArrayList<>();
|
||||
|
@ -79,18 +78,17 @@ public class SpecialRoom extends Room {
|
|||
}
|
||||
|
||||
public static void initForFloor(){
|
||||
//laboratory rooms are more common
|
||||
int labIdx = runSpecials.indexOf(LaboratoryRoom.class);
|
||||
if (labIdx > 0) {
|
||||
Collections.swap(runSpecials, labIdx-1, labIdx);
|
||||
}
|
||||
|
||||
floorSpecials = (ArrayList<Class<?extends Room>>) runSpecials.clone();
|
||||
|
||||
//laboratory rooms spawn at set intervals every chapter
|
||||
if (Dungeon.depth%5 == (Dungeon.seed%3 + 2)){
|
||||
floorSpecials.add(0, LaboratoryRoom.class);
|
||||
}
|
||||
}
|
||||
|
||||
private static void useType( Class<?extends Room> type ) {
|
||||
floorSpecials.remove( type );
|
||||
if (runSpecials.remove( type )) {
|
||||
floorSpecials.remove( type );
|
||||
runSpecials.add( type );
|
||||
}
|
||||
}
|
||||
|
@ -109,7 +107,6 @@ public class SpecialRoom extends Room {
|
|||
|
||||
floorSpecials.remove( ArmoryRoom.class );
|
||||
floorSpecials.remove( CryptRoom.class );
|
||||
floorSpecials.remove( LaboratoryRoom.class );
|
||||
floorSpecials.remove( LibraryRoom.class );
|
||||
floorSpecials.remove( StatueRoom.class );
|
||||
floorSpecials.remove( TreasuryRoom.class );
|
||||
|
@ -126,6 +123,11 @@ public class SpecialRoom extends Room {
|
|||
guaranteedWellDepth = Integer.MAX_VALUE;
|
||||
return r;
|
||||
|
||||
} else if (floorSpecials.contains(LaboratoryRoom.class)) {
|
||||
|
||||
useType(LaboratoryRoom.class);
|
||||
return new LaboratoryRoom();
|
||||
|
||||
} else {
|
||||
|
||||
if (Dungeon.bossLevel(Dungeon.depth + 1)){
|
||||
|
|
Loading…
Reference in New Issue
Block a user