Update V0.6.2.0-Beta4

This commit is contained in:
LingASDJ 2023-05-30 01:24:46 +08:00
parent faa8a6e789
commit 267bb84c1f
17 changed files with 247 additions and 81 deletions

View File

@ -17,8 +17,8 @@ allprojects {
appName = 'Magic Ling Pixel Dungeon'
appPackageName = 'com.ansdomagiclingpixeldungeon.ling'
appVersionCode =900871
appVersionName = '0.6.2.0-Beta3'
appVersionCode =900872
appVersionName = '0.6.2.0-Beta4'
appJavaCompatibility = JavaVersion.VERSION_11

View File

@ -89,11 +89,6 @@ items.bombs.laserpython.name=激光十字晶柱召唤器
items.bombs.laserpython.desc=这枚召唤器会在爆炸后立刻生成一个十字晶柱。
items.bombs.laserpython.didnot_pick=你无法拾取该物品……
items.artifacts.wraithamulet.name=暗金宝石护符
items.artifacts.wraithamulet.desc=来自于异世界的产物,能使自己进入虚无化。当护符能量足够多的时候,你还可以对敌人实行一次暗夜袭击,护符能量将会随着时间自动恢复。\n\n这个护符是证明给强者之人用的冰雪魔女已经输的心服口服现在她将此护身符给予给你。
items.artifacts.wraithamulet.ac_ghost=遁入虚无
items.artifacts.wraithamulet.ac_darkkill=暗夜袭击
items.food.pasty.moon=月饼
items.food.pasty.moonling=月饼的味道让你回味无穷,你感到十分畅快。
items.food.pasty.moon_desc=月饼象征着团圆美满,吃下这佳节诞生的产物,危险的地牢也在中秋节洋溢着快乐的气氛。中秋节快乐,%s
@ -172,7 +167,7 @@ items.weapon.melee.endingblade.ac_diedghost=✦死亡宣告✦
items.weapon.melee.endingblade.ac_healreset=_千里追魂_
items.weapon.melee.washcrime.name=涤罪
items.weapon.melee.washcrime.desc=铁链的末端绑了一把巨镰,上面的Γ血迹Γ已然生锈。\n命中有几率释放✦未安息的亡魂✦助战并给敌人施加✦餐费✦效果,武器伤害随杀敌数增加,但在一定阈值后停止增加。\n\n_这把武器拥有额外的攻击距离但攻速极慢_
items.weapon.melee.washcrime.desc=铁链的末端绑了一把巨镰,上面的Γ血迹Γ已然生锈。\n命中有几率释放✦未安息的亡魂✦助战并给敌人施加✦残废✦效果,武器伤害随杀敌数增加,但在一定阈值后停止增加。\n\n_这把武器拥有额外的攻击距离但攻速极慢_
items.weapon.melee.washcrime$diedghost.name=未安息的亡魂
items.weapon.melee.washcrime$diedghost.desc=肉身已然逝去,灵魂尚未得到安息,脑海遵照主人的意愿,直到真正的死亡降临。
@ -848,8 +843,30 @@ items.artifacts.unstablespellbook.desc_index=这本魔典的目录并不完整
items.artifacts.unstablespellbook.desc_empowered=被你放进书中的卷轴闪耀着魔力的微光。你能够利用魔典进一步激发卷轴能力,展现出秘卷效果,但这样也会消耗你额外的充能。
items.artifacts.unstablespellbook.read_empowered=被你放入魔典的卷轴都充满了魔法能量。你可以自主选择导引出该卷轴的正常或秘卷能力。\n\n如果选择释放秘卷能力则会消耗2点魔典充能。
items.artifacts.wraithamulet.name=暗金宝石护符
items.artifacts.wraithamulet.desc=来自于不属于这个世界的产物,能使自己进入虚无化。\n\n当护符能量足够多的时候你还可以对敌人实行一次暗夜突袭对目标造成_最大生命值x4的伤害_。\n\n如果是首领则受到_最大生命值的50%伤害_。护符能量将会随着时间自动恢复。\n\n这个护符曾经是一个少女来探险的护身符自从她在地牢中失踪后这个护符就一直被遗弃在这里……
items.artifacts.wraithamulet.ghost=你遁入了虚无,你的身体变得透明了。
items.artifacts.wraithamulet.cooddown=你的护符能量正在冷却,你暂时无法使用任何能力。
items.artifacts.wraithamulet.nochareup=你的护符能量不足,你无法使用任何能力。
items.artifacts.wraithamulet.cursed=少女的怨念与诅咒魔力在此凝聚,你的灵魂被束缚在这里,你无法使用护符的能力。\n\n_被诅咒的暗金宝石护符将抑制饮用药水的能力,并且周期性吸取穿戴者的生命精华_
items.artifacts.wraithamulet.ac_ghost=遁入虚无
items.artifacts.wraithamulet.ac_darkkill=暗夜突袭
items.artifacts.wraithamulet.noequip=你必须装备此神器才能使用它的能力。
items.artifacts.wraithamulet.must_nocursed=你必须净化护符的诅咒才能使用它的能力。
items.artifacts.wraithamulet.drink_cursed=就当你准备饮用药水时,被诅咒的暗金宝石护符发射出一道无形的结界阻止了你饮用药水。
items.artifacts.wraithamulet$wraithrecharge.ondeath=你的灵魂被护符吸食殆尽了……
items.artifacts.wraithamulet$wraithrecharge.cursed=我会让你的灵魂永远留在这里……
items.artifacts.wraithamulet$wraithrecharge.rankings_desc=被暗金护符吸食殆尽……
items.artifacts.wraithamulet$wraithrecharge.ghoststong=你的暗金护符变得更加强大了。
items.artifacts.wraithamulet$1.selectkill=选择刺杀目标
items.artifacts.wraithamulet$1.far=刺杀目标太远,无法进行刺杀。
items.artifacts.wraithamulet$1.rooted=你的身体被束缚在这里,无法进行刺杀。
items.artifacts.wraithamulet$1.notthere=那里没有任何目标
items.artifacts.wraithamulet$1.killmobs=该生物成功被暗夜突袭处决!
items.artifacts.wraithamulet$1.killboss=该首领成功被暗夜突袭重创!
###bags
items.bags.bag.name=背包

View File

@ -70,7 +70,7 @@ badges$badge.yasd.title=另类死亡爱好者
badges$badge.yasd.desc=解锁所有关于死因的徽章
badges$badge.boss_slain_1.title=丛林之熵
badges$badge.boss_slain_1.desc=击败丛尽头的任意Boss
badges$badge.boss_slain_1.desc=击败丛尽头的任意Boss
badges$badge.boss_slain_2.title=冰狱噩梦
badges$badge.boss_slain_2.desc=击败监狱尽头的任意Boss
badges$badge.boss_slain_3.title=冰雪诅咒

View File

@ -523,4 +523,6 @@ ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x67=-V0.6.2-Beta2\n1.修复提灯,
ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x68=-V0.6.2-Beta3\n1.修复嗜血荆棘的一些错误\n2.修复快捷栏在遗物状态下仍然可以使用的Bug
ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x69=-V0.6.2-Beta4\n1.修复快捷栏的初始配置问题\n2.修复徽章的一些错误\n3.矫正部分错误文案
//ui.changelist.mlpd.vm0_5_x_changes.xxx//

View File

@ -1072,7 +1072,7 @@ public class Badges {
if (global.contains( badge )) {
if (!badge.meta) {
GLog.h( Messages.get(Badges.class, "endorsed", badge.desc()) );
GLog.h( Messages.get(Badges.class, "endorsed", badge.title()) );
}
} else {
@ -1081,9 +1081,9 @@ public class Badges {
saveNeeded = true;
if (badge.meta) {
GLog.h( Messages.get(Badges.class, "new_super", badge.desc()) );
GLog.h( Messages.get(Badges.class, "new_super", badge.title()) );
} else {
GLog.h( Messages.get(Badges.class, "new", badge.desc()) );
GLog.h( Messages.get(Badges.class, "new", badge.title()) );
}
PixelScene.showBadge( badge );
}

View File

@ -114,4 +114,10 @@ public class Invisibility extends FlavourBuff {
public String toString() {
return Messages.get(this, "name");
}
@Override
public String desc() {
return Messages.get(this, "desc", dispTurns());
}
}

View File

@ -135,7 +135,7 @@ public enum HeroClass {
}
public void initHero( Hero hero ) {
//new WraithAmulet().quantity(1).identify().collect();
if (Dungeon.isChallenged(Challenges.RLPT)) {
new Ankh().quantity(1).identify().collect();
}
@ -166,6 +166,7 @@ public enum HeroClass {
new MysteryMeat().quantity(100).identify().collect();
Buff.affect(hero, ChampionHero.AntiMagic.class, 50000f);
//new WraithAmulet().quantity(1).identify().collect();
new BloodthirstyThorn().quantity(1).identify().collect();

View File

@ -44,6 +44,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.ChaliceOfBlood;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.SandalsOfNature;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.TimekeepersHourglass;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.WraithAmulet;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.BlizzardBrew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.Brew;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.CausticBrew;
@ -362,7 +363,7 @@ public class RedDragon extends NPC {
Item item = randomArtifact();
if(item != null) {
switch (Random.Int(6)){
switch (Random.NormalIntRange(1,7)){
case 1:
armor = new CapeOfThorns(); break;
case 2:
@ -375,6 +376,8 @@ public class RedDragon extends NPC {
armor = new SandalsOfNature(); break;
case 6:
armor = new TimekeepersHourglass(); break;
case 7:
armor = new WraithAmulet(); break;
}
} else {
switch (Random.chances(new float[]{0, 0, 10, 6, 3, 1})){

View File

@ -43,6 +43,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.SandalsOfNature;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.TalismanOfForesight;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.TimekeepersHourglass;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.UnstableSpellbook;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.WraithAmulet;
import com.shatteredpixel.shatteredpixeldungeon.items.food.Food;
import com.shatteredpixel.shatteredpixeldungeon.items.food.MysteryMeat;
import com.shatteredpixel.shatteredpixeldungeon.items.food.Pasty;
@ -491,9 +492,10 @@ public class Generator {
AlchemistsToolkit.class,
DriedRose.class,
LloydsBeacon.class,
EtherealChains.class
EtherealChains.class,
WraithAmulet.class,
};
ARTIFACT.defaultProbs = new float[]{ 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1};
ARTIFACT.defaultProbs = new float[]{ 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1,1};
ARTIFACT.probs = ARTIFACT.defaultProbs.clone();
}
}

View File

@ -1,41 +1,54 @@
package com.shatteredpixel.shatteredpixeldungeon.items.artifacts;
import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.NPC;
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportation;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.CellSelector;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
import com.shatteredpixel.shatteredpixeldungeon.ui.QuickSlotButton;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.watabou.utils.Bundle;
import com.watabou.utils.Random;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Objects;
public class WraithAmulet extends Artifact {
{
image = ItemSpriteSheet.WRALIPS;
cooldown = 0;
charge = Math.min(level()+3, 10);
charge = Math.min(level()+1, 10);
partialCharge = 0;
chargeCap = Math.min(level()+3, 10);
chargeCap = Math.min(level()+1, 10);
level = 0;
levelCap = 10;
defaultAction = AC_GHOST;
}
@Override
public boolean doEquip(Hero hero) {
if (super.doEquip(hero)){
if (cursed) {
Buff.affect(hero, CursedAmulet.class).set( (100), 1 );
}
return true;
} else {
return false;
}
}
private static final String AC_GHOST = "ghost";
private static final String AC_ASSASSINATE = "darkkill";
@ -55,16 +68,16 @@ public class WraithAmulet extends Artifact {
@Override
public void execute(Hero hero, String action) {
super.execute(hero, action);
if(action.equals(AC_GHOST)){
if(action.equals(AC_GHOST) && !cursed){
if (cooldown > 0) {
GLog.i(Messages.get(this,"cooddown"));
GLog.w(Messages.get(this,"cooddown"));
} else if(useableBasic()) {
if(this.isEquipped(Dungeon.hero)){
if(this.charge > 0) {
exp += 5;
Buff.affect(Dungeon.hero, Invisibility.class, Invisibility.DURATION);
GLog.i(Messages.get(this,"ghost"));
cooldown = 12 - (level / 2);
GLog.p(Messages.get(this,"ghost"));
cooldown = 34 - (level / 2);
charge--;
} else {
GLog.i(Messages.get(this,"nochareup"));
@ -73,15 +86,16 @@ public class WraithAmulet extends Artifact {
GLog.i(Messages.get(this,"noequip"));
}
} else {
GLog.i(Messages.get(this,"whoareyou"));
GLog.n(Messages.get(this,"whoareyou"));
}
} else if (action.equals(AC_ASSASSINATE)) {
} else if (action.equals(AC_ASSASSINATE) && !cursed) {
if(this.charge >= 5){
GameScene.selectCell(porter);
charge-=5;
} else {
GLog.i(Messages.get(this,"nochareup"));
}
} else if(cursed) {
GLog.i(Messages.get(this,"must_nocursed"));
}
}
@ -89,16 +103,12 @@ public class WraithAmulet extends Artifact {
return true;
}
protected boolean useable(){
return true;
}
@Override
public ArrayList<String> actions(Hero hero) {
ArrayList<String> actions = super.actions(hero);
if (isEquipped(hero))
if (isEquipped(hero) && !cursed)
actions.add(AC_GHOST);
if (isEquipped(hero) && charge >= 7)
if (isEquipped(hero) && charge >= 7 && !cursed)
actions.add(AC_ASSASSINATE);
return actions;
}
@ -111,6 +121,7 @@ public class WraithAmulet extends Artifact {
public class WraithRecharge extends ArtifactBuff{
@Override
public boolean act() {
if (charge < chargeCap && !cursed && useableBasic()) {
partialCharge += 1 / (150f - (chargeCap - charge) * 15f);
@ -123,9 +134,14 @@ public class WraithAmulet extends Artifact {
}
}
} else if(cursed){
if(Random.Int(40) == 0){
GLog.i(Messages.get(this,"cursed"));
int level = level() == 0 ? 1 : level();
hero.sprite.showStatus(CharSprite.NEGATIVE, Messages.get(this,"cursed"));
hero.damage(Random.Int(4*level, 6*level), this);
if (!hero.isAlive()) {
Dungeon.fail(getClass());
GLog.n(Messages.get(this, "ondeath"));
}
spend(90f);
}
if(exp > level * 50){
@ -151,7 +167,16 @@ public class WraithAmulet extends Artifact {
@Override
public String desc() {
return Messages.get(this, "desc");
String result = Messages.get(this, "desc");
if (isEquipped(Dungeon.hero)) {
if (cursed) {
Buff.affect(hero, CursedAmulet.class).set( (100), 1 );
result += "\n\n" + Messages.get(this, "cursed");
}
}
return result;
}
public int getCharge(){
return this.charge;
@ -163,35 +188,130 @@ public class WraithAmulet extends Artifact {
}
@Override
public void onSelect(Integer target) {
HashSet<Mob> victim = new HashSet<Mob>();
if (target != null ) {
if (target == curUser.pos) {
GLog.i(Messages.get(this,"select"));
GLog.i(Messages.get(this, "select"));
return;
}
QuickSlotButton.target(Actor.findChar(target));
if(Actor.findChar(target) != null){
if(Level.distancex(Dungeon.hero.pos, target) == 1) {
Char enemy = Actor.findChar(target);
if (enemy != null && !(enemy instanceof NPC)) {
if (hero.rooted || Dungeon.level.distance(hero.pos, target) < 3) {
final WraithAmulet amulet = (WraithAmulet) Item.curItem;
amulet.charge--;
amulet.exp += 10;
Objects.requireNonNull(Actor.findChar(target)).damage(Objects.requireNonNull(Actor.findChar(target)).HT, WraithAmulet.class);
Dungeon.hero.pos = target;
Dungeon.hero.sprite.emitter().start(ShadowParticle.UP, 0.05f, 10);
ScrollOfTeleportation.appear(Dungeon.hero, target);
hero.pos = target;
if (enemy.properties().contains(Char.Property.BOSS)) {
enemy.damage(enemy.HT / 2, WraithAmulet.class);
GLog.i(Messages.get(this, "killboss"));
} else {
enemy.damage(enemy.HT * 4, WraithAmulet.class);
GLog.i(Messages.get(this, "killmobs"));
}
hero.sprite.emitter().start(ShadowParticle.UP, 0.05f, 10);
ScrollOfTeleportation.appear(hero, target);
Dungeon.observe();
GLog.i(Messages.get(this,"killmobs"));
}
} else {
GLog.i(Messages.get(this,"far"));
amulet.charge -= 5;
} else if(Dungeon.level.distance(hero.pos, target) < 3) {
GLog.i(Messages.get(this, "far"));
} else if (hero.rooted) {
GLog.i(Messages.get(this, "rooted"));
}
} else {
GLog.i(Messages.get(this,"notthere"));
GLog.i(Messages.get(this, "notthere"));
}
}
}
};
public static class CursedAmulet extends Buff {
{
type = buffType.POSITIVE;
}
public static int level = 0;
private int interval = 1;
@Override
public boolean act() {
if (target.isAlive()) {
spend(interval);
if (level <= 0) {
detach();
}
}
return true;
}
public int level() {
return level;
}
public void set( int value, int time ) {
//decide whether to override, preferring high value + low interval
if (Math.sqrt(interval)*level <= Math.sqrt(time)*value) {
level = value;
interval = time;
spend(time - cooldown() - 1);
}
}
@Override
public float iconFadePercent() {
if (target instanceof Hero){
float max = ((Hero) target).lvl;
return Math.max(0, (max-level)/max);
}
return 0;
}
@Override
public String toString() {
return Messages.get(this, "name");
}
@Override
public String desc() {
return Messages.get(this, "desc", level, dispTurns(visualcooldown()));
}
private static final String LEVEL = "level";
private static final String INTERVAL = "interval";
@Override
public void storeInBundle( Bundle bundle ) {
super.storeInBundle( bundle );
bundle.put( INTERVAL, interval );
bundle.put( LEVEL, level );
}
@Override
public void restoreFromBundle( Bundle bundle ) {
super.restoreFromBundle( bundle );
interval = bundle.getInt( INTERVAL );
level = bundle.getInt( LEVEL );
}
// @Override
// public void tintIcon(Image icon) {
// icon.hardlight(0x990000);
// }
@Override
public int icon() {
return BuffIndicator.BLESS;
}
}
}

View File

@ -35,6 +35,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.ItemStatusHandler;
import com.shatteredpixel.shatteredpixeldungeon.items.Recipe;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.WraithAmulet;
import com.shatteredpixel.shatteredpixeldungeon.items.bags.Bag;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfHoneyedHealing;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.ExoticPotion;
@ -236,7 +237,9 @@ public class Potion extends Item {
} else if (action.equals( AC_DRINK )) {
if (isKnown() && mustThrowPots.contains(getClass())) {
if(Dungeon.hero.buff(WraithAmulet.CursedAmulet.class) != null) {
GLog.n(Messages.get(WraithAmulet.class, "drink_cursed"));
} else if (isKnown() && mustThrowPots.contains(getClass())) {
GameScene.show(
new WndOptions(new ItemSprite(this),

View File

@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.scrolls;
import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Degrade;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Belongings;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
@ -31,6 +32,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle
import com.shatteredpixel.shatteredpixeldungeon.items.EquipableItem;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.WraithAmulet;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.EndingBlade;
@ -95,7 +97,11 @@ public class ScrollOfRemoveCurse extends InventoryScroll {
for (Item item : items) {
if (item != null) {
item.cursedKnown = true;
if (item instanceof EndingBlade) {
if (item instanceof WraithAmulet) {
Buff.detach(hero, WraithAmulet.CursedAmulet.class);
procced = true;
item.cursed = false;
} else if (item instanceof EndingBlade) {
item.cursed = true;
} else {
if (item.cursed) {

View File

@ -34,6 +34,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.armor.RogueArmor;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.ScaleArmor;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.WarriorArmor;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.AlchemistsToolkit;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.CapeOfThorns;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.ChaliceOfBlood;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.CloakOfShadows;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose;
@ -44,6 +45,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.SandalsOfNature;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.TalismanOfForesight;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.TimekeepersHourglass;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.UnstableSpellbook;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.WraithAmulet;
import com.shatteredpixel.shatteredpixeldungeon.items.books.bookslist.BrokenBooks;
import com.shatteredpixel.shatteredpixeldungeon.items.books.bookslist.DeepBloodBooks;
import com.shatteredpixel.shatteredpixeldungeon.items.books.bookslist.GrassKingBooks;
@ -260,7 +262,8 @@ public enum Catalog {
RINGS.seen.put( RingOfWealth.class, false);
ARTIFACTS.seen.put( AlchemistsToolkit.class, false);
//ARTIFACTS.seen.put( CapeOfThorns.class, false);
ARTIFACTS.seen.put( CapeOfThorns.class, false);
ARTIFACTS.seen.put( WraithAmulet.class, false);
ARTIFACTS.seen.put( ChaliceOfBlood.class, false);
ARTIFACTS.seen.put( CloakOfShadows.class, false);
ARTIFACTS.seen.put( DriedRose.class, false);

View File

@ -248,7 +248,7 @@ public abstract class Level implements Bundlable {
int ay = a / getWidth();
int bx = b % getWidth();
int by = b / getWidth();
return Math.max(Math.abs(ax - bx), Math.abs(ay - by));
return Math.max( Math.abs( ax - bx ), Math.abs( ay - by ) );
}
public static final int WIDTHX = 48;

View File

@ -232,30 +232,7 @@ public class Toolbar extends Component {
*/
float wMin = Game.width / PixelScene.MIN_WIDTH_FULL;
float hMin = Game.height / PixelScene.MIN_HEIGHT_FULL;
final int maxHorizontalQuickslots =
/** 中文
* 如果是竖屏那么最多显示12个快捷栏
* 如果是竖屏且>=5x缩放那么下方最多显示4个快捷栏
* 如果是竖屏且>=4x缩放那么下方最多显示5个快捷栏
* 如果是竖屏且>=3x缩放那么下方最多显示8个快捷栏
* 如果是横屏那么所有快捷栏在游戏界面底部生成布局
*/
/**English
//If it is a vertical screen, then at most 12 quick slots are displayed below
//If it is a vertical screen and >=5x zoom, then at most 4 quick slots are displayed below
//If it is a vertical screen and >=4x zoom, then at most 5 quick slots are displayed below
//If it is a vertical screen and >=3x zoom, then at most 8 quick slots are displayed below
//If it is a horizontal screen, then all quick slots are generated at the bottom of the game interface
*/
PixelScene.landscape() ? 12 :
SPDSettings.scale() >= 5 ? 4 :
SPDSettings.scale() >= 4 ? 5 :
SPDSettings.scale() >= 3 ? 8 : 12;
final int maxHorizontalQuickslots = PixelScene.landscape() ? 8 : 4;
float right = width;
if (SPDSettings.interfaceSize() > 0){
btnInventory.setPos(right - btnInventory.width(), y);

View File

@ -51,6 +51,7 @@ import java.util.ArrayList;
public class vM0_6_7_X_Changes {
public static void addAllChanges(ArrayList<ChangeInfo> changeInfos) {
add_v0_6_40_Changes(changeInfos);
add_v0_6_39_Changes(changeInfos);
add_v0_6_38_Changes(changeInfos);
add_v0_6_37_Changes(changeInfos);
@ -93,6 +94,31 @@ public class vM0_6_7_X_Changes {
add_v0_6_0_Changes(changeInfos);
}
public static void add_v0_6_40_Changes( ArrayList<ChangeInfo> changeInfos ) {
ChangeInfo changes = new ChangeInfo("v0.6.2.0-Beta4", 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.WRALIPS), "新神器:暗金宝石护符",
"曾经是一位与你一样是一名冒险家的少女的护身符,而如今已是物是人非。"));
changes = new ChangeInfo("改动", false, null);
changes.hardlight(Window.CYELLOW);
changeInfos.add(changes);
changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("徽章改进"),
("修复了徽章的一些错误。")));
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_06X69")));
}
public static void add_v0_6_39_Changes( ArrayList<ChangeInfo> changeInfos ) {
ChangeInfo changes = new ChangeInfo("v0.6.2.0-Beta3", true, "");

View File

@ -665,7 +665,7 @@ public class WndSettings extends WndTabbed {
if (width > 200){
ClassUI.setRect(0, bottom, width, SLIDER_HEIGHT);
optSplashScreen.setRect(0, ClassUI.bottom() + GAP, width, SLIDER_HEIGHT);
optFPSLimit.setRect(0, optSplashScreen.bottom() + GAP, width, SLIDER_HEIGHT);
optFPSLimit.setRect(0, optSplashScreen.bottom() + GAP, width/2, SLIDER_HEIGHT);
if(Game.scene()!=null && Game.scene().getClass() == GameScene.class) {
quickslots.setRect(optFPSLimit.right(), optFPSLimit.top(), width/2, SLIDER_HEIGHT);
wxts.visible = false;