update beta 21 p.2.85
This commit is contained in:
parent
c7c5ecc664
commit
698828c54e
|
@ -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
|
||||
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 40 KiB |
|
@ -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=我的史莱姆守卫们,快点出来支援本王!
|
||||
|
|
|
@ -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=好吧,我以为你想抢劫商店的……
|
||||
|
|
|
@ -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<Class<?extends Wand>, 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<? extends Wand> 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};
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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<Math.min(phase/2, 4);++i){
|
||||
summonCaster(Random.Int(4), places.get(i),false);
|
||||
}
|
||||
}else{
|
||||
destroyAll();
|
||||
for(int i=0;i<phase/2+1;++i){
|
||||
summonCaster(Random.Int(6), findRandomPlaceForCaster(), false);
|
||||
}
|
||||
// }else{
|
||||
// destroyAll();
|
||||
// for(int i=0;i<phase/2+1;++i){
|
||||
// summonCaster(Random.Int(6), findRandomPlaceForCaster(), false);
|
||||
// }
|
||||
}
|
||||
|
||||
activateAll();
|
||||
|
@ -155,11 +156,11 @@ public class MagicGirlDead extends Boss {
|
|||
for (Buff buff : hero.buffs()) {
|
||||
if (buff instanceof RoseShiled) {
|
||||
buff.detach();
|
||||
GLog.b("玫瑰结界的创始人是翼绫,你怎么敢用她的技能?");
|
||||
GLog.b("……你妄图使用这种方法来逃脱吗?");
|
||||
}
|
||||
if (buff instanceof HaloFireImBlue ||buff instanceof FireImbue) {
|
||||
buff.detach();
|
||||
GLog.b("你想免疫火的伤害?在我这里,没有可能!/kill @e[type=FireImbue=All] enemy!");
|
||||
GLog.b("……你妄图使用这种方法来逃脱吗?");
|
||||
}
|
||||
}
|
||||
if(buff(RageAndFire.class)!=null){
|
||||
|
@ -194,10 +195,10 @@ public class MagicGirlDead extends Boss {
|
|||
|
||||
if (Dungeon.level.heroFOV[step] && HP < 200) {
|
||||
if (buff(Haste.class) == null) {
|
||||
Buff.affect(this, RoseShiled.class, 15f);
|
||||
Buff.affect(this, Barrier.class).setShield( 20);
|
||||
Buff.affect(this, Haste.class, 5f);
|
||||
Buff.affect(this, ArcaneArmor.class).set(Dungeon.hero.lvl + 10, 10);
|
||||
Buff.affect(this, Healing.class).setHeal(40, 0f, 6);
|
||||
Buff.affect(this, Healing.class).setHeal(10, 0f, 6);
|
||||
new SRPDICLRPRO().spawnAround(pos);
|
||||
Buff.affect(this, Adrenaline.class, 20f);
|
||||
yell( Messages.get(this, "arise2") );
|
||||
|
|
|
@ -185,10 +185,10 @@ public abstract class Mob extends Char {
|
|||
if (Dungeon.isChallenged(Challenges.SBSG) && scaleFactor == 1f && !properties().contains(Property.NOBIG) && !properties().contains(Property.BOSS)&& !properties().contains(Property.MINIBOSS) ){
|
||||
scaleFactor = Random.Float(1f, 1.6f);
|
||||
HT = (int) (HT * scaleFactor);
|
||||
if (scaleFactor >= 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);
|
||||
|
|
|
@ -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<Mob>)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 )
|
||||
|
|
|
@ -23,7 +23,7 @@ public class CrystalLingTower extends Mob {
|
|||
{
|
||||
spriteClass = IceStalSprites.class;
|
||||
|
||||
HP = HT = 400;
|
||||
HP = HT = 150;
|
||||
|
||||
properties.add(Property.MINIBOSS);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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};
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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 ){
|
||||
|
|
|
@ -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<ChangeInfo> 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<ChangeInfo> 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<ChangeInfo> changeInfos ) {
|
||||
ChangeInfo changes = new ChangeInfo("v0.6.0.0-Beta21-p2.8", true, "");
|
||||
changes.hardlight(Window.TITLE_COLOR);
|
||||
|
|
Loading…
Reference in New Issue
Block a user