v0.2.3: artifact refactoring, changed how new artifacts deal with collections of items.

This commit is contained in:
Evan Debenham 2014-12-10 14:53:05 -05:00
parent e359b5f9ef
commit 1104f6473b
3 changed files with 22 additions and 10 deletions

View File

@ -6,7 +6,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfExperience;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
@ -51,12 +50,14 @@ public class AlchemistsToolkit extends Artifact {
public AlchemistsToolkit() {
super();
Generator.Category cat = Generator.Category.POTION;
for (int i = 1; i <= 3; i++){
Potion potion;
String potion;
do{
potion = (Potion)Generator.random(Generator.Category.POTION);
} while (combination.contains(potion.trueName()) || potion instanceof PotionOfExperience);
combination.add(potion.trueName());
potion = convertName(cat.classes[Random.chances(cat.probs)].getSimpleName());
//forcing the player to use experience potions would be completely unfair.
} while (combination.contains(potion) || potion.equals("Experience"));
combination.add(potion);
}
}
@ -242,7 +243,7 @@ public class AlchemistsToolkit extends Artifact {
@Override
public void onSelect(Item item) {
if (item != null && item instanceof Potion && item.isIdentified()){
if (!curGuess.contains(item.name())) {
if (!curGuess.contains(convertName(item.getClass().getSimpleName()))) {
Hero hero = Dungeon.hero;
hero.sprite.operate( hero.pos );
@ -252,7 +253,7 @@ public class AlchemistsToolkit extends Artifact {
item.detach(hero.belongings.backpack);
curGuess.add(item.name());
curGuess.add(convertName(item.getClass().getSimpleName()));
if (curGuess.size() == 3){
guessBrew();
} else {

View File

@ -205,6 +205,17 @@ public class Artifact extends KindofMisc {
return null;
}
//converts class names to be more concise and readable.
protected String convertName(String className){
//removes known redundant parts of names.
className.replaceFirst("ScrollOf|PotionOf", "");
//inserts a space infront of every uppercase character
className.replaceAll("(\\p{Ll})(\\p{Lu})", "$1 $2");
return className;
};
@Override
public Item random() {
if (Random.Float() < 0.3f) {

View File

@ -55,11 +55,11 @@ public class UnstableSpellbook extends Artifact {
super();
Class<?>[] scrollClasses = Generator.Category.SCROLL.classes;
float[] probs = Generator.Category.SCROLL.probs.clone();
float[] probs = Generator.Category.SCROLL.probs.clone(); //array of primitives, clone gives deep copy.
int i = Random.chances(probs);
while (i != -1){
scrolls.add(scrollClasses[i].getSimpleName());
scrolls.add(convertName(scrollClasses[i].getSimpleName()));
probs[i] = 0;
i = Random.chances(probs);
@ -207,7 +207,7 @@ public class UnstableSpellbook extends Artifact {
@Override
public void onSelect(Item item) {
if (item != null && item instanceof Scroll && item.isIdentified()){
String scroll = item.getClass().getSimpleName();
String scroll = convertName(item.getClass().getSimpleName());
Hero hero = Dungeon.hero;
for (int i = 0; ( i <= 1 && i < scrolls.size() ); i++){
if (scrolls.get(i).equals(scroll)){