diff --git a/build.gradle b/build.gradle index 3e4d5ed16..120692f2a 100644 --- a/build.gradle +++ b/build.gradle @@ -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 diff --git a/core/src/main/assets/interfaces/badges.png b/core/src/main/assets/interfaces/badges.png index a37796266..9d64916c1 100644 Binary files a/core/src/main/assets/interfaces/badges.png and b/core/src/main/assets/interfaces/badges.png differ diff --git a/core/src/main/assets/interfaces/icons.png b/core/src/main/assets/interfaces/icons.png index 06f63f7e1..5955d6c67 100644 Binary files a/core/src/main/assets/interfaces/icons.png and b/core/src/main/assets/interfaces/icons.png differ diff --git a/core/src/main/assets/interfaces/status_pane.png b/core/src/main/assets/interfaces/status_pane.png index dd53e4043..6a3ccda59 100644 Binary files a/core/src/main/assets/interfaces/status_pane.png and b/core/src/main/assets/interfaces/status_pane.png differ diff --git a/core/src/main/assets/messages/actors/actors.properties b/core/src/main/assets/messages/actors/actors.properties index a28193f48..707c384d9 100644 --- a/core/src/main/assets/messages/actors/actors.properties +++ b/core/src/main/assets/messages/actors/actors.properties @@ -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=[友好[ diff --git a/core/src/main/assets/messages/items/items.properties b/core/src/main/assets/messages/items/items.properties index 897d4f90f..06b829f21 100644 --- a/core/src/main/assets/messages/items/items.properties +++ b/core/src/main/assets/messages/items/items.properties @@ -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=你已经召唤出幽灵了。 diff --git a/core/src/main/assets/messages/misc/misc.properties b/core/src/main/assets/messages/misc/misc.properties index af4f8df62..d9e1a0756 100644 --- a/core/src/main/assets/messages/misc/misc.properties +++ b/core/src/main/assets/messages/misc/misc.properties @@ -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控制终端[尚未完成] diff --git a/core/src/main/assets/messages/ui/ui.properties b/core/src/main/assets/messages/ui/ui.properties index 567465dd8..6b576b348 100644 --- a/core/src/main/assets/messages/ui/ui.properties +++ b/core/src/main/assets/messages/ui/ui.properties @@ -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墙壁会消失,推测是因为吊桥楼层原因(已尝试修复,需要玩家验证)\n11:br可以通过升降器去到28层以后的楼层\n12:共生法杖可以通过奥术聚酯升级(ling以知晓)\n13:催眠符石有俩个效果\n14:快捷合成表部分图标错误(已处理)\n15:修复部分楼层转换错误。 + + //ui.changelist.mlpd.vm0_5_x_changes.xxx// \ No newline at end of file diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java index f14b5326d..d777eda3b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java @@ -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"; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Challenges.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Challenges.java index c4ff3570b..ea2ec9c2a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Challenges.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Challenges.java @@ -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++; } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java index 6fb5e999b..6ba761f8f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java @@ -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( diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Statistics.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Statistics.java index 2d465c5ef..c5cc44221 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Statistics.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Statistics.java @@ -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 ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/HeroClass.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/HeroClass.java index 302dd5961..41ed33c09 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/HeroClass.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/HeroClass.java @@ -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(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/custom/testmode/LevelTeleporter.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/custom/testmode/LevelTeleporter.java index ea9a06c5e..c3f8f2ac0 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/custom/testmode/LevelTeleporter.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/custom/testmode/LevelTeleporter.java @@ -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; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/custom/testmode/MobPlacer.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/custom/testmode/MobPlacer.java index 55101ad49..b44f5cfc5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/custom/testmode/MobPlacer.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/custom/testmode/MobPlacer.java @@ -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), diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/ArcaneResin.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/ArcaneResin.java index 0c0ce2076..e624e9697 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/ArcaneResin.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/ArcaneResin.java @@ -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){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java index df7d39292..297abf02d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/DriedRose.java @@ -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()) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/MIME.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/MIME.java index b3e5af772..09b4d4d5f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/MIME.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/quest/MIME.java @@ -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; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java index 6f07150e8..3cd3b7c10 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/Scroll.java @@ -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> 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); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfDeepSleep.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfDeepSleep.java index 7d13e37e4..59903c8a7 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfDeepSleep.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/stones/StoneOfDeepSleep.java @@ -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 - */ - -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 +// */ +// +//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 ); +// +// } +//} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfFireblast.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfFireblast.java index 1e5c07ff6..a9fee7e1d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfFireblast.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/WandOfFireblast.java @@ -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 diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/FiveRen.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/FiveRen.java index 9cbbb32e8..47d7ff792 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/FiveRen.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/FiveRen.java @@ -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 } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Gauntlet.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Gauntlet.java index e98a86991..522bd4eca 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Gauntlet.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/melee/Gauntlet.java @@ -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); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/ColdChestBossLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/ColdChestBossLevel.java index 779f7adfb..06c768886 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/ColdChestBossLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/ColdChestBossLevel.java @@ -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) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java index 07df88f7b..96cf55c54 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java @@ -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(); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java index 74655992d..28c7a67ef 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java @@ -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; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SLMKingLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SLMKingLevel.java index 7659fe111..3f6dd2713 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SLMKingLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SLMKingLevel.java @@ -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(){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerBossLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerBossLevel.java index 7be7e1d69..a37ff3b5e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerBossLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerBossLevel.java @@ -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(){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/painters/RegularPainter.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/painters/RegularPainter.java index 11e7f5459..cbb162f02 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/painters/RegularPainter.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/painters/RegularPainter.java @@ -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++) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretWellRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretWellRoom.java index fb57ee121..1541305d9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretWellRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretWellRoom.java @@ -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) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/MagicWellRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/MagicWellRoom.java index 384fc5fe7..3ab660704 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/MagicWellRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/MagicWellRoom.java @@ -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 overrideWater = null; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/HeartRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/HeartRoom.java index 98e712377..5a6bce80a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/HeartRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/HeartRoom.java @@ -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); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/LoveRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/LoveRoom.java index 717f4b83b..8327443c3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/LoveRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/LoveRoom.java @@ -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); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/YinYangRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/YinYangRoom.java index c6947a52e..1ca11a58f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/YinYangRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/YinYangRoom.java @@ -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; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Rotberry.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Rotberry.java index a3d6854d5..d3606cb01 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Rotberry.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/plants/Rotberry.java @@ -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; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java index cb8e77dd1..c5c67bbb9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java @@ -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) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/HeroSelectScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/HeroSelectScene.java index 89356249f..3c3aff086 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/HeroSelectScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/HeroSelectScene.java @@ -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(); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/Icons.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/Icons.java index 4e33b11a3..55bd4cc55 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/Icons.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/Icons.java @@ -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); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/MenuPane.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/MenuPane.java index 8d665dabe..9ce2d3ec7 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/MenuPane.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/MenuPane.java @@ -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); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/mlpd/vM0_6_7_X_Changes.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/mlpd/vM0_6_7_X_Changes.java index 23d097a1d..6aa102d2a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/mlpd/vM0_6_7_X_Changes.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/mlpd/vM0_6_7_X_Changes.java @@ -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); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndBossMessage.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndBossMessage.java new file mode 100644 index 000000000..8a1f9a0c8 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndBossMessage.java @@ -0,0 +1,4 @@ +package com.shatteredpixel.shatteredpixeldungeon.windows; + +public class WndBossMessage { +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndChallenges.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndChallenges.java index d4cb9bd25..dcd16b367 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndChallenges.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndChallenges.java @@ -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)), diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndStartGame.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndStartGame.java index 80abaa0f4..359e489b7 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndStartGame.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndStartGame.java @@ -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;