Update: 更新0.6.1.0-Beta5.1

This commit is contained in:
LingASDJ 2023-04-21 18:56:37 +08:00
parent 3054a4ba5b
commit f943f39427
26 changed files with 604 additions and 65 deletions

View File

@ -412,7 +412,7 @@ actors.buffs.championhero$giant.desc=无畏祝福拥有 75% 的伤害减免。\n
actors.buffs.championhero$blessed.name=天佑祝福
actors.buffs.championhero$blessed.desc=天佑祝福拥有 200% 额外精准与躲避。\n\n剩余回合时长
actors.buffs.championhero$growing.name=英雄祝福
actors.buffs.championhero$growing.desc=英雄祝福拥有额外精准、躲避、近战伤害与伤害减免。\n\n当前精准、躲避、近战伤害加成:%1$d%%\n当前伤害减免:%2$d%%\n\n剩余回合时长
actors.buffs.championhero$growing.desc=英雄祝福拥有额外精准、躲避、近战伤害与伤害减免。\n\n精准、躲避、近战伤害加成:%1$d%%\n伤害减免%2$d%%\n\n剩余回合时长
actors.mobs.dimandking.name=钻石宝箱王
actors.mobs.dimandking.notice=翼绫?是你?不,你不是翼绫!你为何前来?

View File

@ -151,9 +151,25 @@ items.weapon.melee.washcrime$diedghost.name=未安息的亡魂
items.weapon.melee.washcrime$diedghost.desc=肉身已然逝去,灵魂尚未得到安息,脑海遵照主人的意愿,直到真正的死亡降临。
items.weapon.melee.bloodthirstythorn.name=嗜血荆棘
items.weapon.melee.bloodthirstythorn.desc=浸染鲜血的倒悬之树。舍弃了仅存的秩序,独留狂暴与混乱。\n-攻击时有概率给敌人施加Γ流血和恐惧Γ效果。\n-特性该武器拥有与蓄血圣杯相同的升级方式最高等级10级。等级+3前每次攻击有概率扣除使用者2点生命值并施加流血效果。等级+5及以后时攻击距离增加一格并移除其负面影响。在10级时每次攻击将恢复造成伤害的一定比列的生命值。\n_-这是一把十分精准的武器_
items.weapon.melee.bloodthirstythorn.stats_desc=这株植物已经汲取了Γ你的生命精华Γ并滋养长大现在它的攻击范围扩大一格精准度提高_20%_。
items.weapon.melee.bloodthirstythorn.stats_descx=\n\n你的Γ生命精华Γ让这株植物再次变得茁壮现在它会在_每次攻击敌人_时汲取一定的数值回馈给你。
items.weapon.melee.bloodthirstythorn.desc=鲜血腐蚀所残留的倒悬树之刺。舍弃了仅存的秩序,独留狂暴与混乱。\n-攻击时有概率给敌人施加Γ流血和恐惧Γ效果。\n-特性:升级机制与蓄血圣杯相同\n_+3_前攻击将概率流失自身2点生命值并刺伤自己\n_+5_时取消负面影响攻击距离+1+20%精准\n_+10_时每次有效攻击将汲取一定生命力回馈给自身\n_这是一把十分精准的武器_
items.weapon.melee.bloodthirstythorn.stats_desc=这株植物不再抗拒你,并且发生了一些变化
items.weapon.melee.bloodthirstythorn.stats_descx=\n\n这株植物成长到了极限或许会通过某种方式给予回馈
items.weapon.melee.bloodthirstythorn.good=你的生命精华已经完全浸染吾等作为尔等忠诚的报答你会获得一个Γ诅咒但含有1~3等级的圣杯Γ作为补偿。
items.weapon.melee.bloodthirstythorn.ac_prick=血祭
items.weapon.melee.bloodthirstythorn.yes=是的,我知道我在做什么
items.weapon.melee.bloodthirstythorn.no=不,我改主意了
items.weapon.melee.bloodthirstythorn.prick_warn=每次使用血祭都会消耗更多的生命能量,要是不够小心,这种行为可以轻易地杀死你。\n\n你确定要给它更多的生命能量吗
items.weapon.melee.bloodthirstythorn.onprick=你刺破了自己的手指,你的生命精华流入了这株噩梦般的荆棘植物中。
items.weapon.melee.bloodthirstythorn.ondeath=这株噩梦般的植物将你的生命精华吸噬殆尽了…
items.weapon.melee.magictorch.name=魔法火把
items.weapon.melee.magictorch.desc=呲.嘶...呲...,灰色水晶上燃起的熊熊烈焰,似乎没有要熄灭的意思\n-命中时必定给目标施加燃烧,并给持有者永久的照明效果\n_-这把武器无法用于偷袭_
items.weapon.melee.magictorch$magiclight.name=魔法光源
items.weapon.melee.magictorch$magiclight.desc=来自于魔法火把中提供的永久光源可以提供普通光亮的2/3范围。更能缓慢恢复地牢中的寒冷值。
#MLPDSTOREYBOOKS
@ -212,7 +228,7 @@ items.books.bookslist.brokenbooks.desc=上面沾染了水渍与污垢,鲜红
items.books.bookslist.brokenbooks.author=--作者:_不详_
items.books.bookslist.brokenbooks.ac_read=阅读书籍
items.books.bookslist.brokenbooks.blees=你阅读了书籍,一股力量油然而生!
items.books.bookslist.brokenbooks.anmazing=你解读书中的奥秘,你领悟到了成长的力量!
items.books.bookslist.brokenbooks.anmazing=你解读书中的奥秘,你领悟到了英雄的力量!
items.books.bookslist.magicgirlbooks.name=《镶着金边的魔女手记》
items.books.bookslist.magicgirlbooks.desc=(前面的几页似乎是被撕掉了)……这是大火后的第三天,我像往常一样推开了窗户。\n\n瘴气似的魔力涌入房间没办法……我无法对抗它……\n\n在我被这股魔力吞噬殆尽之前在它占据我的身体之前我得准备好一些能与之抗衡的东西……\n\n仇恨密谋计划灾厄正在降临。最后这几个字的笔迹似乎变成了另一个人的\n\n_若要记录在书架里面请先鉴定
@ -1916,6 +1932,7 @@ items.weapon.melee.roundshield.desc=这个大盾可以有效格挡攻击,在
items.weapon.melee.sai.name=吸血鬼刀
items.weapon.melee.sai.stats_desc=这是一套非常快的武器,且能在攻击过程中得到一定的治疗值,甚至能超过英雄本身的血量。不幸的是,这个武器的精准十分的差。
items.weapon.melee.sai.desc=泛红的剑身表示着它并不是普通人能使用的武器,这件武器在快速斩击方面十分出色,在精准方面略微逊色。
items.weapon.melee.sai.attacker=迅猛一击,回血成功!
items.weapon.melee.scimitar.name=弯刀
items.weapon.melee.scimitar.stats_desc=这是一把比较快的武器。

