diff --git a/build.gradle b/build.gradle index 9ab5723c1..3e40a7929 100644 --- a/build.gradle +++ b/build.gradle @@ -16,8 +16,8 @@ allprojects { appName = 'Magic Ling Pixel Dungeon' appPackageName = 'com.ansdomagiclingpixeldungeon.ling' - appVersionCode =700720 - appVersionName = '0.6.0.0-Beta21-p2.8' + appVersionCode =700721 + appVersionName = '0.6.0.0-Beta21-p2.85' appJavaCompatibility = JavaVersion.VERSION_1_8 diff --git a/core/src/main/assets/environment/tiles_sewers.png b/core/src/main/assets/environment/tiles_sewers.png index 027ce5a26..ae31f917b 100644 Binary files a/core/src/main/assets/environment/tiles_sewers.png and b/core/src/main/assets/environment/tiles_sewers.png differ diff --git a/core/src/main/assets/messages/actors/actors.properties b/core/src/main/assets/messages/actors/actors.properties index 653d4dfd9..481d674a3 100644 --- a/core/src/main/assets/messages/actors/actors.properties +++ b/core/src/main/assets/messages/actors/actors.properties @@ -159,8 +159,8 @@ actors.buffs.watersoulx.desc=水灵的祝福已经在你身上,现在你可以 actors.mobs.lb.blacksoul.name=暗影 actors.mobs.lb.blacksoul.desc=由于重生十字架的缘故,因此你再次重生了。但你先前的东西都被自己的暗影亡魂夺走了,杀死它,夺回自己的一切! -actors.mobs.bosses.crystaldiedtower.name=神秘结晶-未激活 -actors.mobs.bosses.crystaldiedtower.desc=来自于雪凛峡谷商人总部的神秘结晶……,据说激活后十分危险! +actors.mobs.bosses.crystaldiedtower.name=雪凛结晶 +actors.mobs.bosses.crystaldiedtower.desc=来自于雪凛峡谷商人总部的神秘结晶……,激活后将周期性的发射激光。 actors.mobs.bosses.crystallingtower.name=元素结晶-已激活 actors.mobs.bosses.crystallingtower.desc=神秘的元素结晶已经被魔女完全激活,正是它让魔女所向披靡!摧毁它! @@ -429,11 +429,11 @@ levels.yoggodhardbosslevel.well_desc = 井中涌动着空间的魔力。也许 actors.mobs.magicgirldead.name =冰雪魔女 -actors.mobs.magicgirldead.desc =冰雪魔女曾经是翼绫的护法,因为地牢事变而被黑魔法腐蚀成了魔女\n\n现在她极度憎恨一切,你很不幸的踏入了她的领地.\n\n要么你死,要么我活.\n\n她非常难缠,并且已经毫无理智,如果你没有准备好,势必会被她暴打。 +actors.mobs.magicgirldead.desc =冰雪魔女曾经是翼绫的护法,因为地牢事变而被黑魔法腐蚀成了魔女\n\n现在她极度憎恨一切,你很不幸的踏入了她的领地.\n\n要么你死,要么我活.\n\n她非常难缠,并且已经毫无理智,如果你没有准备好,势必会被她暴打。\n_千万不要让她踩到水,否则她将非常危险。 actors.mobs.magicgirldead.arise=出来吧,我的傀儡! actors.mobs.magicgirldead.damaged =水晶结界,审判这个无知之徒! actors.mobs.magicgirldead.arise2=出来吧,我的傀儡! -actors.mobs.magicgirldead.shield2 =水源啊,你是否知道,翼绫不再是翼绫,家园不再是家园! +actors.mobs.magicgirldead.shield2 = 水源乃生命之源,但也能致人与死地 actors.mobs.magicgirldead.shield =迷幻的水源啊,请赐予我力量吧! actors.mobs.magicgirldead.notice =人类!你不应该来到这里! actors.mobs.magicgirldead.die =我 终 于 能 再 次 看 见 了 你 了!!! @@ -632,8 +632,7 @@ actors.mobs.slime_sz.name=史莱姆-圣紫守护者 actors.mobs.slime_sz.desc=史莱姆七大守护者中的_圣紫使者_\n它发出的攻击有几率让入侵者受到_迟缓效果_! actors.mobs.slimeking.name=史莱姆王子 -actors.mobs.slimeking.desc=\n\n\n\n史莱姆中最大的一只史莱姆个体,现在它仍然还在统治着圣境密林层\n别看它样貌可爱,它鲨起人来毫不手软!\n\ - 如果你靠的太近,它就会发怒召唤_史莱姆七大守护者_来让你知道什么叫 身 心 愉 悦 +actors.mobs.slimeking.desc=史莱姆王子,圣境密林的守护者,没有人能从它这里活着走过去。\n\n-机制说明:移动极其缓慢但有无限使用的锁链。血量低于一半后立刻呼唤_当前楼层至多3个怪物_前来支援(只可触发一次),并且移速恢复正常但_锁链功能失效_且_自身防御降为0_以及近战有概率造成_双倍伤害_。 actors.mobs.slimeking.notice=你将会死在圣境密林! actors.mobs.slimeking.defeated=不……这不可能…… actors.mobs.slimeking.arise=我的史莱姆守卫们,快点出来支援本王! diff --git a/core/src/main/assets/messages/windows/windows.properties b/core/src/main/assets/messages/windows/windows.properties index 903d14279..68b0c1378 100644 --- a/core/src/main/assets/messages/windows/windows.properties +++ b/core/src/main/assets/messages/windows/windows.properties @@ -382,7 +382,7 @@ windows.wndtradeitem.oks=进行对话 windows.wndstory.dm920=Yog-Dzewa的陨落,其实背后有太多的秘密。\nYog的后面,是一个连Yog都害怕的一个DM终极实验品,\n它是造成矮人国度堕落的元凶,它是灾难的象征!!!\n它是曾经的死灵军团的杀手锏,它是死亡的代言词!!!\n它是连Yog-Dzewa都要敬畏它三分的DM920,\n你需直面,你不可逃避,你的路途就是为此而来。\n已经没有退路,唯有放手一搏,无论它是真是假!!!\n但你明白,不击败他,死的就只能是自己!!! windows.wndgoshop.szo=地牢商人 -windows.wndgoshop.ary=哦,我注意到你对我的东西蠢蠢欲动。如果你想动什么歪心思,我劝你还是放弃吧!!!\n\n商人正在非常警惕的看见你,如果你想抢劫商店本层恐怕会发生奇妙的变换。\n\n那么,对于商人的警告,你的选择是? +windows.wndgoshop.ary=哦,我注意到你对我的东西蠢蠢欲动。如果你想动什么歪心思,我劝你还是放弃吧!!!\n\n商人正在非常警惕的看见你,如果你想抢劫商店本层恐怕会发生奇妙的变换。\n\n那么,对于商人的警告,你的选择是?\n-_注意:抢劫将会前往雪凛峡谷,并且将会被禁止使用重生十字架。_ windows.wndgoshop.yes=抢劫 windows.wndgoshop.no=放弃 windows.wndgoshop.notbad=好吧,我以为你想抢劫商店的…… diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/mage/ElementalBlast.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/mage/ElementalBlast.java index d41671e1d..9e898264c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/mage/ElementalBlast.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/abilities/mage/ElementalBlast.java @@ -48,6 +48,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.ArmorAbili import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob; import com.shatteredpixel.shatteredpixeldungeon.effects.MagicMissile; import com.shatteredpixel.shatteredpixeldungeon.effects.Speck; +import com.shatteredpixel.shatteredpixeldungeon.effects.SpellSprite; import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle; import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClassArmor; import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMagicMapping; @@ -65,6 +66,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfLivingEarth; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfMagicMissile; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfPrismaticLight; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfRegrowth; +import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfScale; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfTransfusion; import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfWarding; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff; @@ -102,8 +104,11 @@ public class ElementalBlast extends ArmorAbility { effectTypes.put(WandOfTransfusion.class, MagicMissile.BLOOD_CONE); effectTypes.put(WandOfCorruption.class, MagicMissile.SHADOW_CONE); effectTypes.put(WandOfRegrowth.class, MagicMissile.FOLIAGE_CONE); - effectTypes.put(WandOfGodIce.class, MagicMissile.FROST_CONE); - effectTypes.put(WandOfBlueFuck.class, MagicMissile.FROST_CONE); + + //TODO FIXED 将要修复的 + effectTypes.put(WandOfScale.class, MagicMissile.FOLIAGE_CONE); + effectTypes.put(WandOfGodIce.class, MagicMissile.FOLIAGE_CONE); + effectTypes.put(WandOfBlueFuck.class, MagicMissile.FOLIAGE_CONE); } private static final HashMap, Float> damageFactors = new HashMap<>(); @@ -121,6 +126,9 @@ public class ElementalBlast extends ArmorAbility { damageFactors.put(WandOfTransfusion.class, 0f); damageFactors.put(WandOfCorruption.class, 0f); damageFactors.put(WandOfRegrowth.class, 0f); + + //TODO FIXED 将要修复的 + damageFactors.put(WandOfScale.class, 0f); damageFactors.put(WandOfGodIce.class, 0f); damageFactors.put(WandOfBlueFuck.class, 0f); } @@ -158,11 +166,11 @@ public class ElementalBlast extends ArmorAbility { if (wandCls == WandOfDisintegration.class){ projectileProps = Ballistica.STOP_TARGET; - //*** Wand of Fireblast *** + //*** Wand of Fireblast *** } else if (wandCls == WandOfFireblast.class){ projectileProps = projectileProps | Ballistica.IGNORE_SOFT_SOLID; - //*** Wand of Warding *** + //*** Wand of Warding *** } else if (wandCls == WandOfWarding.class){ projectileProps = Ballistica.STOP_TARGET; @@ -179,7 +187,7 @@ public class ElementalBlast extends ArmorAbility { ); } - final float effectMulti = 1f + 0.2f*hero.pointsInTalent(Talent.ELEMENTAL_POWER); + final float effectMulti = 1f + 0.25f*hero.pointsInTalent(Talent.ELEMENTAL_POWER); //cast a ray 2/3 the way, and do effects Class finalWandCls = wandCls; @@ -203,7 +211,7 @@ public class ElementalBlast extends ArmorAbility { GameScene.add( Blob.seed( cell, 4, Electricity.class ) ); } - //*** Wand of Fireblast *** + //*** Wand of Fireblast *** } else if (finalWandCls == WandOfFireblast.class){ if (Dungeon.level.map[cell] == Terrain.DOOR){ Level.set(cell, Terrain.OPEN_DOOR); @@ -216,13 +224,13 @@ public class ElementalBlast extends ArmorAbility { GameScene.add( Blob.seed( cell, 4, Fire.class ) ); } - //*** Wand of Frost *** + //*** Wand of Frost *** } else if (finalWandCls == WandOfFrost.class){ if (fire != null){ fire.clear(cell); } - //*** Wand of Prismatic Light *** + //*** Wand of Prismatic Light *** } else if (finalWandCls == WandOfPrismaticLight.class){ for (int n : PathFinder.NEIGHBOURS9) { int c = cell+n; @@ -242,7 +250,7 @@ public class ElementalBlast extends ArmorAbility { } } - //*** Wand of Regrowth *** + //*** Wand of Regrowth *** } else if (finalWandCls == WandOfRegrowth.class){ //TODO: spend 3 charges worth of regrowth energy from staff? int t = Dungeon.level.map[cell]; @@ -275,20 +283,20 @@ public class ElementalBlast extends ArmorAbility { Buff.affect( mob, Paralysis.class, effectMulti*Paralysis.DURATION/2 ); } - //*** Wand of Fireblast *** + //*** Wand of Fireblast *** } else if (finalWandCls == WandOfFireblast.class){ if (mob.isAlive() && mob.alignment != Char.Alignment.ALLY) { Buff.affect( mob, Burning.class ).reignite( mob ); } - //*** Wand of Corrosion *** + //*** Wand of Corrosion *** } else if (finalWandCls == WandOfCorrosion.class){ if (mob.isAlive() && mob.alignment != Char.Alignment.ALLY) { Buff.affect( mob, Corrosion.class ).set(4, Math.round(6*effectMulti)); charsHit++; } - //*** Wand of Blast Wave *** + //*** Wand of Blast Wave *** } else if (finalWandCls == WandOfBlastWave.class){ if (mob.alignment != Char.Alignment.ALLY) { Ballistica aim = new Ballistica(hero.pos, mob.pos, Ballistica.WONT_STOP); @@ -300,27 +308,27 @@ public class ElementalBlast extends ArmorAbility { true); } - //*** Wand of Frost *** + //*** Wand of Frost *** } else if (finalWandCls == WandOfFrost.class){ if (mob.isAlive() && mob.alignment != Char.Alignment.ALLY) { Buff.affect( mob, Frost.class, effectMulti*Frost.DURATION ); } - //*** Wand of Prismatic Light *** + //*** Wand of Prismatic Light *** } else if (finalWandCls == WandOfPrismaticLight.class){ if (mob.isAlive() && mob.alignment != Char.Alignment.ALLY) { Buff.prolong(mob, Blindness.class, effectMulti*Blindness.DURATION/2); charsHit++; } - //*** Wand of Warding *** + //*** Wand of Warding *** } else if (finalWandCls == WandOfWarding.class){ if (mob instanceof WandOfWarding.Ward){ ((WandOfWarding.Ward) mob).wandHeal(0, effectMulti); charsHit++; } - //*** Wand of Transfusion *** + //*** Wand of Transfusion *** } else if (finalWandCls == WandOfTransfusion.class){ if(mob.alignment == Char.Alignment.ALLY || mob.buff(Charm.class) != null){ int healing = Math.round(10*effectMulti); @@ -349,14 +357,14 @@ public class ElementalBlast extends ArmorAbility { } charsHit++; - //*** Wand of Corruption *** + //*** Wand of Corruption *** } else if (finalWandCls == WandOfCorruption.class){ if (mob.isAlive() && mob.alignment != Char.Alignment.ALLY) { Buff.prolong(mob, Amok.class, effectMulti*5f); charsHit++; } - //*** Wand of Regrowth *** + //*** Wand of Regrowth *** } else if (finalWandCls == WandOfRegrowth.class){ if (mob.alignment != Char.Alignment.ALLY) { Buff.prolong( mob, Roots.class, effectMulti*Roots.DURATION ); @@ -371,8 +379,9 @@ public class ElementalBlast extends ArmorAbility { //*** Wand of Magic Missile *** if (finalWandCls == WandOfMagicMissile.class) { Buff.affect(hero, Recharging.class, effectMulti* Recharging.DURATION / 2f); + SpellSprite.show( hero, SpellSprite.CHARGE ); - //*** Wand of Living Earth *** + //*** Wand of Living Earth *** } else if (finalWandCls == WandOfLivingEarth.class && charsHit > 0){ for (Mob m : Dungeon.level.mobs){ if (m instanceof WandOfLivingEarth.EarthGuardian){ @@ -382,21 +391,22 @@ public class ElementalBlast extends ArmorAbility { } } - //*** Wand of Frost *** + //*** Wand of Frost *** } else if (finalWandCls == WandOfFrost.class){ if ((hero.buff(Burning.class)) != null) { hero.buff(Burning.class).detach(); } - //*** Wand of Prismatic Light *** + //*** Wand of Prismatic Light *** } else if (finalWandCls == WandOfPrismaticLight.class){ Buff.prolong( hero, Light.class, effectMulti*50f); } - charsHit = Math.min(5, charsHit); + charsHit = Math.min(4 + hero.pointsInTalent(Talent.REACTIVE_BARRIER), charsHit); if (charsHit > 0 && hero.hasTalent(Talent.REACTIVE_BARRIER)){ - Buff.affect(hero, Barrier.class).setShield(charsHit*2*hero.pointsInTalent(Talent.REACTIVE_BARRIER)); + int shielding = Math.round(charsHit*2.5f*hero.pointsInTalent(Talent.REACTIVE_BARRIER)); + Buff.affect(hero, Barrier.class).setShield(shielding); } hero.spendAndNext(Actor.TICK); @@ -441,4 +451,4 @@ public class ElementalBlast extends ArmorAbility { public Talent[] talents() { return new Talent[]{Talent.BLAST_RADIUS, Talent.ELEMENTAL_POWER, Talent.REACTIVE_BARRIER, Talent.HEROIC_ENERGY}; } -} +} \ No newline at end of file diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DimandKing.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DimandKing.java index 623080b85..e632cd207 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DimandKing.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/DimandKing.java @@ -355,7 +355,7 @@ public class DimandKing extends Boss { if (bestPos != enemy.pos) ScrollOfTeleportation.appear(furthest, bestPos); yell(Messages.get(this, "teleport_" + Random.IntRange(1, 2))); if(Dungeon.isChallenged(STRONGER_BOSSES)) { - doYogLasers(); + //doYogLasers(); } return true; } @@ -372,7 +372,7 @@ public class DimandKing extends Boss { new Flare(5, 32).color(0xFF6060, false).show(sprite, 1.5f); yell(Messages.get(this,"buff_all")); if(Dungeon.isChallenged(STRONGER_BOSSES)) { - doYogLasers(); + //doYogLasers(); } } @@ -381,7 +381,7 @@ public class DimandKing extends Boss { new Flare(6, 32).color(0xFF22FF, false).show(sprite, 1.5f); yell(Messages.get(this, "sacrifice")); if(Dungeon.isChallenged(STRONGER_BOSSES)) { - doYogLasers(); + //doYogLasers(); } } @@ -401,7 +401,7 @@ public class DimandKing extends Boss { new Flare(7, 32).color(0x303030, false).show(sprite, 1.5f); yell(Messages.get(this,"death_rattle")); if(Dungeon.isChallenged(STRONGER_BOSSES)) { - doYogLasers(); + //doYogLasers(); } } @@ -412,7 +412,7 @@ public class DimandKing extends Boss { summonsMade++; yell(Messages.get(this, "more_summon")); if(Dungeon.isChallenged(STRONGER_BOSSES)) { - doYogLasers(); + //doYogLasers(); } new Flare(4, 32).color(0x4040FF, false).show(sprite, 1.5f); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/MagicGirlDead.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/MagicGirlDead.java index d9d551f37..8cb426c8c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/MagicGirlDead.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/MagicGirlDead.java @@ -13,6 +13,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob; import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Adrenaline; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ArcaneArmor; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Barrier; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Charm; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Chill; @@ -130,11 +131,11 @@ public class MagicGirlDead extends Boss { for(int i=0;i= 1.4f){ + if (scaleFactor >= 1.4f && HT >= 1){ HP = HT = (int) (HT * 1.45f); } else { - HP = HT = (int) (HT / 1.45f); + HP = HT = (int) (HT * 1f); } sprite.linkVisuals(this); sprite.link(this); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/SlimeKing.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/SlimeKing.java index f0d4478ec..e7fcfe6f9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/SlimeKing.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/SlimeKing.java @@ -27,18 +27,18 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets; import com.shatteredpixel.shatteredpixeldungeon.Badges; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; +import com.shatteredpixel.shatteredpixeldungeon.actors.Boss; import com.shatteredpixel.shatteredpixeldungeon.actors.Char; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Blindness; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Cripple; import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Degrade; -import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.HalomethaneBurning; -import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Poison; import com.shatteredpixel.shatteredpixeldungeon.effects.Chains; import com.shatteredpixel.shatteredpixeldungeon.effects.Pushing; import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.keys.SkeletonKey; import com.shatteredpixel.shatteredpixeldungeon.items.quest.GooBlob; +import com.shatteredpixel.shatteredpixeldungeon.levels.traps.SummoningTrap; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; @@ -48,27 +48,66 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.BossHealthBar; import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.watabou.noosa.audio.Music; import com.watabou.noosa.audio.Sample; +import com.watabou.utils.Bundle; import com.watabou.utils.Callback; import com.watabou.utils.PathFinder; import com.watabou.utils.Random; -public class SlimeKing extends Golem implements Callback { +public class SlimeKing extends Boss { private final String[] attackCurse = {"雕虫小技", "班门弄斧", "GAMEOVER"}; private int combo = 0; private static final float TIME_TO_ZAP = 0.5f; + private boolean PartCold = false; + + private static final String partcold = "partcold"; + private static final String chainsused = "chainsused"; + + @Override + public void storeInBundle(Bundle bundle) { + super.storeInBundle(bundle); + bundle.put(partcold, PartCold); + bundle.put(chainsused, chainsUsed); + } + + @Override + public void restoreFromBundle(Bundle bundle) { + super.restoreFromBundle(bundle); + PartCold = bundle.getBoolean(partcold); + chainsUsed = bundle.getBoolean(chainsused); + } + { - HP =100; + HP =140; HT= 140; EXP = 20; defenseSkill = 12; spriteClass = SlimeKingSprite.class; - properties.add(Property.LARGE); lootChance = 1; HUNTING = new Hunting(); properties.add(Property.BOSS); + baseSpeed = 0.4f; + } + + @Override + public boolean act() { + BossHealthBar.assignBoss(this); + + if(HP < 70 && !PartCold){ + baseSpeed = 1f; + SummoningTrap var4 = new SummoningTrap(); + var4.pos = super.pos; + var4.activate(); + PartCold = true; + chainsUsed = true; + GLog.n("你彻底激怒我了!!!"); + } else if (HP < 70) { + baseSpeed = 1f; + } + + return super.act(); } private void zap() { @@ -118,7 +157,11 @@ public class SlimeKing extends Golem implements Callback { @Override public int damageRoll() { - return Random.NormalIntRange( 5, 8 ); + if(HP < 70 && Random.Float() > 0.10f) { + return Random.NormalIntRange(8, 12); + } else { + return Random.NormalIntRange(4, 6); + } } @Override @@ -133,10 +176,10 @@ public class SlimeKing extends Golem implements Callback { } int damage2 = SlimeKing.super.attackProc(enemy, this.combo + damage); this.combo++; - int effect = Random.Int(2)+combo; - if (enemy.buff(Poison.class) == null) { - Buff.affect( enemy, Poison.class).set((effect-2) ); - } + int effect = Random.Int(3); +// if (enemy.buff(Poison.class) == null && Random.Float() <= 0.25f) { +// Buff.affect( enemy, Poison.class).set((effect-2) ); +// } if (this.combo > 3) { this.combo = 1; } @@ -145,7 +188,11 @@ public class SlimeKing extends Golem implements Callback { @Override public int drRoll() { - return Random.NormalIntRange(5, 2); + if(HP < 70 && !PartCold) { + return 0; + } else { + return 5; + } } private boolean chainsUsed = false; @@ -194,14 +241,16 @@ public class SlimeKing extends Golem implements Callback { } } } - chainsUsed = true; + //chainsUsed = true; return true; } private void pullEnemy( Char enemy, int pullPos ){ enemy.pos = pullPos; Dungeon.level.occupyCell(enemy); + Cripple.prolong(enemy, Cripple.class, 4f); + if (enemy == hero) { hero.interrupt(); Dungeon.observe(); @@ -218,7 +267,7 @@ public class SlimeKing extends Golem implements Callback { @Override public void notice() { super.notice(); - BossHealthBar.assignBoss(this); + // BossHealthBar.assignBoss(this); Music.INSTANCE.play(Assets.BGM_BOSSA, true); yell( Messages.get(this, "notice") ); //summon(); @@ -250,34 +299,26 @@ public class SlimeKing extends Golem implements Callback { Badges.KILLSLIMKING(); yell( Messages.get(this, "defeated") ); for (Mob mob : (Iterable)Dungeon.level.mobs.clone()) { - if ( mob instanceof Slime_Lg|| - mob instanceof Slime_Qs|| - mob instanceof Slime_Sn|| - mob instanceof Slime_Sz|| - mob instanceof Slime_Lt|| - mob instanceof Slime_Red|| - mob instanceof Slime_Orange) { + if ( mob instanceof Swarm|| + mob instanceof Crab|| + mob instanceof Rat|| + mob instanceof Slime ) { mob.die( cause ); } } } - @Override - public void call() { - next(); - } - private class Hunting extends Mob.Hunting{ @Override public boolean act( boolean enemyInFOV, boolean justAlerted ) { enemySeen = enemyInFOV; - //放风筝必死 恼 - //140血强制更新玩家血量为1 赋予燃烧 失明 流血 弱化 - if (++HP+1 >= 141){ - hero.HP = 1; - Buff.affect(hero, HalomethaneBurning.class).reignite(hero); - GLog.b( Messages.get(this, "cus") ); - } +// //放风筝必死 恼 +// //140血强制更新玩家血量为1 赋予燃烧 失明 流血 弱化 +// if (++HP+1 >= 141){ +// hero.HP = 1; +// Buff.affect(hero, HalomethaneBurning.class).reignite(hero); +// GLog.b( Messages.get(this, "cus") ); +// } if (!chainsUsed && enemyInFOV && !isCharmedBy( enemy ) diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/bosses/CrystalLingTower.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/bosses/CrystalLingTower.java index ad73a1e8c..99ab23389 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/bosses/CrystalLingTower.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/bosses/CrystalLingTower.java @@ -23,7 +23,7 @@ public class CrystalLingTower extends Mob { { spriteClass = IceStalSprites.class; - HP = HT = 400; + HP = HT = 150; properties.add(Property.MINIBOSS); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/bosses/FireMagicDied.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/bosses/FireMagicDied.java index e3aaa807a..eaa5211c2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/bosses/FireMagicDied.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/bosses/FireMagicDied.java @@ -2,6 +2,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs.bosses; import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero; import static com.shatteredpixel.shatteredpixeldungeon.levels.ShopBossLevel.CryStalPosition; +import static com.shatteredpixel.shatteredpixeldungeon.levels.ShopBossLevel.FALSEPosition; import static com.shatteredpixel.shatteredpixeldungeon.levels.ShopBossLevel.TRUEPosition; import com.shatteredpixel.shatteredpixeldungeon.Assets; @@ -78,7 +79,7 @@ import java.util.HashSet; public class FireMagicDied extends Mob implements Callback { - private static final float TIME_TO_ZAP = 1f; + private static final float TIME_TO_ZAP = 6f; { HP = HT = 500; @@ -544,7 +545,7 @@ public class FireMagicDied extends Mob implements Callback { Sample.INSTANCE.play( Assets.Sounds.DEBUFF ); } - int dmg = Random.NormalIntRange( 2, 4 ); + int dmg = Random.NormalIntRange( 1, 2 ); for (Mob mob : Dungeon.level.mobs.toArray( new Mob[0] )) { if(Random.NormalIntRange(0,9)<4) { @@ -583,7 +584,7 @@ public class FireMagicDied extends Mob implements Callback { enemy.sprite.burst( 0x000000, 5 ); } } else if (HP > 400) { - if (Random.NormalFloat( 2, 20 ) == 4) { + if (Random.NormalFloat( 2, 9 ) == 4) { GLog.n( Messages.get(FireMagicDied.class, "died_kill",Dungeon.hero.name()) ); } zap(); @@ -724,6 +725,8 @@ public class FireMagicDied extends Mob implements Callback { abc.pos = TRUEPosition; GameScene.add(abc); + this.pos = FALSEPosition; + Buff.affect(this, DwarfMaster.DKBarrior.class).setShield(1000); Buff.append(hero, BeamTowerAdbility.class).towerPos = TRUEPosition; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/Weapon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/Weapon.java index f90939832..9e4907b7e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/Weapon.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/Weapon.java @@ -337,11 +337,11 @@ abstract public class Weapon extends KindOfWeapon { public static abstract class Enchantment implements Bundlable { private static final Class[] common = new Class[]{ - Blazing.class, Chilling.class, Kinetic.class, Shocking.class, HaloBlazing.class}; + Blazing.class, Chilling.class, Kinetic.class, Shocking.class}; private static final Class[] uncommon = new Class[]{ Blocking.class, Blooming.class, Elastic.class, - Lucky.class, Projecting.class, Unstable.class}; + Lucky.class, Projecting.class, Unstable.class,HaloBlazing.class}; private static final Class[] rare = new Class[]{ Corrupting.class, Grim.class, Vampiric.class}; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesGirlDeadLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesGirlDeadLevel.java index 6d1067a17..e0cecb5a2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesGirlDeadLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/CavesGirlDeadLevel.java @@ -229,19 +229,19 @@ public class CavesGirlDeadLevel extends Level { W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, X, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, e, e, e, e, e, e, e, e, e, e, e, W, W, W, W, W, - W, W, W, W, T, e, e, e, e, e, e, e, e, e, e, e, T, W, W, W, W, - W, W, W, e, e, T, e, e, e, e, e, e, e, e, e, T, e, e, W, W, W, - W, W, W, e, e, e, T, e, e, e, W, e, e, e, T, e, e, e, W, W, W, - W, W, W, e, e, e, e, T, e, e, W, e, e, T, e, e, e, e, W, W, W, - W, W, W, e, e, e, e, e, T, e, W, e, T, e, e, e, e, e, W, W, W, + W, W, W, W, e, e, e, e, e, e, e, e, e, e, e, e, e, W, W, W, W, + W, W, W, e, e, e, e, e, e, e, e, e, e, e, e, e, e, e, W, W, W, + W, W, W, e, e, e, e, e, e, e, W, e, e, e, e, e, e, e, W, W, W, + W, W, W, e, e, e, e, e, e, e, W, e, e, e, e, e, e, e, W, W, W, + W, W, W, e, e, e, e, e, e, e, W, e, e, e, e, e, e, e, W, W, W, W, W, W, e, e, e, e, e, e, T, T, T, e, e, e, e, e, e, W, W, W, - W, W, W, e, e, e, W, W, W, T, D, T, W, W, W, e, e, e, W, W, W, + W, W, W, e, e, e, W, W, W, T, W, T, W, W, W, e, e, e, W, W, W, W, W, W, e, e, e, e, e, e, T, T, T, e, e, e, e, e, e, W, W, W, - W, W, W, e, e, e, e, e, T, e, W, e, T, e, e, e, e, e, W, W, W, - W, W, W, e, e, e, e, T, e, e, W, e, e, T, e, e, e, e, W, W, W, - W, W, W, e, e, e, T, e, e, e, W, e, e, e, T, e, e, e, W, W, W, - W, W, W, e, e, T, e, e, e, e, e, e, e, e, e, T, e, e, W, W, W, - W, W, W, W, T, e, e, e, e, e, e, e, e, e, e, e, T, W, W, W, W, + W, W, W, e, e, e, e, e, e, e, W, e, e, e, e, e, e, e, W, W, W, + W, W, W, e, e, e, e, e, e, e, W, e, e, e, e, e, e, e, W, W, W, + W, W, W, e, e, e, e, e, e, e, W, e, e, e, e, e, e, e, W, W, W, + W, W, W, e, e, e, e, e, e, e, e, e, e, e, e, e, e, e, W, W, W, + W, W, W, W, e, e, e, e, e, e, e, e, e, e, e, e, e, W, W, W, W, W, W, W, W, W, e, e, e, e, e, e, e, e, e, e, e, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, E, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, W, diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/ShopBossLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/ShopBossLevel.java index cac5a9b56..06f2f257f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/ShopBossLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/ShopBossLevel.java @@ -80,7 +80,7 @@ public class ShopBossLevel extends Level { }; public static int TRUEPosition = WIDTH * 17 + 17; - + public static int FALSEPosition = WIDTH * 22 + 17; @Override public void unseal() { super.unseal(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/InterlevelScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/InterlevelScene.java index 3b78fb55f..c933ada8f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/InterlevelScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/InterlevelScene.java @@ -182,7 +182,7 @@ public class InterlevelScene extends PixelScene { fadeTime += 0.9f; //adds 1 second total //speed up transition when debugging } else if (DeviceCompat.isDebug()){ - fadeTime = 0.9f; + fadeTime = 0.1f; } SkinnedBlock bg = new SkinnedBlock(Camera.main.width, Camera.main.height, loadingAsset ){ 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 bf676e934..6564fee46 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 @@ -15,10 +15,12 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.IceStalSprites; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.sprites.KagenoNusujinSprite; +import com.shatteredpixel.shatteredpixeldungeon.sprites.MagicGirlSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.MimicSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.MurdererSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.SRPDHBLRTT; import com.shatteredpixel.shatteredpixeldungeon.sprites.ShopkKingSprite; +import com.shatteredpixel.shatteredpixeldungeon.sprites.SlimeKingSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.WFSprite; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIcon; import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator; @@ -33,6 +35,7 @@ import java.util.ArrayList; public class vM0_6_7_X_Changes { public static void addAllChanges(ArrayList changeInfos) { + add_v0_6_16_Changes(changeInfos); add_v0_6_15_Changes(changeInfos); add_v0_6_14_Changes(changeInfos); add_v0_6_13_Changes(changeInfos); @@ -51,6 +54,39 @@ public class vM0_6_7_X_Changes { add_v0_6_0_Changes(changeInfos); } + public static void add_v0_6_16_Changes( ArrayList changeInfos ) { + ChangeInfo changes = new ChangeInfo("v0.6.0.0-Beta21-p2.85", 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 IceStalSprites(), ("浊焰魔女"), + ("浊焰魔女攻击力降低,且三阶段的结晶生命值下降。" ))); + + changes.addButton(new ChangeButton(new MagicGirlSprite(), ("冰雪魔女"), + ("地形调整,冰雪魔女特殊情况下获得的玫瑰结界换成奥术护盾20点" ))); + + changes.addButton(new ChangeButton(new MimicSprite.Dimand(), ("钻石宝箱王"), + ("梦魇Boss挑战下不再发射激光" ))); + + changes.addButton(new ChangeButton(new SlimeKingSprite(), ("史莱姆王"), + ("几乎是完全重做:\n" + + "机制说明:移动极其缓慢但有无限使用的锁链。\n" + + "血量低于一半后立刻呼唤_当前楼层至多3个怪物_前来支援(只可触发一次),\n" + + "并且移速恢复正常但_锁链功能失效_且_自身防御降为0_以及近战有概率造成_双倍伤害_。" ))); + + changes = new ChangeInfo("改动", false, null); + changes.hardlight(Window.CYELLOW); + changeInfos.add(changes); + + changes.addButton(new ChangeButton(Icons.get(Icons.INFO), ("杂项改动"), + ("1.部分素材进行了调整优化……\n2.修复了突变巨兽的0血Bug,在新存档生效"))); + + } + public static void add_v0_6_15_Changes( ArrayList changeInfos ) { ChangeInfo changes = new ChangeInfo("v0.6.0.0-Beta21-p2.8", true, ""); changes.hardlight(Window.TITLE_COLOR);