upate 0.6.5.0-Alpha6-Patch4

1.修复了部分UI错误
2.开发者模式追加武器生成秘卷
3.PC端快捷键实装与优化
4.部分文案调整优化
5.变幻莫测地形优化,以及十字架不能携带入战斗场地
This commit is contained in:
LingASDJ 2023-10-11 13:31:25 +08:00
parent 189b4b1d40
commit 062f2f98f3
19 changed files with 184 additions and 53 deletions

View File

@ -18,8 +18,8 @@ allprojects {
appName = 'Magic Ling Pixel Dungeon' appName = 'Magic Ling Pixel Dungeon'
appPackageName = 'com.ansdomagiclingpixeldungeon.ling' appPackageName = 'com.ansdomagiclingpixeldungeon.ling'
appVersionCode =913000 appVersionCode =914000
appVersionName = '0.6.5.0-Alpha6-Patch3' appVersionName = '0.6.5.0-Alpha6-Patch4'
appJavaCompatibility = JavaVersion.VERSION_1_8 appJavaCompatibility = JavaVersion.VERSION_1_8

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -6,7 +6,7 @@ actors.mobs.blackmimic.desc=宝箱怪是一种能随意改变外形的魔法生
actors.mobs.flowerslime.name=丛林繁花史莱姆 actors.mobs.flowerslime.name=丛林繁花史莱姆
actors.mobs.flowerslime.desc= 在丛林中随处可见的生物,原本应该是比较温顺的一种生物,可能是受到地牢诅咒影响,它们也开始主动袭击过往的人类。\n\n史莱姆的身体富有粘性很显然这个史莱姆身上沾满了这片地区的植物也许上面还有些种子。 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.desc=这台机器是DM300量产前矮人王国研发的原型试验机由于其较为笨重的原因原型机已被废弃你现在看见的这台应该是最后一台\n\n在燃料耗尽前可以进行极大范围的远程攻击在水面移动时可以进行自我修复并填装一定的燃料但会蒸发水面。血量低于一定比列后立刻吸收本层所有DM201的能量给自己生成护盾同时被吸收能量的DM201也会立刻被关闭。
actors.mobs.olddm300.notice=侦察到入侵者…… actors.mobs.olddm300.notice=侦察到入侵者……
actors.mobs.olddm300.defeated=系统能量不足,自动关…… actors.mobs.olddm300.defeated=系统能量不足,自动关……
@ -494,10 +494,10 @@ custom.testmode.mobplacer.forbidden=你不能在这里放置怪物。
custom.testmode.mobplacer.prompt=选择目标地点 custom.testmode.mobplacer.prompt=选择目标地点
custom.testmode.mobplacer.elite=精英词缀数量 custom.testmode.mobplacer.elite=精英词缀数量
custom.testmode.spawnweapon.name=武器生成 custom.testmode.spawnweapon.name=武器生成秘卷
custom.testmode.spawnweapon.desc=遇到困难睡大觉 custom.testmode.spawnweapon.desc=生成需要的武器以及属性。\n\n原作者Alexstrasza\n\n复刻者潘多拉\n\n优化者KDSALing
custom.testmode.spawnweapon.ac_spawn=生成 custom.testmode.spawnweapon.ac_spawn=生成
name = name = 请先选择附魔种类,然后会出现对应的编号。\n\n通过下方滑块滑动选择对应的编号即可。
custom.testmode.spawnweapon$weaponsetting.selected=选择 custom.testmode.spawnweapon$weaponsetting.selected=选择

View File

@ -2,6 +2,9 @@
### 特别武器 ### 特别武器
items.weapon.melee.icedewvialsword.name=露水神剑-冰
items.weapon.melee.icedewvialsword.desc=WIP
items.quest.red.name=白玫瑰 items.quest.red.name=白玫瑰
items.quest.red.desc=在这危险而阴森的地牢中,这朵白玫瑰仿佛刺破了周遭的黑暗,向你展示着名为“人文”的力量。 items.quest.red.desc=在这危险而阴森的地牢中,这朵白玫瑰仿佛刺破了周遭的黑暗,向你展示着名为“人文”的力量。
items.quest.red.ac_interlevel_tp=返回 items.quest.red.ac_interlevel_tp=返回
@ -373,12 +376,12 @@ items.food.alldrink.name=全能治疗饮料
items.food.alldrink.eat_msg=你感觉你又满血复活了。 items.food.alldrink.eat_msg=你感觉你又满血复活了。
items.food.alldrink.desc=由三个治疗药水通过回忆的技术造就了这个全能治疗饮料。\n使用者可以有一段时间的治疗且处于饱腹阶段。 items.food.alldrink.desc=由三个治疗药水通过回忆的技术造就了这个全能治疗饮料。\n使用者可以有一段时间的治疗且处于饱腹阶段。
items.scrolls.scrollofflamecursed.name=极度秘卷 items.scrolls.scrollofflamecursed.name=烈焰噩梦秘卷
items.scrolls.scrollofflamecursed.desc=代表着严寒。度代表着炎热。奇异的魔法能量被禁锢在秘卷羊皮纸内当这股能量被释放时会发出_耀眼的紫色审判光芒_视野中的所有敌人都会被秘卷蕴藏的魔法力量审判造成致命的霜火效果霜火根据玩家的面板伤害提升。 \n\n由于这个秘卷有专属标识所以无需被鉴定。 items.scrolls.scrollofflamecursed.desc=烈焰噩梦秘卷可以产生异常危险的霜火,对任何可见敌人造成致命的伤害。\n\n由于这个秘卷有专属标识所以无需被鉴定。
items.scrolls.scrollofflamecursed.none=这个卷轴产生了一阵耀眼的幻蓝光芒。 items.scrolls.scrollofflamecursed.none=这个卷轴产生了一阵耀眼的幻蓝光芒。
items.scrolls.scrollofflamecursed.one=这个卷轴产生了一阵耀眼的幻蓝光芒的同时%s被点燃了 items.scrolls.scrollofflamecursed.one=这个卷轴产生了一阵耀眼的幻蓝光芒的同时%s被点燃了
items.scrolls.scrollofflamecursed.many=这个卷轴产生了一阵耀眼的幻蓝光芒的同时怪物们被点燃了! items.scrolls.scrollofflamecursed.many=这个卷轴产生了一阵耀眼的幻蓝光芒的同时怪物们被点燃了!
items.scrolls.scrollofflamecursed.null=极度秘卷 items.scrolls.scrollofflamecursed.null=烈焰噩梦秘卷
items.potions.exotic.potionofholyfuror.name=神圣祝福合剂 items.potions.exotic.potionofholyfuror.name=神圣祝福合剂
items.potions.exotic.potionofholyfuror.desc=神圣的能量被浓缩为液态,这瓶合剂能够赐予你更长时间的祝福。 items.potions.exotic.potionofholyfuror.desc=神圣的能量被浓缩为液态,这瓶合剂能够赐予你更长时间的祝福。

View File

@ -6,6 +6,8 @@ levels.features.chasm.jump=你确定要跳入洞口中?从这么高的地方
levels.features.chasm.ondeath=你落地过猛摔死了…… levels.features.chasm.ondeath=你落地过猛摔死了……
levels.features.chasm.rankings_desc=死于撞击 levels.features.chasm.rankings_desc=死于撞击
levels.level.weapon=不能在迷你Boss战中使用十字架已自动将你的十字架转移到入口处。
levels.rooms.standard.magicdimandroom$chestmarker.name=暴风雪莹标记 levels.rooms.standard.magicdimandroom$chestmarker.name=暴风雪莹标记
levels.rooms.standard.magicdimandroom$chestmarker.desc=一个神秘的标记,是谁在这里设计的呢? levels.rooms.standard.magicdimandroom$chestmarker.desc=一个神秘的标记,是谁在这里设计的呢?

View File

@ -115,6 +115,9 @@ public class Assets {
public static final String QliPhoth_Title = "interfaces/bosslogo/qliphoth-title.png"; 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 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_Title = "interfaces/bosslogo/sakabjy-title.png";
public static final String SakaBJY_Clear = "interfaces/bosslogo/sakabjy-clear.png"; public static final String SakaBJY_Clear = "interfaces/bosslogo/sakabjy-clear.png";

View File

@ -48,7 +48,7 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.traps.AlarmTrap;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; 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.shatteredpixel.shatteredpixeldungeon.ui.BossHealthBar;
import com.watabou.noosa.Camera; import com.watabou.noosa.Camera;
import com.watabou.noosa.audio.Sample; import com.watabou.noosa.audio.Sample;
@ -59,7 +59,7 @@ import com.watabou.utils.Random;
public class OldDM300 extends FlameB01 { public class OldDM300 extends FlameB01 {
{ {
spriteClass = DM300SpiderSprite.class; spriteClass = DM275Sprite.class;
state = PASSIVE; state = PASSIVE;
HP = HT = 270; HP = HT = 270;
EXP = 30; EXP = 30;
@ -189,6 +189,7 @@ public class OldDM300 extends FlameB01 {
if (!BossHealthBar.isAssigned()) { if (!BossHealthBar.isAssigned()) {
BossHealthBar.assignBoss(this); BossHealthBar.assignBoss(this);
yell(Messages.get(this, "notice")); yell(Messages.get(this, "notice"));
GameScene.bossReady();
} }
} }
@ -256,7 +257,10 @@ public class OldDM300 extends FlameB01 {
@Override @Override
public void restoreFromBundle(Bundle bundle) { public void restoreFromBundle(Bundle bundle) {
super.restoreFromBundle(bundle); super.restoreFromBundle(bundle);
BossHealthBar.assignBoss(this); if (state == HUNTING){
BossHealthBar.assignBoss(this);
}
} }
} }

View File

@ -127,7 +127,7 @@ public class SakaFishBoss extends Boss {
protected boolean act() { protected boolean act() {
Actor.remove(this); Actor.remove(this);
HP = (HT/2); HP = (HT/2);
yell(Messages.get(this, "interesting")); yell(Messages.get(SakaFishBoss.class, "interesting"));
((AncientMysteryCityBossLevel)Dungeon.level).progress(); ((AncientMysteryCityBossLevel)Dungeon.level).progress();
BossHealthBar.bleed(true); BossHealthBar.bleed(true);
return true; return true;

View File

@ -115,7 +115,7 @@ public class GooMob extends Mob {
AlarmTrap alarmTrap = new AlarmTrap(); AlarmTrap alarmTrap = new AlarmTrap();
alarmTrap.pos = pos; alarmTrap.pos = pos;
alarmTrap.activate(); alarmTrap.activate();
ScrollOfTeleportation.appear(hero, pos+4); ScrollOfTeleportation.appear(hero, pos+3);
tell(Messages.get(this, "notice")); tell(Messages.get(this, "notice"));
} }
} }
@ -134,7 +134,7 @@ public class GooMob extends Mob {
AlarmTrap alarmTrap = new AlarmTrap(); AlarmTrap alarmTrap = new AlarmTrap();
alarmTrap.pos = pos; alarmTrap.pos = pos;
alarmTrap.activate(); alarmTrap.activate();
ScrollOfTeleportation.appear(hero, pos+4); ScrollOfTeleportation.appear(hero, pos+3);
tell(Messages.get(this, "notice")); tell(Messages.get(this, "notice"));
} }
} }
@ -267,7 +267,7 @@ public class GooMob extends Mob {
if (state == PASSIVE) { if (state == PASSIVE) {
state = HUNTING; state = HUNTING;
notice(); notice();
ScrollOfTeleportation.appear(hero, pos+1); ScrollOfTeleportation.appear(hero, pos+3);
SewerLevel level = (SewerLevel) Dungeon.level; SewerLevel level = (SewerLevel) Dungeon.level;
level.seal(); level.seal();
level.updateChasmTerrain(); level.updateChasmTerrain();
@ -326,13 +326,10 @@ public class GooMob extends Mob {
public void restoreFromBundle( Bundle bundle ) { public void restoreFromBundle( Bundle bundle ) {
super.restoreFromBundle( bundle ); super.restoreFromBundle( bundle );
if (state == HUNTING){
pumpedUp = bundle.getInt( PUMPEDUP ); BossHealthBar.assignBoss(this);
if(Dungeon.isChallenged(MOREROOM)){
if (state != SLEEPING) BossHealthBar.assignBoss(this);
if ((HP*2 <= HT)) BossHealthBar.bleed(true);
} }
pumpedUp = bundle.getInt( PUMPEDUP );
//if check is for pre-0.9.3 saves //if check is for pre-0.9.3 saves
healInc = bundle.getInt(HEALINC); healInc = bundle.getInt(HEALINC);

View File

@ -44,6 +44,7 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.RenderedTextBlock;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.shatteredpixel.shatteredpixeldungeon.utils.WndTextNumberInput; import com.shatteredpixel.shatteredpixeldungeon.utils.WndTextNumberInput;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndError;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndSadGhost; import com.shatteredpixel.shatteredpixeldungeon.windows.WndSadGhost;
import com.watabou.noosa.Game; import com.watabou.noosa.Game;
import com.watabou.noosa.Image; import com.watabou.noosa.Image;
@ -57,7 +58,7 @@ import java.util.Objects;
public class SpawnWeapon extends TestItem{ public class SpawnWeapon extends TestItem{
{ {
image = ItemSpriteSheet.CANDLE; image = ItemSpriteSheet.DG25;
defaultAction = AC_SPAWN; defaultAction = AC_SPAWN;
} }
@ -273,7 +274,7 @@ public class SpawnWeapon extends TestItem{
createWeaponImage(AllWeapon); createWeaponImage(AllWeapon);
// 创建附魔信息文本块 // 创建附魔信息文本块
Text_EnchantInfo = PixelScene.renderTextBlock("", 5); Text_EnchantInfo = PixelScene.renderTextBlock("", 6);
Text_EnchantInfo.text(getEnchantInfo(getEnchant(enchant_rarity, enchant_id))); Text_EnchantInfo.text(getEnchantInfo(getEnchant(enchant_rarity, enchant_id)));
add(Text_EnchantInfo); add(Text_EnchantInfo);
@ -311,20 +312,27 @@ public class SpawnWeapon extends TestItem{
add(CheckBox_Curse); add(CheckBox_Curse);
// 创建武器等级按钮 // 创建武器等级按钮
Button_Level = new RedButton(" ") { Button_Level = new RedButton("尚未选择武器") {
@Override @Override
protected void onClick() { protected void onClick() {
Game.runOnRenderThread(() -> ShatteredPixelDungeon.scene().add(new WndTextNumberInput( if(!Button_Level.text().equals("尚未选择武器")){ // 修改此行代码
"自定义武器等级", "输入要生成的武器的等级", Integer.toString(weapon_level), Game.runOnRenderThread(() -> ShatteredPixelDungeon.scene().add(new WndTextNumberInput(
10, false, Messages.get(WndSadGhost.class, "confirm"), "自定义武器等级", "输入要生成的武器的等级非数字会被自动处理同时也不能超过INT的最大值2,147,483,647",
Messages.get(WndSadGhost.class, "cancel")) { Integer.toString(weapon_level),
@Override 9, false, Messages.get(WndSadGhost.class, "confirm"),
public void onSelect(boolean check, String text) { Messages.get(WndSadGhost.class, "cancel")) {
if (check && text.matches("\\d+")) { @Override
weapon_level = Integer.parseInt(text); 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); add(Button_Level);
@ -466,10 +474,15 @@ public class SpawnWeapon extends TestItem{
private void updateEnchantText() { private void updateEnchantText() {
StringBuilder info = new StringBuilder(); StringBuilder info = new StringBuilder();
if (enchant_rarity == 0) { if (enchant_rarity == 0) {
info = new StringBuilder("无附魔"); info = new StringBuilder("请先选择附魔种类,然后会出现对应的编号。\n\n通过下方滑块滑动选择对应的编号即可。");
} else { } else {
for (int i = 0; i < getEnchantCount(enchant_rarity); i++) { for (int i = 0; i < getEnchantCount(enchant_rarity); i++) {
info.append(i + 1).append(":").append(getEnchantInfo(getEnchant(enchant_rarity, i))).append(" "); 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()); Text_EnchantInfo.text(info.toString());

View File

@ -23,12 +23,14 @@ package com.shatteredpixel.shatteredpixeldungeon.levels;
import static com.shatteredpixel.shatteredpixeldungeon.BGMPlayer.playBGM; import static com.shatteredpixel.shatteredpixeldungeon.BGMPlayer.playBGM;
import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero; import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero;
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.SIGN;
import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Blacksmith; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Blacksmith;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.RedDragon; 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.CavesPainter;
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room; 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.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.watabou.noosa.Camera; import com.watabou.noosa.Camera;
import com.watabou.noosa.Game; import com.watabou.noosa.Game;
import com.watabou.noosa.Group; import com.watabou.noosa.Group;
@ -116,6 +119,17 @@ public class CavesLevel extends RegularLevel {
GameScene.updateMap(i); // 更新地图显示 GameScene.updateMap(i); // 更新地图显示
GameScene.flash(Window.WATA_COLOR); 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); GameScene.flash(Window.SKYBULE_COLOR);
playBGM(Assets.BGM_BOSSC, true); playBGM(Assets.BGM_BOSSC, true);
} }

View File

@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.levels;
import static com.shatteredpixel.shatteredpixeldungeon.BGMPlayer.playBGM; import static com.shatteredpixel.shatteredpixeldungeon.BGMPlayer.playBGM;
import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero; 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 static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.SIGN_SP;
import com.shatteredpixel.shatteredpixeldungeon.Assets; 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.buffs.LockedFloor;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Ghost; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Ghost;
import com.shatteredpixel.shatteredpixeldungeon.effects.Ripple; import com.shatteredpixel.shatteredpixeldungeon.effects.Ripple;
import com.shatteredpixel.shatteredpixeldungeon.items.Ankh;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfUpgrade; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfUpgrade;
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.JunglePainter; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.JunglePainter;
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; 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.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap; import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.watabou.noosa.Camera; import com.watabou.noosa.Camera;
import com.watabou.noosa.Game; import com.watabou.noosa.Game;
import com.watabou.noosa.Group; import com.watabou.noosa.Group;
@ -91,7 +94,7 @@ public class SewerLevel extends RegularLevel {
synchronized (map){ synchronized (map){
for (int i = 0; i < map.length; i++) { for (int i = 0; i < map.length; i++) {
if (map[i] == SIGN_SP) { if (map[i] == SIGN_SP) {
// EMPTY_DECO 地块改为新地形 // SIGN_SP 地块改为新地形
set(i, Terrain.LOCKED_EXIT); set(i, Terrain.LOCKED_EXIT);
GameScene.updateMap(i); // 更新地图显示 GameScene.updateMap(i); // 更新地图显示
Camera.main.shake(3f,6f); Camera.main.shake(3f,6f);
@ -101,6 +104,17 @@ public class SewerLevel extends RegularLevel {
set(i, Terrain.EMPTY); set(i, Terrain.EMPTY);
GameScene.updateMap(i); // 更新地图显示 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); playBGM(Assets.BGM_BOSSA, true);
GameScene.flash(Window.DeepPK_COLOR); GameScene.flash(Window.DeepPK_COLOR);
} }

View File

@ -1,6 +1,7 @@
package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard; package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard;
import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.ClearElemental; 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.Guard;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Salamander; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Salamander;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.spical.GooMob; 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.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; 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.Image;
import com.watabou.noosa.Tilemap; import com.watabou.noosa.Tilemap;
import com.watabou.utils.Point; import com.watabou.utils.Point;
import com.watabou.utils.Random;
public class GooRoom extends SpecialRoom { public class GooRoom extends SpecialRoom {
@ -67,9 +72,18 @@ public class GooRoom extends SpecialRoom {
int cy = c.y; int cy = c.y;
for (Door door : connected.values()) { 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()) { for(Point p : getPoints()) {
int cell = level.pointToCell(p); int cell = level.pointToCell(p);
if (level.map[cell] == Terrain.TRAP){ 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, 7, Terrain.WATER);
Painter.drawCircle(level, c, 5, Terrain.EMPTY); Painter.drawCircle(level, c, 5, Terrain.EMPTY);
Painter.drawCircle(level, c, 3, Terrain.WATER); 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.drawCircle(level, c, 0, Terrain.WATER);
Painter.set(level, cx, cy - 1, Terrain.WATER); Painter.set(level, cx, cy - 4, Terrain.STATUE);
Painter.set(level, cx+1, cy - 1, Terrain.WATER);
Painter.set(level, cx-1, cy - 1, Terrain.WATER); Painter.set(level, cx+4, cy,Terrain.STATUE);
Painter.set(level, cx+1, cy + 1, Terrain.WATER); Painter.set(level, cx-4, cy, Terrain.STATUE);
Painter.set(level, cx-1, cy + 1, Terrain.WATER);
Painter.set(level, cx+1, cy, Terrain.WATER); Painter.set(level, cx, cy + 4, Terrain.STATUE);
Painter.set(level, cx-1, cy, Terrain.WATER);
Painter.set(level, cx, cy + 1, Terrain.WATER); 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(); GooMob statue = new GooMob();
statue.pos = cx + cy * level.width(); statue.pos = cx + cy * level.width();

View File

@ -1,8 +1,12 @@
package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard; package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.DM201; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.DM201;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.OldDM300; 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.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
@ -48,9 +52,15 @@ public class OldDM300Room extends SpecialRoom {
int cy = c.y; int cy = c.y;
for (Door door : connected.values()) { 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 pillarW = (width()-8)/2;
int pillarH = (height()-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, 7, Terrain.STATUE);
Painter.drawCircle(level, c, 6, Terrain.WATER); Painter.drawCircle(level, c, 6, Terrain.WATER);
Painter.drawCircle(level, c, 5, 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()) { for(Point p : getPoints()) {
int cell = level.pointToCell(p); int cell = level.pointToCell(p);

View File

@ -1528,6 +1528,11 @@ public class GameScene extends PixelScene {
bossSlain.show( Window.CYELLOW, 0.3f, 5f); bossSlain.show( Window.CYELLOW, 0.3f, 5f);
scene.showBanner(bossSlain); scene.showBanner(bossSlain);
break; break;
case 14:
bossSlain.texture(Assets.Interfaces.DMOR_Title);
bossSlain.show( Window.CBLACK, 0.3f, 5f);
scene.showBanner(bossSlain);
break;
case -31: case -31:
bossSlain.texture(Assets.Interfaces.SakaBJY_Title); bossSlain.texture(Assets.Interfaces.SakaBJY_Title);
bossSlain.show( Window.CYELLOW, 0.3f, 5f); bossSlain.show( Window.CYELLOW, 0.3f, 5f);
@ -1565,6 +1570,11 @@ public class GameScene extends PixelScene {
bossSlain.show( Window.CYELLOW, 0.3f, 5f); bossSlain.show( Window.CYELLOW, 0.3f, 5f);
scene.showBanner(bossSlain); scene.showBanner(bossSlain);
break; break;
case 14:
bossSlain.texture(Assets.Interfaces.DMOR_Clear);
bossSlain.show( Window.GDX_COLOR, 0.3f, 5f);
scene.showBanner(bossSlain);
break;
case -31: case -31:
bossSlain.texture(Assets.Interfaces.SakaBJY_Clear); bossSlain.texture(Assets.Interfaces.SakaBJY_Clear);
bossSlain.show( Window.CYELLOW, 0.3f, 5f); bossSlain.show( Window.CYELLOW, 0.3f, 5f);

View File

@ -15,13 +15,13 @@ public class DM300DeathBallSprite extends MobSprite
texture("mobs/dm300deathballmode.png"); texture("mobs/dm300deathballmode.png");
TextureFilm texturefilm = new TextureFilm(texture, 21, 21); TextureFilm texturefilm = new TextureFilm(texture, 21, 21);
idle = new Animation(10, true); 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 = 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 = 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 = 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); play(idle);
} }

View File

@ -145,6 +145,29 @@ public class vM0_6_7_X_Changes {
changes.addButton(new ChangeButton(i, ("熔岩火龙"), 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 = new ChangeInfo("v0.6.5.0-Alpha6.9-6.93-LAST", true, "");
changes.hardlight(Window.TITLE_COLOR); changes.hardlight(Window.TITLE_COLOR);
changeInfos.add(changes); changeInfos.add(changes);

View File

@ -1,5 +1,6 @@
package com.shatteredpixel.shatteredpixeldungeon.utils; package com.shatteredpixel.shatteredpixeldungeon.utils;
import com.badlogic.gdx.Gdx;
import com.shatteredpixel.shatteredpixeldungeon.Chrome; import com.shatteredpixel.shatteredpixeldungeon.Chrome;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton; import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton;
@ -176,6 +177,7 @@ public class WndTextNumberInput extends Window {
super.offset(xOffset, yOffset); super.offset(xOffset, yOffset);
if (textBox != null){ if (textBox != null){
textBox.setRect(textBox.left(), textBox.top(), textBox.width(), textBox.height()); textBox.setRect(textBox.left(), textBox.top(), textBox.width(), textBox.height());
Gdx.input.setOnscreenKeyboardVisible(false);
} }
} }