update Beta21 p2.7

Fixed Mode
This commit is contained in:
LingASDJ 2022-10-26 10:20:47 +08:00
parent 0349f1674e
commit f9b6c3abc1
19 changed files with 115 additions and 46 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 509 B

After

Width:  |  Height:  |  Size: 273 B

View File

@ -6,6 +6,9 @@ text.herostat.item_wnd_cursed = 诅咒的
text.herostat.item_basic = 常规:
text.herostat.item_enter = 查看物品生成
actors.buffs.invisibilityring.name=
actors.buffs.invisibilityring.desc=你和周围的地形完全融为一体使你不可能被看到。同时你将每10回合回复1滴血 \n\n当你在虚隐时敌人无法追踪或攻击你。大部分物理攻击和魔法(比如卷轴和法杖)会立即解除虚隐效果。 \n\n剩余的虚隐效果时长%s回合
###LANTERFIRE
actors.buffs.nyctophobia.name=光芒前路
actors.buffs.nyctophobia.name2=灯火摇曳

View File

@ -130,7 +130,7 @@ challenges.test = 测试时间-DEBUG
challenges.rlpt = Π支离破碎Π
challenges.rlpt_desc=地牢的魔力正在不断侵蚀这里,现实不过只是一场噩梦。\n\n击败第五层Boss后所有怪物楼层全部随机Boss则固定刷新并且不会出现冰女那些阴间Boss\n\n特殊说明没有任务类型NPC!\n\n启用本挑战你开局可以额外获得1个十字架。
challenges.sbsg = Π突变巨兽Π
challenges.sbsg_desc=人类回想起了,被怪物支配的恐惧\n-所有生物都会突变激素变得更大,但一些因为一些其他不良反应原因会变得更小。\n-生物的大小决定了他们的移动速度、防御、闪避和近战伤害。\n-你的极度饥饿也会变得更加致命。\n-同时,如果怪物失去了你的视野,他将变回去,属性也会和无挑一样。
challenges.sbsg_desc=人类回想起了,被怪物支配的恐惧\n-所有生物都会突变激素变得更大,但一些因为一些其他不良反应原因会变得更小。\n-生物的大小决定了他们的移动速度、防御、闪避和近战伤害。\n-同时,如果怪物失去了你的视野,他将变回去,属性也会和无挑一样。
challenges.exsg = Π药水癔症Π
challenges.exsg_desc=药水癔症详细规则:\n力量药水 力量-1\n灵视药剂 喝后失明5回合\n隐形药剂 喝后立刻怒吼\n经验药剂 喝后立刻流血6回合\n极速药剂 喝后立刻残废8回合\n==========================\n小型口粮 吃后立刻获得极速8回合\n炖肉 吃后立刻升级\n冷冻生肉片 吃后获得奥术护盾\n全肉大饼 吃后立刻获得8回合极速 且+1力量\n不知道何种原因大部分正面药水你都感觉有毒\n部分药水完全处于DeBuff,但食物却会很有用!\n恐药异症的效果同样存在
challenges.light&black = Π空洞旅程Π

View File

@ -474,4 +474,6 @@ ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x32=-P2.0\n1.修复了种子在部分
ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x33=-P2.6\n1.修复了感知符石鉴定秘药可能崩溃的问题\n2.修复了回溯之书的错误问题
ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x34=-P2.7\n1.修复了火焰特效遗留问题\n2.修复了炖肉不回复饱食度的问题\n3.修复部分逻辑错误
//ui.changelist.mlpd.vm0_5_x_changes.xxx//

View File

@ -0,0 +1,12 @@
package com.shatteredpixel.shatteredpixeldungeon.actors.buffs;
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
public class InvisibilityRing extends Invisibility{
@Override
public int icon() {
return BuffIndicator.NONE;
}
}

View File