View File

@ -40,7 +40,7 @@ journal.document.alchemy_guide.exotic_scrolls.body=将一张卷轴与一些炼
journal.document.alchemy_guide.bombs.title=改造炸弹
journal.document.alchemy_guide.bombs.body=一个标准的黑火药炸弹可以与一个特定的物品共炼来制作一个强化炸弹。
journal.document.alchemy_guide.weapons.title=强化武器
journal.document.alchemy_guide.weapons.body=投掷武器与法杖也可参与到炼金反应当中!\n\n每个投掷物可以融化为一定量的液金足以完全修复阶级与等级一样的单件投掷物。\n\n法杖可以裂解为一定量的奥术聚酯足以升级两把同等级的法杖。不可通过此方法将法杖升级至+3以上。\n\n通过注入击败Boss的战利品可以获得更加高阶的法杖并且每个高阶法杖都有至少+2的保底最高+4,优先使用0级法杖如果已经有等级,请手动放入炼金釜中。
journal.document.alchemy_guide.weapons.body=投掷武器与法杖也可参与到炼金反应当中!\n\n每个投掷物可以融化为一定量的液金足以完全修复阶级与等级一样的单件投掷物。\n\n法杖可以裂解为一定量的奥术聚酯足以升级两把同等级的法杖。不可通过此方法将法杖升级至+3以上。\n\n通过注入击败Boss的战利品可以获得更加高阶的法杖并且每个高阶法杖都有至少+2的保底最高+4,优先使用0级法杖如果物品已经有等级,请手动放入炼金釜中。
journal.document.alchemy_guide.catalysts.title=炼制催化剂
journal.document.alchemy_guide.catalysts.body=催化剂可以用一张卷轴或一瓶药水与一个种子或一个符石制得。如果原料较为匹配,将不会消耗炼金能量。\n\n催化剂的主要用处是在接下来两页的配方中充当炼金原料不过也可以直接使用以获取一种随机效果。
journal.document.alchemy_guide.brews_elixirs.title=炼制魔药与秘药

View File

@ -503,5 +503,6 @@ ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x55=-V0.6.1-Beta4.9\n1.修复一些
ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x58=-V0.6.1-Beta5\n1.修复FlameC02的越界错误\n2.修复浊焰魔女被秒杀的Bug\n3.修复一些细小错误
ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x59=-V0.6.1-Beta5.1\n1.修复英雄祝福的错误给予回合\n2.修复经验为负的特殊情况\n-修复少量错误崩溃
//ui.changelist.mlpd.vm0_5_x_changes.xxx//

View File

