From 0421bd3ef27d176e29219df598c6a2e6d7d8b236 Mon Sep 17 00:00:00 2001 From: LingASDJ <2735951230@qq.com> Date: Wed, 4 Oct 2023 01:29:42 +0800 Subject: [PATCH] Update 0.6.5.0-Alpha6.8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.修复三井协定的三井重复生成问题 2.改善变幻莫测迷你Boss地形以及战利品 3.种子现在分为A类,B类,BossRush类 4.部分界面UI迭代,变幻莫测挑战平衡 --- build.gradle | 4 +- core/src/main/assets/interfaces/chrome.png | Bin 3808 -> 3802 bytes .../main/assets/interfaces/status_pane.png | Bin 4342 -> 4574 bytes .../main/assets/messages/misc/misc.properties | 2 +- .../messages/windows/windows.properties | 2 +- .../shatteredpixeldungeon/Badges.java | 2 +- .../actors/mobs/OldDM300.java | 8 ++ .../actors/mobs/spical/GooMob.java | 7 ++ .../levels/CavesLevel.java | 6 +- .../levels/RegularLevel.java | 11 +-- .../levels/SewerLevel.java | 11 +-- .../levels/rooms/secret/SecretWellRoom.java | 3 +- .../levels/rooms/special/HealWellRoom.java | 37 ++++++++ .../levels/rooms/special/IdenityRoom.java | 40 +++++++++ .../levels/rooms/special/MagicWellRoom.java | 3 +- .../levels/rooms/special/RandomRoom.java | 39 ++++++++ .../levels/rooms/standard/GooRoom.java | 5 +- .../levels/rooms/standard/NukeRoom.java | 84 ++++++++++++++++++ .../scenes/GameNewsScene.java | 66 +++++--------- .../scenes/NewsScene.java | 6 +- .../ui/changelist/mlpd/vM0_6_7_X_Changes.java | 9 +- .../windows/WndHero.java | 8 +- .../windows/WndRanking.java | 18 +++- .../windows/WndScoreBreakdown.java | 8 +- 24 files changed, 293 insertions(+), 86 deletions(-) create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/HealWellRoom.java create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/IdenityRoom.java create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/RandomRoom.java create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/NukeRoom.java diff --git a/build.gradle b/build.gradle index bdc7148a9..9649095aa 100644 --- a/build.gradle +++ b/build.gradle @@ -18,8 +18,8 @@ allprojects { appName = 'Magic Ling Pixel Dungeon' appPackageName = 'com.ansdomagiclingpixeldungeon.ling' - appVersionCode =908500 - appVersionName = '0.6.5.0-Alpha6.5' + appVersionCode =908800 + appVersionName = '0.6.5.0-Alpha6.8' appJavaCompatibility = JavaVersion.VERSION_11 diff --git a/core/src/main/assets/interfaces/chrome.png b/core/src/main/assets/interfaces/chrome.png index 8d65b5c64bbde5699e1f920f3d9d2edcfb3a1f97..8f361309ac286a18e4be0bd360f03b906888437f 100644 GIT binary patch delta 3789 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 IM6N<$f)pQ*X#fBK literal 4342 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 kJAJ;W0O1G0KwdHMf3pY(?qyYv8vpB>C>A) +windows.wndgameinprogress.gameinof=注:类型不同的种子所生成的地牢物品规则将有所不同。A类就是没有开启_变幻莫测_的种子\n_B类_为开启_变幻莫测_挑战后的种子。\n特别类:BossRush\n\n(种子判定优先级:BossRush>B>A) windows.wndgameinprogress.title=%1$d级%2$s windows.wndgameinprogress.challenges=挑战 diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Badges.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Badges.java index 109b2c02a..8fe412a3a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Badges.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Badges.java @@ -394,7 +394,7 @@ public class Badges { badge = Badge.HIGH_SCORE_4; 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; local.add( badge ); } 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 d7e3a955d..c93212185 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 @@ -22,6 +22,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs; import static com.shatteredpixel.shatteredpixeldungeon.BGMPlayer.playBGM; +import static com.shatteredpixel.shatteredpixeldungeon.Challenges.MOREROOM; import com.shatteredpixel.shatteredpixeldungeon.Assets; 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.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; +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; @@ -86,6 +88,11 @@ public class OldDM300 extends DM200 { LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); if(lock == null && !seenBefore && Dungeon.level.heroFOV[pos]){ Dungeon.level.seal(); + if(Dungeon.isChallenged(MOREROOM)) { + AlarmTrap alarmTrap = new AlarmTrap(); + alarmTrap.pos = pos; + alarmTrap.activate(); + } } GameScene.add( Blob.seed( pos, 30, ToxicGas.class ) ); @@ -176,6 +183,7 @@ public class OldDM300 extends DM200 { super.damage(dmg, src); if (state == PASSIVE) { state = HUNTING; + notice(); } LockedFloor lock = Dungeon.hero.buff(LockedFloor.class); if (lock != null && !isImmune(src.getClass())) lock.addTime(dmg*1.5f); 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 1c59974e9..7e7b2e992 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 @@ -13,6 +13,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Goo; import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; import com.shatteredpixel.shatteredpixeldungeon.items.quest.GooBlob; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.AlarmTrap; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; @@ -83,6 +84,11 @@ public class GooMob extends Mob { if(lock == null && !seenBefore && Dungeon.level.heroFOV[pos]){ Dungeon.level.seal(); seenBefore = false; + if(Dungeon.isChallenged(MOREROOM)) { + AlarmTrap alarmTrap = new AlarmTrap(); + alarmTrap.pos = pos; + alarmTrap.activate(); + } } if (Dungeon.level.water[pos] && HP < HT) { @@ -212,6 +218,7 @@ public class GooMob extends Mob { if (state == PASSIVE) { state = HUNTING; + notice(); } if ((HP*2 <= HT) && !bleeding){ 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 a48b67abe..e5cbc8f73 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesLevel.java @@ -120,12 +120,12 @@ public class CavesLevel extends RegularLevel { for (int i = 0; i < map.length; i++) { if (map[i] == Terrain.EMBERS) { // 将 EMPTY_DECO 地块改为新地形 - set(i, Terrain.STATUE); + set(i, Terrain.LOCKED_EXIT); GameScene.updateMap(i); // 更新地图显示 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 地块改为新地形 - set(i, Terrain.EMPTY); + set(i, Terrain.EMBERS); GameScene.updateMap(i); // 更新地图显示 GameScene.flash(Window.WATA_COLOR); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java index a5bae94b9..88735f2c7 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/RegularLevel.java @@ -61,14 +61,15 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.builders.LoopBuilder; import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room; 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.HealWellRoom; +import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.IdenityRoom; 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.NxhyShopRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.NyzBombAndBooksRoom; 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.SpecialRoom; import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.AquariumRoom; @@ -309,9 +310,9 @@ public abstract class RegularLevel extends Level { specials++; } if(feeling == Feeling.THREEWELL){ - initRooms.add(new MagicWellRoom()); - initRooms.add(new SecretWellRoom()); - initRooms.add(new MagicWellRoom()); + initRooms.add(new HealWellRoom()); + initRooms.add(new RandomRoom()); + initRooms.add(new IdenityRoom()); } if(feeling == Feeling.LINKROOM){ 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 e968bf526..4cd86be72 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/SewerLevel.java @@ -102,14 +102,15 @@ public class SewerLevel extends RegularLevel { public void updateChasmTerrain() { for (int i = 0; i < map.length; i++) { - if (map[i] == Terrain.EMPTY_DECO) { + if (map[i] == Terrain.EMBERS) { // 将 EMPTY_DECO 地块改为新地形 - set(i, Terrain.STATUE); + set(i, Terrain.LOCKED_EXIT); GameScene.updateMap(i); // 更新地图显示 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 地块改为新地形 - set(i, Terrain.WATER); + set(i, Terrain.EMBERS); GameScene.updateMap(i); // 更新地图显示 } for (Mob m : Dungeon.level.mobs){ @@ -120,7 +121,7 @@ public class SewerLevel extends RegularLevel { playBGM(Assets.BGM_BOSSA, true); } } - GameScene.flash(Window.CBLACK); + GameScene.flash(Window.ANSDO_COLOR); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretWellRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretWellRoom.java index 1541305d9..fb57ee121 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretWellRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/secret/SecretWellRoom.java @@ -23,7 +23,6 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.secret; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfAwareness; 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.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; @@ -34,7 +33,7 @@ import com.watabou.utils.Random; public class SecretWellRoom extends SecretRoom { private static final Class[] WATERS = - {WaterOfAwareness.class, WaterOfHealth.class, WaterOfTransmutation.class}; + {WaterOfAwareness.class, WaterOfHealth.class}; @Override public boolean canConnect(Point p) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/HealWellRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/HealWellRoom.java new file mode 100644 index 000000000..4caba9e13 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/HealWellRoom.java @@ -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 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 waterClass = + overrideWater != null ? + overrideWater : + (Class) Random.element( WATERS ); + + + WellWater.seed(c.x + level.width() * c.y, 1, waterClass, level); + + entrance().set( Door.Type.REGULAR ); + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/IdenityRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/IdenityRoom.java new file mode 100644 index 000000000..59d060bd1 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/IdenityRoom.java @@ -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 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 waterClass = + overrideWater != null ? + overrideWater : + (Class) Random.element( WATERS ); + + + WellWater.seed(c.x + level.width() * c.y, 1, waterClass, level); + + entrance().set( Room.Door.Type.REGULAR ); + } +} + + diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/MagicWellRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/MagicWellRoom.java index 3ab660704..384fc5fe7 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/MagicWellRoom.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/MagicWellRoom.java @@ -23,7 +23,6 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfAwareness; 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.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; @@ -34,7 +33,7 @@ import com.watabou.utils.Random; public class MagicWellRoom extends SpecialRoom { private static final Class[] WATERS = - {WaterOfAwareness.class, WaterOfHealth.class, WaterOfTransmutation.class}; + {WaterOfAwareness.class, WaterOfHealth.class}; public Class overrideWater = null; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/RandomRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/RandomRoom.java new file mode 100644 index 000000000..486b41997 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/RandomRoom.java @@ -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 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 waterClass = + overrideWater != null ? + overrideWater : + (Class) Random.element( WATERS ); + + + WellWater.seed(c.x + level.width() * c.y, 1, waterClass, level); + + entrance().set( Room.Door.Type.REGULAR ); + } +} + 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 410a06b49..2a4678439 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 @@ -53,7 +53,7 @@ public class GooRoom extends StandardRoom { public void paint( Level level ) { 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 ); Point c = center(); @@ -62,7 +62,6 @@ public class GooRoom extends StandardRoom { for (Door door : connected.values()) { door.set( Door.Type.REGULAR ); - Painter.drawInside( level, this, door, 1, Terrain.EMPTY ); } 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, 2, Terrain.WATER); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/NukeRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/NukeRoom.java new file mode 100644 index 000000000..ffa8ea5d1 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/standard/NukeRoom.java @@ -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()); + } +} \ No newline at end of file diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameNewsScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameNewsScene.java index 5f632cfe4..61b99d38c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameNewsScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/GameNewsScene.java @@ -17,7 +17,6 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.StyledButton; import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.windows.WndHardNotification; import com.shatteredpixel.shatteredpixeldungeon.windows.WndMessage; -import com.shatteredpixel.shatteredpixeldungeon.windows.WndOptions; import com.watabou.noosa.BitmapText; import com.watabou.noosa.Camera; import com.watabou.noosa.Game; @@ -266,59 +265,36 @@ public class GameNewsScene extends PixelScene { //定义GameNewsScene类,继 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.summary, - Messages.get(this, "download"),Messages.get(this, "stop_download")) { + Messages.get(this, "download"), + 0){ @Override - protected void onSelect(int index) { - if (index == 0) { - // 如果是桌面版就打开桌面版的下载链接,否则打开安卓版的下载链接 - 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); - } else { - ShatteredPixelDungeon.platform.openURI("https://lingasdj.lanzouo.com/b05rqansf"); - } - Gdx.app.exit(); - } - - @Override - public void onBackPressed() { - // - } - }); - } else { - ShatteredPixelDungeon.platform.openURI(article.URL); - Gdx.app.exit(); - } - + public void hide() { + // 如果是桌面版就打开桌面版的下载链接,否则打开安卓版的下载链接 + if (DeviceCompat.isDesktop()) { + ShatteredPixelDungeon.platform.openURI(article.DesktopURL); } else { - ShatteredPixelDungeon.switchNoFade(TitleScene.class); + ShatteredPixelDungeon.platform.openURI(article.URL); } + Gdx.app.exit(); } @Override public void onBackPressed() { - // + ShatteredPixelDungeon.switchNoFade(TitleScene.class); } }); } else { // 向用户展示新版本可用的选项:强制下载或退出游戏 - ShatteredPixelDungeon.scene().add(new WndOptions(Icons.get(article.ling < Game.versionCode ? - Icons.WARNING : Icons.CHANGES), + ShatteredPixelDungeon.scene().add(new WndHardNotification(Icons.get(Icons.CHANGES), article.title, article.summary, - Messages.get(this, "force_download")) { + Messages.get(this, "force_download"), + 0){ @Override - protected void onSelect(int index) { - if (index == 0) { + public void hide() { // 如果是桌面版就打开桌面版的下载链接,否则打开安卓版的下载链接 if (DeviceCompat.isDesktop()) { ShatteredPixelDungeon.platform.openURI(article.DesktopURL); @@ -326,7 +302,6 @@ public class GameNewsScene extends PixelScene { //定义GameNewsScene类,继 ShatteredPixelDungeon.platform.openURI(article.URL); } Gdx.app.exit(); - } } @Override @@ -338,15 +313,14 @@ public class GameNewsScene extends PixelScene { //定义GameNewsScene类,继 } else { // 显示天赋图标并提示用户已经更新完成 icon(UpdateNews.parseArticleIcon(article)); - ShatteredPixelDungeon.scene().add(new WndOptions(Icons.get(Icons.TALENT), - Messages.get(this, "update"), - Messages.get(this, "desc")+"\n\n"+article.summary, - Messages.get(this, "okay")) { + ShatteredPixelDungeon.scene().add(new WndHardNotification(Icons.get(Icons.CHANGES), + article.title, + article.summary, + Messages.get(this, "okay"), + 0){ @Override - protected void onSelect(int index) { - if (index == 0) { + public void hide() { ShatteredPixelDungeon.switchNoFade(TitleScene.class); - } } public void onBackPressed() { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/NewsScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/NewsScene.java index f8bb0f30f..c56995bd8 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/NewsScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/NewsScene.java @@ -145,11 +145,7 @@ public class NewsScene extends PixelScene { @Override protected void onClick() { super.onClick(); - String link = "https://ShatteredPixel.com"; - //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"; + String link = "http://www.pd.qinyueqwq.top/"; ShatteredPixelDungeon.platform.openURI(link); } }; 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 10c0e1d37..e296c2070 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 @@ -144,7 +144,7 @@ public class vM0_6_7_X_Changes { 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); 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"), ("追加两个随机地形感觉,整体战斗全面处于大地型,怪物生成变多,追加两个迷你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), ("杂项修改"), ("1.迭代了UI材质\n\n2.优化了一些代码"))); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndHero.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndHero.java index e1c29dffa..57aa652fc 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndHero.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndHero.java @@ -21,10 +21,8 @@ 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.RLPT; -import static com.shatteredpixel.shatteredpixeldungeon.Challenges.SBSG; import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero; import static com.shatteredpixel.shatteredpixeldungeon.SPDSettings.HelpSettings; import static com.shatteredpixel.shatteredpixeldungeon.Statistics.lanterfireactive; @@ -292,10 +290,8 @@ public class WndHero extends WndTabbed { String seed; if (Dungeon.isDLC(Conducts.Conduct.BOSSRUSH)) { seed = "BossRush"; - }else if(Dungeon.isChallenged(NO_ARMOR)){ + }else if(Dungeon.isChallenged(MOREROOM)){ seed = "B"; - } else if (Dungeon.isChallenged(RLPT)&&Dungeon.isChallenged(SBSG)) { - seed = "C"; } else { seed = "A"; } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndRanking.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndRanking.java index e077fecdf..eb1d8adcd 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndRanking.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndRanking.java @@ -21,8 +21,11 @@ package com.shatteredpixel.shatteredpixeldungeon.windows; +import static com.shatteredpixel.shatteredpixeldungeon.Challenges.MOREROOM; + import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Badges; +import com.shatteredpixel.shatteredpixeldungeon.Conducts; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.QuickSlot; 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.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; +import com.shatteredpixel.shatteredpixeldungeon.text.HeroStat; import com.shatteredpixel.shatteredpixeldungeon.ui.BadgesGrid; import com.shatteredpixel.shatteredpixeldungeon.ui.BadgesList; 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 int GAP = 4; @@ -302,7 +318,7 @@ public class WndRanking extends WndTabbed { } 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, "gold"), num.format(Statistics.goldCollected), pos); pos = statSlot(this, Messages.get(this, "food"), num.format(Statistics.foodEaten), pos); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndScoreBreakdown.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndScoreBreakdown.java index 683cc8ddc..7da21bdfa 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndScoreBreakdown.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndScoreBreakdown.java @@ -1,6 +1,8 @@ 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.Dungeon; @@ -60,7 +62,9 @@ public class WndScoreBreakdown extends Window { int chCount = 0; 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++; + } } //评分系统