Update 0.6.5.0-Alpha5.2

This commit is contained in:
LingASDJ 2023-10-02 03:14:35 +08:00
parent db3326416d
commit 6611615a13
43 changed files with 298 additions and 174 deletions

View File

@ -18,8 +18,8 @@ allprojects {
appName = 'Magic Ling Pixel Dungeon'
appPackageName = 'com.ansdomagiclingpixeldungeon.ling'
appVersionCode =907700
appVersionName = '0.6.5.0-Alpha5.1'
appVersionCode =907750
appVersionName = '0.6.5.0-Alpha5.2'
appJavaCompatibility = JavaVersion.VERSION_11

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -415,8 +415,8 @@ custom.testmode.mobplacer.elite_name9=失败体
custom.testmode.mobplacer.elite_name10=爆炸体
custom.testmode.mobplacer.elite_name11=完全体
custom.testmode.mobplacer.elite_name12=危险体
custom.testmode.mobplacer.elite_name13=烟雾
custom.testmode.mobplacer.elite_name14=酸液
custom.testmode.mobplacer.elite_name13=酸液
custom.testmode.mobplacer.elite_name14=烟雾
custom.testmode.mobplacer.elite_name15=[友好[

View File

@ -444,7 +444,7 @@ items.bags.kingbag.desc=矮人国王的€定制背包€,好东西,就要
items.weapon.melee.runicblade.name=贤者之剑
items.weapon.melee.runicblade.stats_desc=这把武器可以在战斗中获得更多的伤害!
items.weapon.melee.runicblade.stats_desc=这把武器可以在升级中获得更多的伤害!
items.weapon.melee.runicblade.cooldown=贤者之剑正在重新聚集魔力。在充能过程中其近战伤害将提高。\n贤者之剑将在%s回合后充能完毕。
items.weapon.melee.runicblade.ac_zap=释放
items.weapon.melee.runicblade.fizzles=你的贤者之剑滋滋作响;一定是没有足够的能量。
@ -678,6 +678,7 @@ items.artifacts.cloakofshadows.ac_bloodbat=召唤伙伴
items.artifacts.driedrose.name=干枯玫瑰
items.artifacts.driedrose.ac_summon=召唤
items.artifacts.driedrose.sorry=冒险者,我要去陪我的爱人了……
items.artifacts.driedrose.ac_direct=指引
items.artifacts.driedrose.ac_outfit=装备
items.artifacts.driedrose.spawned=你已经召唤出幽灵了。

View File

@ -305,7 +305,7 @@ paswordbadges$badge.night_cat.desc=在现实时间的夜间单局游玩超过600
challenges.no_food=缩餐节食
challenges.no_food_desc=食物本就稀缺,但你还需要注意节食!\n\n・使用各类食物与丰饶之角的饱腹效果为原本的三分之一。\n・其他恢复饥饿的机制不受影响。
challenges.no_armor=无甲之身
challenges.no_armor_desc=要相信自己,因为不能相信护甲了!\n\n・布甲之外所有常规护甲被禁止生成。\n・布甲被升级时增长的防御力大幅降低。\n・灵壤守护者的防御力大幅降低。\n\n_地牢环境已发生改变请小心应对。(种子物品有生成变动)_
challenges.no_armor_desc=要相信自己,因为不能相信护甲了!\n\n・布甲之外所有常规护甲被禁止生成。\n・布甲被升级时增长的防御力大幅降低。\n・灵壤守护者的防御力大幅降低。
challenges.no_healing=恐药异症
challenges.no_healing_desc=治疗药水真是种好东西,可惜你对它过敏!\n\n・治疗药水以及使用治疗药水炼制的道具将无法治愈英雄反而会使英雄中毒。\n・炼金催化剂不会随机到治愈英雄或使英雄中毒的效果。\n・这些道具对其他角色依然发挥正常效果。
challenges.no_herbalism=荒芜之地
@ -347,8 +347,8 @@ challenges.exsg_desc=药水癔症详细规则:\n力量药水--60%概率力量-
challenges.icedied = 雪虐风饕(未完成)
challenges.icedied_desc=很显然,地牢的雪越下越大了,在这严寒里面,生存的法则将进一步让我们活得更久。\n篝火房间一旦被激活不再无限变成40回合的寒冷抑制商人会贩卖更多特殊物品。
challenges.morelevel=变幻莫测(中秋实装)
challenges.morelevel_desc=地牢在时间的长河中渐渐的诞生了更多地形,这次探索地牢谁知道能遇到什么?\n\n_地牢环境已发生改变请小心应对。
challenges.morelevel=变幻莫测(今晚实装)
challenges.morelevel_desc=地牢在时间的长河中渐渐的诞生了更多地形,这次探索地牢谁知道能遇到什么?\n\n新增6种全新地形感知,6个特殊新怪物。\n\n_地牢环境已发生改变请小心应对_\n\n(每层必定触发地形感知,且全部均为大型地形)_
challenges.dhxd =灯火前路
challenges.dhxd_desc= 灯火指引着前进的道路,提灯引路,灯火前行! \n\n此为三挑以上的特殊机制但你也可以直接开启它!\n\n1.追加灯火祝福和魔女诅咒机制,灯火会随着深入楼层进行降低\n2.在较低的灯火下死亡会精神崩溃,诞生自己的暗影。\n3.追加提灯和灯油,合理使用这些道具,让自己能在灯火祝福中活下去!如果不幸遭到魔女的诅咒,也不会让你陷入绝境。\n\n灯火不灭希望仍在提灯引路灯火前行
@ -356,8 +356,7 @@ challenges.dhxd_desc= 灯火指引着前进的道路,提灯引路,灯火前
challenges.cs=挑战(占位符)
challenges.cs_desc=这并不是挑战,请忽略不计。
challenges.no_armorx = 这片大地吃布甲之外的护甲从不挑食,侦查到作弊行为,已移除。
challenges.no_armorx = 这片大地吃布甲之外的护甲从不挑食,侦查到非布甲的护甲,系统已自动移除。
kill=\n_冰雪魔女:_\n_-_生命+25%\n_-_ 水中召唤的仆从更多\n-击败时必定掉落紫金宝石护符\n_矮人大师:_\n_-_ 致命技能更加频繁\n_-_ 生命值+50%\n-击败时必定掉落自然神圣护符\n_史莱姆王:_\n_-_ 生命值+100%\n_-_ 伤害更高,速度更快\n_-_ 在开局额外召唤豺狼诡术师,巨钳螃蟹,腐臭老鼠,蚀化史莱姆\n_-_ 击败时必定掉落凝胶手套\n_DM720:_\n_-_ 获得全新技能\n_-_ 击败时必定掉落DM150控制终端[尚未完成]

View File

@ -558,4 +558,7 @@ ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x84=1.修复酸液体和爆炸体权
ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x85=1.修复酸液体和爆炸体权重错误的问题\n2.修复一些少量错误
ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x86=1开发者模式下召唤的恶魔血巢可以移动和攻击攻击无动画且时间长移动也无动画且移动后贴图和实际位置会不同已处理处理方式移除\n2修复开发者模式下召唤烟雾体实际上召唤的是酸液体\n3开启缩餐节食下幽灵的小月饼会消失ling以知晓已处理处理方式食物即刻起正常生成\n4碧灰双刃的伤害固定极化安息强化符石额外力量均无法影响\n5种子鞋的腐梅效果使用后会出现一个腐梅种子\n6弱肉强食成就获取后每有怪物死亡就会在右下角播报ling以知晓潘多拉已修复该问题\n7焰浪法杖加一只有2点充能ling以知晓已处理处理方式换成upgrade函数\n8拟态王宝藏没获取第一个后续宝藏会消失ling以知晓潘多拉已修复该问题,Ling已进行改进\n9水晶宝箱怪会飞潘多拉已修复该问题\n10部分boss墙壁会消失推测是因为吊桥楼层原因已尝试修复需要玩家验证\n11br可以通过升降器去到28层以后的楼层\n12共生法杖可以通过奥术聚酯升级ling以知晓\n13催眠符石有俩个效果\n14快捷合成表部分图标错误已处理\n15修复部分楼层转换错误。
//ui.changelist.mlpd.vm0_5_x_changes.xxx//

View File

@ -94,7 +94,7 @@ public class Assets {
public static final String TILES_DIED = "environment/tiles_died.png";
public static final String TILES_GOLD = "environment/tiles_gold.png";
public static final String WATER_COLD= "environment/water2.png";
public static final String WATER_COLD= "environment/water-1.png";
public static final String PRISON_EXIT_OLD = "environment/custom_tiles/prison_exit_old.png";
public static final String PRISON_EXIT_NEW = "environment/custom_tiles/prison_exit_new.png";
public static final String P_BOSS = "environment/custom_tiles/p_boss.png";

View File

@ -28,7 +28,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClassArmor;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClothArmor;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.custom.CustomArmor;
import com.shatteredpixel.shatteredpixeldungeon.items.food.SmallRation;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.InterlevelScene;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
@ -53,7 +52,7 @@ public class Challenges {
public static final int PRO = 32768;
public static final int MORELEVEL = 65536;
public static final int MOREROOM = 65536;
public static final int CS = 131072;
@ -81,16 +80,17 @@ public class Challenges {
public static final int[] MASKS = {
NO_FOOD, NO_ARMOR, NO_HEALING, NO_HERBALISM, SWARM_INTELLIGENCE, DARKNESS, NO_SCROLLS
, AQUAPHOBIA, CHAMPION_ENEMIES,RLPT,SBSG,EXSG,STRONGER_BOSSES,DHXD,ICEDIED,PRO,MORELEVEL,CS,
, AQUAPHOBIA, CHAMPION_ENEMIES,RLPT,SBSG,EXSG,STRONGER_BOSSES,DHXD,ICEDIED,PRO,MOREROOM,CS,
};
public String name;
public static boolean isItemBlocked(Item item) {
if (Dungeon.isChallenged(NO_FOOD)) {
if (item instanceof SmallRation) {
return true;
}
}
//取消
// if (Dungeon.isChallenged(NO_FOOD)) {
// if (item instanceof Food && !(item instanceof SmallRation || item instanceof MeatPie)) {
// return true;
// }
// }
if(InterlevelScene.mode == InterlevelScene.Mode.RESET){
if (item instanceof Ankh) {
@ -126,7 +126,7 @@ public class Challenges {
public static int activeChallenges() {
int chCount = 0;
for (int ch : Challenges.MASKS) {
if ((Dungeon.challenges & ch) != 0 && ch <= MORELEVEL && ch != PRO && ch != DHXD) {
if ((Dungeon.challenges & ch) != 0 && ch <= MOREROOM && ch != PRO && ch != DHXD) {
chCount++;
}
}

View File

@ -89,8 +89,8 @@ public class ShatteredPixelDungeon extends Game {
com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfFear.class,
"com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfAffection" );
com.watabou.utils.Bundle.addAlias(
com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDeepSleep.class,
"com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDeepenedSleep" );
com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDeepenedSleep.class,
"com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDeepSleep" );
//v0.9.3
com.watabou.utils.Bundle.addAlias(

View File

@ -117,6 +117,9 @@ public class Statistics {
//珍宝
public static int dimandchestmazeCollected;
//宝物生成限制避免有byd的十字架重复刷取
public static int fuckGeneratorAlone;
public static int dageCollected;
//首次对决
@ -150,6 +153,7 @@ public class Statistics {
foodEaten = 0;
goldchestmazeCollected = 0;
dimandchestmazeCollected =0;
fuckGeneratorAlone = 0;
itemsCrafted = 0;
piranhasKilled = 0;
ankhsUsed = 0;
@ -295,6 +299,8 @@ public class Statistics {
private static final String LOVX = "lovx";
private static final String FUCKALONE = "fuckplayer";
public static void storeInBundle( Bundle bundle ) {
@ -304,6 +310,8 @@ public class Statistics {
bundle.put(LOVE,findMoon);
bundle.put(LOVX,deadGo);
bundle.put(FUCKALONE,fuckGeneratorAlone);
//分数
bundle.put( PROG_SCORE, progressScore );
bundle.put( ITEM_VAL, heldItemValue );
@ -397,6 +405,8 @@ public class Statistics {
bossWeapons = bundle.getInt(BDTX);
fuckGeneratorAlone = bundle.getInt(FUCKALONE);
HealingIsDied = bundle.getInt( HEALDIED );
readBooks = bundle.getInt( READBOOKS );

View File

@ -63,10 +63,10 @@ import com.shatteredpixel.shatteredpixeldungeon.items.bags.BookBag;
import com.shatteredpixel.shatteredpixeldungeon.items.bags.HerbBag;
import com.shatteredpixel.shatteredpixeldungeon.items.bags.KingBag;
import com.shatteredpixel.shatteredpixeldungeon.items.bags.VelvetPouch;
import com.shatteredpixel.shatteredpixeldungeon.items.books.bookslist.DimandBook;
import com.shatteredpixel.shatteredpixeldungeon.items.books.bookslist.TestBooks;
import com.shatteredpixel.shatteredpixeldungeon.items.food.Food;
import com.shatteredpixel.shatteredpixeldungeon.items.food.MeatPie;
import com.shatteredpixel.shatteredpixeldungeon.items.food.SmallRation;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfExperience;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfInvisibility;
@ -179,7 +179,7 @@ public enum HeroClass {
new PotionOfMindVision().quantity(50).identify().collect();
new PotionOfLiquidFlame().quantity(50).identify().collect();
new DimandBook().quantity(50).identify().collect();
new SmallRation.BlackMoon().quantity(50).identify().collect();
new PotionOfExperience().quantity(100).identify().collect();
new ScrollOfMagicMapping().quantity(100).identify().collect();
new ScrollOfUpgrade().quantity(100).identify().collect();

View File

@ -2,6 +2,7 @@ package com.shatteredpixel.shatteredpixeldungeon.custom.testmode;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Chrome;
import com.shatteredpixel.shatteredpixeldungeon.Conducts;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
@ -81,7 +82,7 @@ public class LevelTeleporter extends TestItem {
public void execute( Hero hero, String action ) {
super.execute( hero, action );
if(action.equals(AC_DESCEND)) {
if(Dungeon.hero.buff(LockedFloor.class) != null ) {
if(Dungeon.hero.buff(LockedFloor.class) != null || Dungeon.depth>26 && !(Dungeon.isDLC(Conducts.Conduct.BOSSRUSH)) || Dungeon.depth>28 && Dungeon.isDLC(Conducts.Conduct.BOSSRUSH) ) {
GLog.w(Messages.get(this,"cannot_send"));
return;
}

View File

@ -23,7 +23,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Crab;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.DM100;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.DM200;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.DM201;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.DemonSpawner;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Elemental;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Eye;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.FetidRat;
@ -493,7 +492,7 @@ public class MobPlacer extends TestItem{
ELE_CHAOS(Elemental.ChaosElemental.class, DictSpriteSheet.ELEMENTAL_CHAOS),
RIPPER(RipperDemon.class, DictSpriteSheet.RIPPER),
SPAWNER(DemonSpawner.class, DictSpriteSheet.SPAWNER),
// SPAWNER(DemonSpawner.class, DictSpriteSheet.SPAWNER),
EYE(Eye.class, DictSpriteSheet.EYE),
SUCCUBUS(Succubus.class, DictSpriteSheet.SUCCUBUS),
SCORPIO(Scorpio.class, DictSpriteSheet.SCORPIO),

View File

@ -29,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
import com.shatteredpixel.shatteredpixeldungeon.items.bags.Bag;
import com.shatteredpixel.shatteredpixeldungeon.items.bags.MagicalHolster;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfAnmy;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
@ -108,7 +109,7 @@ public class ArcaneResin extends Item {
@Override
public void onSelect( Item item ) {
if (item != null && item instanceof Wand) {
if (item != null && item instanceof Wand && !(item instanceof WandOfAnmy)) {
Wand w = (Wand)item;
if (w.level() >= 3){

View File

@ -21,10 +21,11 @@
package com.shatteredpixel.shatteredpixeldungeon.items.artifacts;
import static com.shatteredpixel.shatteredpixeldungeon.Statistics.deadGo;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.CorrosiveGas;
@ -116,7 +117,7 @@ public class DriedRose extends Artifact {
actions.remove(AC_EQUIP);
return actions;
}
if (isEquipped( hero ) && charge == chargeCap && !cursed && ghostID == 0) {
if (isEquipped( hero ) && charge == chargeCap && !cursed && ghostID == 0 && !deadGo) {
actions.add(AC_SUMMON);
}
if (ghostID != 0){
@ -565,8 +566,9 @@ public class DriedRose extends Artifact {
damage(1, this);
}
if(Statistics.findMoon){
if(deadGo){
die(true);
GLog.n(Messages.get(DriedRose.class, "sorry"));
}
if (!isAlive()) {

View File

@ -21,6 +21,7 @@
package com.shatteredpixel.shatteredpixeldungeon.items.quest;
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
@ -103,6 +104,7 @@ public class MIME extends Item {
public boolean doPickUp(Hero hero, int pos) {
if (super.doPickUp(hero, pos)) {
if(!isMimeSupported){
Statistics.dimandchestmazeCollected++;
isMimeSupported = true;
}
return true;

View File

@ -42,7 +42,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfAugmentation
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfBlast;
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfBlink;
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfClairvoyance;
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDeepSleep;
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDeepenedSleep;
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDisarming;
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfEnchantment;
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfFear;
@ -290,7 +290,7 @@ public abstract class Scroll extends Item {
private static HashMap<Class<?extends Scroll>, Class<?extends Runestone>> stones = new HashMap<>();
static {
stones.put(ScrollOfIdentify.class, StoneOfIntuition.class);
stones.put(ScrollOfLullaby.class, StoneOfDeepSleep.class);
stones.put(ScrollOfLullaby.class, StoneOfDeepenedSleep.class);
stones.put(ScrollOfMagicMapping.class, StoneOfClairvoyance.class);
stones.put(ScrollOfMirrorImage.class, StoneOfFlock.class);
stones.put(ScrollOfRetribution.class, StoneOfBlast.class);

View File

@ -1,57 +1,57 @@
/*
* Pixel Dungeon
* Copyright (C) 2012-2015 Oleg Dolya
*
* Shattered Pixel Dungeon
* Copyright (C) 2014-2022 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.stones;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicalSleep;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.watabou.noosa.audio.Sample;
public class StoneOfDeepSleep extends Runestone {
{
image = ItemSpriteSheet.STONE_SLEEP;
}
@Override
protected void activate(int cell) {
if (Actor.findChar(cell) != null) {
Char c = Actor.findChar(cell);
if (c instanceof Mob){
Buff.affect(c, MagicalSleep.class);
}
}
Sample.INSTANCE.play( Assets.Sounds.LULLABY );
}
}
///*
// * Pixel Dungeon
// * Copyright (C) 2012-2015 Oleg Dolya
// *
// * Shattered Pixel Dungeon
// * Copyright (C) 2014-2022 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.stones;
//
//import com.shatteredpixel.shatteredpixeldungeon.Assets;
//import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
//import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
//import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
//import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicalSleep;
//import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
//import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
//import com.watabou.noosa.audio.Sample;
//
//public class StoneOfDeepSleep extends Runestone {
//
// {
// image = ItemSpriteSheet.STONE_SLEEP;
// }
//
// @Override
// protected void activate(int cell) {
//
// if (Actor.findChar(cell) != null) {
//
// Char c = Actor.findChar(cell);
//
// if (c instanceof Mob){
//
// Buff.affect(c, MagicalSleep.class);
//
// }
//
// }
//
// Sample.INSTANCE.play( Assets.Sounds.LULLABY );
//
// }
//}

View File

@ -55,7 +55,7 @@ public class WandOfFireblast extends DamageWand {
public static class PlaceHolderX extends WandOfFireblast {
{
image = ItemSpriteSheet.WAND_BLAST_WAVE;
image = ItemSpriteSheet.WAND_FIREBOLT;
}
@Override

View File

@ -17,7 +17,7 @@ public class FiveRen extends MeleeWeapon {
hitSound = Assets.Sounds.HIT_STAB;
hitSoundPitch = 0.9f;
tier = 2;
tier = 5;
DLY = 1.5f; //0.67x speed
RCH = 2; //extra reach
}

View File

@ -58,19 +58,19 @@ public class Gauntlet extends MeleeWeapon {
switch (Random.Int(6)) {
case 0:case 1:case 2:case 3:
default:
return max(buffedLvl());
return super.proc( attacker, defender, damage );
case 4: case 5:
Buff.affect(defender, HalomethaneBurning.class).reignite(defender);
if(Random.Float()<0.55f && level <3) {
Buff.prolong(attacker, Vertigo.class, 3f);
}
return max(buffedLvl());
return super.proc( attacker, defender, damage );
}
}
public String statsInfo(){
if (isIdentified()){
return Messages.get(this, "stats_desc", 1+1*buffedLvl());
return Messages.get(this, "stats_desc", 1+ buffedLvl());
} else {
return Messages.get(this, "typical_stats_desc", 1);
}

View File

@ -322,7 +322,7 @@ public class ColdChestBossLevel extends Level {
//进行Roll判定
if(Statistics.dimandchestmazeCollected==0) {
if(Statistics.fuckGeneratorAlone==0) {
switch (Random.NormalIntRange(0, 3)) {
case 0:
drop(new MIME.GOLD_ONE(), 634);
@ -338,7 +338,7 @@ public class ColdChestBossLevel extends Level {
break;
}
}
Statistics.dimandchestmazeCollected++;
Statistics.fuckGeneratorAlone++;
pro = START;
break;
@ -357,7 +357,7 @@ public class ColdChestBossLevel extends Level {
boss.HP = 360;
//进行Roll判定 获得一定的随机坐标
if(Statistics.dimandchestmazeCollected==1) {
if(Statistics.fuckGeneratorAlone==1) {
if (Random.Float() < 0.5f) {
switch (Random.NormalIntRange(0, 4)) {
case 0:
@ -396,7 +396,7 @@ public class ColdChestBossLevel extends Level {
}
}
}
Statistics.dimandchestmazeCollected++;
Statistics.fuckGeneratorAlone++;
switch (Random.NormalIntRange(0,8)){
case 0:
@ -469,7 +469,7 @@ public class ColdChestBossLevel extends Level {
//drop( new PotionOfPurity(),648 );
//进行Roll判定
if(Statistics.dimandchestmazeCollected==2) {
if(Statistics.fuckGeneratorAlone==2) {
if (Random.Float() < 0.5f) {
switch (Random.NormalIntRange(0, 1)) {
case 0:
@ -490,7 +490,7 @@ public class ColdChestBossLevel extends Level {
}
}
}
Statistics.dimandchestmazeCollected++;
Statistics.fuckGeneratorAlone++;
//生成四个水晶宝箱王持续回血
for (int i : FourCrystal) {

View File

@ -21,7 +21,7 @@
package com.shatteredpixel.shatteredpixeldungeon.levels;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.MORELEVEL;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.MOREROOM;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.SBSG;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
@ -167,6 +167,9 @@ public abstract class Level implements Bundlable {
TRAPS,
SECRETS,
BIGTRAP,
THREEWELL,
LINKROOM,
DIEDROOM
}
public boolean isLevelExplored( int depth ){
@ -264,6 +267,60 @@ public abstract class Level implements Bundlable {
return 48*48;
}
private void initializeLevelDepthType(){
if(Dungeon.isChallenged(MOREROOM)){
int randomInt = Random.Int(10);
if (randomInt == 0) {
feeling = Feeling.CHASM;
} else if (randomInt == 1) {
feeling = Feeling.WATER;
} else if (randomInt == 2) {
feeling = Feeling.GRASS;
} else if (randomInt == 3) {
feeling = Feeling.DARK;
addItemToSpawn(new Torch());
viewDistance = Math.round(viewDistance / 2f);
} else if (randomInt >= 4 && randomInt <= 5) {
feeling = Feeling.TRAPS;
} else if (randomInt == 6) {
feeling = Feeling.SECRETS;
} else if (randomInt == 7) {
feeling = Feeling.BIGTRAP;
} else if (randomInt == 8) {
feeling = Feeling.THREEWELL;
} else {
feeling = Feeling.LINKROOM;
}
} else {
switch (Random.Int( 14 )) {
case 0:
feeling = Feeling.CHASM;
break;
case 1:
feeling = Feeling.WATER;
break;
case 2:
feeling = Feeling.GRASS;
break;
case 3:
feeling = Feeling.DARK;
addItemToSpawn(new Torch());
viewDistance = Math.round(viewDistance/2f);
break;
case 4:
feeling = Feeling.LARGE;
addItemToSpawn(Generator.random(Generator.Category.FOOD));
break;
case 5:
feeling = Feeling.TRAPS;
break;
case 6:
feeling = Feeling.SECRETS;
break;
}
}
}
public void create() {
Random.pushGenerator( Dungeon.seedCurDepth() );
@ -300,40 +357,8 @@ public abstract class Level implements Bundlable {
addItemToSpawn( new StoneOfIntuition() );
}
if (Dungeon.depth > 1 && !Dungeon.bossLevel()) {
//50% chance of getting a level feeling
//~7.15% chance for each feeling
switch (Random.Int( 14 )) {
case 0:
feeling = Feeling.CHASM;
break;
case 1:
feeling = Feeling.WATER;
break;
case 2:
feeling = Feeling.GRASS;
break;
case 3:
feeling = Feeling.DARK;
addItemToSpawn(new Torch());
viewDistance = Math.round(viewDistance/2f);
break;
case 4:
feeling = Feeling.LARGE;
addItemToSpawn(Generator.random(Generator.Category.FOOD));
break;
case 5:
feeling = Feeling.TRAPS;
break;
case 6:
feeling = Feeling.SECRETS;
break;
case 7:
if(Dungeon.isChallenged(MORELEVEL)){
feeling = Feeling.BIGTRAP;
}
break;
}
if (Dungeon.depth > 1 && !Dungeon.isDLC(Conducts.Conduct.BOSSRUSH)) {
initializeLevelDepthType();
}
}

View File

@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.levels;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.AQUAPHOBIA;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.EXSG;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.MOREROOM;
import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero;
import static com.shatteredpixel.shatteredpixeldungeon.levels.RegularLevel.Holiday.XMAS;
@ -59,8 +60,10 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.builders.LoopBuilder;
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.secret.SecretRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.secret.SecretWellRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.AutoShopRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.LanFireRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.MagicWellRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.MagicalFireRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.NxhyShopRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.NyzBombAndBooksRoom;
@ -235,8 +238,8 @@ public abstract class RegularLevel extends Level {
initRooms.add( roomExit = new ExitRoom());
//force max standard rooms and multiple by 1.5x for large levels
int standards = standardRooms(feeling == Feeling.LARGE);
if (feeling == Feeling.LARGE){
int standards = standardRooms(feeling == Feeling.LARGE || Dungeon.isChallenged(MOREROOM));
if (feeling == Feeling.LARGE || Dungeon.isChallenged(MOREROOM)){
standards = (int)Math.ceil(standards * 1.5f);
}
for (int i = 0; i < standards; i++) {
@ -259,9 +262,9 @@ public abstract class RegularLevel extends Level {
}
// initRooms.add(new EyeRoom());
// initRooms.add(new YinYangRoom());
// initRooms.add(new YinYangRoom());z
if(RegularLevel.holiday == Holiday.ZQJ){
if(RegularLevel.holiday == Holiday.ZQJ ){
if(Dungeon.depth == 17){
initRooms.add(new HeartRoom());
}
@ -284,10 +287,14 @@ public abstract class RegularLevel extends Level {
}
//force max special rooms and add one more for large levels
int specials = specialRooms(feeling == Feeling.LARGE);
if (feeling == Feeling.LARGE){
int specials = specialRooms(feeling == Feeling.LARGE || Dungeon.isChallenged(MOREROOM));
if (feeling == Feeling.LARGE || Dungeon.isChallenged(MOREROOM)){
specials++;
}
if(feeling == Feeling.THREEWELL){
initRooms.add(new SecretWellRoom());
initRooms.add(new MagicWellRoom());
}
SpecialRoom.initForFloor();
for (int i = 0; i < specials; i++) {
SpecialRoom s = SpecialRoom.createRoom();
@ -365,7 +372,7 @@ public abstract class RegularLevel extends Level {
if (Dungeon.depth <= 1) return 0;
int mobs = 3 + Dungeon.depth % 5 + Random.Int(3);
if (feeling == Feeling.LARGE){
if (feeling == Feeling.LARGE || Dungeon.isChallenged(MOREROOM)){
mobs = (int)Math.ceil(mobs * 1.33f);
}
return mobs;
@ -500,7 +507,7 @@ public abstract class RegularLevel extends Level {
// drops 3/4/5 items 60%/30%/10% of the time
int nItems = 3 + Random.chances(new float[]{6, 3, 1});
if (feeling == Feeling.LARGE){
if (feeling == Feeling.LARGE || Dungeon.isChallenged(MOREROOM)){
nItems += 2;
}

View File

@ -74,11 +74,19 @@ public class SLMKingLevel extends SewerLevel {
return initRooms;
}
@Override
public int tunnelTile() {
return Terrain.WATER;
}
@Override
protected int standardRooms(boolean forceMax) {
if (forceMax) return 3;
//2 to 3, average 2.5
return 2+Random.chances(new float[]{1, 1});
return 0;
}
@Override
protected int specialRooms(boolean forceMax) {
return 0;
}
protected Builder builder(){

View File

@ -57,6 +57,11 @@ public class SewerBossLevel extends SewerLevel {
}
private int stairs = 0;
@Override
public int tunnelTile() {
return Terrain.WATER;
}
@Override
public void playLevelMusic() {
@ -108,9 +113,12 @@ public class SewerBossLevel extends SewerLevel {
@Override
protected int standardRooms(boolean forceMax) {
if (forceMax) return 3;
//2 to 3, average 2.5
return 2+Random.chances(new float[]{1, 1});
return 0;
}
@Override
protected int specialRooms(boolean forceMax) {
return 0;
}
protected Builder builder(){

View File

@ -446,7 +446,7 @@ public abstract class RegularPainter extends Painter {
validCells.size()/5);
//5x traps on traps level feeling, but the extra traps are all visible
for (int i = 0; i < (l.feeling == Level.Feeling.BIGTRAP ? 25*nTraps : l.feeling == Level.Feeling.TRAPS ?
for (int i = 0; i < (l.feeling == Level.Feeling.BIGTRAP ? 23*nTraps : l.feeling == Level.Feeling.TRAPS ?
5*nTraps :
nTraps); i++) {

View File

@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.secret;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfAwareness;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfHealth;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfTransmutation;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WellWater;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
@ -33,7 +34,7 @@ import com.watabou.utils.Random;
public class SecretWellRoom extends SecretRoom {
private static final Class<?>[] WATERS =
{WaterOfAwareness.class, WaterOfHealth.class};
{WaterOfAwareness.class, WaterOfHealth.class, WaterOfTransmutation.class};
@Override
public boolean canConnect(Point p) {

View File

@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfAwareness;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfHealth;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfTransmutation;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WellWater;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
@ -33,7 +34,7 @@ import com.watabou.utils.Random;
public class MagicWellRoom extends SpecialRoom {
private static final Class<?>[] WATERS =
{WaterOfAwareness.class, WaterOfHealth.class};
{WaterOfAwareness.class, WaterOfHealth.class, WaterOfTransmutation.class};
public Class<?extends WellWater> overrideWater = null;

View File

@ -3,8 +3,8 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard;
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.CHASM;
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.EMPTY;
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.EMPTY_SP;
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.FURROWED_GRASS;
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.PEDESTAL;
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.WALL;
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.WATER;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
@ -59,7 +59,7 @@ public class HeartRoom extends SpecialRoom {
Painter.drawLine(level, new Point(right, bottom), new Point(left, bottom), WATER);
Painter.drawLine(level, new Point(left, bottom), new Point(left, top), CHASM);
Painter.fill(level,this, WALL);
Painter.fill(level,this, FURROWED_GRASS);
// 绘制爱心
@ -73,7 +73,7 @@ public class HeartRoom extends SpecialRoom {
Painter.drawLine(level, new Point(centerX + radius, centerY), new Point(centerX, centerY + radius), PEDESTAL);
// 绘制眼睛外圈和门
int eyeRadius = radius / 2;
int eyeRadius = radius /4;
Painter.drawCircle(level, center, eyeRadius + 5, EMPTY);
Painter.drawCircle(level, center, eyeRadius, CHASM);

View File

@ -5,7 +5,6 @@ import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.EMPTY;
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.EMPTY_SP;
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.FURROWED_GRASS;
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.PEDESTAL;
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.WALL;
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.WATER;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
@ -49,7 +48,7 @@ public class LoveRoom extends SpecialRoom {
int centerY = center.y;
int radius = (right - left) / 2;
int MiddlePos = (top + 7) * level.width() + left + 7;
int MiddlePos = (top + 8) * level.width() + left + 8;
Mob n = new PinkGhostNPC();
n.pos = MiddlePos;
@ -60,7 +59,7 @@ public class LoveRoom extends SpecialRoom {
Painter.drawLine(level, new Point(right, bottom), new Point(left, bottom), WATER);
Painter.drawLine(level, new Point(left, bottom), new Point(left, top), CHASM);
Painter.fill(level,this, WALL);
Painter.fill(level,this, WATER);
// 绘制爱心
@ -74,7 +73,7 @@ public class LoveRoom extends SpecialRoom {
Painter.drawLine(level, new Point(centerX + radius, centerY), new Point(centerX, centerY + radius), PEDESTAL);
// 绘制眼睛外圈和门
int eyeRadius = radius / 2;
int eyeRadius = radius / 4;
Painter.drawCircle(level, center, eyeRadius + 5, EMPTY);
Painter.drawCircle(level, center, eyeRadius, FURROWED_GRASS);

View File

@ -52,7 +52,7 @@ public class YinYangRoom extends SpecialRoom {
Item prize;
do {
prize = Generator.random(cat);
prize.level= Random.NormalIntRange(1,2);
prize.upgrade(Random.NormalIntRange(1,2));
prize.cursed = false;
} while (Challenges.isItemBlocked(prize));
return prize;
@ -64,7 +64,7 @@ public class YinYangRoom extends SpecialRoom {
Item prize;
do {
prize = Generator.random(cat);
prize.level= Random.NormalIntRange(2,3);
prize.upgrade(Random.NormalIntRange(2,3));
prize.cursed = true;
} while (Challenges.isItemBlocked(prize));
return prize;

View File

@ -3,7 +3,7 @@
* Copyright (C) 2012-2015 Oleg Dolya
*
* Shattered Pixel Dungeon
* Copyright (C) 2014-2022 Evan Debenham
* Copyright (C) 2014-2023 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
@ -23,12 +23,15 @@ package com.shatteredpixel.shatteredpixeldungeon.plants;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.AdrenalineSurge;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.LeafParticle;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
public class Rotberry extends Plant {
@ -42,20 +45,21 @@ public class Rotberry extends Plant {
public void activate( Char ch ) {
if (ch instanceof Hero && ((Hero) ch).subClass == HeroSubClass.WARDEN){
Buff.affect(ch, AdrenalineSurge.class).reset(1, AdrenalineSurge.DURATION);
} else {
GameScene.add( Blob.seed( pos, 100, ToxicGas.class ) );
}
Dungeon.level.drop( new Seed(), pos ).sprite.drop();
}
@Override
public void wither() {
Dungeon.level.uproot( pos );
if (Dungeon.level.heroFOV[pos]) {
CellEmitter.get( pos ).burst( LeafParticle.GENERAL, 6 );
}
//no warden benefit
//seed always drops, no lotus benefit
Dungeon.level.drop( new Seed(), pos ).sprite.drop();
}
public static class Seed extends Plant.Seed {
@ -66,7 +70,7 @@ public class Rotberry extends Plant {
unique = true;
}
@Override
public int value() {
return 30 * quantity;

View File

@ -712,6 +712,7 @@ public class GameScene extends PixelScene {
case TRAPS: GLog.w(Messages.get(this, "traps")); break;
case SECRETS: GLog.w(Messages.get(this, "secrets")); break;
case BIGTRAP: GLog.w(Messages.get(this, "moretraps")); break;
case THREEWELL: GLog.w(Messages.get(this, "threewells")); break;
}
for (Mob mob : Dungeon.level.mobs) {

View File

@ -294,6 +294,11 @@ public class HeroSelectScene extends PixelScene {
if( !visible && GamesInProgress.selectedClass != null){
visible = true;
}
if (SPDSettings.challenges() > 0) {
icon(Icons.get( Icons.CHALLENGE_ON));
} else {
icon(Icons.get( Icons.CHALLENGE_OFF));
}
super.update();
}

View File

@ -104,6 +104,13 @@ public enum Icons {
DEPTH_SECRETS,
DEPTH_BTRAPS,
DEPTH_WELLS,
DEPTH_LINK_ROOM,
DEPTH_DIED,
CHAL_COUNT,
HAPPY_ICON,
@ -340,6 +347,15 @@ public enum Icons {
case DEPTH_BTRAPS:
icon.frame( icon.texture.uvRectBySize( 112, 64, 7, 7 ) );
break;
case DEPTH_WELLS:
icon.frame( icon.texture.uvRectBySize( 120, 64, 7, 7 ) );
break;
case DEPTH_LINK_ROOM:
icon.frame( icon.texture.uvRectBySize( 128, 64, 7, 7 ) );
break;
case DEPTH_DIED:
icon.frame( icon.texture.uvRectBySize( 136, 64, 7, 7 ) );
break;
case CHAL_COUNT:
icon.frame( icon.texture.uvRectBySize( 48, 72, 7, 7 ) );
break;
@ -421,6 +437,12 @@ public enum Icons {
return get(DEPTH_TRAPS);
case BIGTRAP:
return get(DEPTH_BTRAPS);
case THREEWELL:
return get(DEPTH_WELLS);
case DIEDROOM:
return get(DEPTH_DIED);
case LINKROOM:
return get(DEPTH_LINK_ROOM);
case SECRETS:
return get(DEPTH_SECRETS);
}

View File

@ -21,6 +21,7 @@
package com.shatteredpixel.shatteredpixeldungeon.ui;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.PRO;
import static com.shatteredpixel.shatteredpixeldungeon.ui.Window.CYELLOW;
import static com.shatteredpixel.shatteredpixeldungeon.ui.Window.GREEN_COLOR;
import static com.shatteredpixel.shatteredpixeldungeon.ui.Window.RED_COLOR;
@ -176,7 +177,8 @@ public class MenuPane extends Component {
btnMenu = new MenuButton();
add( btnMenu );
version = new BitmapText( "v" + Game.version, PixelScene.pixelFont);
version = new BitmapText( "v" + Game.version + (Dungeon.isChallenged(PRO)?"-DEV_MODE":""),
PixelScene.pixelFont);
version.alpha( 0.5f );
add(version);

View File

@ -146,6 +146,17 @@ public class vM0_6_7_X_Changes {
changes.addButton(new ChangeButton(i, ("熔岩火龙"),
("丛林暴乱的真相")));
changes = new ChangeInfo("v0.6.5.0-Alpha5.2-国庆", true, "");
changes.hardlight(Window.TITLE_COLOR);
changeInfos.add(changes);
changes = new ChangeInfo("改动", false, null);
changes.hardlight(Window.CYELLOW);
changeInfos.add(changes);
changes.addButton(new ChangeButton(new Image("sprites/spinner.png", 144, 0, 16, 16),
Messages.get(ChangesScene.class, "bugfixes"), Messages.get(vM0_6_7_X_Changes.class, "bug_06X86")));
changes = new ChangeInfo("v0.6.5.0-Alpha5-中秋", true, "");
changes.hardlight(Window.TITLE_COLOR);
changeInfos.add(changes);

View File

@ -0,0 +1,4 @@
package com.shatteredpixel.shatteredpixeldungeon.windows;
public class WndBossMessage {
}

View File

@ -252,6 +252,10 @@ public class WndChallenges extends Window {
info = new IconButton(Icons.get(Icons.INFO)){
@Override
protected void onClick() {
// if(challenge.equals("stronger_bosses")){
// return;
// }
ShatteredPixelDungeon.scene().add(
new WndTitledMessage(new Image(ChallengeInfo.this.icon),
Messages.titleCase(Messages.get(Challenges.class, challenge)),

View File

@ -177,6 +177,7 @@ public class WndStartGame extends Window {
@Override
protected void layout() {
super.layout();
@ -299,9 +300,10 @@ public class WndStartGame extends Window {
if( !visible && GamesInProgress.selectedClass != null){
visible = true;
}
if (parent != null) {
icon(Icons.get(SPDSettings.challenges() > 0 ?
Icons.CHALLENGE_ON : Icons.CHALLENGE_OFF));
if (SPDSettings.challenges() > 0) {
icon(Icons.get( Icons.CHALLENGE_ON));
} else {
icon(Icons.get( Icons.CHALLENGE_OFF));
}
super.update();
}
@ -332,6 +334,8 @@ public class WndStartGame extends Window {
}
private static class HeroBtn extends IconButton {
private HeroClass cl;