@ -255,11 +255,11 @@ public abstract class ChampionHero extends FlavourBuff {
//
}
private float multiplier = 1.15f;
private float multiplier = 1.85f;
@Override
public boolean act() {
//detach();
detach();
multiplier += 0.5f;
spend(3*TICK);
return true;

View File

@ -4,6 +4,7 @@ import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagicTorch;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
@ -37,7 +38,7 @@ public class IceHpBuff extends Buff implements Hero.Doom {
spend(STEP);
return true;
//燃起来了
}else if(this.target.buff(HalomethaneBurning.class) != null || this.target.buff(Burning.class) != null){
}else if((this.target.buff(HalomethaneBurning.class) != null || this.target.buff(Burning.class) != null || this.target.buff(MagicTorch.MagicLight.class) != null) && Dungeon.depth <= 5){
hero.healIcehp(1);
spend(10f);
return true;

View File

@ -52,6 +52,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.TengusMask;
import com.shatteredpixel.shatteredpixeldungeon.items.Waterskin;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClothArmor;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.ChaliceOfBlood;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.CloakOfShadows;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.EtherealChains;
@ -64,7 +65,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.bags.KingBag;
import com.shatteredpixel.shatteredpixeldungeon.items.bags.VelvetPouch;
import com.shatteredpixel.shatteredpixeldungeon.items.books.bookslist.BrokenBooks;
import com.shatteredpixel.shatteredpixeldungeon.items.books.bookslist.DeepBloodBooks;
import com.shatteredpixel.shatteredpixeldungeon.items.books.bookslist.GrassKingBooks;
import com.shatteredpixel.shatteredpixeldungeon.items.books.bookslist.IceCityBooks;
import com.shatteredpixel.shatteredpixeldungeon.items.books.bookslist.MagicGirlBooks;
import com.shatteredpixel.shatteredpixeldungeon.items.books.bookslist.NoKingMobBooks;
@ -84,7 +84,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfMindVision
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfStrength;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.WaterSoul;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.PotionOfDragonKingBreath;
import com.shatteredpixel.shatteredpixeldungeon.items.quest.GoldBAo;
import com.shatteredpixel.shatteredpixeldungeon.items.quest.MetalShard;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfFlameCursed;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfIdentify;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfLullaby;
@ -113,25 +113,22 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.SpiritBow;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.BloodthirstyThorn;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Dagger;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.EndingBlade;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.FireFishSword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Gauntlet;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Gloves;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.IceFishSword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.LifeTreeSword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.LockSword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagicTorch;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.RedBloodMoon;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.SDBSword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Sai;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.SkyShield;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WarHammer;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WashCrime;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WornShortsword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.ThrowingKnife;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.ThrowingStone;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.Dart;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.plants.AikeLaier;
import com.watabou.utils.Random;
public enum HeroClass {
@ -215,13 +212,13 @@ public enum HeroClass {
new WandOfCorruption().quantity(1).identify().collect();
new MasterThievesArmband().quantity(1).identify().collect();
new Dart().quantity(1).identify().collect();
new MetalShard().quantity(1).identify().collect();
new ChaliceOfBlood().quantity(1).identify().collect();
new LifeTreeSword().quantity(1).identify().collect();
new Sai().quantity(1).identify().collect();
new MagicTorch().quantity(1).identify().collect();
new SkyShield().quantity(1).identify().collect();
new SandalsOfNature().quantity(1).identify().collect();
new GoldBAo().quantity(9999).identify().collect();
new WandOfScale().quantity(1).identify().collect();
new WandOfGodIce().quantity(1).identify().collect();
new PotionOfLightningShiledX().quantity(1).identify().collect();
@ -237,10 +234,6 @@ public enum HeroClass {
new IceCityBooks().quantity(1).identify().collect();
new MagicGirlBooks().quantity(1).identify().collect();
new NoKingMobBooks().quantity(1).identify().collect();
new GrassKingBooks().quantity(100).identify().collect();
new AikeLaier.Seed().quantity(10).identify().collect();
new IceFishSword().quantity(1).identify().collect();
new FireFishSword().quantity(1).identify().collect();
new EndingBlade().quantity(1).identify().collect();
new PotionOfDragonKingBreath().quantity(1).identify().collect();
new ScrollOfRemoveCurse().quantity(100).identify().collect();
@ -270,7 +263,7 @@ public enum HeroClass {
new HerbBag().quantity(1).identify().collect();
new PotionOfHealing().quantity(3).identify().collect();
//Badges.ENDDIED();
new ScrollOfUpgrade().quantity(1).identify().collect();
if (!Challenges.isItemBlocked(i)) i.collect();

View File

@ -2,7 +2,6 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Badges;
import com.shatteredpixel.shatteredpixeldungeon.Conducts;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
import com.shatteredpixel.shatteredpixeldungeon.actors.Boss;
@ -493,10 +492,10 @@ public class DimandKing extends Boss {
@Override
public void die(Object cause) {
if (Dungeon.isDLC(Conducts.Conduct.BOSSRUSH)) {
GetBossLoot();
}
// if (Dungeon.isDLC(Conducts.Conduct.BOSSRUSH)) {
//
// GetBossLoot();
// }
GameScene.bossSlain();
super.die( cause );

View File

@ -43,6 +43,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Gold;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose;
import com.shatteredpixel.shatteredpixeldungeon.items.keys.SkeletonKey;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing;
import com.shatteredpixel.shatteredpixeldungeon.items.quest.MetalShard;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMagicMapping;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfUpgrade;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfBlastWave;
@ -376,6 +377,15 @@ public class MagicGirlDead extends Boss {
GetBossLoot();
}
int shards = Random.chances(new float[]{0, 0, 6, 3, 1});
for (int i = 0; i < shards; i++){
int ofs;
do {
ofs = PathFinder.NEIGHBOURS8[Random.Int(8)];
} while (!Dungeon.level.passable[pos + ofs]);
Dungeon.level.drop( new MetalShard(), pos + ofs ).sprite.drop( pos );
}
yell(Messages.get(this, "die"));
for(Mob m: Dungeon.level.mobs.toArray(new Mob[0])){

View File

@ -356,11 +356,11 @@ public class YogReal extends Boss {
for (Buff buff : hero.buffs()) {
if (buff instanceof RoseShiled) {
buff.detach();
GLog.b("玫瑰结界的创始人是翼绫,你怎么敢用她的技能?/kill @e[type=RoseShiled] enemy!");
//GLog.b("玫瑰结界的创始人是翼绫,你怎么敢用她的技能?/kill @e[type=RoseShiled] enemy!");
}
if (buff instanceof HaloFireImBlue ||buff instanceof FireImbue) {
buff.detach();
GLog.b("你想免疫火的伤害?在我这里,没有可能!/kill @e[type=FireImbue=All] enemy!");
//GLog.b("你想免疫火的伤害?在我这里,没有可能!/kill @e[type=FireImbue=All] enemy!");
}
}
//char logic

View File

@ -0,0 +1,59 @@
package com.shatteredpixel.shatteredpixeldungeon.effects.particles;
import com.watabou.noosa.particles.Emitter;
import com.watabou.noosa.particles.PixelParticle;
import com.watabou.utils.PointF;
public class MagicFlameParticle extends PixelParticle.Shrinking {
public static final Emitter.Factory FACTORY = new Emitter.Factory() {
@Override
public void emit( Emitter emitter, int index, float x, float y ) {
((FlameParticle)emitter.recycle( FlameParticle.class )).reset( x, y );
}
@Override
public boolean lightMode() {
return true;
}
};
public MagicFlameParticle() {
super();
color( 0xEE7722 );
lifespan = 0.6f;
revive();
left = lifespan;
super.speed.set(speed);
super.speed.scale( size );
scale.set( 1.3f );
this.x = x - super.speed.x * lifespan / 2;
this.y = y - super.speed.y * lifespan / 2;
angle = 0.25F;
angularSpeed=60;
speed = (new PointF()).polar(angle, 16.0F);
am=0;
acc.set( 0, -80 );
}
public void reset( float x, float y ) {
revive();
this.x = x;
this.y = y;
left = lifespan;
size = 4;
speed.set( 0 );
}
@Override
public void update() {
super.update();
float p = left / lifespan;
am = p > 0.8f ? (1 - p) * 5 : 1;
}
}

View File

@ -133,6 +133,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.LockSword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Longsword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Mace;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagicTorch;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MeleeWeapon;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Quarterstaff;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.RoundShield;
@ -144,7 +145,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.SkyShield;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Spear;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Sword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WarHammer;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WashCrime;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Whip;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WornShortsword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Bolas;
@ -373,10 +373,11 @@ public class Generator {
Whip.class,
SkyShield.class,
Dairikyan.class,
MagicTorch.class,
GreenSword.class,
};
WEP_T3.probs = new float[]{ 1, 5, 5, 4, 0, 4 ,3,8,0,0};
WEP_T3.probs = new float[]{ 1, 5, 5, 4, 0, 4 ,3,5,3,6,0};
WEP_T4.classes = new Class<?>[]{
Longsword.class,
@ -395,11 +396,10 @@ public class Generator {
WarHammer.class,
Glaive.class,
Greataxe.class,
Greatshield.class,
WashCrime.class
Greatshield.class
};
WEP_T5.probs = new float[]{ 6, 5, 5, 4, 4, 4,3 };
WEP_T5.probs = new float[]{ 6, 5, 5, 4, 4, 4};
WEP_T6.classes = new Class<?>[]{
IceFishSword.class,

View File

@ -74,7 +74,9 @@ public class Item implements Bundlable {
public boolean stackable = false;
public int flasks;
protected int quantity = 1;
protected int quantity = 1;
public boolean dropsDownHeap = false;
public int level = 0;

View File

@ -21,7 +21,10 @@
package com.shatteredpixel.shatteredpixeldungeon.items;
import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.ChaliceOfBlood;
import com.shatteredpixel.shatteredpixeldungeon.items.bombs.Bomb;
import com.shatteredpixel.shatteredpixeldungeon.items.food.Blandfruit;
import com.shatteredpixel.shatteredpixeldungeon.items.food.LightFood;
@ -63,7 +66,9 @@ import com.shatteredpixel.shatteredpixeldungeon.items.spells.WildEnergy;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfBlueFuck;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.hightwand.WandOfHightHunderStorm;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.BloodthirstyThorn;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.IceFishSword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.LifeTreeSword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon;
import com.watabou.utils.Reflection;
@ -174,7 +179,7 @@ public abstract class Recipe {
//*******
private static Recipe[] variableRecipes = new Recipe[]{
new LiquidMetal.Recipe()
new LiquidMetal.Recipe(),
};
private static Recipe[] oneIngredientRecipes = new Recipe[]{
@ -228,9 +233,8 @@ public abstract class Recipe {
new WandOfBlueFuck.Recipe(),
new IceFishSword.Recipe(),
new LightFood.Recipe(),
new WandOfHightHunderStorm.Recipe()
//TODO 未来加入
//new ScrollOfFlameCursed.Recipe(),
new WandOfHightHunderStorm.Recipe(),
new BloodthirstyThorn.Recipe(),
};
public static ArrayList<Recipe> findRecipes(ArrayList<Item> ingredients){
@ -271,7 +275,7 @@ public abstract class Recipe {
public static boolean usableInRecipe(Item item){
if (item instanceof EquipableItem){
//only thrown weapons and wands allowed among equipment items
return item.isIdentified() && !item.cursed && item instanceof MissileWeapon;
return item.isIdentified() && !item.cursed && (item instanceof MissileWeapon||item instanceof ChaliceOfBlood && !item.isEquipped(hero)||item instanceof LifeTreeSword && !item.isEquipped(hero));
} else if (item instanceof Wand) {
return item.isIdentified() && !item.cursed;
} else {

View File

@ -21,6 +21,8 @@
package com.shatteredpixel.shatteredpixeldungeon.items.artifacts;
import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.RoseShiled;
@ -42,6 +44,24 @@ import java.util.ArrayList;
public class ChaliceOfBlood extends Artifact {
public static class PlaceHolder extends ChaliceOfBlood {
{
image = ItemSpriteSheet.ARTIFACT_CHALICE3;
}
@Override
public boolean isSimilar(Item item) {
return item instanceof ChaliceOfBlood && !item.isEquipped(hero);
}
@Override
public String info() {
return "注意:蓄血圣杯必须是未装备的才能参与炼金";
}
}
{
image = ItemSpriteSheet.ARTIFACT_CHALICE1;

View File

@ -31,7 +31,7 @@ public class BrokenBooks extends Books {
GLog.b( Messages.get(this, "blees") );
break;
case 3: case 4: case 5:
Buff.affect(hero, ChampionHero.Growing.class, ChampionHero.DURATION);
Buff.affect(hero, ChampionHero.Growing.class, 275f);
detach( hero.belongings.backpack );
GLog.b( Messages.get(this, "anmazing") );
break;

View File

@ -3,16 +3,35 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee;
import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Bleeding;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.RoseShiled;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.ChaliceOfBlood;
import com.shatteredpixel.shatteredpixeldungeon.items.quest.MetalShard;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfLivingEarth;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.plants.Earthroot;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndMessage;
import com.shatteredpixel.shatteredpixeldungeon.windows.WndOptions;
import com.watabou.noosa.Game;
import com.watabou.noosa.audio.Sample;
import com.watabou.utils.Bundle;
import com.watabou.utils.Random;
import java.util.ArrayList;
public class BloodthirstyThorn extends MeleeWeapon {
{
@ -22,6 +41,182 @@ public class BloodthirstyThorn extends MeleeWeapon {
ACC = 1.75f;
RCH=1;
tier=6;
}
public int levelCap = 10;
@Override
public boolean isUpgradable() {
return false;
}
public static final String AC_PRICK = "PRICK";
@Override
public ArrayList<String> actions( Hero hero ) {
ArrayList<String> actions = super.actions( hero );
if (isEquipped( hero ) && level() < levelCap && !cursed && !hero.isInvulnerable(getClass())&& hero.buff(RoseShiled.class) == null)
actions.add(AC_PRICK);
return actions;
}
@Override
public void execute(Hero hero, String action ) {
super.execute(hero, action);
if (action.equals(AC_PRICK)){
int damage = 3*(level()*level());
if (damage > hero.HP*0.75) {
GameScene.show(
new WndOptions(new ItemSprite(this),
Messages.titleCase(name()),
Messages.get(this, "prick_warn"),
Messages.get(this, "yes"),
Messages.get(this, "no")) {
@Override
protected void onSelect(int index) {
if (index == 0)
prick(Dungeon.hero);
}
}
);
} else {
prick(hero);
}
}
}
private void prick(Hero hero){
int damage = 3*(level()*level());
Earthroot.Armor armor = hero.buff(Earthroot.Armor.class);
if (armor != null) {
damage = armor.absorb(damage);
}
WandOfLivingEarth.RockArmor rockArmor = hero.buff(WandOfLivingEarth.RockArmor.class);
if (rockArmor != null) {
damage = rockArmor.absorb(damage);
}
damage -= hero.drRoll();
hero.sprite.operate( hero.pos );
hero.busy();
hero.spend(3f);
GLog.w( Messages.get(this, "onprick") );
if (damage <= 0){
damage = 1;
} else {
Sample.INSTANCE.play(Assets.Sounds.CURSED);
hero.sprite.emitter().burst( ShadowParticle.CURSE, 4+(damage/10) );
}
hero.damage(damage, this);
if (!hero.isAlive()) {
Dungeon.fail( getClass() );
GLog.n( Messages.get(this, "ondeath") );
} else {
upgrade();
}
}
/**
*复杂的炼金合成不能使用SimpleRecipe,
* 需要使用Recipe进行完全覆盖写入
*/
public static class Recipe extends com.shatteredpixel.shatteredpixeldungeon.items.Recipe {
/**
* @param ingredients 遍历物品
*/
@Override
public boolean testIngredients(ArrayList<Item> ingredients) {
boolean chice = false;
boolean demoncrystal = false;
boolean dm300ts = false;
for (Item ingredient : ingredients){
if (ingredient.quantity() > 0) {
if (ingredient instanceof ChaliceOfBlood) {
chice = true;
} else if (ingredient instanceof MetalShard) {
demoncrystal = true;
} else if (ingredient instanceof LifeTreeSword) {
dm300ts = true;
}
}
}
return chice && demoncrystal && dm300ts;
}
@Override
public int cost(ArrayList<Item> ingredients) {
return 18;
}
/**
* @param bloodthirstyThorn 读取嗜血荆棘的对象
* @param chaliceOfBlood 读取自己背包中的圣杯
*/
BloodthirstyThorn bloodthirstyThorn = new BloodthirstyThorn();
ChaliceOfBlood chaliceOfBlood = Dungeon.hero.belongings.getItem(ChaliceOfBlood.class);
/**
* @param message 消息弹框控件
*/
public static void message(String message) {
Game.runOnRenderThread(() -> ShatteredPixelDungeon.scene().add(new WndMessage(message)));
}
/**
* @param ingredients 数组遍历物品
*/
@Override
public Item brew(ArrayList<Item> ingredients) {
/**
* @param Method brew 输出最终的炼金结果物品
*/
if (!testIngredients(ingredients)) return null;
for (Item ingredient : ingredients){
ingredient.quantity(ingredient.quantity() - 1);
}
//返回圣杯一致的等级
bloodthirstyThorn.level=chaliceOfBlood.level();
bloodthirstyThorn.quantity(1).identify();
chaliceOfBlood.detachAll( hero.belongings.backpack );
if(chaliceOfBlood.level()==10){
ChaliceOfBlood chaliceOfBlood1 = new ChaliceOfBlood();
chaliceOfBlood1.cursed = true;
chaliceOfBlood1.level=Random.NormalIntRange(1,3);
chaliceOfBlood1.identify().quantity(1).collect();
message(Messages.get(BloodthirstyThorn.class,"good"));
}
return sampleOutput(null);
}
@Override
public Item sampleOutput(ArrayList<Item> ingredients) {
/**
* @param sampleOutput 输出炼金结果物品前的预览方法
*/
bloodthirstyThorn.identify();
bloodthirstyThorn.level=chaliceOfBlood.level();
return bloodthirstyThorn;
}
}
@Override
@ -54,7 +249,7 @@ public class BloodthirstyThorn extends MeleeWeapon {
} else if (level() >= 10) {
//吸血为每次伤害/5 例如=50/5=10 Math.min()不超出
attacker.HP += Math.min( attacker.HT, damage/5);
// hero.sprite.showStatus(CharSprite.POSITIVE, ("+" +Math.min( attacker.HT, damage/5) + "HP"));
hero.sprite.showStatus(CharSprite.POSITIVE, ("+" +Math.min( attacker.HT, damage/5) + "HP"));
} else {
getHerodamageHp(hero);
Buff.affect(attacker, Bleeding.class).set(7);
@ -62,8 +257,8 @@ public class BloodthirstyThorn extends MeleeWeapon {
//恐惧和流血
if(level()>=0 && Random.Float()>0.45f){
Buff.affect(defender, Bleeding.class).set(7);
Buff.affect(defender, Terror.class, Terror.DURATION ).object = curUser.id();
Buff.affect(defender, Bleeding.class).set(15+level());
Buff.affect(defender, Terror.class, Terror.DURATION );
}
return super.proc(attacker, defender, damage);
@ -78,6 +273,7 @@ public class BloodthirstyThorn extends MeleeWeapon {
super.image = ItemSpriteSheet.BloodDied;
//在载入存档更新图标的同时更新攻击范围
RCH=2;
ACC = 1.95f;
} else {
super.image = ItemSpriteSheet.BloodDir;
}
@ -92,6 +288,7 @@ public class BloodthirstyThorn extends MeleeWeapon {
//在保存存档更新图标的同时更新攻击范围
super.image = ItemSpriteSheet.BloodDied;
RCH=2;
ACC = 1.95f;
} else {
super.image = ItemSpriteSheet.BloodDir;
}
@ -105,6 +302,7 @@ public class BloodthirstyThorn extends MeleeWeapon {
super.image = ItemSpriteSheet.BloodDied;
//在更新图标的同时更新攻击范围
RCH=2;
ACC = 1.95f;
} else {
super.image = ItemSpriteSheet.BloodDir;
}

View File

@ -21,6 +21,8 @@
package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee;
import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
@ -33,6 +35,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Rat;
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
import com.shatteredpixel.shatteredpixeldungeon.effects.MagicMissile;
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.CellSelector;
@ -256,4 +259,22 @@ public class LifeTreeSword extends MeleeWeapon {
}
}
public static class PlaceHolder extends LifeTreeSword {
{
image = ItemSpriteSheet.LifeTreeSword;
}
@Override
public boolean isSimilar(Item item) {
return item instanceof LifeTreeSword && !item.isEquipped(hero);
}
@Override
public String info() {
return "注意:倒悬的生命树必须是未装备的才能参与炼金";
}
}
}

View File

@ -6,8 +6,16 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Burning;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.MagicFlameParticle;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
import com.watabou.noosa.Image;
import com.watabou.noosa.particles.Emitter;
import com.watabou.utils.Bundle;
/**
@ -22,7 +30,7 @@ public class MagicTorch extends MeleeWeapon {
* @param ACC 命中率
*/ {
image = ItemSpriteSheet.MAGIC_TORCH;
tier = 2;
tier = 3;
ACC = 0.8f;
}
@ -35,7 +43,7 @@ public class MagicTorch extends MeleeWeapon {
@Override
public int max(int lvl) {
return 5 * (tier) + //base
lvl * (tier + 1); //level scaling
lvl * (tier + 2); //level scaling
}
/**
@ -46,7 +54,7 @@ public class MagicTorch extends MeleeWeapon {
*/
@Override
public int STRReq(int lvl) {
return (7 + tier * 2) - (int) (Math.sqrt(8 * lvl + 1) - 1) / 2;
return (6 + tier * 3) - (int) (Math.sqrt(8 * lvl + 1) - 1) / 2;
//19 base strength req, up from 18
}
@ -59,7 +67,8 @@ public class MagicTorch extends MeleeWeapon {
@Override
public void execute(Hero hero, String action) {
super.execute(hero, action);
//当英雄使用魔法火把时给英雄添加一个光环buff光环buff会对周围的敌人造成伤害伤害值为英雄的魔法火把的最大伤害值持续时间为5回合每回合造成一次伤害伤害值为英雄的魔法火把的最大伤害值光环buff的名称为光环
//当英雄使用魔法火把时给英雄添加一个光环buff光环buff会对周围的敌人造成伤害
// 伤害值为英雄的魔法火把的最大伤害值持续时间为5回合每回合造成一次伤害伤害值为英雄的魔法火把的最大伤害值光环buff的名称为光环
if (action.equals(AC_EQUIP)) {
//In addition to equipping itself, item reassigns itself to the quickslot
//This is a special case as the item is being removed from inventory, but is staying with the hero.
@ -69,10 +78,13 @@ public class MagicTorch extends MeleeWeapon {
Dungeon.quickslot.setSlot(slot, this);
updateQuickslot();
}
//Buff.affect(hero, LighS.class);
Buff.affect(hero, MagicLight.class).set( (100), 1 );
} else if (action.equals(AC_UNEQUIP)) {
doUnequip(hero, true);
//Buff.detach(hero, LighS.class);
Buff.detach(hero, MagicLight.class);
} else if (action.equals(AC_THROW)) {
super.doThrow(hero);
Buff.detach(hero, MagicLight.class);
}
}
@ -95,4 +107,144 @@ public class MagicTorch extends MeleeWeapon {
return super.proc(attacker, defender, damage);
}
public static class MagicLight extends FlavourBuff {
/**
* @param target 目标来源
* @param type 类型
* @param DISTANCE 照明范围
* @param act 停止回滚
*/
{
type = buffType.POSITIVE;
}
@Override
public void detach() {
target.viewDistance = Dungeon.level.viewDistance;
Dungeon.observe();
super.detach();
}
public static int level = 0;
private int interval = 1;
public static final int DISTANCE = 4;
@Override
public boolean attachTo( Char target ) {
if (super.attachTo( target )) {
if (Dungeon.level != null) {
target.viewDistance = Math.max( Dungeon.level.viewDistance, DISTANCE );
Dungeon.observe();
}
return true;
} else {
return false;
}
}
@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() {
return 1f;
}
@Override
public String toString() {
return Messages.get(this, "name");
}
@Override
public void fx(boolean on) {
if (on) target.sprite.add(CharSprite.State.ILLUMINATED);
else target.sprite.remove(CharSprite.State.ILLUMINATED);
}
@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(0x808080);
}
@Override
public int icon() {
return BuffIndicator.LIGHT;
}
}
@Override
public Emitter emitter() {
Emitter emitter = new Emitter();
emitter.pos(12.5f, 3);
emitter.fillTarget = false;
emitter.pour(StaffParticleFactory, 0.1f);
return emitter;
}
private final Emitter.Factory StaffParticleFactory = new Emitter.Factory() {
/**
* @param emitter 目标来源
* @param index 特效来源
* @param x,y 位置
*/
@Override
public void emit( Emitter emitter, int index, float x, float y ) {
((MagicFlameParticle)emitter.recycle( MagicFlameParticle.class )).reset( x, y+3 );
}
@Override
public boolean lightMode() {
return true;
}
};
}

View File

@ -21,8 +21,6 @@
package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee;
import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
@ -61,12 +59,12 @@ public class Sai extends MeleeWeapon {
case 5:case 6:case 7:
//角色最大血量*0.1+武器等级*0.5+1.5
//50x0.1+7x0.5+1=10+3.5+1=15
if(hero.HP >= hero.HT){
if(attacker.HP >= attacker.HT){
GLog.p("血量已满!无法回血");
} else {
R = (int) (hero.HT * 0.1 + (buffedLvl() * 0.5) + 1.5);
hero.HP += hero.HT * 0.1 + (buffedLvl()) + 1.5;
hero.sprite.showStatus(CharSprite.POSITIVE, ("+" + R + "HP"));
R = (int) (attacker.HT * 0.1 + (buffedLvl() * 0.5) + 1.5);
attacker.HP +=attacker.HT * 0.1 + (buffedLvl()) + 1.5;
attacker.sprite.showStatus(CharSprite.POSITIVE, ("+" + R + "HP"));
GLog.p("迅猛一击,回血成功!");
}
return super.proc(attacker, defender, damage);

View File

@ -90,6 +90,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportat
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTerror;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTransmutation;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfUpgrade;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ScrollOfRoseShiled;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfBlastWave;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfBlueFuck;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfCorrosion;
@ -108,6 +109,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfTransfusion;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfWarding;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.AssassinsBlade;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.BattleAxe;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.BloodthirstyThorn;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Crossbow;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Dagger;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Dairikyan;
@ -122,10 +124,12 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Greatshield;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Greatsword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.HandAxe;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.IceFishSword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.LifeTreeSword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.LockSword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Longsword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Mace;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagicTorch;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Quarterstaff;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.RoundShield;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.RunicBlade;
@ -136,6 +140,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.SkyShield;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Spear;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Sword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WarHammer;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WashCrime;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Whip;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WornShortsword;
import com.watabou.utils.Bundle;
@ -205,9 +210,13 @@ public enum Catalog {
WEAPONS.seen.put( LockSword.class, false);
WEAPONS.seen.put( SkyShield.class, false);
WEAPONS.seen.put( Dairikyan.class, false);
WEAPONS.seen.put( LifeTreeSword.class, false);
WEAPONS.seen.put( MagicTorch.class, false);
WEAPONS.seen.put( IceFishSword.class, false);
WEAPONS.seen.put( FireFishSword.class, false);
WEAPONS.seen.put( WashCrime.class, false);
WEAPONS.seen.put( BloodthirstyThorn.class, false);
ARMOR.seen.put( ClothArmor.class, false);
ARMOR.seen.put( LeatherArmor.class, false);
@ -285,6 +294,7 @@ public enum Catalog {
SCROLLS.seen.put( ScrollOfRecharging.class, false);
SCROLLS.seen.put( ScrollOfMirrorImage.class, false);
SCROLLS.seen.put( ScrollOfTerror.class, false);
SCROLLS.seen.put( ScrollOfRoseShiled.class, false);
SCROLLS.seen.put( ScrollOfLullaby.class, false);
SCROLLS.seen.put( ScrollOfRage.class, false);
SCROLLS.seen.put( ScrollOfRetribution.class, false);

View File

@ -153,11 +153,6 @@ public class ShopBossLevel extends Level {
positions.add(pedestal);
}
}
//if (positions.isEmpty()){
// return -1;
//} else {
// return Random.element(positions);
//}
return -1;
}

View File

@ -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.1f;
fadeTime = 0.85f;
}
SkinnedBlock bg = new SkinnedBlock(Camera.main.width, Camera.main.height, loadingAsset ){

View File

@ -28,6 +28,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.LiquidMetal;
import com.shatteredpixel.shatteredpixeldungeon.items.Recipe;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.ChaliceOfBlood;
import com.shatteredpixel.shatteredpixeldungeon.items.bombs.Bomb;
import com.shatteredpixel.shatteredpixeldungeon.items.food.Blandfruit;
import com.shatteredpixel.shatteredpixeldungeon.items.food.Food;
@ -58,6 +59,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfTo
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.WaterSoul;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.ExoticPotion;
import com.shatteredpixel.shatteredpixeldungeon.items.quest.CrivusFruitsFlake;
import com.shatteredpixel.shatteredpixeldungeon.items.quest.MetalShard;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ExoticScroll;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ScrollOfRoseShiled;
@ -81,7 +83,9 @@ import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfBlueFuck;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfFireblast;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfLightning;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.hightwand.WandOfHightHunderStorm;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.BloodthirstyThorn;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.IceFishSword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.LifeTreeSword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.plants.AikeLaier;
@ -274,7 +278,7 @@ public class QuickRecipe extends Component {
if (text != null) text.hardlight(color);
}
}
//gets recipes for a particular alchemy guide page
//a null entry indicates a break in section
public static ArrayList<QuickRecipe> getRecipes( int pageIdx ){
@ -403,6 +407,11 @@ public class QuickRecipe extends Component {
new WandOfLightning(),
new CrivusFruitsFlake())),
new WandOfHightHunderStorm()));
result.add(new QuickRecipe( new BloodthirstyThorn.Recipe(),
new ArrayList<Item>(Arrays.asList(new MetalShard(),
new ChaliceOfBlood.PlaceHolder(),
new LifeTreeSword.PlaceHolder())),
new BloodthirstyThorn()));
return result;
case 7:
result.add(new QuickRecipe(new AlchemicalCatalyst.Recipe(), new ArrayList<>(Arrays.asList(new Potion.PlaceHolder(), new Plant.Seed.PlaceHolder())), new AlchemicalCatalyst()));

View File

@ -2,6 +2,7 @@ package com.shatteredpixel.shatteredpixeldungeon.ui.changelist.mlpd;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.NewDM300;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.PinkLingSprite;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.ChangesScene;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
@ -47,6 +48,7 @@ import java.util.ArrayList;
public class vM0_6_7_X_Changes {
public static void addAllChanges(ArrayList<ChangeInfo> changeInfos) {
add_v0_6_31_Changes(changeInfos);
add_v0_6_30_Changes(changeInfos);
add_v0_6_29_Changes(changeInfos);
add_v0_6_28_Changes(changeInfos);
@ -80,6 +82,50 @@ public class vM0_6_7_X_Changes {
add_v0_6_0_Changes(changeInfos);
}
public static void add_v0_6_31_Changes( ArrayList<ChangeInfo> changeInfos ) {
ChangeInfo changes = new ChangeInfo("v0.6.1.0-Beta5.1(P3)", true, "");
changes.hardlight(Window.TITLE_COLOR);
changeInfos.add(changes);
changes = new ChangeInfo("即将到来", false, null);
changes.hardlight(Window.Pink_COLOR);
changeInfos.add(changes);
Image issxsaxs =new DimandKingSprite();
issxsaxs.scale.set(PixelScene.align(0.8f));
changes.addButton(new ChangeButton(issxsaxs,("关于宝箱之王?"),
("将在下个版本Beta5.2进行测试更新,请做好战斗准备!")));
changes.addButton(new ChangeButton(new PinkLingSprite(), ("狩猎系统1.0"),
("击败两次宝箱之王后解锁狩猎系统神秘NPC会入驻0层。并派发狩猎任务。")));
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.FBK), ("灯火系统V3--狩猎与前行之章"),
("灯火系统即将进行大改,敬请期待")));
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.CHALLANEESICON_14), ("寒冷系统V0.2"),
("将追加矿洞层的寒冷惩罚和新的事件,敬请期待")));
changes = new ChangeInfo("新内容", false, null);
changes.hardlight(Window.GREEN_COLOR);
changeInfos.add(changes);
changes.addButton(new ChangeButton(Icons.get(Icons.INFO), ("图鉴和炼金合成表加入新东西"),
("请自行到游戏查看")));
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.MAGIC_TORCH), ("新武器:魔法火把[捐赠物品]"),
("感谢_落白_的投稿该武器属于3阶武器。")));
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.BloodDied), ("新武器:嗜血荆棘[捐赠物品]"),
("感谢_落白_的投稿该武器属于6阶武器。")));
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_06X59")));
}
public static void add_v0_6_30_Changes( ArrayList<ChangeInfo> changeInfos ) {
ChangeInfo changes = new ChangeInfo("v0.6.1.0-Beta5(P3)", true, "");
changes.hardlight(Window.TITLE_COLOR);

View File

@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.RenderedTextBlock;
import com.shatteredpixel.shatteredpixeldungeon.ui.ScrollPane;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.watabou.noosa.Camera;
import com.watabou.noosa.Image;
import com.watabou.noosa.ui.Component;
public class WndMessage extends Window {
@ -63,4 +64,7 @@ public class WndMessage extends Window {
}
}
public WndMessage(Image i, String title, String message) {
}
}