From de8df71cc9ace0f9a283c431685945c697c7f9c1 Mon Sep 17 00:00:00 2001 From: LingASDJ <2735951230@qq.com> Date: Sat, 20 May 2023 22:12:45 +0800 Subject: [PATCH] Update V0.6.1.0 Beta7.3 -1.All Fixed -2.New 8 Enemy Buff--"Delay-Mobs" -3.DM-720 Changes --- .../android/AndroidLauncher.java | 7 ++ build.gradle | 4 +- .../assets/messages/actors/actors.properties | 10 ++- .../main/assets/messages/misc/misc.properties | 4 +- .../assets/messages/scenes/scenes.properties | 21 +++--- .../src/main/assets/messages/ui/ui.properties | 2 + .../messages/windows/windows.properties | 6 +- .../shatteredpixeldungeon/BGMPlayer.java | 5 +- .../shatteredpixeldungeon/Challenges.java | 24 +++---- .../shatteredpixeldungeon/Dungeon.java | 8 +-- .../actors/buffs/ChampionEnemy.java | 27 +++---- .../actors/hero/Hero.java | 4 ++ .../actors/mobs/Mob.java | 7 ++ .../actors/mobs/MoloHR.java | 71 +++++++++++-------- .../actors/mobs/NewDM720.java | 20 +++--- .../actors/mobs/Rat.java | 2 +- .../items/food/LightFood.java | 24 +------ .../items/wands/CursedWand.java | 3 +- .../levels/CaveTwoBossLevel.java | 14 ++-- .../scenes/HeroSelectScene.java | 9 +-- .../sprites/DM720Sprite.java | 18 +++++ .../ui/MainHandIndicator.java | 17 +---- .../ui/changelist/mlpd/vM0_6_7_X_Changes.java | 31 ++++++++ .../windows/BossSettingWindows.java | 34 ++++++--- 24 files changed, 218 insertions(+), 154 deletions(-) diff --git a/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidLauncher.java b/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidLauncher.java index 4aad8a0bb..3f7a8d583 100644 --- a/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidLauncher.java +++ b/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidLauncher.java @@ -60,5 +60,12 @@ public class AndroidLauncher extends Activity { text.setPadding(10, 10, 10, 10); setContentView(text); } + +// FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); +// FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() +// .setMinimumFetchIntervalInSeconds(3600) +// .build(); +// mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings); + } } diff --git a/build.gradle b/build.gradle index 72932e48c..a0544ffb3 100644 --- a/build.gradle +++ b/build.gradle @@ -17,8 +17,8 @@ allprojects { appName = 'Magic Ling Pixel Dungeon' appPackageName = 'com.ansdomagiclingpixeldungeon.ling' - appVersionCode =800866 - appVersionName = '0.6.1.0-Beta7.2(P3)' + appVersionCode =800867 + appVersionName = '0.6.1.0-Beta7.3(P3)' appJavaCompatibility = JavaVersion.VERSION_11 diff --git a/core/src/main/assets/messages/actors/actors.properties b/core/src/main/assets/messages/actors/actors.properties index 9df6395be..45be74a29 100644 --- a/core/src/main/assets/messages/actors/actors.properties +++ b/core/src/main/assets/messages/actors/actors.properties @@ -622,7 +622,7 @@ actors.mobs.newdm720.pylons_destroyed=警告!检测到电网故障! actors.mobs.newdm720.rankings_desc=被DM-720处决! actors.mobs.newdm720.def_verb=虚晃一枪! actors.mobs.newdm720.defeated=致命伤害!正在启动自爆程序!将在3回合后自爆! -actors.mobs.newdm720.desc=DM-720是这个世纪有史以来发明的最强大的“防御机器”。这样一台令人生畏的机器是极难制造的,所以制作者们仅仅造出了几台来守护他们地下大都会的入口。(据说最好的DM-EX-750。在地牢更深处。但目前没人发现这台守卫机器)\n\n它配备了可以喷出剧毒废气的通风口和一个可以用来攻击和破坏大地的高功率钻头。DM-720还可以连接到能源电网,进一步增强它的力量。\n\n_DM720_是矮人工匠设置的一个_超级兵器_,它_不仅会喷火_,而且相比于_DM300_,它更加强大。而且工匠还利用_水导电的特性_,让每一个冒险者几乎是有去无回。\n\n正因为这个原因,_300年_前,_她封印了这里_,但仍然有极少数人会因为地牢的_魔力紊乱_而误打误撞的和_DM720_正面交锋! +actors.mobs.newdm720.desc=DM-720是这个世纪有史以来发明的最强大的“防御机器”。这样一台令人生畏的机器是极难制造的,所以制作者们仅仅造出了几台来守护他们地下大都会的入口。(据说最好的DM-EX-750。在地牢更深处。但目前没人发现这台守卫机器)\n\n它配备了可以喷出剧毒废气的通风口和一个可以用来攻击和破坏大地的高功率钻头。DM-720还可以连接到能源电网,进一步增强它的力量。\n\n_DM720_是矮人工匠设置的一个_超级兵器_,它_不仅会喷火_,而且相比于_DM300_,它更加强大。而且工匠还利用_水导电的特性_,并且有已经失去理智的_赏金猎人_在里面操控它。几乎让每一个冒险者都是有去无回。\n\n正因为这个原因,_300年_前,_她封印了这里_,但仍然有极少数人会因为地牢的_魔力紊乱_而误打误撞的和_DM720_正面交锋!\n\n_死亡后赏金猎人从中出现_ actors.mobs.newdm720.desc_supercharged=DM-720现在已被完全充能。这种状态下DM-720会免疫外界的伤害并以双倍的速度移动!并且,它的电钻在此状态下能以很慢的速度_钻透墙壁_。\n\n在这种状态下直接攻击DM-720完全没有意义,但摧毁_附近为其提供能量的装置_也许能解除这种状态。 actors.mobs.newdm720$fallingrocks.desc=松动的岩块正从层顶滚滚而下,似乎要塌方了! actors.mobs.newdm720.repair=启动备用能源!DM-720修复了自己。 @@ -768,8 +768,8 @@ actors.mobs.molotovhuntsman.name = 血月火焰赏金猎人 actors.mobs.molotovhuntsman.desc = 这是被地牢深处的魔绫的怒火感染的极其扭曲的赏金猎人,他们已经失去了理智,他们都有一把猩红血月剑来杀死每一个入侵者。 actors.mobs.molohr.name = 血月火焰赏金猎人长老 -actors.mobs.molohr.desc = 总之,就是,近战打! -actors.mobs.molohr.notice = 就你TM想0元购? +actors.mobs.molohr.desc = DM720的操控者,快解决掉他。 +actors.mobs.molohr.notice = 你是谁!? actors.mobs.ogpdzsls.name=棕色老鼠 actors.mobs.ogpdzsls.desc=它们会咬人,但只有大量出现才会危及生命。这个老鼠看起来比普通的更强! @@ -960,6 +960,10 @@ actors.buffs.championenemy$growing.desc=成长精英拥有会稳步增长的额 actors.buffs.championenemy$halo.name=鬼磷精英 actors.buffs.championenemy$halo.desc=鬼磷精英造成 15% 额外近战伤害,会使用更强大的磷火点燃攻击目标,免疫火焰,免疫磷火。 +actors.buffs.championenemy$delaymob.name=苦痛精英 +actors.buffs.championenemy$delaymob.desc=苦痛精英可以将受到的伤害进行延时释放,拥有 45% 额外近战伤害。 + + actors.buffs.championenemy.warn2=杀戮与不祥之意笼罩在整个地牢之中…… actors.buffs.championenemy$small.name=突变失败体 diff --git a/core/src/main/assets/messages/misc/misc.properties b/core/src/main/assets/messages/misc/misc.properties index 1a9a9e0ee..5cdcf900c 100644 --- a/core/src/main/assets/messages/misc/misc.properties +++ b/core/src/main/assets/messages/misc/misc.properties @@ -121,8 +121,8 @@ challenges.aquaphobia=污泥浊水 challenges.aquaphobia_desc=地牢的水也被污染了\n\n(圣境层到矮人层踩水将会获得DeBuff,玩家在开局获得4瓶水灵药水,饮用可获得100回合的踩水不获得Debuff时间并获得祝福。)\n注意:矮人层饮用漂浮药剂或者水灵药剂都会获得极速Buff,且每大层会额外产生食人鱼房间。 challenges.champion_enemies=精英战场 challenges.champion_enemies_desc=会升级的不止你一个!\n\n・普通敌人刷出时有 1/8 \ - 的机率拥有特殊的精英属性。\n・精英敌人刷出时会立即醒来。\n・精英敌人免疫腐化效果。\n\n精英敌人有七种:\n_烈焰(橙色):_ 近战伤害 \ - +25% 且带有点燃效果,免疫火焰,死亡时引燃周围。\n_索敌(紫色):_ 近战伤害 +25%,近战范围 +4。\n_敌法(绿色):_ 受到伤害 -25%,拥有魔法免疫。\n_巨型(蓝色):_ 受到伤害 -75%,近战范围 +1,无法进入门与过道。\n_祝福(黄色):_ 精准与躲避 +200%。\n_成长(红色):_ 精准、躲避、攻击伤害与有效生命值 +20%。每过 3 回合会再增长 1%。\n_鬼磷(天蓝色):_ 近战伤害 +15% 且带有磷火效果,免疫火焰与磷火。 + 的机率拥有特殊的精英属性。\n・精英敌人刷出时会立即醒来。\n・精英敌人免疫腐化效果。\n\n精英敌人有八种:\n_烈焰(橙色):_ 近战伤害 \ + +25% 且带有点燃效果,免疫火焰,死亡时引燃周围。\n_索敌(紫色):_ 近战伤害 +25%,近战范围 +4。\n_敌法(绿色):_ 受到伤害 -25%,拥有魔法免疫。\n_巨型(蓝色):_ 受到伤害 -75%,近战范围 +1,无法进入门与过道。\n_祝福(黄色):_ 精准与躲避 +200%。\n_成长(红色):_ 精准、躲避、攻击伤害与有效生命值 +20%。每过 3 回合会再增长 1%。\n_鬼磷(天蓝色):_ 近战伤害 +15% 且带有磷火效果,免疫火焰与磷火。\n_苦痛(暗紫色):_受到的伤害延缓释放,近战伤害+45%_ challenges.stronger_bosses=梦魇Boss[尚未完成] challenges.stronger_bosses_desc=这项挑战让挑战 Boss 变得更有挑战性了!\n\n_天狗:_生命 +25%\n_-_ 第一阶段:陷阱更加致命\n_-_ 第二阶段:技能频率更高\n_钻石宝箱王_: 生命+20%\n_DM-300:_生命 +60%\n_-_ 能量塔更坚固。\n_-_ 技能频率更高,威力也更强大\n_-_ 超载时移动速度更高\n_-_ 击败时必掉落荆棘斗篷\n_矮人国王:_生命 +50%\n_-_ 整场战斗内召唤的随从都更强大\n_-_ 第一阶段:技能与召唤频率都更高\n_-_ 第二阶段:每轮额外召唤两个随从\n_-_ 第三阶段:生命值 +100%,召唤频率更高\n_Yog-Dzewa:_\n_-_ 同时召唤两个古神之拳!\n_-_ 激光攻击伤害 +60%\n_-_ 召唤更强大的随从 actors.char.aquaphobia=你受到了来自水的伤害! diff --git a/core/src/main/assets/messages/scenes/scenes.properties b/core/src/main/assets/messages/scenes/scenes.properties index 5b5020649..7af338677 100644 --- a/core/src/main/assets/messages/scenes/scenes.properties +++ b/core/src/main/assets/messages/scenes/scenes.properties @@ -5,6 +5,8 @@ scenes.heroselectscene.custom_seed_set=确认 scenes.heroselectscene.custom_seed_clear=清除 scenes.heroselectscene.custom_seed_duplicate=已有一个相同的种子存档局正在进行中,请输入其他种子以进行游玩! +scenes.heroselectscene.challenges_unlock=完成一局游戏以解锁挑战。 + scenes.gamescene.go_here=前往这里 scenes.gamescene.examine=调查这里 scenes.gamescene.interact=与之对话 @@ -15,7 +17,6 @@ scenes.heroselectscene$4$1.title0=挑战模式 windows.wndchallenges.title0=挑战-Page1 windows.wndchallenges.title9=挑战-Page2 - scenes.gamescene.snowcynon=你现在的当前位置:雪凛峡谷 scenes.gamescene.descend=你降入了地牢的第%d层。 scenes.titlescene.spawnerror=楼层生成错误!!! @@ -250,9 +251,9 @@ scenes.kamuletscene.exit=踏上征途 scenes.kamuletscene.text=骄傲、妒忌、愤怒,伤悲、贪婪、贪食、好色\n\n人们的丑陋,在这里显露了出来。现在,你已经来到了一个两难的境地。是接受审判,从历史中消失?还是清除所有记忆,重新为你铺上一次道路。\n\n我不是神,但我是神的代言人。请做出选择吧! scenes.guidescene.title=魔绫像素地牢指南书 -scenes.guidescene.pages=11 +scenes.guidescene.pages=12 scenes.guidescene.title_0=写在前面 -scenes.guidescene.page_0=欢迎来到魔绫的像素地牢,这个地牢Δ基于0.92破碎Δ。\n\n这里是新手必读指南书。\n\n如果你是第一次游玩本地牢,请一定先看看这个指南。\n\nΔ它绝对对你今后游玩有益处。 +scenes.guidescene.page_0=欢迎来到魔绫的像素地牢,这个地牢Δ基于1.2.3破碎Δ。\n\n这里是新手必读指南书。\n\n如果你是第一次游玩本地牢,请一定先看看这个指南。\n\nΔ它绝对对你今后游玩有益处。 scenes.guidescene.title_1=关于难度 scenes.guidescene.page_1=诚然,难度是有的,不过肯定比不上赫拉克勒斯的十二试炼。 \n\n 事实上它的难度被认为控制在了一个可以接受的水平,如果不适应或感觉太难,很可能是因为没有熟悉它较为独特的机制,你可能需要更细致和灵活的战略战术才能在地牢里无往不利,所以接下来的内容会很好地帮助你。\n\n 放轻松,虽然它的要求有点高,但凡人又不是非要通关不可。 scenes.guidescene.title_2=鉴定物品 @@ -264,15 +265,17 @@ scenes.guidescene.page_4=在地牢里面,你总是你看到各种各样的书 scenes.guidescene.title_5=任务系统 scenes.guidescene.page_5=在地牢里面,你总能遇到形形色色的NPC。\n\n-他们或多或少都会给你一些任务。\n\n_完成任务将会获得一定的奖励,这会让你后续冒险途中能获得更多的益处。_ scenes.guidescene.title_6=风行水上 -scenes.guidescene.page_6=在你冒险的途中,一些守护神也在保护你。\n\n但由于一些其他因素,一些魔力聚焦的地点无法影响到你。\n\nΓ 注意,同样有一些恶神对你虎视眈眈! Γ +scenes.guidescene.page_6=在你冒险的途中,一些神秘力量正在守护你。\n\n-衪们会在你踏过水面给予你祝福。\n\n不过要小心的是,随着魔力的侵染,衪们也会变得邪恶无比…… scenes.guidescene.title_7=抢劫商店 -scenes.guidescene.page_7=诚然,抢劫商店是一种不必要手段。\n\n虽然,你抢劫成功可以获得所有东西。\n\n是的,商店可以抢劫,当然,你必须做好充分准备。否则,将会被商人的守卫杀死。祝你好运!!! +scenes.guidescene.page_7=诚然,抢劫商店是一种不必要手段。\n\n虽然,你抢劫成功可以获得所有东西。\n\n是的,商店可以抢劫,当然,你必须做好充分准备。\n\n-否则,将可能会被一个神秘少女处决。祝你好运 scenes.guidescene.title_8=染血金币 -scenes.guidescene.page_8=地牢现在的力量复杂多变,这也导致了地牢的首领可能很强也可能很弱。\n\n为此,我们在寒冰圣域发现的一枚刻有骷髅头的金币,沾染的血渍让这枚金币附着了能改变时空的魔力。抛动金币以扰动地牢的魔力流。通过抛动金币,便可以选择需要的Boss。\n\n特别说明:DM720是在未选择魔女的情况下以20%几率刷出。 +scenes.guidescene.page_8=地牢现在的力量复杂多变,这也导致了地牢的首领可能很强也可能很弱。\n\n为此,我们在寒冰圣域发现的一枚刻有骷髅头的金币,沾染的血渍让这枚金币附着了能改变时空的魔力。抛动金币以扰动地牢的魔力流。\n\n-通过抛动金币,便可以选择需要的Boss。\n\n特别说明:DM720是在未选择魔女的情况下以20%几率刷出。 scenes.guidescene.title_9=0层加成 -scenes.guidescene.page_9=当你完成了一些特殊挑战后,0层的四个基座就会追加更多的补给品。\n\n-请小心,挑战非常困难,但一旦开着挑战胜利了是不是很有成就感了,对吧! -scenes.guidescene.title_10=未完待续 -scenes.guidescene.page_10=感谢你阅读这篇指南,它可能并不完善。但应该能帮助你。\n\n同时,这只是上半段的结束。请期待下半段的更新。 +scenes.guidescene.page_9=当你完成了一些特殊挑战后,0层的四个基座就会追加更多的补给品。\n\n-请小心,挑战非常困难,但一旦开着挑战胜利了是不是很有成就感了,对吧!\n\n-同时0层随着探索的深入还会出现更多NPC,他们会在你的后续探索中让你获得更多受益。 +scenes.guidescene.title_10=寒冷系统 +scenes.guidescene.page_10=从监狱开始,暴风雪将会开始在地牢飘絮。当然,命运也在照顾我们。\n\n在监狱会有篝火房间,在篝火房间中能获得温度,克制寒冷的侵蚀。 +scenes.guidescene.title_11=娱乐模式 +scenes.guidescene.page_11=厌倦了常规模式,想游玩更多模式?\n\n娱乐模式欢迎你的到来!点击英雄选择界面右边的_提灯_即可进入。 scenes.thanksscene.code=编码致谢:\n-REN(夜临2作者)\n-Alexstrasza(注解作者)\n-SmuJB(诅咒作者)\n-Tianscar(碳素作者)\n-TrashBoxbodylev(经验作者) scenes.thanksscene.test=\n\n测试致谢:\n-CodenameE\n-熊猫头\n-迷茫\n-小狐狸\n-摘希\n-ZIOM-ObSir\n-坏猫猫\n-不是史神\n-月鸾\n-口水猫 diff --git a/core/src/main/assets/messages/ui/ui.properties b/core/src/main/assets/messages/ui/ui.properties index dfdd34d58..2cfe4a2d5 100644 --- a/core/src/main/assets/messages/ui/ui.properties +++ b/core/src/main/assets/messages/ui/ui.properties @@ -515,4 +515,6 @@ ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x63=-V0.6.1-Beta7\n1.修复染血金 ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x64=-V0.6.1-Beta7.2\n1.修复一些小错误\n2.少量UI迭代优化 +ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x65=-V0.6.1-Beta7.3\n1.修复第三大层默认寒冰魔女的问题\n2.修复诅咒法杖在BossRush的少量错误\n3.修复闪电饭团一次性消耗两个的问题\n4.修复DM720战斗结束电击效果可能存在的问题\n5.修复恐药异症的各种问题 + //ui.changelist.mlpd.vm0_5_x_changes.xxx// \ No newline at end of file diff --git a/core/src/main/assets/messages/windows/windows.properties b/core/src/main/assets/messages/windows/windows.properties index bc0a2763d..eb426d1d5 100644 --- a/core/src/main/assets/messages/windows/windows.properties +++ b/core/src/main/assets/messages/windows/windows.properties @@ -111,11 +111,11 @@ windows.pagewindows$pagewindowstab.title=左侧快捷栏设置 windows.pagewindows$pagewindowstab.page_ui=显示快捷栏 windows.bosssettingwindows.title = 染血金币控制终端 -windows.bosssettingwindows.boss_1 = 深入丛林调查 +windows.bosssettingwindows.boss_1 = 深入熔岩洞穴 windows.bosssettingwindows.boss_2 = 探寻宝藏迷宫 -windows.bosssettingwindows.boss_3 = 追查矿洞主谋 +windows.bosssettingwindows.boss_3 = 救赎寒冰公主 windows.bosssettingwindows.boss_4 = 对峙矮人将军 -windows.bosssettingwindows.boss_5 = 直面邪魂魔心 +windows.bosssettingwindows.boss_5 = 直面水晶意志 windows.bosssettingwindows.boss_unselect = 该领袖正在调查中 diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/BGMPlayer.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/BGMPlayer.java index 03e811a90..c0889509e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/BGMPlayer.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/BGMPlayer.java @@ -1,6 +1,5 @@ package com.shatteredpixel.shatteredpixeldungeon; -import static com.shatteredpixel.shatteredpixeldungeon.DLC.BOSSRUSH; import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.depth; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor; @@ -142,8 +141,8 @@ public class BGMPlayer { } else if (Dungeon.bossLevel() && t == 15 && Statistics.spawnersIce > 0) { Music.INSTANCE.play(Assets.BGM_BOSSC3, true); } else if (Dungeon.bossLevel() && t == 15) { - if(SPDSettings.level3boss()==3) Music.INSTANCE.play(Assets.BGM_BOSSC3, true); - else Music.INSTANCE.play(Assets.BGM_BOSSC, true); + if((Statistics.boss_enhance & 0x8) != 0) Music.INSTANCE.play(Assets.BGM_BOSSC3, true); + else Music.INSTANCE.play(Assets.BGM_BOSSC, true); } else if (Dungeon.bossLevel() && t == 20) { if((Statistics.boss_enhance & 0x8) != 0) Music.INSTANCE.play(Assets.BGM_BOSSD2, true); else Music.INSTANCE.play(Assets.BGM_BOSSD, true); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Challenges.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Challenges.java index 4f2449da2..31f004710 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Challenges.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Challenges.java @@ -28,9 +28,7 @@ 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.artifacts.HornOfPlenty; -import com.shatteredpixel.shatteredpixeldungeon.items.food.Blandfruit; import com.shatteredpixel.shatteredpixeldungeon.items.food.SmallRation; -import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing; import com.shatteredpixel.shatteredpixeldungeon.scenes.InterlevelScene; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; @@ -104,21 +102,17 @@ public class Challenges { } } - if (Dungeon.isChallenged(NO_HEALING)) { - if (item instanceof PotionOfHealing) { - return true; - } else if (item instanceof Blandfruit - && ((Blandfruit) item).potionAttrib instanceof PotionOfHealing) { - return true; - } - } - - +// if (Dungeon.isChallenged(NO_HEALING)) { +// if (item instanceof PotionOfHealing) { +// return true; +// } else if (item instanceof Blandfruit +// && ((Blandfruit) item).potionAttrib instanceof PotionOfHealing) { +// return true; +// } +// } if (Dungeon.isChallenged(NO_HERBALISM)) { - if (item instanceof Dewdrop) { - return true; - } + return item instanceof Dewdrop; } return false; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Dungeon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Dungeon.java index 2a6aa6c53..f504f9fa4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Dungeon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Dungeon.java @@ -461,13 +461,11 @@ public class Dungeon { level = new CavesLevel(); break; case 15: - if (SPDSettings.level3boss()==3){ + if((Statistics.boss_enhance & 0x3) != 0){ level = new CavesGirlDeadLevel(); - } else if (SPDSettings.level3boss()==2){ - level = new CaveTwoBossLevel(); - } else { - level = new NewCavesBossLevel(); } + else + level = Random.Float()<=0.4f ? new CaveTwoBossLevel() : new NewCavesBossLevel(); break; case 16: case 17: diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ChampionEnemy.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ChampionEnemy.java index 5dbf8d138..4c0baabc5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ChampionEnemy.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/ChampionEnemy.java @@ -290,14 +290,15 @@ public abstract class ChampionEnemy extends Buff { //we roll for a champion enemy even if we aren't spawning one to ensure that //mobsToChampion does not affect levelgen RNG (number of calls to Random.Int() is constant) Class buffCls; - switch (Random.Int(7)){ + switch (Random.Int(8)){ case 0: default: buffCls = Blazing.class; break; case 1: buffCls = Projecting.class; break; case 2: buffCls = AntiMagic.class; break; case 3: buffCls = Giant.class; break; case 4: buffCls = Blessed.class; break; case 5: buffCls = Growing.class; break; - case 6: buffCls = Halo.class; break; + case 6: buffCls = Halo.class; break; + case 7: buffCls = DelayMob.class; break; } if (Dungeon.mobsToChampion <= 0 && Dungeon.isChallenged(Challenges.CHAMPION_ENEMIES)) { @@ -348,16 +349,6 @@ public abstract class ChampionEnemy extends Buff { Buff.affect(enemy, HalomethaneBurning.class).reignite(enemy); } -// @Override -// public void detach() { -// for (int i : PathFinder.NEIGHBOURS9){ -// if (!Dungeon.level.solid[target.pos+i]){ -// GameScene.add(Blob.seed(target.pos+i, 4, HalomethaneFire.class)); -// } -// } -// super.detach(); -// } - @Override public float meleeDamageFactor() { return 1.15f; @@ -369,6 +360,18 @@ public abstract class ChampionEnemy extends Buff { } } + public static class DelayMob extends ChampionEnemy { + + { + color = 0x4B66AC; + } + + @Override + public float meleeDamageFactor() { + return 1.45f; + } + } + public static class Projecting extends ChampionEnemy { { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java index c6baa40d1..6405da345 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java @@ -947,6 +947,10 @@ public class Hero extends Char { } } + if(hero.exp < 0 && !(Dungeon.isChallenged(PRO))){ + exp = Random.NormalIntRange(10,20); + } + ///测试坐标用 //GLog.w(String.valueOf(hero.pos)); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java index 36e3d6910..b9e0105f7 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Mob.java @@ -61,6 +61,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle import com.shatteredpixel.shatteredpixeldungeon.items.Generator; import com.shatteredpixel.shatteredpixeldungeon.items.Gold; import com.shatteredpixel.shatteredpixeldungeon.items.Item; +import com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Viscosity; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.MasterThievesArmband; import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.TimekeepersHourglass; import com.shatteredpixel.shatteredpixeldungeon.items.food.Food; @@ -801,6 +802,12 @@ public abstract class Mob extends Char { if (state != HUNTING && !(src instanceof Corruption)) { alerted = true; } + + if(this.buff(ChampionEnemy.DelayMob.class) != null && dmg> 0){ + Viscosity.DeferedDamage deferred = Buff.affect( this, Viscosity.DeferedDamage.class ); + deferred.prolong( dmg ); + } + super.damage( dmg, src ); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/MoloHR.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/MoloHR.java index a7cc2e46b..6c18ef8d7 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/MoloHR.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/MoloHR.java @@ -5,26 +5,32 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs; +import com.shatteredpixel.shatteredpixeldungeon.Badges; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; -import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; -import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.GooWarn; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror; import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.BlastParticle; +import com.shatteredpixel.shatteredpixeldungeon.items.Generator; +import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.Brew; +import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ExoticScroll; +import com.shatteredpixel.shatteredpixeldungeon.levels.features.Chasm; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; +import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.MolotovHuntsmanSprite; +import com.shatteredpixel.shatteredpixeldungeon.ui.BossHealthBar; import com.watabou.utils.Bundle; -import com.watabou.utils.PathFinder; import com.watabou.utils.Random; public class MoloHR extends Mob { - private static final String COMBO = "combo"; - private String[] attackCurse; + + private final String[] attackCurse; private int combo; - private String[] deathCurse; + private final String[] deathCurse; public MoloHR() { this.spriteClass = MolotovHuntsmanSprite.class; @@ -35,9 +41,9 @@ public class MoloHR extends Mob { this.defenseSkill = 10; flying = true; this.EXP = 15; - this.baseSpeed = 0.5625F; - this.deathCurse = new String[]{"!!!"}; - this.attackCurse = new String[]{"就你?还想打我?", "让火焰净化一切!", "那个幽灵太看得起你了!", "我说,为什么要让我承担?", + this.baseSpeed = 2F; + this.deathCurse = new String[]{"终于,解脱了……"}; + this.attackCurse = new String[]{"就你?还想打我?", "让火焰净化一切!", "你是何人?", "我说,为什么要让我承担?", "这都是你的错!", "扬了你的骨灰!", "啊!", "烧死你"}; this.combo = 0; @@ -46,26 +52,17 @@ public class MoloHR extends Mob { } public int attackProc(Char var1, int var2) { - byte var3 = 0; + int var4; if (Random.Int(0, 8) > 7) { var4 = Random.Int(this.attackCurse.length); - this.sprite.showStatus(16711680, this.attackCurse[var4], new Object[0]); + this.sprite.showStatus(16711680, this.attackCurse[var4]); } int var5 = super.attackProc(var1, var2); var4 = var1.pos; CellEmitter.center(var4).burst(BlastParticle.FACTORY, 30); - GameScene.add(Blob.seed(var4, 4, GooWarn.class)); - int[] var7 = PathFinder.NEIGHBOURS9; - int var6 = var7.length; - - for(var2 = var3; var2 < var6; ++var2) { - int var8 = var7[var2]; - if (!Dungeon.level.solid[var4 + var8]) { - GameScene.add(Blob.seed(var4 + var8, 2, GooWarn.class)); - } - } + //GameScene.add(Blob.seed(var4, 4, GooWarn.class)); ++this.combo; return var5; @@ -78,23 +75,30 @@ public class MoloHR extends Mob { protected boolean canAttack(Char var1) { Ballistica var2 = new Ballistica(this.pos, var1.pos, 7); boolean var3; - if (!Dungeon.level.adjacent(this.pos, var1.pos) && var2.collisionPos == var1.pos) { - var3 = true; - } else { - var3 = false; - } + var3 = !Dungeon.level.adjacent(this.pos, var1.pos) && var2.collisionPos == var1.pos; return var3; } public int damageRoll() { - return Random.NormalIntRange(40, 49); + return Random.NormalIntRange(30, 40); } - + public static Brew food; + public static ExoticScroll scrolls; @Override public void die( Object cause ) { super.die( cause ); + Badges.validateBossSlain(); + Badges.KILLSDM720(); + GameScene.bossSlain(); Dungeon.level.unseal(); + if (cause != Chasm.class) { + int var2 = Random.Int(this.deathCurse.length); + this.sprite.showStatus(16711680, this.deathCurse[var2]); + } + Dungeon.level.drop( ( Generator.randomUsingDefaults( Generator.Category.SCROLL ) ), this.pos ); + Dungeon.level.drop( ( Generator.randomUsingDefaults( Generator.Category.POTION ) ), this.pos ); + Dungeon.level.drop( ( Generator.randomUsingDefaults( Generator.Category.WAND ) ), this.pos ); } protected boolean getCloser(int var1) { @@ -103,7 +107,6 @@ public class MoloHR extends Mob { if (this.state == this.HUNTING) { boolean var3 = var2; if (this.enemySeen) { - var3 = var2; if (this.getFurther(var1)) { var3 = true; } @@ -122,7 +125,15 @@ public class MoloHR extends Mob { @Override public void notice() { - + if (!BossHealthBar.isAssigned()) { + BossHealthBar.assignBoss(this); + yell(Messages.get(this, "notice")); + for (Char ch : Actor.chars()){ + if (ch instanceof DriedRose.GhostHero){ + ((DriedRose.GhostHero) ch).sayBoss(); + } + } + } super.notice(); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/NewDM720.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/NewDM720.java index a98bd0036..d5bdc3ad9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/NewDM720.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/NewDM720.java @@ -22,7 +22,6 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs; import com.shatteredpixel.shatteredpixeldungeon.Assets; -import com.shatteredpixel.shatteredpixeldungeon.Badges; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; @@ -30,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Barrier; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ChampionHero; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Charm; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Chill; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Cripple; @@ -53,7 +53,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.quest.MetalShard; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfBlastWave; import com.shatteredpixel.shatteredpixeldungeon.levels.CaveTwoBossLevel; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; -import com.shatteredpixel.shatteredpixeldungeon.levels.NewCavesBossLevel; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; @@ -318,7 +317,7 @@ public class NewDM720 extends MolotovHuntsman { if (Dungeon.level.map[step] == Terrain.INACTIVE_TRAP && state == HUNTING) { //don't gain energy from cells that are energized - if (NewCavesBossLevel.PylonEnergy.volumeAt(pos, NewCavesBossLevel.PylonEnergy.class) > 0){ + if (CaveTwoBossLevel.PylonEnergy.volumeAt(pos, CaveTwoBossLevel.PylonEnergy.class) > 0){ return; } @@ -434,7 +433,7 @@ public class NewDM720 extends MolotovHuntsman { safeCell = rockCenter + PathFinder.NEIGHBOURS8[Random.Int(8)]; } while (safeCell == pos || (Dungeon.level.solid[safeCell] && Random.Int(2) == 0) - || (Blob.volumeAt(safeCell, NewCavesBossLevel.PylonEnergy.class) > 0 && Random.Int(2) == 0)); + || (Blob.volumeAt(safeCell, CaveTwoBossLevel.PylonEnergy.class) > 0 && Random.Int(2) == 0)); int start = rockCenter - Dungeon.level.width() * 3 - 3; int pos; @@ -531,10 +530,12 @@ public class NewDM720 extends MolotovHuntsman { // GetBossLoot(); // } super.die(cause); - Badges.validateBossSlain(); - Badges.KILLSDM720(); - GameScene.bossSlain(); - Dungeon.level.unseal(); + cause = new MoloHR(); + ((MoloHR) cause).pos = pos; + GameScene.add(((Mob) (cause))); + Buff.affect((Mob) (cause), ChampionHero.Light.class, ChampionHero.DURATION*200f); + ((Mob) (cause)).notice(); + //60% chance of 2 shards, 30% chance of 3, 10% chance for 4. Average of 2.5 int shards = Random.chances(new float[]{0, 0, 6, 3, 1}); for (int i = 0; i < shards; i++) { @@ -544,7 +545,6 @@ public class NewDM720 extends MolotovHuntsman { } while (!Dungeon.level.passable[pos + ofs]); Dungeon.level.drop(new MetalShard(), pos + ofs).sprite.drop(pos); } - Badges.validateBossSlain(); Dungeon.level.drop(new CapeOfThorns(), pos).sprite.drop(pos); yell( Messages.get(this, "defeated") ); @@ -586,7 +586,7 @@ public class NewDM720 extends MolotovHuntsman { if (bestpos != pos){ Sample.INSTANCE.play( Assets.Sounds.ROCKS ); - Rect gate = NewCavesBossLevel.gate; + Rect gate = CaveTwoBossLevel.gate; for (int i : PathFinder.NEIGHBOURS9){ if (Dungeon.level.map[pos+i] == Terrain.WALL || Dungeon.level.map[pos+i] == Terrain.WALL_DECO){ Point p = Dungeon.level.cellToPoint(pos+i); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Rat.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Rat.java index f10aa203f..f61eb48ca 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Rat.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/Rat.java @@ -34,7 +34,7 @@ public class Rat extends Mob { { spriteClass = RatSprite.class; - + HP = HT = 8; defenseSkill = 2; maxLvl = 5; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/food/LightFood.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/food/LightFood.java index 54d8b261c..6fe429d2a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/food/LightFood.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/food/LightFood.java @@ -1,43 +1,21 @@ package com.shatteredpixel.shatteredpixeldungeon.items.food; -import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Challenges; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; -import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ChampionHero; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Healing; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hunger; import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; import com.shatteredpixel.shatteredpixeldungeon.plants.AikeLaier; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; -import com.watabou.noosa.audio.Sample; public class LightFood extends Food { public float energy = Hunger.STARVING; - @Override - public void execute( Hero hero, String action ) { - - super.execute( hero, action ); - - if (action.equals( AC_EAT )) { - detach( hero.belongings.backpack ); - Buff.affect(hero, Healing.class).setHeal((int) (0.4f * hero.HT + 14), 0.25f, 0); - satisfy(hero); - Buff.affect(hero, ChampionHero.Light.class, ChampionHero.DURATION-140f); - hero.sprite.operate( hero.pos ); - hero.busy(); - Sample.INSTANCE.play( Assets.Sounds.DRINK ); - - hero.spend( eatingTime() ); - } - } - { stackable = true; image = ItemSpriteSheet.LSPDA; - //赋予快捷栏 defaultAction = AC_EAT; bones = true; } @@ -61,7 +39,9 @@ public class LightFood extends Food { protected void satisfy( Hero hero ){ if (Dungeon.isChallenged(Challenges.NO_FOOD)){ Buff.affect(hero, Hunger.class).satisfy(energy/3f); + Buff.affect(hero, Healing.class).setHeal((int) (0.6f * hero.HT + 14), 0.25f, 0); } else { + Buff.affect(hero, Healing.class).setHeal((int) (0.8f * hero.HT + 14), 0.25f, 0); Buff.affect(hero, Hunger.class).satisfy(energy); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/CursedWand.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/CursedWand.java index 9a2243d23..4f929f498 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/CursedWand.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/wands/CursedWand.java @@ -295,7 +295,7 @@ public class CursedWand { //inter-level teleportation case 2: - if (Dungeon.depth > 1 && !Dungeon.bossLevel() && user == Dungeon.hero) { + if (Dungeon.depth > 1 && !Dungeon.bossLevel() && user == Dungeon.hero && Dungeon.isDLC(Conducts.Conduct.NULL)) { //each depth has 1 more weight than the previous depth. float[] depths = new float[Dungeon.depth-1]; @@ -314,7 +314,6 @@ public class CursedWand { } else { ScrollOfTeleportation.teleportChar(user); - } return true; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CaveTwoBossLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CaveTwoBossLevel.java index b3d5102ec..2f9ebcd1b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CaveTwoBossLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CaveTwoBossLevel.java @@ -29,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Electricity; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ChampionHero; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.NewDM720; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.OldDM300; @@ -122,7 +123,7 @@ public class CaveTwoBossLevel extends Level { Painter.fill(this, 10, 8, 13, 1, Terrain.CHASM); Painter.fill(this, 12, 9, 9, 1, Terrain.CHASM); Painter.fill(this, 13, 10, 7, 1, Terrain.CHASM); - Painter.fill(this, 14, 3, 5, 10, Terrain.WATER); + Painter.fill(this, 14, 3, 5, 10, Terrain.EMPTY); //fill in special floor, statues, and exits Painter.fill(this, 15, 2, 3, 3, Terrain.WATER); @@ -400,8 +401,8 @@ public class CaveTwoBossLevel extends Level { private static final short n = -1; //used when a tile shouldn't be changed private static final short W = Terrain.WALL; - private static final short e = Terrain.WATER; - private static final short s = Terrain.WATER; + private static final short e = Terrain.EMPTY; + private static final short s = Terrain.EMPTY; private static short[] entrance1 = { n, n, n, n, n, n, n, n, @@ -768,11 +769,12 @@ public class CaveTwoBossLevel extends Level { Char ch = Actor.findChar(cell); if (ch != null && !(ch instanceof NewDM720)) { - Sample.INSTANCE.play( Assets.Sounds.LIGHTNING ); - if(Dungeon.hero.buff(ChampionHero.Light.class) != null){ - ch.damage( Random.NormalIntRange(0, 0), Electricity.class); + + if(Dungeon.hero.buff(ChampionHero.Light.class) != null || Dungeon.hero.buff(LockedFloor.class) == null || ch.buff(ChampionHero.Light.class) != null){ + return; } else { ch.damage(Random.NormalIntRange(6, 12), Electricity.class); + Sample.INSTANCE.play( Assets.Sounds.LIGHTNING ); } ch.sprite.flash(); 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 9ce32118f..89356249f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/HeroSelectScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/HeroSelectScene.java @@ -474,7 +474,7 @@ public class HeroSelectScene extends PixelScene { IconButton DungeonHappyMode = new IconButton(new ItemSprite(ItemSpriteSheet.LANTERNB)) { @Override protected void onClick() { - if(1==1){ + if ( Badges.isUnlocked(Badges.Badge.BOSS_SLAIN_3)){ ShatteredPixelDungeon.scene().addToFront(new WndDLC(SPDSettings.dlc(), true)); } else { ShatteredPixelDungeon.scene().addToFront(new WndMessage("击败_第三大层Boss_后解锁娱乐模式。")); @@ -489,12 +489,7 @@ public class HeroSelectScene extends PixelScene { IconButton DiffcultButton = new IconButton(new ItemSprite(ItemSpriteSheet.DIFFCULTBOOT)) { @Override protected void onClick() { - if(1==1){ - ShatteredPixelDungeon.scene().addToFront(new WndDLCX(SPDSettings.difficulty(), true)); - } else { - ShatteredPixelDungeon.scene().addToFront(new WndMessage("获得_不屈斗士_徽章后解锁难度系统。--暂未实装")); - } - + ShatteredPixelDungeon.scene().addToFront(new WndDLCX(SPDSettings.difficulty(), true)); } }; DiffcultButton.setSize( BUTTON_HEIGHT, BUTTON_HEIGHT ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/DM720Sprite.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/DM720Sprite.java index fb6eddb87..7ee28efff 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/DM720Sprite.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/DM720Sprite.java @@ -22,8 +22,10 @@ package com.shatteredpixel.shatteredpixeldungeon.sprites; import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.NewDM720; +import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Tengu; import com.shatteredpixel.shatteredpixeldungeon.effects.MagicMissile; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.BlastParticle; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.SparkParticle; @@ -48,6 +50,22 @@ public class DM720Sprite extends MobSprite { updateChargeState(false); } + public void attack(int cell) { + if (!Dungeon.level.adjacent(cell, this.ch.pos)) { + ((MissileSprite)this.parent.recycle(MissileSprite.class)).reset(this.ch.pos, cell, new Tengu.BombAbility.BombItem(), + new Callback() { + public void call() { + DM720Sprite.this.ch.onAttackComplete(); + } + }); + this.play(this.attack); + this.turnTo(this.ch.pos, cell); + } else { + super.attack(cell); + } + + } + public void updateChargeState( boolean enraged ){ if (superchargeSparks != null) superchargeSparks.on = enraged; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/MainHandIndicator.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/MainHandIndicator.java index cd8023a4a..e56911b88 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/MainHandIndicator.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/MainHandIndicator.java @@ -2,11 +2,12 @@ package com.shatteredpixel.shatteredpixeldungeon.ui; import com.shatteredpixel.shatteredpixeldungeon.Chrome; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Slyl; import com.shatteredpixel.shatteredpixeldungeon.items.Item; -import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; +import com.shatteredpixel.shatteredpixeldungeon.scenes.GuideScene; import com.shatteredpixel.shatteredpixeldungeon.windows.WndQuest; import com.watabou.noosa.Game; import com.watabou.noosa.Image; @@ -83,19 +84,7 @@ public class MainHandIndicator extends Button { @Override protected void onClick() { super.onClick(); -// ShatteredPixelDungeon.scene().add(new WndOptions( -// Messages.get(this, "saver"), -// Messages.get(this, "saver_desc"), -// Messages.get(this, "okay"), -// Messages.get(this, "cancel")) { -// @Override -// protected void onSelect(int index) { -// if (index == 0) { -// ShatteredPixelDungeon.switchNoFade(GuideScene.class); -// } -// } -// }); - tell(Messages.get(Slyl.class, "readbooks")); + ShatteredPixelDungeon.switchNoFade(GuideScene.class); } }); 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 5b0f0c5b7..16335ff47 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 @@ -14,6 +14,7 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.ColdRatSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.CrivusFruitsSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.DM300SpiderSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.DM300Sprite; +import com.shatteredpixel.shatteredpixeldungeon.sprites.DM720Sprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.DiedMonkLoaderSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.DimandKingSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.FlameBoiSprite; @@ -49,6 +50,7 @@ import java.util.ArrayList; public class vM0_6_7_X_Changes { public static void addAllChanges(ArrayList changeInfos) { + add_v0_6_36_Changes(changeInfos); add_v0_6_35_Changes(changeInfos); add_v0_6_34_Changes(changeInfos); add_v0_6_33_Changes(changeInfos); @@ -87,6 +89,35 @@ public class vM0_6_7_X_Changes { add_v0_6_0_Changes(changeInfos); } + public static void add_v0_6_36_Changes( ArrayList changeInfos ) { + ChangeInfo changes = new ChangeInfo("v0.6.1.0-Beta7.3(P3)-520特别更新", true, ""); + changes.hardlight(Window.TITLE_COLOR); + changeInfos.add(changes); + + changes = new ChangeInfo("新内容", false, null); + changes.hardlight(Window.GREEN_COLOR); + changeInfos.add(changes); + + Image issxsaxs =new DM720Sprite(); + issxsaxs.scale.set(PixelScene.align(0.8f)); + changes.addButton(new ChangeButton(issxsaxs, ("DM720调整"), + ("DM720现在将会在第三大层以20%概率出现,如果你未选择救赎寒冰公主的话。\n\n" + + "同时,DM720将会追加一个三阶段,请小心!奖励有所变化。"))); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.MOBBOOKS), "第八个精英", + "苦痛精英:受到的伤害进行延时释放,拥有 45% 额外近战伤害。")); + + changes = new ChangeInfo("改动", false, null); + changes.hardlight(Window.CYELLOW); + changeInfos.add(changes); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.POTION_DEEPYELLOW), "经验修复", + "现在如果在游戏中获得了负数经验,将会在下次行动后立刻修复。")); + + 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_06X65"))); + } + public static void add_v0_6_35_Changes( ArrayList changeInfos ) { ChangeInfo changes = new ChangeInfo("v0.6.1.0-Beta7.2(P3)", true, ""); changes.hardlight(Window.TITLE_COLOR); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/BossSettingWindows.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/BossSettingWindows.java index 2572a4015..498b05d7e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/BossSettingWindows.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/BossSettingWindows.java @@ -84,12 +84,8 @@ public class BossSettingWindows extends Window { cbs.add(cb); pos += BOX_HEIGHT + GAP; -// if(i == 2){ -// cb.setRect(GAP, 500, WIDTH - GAP * 2, BOX_HEIGHT); -// } - //1 拟态王 - if(i == 1 && !Badges.isUnlocked(Badges.Badge.KILL_SM) || i == 0 || i==2 || i==4){ + if(i == 1 && !Badges.isUnlocked(Badges.Badge.KILL_SM) || i == 0 || i==4){ cb.alpha(0.4f); cb.active=false; cb.checked(false); @@ -103,13 +99,35 @@ public class BossSettingWindows extends Window { // level3 = new OptionSlider("", Messages.get(this, "dm300"), // Messages.get(this, "ice"), 1, 3) { +// // @Override // protected void onChange() { -// SPDSettings.level3boss(getSelectedValue()); -// } +// ShatteredPixelDungeon.scene().add(new WndOptions(new ItemSprite(ItemSpriteSheet.GOLD), +// Messages.get(BossSettingWindows.class, "bossattack"), +// Messages.get(BossSettingWindows.class, "bossgold") + ((2 + 1) * (Math.max(depth / 5, +// 1)) * 200), +// Messages.get(BossSettingWindows.class, "bug"), Messages.get(BossSettingWindows.class, +// "not_yet")) { +// @Override +// protected void onSelect(int index) { +// if (index == 0 && Dungeon.gold >= ((2 + 1) * (Math.max(depth / 5, 1)) * 200)) { +// Dungeon.gold -= ((2 + 1) * (Math.max(depth / 5, 1)) * 200); +// GLog.w(Messages.get(BossSettingWindows.class, "getboss") + Messages.get(BossSettingWindows.class, "boss_" + (2 + 1))); +// SPDSettings.level3boss(getSelectedValue()); +// } else if (index == 1) { +// GLog.w(Messages.get(BossSettingWindows.class, "cancal")); +// SPDSettings.level3boss(9); +// } else if (Dungeon.gold < ((2 + 1) * (Math.max(depth / 10, 1)) * 200)) { +// GLog.w(Messages.get(BossSettingWindows.class, "no_money")); +// SPDSettings.level3boss(9); +// } +// } +// }); +// } +// // }; // level3.setRect(GAP, 50, WIDTH - GAP * 2, BOX_HEIGHT); -// level3.setSelectedValue(SPDSettings.level3boss()); +// //level3.setSelectedValue(SPDSettings.level3boss()); // add(level3); resize(WIDTH, HEIGHT);