Fixed Update 0.6.5.0-Alpha6.5

This commit is contained in:
LingASDJ 2023-10-03 15:48:59 +08:00
parent 560dac67e5
commit 0277f9743a
20 changed files with 73 additions and 56 deletions

View File

@ -18,8 +18,8 @@ allprojects {
appName = 'Magic Ling Pixel Dungeon'
appPackageName = 'com.ansdomagiclingpixeldungeon.ling'
appVersionCode =908000
appVersionName = '0.6.5.0-Alpha6'
appVersionCode =908500
appVersionName = '0.6.5.0-Alpha6.5'
appJavaCompatibility = JavaVersion.VERSION_11

View File

@ -562,4 +562,6 @@ ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x86=1开发者模式下召唤的
ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x87=1修复中秋节活动时间的错误时长\n2.修复上个版本的诸多错误
ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x88=1.修复死亡楼层可以使用锁链传送出去的问题\n2.暗金宝石护符进行了一定的平衡\n3.修复精英策略中错误的DM300原型机生成\n4.修复裂缝遇到任何实体变成地块的问题\n5.削弱绿野精灵的数值\n6.克里弗斯之果改进,特别净化药水在战斗结束后自动删除
//ui.changelist.mlpd.vm0_5_x_changes.xxx//

View File

@ -148,6 +148,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.lightblack.OilLantern;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfExperience;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfPurity;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfMight;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.PotionOfDivineInspiration;
import com.shatteredpixel.shatteredpixeldungeon.items.quest.MIME;
@ -943,6 +944,12 @@ public class Hero extends Char {
}
private boolean actMove( HeroAction.Move action ) {
PotionOfPurity.PotionOfPurityLing potionOfPurityLing = Dungeon.hero.belongings.getItem(PotionOfPurity.PotionOfPurityLing.class);
if(potionOfPurityLing != null){
potionOfPurityLing.detachAll( hero.belongings.backpack );
}
MIME.GOLD_FIVE getHeal = Dungeon.hero.belongings.getItem(MIME.GOLD_FIVE.class);
if(getHeal != null && HT/4 > HP){
this.HP = HT;

View File

@ -57,6 +57,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.armor.LamellarArmor;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.custom.AncityArmor;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.CloakOfShadows;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.EtherealChains;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.TalismanOfForesight;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.WraithAmulet;
import com.shatteredpixel.shatteredpixeldungeon.items.bags.BookBag;
@ -163,6 +164,7 @@ public enum HeroClass {
new TengusMask().quantity(1).identify().collect();
new RingOfWealth().quantity(1).identify().collect();
new DiedCrossBow().quantity(1).identify().collect();
new EtherealChains().quantity(1).identify().collect();
Buff.affect(hero, ChampionHero.AntiMagic.class, 50000f);
new WraithAmulet().quantity(1).identify().collect();
new BloodthirstyThorn().quantity(1).identify().collect();

View File

@ -9,7 +9,7 @@ public class GreenSlting extends Mob {
{
spriteClass = GreenSltingSprite.class;
flying = true;
HP = HT = 24;
HP = HT = 15;
defenseSkill = 2;
maxLvl = 7;
}
@ -21,12 +21,12 @@ public class GreenSlting extends Mob {
@Override
public int attackSkill( Char target ) {
return 12;
return 8;
}
@Override
public int drRoll() {
return Random.NormalIntRange(4, 5);
return Random.NormalIntRange(2, 4);
}
}

View File

@ -54,7 +54,7 @@ public class OldDM300 extends DM200 {
{
spriteClass = DM300SpiderSprite.class;
state = PASSIVE;
HP = HT = 320;
EXP = 30;
defenseSkill = 18;
@ -174,6 +174,9 @@ public class OldDM300 extends DM200 {
@Override
public void damage(int dmg, Object src) {
super.damage(dmg, src);
if (state == PASSIVE) {
state = HUNTING;
}
LockedFloor lock = Dungeon.hero.buff(LockedFloor.class);
if (lock != null && !isImmune(src.getClass())) lock.addTime(dmg*1.5f);
}

View File

@ -90,7 +90,7 @@ public class CrivusFruits extends Mob {
}
private int phase = 1;
private int drop = Random.Int(5);
private int summonsMade = 0;
private float summonCooldown = 0;

View File

@ -36,7 +36,7 @@ public class GooMob extends Mob {
defenseSkill = 8;
maxLvl = 30;
spriteClass = GooSprite.class;
state = PASSIVE;
flying = Dungeon.isChallenged(MOREROOM);
properties.add(Property.MINIBOSS);
@ -209,6 +209,11 @@ public class GooMob extends Mob {
public void damage(int dmg, Object src) {
boolean bleeding = (HP*2 <= HT);
super.damage(dmg, src);
if (state == PASSIVE) {
state = HUNTING;
}
if ((HP*2 <= HT) && !bleeding){
sprite.showStatus(CharSprite.NEGATIVE, Messages.get(Goo.class, "enraged"));
((GooSprite)sprite).spray(true);

View File

@ -33,6 +33,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
import com.shatteredpixel.shatteredpixeldungeon.effects.Chains;
import com.shatteredpixel.shatteredpixeldungeon.effects.Pushing;
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfEnergy;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.CellSelector;
@ -115,7 +116,7 @@ public class EtherealChains extends Artifact {
//chains cannot be used to go where it is impossible to walk to
PathFinder.buildDistanceMap(target, BArray.or(Dungeon.level.passable, Dungeon.level.avoid, null));
if (PathFinder.distance[curUser.pos] == Integer.MAX_VALUE){
if (PathFinder.distance[curUser.pos] == Integer.MAX_VALUE || Dungeon.level.feeling == Level.Feeling.DIEDROOM && Dungeon.level.locked){
GLog.w( Messages.get(EtherealChains.class, "cant_reach") );
return;
}

View File

@ -82,7 +82,7 @@ public class WraithAmulet extends Artifact {
exp += level()>5 ? 20 : 40;
Buff.affect(Dungeon.hero, Invisibility.class, Invisibility.DURATION/2);
GLog.p(Messages.get(this,"ghost"));
cooldown = 20 - (level);
cooldown = 40 - (level);
charge--;
} else {
GLog.i(Messages.get(this,"nochareup"));

View File

@ -28,6 +28,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.levels.RegularLevel;
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
@ -275,7 +276,7 @@ public class ScrollOfTeleportation extends Scroll {
ch.sprite.interruptMotion();
if (Dungeon.level.heroFOV[pos] || Dungeon.level.heroFOV[ch.pos]){
if (Dungeon.level.heroFOV[pos] || Dungeon.level.heroFOV[ch.pos] || Dungeon.level.feeling != Level.Feeling.DIEDROOM){
Sample.INSTANCE.play(Assets.Sounds.TELEPORT);
}

View File

@ -208,10 +208,7 @@ public class ForestBossLevel extends Level {
@Override
public void unseal() {
super.unseal();
//清理掉落物
for (Heap heap : heaps.valueList()){
heap.destroy();
}
set( getBossDoor, Terrain.EMPTY );
GameScene.updateMap( getBossDoor );

View File

@ -1140,7 +1140,6 @@ public abstract class Level implements Bundlable {
case Terrain.HIGH_GRASS:
case Terrain.FURROWED_GRASS:
case CHASM:
HighGrass.trample( this, cell);
break;

View File

@ -311,6 +311,7 @@ public abstract class RegularLevel extends Level {
if(feeling == Feeling.THREEWELL){
initRooms.add(new MagicWellRoom());
initRooms.add(new SecretWellRoom());
initRooms.add(new MagicWellRoom());
}
if(feeling == Feeling.LINKROOM){

View File

@ -106,7 +106,7 @@ public class SewerLevel extends RegularLevel {
// EMPTY_DECO 地块改为新地形
set(i, Terrain.STATUE);
GameScene.updateMap(i); // 更新地图显示
Camera.main.shake(1f,3f);
Camera.main.shake(3f,6f);
} else if(hero.buff(LockedFloor.class) == null && map[i] == Terrain.STATUE) {
// CHASM 地块改为新地形
set(i, Terrain.WATER);

View File

@ -31,7 +31,6 @@ import com.shatteredpixel.shatteredpixeldungeon.PaswordBadges;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.NxhyNpc;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Nyz;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.PinkLing;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.REN;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Slyl;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.obSir;
@ -190,9 +189,9 @@ public class ZeroLevel extends Level {
npc3.pos = (this.width * 18 + 20);
mobs.add(npc3);
PinkLing god1= new PinkLing();
god1.pos = (this.width * 28 + 30);
mobs.add(god1);
// PinkLing god1= new PinkLing();
// god1.pos = (this.width * 28 + 30);
// mobs.add(god1);
if (Badges.isUnlocked(Badges.Badge.NYZ_SHOP)){
Nyz npc4= new Nyz();

View File

@ -43,17 +43,17 @@ import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.watabou.utils.Random;
public class HighGrass {
//prevents items dropped from grass, from trampling that same grass.
//yes this is a bit ugly, oh well.
private static boolean freezeTrample = false;
public static void trample( Level level, int pos ) {
if (freezeTrample) return;
Char ch = Actor.findChar(pos);
if (level.map[pos] == Terrain.FURROWED_GRASS){
if (ch instanceof Hero && ((Hero) ch).heroClass == HeroClass.HUNTRESS){
//Do nothing
@ -61,7 +61,7 @@ public class HighGrass {
} else {
Level.set(pos, Terrain.GRASS);
}
} else {
if (ch instanceof Hero && ((Hero) ch).heroClass == HeroClass.HUNTRESS){
Level.set(pos, Terrain.FURROWED_GRASS);
@ -69,9 +69,9 @@ public class HighGrass {
} else {
Level.set(pos, Terrain.GRASS);
}
int naturalismLevel = 0;
if (ch != null) {
SandalsOfNature.Naturalism naturalism = ch.buff( SandalsOfNature.Naturalism.class );
if (naturalism != null) {
@ -106,13 +106,13 @@ public class HighGrass {
}
}
if (naturalismLevel >= 0) {
// Seed, scales from 1/25 to 1/5
if (Random.Int(25 - (naturalismLevel * 5)) == 0) {
level.drop(Generator.random(Generator.Category.SEED), pos).sprite.drop();
}
// Dew, scales from 1/6 to 1/3
if (Random.Int(24 - naturalismLevel*3) <= 3) {
level.drop(new Dewdrop(), pos).sprite.drop();
@ -136,14 +136,14 @@ public class HighGrass {
Camouflage.activate(statue, statue.armor().buffedLvl());
}
}
}
freezeTrample = false;
if (ShatteredPixelDungeon.scene() instanceof GameScene) {
GameScene.updateMap(pos);
CellEmitter.get(pos).burst(LeafParticle.LEVEL_SPECIFIC, 4);
if (Dungeon.level.heroFOV[pos]) Dungeon.observe();
}

View File

@ -5,10 +5,10 @@ import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.depth;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ChampionEnemy;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.BruteBot;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.DM200;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Eye;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.GreenSlting;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.OldDM300;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.SRPDHBLR;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
@ -20,14 +20,15 @@ import com.watabou.utils.Random;
public class LinkRoom extends StandardRoom {
@Override
public int minWidth() {
return Math.max(7, super.minWidth());
}
public int minWidth() { return 7; }
@Override
public int minHeight() {
return Math.max(7, super.minHeight());
return 7;
}
@Override
public int maxWidth() { return 7; }
@Override
public int maxHeight() { return 7; }
@Override
public void paint(Level level) {
@ -55,7 +56,7 @@ public class LinkRoom extends StandardRoom {
} else if(depth >= 15) {
n = new BruteBot();
} else if(depth >= 10) {
n = new OldDM300();
n = new DM200();
} else if(depth >= 6){
n = new SRPDHBLR();
}

View File

@ -17,7 +17,6 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.ClearElementalSprites;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ColdGuardSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ColdRatSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.CrivusFruitsSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.DM300AttackSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.DM300SpiderSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.DM300Sprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.DM720Sprite;
@ -41,7 +40,6 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.MurdererSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.NxhySprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.NyzSprites;
import com.shatteredpixel.shatteredpixeldungeon.sprites.OGPDNQHZTT;
import com.shatteredpixel.shatteredpixeldungeon.sprites.RedNecromancerSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.RedSwarmSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.SRPDHBLRTT;
import com.shatteredpixel.shatteredpixeldungeon.sprites.SakaFishBossSprites;
@ -128,13 +126,13 @@ public class vM0_6_7_X_Changes {
changes.hardlight(Window.CBLACK);
changeInfos.add(changes);
changes.addButton(new ChangeButton(new RedNecromancerSprite(), ("BossRush2.0"),
("地牢发生了翻天覆地的改变,一切的矛头指向了死灵军团……")));
Image s = new DM300AttackSprite();
s.scale.set(PixelScene.align(0.74f));
changes.addButton(new ChangeButton(s, ("DM-ZERO"),
("时间在这里停止流动与DMZERO正面对决的即将到来")));
// changes.addButton(new ChangeButton(new RedNecromancerSprite(), ("BossRush2.0"),
// ("地牢发生了翻天覆地的改变,一切的矛头指向了死灵军团……")));
//
// Image s = new DM300AttackSprite();
// s.scale.set(PixelScene.align(0.74f));
// changes.addButton(new ChangeButton(s, ("DM-ZERO"),
// ("时间在这里停止流动与DMZERO正面对决的即将到来")));
Image c = new IceSlowGirlSprites();
c.scale.set(PixelScene.align(0.74f));
@ -146,7 +144,7 @@ public class vM0_6_7_X_Changes {
changes.addButton(new ChangeButton(i, ("熔岩火龙"),
("丛林暴乱的真相")));
changes = new ChangeInfo("v0.6.5.0-Alpha6-国庆", true, "");
changes = new ChangeInfo("v0.6.5.0-Alpha6-6.5-国庆", true, "");
changes.hardlight(Window.TITLE_COLOR);
changeInfos.add(changes);
@ -176,6 +174,9 @@ public class vM0_6_7_X_Changes {
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.CHALLANEESICON_9), ("梦魇领袖"),
("梦魇领袖进行了一些调整,并改名为绝命头目")));
changes.addButton(new ChangeButton(new Image("sprites/spinner.png", 144, 0, 16, 16),
Messages.get(ChangesScene.class, "bugfixes"), Messages.get(vM0_6_7_X_Changes.class, "bug_06X88")));
changes.addButton(new ChangeButton(new Image("sprites/spinner.png", 144, 0, 16, 16),
Messages.get(ChangesScene.class, "bugfixes"), Messages.get(vM0_6_7_X_Changes.class, "bug_06X87")));

View File

@ -123,11 +123,9 @@ public class DesktopPlatformSupport extends PlatformSupport {
resetGenerators(false);
fonts = new HashMap<>();
basicFontGenerator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/pixel_font.ttf"));
asianFontGenerator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/fusion_pixel.ttf"));
fallbackFontGenerator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/droid_sans.ttf"));
basicFontGenerator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/pixel_font.ttf"));
asianFontGenerator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/fusion_pixel.ttf"));
fallbackFontGenerator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/droid_sans.ttf"));
fonts.put(basicFontGenerator, new HashMap<>());
fonts.put(asianFontGenerator, new HashMap<>());