From 062f2f98f3dd316c441054dd5276b6ba5a041975 Mon Sep 17 00:00:00 2001 From: LingASDJ <2735951230@qq.com> Date: Wed, 11 Oct 2023 13:31:25 +0800 Subject: [PATCH] upate 0.6.5.0-Alpha6-Patch4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.修复了部分UI错误 2.开发者模式追加武器生成秘卷 3.PC端快捷键实装与优化 4.部分文案调整优化 5.变幻莫测地形优化,以及十字架不能携带入战斗场地 --- build.gradle | 4 +- .../interfaces/bosslogo/dm300or-clear.png | Bin 0 -> 1532 bytes .../interfaces/bosslogo/dm300or-title.png | Bin 0 -> 1809 bytes .../assets/messages/actors/actors.properties | 8 +-- .../assets/messages/items/items.properties | 9 ++- .../assets/messages/levels/levels.properties | 2 + .../shatteredpixeldungeon/Assets.java | 3 + .../actors/mobs/OldDM300.java | 10 +++- .../actors/mobs/bosses/SakaFishBoss.java | 2 +- .../actors/mobs/spical/GooMob.java | 15 ++--- .../custom/testmode/SpawnWeapon.java | 41 ++++++++----- .../levels/CavesLevel.java | 14 +++++ .../levels/SewerLevel.java | 16 ++++- .../levels/rooms/standard/GooRoom.java | 55 ++++++++++++++---- .../levels/rooms/standard/OldDM300Room.java | 15 ++++- .../scenes/GameScene.java | 10 ++++ .../sprites/DM300DeathBallSprite.java | 8 +-- .../ui/changelist/mlpd/vM0_6_7_X_Changes.java | 23 ++++++++ .../utils/WndTextNumberInput.java | 2 + 19 files changed, 184 insertions(+), 53 deletions(-) create mode 100644 core/src/main/assets/interfaces/bosslogo/dm300or-clear.png create mode 100644 core/src/main/assets/interfaces/bosslogo/dm300or-title.png diff --git a/build.gradle b/build.gradle index ad80eef32..c76ce2805 100644 --- a/build.gradle +++ b/build.gradle @@ -18,8 +18,8 @@ allprojects { appName = 'Magic Ling Pixel Dungeon' appPackageName = 'com.ansdomagiclingpixeldungeon.ling' - appVersionCode =913000 - appVersionName = '0.6.5.0-Alpha6-Patch3' + appVersionCode =914000 + appVersionName = '0.6.5.0-Alpha6-Patch4' appJavaCompatibility = JavaVersion.VERSION_1_8 diff --git a/core/src/main/assets/interfaces/bosslogo/dm300or-clear.png b/core/src/main/assets/interfaces/bosslogo/dm300or-clear.png new file mode 100644 index 0000000000000000000000000000000000000000..e22367dc18bff1c654fb3d365b0282c1c0b67b04 GIT binary patch literal 1532 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 literal 0 HcmV?d00001 diff --git a/core/src/main/assets/messages/actors/actors.properties b/core/src/main/assets/messages/actors/actors.properties index 96d45b049..55f5b0fa9 100644 --- a/core/src/main/assets/messages/actors/actors.properties +++ b/core/src/main/assets/messages/actors/actors.properties @@ -6,7 +6,7 @@ actors.mobs.blackmimic.desc=宝箱怪是一种能随意改变外形的魔法生 actors.mobs.flowerslime.name=丛林繁花史莱姆 actors.mobs.flowerslime.desc= 在丛林中随处可见的生物,原本应该是比较温顺的一种生物,可能是受到地牢诅咒影响,它们也开始主动袭击过往的人类。\n\n史莱姆的身体富有粘性,很显然,这个史莱姆身上沾满了这片地区的植物,也许上面还有些种子。 -actors.mobs.olddm300.name=DM300-原型机 +actors.mobs.olddm300.name=DM275-原型机 actors.mobs.olddm300.desc=这台机器是DM300量产前,矮人王国研发的原型试验机,由于其较为笨重的原因,原型机已被废弃,你现在看见的这台应该是最后一台!\n\n在燃料耗尽前可以进行极大范围的远程攻击,在水面移动时可以进行自我修复并填装一定的燃料但会蒸发水面。血量低于一定比列后立刻吸收本层所有DM201的能量给自己生成护盾,同时被吸收能量的DM201也会立刻被关闭。 actors.mobs.olddm300.notice=侦察到入侵者…… actors.mobs.olddm300.defeated=系统能量不足,自动关…… @@ -494,10 +494,10 @@ custom.testmode.mobplacer.forbidden=你不能在这里放置怪物。 custom.testmode.mobplacer.prompt=选择目标地点 custom.testmode.mobplacer.elite=精英词缀数量 -custom.testmode.spawnweapon.name=武器生成器 -custom.testmode.spawnweapon.desc=遇到困难睡大觉 +custom.testmode.spawnweapon.name=武器生成秘卷 +custom.testmode.spawnweapon.desc=生成需要的武器以及属性。\n\n原作者:Alexstrasza\n\n复刻者:潘多拉\n\n优化者:KDSALing custom.testmode.spawnweapon.ac_spawn=生成 -name = 楽 +name = 请先选择附魔种类,然后会出现对应的编号。\n\n通过下方滑块滑动选择对应的编号即可。 custom.testmode.spawnweapon$weaponsetting.selected=选择 diff --git a/core/src/main/assets/messages/items/items.properties b/core/src/main/assets/messages/items/items.properties index 7980601c9..d3353a077 100644 --- a/core/src/main/assets/messages/items/items.properties +++ b/core/src/main/assets/messages/items/items.properties @@ -2,6 +2,9 @@ ### 特别武器 +items.weapon.melee.icedewvialsword.name=露水神剑-冰 +items.weapon.melee.icedewvialsword.desc=WIP + items.quest.red.name=白玫瑰 items.quest.red.desc=在这危险而阴森的地牢中,这朵白玫瑰仿佛刺破了周遭的黑暗,向你展示着名为“人文”的力量。 items.quest.red.ac_interlevel_tp=返回 @@ -373,12 +376,12 @@ items.food.alldrink.name=全能治疗饮料 items.food.alldrink.eat_msg=你感觉你又满血复活了。 items.food.alldrink.desc=由三个治疗药水通过回忆的技术造就了这个全能治疗饮料。\n使用者可以有一段时间的治疗,且处于饱腹阶段。 -items.scrolls.scrollofflamecursed.name=极度秘卷 -items.scrolls.scrollofflamecursed.desc=极,代表着严寒。度,代表着炎热。奇异的魔法能量被禁锢在秘卷羊皮纸内,当这股能量被释放时会发出_耀眼的紫色审判光芒_,视野中的所有敌人都会被秘卷蕴藏的魔法力量审判,造成致命的霜火效果,霜火根据玩家的面板伤害提升。 \n\n由于这个秘卷有专属标识,所以无需被鉴定。 +items.scrolls.scrollofflamecursed.name=烈焰噩梦秘卷 +items.scrolls.scrollofflamecursed.desc=烈焰噩梦秘卷可以产生异常危险的霜火,对任何可见敌人造成致命的伤害。\n\n由于这个秘卷有专属标识,所以无需被鉴定。 items.scrolls.scrollofflamecursed.none=这个卷轴产生了一阵耀眼的幻蓝光芒。 items.scrolls.scrollofflamecursed.one=这个卷轴产生了一阵耀眼的幻蓝光芒的同时%s被点燃了! items.scrolls.scrollofflamecursed.many=这个卷轴产生了一阵耀眼的幻蓝光芒的同时怪物们被点燃了! -items.scrolls.scrollofflamecursed.null=极度秘卷 +items.scrolls.scrollofflamecursed.null=烈焰噩梦秘卷 items.potions.exotic.potionofholyfuror.name=神圣祝福合剂 items.potions.exotic.potionofholyfuror.desc=神圣的能量被浓缩为液态,这瓶合剂能够赐予你更长时间的祝福。 diff --git a/core/src/main/assets/messages/levels/levels.properties b/core/src/main/assets/messages/levels/levels.properties index 143031de3..abc3e7031 100644 --- a/core/src/main/assets/messages/levels/levels.properties +++ b/core/src/main/assets/messages/levels/levels.properties @@ -6,6 +6,8 @@ levels.features.chasm.jump=你确定要跳入洞口中?从这么高的地方 levels.features.chasm.ondeath=你落地过猛摔死了…… levels.features.chasm.rankings_desc=死于撞击 +levels.level.weapon=不能在迷你Boss战中使用十字架,已自动将你的十字架转移到入口处。 + levels.rooms.standard.magicdimandroom$chestmarker.name=暴风雪莹标记 levels.rooms.standard.magicdimandroom$chestmarker.desc=一个神秘的标记,是谁在这里设计的呢? diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java index 66ae3afc4..4c0331998 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java @@ -115,6 +115,9 @@ public class Assets { public static final String QliPhoth_Title = "interfaces/bosslogo/qliphoth-title.png"; public static final String QliPhoth_Clear = "interfaces/bosslogo/qliphoth-clear.png"; + public static final String DMOR_Title = "interfaces/bosslogo/dm300or-title.png"; + public static final String DMOR_Clear = "interfaces/bosslogo/dm300or-clear.png"; + public static final String SakaBJY_Title = "interfaces/bosslogo/sakabjy-title.png"; public static final String SakaBJY_Clear = "interfaces/bosslogo/sakabjy-clear.png"; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/OldDM300.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/OldDM300.java index bf44e57ac..efb494957 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/OldDM300.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/OldDM300.java @@ -48,7 +48,7 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.traps.AlarmTrap; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; -import com.shatteredpixel.shatteredpixeldungeon.sprites.DM300SpiderSprite; +import com.shatteredpixel.shatteredpixeldungeon.sprites.DM275Sprite; import com.shatteredpixel.shatteredpixeldungeon.ui.BossHealthBar; import com.watabou.noosa.Camera; import com.watabou.noosa.audio.Sample; @@ -59,7 +59,7 @@ import com.watabou.utils.Random; public class OldDM300 extends FlameB01 { { - spriteClass = DM300SpiderSprite.class; + spriteClass = DM275Sprite.class; state = PASSIVE; HP = HT = 270; EXP = 30; @@ -189,6 +189,7 @@ public class OldDM300 extends FlameB01 { if (!BossHealthBar.isAssigned()) { BossHealthBar.assignBoss(this); yell(Messages.get(this, "notice")); + GameScene.bossReady(); } } @@ -256,7 +257,10 @@ public class OldDM300 extends FlameB01 { @Override public void restoreFromBundle(Bundle bundle) { super.restoreFromBundle(bundle); - BossHealthBar.assignBoss(this); + if (state == HUNTING){ + BossHealthBar.assignBoss(this); + } + } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/bosses/SakaFishBoss.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/bosses/SakaFishBoss.java index aeb40fc70..ce12a5b33 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/bosses/SakaFishBoss.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/bosses/SakaFishBoss.java @@ -127,7 +127,7 @@ public class SakaFishBoss extends Boss { protected boolean act() { Actor.remove(this); HP = (HT/2); - yell(Messages.get(this, "interesting")); + yell(Messages.get(SakaFishBoss.class, "interesting")); ((AncientMysteryCityBossLevel)Dungeon.level).progress(); BossHealthBar.bleed(true); return true; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/spical/GooMob.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/spical/GooMob.java index 7d38705e1..adad15901 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/spical/GooMob.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/spical/GooMob.java @@ -115,7 +115,7 @@ public class GooMob extends Mob { AlarmTrap alarmTrap = new AlarmTrap(); alarmTrap.pos = pos; alarmTrap.activate(); - ScrollOfTeleportation.appear(hero, pos+4); + ScrollOfTeleportation.appear(hero, pos+3); tell(Messages.get(this, "notice")); } } @@ -134,7 +134,7 @@ public class GooMob extends Mob { AlarmTrap alarmTrap = new AlarmTrap(); alarmTrap.pos = pos; alarmTrap.activate(); - ScrollOfTeleportation.appear(hero, pos+4); + ScrollOfTeleportation.appear(hero, pos+3); tell(Messages.get(this, "notice")); } } @@ -267,7 +267,7 @@ public class GooMob extends Mob { if (state == PASSIVE) { state = HUNTING; notice(); - ScrollOfTeleportation.appear(hero, pos+1); + ScrollOfTeleportation.appear(hero, pos+3); SewerLevel level = (SewerLevel) Dungeon.level; level.seal(); level.updateChasmTerrain(); @@ -326,13 +326,10 @@ public class GooMob extends Mob { public void restoreFromBundle( Bundle bundle ) { super.restoreFromBundle( bundle ); - - pumpedUp = bundle.getInt( PUMPEDUP ); - - if(Dungeon.isChallenged(MOREROOM)){ - if (state != SLEEPING) BossHealthBar.assignBoss(this); - if ((HP*2 <= HT)) BossHealthBar.bleed(true); + if (state == HUNTING){ + BossHealthBar.assignBoss(this); } + pumpedUp = bundle.getInt( PUMPEDUP ); //if check is for pre-0.9.3 saves healInc = bundle.getInt(HEALINC); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/custom/testmode/SpawnWeapon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/custom/testmode/SpawnWeapon.java index 16df4d5c0..f4585958d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/custom/testmode/SpawnWeapon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/custom/testmode/SpawnWeapon.java @@ -44,6 +44,7 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.RenderedTextBlock; import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.shatteredpixel.shatteredpixeldungeon.utils.WndTextNumberInput; +import com.shatteredpixel.shatteredpixeldungeon.windows.WndError; import com.shatteredpixel.shatteredpixeldungeon.windows.WndSadGhost; import com.watabou.noosa.Game; import com.watabou.noosa.Image; @@ -57,7 +58,7 @@ import java.util.Objects; public class SpawnWeapon extends TestItem{ { - image = ItemSpriteSheet.CANDLE; + image = ItemSpriteSheet.DG25; defaultAction = AC_SPAWN; } @@ -273,7 +274,7 @@ public class SpawnWeapon extends TestItem{ createWeaponImage(AllWeapon); // 创建附魔信息文本块 - Text_EnchantInfo = PixelScene.renderTextBlock("", 5); + Text_EnchantInfo = PixelScene.renderTextBlock("", 6); Text_EnchantInfo.text(getEnchantInfo(getEnchant(enchant_rarity, enchant_id))); add(Text_EnchantInfo); @@ -311,20 +312,27 @@ public class SpawnWeapon extends TestItem{ add(CheckBox_Curse); // 创建武器等级按钮 - Button_Level = new RedButton(" ") { + Button_Level = new RedButton("尚未选择武器") { @Override protected void onClick() { - Game.runOnRenderThread(() -> ShatteredPixelDungeon.scene().add(new WndTextNumberInput( - "自定义武器等级", "输入要生成的武器的等级", Integer.toString(weapon_level), - 10, false, Messages.get(WndSadGhost.class, "confirm"), - Messages.get(WndSadGhost.class, "cancel")) { - @Override - public void onSelect(boolean check, String text) { - if (check && text.matches("\\d+")) { - weapon_level = Integer.parseInt(text); + if(!Button_Level.text().equals("尚未选择武器")){ // 修改此行代码 + Game.runOnRenderThread(() -> ShatteredPixelDungeon.scene().add(new WndTextNumberInput( + "自定义武器等级", "输入要生成的武器的等级,非数字会被自动处理,同时也不能超过INT的最大值2,147,483,647", + Integer.toString(weapon_level), + 9, false, Messages.get(WndSadGhost.class, "confirm"), + Messages.get(WndSadGhost.class, "cancel")) { + @Override + public void onSelect(boolean check, String text) { + + if (check && text.matches("\\d+")) { + int level = Integer.parseInt(text); + weapon_level = Math.min(level, Integer.MAX_VALUE); + } } - } - })); + })); + } else { + Game.scene().add( new WndError( "必须选择武器才能打开等级设定界面!" ) ); + } } }; add(Button_Level); @@ -466,10 +474,15 @@ public class SpawnWeapon extends TestItem{ private void updateEnchantText() { StringBuilder info = new StringBuilder(); if (enchant_rarity == 0) { - info = new StringBuilder("无附魔"); + info = new StringBuilder("请先选择附魔种类,然后会出现对应的编号。\n\n通过下方滑块滑动选择对应的编号即可。"); } else { for (int i = 0; i < getEnchantCount(enchant_rarity); i++) { info.append(i + 1).append(":").append(getEnchantInfo(getEnchant(enchant_rarity, i))).append(" "); + + // 添加换行判断 + if ((i + 1) % 4 == 0) { + info.append("\n"); + } } } Text_EnchantInfo.text(info.toString()); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesLevel.java index 4804f1771..09846a7c1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesLevel.java @@ -23,12 +23,14 @@ package com.shatteredpixel.shatteredpixeldungeon.levels; import static com.shatteredpixel.shatteredpixeldungeon.BGMPlayer.playBGM; import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero; +import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.SIGN; import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Blacksmith; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.RedDragon; +import com.shatteredpixel.shatteredpixeldungeon.items.Ankh; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.CavesPainter; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room; @@ -50,6 +52,7 @@ import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; import com.shatteredpixel.shatteredpixeldungeon.ui.Window; +import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.watabou.noosa.Camera; import com.watabou.noosa.Game; import com.watabou.noosa.Group; @@ -116,6 +119,17 @@ public class CavesLevel extends RegularLevel { GameScene.updateMap(i); // 更新地图显示 GameScene.flash(Window.WATA_COLOR); } + if (map[i] == SIGN) { + // 将 SIGN 地块改为新地形 + set(i, Terrain.WATER); + GameScene.updateMap(i); // 更新地图显示 + } + Ankh weapon = Dungeon.hero.belongings.getItem(Ankh.class); + if (weapon != null) { + Dungeon.level.drop(weapon, entrance).sprite.drop(); + weapon.detachAll(hero.belongings.backpack); + GLog.w(Messages.get(Level.class,"weapon")); + } GameScene.flash(Window.SKYBULE_COLOR); playBGM(Assets.BGM_BOSSC, true); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerLevel.java index 451a516c6..a74424c63 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerLevel.java @@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.levels; import static com.shatteredpixel.shatteredpixeldungeon.BGMPlayer.playBGM; import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero; +import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.SIGN; import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.SIGN_SP; import com.shatteredpixel.shatteredpixeldungeon.Assets; @@ -30,6 +31,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Ghost; import com.shatteredpixel.shatteredpixeldungeon.effects.Ripple; +import com.shatteredpixel.shatteredpixeldungeon.items.Ankh; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfUpgrade; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.JunglePainter; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; @@ -48,6 +50,7 @@ import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; import com.shatteredpixel.shatteredpixeldungeon.ui.Window; +import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.watabou.noosa.Camera; import com.watabou.noosa.Game; import com.watabou.noosa.Group; @@ -91,7 +94,7 @@ public class SewerLevel extends RegularLevel { synchronized (map){ for (int i = 0; i < map.length; i++) { if (map[i] == SIGN_SP) { - // 将 EMPTY_DECO 地块改为新地形 + // 将 SIGN_SP 地块改为新地形 set(i, Terrain.LOCKED_EXIT); GameScene.updateMap(i); // 更新地图显示 Camera.main.shake(3f,6f); @@ -101,6 +104,17 @@ public class SewerLevel extends RegularLevel { set(i, Terrain.EMPTY); GameScene.updateMap(i); // 更新地图显示 } + if (map[i] == SIGN) { + // 将 SIGN 地块改为新地形 + set(i, Terrain.WATER); + GameScene.updateMap(i); // 更新地图显示 + } + Ankh weapon = Dungeon.hero.belongings.getItem(Ankh.class); + if (weapon != null) { + Dungeon.level.drop(weapon, entrance).sprite.drop(); + weapon.detachAll(hero.belongings.backpack); + GLog.w(Messages.get(Level.class,"weapon")); + } playBGM(Assets.BGM_BOSSA, true); GameScene.flash(Window.DeepPK_COLOR); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/GooRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/GooRoom.java index 5235e3ec9..bd65ee131 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/GooRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/GooRoom.java @@ -1,6 +1,7 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard; import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.ClearElemental; @@ -8,6 +9,9 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.DM100; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Guard; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Salamander; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.spical.GooMob; +import com.shatteredpixel.shatteredpixeldungeon.items.Heap; +import com.shatteredpixel.shatteredpixeldungeon.items.keys.CrystalKey; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfMindVision; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; @@ -33,6 +37,7 @@ import com.shatteredpixel.shatteredpixeldungeon.tiles.CustomTilemap; import com.watabou.noosa.Image; import com.watabou.noosa.Tilemap; import com.watabou.utils.Point; +import com.watabou.utils.Random; public class GooRoom extends SpecialRoom { @@ -67,9 +72,18 @@ public class GooRoom extends SpecialRoom { int cy = c.y; for (Door door : connected.values()) { - door.set( Door.Type.REGULAR ); + door.set( Door.Type.CRYSTAL ); } + int KeyPos = (top + 10) * level.width() + left + 10; + + int L1Pos = (top + 6) * level.width() + left + 6; + + level.drop( new CrystalKey( Dungeon.depth ), L1Pos).type = Heap.Type.SKELETON; + + level.drop( new CrystalKey( Dungeon.depth ), KeyPos).type = Heap.Type.CHEST; + level.addItemToSpawn( new PotionOfMindVision()); + for(Point p : getPoints()) { int cell = level.pointToCell(p); if (level.map[cell] == Terrain.TRAP){ @@ -90,17 +104,38 @@ public class GooRoom extends SpecialRoom { Painter.drawCircle(level, c, 7, Terrain.WATER); Painter.drawCircle(level, c, 5, Terrain.EMPTY); Painter.drawCircle(level, c, 3, Terrain.WATER); - Painter.drawCircle(level, c, 2, Terrain.STATUE); + Painter.drawCircle(level, c, 2, Terrain.SIGN); Painter.drawCircle(level, c, 0, Terrain.WATER); - Painter.set(level, cx, cy - 1, Terrain.WATER); - Painter.set(level, cx+1, cy - 1, Terrain.WATER); - Painter.set(level, cx-1, cy - 1, Terrain.WATER); - Painter.set(level, cx+1, cy + 1, Terrain.WATER); - Painter.set(level, cx-1, cy + 1, Terrain.WATER); - Painter.set(level, cx+1, cy, Terrain.WATER); - Painter.set(level, cx-1, cy, Terrain.WATER); - Painter.set(level, cx, cy + 1, Terrain.WATER); + Painter.set(level, cx, cy - 4, Terrain.STATUE); + + Painter.set(level, cx+4, cy,Terrain.STATUE); + Painter.set(level, cx-4, cy, Terrain.STATUE); + + Painter.set(level, cx, cy + 4, Terrain.STATUE); + + Painter.set(level, cx, cy - 7, Terrain.WALL); + + Painter.set(level, cx+7, cy,Terrain.WALL); + + Painter.set(level, cx-7, cy, Terrain.WALL); + + Painter.set(level, cx, cy + 7, Terrain.WALL); + + switch (Random.Int(4)){ + case 0: + Painter.set(level, cx, cy - 7, Terrain.CRYSTAL_DOOR); + break; + case 1: + Painter.set(level, cx+7, cy,Terrain.CRYSTAL_DOOR); + break; + case 2: + Painter.set(level, cx-7, cy, Terrain.CRYSTAL_DOOR); + break; + case 3: + Painter.set(level, cx, cy + 7, Terrain.CRYSTAL_DOOR); + break; + } GooMob statue = new GooMob(); statue.pos = cx + cy * level.width(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/OldDM300Room.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/OldDM300Room.java index 44a00de40..c48fae09d 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/OldDM300Room.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/OldDM300Room.java @@ -1,8 +1,12 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard; +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.DM201; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.OldDM300; +import com.shatteredpixel.shatteredpixeldungeon.items.Heap; +import com.shatteredpixel.shatteredpixeldungeon.items.keys.CrystalKey; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfMindVision; import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; @@ -48,9 +52,15 @@ public class OldDM300Room extends SpecialRoom { int cy = c.y; for (Door door : connected.values()) { - door.set( Door.Type.REGULAR ); + door.set( Door.Type.CRYSTAL ); } + int KeyPos = (top + 20) * level.width() + left + 20; + + level.drop( new CrystalKey( Dungeon.depth ), KeyPos).type = Heap.Type.CHEST; + level.addItemToSpawn( new PotionOfMindVision()); + + int pillarW = (width()-8)/2; int pillarH = (height()-8)/2; @@ -67,7 +77,8 @@ public class OldDM300Room extends SpecialRoom { Painter.drawCircle(level, c, 7, Terrain.STATUE); Painter.drawCircle(level, c, 6, Terrain.WATER); Painter.drawCircle(level, c, 5, Terrain.WATER); - Painter.drawCircle(level, c, 2, Terrain.EMPTY); + Painter.drawCircle(level, c, 2, Terrain.SIGN); + Painter.drawCircle(level, c, 1, Terrain.WATER); for(Point p : getPoints()) { int cell = level.pointToCell(p); 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 0e7c50007..4c136d304 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameScene.java @@ -1528,6 +1528,11 @@ public class GameScene extends PixelScene { bossSlain.show( Window.CYELLOW, 0.3f, 5f); scene.showBanner(bossSlain); break; + case 14: + bossSlain.texture(Assets.Interfaces.DMOR_Title); + bossSlain.show( Window.CBLACK, 0.3f, 5f); + scene.showBanner(bossSlain); + break; case -31: bossSlain.texture(Assets.Interfaces.SakaBJY_Title); bossSlain.show( Window.CYELLOW, 0.3f, 5f); @@ -1565,6 +1570,11 @@ public class GameScene extends PixelScene { bossSlain.show( Window.CYELLOW, 0.3f, 5f); scene.showBanner(bossSlain); break; + case 14: + bossSlain.texture(Assets.Interfaces.DMOR_Clear); + bossSlain.show( Window.GDX_COLOR, 0.3f, 5f); + scene.showBanner(bossSlain); + break; case -31: bossSlain.texture(Assets.Interfaces.SakaBJY_Clear); bossSlain.show( Window.CYELLOW, 0.3f, 5f); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/DM300DeathBallSprite.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/DM300DeathBallSprite.java index 72a750a5c..aadb66c2e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/DM300DeathBallSprite.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/DM300DeathBallSprite.java @@ -15,13 +15,13 @@ public class DM300DeathBallSprite extends MobSprite texture("mobs/dm300deathballmode.png"); TextureFilm texturefilm = new TextureFilm(texture, 21, 21); idle = new Animation(10, true); - idle.frames(texturefilm, 0, Integer.valueOf(1), Integer.valueOf(2), Integer.valueOf(3), Integer.valueOf(0), Integer.valueOf(1), Integer.valueOf(2), Integer.valueOf(3)); + idle.frames(texturefilm, 0, 1, 2, 3, 0, 1, 2, 3); run = new Animation(10, true); - run.frames(texturefilm, Integer.valueOf(0), Integer.valueOf(1), Integer.valueOf(0), Integer.valueOf(1), Integer.valueOf(0), Integer.valueOf(1), Integer.valueOf(0), Integer.valueOf(1)); + run.frames(texturefilm, 0, 1, 0, 1, 0, 1, 0, 1); attack = new Animation(15, false); - attack.frames(texturefilm, Integer.valueOf(0), Integer.valueOf(1), Integer.valueOf(2), Integer.valueOf(3)); + attack.frames(texturefilm, 0, 1, 2, 3); die = new Animation(20, false); - die.frames(texturefilm, 4, 5, 4, Integer.valueOf(5), Integer.valueOf(4), Integer.valueOf(5), Integer.valueOf(4), Integer.valueOf(5)); + die.frames(texturefilm, 4, 5, 4, 5, 4, 5, 4, 5); play(idle); } 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 314911644..ca3c41073 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 @@ -145,6 +145,29 @@ public class vM0_6_7_X_Changes { changes.addButton(new ChangeButton(i, ("熔岩火龙"), ("丛林暴乱的真相"))); + changes = new ChangeInfo("v0.6.5.0-Alpha6-Patch4", true, ""); + changes.hardlight(Window.TITLE_COLOR); + changeInfos.add(changes); + + + changes = new ChangeInfo("新内容", false, null); + changes.hardlight(Window.GREEN_COLOR); + changeInfos.add(changes); + + changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.DG25), ("开发者模式v0.5"), + ("新增武器生成秘卷,感谢潘多拉的代码制作和注解版的代码支持。"))); + + changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("挑战:变幻莫测V0.3"), + ("修复了一堆问题,并改善了部分体验"))); + + changes = new ChangeInfo("改动", false, null); + changes.hardlight(Window.CYELLOW); + changeInfos.add(changes); + + changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("杂项修改"), + ("1.修复了部分文案问题\n\n" + + "2.调整了一些底层代码" ))); + changes = new ChangeInfo("v0.6.5.0-Alpha6.9-6.93-LAST", true, ""); changes.hardlight(Window.TITLE_COLOR); changeInfos.add(changes); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/utils/WndTextNumberInput.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/utils/WndTextNumberInput.java index a1792230d..8bd339ed4 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/utils/WndTextNumberInput.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/utils/WndTextNumberInput.java @@ -1,5 +1,6 @@ package com.shatteredpixel.shatteredpixeldungeon.utils; +import com.badlogic.gdx.Gdx; import com.shatteredpixel.shatteredpixeldungeon.Chrome; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton; @@ -176,6 +177,7 @@ public class WndTextNumberInput extends Window { super.offset(xOffset, yOffset); if (textBox != null){ textBox.setRect(textBox.left(), textBox.top(), textBox.width(), textBox.height()); + Gdx.input.setOnscreenKeyboardVisible(false); } }