Update 0.6.5.0-Alpha6.8

1.修复三井协定的三井重复生成问题
2.改善变幻莫测迷你Boss地形以及战利品
3.种子现在分为A类,B类,BossRush类
4.部分界面UI迭代,变幻莫测挑战平衡
This commit is contained in:
LingASDJ 2023-10-04 01:29:42 +08:00
parent 0277f9743a
commit 0421bd3ef2
24 changed files with 293 additions and 86 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 =908500 appVersionCode =908800
appVersionName = '0.6.5.0-Alpha6.5' appVersionName = '0.6.5.0-Alpha6.8'
appJavaCompatibility = JavaVersion.VERSION_11 appJavaCompatibility = JavaVersion.VERSION_11

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -347,7 +347,7 @@ challenges.icedied = 雪虐风饕(未完成)
challenges.icedied_desc=很显然,地牢的雪越下越大了,在这严寒里面,生存的法则将进一步让我们活得更久。\n篝火房间一旦被激活不再无限变成40回合的寒冷抑制商人会贩卖更多特殊物品。 challenges.icedied_desc=很显然,地牢的雪越下越大了,在这严寒里面,生存的法则将进一步让我们活得更久。\n篝火房间一旦被激活不再无限变成40回合的寒冷抑制商人会贩卖更多特殊物品。
challenges.morelevel=变幻莫测 challenges.morelevel=变幻莫测
challenges.morelevel_desc=地牢在时间的长河中渐渐的诞生了更多地形,这次探索地牢谁知道能遇到什么?\n\nA.新增2种全新地形感知,1种特定地形感知。\n\nB.2场迷你Boss遭遇战未来会更多。\n\nC.地牢怪物生成更多\n\n_地牢环境已发生改变请小心应对!!!_\n\n(除Boss层每层必定触发地形感知,且全部均为大型地形)。 challenges.morelevel_desc=地牢在时间的长河中渐渐的诞生了更多地形,这次探索地牢谁知道能遇到什么?\n\nA.新增3种全新地形感知,1种特定地形感知。\n\nB.2场迷你Boss遭遇战未来会更多。\n\nC.地牢怪物生成更多\n\n_地牢环境已发生改变请小心应对!!!_\n\n(除Boss层每层必定触发地形感知,且全部均为大型地形)。
challenges.dhxd =灯火前路 challenges.dhxd =灯火前路
challenges.dhxd_desc= 灯火指引着前进的道路,提灯引路,灯火前行! \n\n此为三挑以上的特殊机制但你也可以直接开启它!\n\n1.追加灯火祝福和魔女诅咒机制,灯火会随着深入楼层进行降低\n2.在较低的灯火下死亡会精神崩溃,诞生自己的暗影。\n3.追加提灯和灯油,合理使用这些道具,让自己能在灯火祝福中活下去!如果不幸遭到魔女的诅咒,也不会让你陷入绝境。\n\n灯火不灭希望仍在提灯引路灯火前行 challenges.dhxd_desc= 灯火指引着前进的道路,提灯引路,灯火前行! \n\n此为三挑以上的特殊机制但你也可以直接开启它!\n\n1.追加灯火祝福和魔女诅咒机制,灯火会随着深入楼层进行降低\n2.在较低的灯火下死亡会精神崩溃,诞生自己的暗影。\n3.追加提灯和灯油,合理使用这些道具,让自己能在灯火祝福中活下去!如果不幸遭到魔女的诅咒,也不会让你陷入绝境。\n\n灯火不灭希望仍在提灯引路灯火前行

View File

