v0.6.2: implemented crystal keys, adjusted vault room, and added gold chests to regular drops
This commit is contained in:
parent
65edd066e3
commit
72eb5fe090
Binary file not shown.
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
@ -73,6 +73,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.EtherealChains;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.HornOfPlenty;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.TalismanOfForesight;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.TimekeepersHourglass;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.keys.CrystalKey;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.keys.GoldenKey;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.keys.IronKey;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.keys.Key;
|
||||
|
@ -726,8 +727,8 @@ public class Hero extends Char {
|
|||
Heap heap = Dungeon.level.heaps.get( dst );
|
||||
if (heap != null && (heap.type != Type.HEAP && heap.type != Type.FOR_SALE)) {
|
||||
|
||||
if ((heap.type == Type.LOCKED_CHEST || heap.type == Type.CRYSTAL_CHEST)
|
||||
&& Notes.keyCount(new GoldenKey(Dungeon.depth)) < 1) {
|
||||
if ((heap.type == Type.LOCKED_CHEST && Notes.keyCount(new GoldenKey(Dungeon.depth)) < 1)
|
||||
|| (heap.type == Type.CRYSTAL_CHEST && Notes.keyCount(new CrystalKey(Dungeon.depth)) < 1)){
|
||||
|
||||
GLog.w( Messages.get(this, "locked_chest") );
|
||||
ready();
|
||||
|
@ -1476,8 +1477,10 @@ public class Hero extends Char {
|
|||
Heap heap = Dungeon.level.heaps.get( ((HeroAction.OpenChest)curAction).dst );
|
||||
if (heap.type == Type.SKELETON || heap.type == Type.REMAINS) {
|
||||
Sample.INSTANCE.play( Assets.SND_BONES );
|
||||
} else if (heap.type == Type.LOCKED_CHEST || heap.type == Type.CRYSTAL_CHEST){
|
||||
} else if (heap.type == Type.LOCKED_CHEST){
|
||||
Notes.remove(new GoldenKey(Dungeon.depth));
|
||||
} else if (heap.type == Type.CRYSTAL_CHEST){
|
||||
Notes.remove(new CrystalKey(Dungeon.depth));
|
||||
}
|
||||
StatusPane.needsKeyUpdate = true;
|
||||
heap.open( this );
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
/*
|
||||
* Pixel Dungeon
|
||||
* Copyright (C) 2012-2015 Oleg Dolya
|
||||
*
|
||||
* Shattered Pixel Dungeon
|
||||
* Copyright (C) 2014-2017 Evan Debenham
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
package com.shatteredpixel.shatteredpixeldungeon.items.keys;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||
|
||||
public class CrystalKey extends Key {
|
||||
|
||||
{
|
||||
image = ItemSpriteSheet.CRYSTAL_KEY;
|
||||
}
|
||||
|
||||
public CrystalKey() {
|
||||
this( 0 );
|
||||
}
|
||||
|
||||
public CrystalKey( int depth ) {
|
||||
super();
|
||||
this.depth = depth;
|
||||
}
|
||||
|
||||
}
|
|
@ -30,7 +30,9 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.Heap;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.Artifact;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.journal.GuidePage;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.keys.GoldenKey;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Document;
|
||||
|
@ -318,7 +320,16 @@ public abstract class RegularLevel extends Level {
|
|||
map[cell] = Terrain.GRASS;
|
||||
losBlocking[cell] = false;
|
||||
}
|
||||
drop( Generator.random(), cell ).type = type;
|
||||
|
||||
Item toDrop = Generator.random();
|
||||
if ((toDrop instanceof Artifact && Random.Int(2) > 0) ||
|
||||
(toDrop.isUpgradable() && Random.Int(2 + toDrop.level()) > 0)){
|
||||
drop( toDrop, cell ).type = Heap.Type.LOCKED_CHEST;
|
||||
addItemToSpawn(new GoldenKey(Dungeon.depth));
|
||||
} else {
|
||||
drop( toDrop, cell ).type = type;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for (Item item : itemsToSpawn) {
|
||||
|
|
|
@ -25,7 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.Heap;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.keys.GoldenKey;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.keys.CrystalKey;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.keys.IronKey;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
||||
|
@ -50,14 +50,6 @@ public class VaultRoom extends SpecialRoom {
|
|||
|
||||
Random.shuffle(prizeClasses);
|
||||
|
||||
switch (Random.Int( 3 )) {
|
||||
|
||||
case 0:
|
||||
level.drop( prize( level ), c ).type = Heap.Type.LOCKED_CHEST;
|
||||
level.addItemToSpawn( new GoldenKey( Dungeon.depth ) );
|
||||
break;
|
||||
|
||||
case 1:
|
||||
Item i1, i2;
|
||||
do {
|
||||
i1 = prize( level );
|
||||
|
@ -65,14 +57,7 @@ public class VaultRoom extends SpecialRoom {
|
|||
} while (i1.getClass() == i2.getClass());
|
||||
level.drop( i1, c ).type = Heap.Type.CRYSTAL_CHEST;
|
||||
level.drop( i2, c + PathFinder.NEIGHBOURS8[Random.Int( 8 )]).type = Heap.Type.CRYSTAL_CHEST;
|
||||
level.addItemToSpawn( new GoldenKey( Dungeon.depth ) );
|
||||
break;
|
||||
|
||||
case 2:
|
||||
level.drop( prize( level ), c );
|
||||
Painter.set( level, c, Terrain.PEDESTAL );
|
||||
break;
|
||||
}
|
||||
level.addItemToSpawn( new CrystalKey( Dungeon.depth ) );
|
||||
|
||||
entrance().set( Door.Type.LOCKED );
|
||||
level.addItemToSpawn( new IronKey( Dungeon.depth ) );
|
||||
|
|
|
@ -106,10 +106,11 @@ public class ItemSpriteSheet {
|
|||
public static final int SHATTPOT = SINGLE_USE+8;
|
||||
public static final int IRON_KEY = SINGLE_USE+9;
|
||||
public static final int GOLDEN_KEY = SINGLE_USE+10;
|
||||
public static final int SKELETON_KEY = SINGLE_USE+11;
|
||||
public static final int MASTERY = SINGLE_USE+12;
|
||||
public static final int KIT = SINGLE_USE+13;
|
||||
public static final int AMULET = SINGLE_USE+14;
|
||||
public static final int CRYSTAL_KEY = SINGLE_USE+11;
|
||||
public static final int SKELETON_KEY = SINGLE_USE+13;
|
||||
public static final int MASTERY = SINGLE_USE+14;
|
||||
public static final int KIT = SINGLE_USE+15;
|
||||
public static final int AMULET = SINGLE_USE+16;
|
||||
static{
|
||||
assignItemRect(ANKH, 10, 16);
|
||||
assignItemRect(STYLUS, 12, 13);
|
||||
|
@ -122,6 +123,7 @@ public class ItemSpriteSheet {
|
|||
assignItemRect(SHATTPOT, 14, 12);
|
||||
assignItemRect(IRON_KEY, 8, 14);
|
||||
assignItemRect(GOLDEN_KEY, 8, 14);
|
||||
assignItemRect(CRYSTAL_KEY, 8, 14);
|
||||
assignItemRect(SKELETON_KEY, 8, 14);
|
||||
assignItemRect(MASTERY, 13, 16);
|
||||
assignItemRect(KIT, 16, 15);
|
||||
|
|
|
@ -401,7 +401,10 @@ items.journal.guidepage.desc=A torn page from an adventuring guidebook.\n\nMost
|
|||
|
||||
###keys
|
||||
items.keys.goldenkey.name=golden key
|
||||
items.keys.goldenkey.desc=The notches on this golden key are tiny and intricate. Maybe it can open some chest lock?
|
||||
items.keys.goldenkey.desc=The notches on this golden key are tiny and intricate. Perhaps it will open a locked chest?
|
||||
|
||||
items.keys.crystalkey.name=Crystal key
|
||||
items.keys.crystalkey.desc=The cut surfaces of this crystalline key shimmer in the darkness. Perhaps it will open a crystal chest?
|
||||
|
||||
items.keys.ironkey.name=iron key
|
||||
items.keys.ironkey.desc=The notches on this ancient iron key are well worn; its leather lanyard is battered by age. What door might it open?
|
||||
|
@ -1019,7 +1022,7 @@ items.heap.chest_desc=You won't know what's inside until you open it!
|
|||
items.heap.locked_chest=Locked chest
|
||||
items.heap.locked_chest_desc=You won't know what's inside until you open it! But to open it you need a golden key.
|
||||
items.heap.crystal_chest=Crystal chest
|
||||
items.heap.crystal_chest_desc=You can see %s inside, but to open the chest you need a golden key.
|
||||
items.heap.crystal_chest_desc=You can see _%s_ inside, but to open the chest you need a crystal key.
|
||||
items.heap.artifact=an artifact
|
||||
items.heap.wand=a wand
|
||||
items.heap.ring=a ring
|
||||
|
|
Loading…
Reference in New Issue
Block a user