v0.2.2a: refactored and tweaked placement of key items in rooms.
This commit is contained in:
@@ -447,16 +447,27 @@ public abstract class Level implements Bundlable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: this results in lots of empty rooms that could otherwise have a prize, should rework, also fix typo.
|
public Item findPrizeItem(){ return findPrizeItem(null); }
|
||||||
public Item itemToSpanAsPrize() {
|
|
||||||
if (Random.Int( itemsToSpawn.size() + 1 ) > 0) {
|
public Item findPrizeItem(Class<?extends Item> match){
|
||||||
Item item = Random.element( itemsToSpawn );
|
if (itemsToSpawn.size() == 0)
|
||||||
itemsToSpawn.remove( item );
|
return null;
|
||||||
return item;
|
|
||||||
} else {
|
if (match == null){
|
||||||
return null;
|
Item item = Random.element(itemsToSpawn);
|
||||||
}
|
itemsToSpawn.remove(item);
|
||||||
}
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Item item : itemsToSpawn){
|
||||||
|
if (match.isInstance(item)){
|
||||||
|
itemsToSpawn.remove( item );
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private void buildFlagMaps() {
|
private void buildFlagMaps() {
|
||||||
|
|
||||||
|
|||||||
@@ -71,13 +71,10 @@ public class LaboratoryPainter extends Painter {
|
|||||||
|
|
||||||
private static Item prize( Level level ) {
|
private static Item prize( Level level ) {
|
||||||
|
|
||||||
Item prize = level.itemToSpanAsPrize();
|
Item prize = level.findPrizeItem( Potion.class );
|
||||||
if (prize instanceof Potion) {
|
if (prize == null)
|
||||||
return prize;
|
prize = Generator.random( Generator.Category.POTION );
|
||||||
} else if (prize != null) {
|
|
||||||
level.addItemToSpawn( prize );
|
|
||||||
}
|
|
||||||
|
|
||||||
return Generator.random( Generator.Category.POTION );
|
return prize;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,13 +78,10 @@ public class LibraryPainter extends Painter {
|
|||||||
|
|
||||||
private static Item prize( Level level ) {
|
private static Item prize( Level level ) {
|
||||||
|
|
||||||
Item prize = level.itemToSpanAsPrize();
|
Item prize = level.findPrizeItem( Scroll.class );
|
||||||
if (prize instanceof Scroll) {
|
if (prize == null)
|
||||||
return prize;
|
prize = Generator.random( Generator.Category.SCROLL );
|
||||||
} else if (prize != null) {
|
|
||||||
level.addItemToSpawn( prize );
|
|
||||||
}
|
|
||||||
|
|
||||||
return Generator.random( Generator.Category.SCROLL );
|
return prize;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,10 +76,11 @@ public class PitPainter extends Painter {
|
|||||||
|
|
||||||
private static Item prize( Level level ) {
|
private static Item prize( Level level ) {
|
||||||
|
|
||||||
Item prize = level.itemToSpanAsPrize();
|
if (Random.Int(2) != 0){
|
||||||
if (prize != null) {
|
Item prize = level.findPrizeItem();
|
||||||
return prize;
|
if (prize != null)
|
||||||
}
|
return prize;
|
||||||
|
}
|
||||||
|
|
||||||
return Generator.random( Random.oneOf(
|
return Generator.random( Random.oneOf(
|
||||||
Generator.Category.POTION,
|
Generator.Category.POTION,
|
||||||
|
|||||||
@@ -83,26 +83,29 @@ public class PoolPainter extends Painter {
|
|||||||
|
|
||||||
private static Item prize( Level level ) {
|
private static Item prize( Level level ) {
|
||||||
|
|
||||||
Item prize = level.itemToSpanAsPrize();
|
Item prize;
|
||||||
if (prize != null) {
|
|
||||||
return prize;
|
|
||||||
}
|
|
||||||
|
|
||||||
prize = Generator.random( Random.oneOf(
|
if (Random.Int(3) != 0){
|
||||||
Generator.Category.WEAPON,
|
prize = level.findPrizeItem();
|
||||||
Generator.Category.ARMOR
|
if (prize != null)
|
||||||
) );
|
return prize;
|
||||||
|
}
|
||||||
|
|
||||||
for (int i=0; i < 4; i++) {
|
prize = Generator.random( Random.oneOf(
|
||||||
Item another = Generator.random( Random.oneOf(
|
Generator.Category.WEAPON,
|
||||||
Generator.Category.WEAPON,
|
Generator.Category.ARMOR
|
||||||
Generator.Category.ARMOR
|
) );
|
||||||
) );
|
|
||||||
if (another.level > prize.level) {
|
|
||||||
prize = another;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return prize;
|
for (int i=0; i < 4; i++) {
|
||||||
|
Item another = Generator.random( Random.oneOf(
|
||||||
|
Generator.Category.WEAPON,
|
||||||
|
Generator.Category.ARMOR
|
||||||
|
) );
|
||||||
|
if (another.level > prize.level) {
|
||||||
|
prize = another;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return prize;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,10 +49,11 @@ public class StoragePainter extends Painter {
|
|||||||
|
|
||||||
private static Item prize( Level level ) {
|
private static Item prize( Level level ) {
|
||||||
|
|
||||||
Item prize = level.itemToSpanAsPrize();
|
if (Random.Int(2) != 0){
|
||||||
if (prize != null) {
|
Item prize = level.findPrizeItem();
|
||||||
return prize;
|
if (prize != null)
|
||||||
}
|
return prize;
|
||||||
|
}
|
||||||
|
|
||||||
return Generator.random( Random.oneOf(
|
return Generator.random( Random.oneOf(
|
||||||
Generator.Category.POTION,
|
Generator.Category.POTION,
|
||||||
|
|||||||
@@ -79,10 +79,13 @@ public class TrapsPainter extends Painter {
|
|||||||
|
|
||||||
private static Item prize( Level level ) {
|
private static Item prize( Level level ) {
|
||||||
|
|
||||||
Item prize = level.itemToSpanAsPrize();
|
Item prize;
|
||||||
if (prize != null) {
|
|
||||||
return prize;
|
if (Random.Int(4) != 0){
|
||||||
}
|
prize = level.findPrizeItem();
|
||||||
|
if (prize != null)
|
||||||
|
return prize;
|
||||||
|
}
|
||||||
|
|
||||||
prize = Generator.random( Random.oneOf(
|
prize = Generator.random( Random.oneOf(
|
||||||
Generator.Category.WEAPON,
|
Generator.Category.WEAPON,
|
||||||
|
|||||||
Reference in New Issue
Block a user