@ -208,7 +208,7 @@ windows.wndgameinprogress.gamegold=游戏金币:
windows.wndgameinprogress.gamenayzi=奈亚大亨: windows.wndgameinprogress.gamenayzi=奈亚大亨:
windows.wndgameinprogress.gamenayzis=\n一局游戏内购买7次终端的物品即可永久让奈亚入驻0层。 windows.wndgameinprogress.gamenayzis=\n一局游戏内购买7次终端的物品即可永久让奈亚入驻0层。
windows.wndgameinprogress.gamemimic=拟态猎杀: windows.wndgameinprogress.gamemimic=拟态猎杀:
windows.wndgameinprogress.gameinof=注:类型不同的种子所生成的地牢物品规则将有所不同。\n_B类_为开启_独挡一面_挑战后的种子。\n_C类_支离破碎&基因突变\n_D类_BossRush\n\n(种子判定优先级D>B>C>A) windows.wndgameinprogress.gameinof=注:类型不同的种子所生成的地牢物品规则将有所不同。A类就是没有开启_变幻莫测_的种子\n_B类_为开启_变幻莫测_挑战后的种子。\n特别类BossRush\n\n(种子判定优先级BossRush>B>A)
windows.wndgameinprogress.title=%1$d级%2$s windows.wndgameinprogress.title=%1$d级%2$s
windows.wndgameinprogress.challenges=挑战 windows.wndgameinprogress.challenges=挑战

View File

@ -394,7 +394,7 @@ public class Badges {
badge = Badge.HIGH_SCORE_4; badge = Badge.HIGH_SCORE_4;
local.add( badge ); local.add( badge );
} }
if (score >= SSSP_SCORE * chalMultiplier * (amuletObtained ? 0.7 : 5)) { if (score >= SSSP_SCORE * chalMultiplier * (amuletObtained ? 0.7 : 4.5)) {
badge = Badge.HIGH_SCORE_5; badge = Badge.HIGH_SCORE_5;
local.add( badge ); local.add( badge );
} }

View File

@ -22,6 +22,7 @@
package com.shatteredpixel.shatteredpixeldungeon.actors.mobs; package com.shatteredpixel.shatteredpixeldungeon.actors.mobs;
import static com.shatteredpixel.shatteredpixeldungeon.BGMPlayer.playBGM; import static com.shatteredpixel.shatteredpixeldungeon.BGMPlayer.playBGM;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.MOREROOM;
import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
@ -39,6 +40,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ElmoParticle;
import com.shatteredpixel.shatteredpixeldungeon.items.Generator; import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
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.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;
@ -86,6 +88,11 @@ public class OldDM300 extends DM200 {
LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); LockedFloor lock = Dungeon.hero.buff(LockedFloor.class);
if(lock == null && !seenBefore && Dungeon.level.heroFOV[pos]){ if(lock == null && !seenBefore && Dungeon.level.heroFOV[pos]){
Dungeon.level.seal(); Dungeon.level.seal();
if(Dungeon.isChallenged(MOREROOM)) {
AlarmTrap alarmTrap = new AlarmTrap();
alarmTrap.pos = pos;
alarmTrap.activate();
}
} }
GameScene.add( Blob.seed( pos, 30, ToxicGas.class ) ); GameScene.add( Blob.seed( pos, 30, ToxicGas.class ) );
@ -176,6 +183,7 @@ public class OldDM300 extends DM200 {
super.damage(dmg, src); super.damage(dmg, src);
if (state == PASSIVE) { if (state == PASSIVE) {
state = HUNTING; state = HUNTING;
notice();
} }
LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); LockedFloor lock = Dungeon.hero.buff(LockedFloor.class);
if (lock != null && !isImmune(src.getClass())) lock.addTime(dmg*1.5f); if (lock != null && !isImmune(src.getClass())) lock.addTime(dmg*1.5f);

View File

