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 000000000..e22367dc1 Binary files /dev/null and b/core/src/main/assets/interfaces/bosslogo/dm300or-clear.png differ diff --git a/core/src/main/assets/interfaces/bosslogo/dm300or-title.png b/core/src/main/assets/interfaces/bosslogo/dm300or-title.png new file mode 100644 index 000000000..d030dc15d Binary files /dev/null and b/core/src/main/assets/interfaces/bosslogo/dm300or-title.png differ 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); } }