Update Beta0.6.2.0-B3

This is the last end update in the near future,
Now I stop developing MLPD content,
I will return in the future, so please stay tuned.
This commit is contained in:
LingASDJ 2023-05-28 19:54:51 +08:00
parent 0112d1a27d
commit faa8a6e789
55 changed files with 878 additions and 320 deletions

View File

@ -17,8 +17,8 @@ allprojects {
appName = 'Magic Ling Pixel Dungeon'
appPackageName = 'com.ansdomagiclingpixeldungeon.ling'
appVersionCode =800867
appVersionName = '0.6.1.0-Beta7.3(P3)'
appVersionCode =900871
appVersionName = '0.6.2.0-Beta3'
appJavaCompatibility = JavaVersion.VERSION_11

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -134,7 +134,7 @@ actors.buffs.clearbleesdgoodbuff.blessmixshiled.name=纯洁的祝福-守护
actors.buffs.clearbleesdgoodbuff.blessmixshiled.desc=守护我们最后的种子!\n\n本大层英雄在血满的情况下每150回合获得一些护盾。
actors.buffs.clearbleesdgoodbuff.blessimmune.name=纯洁的祝福-隐没
actors.buffs.clearbleesdgoodbuff.blessimmune.desc=隐没在这人群之中,我们便是超凡脱俗的个体\n\n本大层英雄免疫诅咒效果和减少40%的物理伤害。
actors.buffs.clearbleesdgoodbuff.blessimmune.desc=隐没在这人群之中,我们便是超凡脱俗的个体\n\n本大层英雄免疫诅咒效果和魔法效果和减少40%的物理伤害以及无视血色哨卫的伤害。
actors.buffs.clearbleesdgoodbuff.blessgoread.name=纯洁的祝福-前路
actors.buffs.clearbleesdgoodbuff.blessgoread.desc=行走在这令人惧怕的地牢中,灯火是前路的指引\n\n本大层英雄灯火值高于60%的情况下,获得每回合进行血量回复。
@ -961,7 +961,7 @@ actors.buffs.championenemy$halo.name=鬼磷精英
actors.buffs.championenemy$halo.desc=鬼磷精英造成 15% 额外近战伤害,会使用更强大的磷火点燃攻击目标,免疫火焰,免疫磷火。
actors.buffs.championenemy$delaymob.name=苦痛精英
actors.buffs.championenemy$delaymob.desc=苦痛精英可以将受到的伤害进行延时释放,拥有 45% 额外近战伤害
actors.buffs.championenemy$delaymob.desc=苦痛精英可以将受到的伤害进行延时释放,拥有 45% 额外近战伤害拥有60%的伤害减免
actors.buffs.championenemy.warn2=杀戮与不祥之意笼罩在整个地牢之中……

View File

@ -172,7 +172,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=肉身已然逝去,灵魂尚未得到安息,脑海遵照主人的意愿,直到真正的死亡降临。
@ -985,8 +985,6 @@ items.food.smallration.descx=它看起来和普通口粮不一样,就是大了
items.food.stewedmeat.name=炖肉
items.food.stewedmeat.eat_msg=吃起来还行。
items.food.stewedmeat.desc=烹煮的过程中杀死了肉上面可能携带的任何病菌或是寄生虫。现在应该可以安全的食用它了。
items.food.stewedmeat.descx=烹煮的过程中杀死了肉上面可能携带的任何病菌或是寄生虫,营养丰富,使你信心倍增。现在应该可以安全的食用它了。
##journal items

View File

@ -1,106 +1,267 @@
badges.endorsed=取得徽章:%s
badges.new_super=新的超级徽章:%s
badges.new=新的徽章:%s
badges$badge.monsters_slain_1=击杀10名敌人
badges$badge.monsters_slain_2=击杀50名敌人
badges$badge.monsters_slain_3=击杀150名敌人
badges$badge.monsters_slain_4=击杀250名敌人
badges$badge.gold_collected_1=收集100金币
badges$badge.gold_collected_2=收集500金币
badges$badge.gold_collected_3=收集2500金币
badges$badge.gold_collected_4=收集7500金币
badges$badge.level_reached_1=达到6级
badges$badge.level_reached_2=达到12级
badges$badge.level_reached_3=达到18级
badges$badge.level_reached_4=达到24级
badges$badge.all_weapons_identified=全武器鉴定
badges$badge.all_armor_identified=全护甲鉴定
badges$badge.all_wands_identified=全部法杖鉴定
badges$badge.all_rings_identified=全部戒指鉴定
badges$badge.all_artifacts_identified=全神器鉴定
badges$badge.all_potions_identified=全部药水鉴定
badges$badge.all_scrolls_identified=全部卷轴鉴定
badges$badge.all_items_identified=全道具鉴定
badges$badge.all_bags_bought=买下所有包裹
badges$badge.death_from_fire=死于火焰
badges$badge.death_from_poison=死于剧毒
badges$badge.death_from_gas=死于毒气
badges$badge.death_from_hunger=死于饥饿
badges$badge.death_from_glyph=死于延缓伤害
badges$badge.death_from_falling=死于坠落楼层
badges$badge.kill_red=击败死灵领主
badges$badge.kill_rotheart=根除腐莓之心
badges$badge.kill_coldele=新生火元素之殇
badges$badge.yasd=死于火焰,毒,毒气,饥饿,护甲刻印和坠落
badges$badge.boss_slain_1=斩杀第1个Boss
badges$badge.boss_slain_2=斩杀第2个Boss
badges$badge.boss_slain_3=斩杀第3个Boss
badges$badge.boss_slain_4=斩杀第4个Boss
badges$badge.boss_slain_1_all_classes=分别使用战士、法师、盗贼和女猎手斩杀第1个Boss
badges$badge.boss_slain_3_all_subclasses=分别使用角斗士、狂战士、术士、战斗法师、疾行者、刺客、狙击手和守望者斩杀第3个Boss
badges$badge.monsters_slain_1.title=新晋怪物猎人
badges$badge.monsters_slain_1.desc=在一场游戏中击败 10 个敌人
badges$badge.monsters_slain_2.title=进阶怪物猎人
badges$badge.monsters_slain_2.desc=在一局游戏中击败 50 个敌人
badges$badge.monsters_slain_3.title=专业怪物猎人
badges$badge.monsters_slain_3.desc=在一局游戏中击败 100 个敌人
badges$badge.monsters_slain_4.title=大师怪物猎人
badges$badge.monsters_slain_4.desc=在一局游戏中击败 250 个敌人
badges$badge.monsters_slain_5.title=宗师怪物猎人
badges$badge.monsters_slain_5.desc=在一局游戏中击败 500 个敌人
badges$badge.gold_collected_1.title=新晋财宝猎人
badges$badge.gold_collected_1.desc=在一场游戏中收集 250 金币
badges$badge.gold_collected_2.title=进阶财宝猎人
badges$badge.gold_collected_2.desc=在一局游戏中收集 1000 金币
badges$badge.gold_collected_3.title=专业财宝猎人
badges$badge.gold_collected_3.desc=在一局游戏中收集 2500 金币
badges$badge.gold_collected_4.title=大师财宝猎人
badges$badge.gold_collected_4.desc=在一局游戏中收集 7500 金币
badges$badge.gold_collected_5.title=宗师财宝猎人
badges$badge.gold_collected_5.desc=在一局游戏中收集 15000 金币
badges$badge.level_reached_1.title=新晋冒险者
badges$badge.level_reached_1.desc=升到6级
badges$badge.level_reached_2.title=进阶冒险者
badges$badge.level_reached_2.desc=升到12级
badges$badge.level_reached_3.title=专业冒险者
badges$badge.level_reached_3.desc=升到18级
badges$badge.level_reached_4.title=大师冒险者
badges$badge.level_reached_4.desc=升到24级
badges$badge.level_reached_5.title=宗师冒险者
badges$badge.level_reached_5.desc=升到30级
badges$badge.all_weapons_identified.title=武器研究员
badges$badge.all_weapons_identified.desc=鉴定手册中所有类型的武器
badges$badge.all_armor_identified.title=护甲研究员
badges$badge.all_armor_identified.desc=鉴定手册中所有类型的护甲
badges$badge.all_wands_identified.title=法杖研究员
badges$badge.all_wands_identified.desc=鉴定手册中所有类型的法杖
badges$badge.all_rings_identified.title=戒指研究员
badges$badge.all_rings_identified.desc=鉴定手册中所有类型的戒指
badges$badge.all_artifacts_identified.title=神器研究员
badges$badge.all_artifacts_identified.desc=鉴定手册中所有类型的神器
badges$badge.all_potions_identified.title=药剂研究员
badges$badge.all_potions_identified.desc=鉴定手册中所有类型的药剂
badges$badge.all_scrolls_identified.title=卷轴研究员
badges$badge.all_scrolls_identified.desc=鉴定手册中所有类型的卷轴
badges$badge.all_items_identified.title=道具专家
badges$badge.all_items_identified.desc=鉴定手册中所有的物品
badges$badge.all_bags_bought.title=背包客
badges$badge.all_bags_bought.desc=完全扩充你的背包
badges$badge.death_from_fire.title=燃尽
badges$badge.death_from_fire.desc=死于火焰
badges$badge.death_from_poison.title=中毒
badges$badge.death_from_poison.desc=死于中毒
badges$badge.death_from_gas.title=窒息
badges$badge.death_from_gas.desc=死于毒气
badges$badge.death_from_hunger.title=饿毙
badges$badge.death_from_hunger.desc=死于饥饿
badges$badge.death_from_falling.title=变成薄饼
badges$badge.death_from_falling.desc=死于坠落
badges$badge.kill_rotheart.title=铲除腐莓之心
badges$badge.kill_rotheart.desc=完成老杖匠的腐莓之心任务,使冰雪监狱得到暂时的安定。
badges$badge.kill_coldele.title=新生火元素之殇
badges$badge.kill_coldele.desc=完成老杖匠的献祭任务,使冰雪监狱得到暂时的安定。
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_2.title=冰狱噩梦
badges$badge.boss_slain_2.desc=击败监狱尽头的任意Boss
badges$badge.boss_slain_3.title=冰雪诅咒
badges$badge.boss_slain_3.desc=击败冰雪矿洞尽头的任意Boss
badges$badge.boss_slain_4.title=矮人都市大惊变
badges$badge.boss_slain_4.desc=击败矮人王国尽头的任意Boss
badges$badge.boss_slain_1_all_classes.title=千面手
badges$badge.boss_slain_1_all_classes.desc=以所有职业击败第一个Boss
badges$badge.boss_slain_3_all_subclasses.title=万事通
badges$badge.boss_slain_3_all_subclasses.desc=以所有专精后的职业击败第三个Boss
badges$badge.strength_attained_1=达到13点力量
badges$badge.strength_attained_2=达到15点力量
badges$badge.strength_attained_3=达到17点力量
badges$badge.strength_attained_4=达到19点力量
badges$badge.food_eaten_1=吃掉10个食物
badges$badge.food_eaten_2=吃掉20个食物
badges$badge.food_eaten_3=吃掉30个食物
badges$badge.food_eaten_4=吃掉40个食物
badges$badge.item_level_1=获得3级物品
badges$badge.item_level_2=获得6级物品
badges$badge.item_level_3=获得9级物品
badges$badge.item_level_4=获得12级物品
badges$badge.victory=取得Yendor护符
badges$badge.get_sc=净化怨灵根源\n将尸尘交给老杖匠
badges$badge.victory_all_classes=分别使用战士法师盗贼和女猎手取得Yendor护符
badges$badge.mastery_combo=达成10连击
badges$badge.items_crafted_1=一场游戏中酿造3瓶药水
badges$badge.items_crafted_2=一场游戏中酿造6瓶药水
badges$badge.items_crafted_3=一场游戏中酿造9瓶药水
badges$badge.items_crafted_4=一场游戏中酿造12瓶药水
badges$badge.no_monsters_slain=在不击杀怪物的情况下通过楼层
badges$badge.grim_weapon=通过"残酷"武器附魔秒杀一个怪物
badges$badge.piranhas=消灭6只食人鱼
badges$badge.games_played_1=进行10场游戏
badges$badge.games_played_2=进行50场游戏
badges$badge.games_played_3=进行250场游戏
badges$badge.games_played_4=进行1000场游戏
badges$badge.godd_make=老人与海\n累计完成老杖匠的全部任务\n\n_奖励0层随机戒指(四大基座上)_
badges$badge.clear_water=净化大师\n完成挑战:污泥浊水\n\n_奖励敬请期待_
badges$badge.ghostdage=幽灵大哥\n_在幽灵处获得一次+4品质武器或护甲\n\n_(镀层需求:+5品质武器)
badges$badge.dageto=幽灵大哥\n在幽灵处获得一次_+5_品质武器或护甲\n\nΞ你已成功镀层Ξ
badges$badge.strength_attained_1.title=健身菜鸟
badges$badge.strength_attained_1.desc=基础力量达到 12 点
badges$badge.strength_attained_2.title=健身学徒
badges$badge.strength_attained_2.desc=基础力量达到 14 点
badges$badge.strength_attained_3.title=健身专家
badges$badge.strength_attained_3.desc=基础力量达到 16 点
badges$badge.strength_attained_4.title=健身大佬
badges$badge.strength_attained_4.desc=基础力量达到 18 点
badges$badge.strength_attained_5.title=健身大只佬
badges$badge.strength_attained_5.desc=基础力量达到 20 点
badges$badge.food_eaten_1.title=新晋美食家
badges$badge.food_eaten_1.desc=在一场游戏中进食 10 次
badges$badge.food_eaten_2.title=进阶美食家
badges$badge.food_eaten_2.desc=在一场游戏中进食 20 次
badges$badge.food_eaten_3.title=专业美食家
badges$badge.food_eaten_3.desc=在一场游戏中进食 30 次
badges$badge.food_eaten_4.title=大师美食家
badges$badge.food_eaten_4.desc=在一场游戏中进食 40 次
badges$badge.food_eaten_5.title=宗师美食家
badges$badge.food_eaten_5.desc=在一场游戏中进食 50 次
badges$badge.item_level_1.title=新晋附魔师
badges$badge.item_level_1.desc=获得一件等级大于等于 3 的物品
badges$badge.item_level_2.title=进阶附魔师
badges$badge.item_level_2.desc=获得一件等级大于等于 6 的物品
badges$badge.item_level_3.title=专业附魔师
badges$badge.item_level_3.desc=获得一件等级大于等于 9 的物品
badges$badge.item_level_4.title=大师附魔师
badges$badge.item_level_4.desc=获得一件等级大于等于 12 的物品
badges$badge.item_level_5.title=宗师附魔师
badges$badge.item_level_5.desc=获得一件等级大于等于 15 的物品
badges$badge.victory.title=水晶篇章通关!
badges$badge.victory.desc=获得水晶之心。
badges$badge.endied=终焉之旅\n\n_(获得终焉)_
badges$badge.get_sc.title=净化怨灵根源
badges$badge.get_sc.desc=完成老杖匠的尸尘净化任务,使冰雪监狱得到暂时的安定。
badges$badge.halofire_died=死于磷火烈焰
badges$badge.happy_end=幸福结局
badges$badge.champion_1x=开启1项挑战通关
badges$badge.kill_slmking=击杀史莱姆王子
badges$badge.big_x=突变风波\n\n基因突变开启通关你见证了地牢的突变体同时也看见了玩火必自焚的道理……\n\n_奖励0层随机护甲(四大基座上)_
badges$badge.exsg=大症若愚\n\n癔症只是一个假象你仍然坚持过来了\n\n_奖励1500初始金币两个经验药水_
badges$badge.kill_dm720=击杀DM720\n\n矿洞的终极兵器\n\n_奖励0层额外十字架(四大基座上,与冰雪魔女不叠加)_
badges$badge.champion_2x=地牢勇者\n\n_开启3项以上挑战通关\n\n[不包含BR模式和开发者模式]_
badges$badge.champion_3x=不屈斗士\n\n_开启6项以上挑战通关\n\n[不包含BR模式和开发者模式]_
badges$badge.champion_4x=超凡脱俗\n\n_开启8项以上挑战通关\n\n[不包含BR模式和开发者模式]_
badges$badge.champion_5x=救世之主\n\n_开启10项以上挑战通关\n\n[不包含BR模式和开发者模式]_
badges$badge.unlock_mage=解锁法师
badges$badge.unlock_rogue=解锁盗贼
badges$badge.unlock_huntress=解锁女猎手
badges$badge.kill_sm=击败拟态之王\n\n一场”公平"的对决
badges$badge.rlpt=_支离破碎征服者_\n\n开启挑战并击败古神\n\n_奖励0层随机神器(四大基座上)_
badges$badge.sbdjs=风暴袭来,未完待续\n\n你通过它成功离开却不知外面风暴袭来\n\n水晶之心仍然在你手中闪闪发光,或许,这事还没完!
badges$badge.kill_mg=击败冰雪魔女-冬铃\n\n冰雪之地的女王\n\n_奖励0层额外十字架(四大基座上,与DM720不叠加)_
badges$badge.firegirl=击败圣火魔女-莲娜\n\n雪凛峡谷的守护者
badges$badge.slimepr=击败史莱姆公主\n\n妥协的结果
badges$badge.drawf_head=击败矮人将军\n\n矮人王国的正规军残党
badges$badge.victory_all_classes.title=全能宗师
badges$badge.victory_all_classes.desc=以所有职业取得水晶之心。
badges$badge.brcler=起始归一\n\n你已经粉碎了DM-ZERO的阴谋现在是时候回归正常生活了。\n[完成首领对决]
badges$badge.take_item=宝藏探索者\n\n获得宝藏迷宫的全部宝藏
badges$badge.kill_apple=击败克里弗斯之果\n\n盘踞在森林底部的幕后“主谋"
badges$badge.mastery_combo.title=角斗士之怒
badges$badge.mastery_combo.desc=达成十连击
badges$badge.items_crafted_1.title=炼金学徒
badges$badge.items_crafted_1.desc=在一局游戏中通过炼金术合成3个物品
badges$badge.items_crafted_2.title=炼金熟手
badges$badge.items_crafted_2.desc=在一局游戏中通过炼金术合成8个物品
badges$badge.items_crafted_3.title=炼金专家
badges$badge.items_crafted_3.desc=在一局游戏中通过炼金术合成15个物品
badges$badge.items_crafted_4.title=炼金大师
badges$badge.items_crafted_4.desc=在一局游戏中通过炼金术合成24个物品
badges$badge.items_crafted_5.title=炼金宗师
badges$badge.items_crafted_5.desc=在一局游戏中通过炼金术合成35个物品
badges$badge.no_monsters_slain.title=和平主义者
badges$badge.no_monsters_slain.desc=在不击败任何敌人的情况下通过一个楼层
badges$badge.grim_weapon.title=死神来了
badges$badge.grim_weapon.desc=使用死神附魔击败一个敌人
badges$badge.piranhas.title=非主流垂钓
badges$badge.piranhas.desc=在一场游戏中杀死 6 只食人鱼
badges$badge.games_played_1.title=新晋调查者
badges$badge.games_played_1.desc=进行 10 场游戏,你已经知悉了地牢的轮回诅咒。
badges$badge.games_played_2.title=进阶调查者
badges$badge.games_played_2.desc=进行 50 场游戏,你已经熟悉了地牢的潜规则。
badges$badge.games_played_3.title=资深调查家
badges$badge.games_played_3.desc=进行 250 场游戏,你的威望已经在地牢中传颂。
badges$badge.games_played_4.title=大师调查员
badges$badge.games_played_4.desc=进行 100 场游戏,你的名声已经传到地表三巨头的耳里。小心夜路遇到他们哦。
badges$badge.godd_make.title=暗室逢灯
badges$badge.godd_make.desc=累计完成老杖匠的全部委托任务,现在,是他回报恩人的时候了。\n\n_奖励0层随机戒指(四大基座上)_
badges$badge.clear_water.title=净化大师
badges$badge.clear_water.desc=完成挑战:污泥浊水
badges$badge.ghostdage.title=白幽祝福
badges$badge.ghostdage.desc=_在幽妹处获得一次+4品质武器或护甲\n\n_(镀层需求:+5品质武器)
badges$badge.dageto.title=白幽神谕
badges$badge.dageto.desc=在幽妹处获得一次_+5_品质武器或护甲\n\nΞ你已成功镀层Ξ
badges$badge.endied.title=终焉之旅
badges$badge.endied.desc=_(获得彩蛋武器终焉)_目前版本暂时无法获得
badges$badge.halofire_died.title=磷尽胆绝
badges$badge.halofire_died.desc=在磷火的折磨中死去
badges$badge.happy_end.title=风暴结局
badges$badge.happy_end.desc=携带水晶之心离开地牢
badges$badge.champion_1x.title=地牢探索员
badges$badge.champion_1x.desc=开启1项挑战通关,地牢的轮回诅咒也不能阻止你探索的脚步。
badges$badge.champion_2x.title=地牢勇者
badges$badge.champion_2x.desc=开启3项以上挑战通关,在地牢的轮回中不断的探索极限便是勇者的象征。
badges$badge.champion_3x.title=不屈斗士
badges$badge.champion_3x.desc=开启6项以上挑战通关,在地牢的重重考验下你活了下来,你的惊人测试成绩已经为世人歌颂。
badges$badge.champion_4x.title=超凡脱俗
badges$badge.champion_4x.desc=开启8项以上挑战通关无论结局怎样你的尝试已经让衪们知晓你的能力。或许在未来你会直面衪们。
badges$badge.champion_5x.title=登神之路
badges$badge.champion_5x.desc=开启10项以上挑战通关你的信念与威望已经人人知晓你已经引起世界各个势力的注意。今后你将踏上新的征程。
badges$badge.kill_slmking.title=粘体终结者
badges$badge.kill_slmking.desc=击杀栖息在水晶异变的史莱姆王子
badges$badge.big_x.title=突变风波
badges$badge.big_x.desc=基因突变开启通关!你见证了地牢的突变体,同时也看见了玩火必自焚的道理……\n\n_奖励0层随机护甲(四大基座上)_
badges$badge.exsg.title=大症若愚
badges$badge.exsg.desc=药水癔症只是一个假象,你仍然坚持过来了!\n\n_奖励1500初始金币两个经验药水_
badges$badge.kill_dm720.title=兵不厌“炸”
badges$badge.kill_dm720.desc=击杀冰雪矿洞中的DM-720和它的驾驶员。\n\n_奖励0层额外2阶武器(四大基座上,与冰雪魔女不叠加)_
badges$badge.death_from_glyph.title=慢性死亡
badges$badge.death_from_glyph.desc=死于延缓伤害。
badges$badge.unlock_mage.title=解锁法师!
badges$badge.unlock_mage.desc=使用一个升级卷轴以解锁法师
badges$badge.unlock_rogue.title=解锁盗贼!
badges$badge.unlock_rogue.desc=在一场游戏中进行十次伏击以解锁盗贼
badges$badge.unlock_huntress.title=解锁女猎手!
badges$badge.unlock_huntress.desc=在一场游戏中使用投掷武器命中十次敌人以解锁女猎手
badges$badge.kill_sm.title=拟态对决
badges$badge.kill_sm.desc=接受拟态王的战书并击败它获得它的认可。这是一场公平的对决!
badges$badge.rlpt.title=分崩离析
badges$badge.rlpt.desc=开启支离破碎挑战并在主线关卡完成游戏\n\n_奖励0层随机神器(四大基座上)_
badges$badge.storm.title=风暴袭来
badges$badge.storm.desc=在拿到了水晶之心离开地牢后,天突然黑了下来,并且电闪雷鸣。\n\n地牢入口的守卫让你前往霜落帝国觐见她。看来这一切尚未结束。
badges$badge.kill_mg.title=冰雪挽歌
badges$badge.kill_mg.desc=请尝试重创冰雪之地的她,让她能够清醒过来\n\n_奖励0层额外2阶武器(四大基座上,与DM720不叠加)_
badges$badge.firegirl.title=圣火赞歌
badges$badge.firegirl.desc=重创雪凛峡谷的圣火魔女,让她接纳你。
badges$badge.drawf_head.title=“旧时代”的终结
badges$badge.drawf_head.desc=击败矮人将军,让他从诅咒中解脱。
badges$badge.brcler.title=起始归一
badges$badge.brcler.desc=尽管死灵法师创造了这个恐怖的机器但你已经粉碎了DM-ZERO的阴谋现在是时候回归正常生活了。\n[完成首领对决]
badges$badge.take_item.title=宝藏探索者
badges$badge.take_item.desc=获得宝藏迷宫的三个隐藏宝藏,切记,对决不是拟态王的本意。
badges$badge.kill_apple.title=毒果铲除计划
badges$badge.kill_apple.desc=击杀盘踞在森林底部的幕后“主谋"。
badges$badge.spicealboss.title=弱肉强食
badges$badge.spicealboss.desc=累计击败全部特殊BOSS你的威望已经让每个首领对你望而生畏和敬佩不已。
badges$badge.nyz_shop.title=奈亚大亨
badges$badge.nyz_shop.desc=购买终端的物品让奈亚子自愿入驻0层\n\n_奖励0层奈亚子常驻1200初始金币5次奈亚子终端商店购买权限_
badges$badge.high_score_1.title=菜鸟上路
badges$badge.high_score_1.desc=在结束游戏时达到 _B级_ 评价。
badges$badge.high_score_2.title=熟能生巧
badges$badge.high_score_2.desc=在结束游戏时达到 _A级_ 评价。
badges$badge.high_score_3.title=烂若披掌
badges$badge.high_score_3.desc=在结束游戏时达到 _SS级_ 评价。
badges$badge.high_score_4.title=胸有成竹
badges$badge.high_score_4.desc=在结束游戏时达到 _SSS级_ 评价。
badges$badge.high_score_5.title=炉火纯青
badges$badge.high_score_5.desc=在结束游戏时达到 _SSS+级_ 评价。
badges$badge.spicealboss=累计击败全部特殊BOSS\n\n风暴正在降临
badges$badge.nyz_shop=奈亚大亨\n\n让奈亚子自愿入驻0层\n\n_奖励0层奈亚子常驻1200初始金币5次奈亚子终端商店购买权限_
challenges.no_food=缩餐节食
challenges.no_food_desc=食物本就稀缺,但你还需要注意节食!\n\n・使用各类食物与丰饶之角的饱腹效果为原本的三分之一。\n・其他恢复饥饿的机制不受影响。
challenges.no_armor=独挡一面
@ -140,7 +301,7 @@ challenges.sbsg = Π基因突变Π
challenges.sbsg_desc=地牢中的神秘魔力让一些生物发生了重大的变化\n-所有生物都会因为突变激素变得各不相同,给探索地牢的脚步带来更大的困难。\n-敌人有5种突变类型\n突变失败体_(30%概率)_:近战伤害减少35%,移速提高到1.3。\n突变爆炸体_(25%概率)_:移速减少50%,攻击力降低30%,但死亡时拥有爆炸伤害。\n突变完全体_(20%概率)_:移速和攻击力各提高25%,且拥有30%伤害减免。\n突变危险体_(15%概率)_:攻击力提升20%,攻击有10%概率造成流血。死亡时有5%概率立刻向本层发出警报。\n突变烟雾体_(10%概率)_:攻击力减少10%,攻击范围+2攻击敌人10%概率造成眩晕……\n\n_特别说明如果开启精英强敌词条会和精英词条共存_
challenges.exsg = Π药水癔症Π
challenges.exsg_desc=药水癔症详细规则:\n力量药水--20%概率力量-1\n灵视药剂--50%概率喝后失明5回合\n隐形药剂--30%概率喝后立刻怒吼\n经验药剂--40%概率喝后立刻流血6回合\n极速药剂--50%概率喝后立刻残废8回合\n==========================\n小型口粮 吃后立刻获得极速8回合\n炖肉 吃后立刻升级\n冷冻生肉片 吃后获得奥术护盾\n全肉大饼 吃后立刻获得8回合极速 且+1力量\n不知道何种原因大部分正面药水你都感觉有毒\n部分药水完全处于DeBuff,但食物却会很有用!而且地牢里面还会追加自动售货机,会售卖一些更加高级的东西。
challenges.exsg_desc=药水癔症详细规则:\n力量药水--60%概率力量-1\n灵视药剂--60%概率喝后失明5回合\n隐形药剂--60%概率喝后立刻怒吼\n极速药剂--60%概率喝后立刻残废8回合\n==========================\n小型口粮-吃后立刻获得极速4回合\n冷冻生肉片-吃后获得奥术护盾\n全肉大饼-吃后立刻获得8回合极速,且有大概率+1力量(_随着力量的追加获得力量的概率会渐渐变低_)\n\n高级药水_(合剂/魔药)_不受影响\n不知道何种原因大部分正面药水你都感觉有毒\n你的臆想会导致药水有毒,但食物却会很有用!而且地牢里面还会追加自动售货机,会售卖一些更加高级的东西。
challenges.icedied = 雪虐风饕(未完成)
challenges.icedied_desc=很显然,地牢的雪越下越大了,在这严寒里面,生存的法则将进一步让我们活得更久。\n篝火房间一旦被激活不再无限变成40回合的寒冷抑制商人会贩卖更多特殊物品。

View File

@ -517,4 +517,10 @@ ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x64=-V0.6.1-Beta7.2\n1.修复一些
ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x65=-V0.6.1-Beta7.3\n1.修复第三大层默认寒冰魔女的问题\n2.修复诅咒法杖在BossRush的少量错误\n3.修复闪电饭团一次性消耗两个的问题\n4.修复DM720战斗结束电击效果可能存在的问题\n5.修复恐药异症的各种问题
ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x66=-V0.6.2-Beta1\n1.修复部分神器的快捷栏错误\n2.修复上个版本的少量Bug
ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x67=-V0.6.2-Beta2\n1.修复提灯,魔法火把,火把的灯源冲突问题\n2.修复拟态王中一个极端情况下出现的错误
ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x68=-V0.6.2-Beta3\n1.修复嗜血荆棘的一些错误\n2.修复快捷栏在遗物状态下仍然可以使用的Bug
//ui.changelist.mlpd.vm0_5_x_changes.xxx//

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -300,6 +300,8 @@ public class Assets {
//BOSS
public static final String VSGR = "sprites/boss/SeaVastGirl.png";
public static final String DIMK = "sprites/boss/DimandKing.png";
public static final String DIED = "sprites/items/died.png";

View File

@ -22,6 +22,8 @@
package com.shatteredpixel.shatteredpixeldungeon;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.PRO;
import static com.shatteredpixel.shatteredpixeldungeon.Statistics.amuletObtained;
import static com.shatteredpixel.shatteredpixeldungeon.Statistics.chalMultiplier;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.Artifact;
@ -33,6 +35,7 @@ import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.shatteredpixel.shatteredpixeldungeon.windows.LevelChecker;
import com.watabou.utils.Bundle;
import com.watabou.utils.FileUtils;
@ -73,11 +76,12 @@ public class Badges {
DEATH_FROM_GAS ( 16 ),
DEATH_FROM_HUNGER ( 17 ),
DEATH_FROM_FALLING ( 18 ),
HIGH_SCORE_1 ( 19 ),
KILL_ROTHEART ( 20 ),
GET_SC ( 21 ),
KILL_COLDELE ( 22 ),
HALOFIRE_DIED ( 24 ),
HALOFIRE_DIED ( 23 ),
//silver
NO_MONSTERS_SLAIN ( 32 ),
@ -107,10 +111,9 @@ public class Badges {
BOSS_SLAIN_1_HUNTRESS,
BOSS_SLAIN_1_ALL_CLASSES ( 53, true ),
GAMES_PLAYED_1 ( 54, true ),
GODD_MAKE ( 82 ),
CLEAR_WATER ( 83 ),
GHOSTDAGE ( 84 ),
ENDIED ( 85 ),
HIGH_SCORE_2 ( 55 ),
//gold
PIRANHAS ( 64 ),
//these names are a bit outdated, but it doesn't really matter.
@ -133,6 +136,13 @@ public class Badges {
ALL_ARTIFACTS_IDENTIFIED ( 77 ),
VICTORY ( 78 ),
YASD ( 79, true ),
GODD_MAKE ( 82 ),
CLEAR_WATER ( 83 ),
GHOSTDAGE ( 84 ),
// ENDIED ( 85 ),
HIGH_SCORE_3 ( 86 ),
BOSS_SLAIN_3_GLADIATOR,
BOSS_SLAIN_3_BERSERKER,
BOSS_SLAIN_3_WARLOCK,
@ -158,6 +168,7 @@ public class Badges {
KILL_DM720 (102),
RLPT (103),
HIGH_SCORE_4 ( 104 ),
//diamond
GAMES_PLAYED_4 ( 112, true ),
@ -177,15 +188,27 @@ public class Badges {
DRAWF_HEAD ( 130 ),
SPICEALBOSS ( 131),
STORM ( 132),
KILL_MG (133),
BIG_X (134),
EXSG (135),
BRCLER (136);
BRCLER (136),
HIGH_SCORE_5 ( 137 );
public boolean meta;
public int image;
public String title(){
return Messages.get(this, name()+".title");
}
public String desc(){
return Messages.get(this, name()+".desc");
}
Badge( int image ) {
this( image, false );
}
@ -195,10 +218,6 @@ public class Badges {
this.meta = meta;
}
public String desc(){
return Messages.get(this, name());
}
Badge() {
this( -1 );
}
@ -352,6 +371,32 @@ public class Badges {
displayBadge( badge );
}
public static void validateHighScore( int score ){
Badge badge = null;
if (score >= LevelChecker.B_SCORE * chalMultiplier * (amuletObtained ? 1 : 2)) {
badge = Badge.HIGH_SCORE_1;
local.add( badge );
}
if (score >= LevelChecker.A_SCORE * chalMultiplier * (amuletObtained ? 1 : 2)) {
badge = Badge.HIGH_SCORE_2;
local.add( badge );
}
if (score >= LevelChecker.SS_SCORE * chalMultiplier * (amuletObtained ? 1 : 3)) {
badge = Badge.HIGH_SCORE_3;
local.add( badge );
}
if (score >= LevelChecker.SSS_SCORE * chalMultiplier * (amuletObtained ? 1 : 4)) {
badge = Badge.HIGH_SCORE_4;
local.add( badge );
}
if (score >= LevelChecker.SSSP_SCORE * chalMultiplier * (amuletObtained ? 1 : 5)) {
badge = Badge.HIGH_SCORE_5;
local.add( badge );
}
displayBadge( badge );
}
public static void validateGoldCollected() {
Badge badge = null;
@ -389,7 +434,6 @@ public class Badges {
public static void GhostDageCollected() {
Badge badge = null;
if (!local.contains( Badge.GHOSTDAGE ) && Statistics.dageCollected == 1) {
badge = Badge.GHOSTDAGE;
local.add( badge );
@ -939,6 +983,10 @@ public class Badges {
validateAMZ();
}
public static void STORM() {
displayBadge( Badge.STORM);
}
public static void KILLSDM720() {
displayBadge( Badge.KILL_DM720 );
validateAMZ();
@ -1091,7 +1139,9 @@ public class Badges {
{Badge.ITEMS_CRAFTED_1, Badge.ITEMS_CRAFTED_2, Badge.ITEMS_CRAFTED_3, Badge.ITEMS_CRAFTED_4},
{Badge.BOSS_SLAIN_1, Badge.BOSS_SLAIN_2, Badge.BOSS_SLAIN_3, Badge.BOSS_SLAIN_4},
{Badge.GAMES_PLAYED_1, Badge.GAMES_PLAYED_2, Badge.GAMES_PLAYED_3, Badge.GAMES_PLAYED_4},
{Badge.CHAMPION_1X, Badge.CHAMPION_2X, Badge.CHAMPION_3X,Badge.CHAMPION_4X,Badge.CHAMPION_5X}
{Badge.CHAMPION_1X, Badge.CHAMPION_2X, Badge.CHAMPION_3X,Badge.CHAMPION_4X,Badge.CHAMPION_5X},
{Badge.GHOSTDAGE,Badge.DAGETO},
{Badge.HIGH_SCORE_1, Badge.HIGH_SCORE_2, Badge.HIGH_SCORE_3, Badge.HIGH_SCORE_4, Badge.HIGH_SCORE_5},
};
private static final Badge[][] metaBadgeReplacements = new Badge[][]{

View File

@ -48,8 +48,8 @@ public class Challenges {
public static final int STRONGER_BOSSES = 4096;
public static final int DHXD = 8192;
public static final int ICEDIED = 16384;
public static final int PRO = 32768;
public static final int CS = 65536;
public static final int PRO = 32768;
public static final int CS = 65536;
public static final int MAX_VALUE = 131072;

View File

@ -29,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Amok;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Awareness;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ClearBleesdGoodBuff.BlessAnmy;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LighS;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Light;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicalSight;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MindVision;
@ -55,6 +56,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.rings.Ring;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfRegrowth;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfWarding;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagicTorch;
import com.shatteredpixel.shatteredpixeldungeon.journal.Notes;
import com.shatteredpixel.shatteredpixeldungeon.levels.AncityLevel;
import com.shatteredpixel.shatteredpixeldungeon.levels.CaveTwoBossLevel;
@ -678,9 +680,18 @@ public class Dungeon {
}
}
}
LighS lights = hero.buff( LighS.class );
Light light = hero.buff( Light.class );
hero.viewDistance = light == null ? level.viewDistance : Math.max( Light.DISTANCE, level.viewDistance );
MagicTorch.MagicLight magicLight = hero.buff( MagicTorch.MagicLight.class );
if(light != null || lights != null || magicLight != null){
hero.viewDistance = Math.max( Light.DISTANCE, level.viewDistance );
} else {
hero.viewDistance = level.viewDistance;
}
hero.curAction = hero.lastAction = null;

View File

@ -149,7 +149,7 @@ public enum Rankings {
}
rec.score = calculateScore();
rec.customSeed = Dungeon.customSeedText;
Badges.validateHighScore( rec.score );
INSTANCE.saveGameData(rec);
@ -350,6 +350,8 @@ public enum Rankings {
private static final String SCORE = "score";
private static final String CLASS = "class";
private static final String TIER = "tier";
private static final String DATE = "date";
private static final String VERSION = "version";
private static final String LEVEL = "level";
private static final String DEPTH = "depth";
private static final String DATA = "gameData";
@ -401,6 +403,13 @@ public enum Rankings {
if (bundle.contains(DATA)) gameData = bundle.getBundle(DATA);
if (bundle.contains(ID)) gameID = bundle.getString(ID);
if (bundle.contains( DATE )){
date = bundle.getString( DATE );
version = bundle.getString( VERSION );
} else {
date = version = null;
}
if (gameID == null) gameID = UUID.randomUUID().toString();
depth = bundle.getInt( DEPTH );
@ -412,10 +421,10 @@ public enum Rankings {
public void storeInBundle( Bundle bundle ) {
if (cause != null) bundle.put( CAUSE, cause );
bundle.put( VERSION, version );
bundle.put( WIN, win );
bundle.put( SCORE, score );
bundle.put( DATE, date );
bundle.put( CLASS, heroClass );
bundle.put( TIER, armorTier );
bundle.put( LEVEL, herolevel );

View File

@ -43,8 +43,6 @@ public class Statistics {
public static int highestAscent;
public static boolean gameWon = false;
public static boolean ascended = false;
public static int realdeepestFloor;
public static int boss_enhance = 0;
public static int goldCollected;
@ -81,10 +79,12 @@ public class Statistics {
//灯火前行
public static boolean lanterfireactive = false;
//克里弗斯之果
public static boolean crivusfruitslevel2 = false;
//拟态之王
public static boolean TPDoorDieds = false;
//修复同步
public static boolean bugsyncfixed = false;
@ -150,7 +150,7 @@ public class Statistics {
lanterfireactive = false;
bugsyncfixed = false;
crivusfruitslevel2 = false;
TPDoorDieds = false;
TryUsedAnmy = false;
second_elapsed = 0f;
@ -213,6 +213,9 @@ public class Statistics {
//克里弗斯之果
private static final String CrivusFruitsLevel2 = "crivusfruitslevel2";
//拟态之王
private static final String TPDoorDied = "TPDoorDieds";
private static final String TIPSGO = "tipsgo";
private static final String GOLDCHEST = "goldchest";
@ -275,6 +278,8 @@ public class Statistics {
bundle.put( CrivusFruitsLevel2, crivusfruitslevel2 );
bundle.put( TPDoorDied, TPDoorDieds );
bundle.put(MMC,mimicking);
bundle.put( AnmyMobs, TryUsedAnmy );
@ -393,6 +398,8 @@ public class Statistics {
crivusfruitslevel2 = bundle.getBoolean( CrivusFruitsLevel2 );
TPDoorDieds = bundle.getBoolean( TPDoorDied );
tipsgodungeon = bundle.getBoolean(TIPSGO);
//SPD

View File

@ -27,8 +27,8 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Fire;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
import com.shatteredpixel.shatteredpixeldungeon.items.bombs.Bomb;
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.AlarmTrap;
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.ExplosiveTrap;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
@ -124,24 +124,6 @@ public abstract class ChampionEnemy extends Buff {
buffCls = ChampionEnemy.LongSider.class;
}
// switch ((int) Random.Float()){
// case 0:case 1: case 2: case 3: default:
// buffCls = ChampionEnemy.Small.class;
// break;
// case 4: case 5: case 6:
// buffCls = ChampionEnemy.Bomber.class;
// break;
// case 7: case 8:
// buffCls = ChampionEnemy.Middle.class;
// break;
// case 9: case 10: case 11:
// buffCls = ChampionEnemy.Big.class;
// break;
// case 12: case 13:
// buffCls = ChampionEnemy.LongSider.class;
// break;
// }
if (Dungeon.mobsToStateLing <= 0 && Dungeon.isChallenged(Challenges.SBSG)) {
Buff.affect(m, buffCls);
m.state = m.WANDERING;
@ -150,7 +132,6 @@ public abstract class ChampionEnemy extends Buff {
public static class LongSider extends ChampionEnemy {
{
color = 0xff00ff;
}
@ -166,9 +147,11 @@ public abstract class ChampionEnemy extends Buff {
return target.fieldOfView[enemy.pos] && Dungeon.level.distance(target.pos, enemy.pos) <= 2;
}
private float resurrectChance = 0.1f;
@Override
public void onAttackProc(Char enemy) {
float resurrectChance = 0.1f;
if(Random.Float() <= resurrectChance) {
Buff.prolong( enemy, Vertigo.class, 4f);
}
@ -213,13 +196,7 @@ public abstract class ChampionEnemy extends Buff {
}
public void detach() {
for (int i : PathFinder.NEIGHBOURS1){
if (!Dungeon.level.solid[target.pos+i]){
ExplosiveTrap bomber = new ExplosiveTrap();
bomber.pos = target.pos;
bomber.activate();
}
}
new Bomb().explodeMobs(target.pos);
super.detach();
}
}
@ -259,24 +236,23 @@ public abstract class ChampionEnemy extends Buff {
public float meleeDamageFactor() {
return 1.30f;
}
private float resurrectChance = 0.05f;
private final float resurrectChance = 0.05f;
@Override
public void onAttackProc(Char enemy) {
if(Random.Float() <= resurrectChance) {
Buff.affect( enemy, Bleeding.class ).set( 5 );
}
}
private float resurrectChanceB = 0.1f;
@Override
public void detach() {
for (int i : PathFinder.NEIGHBOURS9){
if (Random.Float() <= resurrectChanceB) {
AlarmTrap xxx = new AlarmTrap();
xxx.pos = target.pos;
xxx.activate();
}
if (Random.Float() <= resurrectChance) {
AlarmTrap xxx = new AlarmTrap();
xxx.pos = target.pos;
xxx.activate();
}
super.detach();
}
@ -370,6 +346,13 @@ public abstract class ChampionEnemy extends Buff {
public float meleeDamageFactor() {
return 1.45f;
}
@Override
public float damageTakenFactor() {
return 0.4f;
}
}
public static class Projecting extends ChampionEnemy {
@ -421,7 +404,7 @@ public abstract class ChampionEnemy extends Buff {
@Override
public boolean canAttackWithExtraReach(Char enemy) {
//attack range of 2
return target.fieldOfView[enemy.pos] && Dungeon.level.distance(target.pos, enemy.pos) <= 4;
return target.fieldOfView[enemy.pos] && Dungeon.level.distance(target.pos, enemy.pos) <= 2;
}
}

View File

@ -1,9 +1,12 @@
package com.shatteredpixel.shatteredpixeldungeon.actors.buffs;
import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.items.lightblack.OilLantern;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
public class LighS extends FlavourBuff {
private static final float DELAY = 7.0f;
@ -14,26 +17,36 @@ public class LighS extends FlavourBuff {
this.type = Buff.buffType.POSITIVE;
}
public boolean attachTo(Char target) {
if (!LighS.super.attachTo(target)) {
@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;
}
if (Dungeon.level == null) {
return true;
}
target.viewDistance = Math.max(Dungeon.level.viewDistance, 6);
Dungeon.observe();
return true;
}
public boolean act() {
OilLantern lantern = Dungeon.hero.belongings.getItem(OilLantern.class);
if ( !lantern.isActivated() || lantern.getCharge() <= 0) {
lantern.deactivate(Dungeon.hero, false);
OilLantern lantern = hero.belongings.getItem(OilLantern.class);
if (hero.buff(LostInventory.class) == null){
if ( !lantern.isActivated() || lantern.getCharge() <= 0) {
lantern.deactivate(hero, false);
detach();
return true;
}
lantern.spendCharge();
} else {
GLog.n("在遗物状态下无法点亮提灯");
detach();
return true;
}
lantern.spendCharge();
if(Dungeon.depth>20){
spend(DELAY + 6f);

View File

@ -975,8 +975,6 @@ public class Hero extends Char {
lanterfire = 100;
new OilLantern().quantity(1).identify().collect();
new Ankh().quantity(1).identify().collect();
lanterfireactive = true;
Buff.affect( this, Nyctophobia.class );

View File

@ -123,32 +123,38 @@ public class Bestiary {
switch (Random.Int(6)) {
case 0:
return new ArrayList<>(Arrays.asList(Skeleton.class, BlackHost.class,
Thief.class,DM100.class,Necromancer.class));
Thief.class,DM100.class,Necromancer.class,Monk.class,
Golem.class));
case 1:
return new ArrayList<>(Arrays.asList(Skeleton.class, Skeleton.class, Skeleton.class,
Thief.class,Thief.class,Fire_Scorpio.class,
DM200.class,SkullShaman.class,
DM100.class, Ice_Scorpio.class));
DM100.class, Ice_Scorpio.class,Monk.class,
Golem.class));
case 2:
return new ArrayList<>(Arrays.asList(
Succubus.class,
Eye.class,ShieldHuntsman.class,Scorpio.class,Fire_Scorpio.class));
Eye.class,ShieldHuntsman.class,Scorpio.class,Monk.class,
Golem.class));
case 3:
return new ArrayList<>(Arrays.asList(
Succubus.class, Succubus.class, Succubus.class,
Succubus.class, Succubus.class,
Eye.class,ShieldHuntsman.class,Ice_Scorpio.class,Fire_Scorpio.class,Albino.class));
Eye.class,ShieldHuntsman.class,Albino.class,Monk.class,
Golem.class));
case 4:
return new ArrayList<>(Arrays.asList(
Succubus.class,
Succubus.class,
Eye.class,ShieldHuntsman.class,Ice_Scorpio.class));
Eye.class,ShieldHuntsman.class,
Monk.class,
Golem.class));
case 5:
return new ArrayList<>(Arrays.asList(
Succubus.class,
Eye.class, Eye.class,
Scorpio.class, Eye.class,Succubus.class,
Ice_Scorpio.class,Fire_Scorpio.class));
Scorpio.class, Eye.class,Succubus.class,Monk.class,
Golem.class));
}
default:
return new ArrayList<>(Arrays.asList(Rat.class, Rat.class,
@ -168,7 +174,7 @@ public class Bestiary {
case 2:
return new ArrayList<>(Arrays.asList(Rat.class,
Rat.class, Rat.class, Gnoll.class, Gnoll.class,
Gnoll.class, Gnoll.class, Albino.class));
Gnoll.class, Gnoll.class));
case 3:
return new ArrayList<>(Arrays.asList(Rat.class,
Rat.class, Salamander.class,

View File

@ -23,6 +23,7 @@ public class Fire_Scorpio extends Scorpio{
lootChance = 0.8f;
properties.add(Property.DEMONIC);
properties.add(Property.MINIBOSS);
}
@Override
@ -30,6 +31,7 @@ public class Fire_Scorpio extends Scorpio{
damage = super.attackProc( enemy, damage );
if (Random.Int( 2,5 ) > 3) {
Buff.affect( enemy, Burning.class ).reignite( enemy, 4f );
spend(3f);
}
return damage;

View File

@ -23,6 +23,7 @@ public class Ice_Scorpio extends Scorpio{
lootChance = 0.5f;
properties.add(Property.DEMONIC);
properties.add(Property.MINIBOSS);
}
@Override
@ -30,6 +31,7 @@ public class Ice_Scorpio extends Scorpio{
damage = super.attackProc( enemy, damage );
if (Random.Int( 3,6 ) > 2) {
Buff.prolong( enemy, Chill.class, Chill.DURATION );
spend(3f);
}
return damage;
}

View File

@ -114,7 +114,7 @@ public class DiamondKnight extends Boss {
*/
@Override
public boolean isInvulnerable(Class effect) {
return (this.HP>=301 && this.HP<=360) && effect != DiamondKnight.DiedDamager.class;
return (this.HP>=301 && this.HP<=360) && effect != DiamondKnight.DiedDamager.class && !Statistics.TPDoorDieds;
}
public static class DiedDamager extends Buff {

View File

@ -3,6 +3,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs.bosses;
import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
import com.shatteredpixel.shatteredpixeldungeon.levels.ColdChestBossLevel;
@ -62,8 +63,8 @@ public class TPDoor extends Mob {
super.die(cause);
GameScene.flash(0x808080);
Statistics.TPDoorDieds = true;
((ColdChestBossLevel) Dungeon.level).progress();
}
}

View File

@ -336,7 +336,7 @@ public class Ghost extends NPC {
} else if (itemLevelRoll < 0.90f) {
itemLevel = 3;
hero.sprite.showStatus( CharSprite.NEGATIVE, "+3!!!" );
} else if (itemLevelRoll < 0.95f){
} else if (itemLevelRoll < 0.95f && Badges.isUnlocked(Badges.Badge.GHOSTDAGE)){
hero.sprite.showStatus( CharSprite.POSITIVE, "+5!!!" );
if(( !Badges.isUnlocked(Badges.Badge.DAGETO))) {
Statistics.dageCollected = 2;
@ -407,7 +407,7 @@ public class Ghost extends NPC {
} else if (itemLevelRoll < 0.90f) {
itemLevel = 3;
hero.sprite.showStatus( CharSprite.NEGATIVE, "+3!!!" );
} else if (itemLevelRoll < 0.95f){
} else if (itemLevelRoll < 0.95f && Badges.isUnlocked(Badges.Badge.GHOSTDAGE)){
hero.sprite.showStatus( CharSprite.POSITIVE, "+5!!!" );
if(( !Badges.isUnlocked(Badges.Badge.DAGETO))) {
Statistics.dageCollected = 2;

View File

@ -431,7 +431,7 @@ public class RedDragon extends NPC {
GLog.b( Messages.get(RedDragon.class, "find_me") );
//Sample.INSTANCE.play( Assets.Sounds.GHOST );
processed = true;
Statistics.questScores[2] += 4000;
Statistics.questScores[2] += 8000;
}
}

View File

@ -22,11 +22,15 @@
package com.shatteredpixel.shatteredpixeldungeon.items;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LighS;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Light;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.FlameParticle;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagicTorch;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.watabou.noosa.audio.Sample;
import com.watabou.noosa.particles.Emitter;
@ -60,19 +64,22 @@ public class Torch extends Item {
if (action.equals( AC_LIGHT )) {
hero.spend( TIME_TO_LIGHT );
hero.busy();
if (Dungeon.hero.buff(LighS.class) != null || Dungeon.hero.buff(MagicTorch.MagicLight.class) != null) {
GLog.n("你已有其他光芒效果,在这些效果取消或主动失效前,暂时无法使用火把。");
} else {
hero.spend( TIME_TO_LIGHT );
hero.busy();
hero.sprite.operate( hero.pos );
hero.sprite.operate( hero.pos );
detach( hero.belongings.backpack );
detach( hero.belongings.backpack );
Buff.affect(hero, Light.class, Light.DURATION);
Sample.INSTANCE.play(Assets.Sounds.BURNING);
Emitter emitter = hero.sprite.centerEmitter();
emitter.start( FlameParticle.FACTORY, 0.2f, 3 );
Buff.affect(hero, Light.class, Light.DURATION);
Sample.INSTANCE.play(Assets.Sounds.BURNING);
Emitter emitter = hero.sprite.centerEmitter();
emitter.start( FlameParticle.FACTORY, 0.2f, 3 );
}
}
}

View File

@ -37,7 +37,7 @@ import java.util.ArrayList;
public class Waterskin extends Item {
private static final int MAX_VOLUME = 10;
private static final int MAX_VOLUME = 16;
private static final String AC_DRINK = "DRINK";
@ -129,7 +129,7 @@ public class Waterskin extends Item {
@Override
public Item upgrade() {
DewViewSword = Math.min(DewViewSword + 1, 20);
DewViewSword = Math.min(DewViewSword + 1, 8);
return super.upgrade();
}
@Override

View File

@ -202,6 +202,77 @@ public class Bomb extends Item {
}
}
public void explodeMobs(int cell){
//We're blowing up, so no need for a fuse anymore.
this.fuse = null;
Sample.INSTANCE.play( Assets.Sounds.BLAST );
if (explodesDestructively()) {
ArrayList<Char> affected = new ArrayList<>();
if (Dungeon.level.heroFOV[cell]) {
CellEmitter.center(cell).burst(BlastParticle.FACTORY, 30);
}
boolean terrainAffected = false;
for (int n : PathFinder.NEIGHBOURS9) {
int c = cell + n;
if (c >= 0 && c < Dungeon.level.length()) {
if (Dungeon.level.heroFOV[c]) {
CellEmitter.get(c).burst(SmokeParticle.FACTORY, 4);
}
if (Dungeon.level.flamable[c]) {
Dungeon.level.destroy(c);
GameScene.updateMap(c);
terrainAffected = true;
}
//destroys items / triggers bombs caught in the blast.
// Heap heap = Dungeon.level.heaps.get(c);
// if (heap != null)
// heap.explode();
Char ch = Actor.findChar(c);
if (ch != null) {
affected.add(ch);
}
}
}
for (Char ch : affected){
//if they have already been killed by another bomb
if(!ch.isAlive()){
continue;
}
int dmg = Random.NormalIntRange(5 + Dungeon.depth, 10 + Dungeon.depth*2);
//those not at the center of the blast take less damage
if (ch.pos != cell){
dmg = Math.round(dmg*0.67f);
}
dmg -= ch.drRoll();
if (dmg > 0) {
ch.damage(dmg, this);
}
if (ch == Dungeon.hero && !ch.isAlive()) {
Dungeon.fail(Bomb.class);
}
}
if (terrainAffected) {
Dungeon.observe();
}
}
}
@Override
public boolean isUpgradable() {
return false;

View File

@ -35,6 +35,7 @@ import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.watabou.utils.Random;
import java.util.ArrayList;
@ -49,9 +50,11 @@ public class MeatPie extends Food {
protected void satisfy(Hero hero) {
if (Dungeon.isChallenged(Challenges.EXSG)){
Buff.prolong( hero, Haste.class, 8f);
hero.STR++;
hero.sprite.showStatus(CharSprite.POSITIVE, Messages.get(this, "eat_msg_1"));
GLog.p(Messages.get(this, "eat_msg_2"));
if(Random.Float() > (0.2f + (hero.STR/5f)/10f)){
hero.STR++;
hero.sprite.showStatus(CharSprite.POSITIVE, Messages.get(this, "eat_msg_1"));
GLog.p(Messages.get(this, "eat_msg_2"));
}
}
super.satisfy( hero );
Buff.affect(hero, WellFed.class).reset();

View File

@ -38,7 +38,7 @@ public class SmallRation extends Food {
@Override
protected void satisfy( Hero hero ){
if (Dungeon.isChallenged(Challenges.EXSG)){
Buff.prolong( hero, Haste.class, 8f);
Buff.prolong( hero, Haste.class, 4f);
}
if (Dungeon.isChallenged(Challenges.NO_FOOD)){

View File

@ -21,10 +21,6 @@
package com.shatteredpixel.shatteredpixeldungeon.items.food;
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.Hunger;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
@ -37,12 +33,7 @@ public class StewedMeat extends Food {
@Override
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);
}
Buff.affect(hero, Hunger.class).satisfy(energy/2f);
}
@ -97,6 +88,6 @@ public class StewedMeat extends Food {
@Override
public String desc() {
//三元一次逻辑运算
return Dungeon.isChallenged(EXSG) ? Messages.get(this, "descx") : Messages.get(this, "desc");
return Messages.get(this, "desc");
}
}

View File

@ -9,8 +9,11 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LighS;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Light;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LostInventory;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagicTorch;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
@ -84,18 +87,23 @@ public class OilLantern extends Item {
actions.add(AC_REFILL);
actions.remove("THROW");
actions.remove("DROP");
return actions;
}
public void execute(Hero hero, String action) {
if (action.equals(AC_LIGHT)) {
if (this.charge > 0) {
activate(hero, true);
} else if (this.flasks > 0) {
GLog.w(Messages.get(OilLantern.class, "lanterneedsxs"));
if (hero.buff(LostInventory.class) == null) {
if (this.charge > 0) {
activate(hero, true);
} else if (this.flasks > 0) {
GLog.w(Messages.get(OilLantern.class, "lanterneedsxs"));
} else {
GLog.w(Messages.get(OilLantern.class, "lanterneedsx"));
}
} else {
GLog.w(Messages.get(OilLantern.class, "lanterneedsx"));
GLog.n("你陷入灵魂残缺的迷茫当中 无法引燃提灯");
}
} else if (action.equals(AC_REFILL)) {
if (this.flasks > 0) {
@ -125,17 +133,22 @@ public class OilLantern extends Item {
public void activate(Hero hero, boolean voluntary) {
if (voluntary) {
hero.spend(TIME_TO_USE);
hero.busy();
GLog.i(Messages.get(OilLantern.class, "lanteron"));
hero.sprite.operate(hero.pos);
this.active = true;
updateSprite();
Buff.affect(hero, LighS.class);
hero.search(false);
Sample.INSTANCE.play("sounds/snd_click.mp3");
updateQuickslot();
Dungeon.observe();
if (Dungeon.hero.buff(Light.class) != null || Dungeon.hero.buff(MagicTorch.MagicLight.class) != null) {
GLog.n("你已有其他光芒效果,在这些效果取消或主动失效前,暂时无法使用提灯的效果。");
} else {
hero.spend(TIME_TO_USE);
hero.busy();
GLog.i(Messages.get(OilLantern.class, "lanteron"));
hero.sprite.operate(hero.pos);
this.active = true;
updateSprite();
Buff.affect(hero, LighS.class);
hero.search(false);
Sample.INSTANCE.play("sounds/snd_click.mp3");
updateQuickslot();
Dungeon.observe();
}
}
// if (voluntary && hero.lanterfire > 0) {

View File

@ -21,16 +21,11 @@
package com.shatteredpixel.shatteredpixeldungeon.items.potions;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.EXSG;
import com.shatteredpixel.shatteredpixeldungeon.Challenges;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Bleeding;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.watabou.utils.Random;
public class PotionOfExperience extends Potion {
@ -43,12 +38,7 @@ public class PotionOfExperience extends Potion {
@Override
public void apply( Hero hero ) {
identify();
if (Dungeon.isChallenged(EXSG) && Random.Float()>0.4f) {
Buff.affect(hero, Bleeding.class).set(6f);
}else{
hero.earnExp( hero.maxExp(), getClass() );
}
hero.earnExp( hero.maxExp(), getClass() );
}
@Override

View File

@ -47,7 +47,7 @@ public class PotionOfInvisibility extends Potion {
@Override
public void apply( Hero hero ) {
identify();
if(Dungeon.isChallenged(EXSG)&& Random.Float()>0.7f){
if(Dungeon.isChallenged(EXSG)&& Random.Float()>0.4f){
for (Mob mob : Dungeon.level.mobs) {
mob.beckon( Dungeon.hero.pos );
}

View File

@ -44,7 +44,7 @@ public class PotionOfMindVision extends Potion {
public void apply(Hero hero) {
identify();
if (Dungeon.isChallenged(EXSG)&& Random.Float()>0.5f) {
if (Dungeon.isChallenged(EXSG)&& Random.Float()>0.4f) {
if (Dungeon.level.mobs.size() > 0) {
GLog.i(Messages.get(this, "can't_see_mobs"));

View File

@ -46,7 +46,7 @@ public class PotionOfStrength extends Potion {
@Override
public void apply( Hero hero ) {
identify();
if(Dungeon.isChallenged(EXSG) && Random.Float()>0.8f) {
if(Dungeon.isChallenged(EXSG) && Random.Float()>0.4f) {
hero.STR--;
hero.sprite.showStatus(CharSprite.NEGATIVE, Messages.get(this, "esg_1"));
GLog.n(Messages.get(this, "esg_2"));

View File

@ -75,7 +75,7 @@ public class WaterSoul extends Elixir {
inputs = new Class[]{PotionOfHealing.class, FrozenCarpaccio.class};
inQuantity = new int[]{1, 1};
cost = 10;
cost = 14;
output = WaterSoul.class;
outQuantity = 2;

View File

@ -195,15 +195,17 @@ public class BloodthirstyThorn extends MeleeWeapon {
bloodthirstyThorn.level=Random.NormalIntRange(3,6);
}
bloodthirstyThorn.quantity(1).identify();
if(chaliceOfBlood!=null) {
bloodthirstyThorn.quantity(1).identify();
chaliceOfBlood.detachAll( hero.belongings.backpack );
chaliceOfBlood.detach(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();
if (chaliceOfBlood.level() == 10) {
ChaliceOfBlood chaliceOfBlood1 = new ChaliceOfBlood();
chaliceOfBlood1.cursed = true;
chaliceOfBlood1.level = Random.NormalIntRange(1, 3);
chaliceOfBlood1.identify().quantity(1).collect();
}
}
return sampleOutput(null);
@ -233,7 +235,7 @@ public class BloodthirstyThorn extends MeleeWeapon {
@Override
public int max(int lvl) {
return 7 + lvl*7;
return 6 + lvl*4;
}
@Override

View File

@ -37,15 +37,15 @@ public class LockSword extends MeleeWeapon {
@Override
public int max(int lvl) {
return Math.round(1.7f*(tier+1)) +
return Math.round(1.4f*(tier+1)) +
lvl*Math.round(1.5f*(tier+1));
}
@Override
public int min(int lvl) {
return Math.round(1.4f*(tier+1)) +
lvl*Math.round(0.5f*(tier+1));
return Math.round(1.2f*(tier+1)) +
lvl*Math.round(0.3f*(tier+1));
}
public String desc() {
@ -88,19 +88,19 @@ public class LockSword extends MeleeWeapon {
if (lvl>= 900) {
switch (Random.NormalIntRange(1,4)){
case 1:
dmg = (new Grim()).proc(this, attacker, defender, damage) + 8;
dmg = (new Grim()).proc(this, attacker, defender, damage) + 4;
damage = dmg;
break;
case 2:
dmg = (new Shocking()).proc(this, attacker, defender, damage) + 8;
dmg = (new Shocking()).proc(this, attacker, defender, damage) + 5;
damage = dmg;
break;
case 3:
dmg = (new Blazing()).proc(this, attacker, defender, damage) + 8;
dmg = (new Blazing()).proc(this, attacker, defender, damage) + 6;
damage = dmg;
break;
case 4:
dmg = (new Kinetic()).proc(this, attacker, defender, damage) + 8;
dmg = (new Kinetic()).proc(this, attacker, defender, damage) + 7;
damage = dmg;
break;
default:

View File

@ -7,12 +7,15 @@ 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.buffs.LighS;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Light;
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.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.watabou.noosa.Image;
import com.watabou.noosa.particles.Emitter;
import com.watabou.utils.Bundle;
@ -68,7 +71,12 @@ public class MagicTorch extends MeleeWeapon {
public void execute(Hero hero, String action) {
super.execute(hero, action);
if (AC_EQUIP.equals(action)) {
Buff.affect(hero, MagicLight.class).set((100), 1);
if (Dungeon.hero.buff(LighS.class) != null || Dungeon.hero.buff(Light.class) != null) {
GLog.n("你已有其他光芒效果,在这些效果取消或主动失效前,魔法火把的效果不生效。");
} else {
Buff.affect(hero, MagicLight.class).set((100), 1);
}
}
}

View File

@ -37,7 +37,7 @@ public class Sai extends MeleeWeapon {
hitSoundPitch = 1.3f;
tier = 4;
DLY = 0.5f; //2x speed
DLY = 0.8f; //2x speed
}
@Override
@ -74,8 +74,8 @@ public class Sai extends MeleeWeapon {
@Override
public int max(int lvl) {
return Math.round(1.5f*(tier+1)) + //10 base, down from 20
lvl*Math.round(1.0f*(tier+1)); //+2 per level, down from +4
return Math.round(1.2f*(tier+1)) + //10 base, down from 20
lvl*Math.round(0.8f*(tier+1)); //+2 per level, down from +4
}
}

View File

@ -5,7 +5,7 @@ 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.Weakness;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Cripple;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Wraith;
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
@ -19,8 +19,8 @@ import com.watabou.utils.Random;
public class WashCrime extends MeleeWeapon {
private int killmobs = 0;
private int spawnmobs = 0;
private int killmobs;
private int spawnmobs;
@Override
public int min(int lvl) {
@ -41,7 +41,7 @@ public class WashCrime extends MeleeWeapon {
tier = 5;
RCH = 3; //lots of extra reach
DLY = 2; //Slow Speed
DLY = 2f;
}
@Override
@ -66,7 +66,7 @@ public class WashCrime extends MeleeWeapon {
@Override
public int proc(Char attacker, Char defender, int damage ) {
DLY = DLY < 0.3f ? 0.3f : 2-(killmobs/10f)/10f; //Slow Speed
if(killmobs > 61 ){
killmobs=60;
} else if (defender.HP <= damage && killmobs < 61) {
@ -113,7 +113,7 @@ public class WashCrime extends MeleeWeapon {
if (Random.NormalIntRange(1, 4) == 4) {
Buff.prolong(defender, Weakness.class, 8f);
Buff.prolong(defender, Cripple.class, 8f);
} else {
return super.proc(attacker, defender, damage);
}

View File

@ -21,8 +21,6 @@
package com.shatteredpixel.shatteredpixeldungeon.levels;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.RLPT;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Blacksmith;
@ -65,12 +63,8 @@ public class CavesLevel extends RegularLevel {
//红龙的试炼
@Override
protected void createItems() {
if (Dungeon.isChallenged(RLPT)) {
super.createItems();
} else {
RedDragon.Quest.spawn(this);
super.createItems();
}
RedDragon.Quest.spawn(this);
super.createItems();
}
@Override

View File

@ -11,6 +11,7 @@ import static com.shatteredpixel.shatteredpixeldungeon.levels.ColdChestBossLevel
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
@ -32,7 +33,7 @@ import java.util.HashMap;
//宝藏迷宫 10层
public class ColdChestBossLevel extends Level {
private State pro;
public State pro;
public State pro(){
return pro;
@ -90,8 +91,6 @@ public class ColdChestBossLevel extends Level {
private static final short W = Terrain.WALL;
private static final short M = Terrain.WELL;
private static final short E = Terrain.CHASM;
private static final short X = Terrain.EXIT;
private static final short J = Terrain.ENTRANCE;
private static final short O = Terrain.WATER;
private static final short P = Terrain.EMPTY_SP;
@ -138,7 +137,7 @@ public class ColdChestBossLevel extends Level {
W,E,E,W,K,W,E,E,E,E,E,E,E,W,K,K,K,K,K,K,K,W,E,E,E,E,E,E,W,K,W,E,E,E,W,
W,E,E,W,K,W,E,E,E,E,E,E,E,W,K,K,K,P,K,K,K,W,E,E,E,E,E,E,W,K,W,E,E,E,W,
W,E,E,W,K,W,W,W,W,W,W,W,W,W,K,K,P,P,P,K,K,W,W,W,W,W,W,W,W,K,W,E,E,E,W,
W,E,E,W,K,K,K,K,K,K,K,K,K,D,K,P,P,X,P,P,K,D,K,K,K,K,K,K,K,K,W,E,E,E,W,
W,E,E,W,K,K,K,K,K,K,K,K,K,D,K,P,P,P,P,P,K,D,K,K,K,K,K,K,K,K,W,E,E,E,W,
W,E,E,W,W,W,W,W,W,W,W,W,W,W,K,K,P,P,P,K,K,W,W,W,W,W,W,W,W,W,W,E,E,E,W,
W,E,E,E,E,E,E,E,E,E,E,E,E,W,K,K,K,P,K,K,K,W,E,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,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,
@ -307,7 +306,6 @@ public class ColdChestBossLevel extends Level {
public void progress(){
switch (pro) {
case GO_START:
//如果有生物来到BossDoor的下一个坐标且生物是玩家那么触发seal().
seal();
DiamondKnight bossx = new DiamondKnight();
bossx.state = bossx.WANDERING;
@ -451,7 +449,7 @@ public class ColdChestBossLevel extends Level {
for (Mob boss : Dungeon.level.mobs.toArray(new Mob[0])) {
if(boss instanceof DiamondKnight) {
//如果楼层为开始且boss血量小于300 2阶段
if (pro == MAZE_START && boss.HP <= 300) {
if (pro == MAZE_START && boss.HP <= 300 || Statistics.TPDoorDieds) {
//动态修改整个房间 宝藏迷宫
changeMap(EndMap);
//在切换房间的时候立刻切换全新坐标

View File

@ -112,23 +112,22 @@ public class ZeroLevel extends Level {
drop( ( Generator.randomUsingDefaults( Generator.Category.SCROLL ) ), this.width * 20 + 17 );
drop( ( Generator.randomUsingDefaults( Generator.Category.SCROLL ) ), this.width * 19 + 16 );
drop( new Ankh(), this.width * 17 + 20 );
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( new Pasty(), this.width * 20 + 19 );
if ( Badges.isUnlocked(Badges.Badge.GODD_MAKE)){
drop( ( Generator.randomUsingDefaults( Generator.Category.RING ) ), this.width * 17 + 18 );
}
if ( Badges.isUnlocked(Badges.Badge.BIG_X)){
drop( ( Generator.randomUsingDefaults( Generator.Category.ARMOR ) ), this.width * 19 + 18 );
}
if ( Badges.isUnlocked(Badges.Badge.KILL_APPLE)||Badges.isUnlocked(Badges.Badge.KILL_MG) ){
drop(new Ankh(), this.width * 18 + 17 );
if ( Badges.isUnlocked(Badges.Badge.KILL_DM720)||Badges.isUnlocked(Badges.Badge.KILL_MG) ){
drop(( Generator.randomUsingDefaults( Generator.Category.WEP_T2 )), this.width * 18 + 17 );
}
if ( Badges.isUnlocked(Badges.Badge.RLPT)){
drop( ( Generator.randomUsingDefaults( Generator.Category.ARTIFACT ) ), this.width * 18 + 19 );

View File

@ -256,7 +256,7 @@ public class SurfaceScene extends PixelScene {
add( gameOver );
Badges.validateHappyEnd();
Badges.STORM();
fadeIn();
}

View File

@ -146,7 +146,7 @@ public class DimandKingSprite extends MobSprite {
super();
texture( Dungeon.hero.heroClass.spritesheet() );
updateArmor( 6 );
updateArmor( 7 );
idle();
}

View File

@ -0,0 +1,30 @@
package com.shatteredpixel.shatteredpixeldungeon.sprites;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.watabou.noosa.TextureFilm;
public class SeaVastGirlSprites extends MobSprite {
public SeaVastGirlSprites() {
super();
texture( Assets.Sprites.VSGR );
TextureFilm frames = new TextureFilm( texture, 24, 24 );
idle = new Animation( 2, true );
idle.frames( frames, 0, 0, 0, 1,1,1,2 );
run = new Animation( 8, true );
run.frames( frames, 3, 4, 5, 6 );
attack = new Animation( 15, false );
attack.frames( frames, 7, 8, 9, 0 );
die = new Animation( 10, false );
die.frames( frames, 0 );
play( idle );
}
}

View File

@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.SPDAction;
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LostInventory;
import com.shatteredpixel.shatteredpixeldungeon.custom.utils.Constants;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
@ -221,7 +222,8 @@ public class QuickSlotButton extends Button {
}
private void enableSlot() {
slot.enable(Dungeon.quickslot.isNonePlaceholder( slotNum ));
slot.enable(Dungeon.quickslot.isNonePlaceholder( slotNum )
&& (Dungeon.hero.buff(LostInventory.class) == null || Dungeon.quickslot.getItem(slotNum).keptThoughLostInvent));
}
private void useTargeting() {

View File

@ -354,7 +354,7 @@ public class StatusPane extends Component {
}
if(SPDSettings.TimeLimit()) {
timeText.x = MenuPane.version.x;
timeText.x = MenuPane.version.x - 10;
timeText.y = MenuPane.version.y + 5;
@ -442,7 +442,7 @@ public class StatusPane extends Component {
if(Dungeon.hero.isAlive()){
Date date = new Date();
String strDateFormat = "yyyy-MM-dd HH:mm:ss";
String strDateFormat = "yyyy-MM-dd HH:mm";
SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat, Locale.getDefault());
Calendar cal=Calendar.getInstance();
int s=cal.get(Calendar.SECOND);

View File

@ -19,6 +19,7 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.DiedMonkLoaderSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.DimandKingSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.FlameBoiSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.GhostSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.IceFireScorpioSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.IceStalSprites;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
@ -50,6 +51,9 @@ import java.util.ArrayList;
public class vM0_6_7_X_Changes {
public static void addAllChanges(ArrayList<ChangeInfo> changeInfos) {
add_v0_6_39_Changes(changeInfos);
add_v0_6_38_Changes(changeInfos);
add_v0_6_37_Changes(changeInfos);
add_v0_6_36_Changes(changeInfos);
add_v0_6_35_Changes(changeInfos);
add_v0_6_34_Changes(changeInfos);
@ -89,8 +93,131 @@ public class vM0_6_7_X_Changes {
add_v0_6_0_Changes(changeInfos);
}
public static void add_v0_6_39_Changes( ArrayList<ChangeInfo> changeInfos ) {
ChangeInfo changes = new ChangeInfo("v0.6.2.0-Beta3", 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(Icons.get(Icons.PREFS), ("徽章改进"),
("徽章现在进行了一定的改进,并追加了一些新徽章。")));
changes = new ChangeInfo("改动", false, null);
changes.hardlight(Window.CYELLOW);
changeInfos.add(changes);
Image issxsaxs =new DimandKingSprite();
issxsaxs.scale.set(PixelScene.align(0.8f));
changes.addButton(new ChangeButton(issxsaxs,("拟态王改进"),
("修复拟态王二阶段可能无法跳转地图的问题")));
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_06X68")));
}
public static void add_v0_6_38_Changes( ArrayList<ChangeInfo> changeInfos ) {
ChangeInfo changes = new ChangeInfo("v0.6.2.0-Beta2", 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(Icons.get(Icons.CHALLENGE_ON), ("药水癔症"),
("药水癔症已经进行了一定的改进,详见挑战说明。")));
changes.addButton(new ChangeButton(Icons.get(Icons.STATS), ("评分系统"),
("评分系统现在进行了一些Bug修复并且对评分追加SSS+评级。")));
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_06X67")));
changes.addButton(new ChangeButton(new GhostSprite(), "幽灵任务",
"幽灵任务现在进行了调整,如果未获得+4徽章是无法获得+5的东西的。并且两个徽章不在独立合并起来了。"));
changes = new ChangeInfo("平衡", false, null);
changes.hardlight(Window.RED_COLOR);
changeInfos.add(changes);
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.WATERSOUL), "水灵药剂",
"炼金能量从10提升到14。"));
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.BloodDied), "嗜血荆棘",
"整体攻击面板属性削弱,其余效果不变"));
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.SAI), "吸血鬼刀",
"整体攻击面板属性削弱攻速从0.5变成0.8。"));
changes.addButton(new ChangeButton(new IceFireScorpioSprite(), "寒冰巨蝎",
"现在攻速调整为3回合一次火蝎子也是一样的。"));
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.DASlade), "涤罪",
"现在攻速随着杀怪数量渐渐追加最快可达到0.3x"));
changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), "突变爆炸体",
"突变爆炸体现在死亡不会摧毁你的物品。"));
}
public static void add_v0_6_37_Changes( ArrayList<ChangeInfo> changeInfos ) {
ChangeInfo changes = new ChangeInfo("v0.6.2.0-Beta1", 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(Icons.get(Icons.COPY), ("UI迭代更新"),
("文本类UI已经进行迭代现在拥有更好的使用体验。")));
changes.addButton(new ChangeButton(Icons.get(Icons.STATS), ("评分系统"),
("现在魔绫加入评分系统,并且含有评分等级。\n快去开一把看看自己能获得什么水准吧。")));
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.SEED_SKYBLUEFIRE), "地牢种子",
"现在排行榜进行了翻新,你的种子可以在这里快速分享给其他人。\n" +
"当然,仅限更新后的新版本哦。"));
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.ARMOR_LAMELLAR), "第6代护甲",
"札甲全新登场,你有尝试过叠甲的快乐吗?"));
changes = new ChangeInfo("改动", false, null);
changes.hardlight(Window.CYELLOW);
changeInfos.add(changes);
changes.addButton(new ChangeButton(Icons.get(Icons.INFO), ("文案调整"),
("部分文案得到优化调整。")));
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_06X66")));
changes = new ChangeInfo("削弱", false, null);
changes.hardlight(Window.RED_COLOR);
changeInfos.add(changes);
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.BloodDied), "嗜血荆棘",
"整体成长属性削弱。"));
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.DG3), "归溯钥剑",
"整体成长属性削弱,随机附魔概率减少。"));
}
public static void add_v0_6_36_Changes( ArrayList<ChangeInfo> changeInfos ) {
ChangeInfo changes = new ChangeInfo("v0.6.1.0-Beta7.3(P3)-520特别更新", true, "");
ChangeInfo changes = new ChangeInfo("v0.6.1.0-Beta7.3", true, "");
changes.hardlight(Window.TITLE_COLOR);
changeInfos.add(changes);
@ -344,15 +471,15 @@ public class vM0_6_7_X_Changes {
changeInfos.add(changes);
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.MAGES_STAFF), ("首领对决V1.7"),
("1.修复了BR模式的19层的错误生成加强10层钻石宝箱王的攻击能力\n" +
("1.修复了娱乐模式的19层的错误生成加强10层钻石宝箱王的攻击能力\n" +
"2.现在17层和27层可以上楼了\n" +
"3.英雄素材更新,部分物品贴图更新\n" +
"4.现在击败宝箱王不再能获得拟态徽章28层完成后通过水晶之心会直接幸福结局。")));
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.ARTIFACT_HORN4), ("首领对决V1.6"),
("1.部分Boss发生了改变19层火魔女21层矮人国王25层矮人将军\n" +
"2.现在不会在BR模式生成跳楼房间以及修复了一些Bug\n" +
"3.现在诅咒法杖不会在BR模式中触发传送效果")));
"2.现在不会在娱乐模式生成跳楼房间以及修复了一些Bug\n" +
"3.现在诅咒法杖不会在娱乐模式中触发传送效果")));
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.ARTIFACT_ROSE3), ("首领对决V1.5"),
("1.现在可以在3层完成幽妹的任务让她和你并肩前行。\n" +

View File

@ -4,11 +4,12 @@ import com.shatteredpixel.shatteredpixeldungeon.Statistics;
public class LevelChecker {
private static final int SSS_SCORE = 10000;
private static final int SS_SCORE = 8000;
private static final int S_SCORE = 5000;
private static final int A_SCORE = 4500;
private static final int B_SCORE = 6000;
public static final int SSSP_SCORE = 250000;
public static final int SSS_SCORE = 200000;
public static final int SS_SCORE = 100000;
private static final int S_SCORE = 50000;
public static final int A_SCORE = 20000;
public static final int B_SCORE = 10000;
private static final int C_SCORE = 5000;
private static final int D_SCORE = 4000;
private static final int E_SCORE = 3000;
@ -19,10 +20,11 @@ public class LevelChecker {
boolean amuletObtained = Statistics.amuletObtained;
String level;
if (totalScore >= SSS_SCORE * chalMultiplier * (amuletObtained ? 1 : 5)) {
if (totalScore >= SSSP_SCORE * chalMultiplier * (amuletObtained ? 0.7 : 5)) {
level = "_SSS+_";
} else if (totalScore >= SSS_SCORE * chalMultiplier/2 * (amuletObtained ? 1 : 4)) {
level = "SSS";
} else if (totalScore >= SS_SCORE * chalMultiplier * (amuletObtained ? 1 : 4)) {
} else if (totalScore >= SS_SCORE * chalMultiplier * (amuletObtained ? 1 : 3)) {
level = "SS";
} else if (totalScore >= S_SCORE * chalMultiplier * (amuletObtained ? 1 : 3)) {
level = "S";

View File

@ -3,7 +3,7 @@
* Copyright (C) 2012-2015 Oleg Dolya
*
* Shattered Pixel Dungeon
* Copyright (C) 2014-2022 Evan Debenham
* Copyright (C) 2014-2023 Evan Debenham
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -42,19 +42,35 @@ public class WndBadge extends Window {
if (!unlocked) icon.brightness(0.4f);
add( icon );
RenderedTextBlock info = PixelScene.renderTextBlock( badge.desc(), 6 );
RenderedTextBlock title = PixelScene.renderTextBlock( badge.title(), 9 );
title.maxWidth(MAX_WIDTH - MARGIN * 2);
title.align(RenderedTextBlock.CENTER_ALIGN);
title.hardlight(TITLE_COLOR);
if (!unlocked) title.hardlight( 0x888822 );
add(title);
String desc = badge.desc();
RenderedTextBlock info = PixelScene.renderTextBlock( desc, 6 );
info.maxWidth(MAX_WIDTH - MARGIN * 2);
info.align(RenderedTextBlock.CENTER_ALIGN);
if (!unlocked) info.hardlight( 0x888888 );
if (!unlocked) {
info.hardlight( 0x888888 );
info.setHightlighting( true, 0x888822 );
}
add(info);
float w = Math.max( icon.width(), info.width() ) + MARGIN * 2;
float w = Math.max( icon.width(), Math.max(title.width(), info.width()) ) + MARGIN * 2;
icon.x = (w - icon.width()) / 2f;
icon.y = MARGIN;
PixelScene.align(icon);
info.setPos((w - info.width()) / 2, icon.y + icon.height() + MARGIN);
title.setPos((w - title.width()) / 2, icon.y + icon.height() + MARGIN);
PixelScene.align(title);
info.setPos((w - info.width()) / 2, title.bottom() + MARGIN);
PixelScene.align(info);
resize( (int)w, (int)(info.bottom() + MARGIN) );
if (unlocked) BadgeBanner.highlight( icon, badge.image );

View File

@ -30,6 +30,7 @@ import com.shatteredpixel.shatteredpixeldungeon.SPDSettings;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Belongings;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
@ -44,6 +45,8 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.Icons;
import com.shatteredpixel.shatteredpixeldungeon.ui.ItemSlot;
import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton;
import com.shatteredpixel.shatteredpixeldungeon.ui.RenderedTextBlock;
import com.shatteredpixel.shatteredpixeldungeon.ui.TalentButton;
import com.shatteredpixel.shatteredpixeldungeon.ui.TalentsPane;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.shatteredpixel.shatteredpixeldungeon.utils.DungeonSeed;
import com.watabou.noosa.ColorBlock;
@ -198,6 +201,53 @@ public class WndRanking extends WndTabbed {
version.setPos(WIDTH-version.width(), pos);
add(version);
RedButton btnTalents = new RedButton( Messages.get(this, "talents") ){
@Override
protected void onClick() {
//removes talents from upper tiers
int tiers = 1;
if (Dungeon.hero.lvl >= 6) tiers++;
if (Dungeon.hero.lvl >= 12 && Dungeon.hero.subClass != HeroSubClass.NONE) tiers++;
if (Dungeon.hero.lvl >= 20 && Dungeon.hero.armorAbility != null) tiers++;
while (Dungeon.hero.talents.size() > tiers){
Dungeon.hero.talents.remove(Dungeon.hero.talents.size()-1);
}
Game.scene().addToFront( new Window(){
{
TalentsPane p = new TalentsPane(TalentButton.Mode.INFO);
add(p);
p.setPos(0, 0);
p.setSize(120, p.content().height());
resize((int)p.width(), (int)p.height());
p.setPos(0, 0);
}
});
}
};
int buttontopx = HEIGHT - 36;
btnTalents.icon(Icons.get(Icons.TALENT));
if (Dungeon.challenges > 0) {
btnTalents.setRect((WIDTH - btnTalents.reqWidth() + 2) / 6, buttontopx, btnTalents.reqWidth() + 2, 16);
} else {
btnTalents.setRect((WIDTH - btnTalents.reqWidth() + 2) / 2, buttontopx, btnTalents.reqWidth() + 2, 16);
}
add(btnTalents);
if (Dungeon.challenges > 0) {
RedButton btnChallenges = new RedButton( Messages.get(this, "challenges") ) {
@Override
protected void onClick() {
Game.scene().add( new WndChallenges( Dungeon.challenges, false,null ) );
}
};
btnChallenges.icon(Icons.get(Icons.CHALLENGE_ON));
btnChallenges.setRect( (WIDTH - btnTalents.reqWidth()-12), buttontopx, btnTalents.reqWidth()+2 , 16 );
add( btnChallenges );
}
pos = date.bottom()+5;
NumberFormat num = NumberFormat.getInstance(Locale.US);

View File

@ -22,6 +22,7 @@
package com.shatteredpixel.shatteredpixeldungeon.windows;
import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero;
import static com.shatteredpixel.shatteredpixeldungeon.Statistics.TPDoorDieds;
import static com.shatteredpixel.shatteredpixeldungeon.Statistics.crivusfruitslevel2;
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
@ -148,6 +149,11 @@ public class WndResurrect extends Window {
crivusfruitslevel2 = false;
}
//拟态王二阶段死亡的时候给予重新评估
if(TPDoorDieds){
TPDoorDieds = false;
}
//矮人将军
Buff.affect(hero, TestDwarfMasterLock.class).set((1), 1);

View File

@ -37,10 +37,10 @@ public class WndScoreBreakdown extends Window {
num.format(Statistics.exploreScore), pos, Statistics.exploreScore >= 20_000);
pos = addInfo(this, Messages.get(this, "explore_desc"), pos);
pos = statSlot(this, Messages.get(this, "bosses_title"),
num.format(Statistics.totalBossScore), pos, Statistics.totalBossScore >= 15_000);
num.format(Statistics.totalBossScore), pos, Statistics.totalBossScore >= 18_000);
pos = addInfo(this, Messages.get(this, "bosses_desc"), pos);
pos = statSlot(this, Messages.get(this, "quests_title"),
num.format(Statistics.totalQuestScore), pos, Statistics.totalQuestScore >= 10_000);
num.format(Statistics.totalQuestScore), pos, Statistics.totalQuestScore >= 14_000);
pos = addInfo(this, Messages.get(this, "quests_desc"), pos);
if (Statistics.winMultiplier > 1) {