@ -13,6 +13,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Goo;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
import com.shatteredpixel.shatteredpixeldungeon.items.quest.GooBlob; import com.shatteredpixel.shatteredpixeldungeon.items.quest.GooBlob;
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.AlarmTrap;
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
@ -83,6 +84,11 @@ public class GooMob extends Mob {
if(lock == null && !seenBefore && Dungeon.level.heroFOV[pos]){ if(lock == null && !seenBefore && Dungeon.level.heroFOV[pos]){
Dungeon.level.seal(); Dungeon.level.seal();
seenBefore = false; seenBefore = false;
if(Dungeon.isChallenged(MOREROOM)) {
AlarmTrap alarmTrap = new AlarmTrap();
alarmTrap.pos = pos;
alarmTrap.activate();
}
} }
if (Dungeon.level.water[pos] && HP < HT) { if (Dungeon.level.water[pos] && HP < HT) {
@ -212,6 +218,7 @@ public class GooMob extends Mob {
if (state == PASSIVE) { if (state == PASSIVE) {
state = HUNTING; state = HUNTING;
notice();
} }
if ((HP*2 <= HT) && !bleeding){ if ((HP*2 <= HT) && !bleeding){

View File

@ -120,12 +120,12 @@ public class CavesLevel extends RegularLevel {
for (int i = 0; i < map.length; i++) { for (int i = 0; i < map.length; i++) {
if (map[i] == Terrain.EMBERS) { if (map[i] == Terrain.EMBERS) {
// EMPTY_DECO 地块改为新地形 // EMPTY_DECO 地块改为新地形
set(i, Terrain.STATUE); set(i, Terrain.LOCKED_EXIT);
GameScene.updateMap(i); // 更新地图显示 GameScene.updateMap(i); // 更新地图显示
Camera.main.shake(4f,7f); Camera.main.shake(4f,7f);
} else if(hero.buff(LockedFloor.class) == null && map[i] == Terrain.STATUE) { } else if(hero.buff(LockedFloor.class) == null && map[i] == Terrain.LOCKED_EXIT) {
// CHASM 地块改为新地形 // CHASM 地块改为新地形
set(i, Terrain.EMPTY); set(i, Terrain.EMBERS);
GameScene.updateMap(i); // 更新地图显示 GameScene.updateMap(i); // 更新地图显示
GameScene.flash(Window.WATA_COLOR); GameScene.flash(Window.WATA_COLOR);
} }

View File

@ -61,14 +61,15 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.builders.LoopBuilder;
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;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.secret.SecretRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.secret.SecretRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.secret.SecretWellRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.AutoShopRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.AutoShopRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.HealWellRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.IdenityRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.LanFireRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.LanFireRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.MagicWellRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.MagicalFireRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.MagicalFireRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.NxhyShopRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.NxhyShopRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.NyzBombAndBooksRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.NyzBombAndBooksRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.PitRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.PitRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.RandomRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.ShopRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.ShopRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.SpecialRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.SpecialRoom;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.AquariumRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.AquariumRoom;
@ -309,9 +310,9 @@ public abstract class RegularLevel extends Level {
specials++; specials++;
} }
if(feeling == Feeling.THREEWELL){ if(feeling == Feeling.THREEWELL){
initRooms.add(new MagicWellRoom()); initRooms.add(new HealWellRoom());
initRooms.add(new SecretWellRoom()); initRooms.add(new RandomRoom());
initRooms.add(new MagicWellRoom()); initRooms.add(new IdenityRoom());
} }
if(feeling == Feeling.LINKROOM){ if(feeling == Feeling.LINKROOM){

View File

@ -102,14 +102,15 @@ public class SewerLevel extends RegularLevel {
public void updateChasmTerrain() { public void updateChasmTerrain() {
for (int i = 0; i < map.length; i++) { for (int i = 0; i < map.length; i++) {
if (map[i] == Terrain.EMPTY_DECO) { if (map[i] == Terrain.EMBERS) {
// EMPTY_DECO 地块改为新地形 // EMPTY_DECO 地块改为新地形
set(i, Terrain.STATUE); set(i, Terrain.LOCKED_EXIT);
GameScene.updateMap(i); // 更新地图显示 GameScene.updateMap(i); // 更新地图显示
Camera.main.shake(3f,6f); Camera.main.shake(3f,6f);
} else if(hero.buff(LockedFloor.class) == null && map[i] == Terrain.STATUE) {
} else if(hero.buff(LockedFloor.class) == null && map[i] == Terrain.LOCKED_EXIT) {
// CHASM 地块改为新地形 // CHASM 地块改为新地形
set(i, Terrain.WATER); set(i, Terrain.EMBERS);
GameScene.updateMap(i); // 更新地图显示 GameScene.updateMap(i); // 更新地图显示
} }
for (Mob m : Dungeon.level.mobs){ for (Mob m : Dungeon.level.mobs){
@ -120,7 +121,7 @@ public class SewerLevel extends RegularLevel {
playBGM(Assets.BGM_BOSSA, true); playBGM(Assets.BGM_BOSSA, true);
} }
} }
GameScene.flash(Window.CBLACK); GameScene.flash(Window.ANSDO_COLOR);
} }
} }

View File

@ -23,7 +23,6 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.secret;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfAwareness; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfAwareness;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfHealth; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfHealth;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfTransmutation;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WellWater; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WellWater;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
@ -34,7 +33,7 @@ import com.watabou.utils.Random;
public class SecretWellRoom extends SecretRoom { public class SecretWellRoom extends SecretRoom {
private static final Class<?>[] WATERS = private static final Class<?>[] WATERS =
{WaterOfAwareness.class, WaterOfHealth.class, WaterOfTransmutation.class}; {WaterOfAwareness.class, WaterOfHealth.class};
@Override @Override
public boolean canConnect(Point p) { public boolean canConnect(Point p) {

View File

@ -0,0 +1,37 @@
package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfHealth;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WellWater;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
import com.watabou.utils.Point;
import com.watabou.utils.Random;
public class HealWellRoom extends SpecialRoom {
private static final Class<?>[] WATERS =
{WaterOfHealth.class};
public Class<?extends WellWater> overrideWater = null;
public void paint( Level level ) {
Painter.fill( level, this, Terrain.WALL );
Painter.fill( level, this, 1, Terrain.EMPTY );
Point c = center();
Painter.set( level, c.x, c.y, Terrain.WELL );
@SuppressWarnings("unchecked")
Class<? extends WellWater> waterClass =
overrideWater != null ?
overrideWater :
(Class<? extends WellWater>) Random.element( WATERS );
WellWater.seed(c.x + level.width() * c.y, 1, waterClass, level);
entrance().set( Door.Type.REGULAR );
}
}

View File

@ -0,0 +1,40 @@
package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfAwareness;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WellWater;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
import com.watabou.utils.Point;
import com.watabou.utils.Random;
public class IdenityRoom extends SpecialRoom {
private static final Class<?>[] WATERS =
{WaterOfAwareness.class};
public Class<?extends WellWater> overrideWater = null;
public void paint( Level level ) {
Painter.fill( level, this, Terrain.WALL );
Painter.fill( level, this, 1, Terrain.EMPTY );
Point c = center();
Painter.set( level, c.x, c.y, Terrain.WELL );
@SuppressWarnings("unchecked")
Class<? extends WellWater> waterClass =
overrideWater != null ?
overrideWater :
(Class<? extends WellWater>) Random.element( WATERS );
WellWater.seed(c.x + level.width() * c.y, 1, waterClass, level);
entrance().set( Room.Door.Type.REGULAR );
}
}

View File

@ -23,7 +23,6 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfAwareness; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfAwareness;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfHealth; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfHealth;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfTransmutation;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WellWater; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WellWater;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
@ -34,7 +33,7 @@ import com.watabou.utils.Random;
public class MagicWellRoom extends SpecialRoom { public class MagicWellRoom extends SpecialRoom {
private static final Class<?>[] WATERS = private static final Class<?>[] WATERS =
{WaterOfAwareness.class, WaterOfHealth.class, WaterOfTransmutation.class}; {WaterOfAwareness.class, WaterOfHealth.class};
public Class<?extends WellWater> overrideWater = null; public Class<?extends WellWater> overrideWater = null;

View File

@ -0,0 +1,39 @@
package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfTransmutation;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WellWater;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
import com.watabou.utils.Point;
import com.watabou.utils.Random;
public class RandomRoom extends SpecialRoom {
private static final Class<?>[] WATERS =
{WaterOfTransmutation.class};
public Class<?extends WellWater> overrideWater = null;
public void paint( Level level ) {
Painter.fill( level, this, Terrain.WALL );
Painter.fill( level, this, 1, Terrain.EMPTY );
Point c = center();
Painter.set( level, c.x, c.y, Terrain.WELL );
@SuppressWarnings("unchecked")
Class<? extends WellWater> waterClass =
overrideWater != null ?
overrideWater :
(Class<? extends WellWater>) Random.element( WATERS );
WellWater.seed(c.x + level.width() * c.y, 1, waterClass, level);
entrance().set( Room.Door.Type.REGULAR );
}
}

View File

@ -53,7 +53,7 @@ public class GooRoom extends StandardRoom {
public void paint( Level level ) { public void paint( Level level ) {
Painter.fill( level, this, Terrain.WALL ); Painter.fill( level, this, Terrain.WALL );
Painter.fill( level, this, 1, Terrain.TRAP ); Painter.fill( level, this, 1, Terrain.EMBERS );
Painter.fill( level, this, 2, Terrain.WATER ); Painter.fill( level, this, 2, Terrain.WATER );
Point c = center(); Point c = center();
@ -62,7 +62,6 @@ public class GooRoom extends StandardRoom {
for (Door door : connected.values()) { for (Door door : connected.values()) {
door.set( Door.Type.REGULAR ); door.set( Door.Type.REGULAR );
Painter.drawInside( level, this, door, 1, Terrain.EMPTY );
} }
for(Point p : getPoints()) { for(Point p : getPoints()) {
@ -72,7 +71,7 @@ public class GooRoom extends StandardRoom {
} }
} }
Painter.drawCircle(level, c, 7, Terrain.EMPTY_DECO); Painter.drawCircle(level, c, 7, Terrain.WATER);
Painter.drawCircle(level, c, 5, Terrain.EMPTY_SP); Painter.drawCircle(level, c, 5, Terrain.EMPTY_SP);
Painter.drawCircle(level, c, 2, Terrain.WATER); Painter.drawCircle(level, c, 2, Terrain.WATER);

View File

@ -0,0 +1,84 @@
package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard;
import com.shatteredpixel.shatteredpixeldungeon.items.Heap;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.bombs.Firebomb;
import com.shatteredpixel.shatteredpixeldungeon.items.bombs.ShrapnelBomb;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
import com.shatteredpixel.shatteredpixeldungeon.levels.features.Maze;
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.ExplosiveTrap;
import com.watabou.utils.PathFinder;
import com.watabou.utils.Point;
import com.watabou.utils.Random;
public class NukeRoom extends StandardRoom {
@Override
public int minWidth() {
return 28;
}
@Override
public int minHeight() {
return 28;
}
@Override
public int maxWidth() {
return 28;
}
@Override
public int maxHeight() {
return 28;
}
@Override
public boolean canMerge(Level l, Point p, int mergeTerrain) {
return false;
}
@Override
public void paint(Level level) {
Painter.fill(level, this, Terrain.WALL);
Painter.fill(level, this, 1, Terrain.EMBERS);
//true = space, false = wall
Maze.allowDiagonals = false;
boolean[][] maze = Maze.generate(this);
boolean[] passable = new boolean[width()*height()];
Painter.fill(level, this, 1, Terrain.EMPTY);
Painter.fill(level, this, 2, Terrain.HIGH_GRASS);
for (int x = 0; x < maze.length; x++) {
for (int y = 0; y < maze[0].length; y++) {
if (maze[x][y] == Maze.FILLED) {
Painter.fill(level, x + left, y + top, 1, 1, Terrain.WALL_DECO);
}
passable[x + width()*y] = maze[x][y] == Maze.EMPTY;
}
}
PathFinder.setMapSize(width(), height());
Point entrance = connected.values().iterator().next();
int entrancePos = (entrance.x - left) + width()*(entrance.y - top);
PathFinder.buildDistanceMap( entrancePos, passable );
for (int i = 0; i < 20; i++) {
int dropPos;
do {
dropPos = level.pointToCell(random());
} while (level.map[dropPos] != Terrain.HIGH_GRASS || level.heaps.get( dropPos ) != null);
Item prize = Random.Int(8) == 0 ? new ShrapnelBomb() : new Firebomb();
level.drop(prize, dropPos).type = Heap.Type.HEAP;
level.map[dropPos] = Terrain.TRAP;
level.setTrap(new ExplosiveTrap(), dropPos);
}
PathFinder.setMapSize(level.width(), level.height());
}
}

View File

@ -17,7 +17,6 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.StyledButton;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndHardNotification; import com.shatteredpixel.shatteredpixeldungeon.windows.WndHardNotification;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndMessage; import com.shatteredpixel.shatteredpixeldungeon.windows.WndMessage;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndOptions;
import com.watabou.noosa.BitmapText; import com.watabou.noosa.BitmapText;
import com.watabou.noosa.Camera; import com.watabou.noosa.Camera;
import com.watabou.noosa.Game; import com.watabou.noosa.Game;
@ -266,59 +265,36 @@ public class GameNewsScene extends PixelScene { //定义GameNewsScene类
if (article.ling > Game.versionCode) { if (article.ling > Game.versionCode) {
// 向用户展示新文章可用的选项下载或退出游戏 // 向用户展示新文章可用的选项下载或退出游戏
ShatteredPixelDungeon.scene().add(new WndOptions(Icons.get(Icons.CHANGES), ShatteredPixelDungeon.scene().add(new WndHardNotification(Icons.get(Icons.CHANGES),
article.title, article.title,
article.summary, article.summary,
Messages.get(this, "download"),Messages.get(this, "stop_download")) { Messages.get(this, "download"),
0){
@Override @Override
protected void onSelect(int index) { public void hide() {
if (index == 0) {
// 如果是桌面版就打开桌面版的下载链接否则打开安卓版的下载链接 // 如果是桌面版就打开桌面版的下载链接否则打开安卓版的下载链接
if (DeviceCompat.isDesktop()) { if (DeviceCompat.isDesktop()) {
ShatteredPixelDungeon.scene().add(new WndOptions(Icons.get(Icons.CHANGES),
article.title,
article.summary,
"JAR版下载","NoJVM-版本下载") {
@Override
protected void onSelect(int index) {
if (index == 0) {
ShatteredPixelDungeon.platform.openURI(article.DesktopURL); ShatteredPixelDungeon.platform.openURI(article.DesktopURL);
} else {
ShatteredPixelDungeon.platform.openURI("https://lingasdj.lanzouo.com/b05rqansf");
}
Gdx.app.exit();
}
@Override
public void onBackPressed() {
//
}
});
} else { } else {
ShatteredPixelDungeon.platform.openURI(article.URL); ShatteredPixelDungeon.platform.openURI(article.URL);
}
Gdx.app.exit(); Gdx.app.exit();
} }
} else {
ShatteredPixelDungeon.switchNoFade(TitleScene.class);
}
}
@Override @Override
public void onBackPressed() { public void onBackPressed() {
// ShatteredPixelDungeon.switchNoFade(TitleScene.class);
} }
}); });
} else { } else {
// 向用户展示新版本可用的选项强制下载或退出游戏 // 向用户展示新版本可用的选项强制下载或退出游戏
ShatteredPixelDungeon.scene().add(new WndOptions(Icons.get(article.ling < Game.versionCode ? ShatteredPixelDungeon.scene().add(new WndHardNotification(Icons.get(Icons.CHANGES),
Icons.WARNING : Icons.CHANGES),
article.title, article.title,
article.summary, article.summary,
Messages.get(this, "force_download")) { Messages.get(this, "force_download"),
0){
@Override @Override
protected void onSelect(int index) { public void hide() {
if (index == 0) {
// 如果是桌面版就打开桌面版的下载链接否则打开安卓版的下载链接 // 如果是桌面版就打开桌面版的下载链接否则打开安卓版的下载链接
if (DeviceCompat.isDesktop()) { if (DeviceCompat.isDesktop()) {
ShatteredPixelDungeon.platform.openURI(article.DesktopURL); ShatteredPixelDungeon.platform.openURI(article.DesktopURL);
@ -327,7 +303,6 @@ public class GameNewsScene extends PixelScene { //定义GameNewsScene类
} }
Gdx.app.exit(); Gdx.app.exit();
} }
}
@Override @Override
public void onBackPressed() { public void onBackPressed() {
@ -338,16 +313,15 @@ public class GameNewsScene extends PixelScene { //定义GameNewsScene类
} else { } else {
// 显示天赋图标并提示用户已经更新完成 // 显示天赋图标并提示用户已经更新完成
icon(UpdateNews.parseArticleIcon(article)); icon(UpdateNews.parseArticleIcon(article));
ShatteredPixelDungeon.scene().add(new WndOptions(Icons.get(Icons.TALENT), ShatteredPixelDungeon.scene().add(new WndHardNotification(Icons.get(Icons.CHANGES),
Messages.get(this, "update"), article.title,
Messages.get(this, "desc")+"\n\n"+article.summary, article.summary,
Messages.get(this, "okay")) { Messages.get(this, "okay"),
0){
@Override @Override
protected void onSelect(int index) { public void hide() {
if (index == 0) {
ShatteredPixelDungeon.switchNoFade(TitleScene.class); ShatteredPixelDungeon.switchNoFade(TitleScene.class);
} }
}
public void onBackPressed() { public void onBackPressed() {
// //

View File

@ -145,11 +145,7 @@ public class NewsScene extends PixelScene {
@Override @Override
protected void onClick() { protected void onClick() {
super.onClick(); super.onClick();
String link = "https://ShatteredPixel.com"; String link = "http://www.pd.qinyueqwq.top/";
//tracking codes, so that the website knows where this pageview came from
link += "?utm_source=shatteredpd";
link += "&utm_medium=news_page";
link += "&utm_campaign=ingame_link";
ShatteredPixelDungeon.platform.openURI(link); ShatteredPixelDungeon.platform.openURI(link);
} }
}; };

View File

@ -144,7 +144,7 @@ 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-6.5-国庆", true, ""); changes = new ChangeInfo("v0.6.5.0-Alpha6-6.8-国庆", true, "");
changes.hardlight(Window.TITLE_COLOR); changes.hardlight(Window.TITLE_COLOR);
changeInfos.add(changes); changeInfos.add(changes);
@ -155,6 +155,13 @@ public class vM0_6_7_X_Changes {
changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("新挑战变幻莫测V0.1"), changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("新挑战变幻莫测V0.1"),
("追加两个随机地形感觉整体战斗全面处于大地型怪物生成变多追加两个迷你Boss战。"))); ("追加两个随机地形感觉整体战斗全面处于大地型怪物生成变多追加两个迷你Boss战。")));
changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("杂项修改2"),
("1.修复三井协定的三井重复生成问题\n" +
"2.改善变幻莫测迷你Boss地形以及战利品\n" +
"3.种子现在分为A类B类BossRush类\n" +
"4.部分界面UI迭代变幻莫测挑战平衡")));
changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("杂项修改"), changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("杂项修改"),
("1.迭代了UI材质\n\n2.优化了一些代码"))); ("1.迭代了UI材质\n\n2.优化了一些代码")));

View File

@ -21,10 +21,8 @@
package com.shatteredpixel.shatteredpixeldungeon.windows; package com.shatteredpixel.shatteredpixeldungeon.windows;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.NO_ARMOR; import static com.shatteredpixel.shatteredpixeldungeon.Challenges.MOREROOM;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.PRO; import static com.shatteredpixel.shatteredpixeldungeon.Challenges.PRO;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.RLPT;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.SBSG;
import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero; import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero;
import static com.shatteredpixel.shatteredpixeldungeon.SPDSettings.HelpSettings; import static com.shatteredpixel.shatteredpixeldungeon.SPDSettings.HelpSettings;
import static com.shatteredpixel.shatteredpixeldungeon.Statistics.lanterfireactive; import static com.shatteredpixel.shatteredpixeldungeon.Statistics.lanterfireactive;
@ -292,10 +290,8 @@ public class WndHero extends WndTabbed {
String seed; String seed;
if (Dungeon.isDLC(Conducts.Conduct.BOSSRUSH)) { if (Dungeon.isDLC(Conducts.Conduct.BOSSRUSH)) {
seed = "BossRush"; seed = "BossRush";
}else if(Dungeon.isChallenged(NO_ARMOR)){ }else if(Dungeon.isChallenged(MOREROOM)){
seed = "B"; seed = "B";
} else if (Dungeon.isChallenged(RLPT)&&Dungeon.isChallenged(SBSG)) {
seed = "C";
} else { } else {
seed = "A"; seed = "A";
} }

View File

@ -21,8 +21,11 @@
package com.shatteredpixel.shatteredpixeldungeon.windows; package com.shatteredpixel.shatteredpixeldungeon.windows;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.MOREROOM;
import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Badges; import com.shatteredpixel.shatteredpixeldungeon.Badges;
import com.shatteredpixel.shatteredpixeldungeon.Conducts;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.QuickSlot; import com.shatteredpixel.shatteredpixeldungeon.QuickSlot;
import com.shatteredpixel.shatteredpixeldungeon.Rankings; import com.shatteredpixel.shatteredpixeldungeon.Rankings;
@ -37,6 +40,7 @@ import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.HeroSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.HeroSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.shatteredpixel.shatteredpixeldungeon.text.HeroStat;
import com.shatteredpixel.shatteredpixeldungeon.ui.BadgesGrid; import com.shatteredpixel.shatteredpixeldungeon.ui.BadgesGrid;
import com.shatteredpixel.shatteredpixeldungeon.ui.BadgesList; import com.shatteredpixel.shatteredpixeldungeon.ui.BadgesList;
import com.shatteredpixel.shatteredpixeldungeon.ui.Button; import com.shatteredpixel.shatteredpixeldungeon.ui.Button;
@ -166,6 +170,18 @@ public class WndRanking extends WndTabbed {
} }
} }
private String seedType(){
String seed;
if (Dungeon.isDLC(Conducts.Conduct.BOSSRUSH)) {
seed = "BossRush";
}else if(Dungeon.isChallenged(MOREROOM)){
seed = "B";
} else {
seed = "A";
}
return seed;
}
private class StatsTab extends Group { private class StatsTab extends Group {
private int GAP = 4; private int GAP = 4;
@ -302,7 +318,7 @@ public class WndRanking extends WndTabbed {
} }
pos += GAP; pos += GAP;
pos = statSlot(this, Messages.get(HeroStat.class, "seed_type"), seedType(), pos);
pos = statSlot(this, Messages.get(this, "enemies"), num.format(Statistics.enemiesSlain), pos); pos = statSlot(this, Messages.get(this, "enemies"), num.format(Statistics.enemiesSlain), pos);
pos = statSlot(this, Messages.get(this, "gold"), num.format(Statistics.goldCollected), pos); pos = statSlot(this, Messages.get(this, "gold"), num.format(Statistics.goldCollected), pos);
pos = statSlot(this, Messages.get(this, "food"), num.format(Statistics.foodEaten), pos); pos = statSlot(this, Messages.get(this, "food"), num.format(Statistics.foodEaten), pos);

View File

@ -1,6 +1,8 @@
package com.shatteredpixel.shatteredpixeldungeon.windows; package com.shatteredpixel.shatteredpixeldungeon.windows;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.STRONGER_BOSSES; import static com.shatteredpixel.shatteredpixeldungeon.Challenges.DHXD;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.MOREROOM;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.PRO;
import com.shatteredpixel.shatteredpixeldungeon.Challenges; import com.shatteredpixel.shatteredpixeldungeon.Challenges;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
@ -60,7 +62,9 @@ public class WndScoreBreakdown extends Window {
int chCount = 0; int chCount = 0;
for (int ch : Challenges.MASKS){ for (int ch : Challenges.MASKS){
if ((Dungeon.challenges & ch) != 0 && ch <= STRONGER_BOSSES) chCount++; if ((Dungeon.challenges & ch) != 0 && ch <= MOREROOM && ch != PRO && ch != DHXD) {
chCount++;
}
} }
//评分系统 //评分系统