@ -74,6 +74,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hex;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.HoldFast;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hunger;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.InvisibilityRing;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LostInventory;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicGirlDebuff.MagicGirlSayCursed;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicGirlDebuff.MagicGirlSayKill;
@ -86,7 +87,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Momentum;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Nyctophobia;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Paralysis;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Regeneration;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Shadows;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.SnipersMark;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Vertigo;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.WaterSoulX;
@ -2028,10 +2028,10 @@ public class Hero extends Char {
Buff.affect(hero, Barkskin.class).set( 2 + hero.lvl/4, 10 );
Buff.prolong(this, Bless.class,Bless.GODSPOERF);
Buff.affect(this, HasteLing.class, Haste.DURATION/20);
Buff.affect(this, Shadows.class, Shadows.DURATION/10f);
Buff.affect(this, InvisibilityRing.class, InvisibilityRing.DURATION/10f);
} else if(Dungeon.PrisonWaterLevel()&& !Dungeon.level.water[pos])
for (Buff buff : hero.buffs()) {
if (buff instanceof Shadows||buff instanceof HasteLing) {
if (buff instanceof InvisibilityRing||buff instanceof HasteLing) {
buff.detach();
}
}

View File

@ -211,8 +211,7 @@ public class Bestiary {
Brute.class, Brute.class,
Necromancer.class,Necromancer.class));
case 11:
return new ArrayList<>(Arrays.asList(Bat.class,
Spinner.class, Spinner.class,ColdMagicRat.class,ColdMagicRat.class));
return new ArrayList<>(Arrays.asList(Bat.class, DM100.class,DM100.class,ColdMagicRat.class,ColdMagicRat.class));
case 12:
//1x bat, 1x brute, 2x shaman, 2x spinner, 2x DM-300
return new ArrayList<>(Arrays.asList(

View File

@ -48,7 +48,7 @@ public class IceGolem extends Mob implements Callback {
{
spriteClass = IceGolemSprite.class;
HP = HT = Random.Int(70,140);
HP = HT = Random.Int(70,90);
defenseSkill = 15;
EXP = 3;

View File

@ -181,13 +181,14 @@ public abstract class Mob extends Char {
boolean justAlerted = alerted;
alerted = false;
if (Dungeon.isChallenged(Challenges.SBSG) && scaleFactor == 1f && !properties().contains(Property.NOBIG)&&!properties().contains(Property.BOSS)){
scaleFactor = Random.Float(1f, 1.5f);
HP = HT = (int) (HT * scaleFactor);
if (scaleFactor >= 1.45f){
HP = HT = (int) (HT * 1.15f);
}else if (scaleFactor >= 1.35f) {
HP = HT = (int) (HT * 1.4f);
//TODO 突变巨兽NEW
if (Dungeon.isChallenged(Challenges.SBSG) && scaleFactor == 1f && !properties().contains(Property.NOBIG) && !properties().contains(Property.BOSS)&& !properties().contains(Property.MINIBOSS) ){
scaleFactor = Random.Float(1f, 1.8f);
HT = (int) (HT * scaleFactor);
if (scaleFactor >= 1.4f){
HP = HT = (int) (HT * 1.45f);
} else {
HP = HT = (int) (HT / 1.45f);
}
sprite.linkVisuals(this);
sprite.link(this);
@ -559,13 +560,13 @@ public abstract class Mob extends Char {
public float attackDelay() {
float delay = 1f;
if ( buff(Adrenaline.class) != null) delay /= 1.5f;
return super.attackDelay()*(Dungeon.isChallenged(Challenges.SBSG) ? (0.8f * scaleFactor) : delay);
return super.attackDelay()*(Dungeon.isChallenged(Challenges.SBSG) ? (0.5f * scaleFactor) : delay);
}
@Override
public int attackProc(Char enemy, int damage) {
return super.attackProc(enemy,
(int) (damage*(Dungeon.isChallenged(Challenges.SBSG) ? (1.4f * scaleFactor) : 1)));
(int) (damage*(Dungeon.isChallenged(Challenges.SBSG) ? (0.6f * scaleFactor) : 1)));
}
protected boolean doAttack( Char enemy ) {
@ -593,7 +594,7 @@ public abstract class Mob extends Char {
if ( !surprisedBy(enemy)
&& paralysed == 0
&& !(alignment == Alignment.ALLY && enemy == hero)) {
return (int) (this.defenseSkill/(Dungeon.isChallenged(Challenges.SBSG) ? (0.8f * scaleFactor) : 1));
return (int) (this.defenseSkill/(Dungeon.isChallenged(Challenges.SBSG) ? (0.4f * scaleFactor) : 1));
} else {
return 0;
}
@ -601,7 +602,7 @@ public abstract class Mob extends Char {
@Override
public float speed() {
return super.speed()/(Dungeon.isChallenged(Challenges.SBSG) ? (0.8f * scaleFactor) : 1);
return super.speed() * (Dungeon.isChallenged(Challenges.SBSG) ? (0.6f * scaleFactor) : 1);
}
protected boolean hitWithRanged = false;

View File

@ -61,15 +61,15 @@ public class ShieldHuntsman extends Mob {
Dungeon.quickslot.convertToPlaceholder(weapon);
KindOfWeapon.updateQuickslot();
Dungeon.level.drop(weapon, hero.pos).sprite.drop();
GLog.w("你的武器被猎人击飞了!", new Object[0]);
GLog.w("你的武器被猎人击飞了!");
}
}
if (Random.Int(0, 10) > 7) {
//如果结果大于7 那么触发下面的行动
Buff.prolong(enemy, Paralysis.class, Random.Float(1.0f, 2.0f));
enemy.sprite.emitter().burst(Speck.factory(2), 12);
Buff.affect(hero, Burning.class ).reignite( hero, 15f );
GLog.n("你被猎人的盾牌重重地撞了一下,你全身僵直难以呼吸,同时感觉到一团烈焰正在从你身体内熊熊燃烧!", new Object[0]);
Buff.affect(enemy, Burning.class ).reignite( enemy, 15f );
// GLog.n("你被猎人的盾牌重重地撞了一下,你全身僵直难以呼吸,同时感觉到一团烈焰正在从你身体内熊熊燃烧!");
}
if (this.combo > 5) {
this.combo = 1;

View File

@ -26,7 +26,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.AllyBuff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Burning;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ChampionEnemy;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Poison;
import com.shatteredpixel.shatteredpixeldungeon.effects.Pushing;
@ -122,9 +121,10 @@ public class Swarm extends Mob {
Swarm clone = new Swarm();
clone.generation = generation + 1;
clone.EXP = 0;
if (buff( Burning.class ) != null) {
Buff.affect( clone, Burning.class ).reignite( clone );
}
//TODO 修复火焰遗留问题
// if (buff( Burning.class ) != null) {
// Buff.affect( clone, Burning.class ).reignite( clone );
// }
if (buff( Poison.class ) != null) {
Buff.affect( clone, Poison.class ).set(2);
}

View File

@ -26,7 +26,6 @@ import static com.shatteredpixel.shatteredpixeldungeon.Challenges.EXSG;
import com.shatteredpixel.shatteredpixeldungeon.Challenges;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Haste;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hunger;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.items.Recipe;
@ -40,8 +39,13 @@ public class StewedMeat extends Food {
protected void satisfy( Hero hero ) {
if (Dungeon.isChallenged(Challenges.EXSG)) {
hero.earnExp( hero.maxExp(), getClass() );
Buff.affect(hero, Hunger.class).satisfy(energy/3f);
} else {
Buff.affect(hero, Hunger.class).satisfy(energy/2f);
}
}
{
image = ItemSpriteSheet.STEWED;
energy = Hunger.HUNGRY/2f;

View File

@ -56,8 +56,8 @@ public class WarHammer extends MeleeWeapon {
default:
return max(buffedLvl());
case 1:
Buff.prolong(defender, Vertigo.class, 6f);
Buff.prolong(defender, Terror.class, 18f);
Buff.prolong(attacker, Vertigo.class, 6f);
Buff.prolong(attacker, Terror.class, 18f);
Buff.affect(attacker, Vulnerable.class, Degrade.ADURATION);
return super.proc(attacker, defender, damage);
}

View File

@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Ghost;
import com.shatteredpixel.shatteredpixeldungeon.effects.Ripple;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfUpgrade;
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.SewerPainter;
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.AlarmTrap;
@ -111,6 +112,10 @@ public class SewerLevel extends RegularLevel {
@Override
protected void createItems() {
Ghost.Quest.spawn( this );
if(Dungeon.depth == 1){
drop(new ScrollOfUpgrade(), exit-1 );
}
super.createItems();
}

View File

@ -120,7 +120,7 @@ public class ZeroLevel extends Level {
drop( new Stylus(), this.width * 19 + 20 );
drop( ( Generator.randomUsingDefaults( Generator.Category.STONE ) ), this.width * 16 + 19 );
//drop( ( Generator.randomUsingDefaults( Generator.Category.FOOD ) ), this.width * 20 + 19 );
drop( ( Generator.randomUsingDefaults( Generator.Category.FOOD ) ), this.width * 20 + 19 );
drop( new Pasty(), this.width * 20 + 19 );
if ( Badges.isUnlocked(Badges.Badge.GODD_MAKE)){
drop( ( Generator.randomUsingDefaults( Generator.Category.RING ) ), this.width * 17 + 18 );
@ -136,7 +136,6 @@ public class ZeroLevel extends Level {
drop( ( Generator.randomUsingDefaults( Generator.Category.ARTIFACT ) ), this.width * 18 + 19 );
}
//旧版支离破碎的神器获取方案已经不再使用
}
public Mob createMob() {

View File

@ -6,39 +6,42 @@
package com.shatteredpixel.shatteredpixeldungeon.sprites;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite.State;
import com.watabou.noosa.TextureFilm;
import com.watabou.noosa.MovieClip.Animation;
public class FireGhostSprite extends MobSprite {
public FireGhostSprite() {
super();
this.texture("sprites/wengi.png");
TextureFilm var1 = new TextureFilm(this.texture, 14, 15);
Integer var2 = 1;
TextureFilm frames = new TextureFilm( texture, 14, 15 );
this.idle = new Animation(5, true);
Animation var3 = this.idle;
Integer var4 = 0;
var3.frames(var1, new Object[]{var4, var2});
var3.frames(frames, 0, 1);
this.run = new Animation(10, true);
this.run.frames(var1, new Object[]{var4, var2});
this.run.frames(frames, 0, 1);
this.attack = new Animation(10, false);
this.attack.frames(var1, new Object[]{var4, 2, 3});
this.attack.frames(frames, 0, 2, 3);
this.die = new Animation(8, false);
this.die.frames(var1, new Object[]{var4, 4, 5, 6, 7});
this.die.frames(frames, 0, 4, 5, 6, 7);
this.play(this.idle);
}
@Override
public int blood() {
return -33517;
return 0xFFFF7D13;
}
@Override
public void link( Char ch ) {
super.link( ch );
add( CharSprite.State.BURNING );
}
@Override
public void die() {
super.die();
this.remove(State.BURNING);
}
public void link(Char var1) {
super.link(var1);
this.add(State.BURNING);
remove( CharSprite.State.BURNING );
}
}

View File

@ -52,4 +52,16 @@ public class SwarmSprite extends MobSprite {
public int blood() {
return 0xFF8BA077;
}
// @Override
// public void link( Char ch ) {
// super.link( ch );
// add( CharSprite.State.BURNING );
// }
@Override
public void die() {
super.die();
remove( CharSprite.State.BURNING );
}
}

View File

@ -33,6 +33,7 @@ import java.util.ArrayList;
public class vM0_6_7_X_Changes {
public static void addAllChanges(ArrayList<ChangeInfo> changeInfos) {
add_v0_6_14_Changes(changeInfos);
add_v0_6_13_Changes(changeInfos);
add_v0_6_12_Changes(changeInfos);
add_v0_6_11_Changes(changeInfos);
@ -49,6 +50,34 @@ public class vM0_6_7_X_Changes {
add_v0_6_0_Changes(changeInfos);
}
public static void add_v0_6_14_Changes( ArrayList<ChangeInfo> changeInfos ) {
ChangeInfo changes = new ChangeInfo("v0.6.0.0-Beta21-p2.7", 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 ItemSprite(ItemSpriteSheet.SCROLL_SOWILO), ("升级卷轴"),
("升级卷轴现在在第一层的出口区域追加了一个,不受挑战影响" )));
changes = new ChangeInfo("改动", false, null);
changes.hardlight(Window.CYELLOW);
changeInfos.add(changes);
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_06X34")));
changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("突变巨兽调整"),
("突变巨兽进行了一定的调整,详细查看挑战详情")));
changes.addButton(new ChangeButton(Icons.get(Icons.INFO), ("监狱优化"),
("监狱的水进行了优化,现在不会瞎眼了。")));
}
public static void add_v0_6_13_Changes( ArrayList<ChangeInfo> changeInfos ) {
ChangeInfo changes = new ChangeInfo("v0.6.0.0-Beta21-p2.6", true, "");
changes.hardlight(Window.TITLE_COLOR);