Update 0.6.5.0-Alpha5.2
This commit is contained in:
parent
db3326416d
commit
6611615a13
|
@ -18,8 +18,8 @@ allprojects {
|
||||||
appName = 'Magic Ling Pixel Dungeon'
|
appName = 'Magic Ling Pixel Dungeon'
|
||||||
appPackageName = 'com.ansdomagiclingpixeldungeon.ling'
|
appPackageName = 'com.ansdomagiclingpixeldungeon.ling'
|
||||||
|
|
||||||
appVersionCode =907700
|
appVersionCode =907750
|
||||||
appVersionName = '0.6.5.0-Alpha5.1'
|
appVersionName = '0.6.5.0-Alpha5.2'
|
||||||
|
|
||||||
appJavaCompatibility = JavaVersion.VERSION_11
|
appJavaCompatibility = JavaVersion.VERSION_11
|
||||||
|
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 21 KiB |
Binary file not shown.
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 19 KiB |
Binary file not shown.
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
|
@ -415,8 +415,8 @@ custom.testmode.mobplacer.elite_name9=失败体
|
||||||
custom.testmode.mobplacer.elite_name10=爆炸体
|
custom.testmode.mobplacer.elite_name10=爆炸体
|
||||||
custom.testmode.mobplacer.elite_name11=完全体
|
custom.testmode.mobplacer.elite_name11=完全体
|
||||||
custom.testmode.mobplacer.elite_name12=危险体
|
custom.testmode.mobplacer.elite_name12=危险体
|
||||||
custom.testmode.mobplacer.elite_name13=烟雾体
|
custom.testmode.mobplacer.elite_name13=酸液体
|
||||||
custom.testmode.mobplacer.elite_name14=酸液体
|
custom.testmode.mobplacer.elite_name14=烟雾体
|
||||||
|
|
||||||
custom.testmode.mobplacer.elite_name15=[友好[
|
custom.testmode.mobplacer.elite_name15=[友好[
|
||||||
|
|
||||||
|
|
|
@ -444,7 +444,7 @@ items.bags.kingbag.desc=矮人国王的€定制背包€,好东西,就要
|
||||||
|
|
||||||
|
|
||||||
items.weapon.melee.runicblade.name=贤者之剑
|
items.weapon.melee.runicblade.name=贤者之剑
|
||||||
items.weapon.melee.runicblade.stats_desc=这把武器可以在战斗中获得更多的伤害!
|
items.weapon.melee.runicblade.stats_desc=这把武器可以在升级中获得更多的伤害!
|
||||||
items.weapon.melee.runicblade.cooldown=贤者之剑正在重新聚集魔力。在充能过程中其近战伤害将提高。\n贤者之剑将在%s回合后充能完毕。
|
items.weapon.melee.runicblade.cooldown=贤者之剑正在重新聚集魔力。在充能过程中其近战伤害将提高。\n贤者之剑将在%s回合后充能完毕。
|
||||||
items.weapon.melee.runicblade.ac_zap=释放
|
items.weapon.melee.runicblade.ac_zap=释放
|
||||||
items.weapon.melee.runicblade.fizzles=你的贤者之剑滋滋作响;一定是没有足够的能量。
|
items.weapon.melee.runicblade.fizzles=你的贤者之剑滋滋作响;一定是没有足够的能量。
|
||||||
|
@ -678,6 +678,7 @@ items.artifacts.cloakofshadows.ac_bloodbat=召唤伙伴
|
||||||
|
|
||||||
items.artifacts.driedrose.name=干枯玫瑰
|
items.artifacts.driedrose.name=干枯玫瑰
|
||||||
items.artifacts.driedrose.ac_summon=召唤
|
items.artifacts.driedrose.ac_summon=召唤
|
||||||
|
items.artifacts.driedrose.sorry=冒险者,我要去陪我的爱人了……
|
||||||
items.artifacts.driedrose.ac_direct=指引
|
items.artifacts.driedrose.ac_direct=指引
|
||||||
items.artifacts.driedrose.ac_outfit=装备
|
items.artifacts.driedrose.ac_outfit=装备
|
||||||
items.artifacts.driedrose.spawned=你已经召唤出幽灵了。
|
items.artifacts.driedrose.spawned=你已经召唤出幽灵了。
|
||||||
|
|
|
@ -305,7 +305,7 @@ paswordbadges$badge.night_cat.desc=在现实时间的夜间单局游玩超过600
|
||||||
challenges.no_food=缩餐节食
|
challenges.no_food=缩餐节食
|
||||||
challenges.no_food_desc=食物本就稀缺,但你还需要注意节食!\n\n・使用各类食物与丰饶之角的饱腹效果为原本的三分之一。\n・其他恢复饥饿的机制不受影响。
|
challenges.no_food_desc=食物本就稀缺,但你还需要注意节食!\n\n・使用各类食物与丰饶之角的饱腹效果为原本的三分之一。\n・其他恢复饥饿的机制不受影响。
|
||||||
challenges.no_armor=无甲之身
|
challenges.no_armor=无甲之身
|
||||||
challenges.no_armor_desc=要相信自己,因为不能相信护甲了!\n\n・布甲之外所有常规护甲被禁止生成。\n・布甲被升级时增长的防御力大幅降低。\n・灵壤守护者的防御力大幅降低。\n\n_地牢环境已发生改变,请小心应对。(种子物品有生成变动)_
|
challenges.no_armor_desc=要相信自己,因为不能相信护甲了!\n\n・布甲之外所有常规护甲被禁止生成。\n・布甲被升级时增长的防御力大幅降低。\n・灵壤守护者的防御力大幅降低。
|
||||||
challenges.no_healing=恐药异症
|
challenges.no_healing=恐药异症
|
||||||
challenges.no_healing_desc=治疗药水真是种好东西,可惜你对它过敏!\n\n・治疗药水以及使用治疗药水炼制的道具将无法治愈英雄,反而会使英雄中毒。\n・炼金催化剂不会随机到治愈英雄或使英雄中毒的效果。\n・这些道具对其他角色依然发挥正常效果。
|
challenges.no_healing_desc=治疗药水真是种好东西,可惜你对它过敏!\n\n・治疗药水以及使用治疗药水炼制的道具将无法治愈英雄,反而会使英雄中毒。\n・炼金催化剂不会随机到治愈英雄或使英雄中毒的效果。\n・这些道具对其他角色依然发挥正常效果。
|
||||||
challenges.no_herbalism=荒芜之地
|
challenges.no_herbalism=荒芜之地
|
||||||
|
@ -347,8 +347,8 @@ challenges.exsg_desc=药水癔症详细规则:\n力量药水--60%概率力量-
|
||||||
challenges.icedied = 雪虐风饕(未完成)
|
challenges.icedied = 雪虐风饕(未完成)
|
||||||
challenges.icedied_desc=很显然,地牢的雪越下越大了,在这严寒里面,生存的法则将进一步让我们活得更久。\n篝火房间一旦被激活不再无限,变成40回合的寒冷抑制,商人会贩卖更多特殊物品。
|
challenges.icedied_desc=很显然,地牢的雪越下越大了,在这严寒里面,生存的法则将进一步让我们活得更久。\n篝火房间一旦被激活不再无限,变成40回合的寒冷抑制,商人会贩卖更多特殊物品。
|
||||||
|
|
||||||
challenges.morelevel=变幻莫测(中秋实装)
|
challenges.morelevel=变幻莫测(今晚实装)
|
||||||
challenges.morelevel_desc=地牢在时间的长河中渐渐的诞生了更多地形,这次探索地牢谁知道能遇到什么?\n\n_地牢环境已发生改变,请小心应对。
|
challenges.morelevel_desc=地牢在时间的长河中渐渐的诞生了更多地形,这次探索地牢谁知道能遇到什么?\n\n新增6种全新地形感知,6个特殊新怪物。\n\n_地牢环境已发生改变,请小心应对_\n\n(每层必定触发地形感知,且全部均为大型地形)。_
|
||||||
|
|
||||||
challenges.dhxd =灯火前路
|
challenges.dhxd =灯火前路
|
||||||
challenges.dhxd_desc= 灯火指引着前进的道路,提灯引路,灯火前行! \n\n此为三挑以上的特殊机制,但你也可以直接开启它!\n\n1.追加灯火祝福和魔女诅咒机制,灯火会随着深入楼层进行降低\n2.在较低的灯火下死亡会精神崩溃,诞生自己的暗影。\n3.追加提灯和灯油,合理使用这些道具,让自己能在灯火祝福中活下去!如果不幸遭到魔女的诅咒,也不会让你陷入绝境。\n\n灯火不灭,希望仍在,提灯引路,灯火前行!
|
challenges.dhxd_desc= 灯火指引着前进的道路,提灯引路,灯火前行! \n\n此为三挑以上的特殊机制,但你也可以直接开启它!\n\n1.追加灯火祝福和魔女诅咒机制,灯火会随着深入楼层进行降低\n2.在较低的灯火下死亡会精神崩溃,诞生自己的暗影。\n3.追加提灯和灯油,合理使用这些道具,让自己能在灯火祝福中活下去!如果不幸遭到魔女的诅咒,也不会让你陷入绝境。\n\n灯火不灭,希望仍在,提灯引路,灯火前行!
|
||||||
|
@ -356,8 +356,7 @@ challenges.dhxd_desc= 灯火指引着前进的道路,提灯引路,灯火前
|
||||||
challenges.cs=挑战(占位符)
|
challenges.cs=挑战(占位符)
|
||||||
challenges.cs_desc=这并不是挑战,请忽略不计。
|
challenges.cs_desc=这并不是挑战,请忽略不计。
|
||||||
|
|
||||||
challenges.no_armorx = 这片大地吃布甲之外的护甲从不挑食,侦查到作弊行为,已移除。
|
challenges.no_armorx = 这片大地吃布甲之外的护甲从不挑食,侦查到非布甲的护甲,系统已自动移除。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
kill=\n_冰雪魔女:_\n_-_生命+25%\n_-_ 水中召唤的仆从更多\n-击败时必定掉落紫金宝石护符\n_矮人大师:_\n_-_ 致命技能更加频繁\n_-_ 生命值+50%\n-击败时必定掉落自然神圣护符\n_史莱姆王:_\n_-_ 生命值+100%\n_-_ 伤害更高,速度更快\n_-_ 在开局额外召唤豺狼诡术师,巨钳螃蟹,腐臭老鼠,蚀化史莱姆\n_-_ 击败时必定掉落凝胶手套\n_DM720:_\n_-_ 获得全新技能\n_-_ 击败时必定掉落DM150控制终端[尚未完成]
|
kill=\n_冰雪魔女:_\n_-_生命+25%\n_-_ 水中召唤的仆从更多\n-击败时必定掉落紫金宝石护符\n_矮人大师:_\n_-_ 致命技能更加频繁\n_-_ 生命值+50%\n-击败时必定掉落自然神圣护符\n_史莱姆王:_\n_-_ 生命值+100%\n_-_ 伤害更高,速度更快\n_-_ 在开局额外召唤豺狼诡术师,巨钳螃蟹,腐臭老鼠,蚀化史莱姆\n_-_ 击败时必定掉落凝胶手套\n_DM720:_\n_-_ 获得全新技能\n_-_ 击败时必定掉落DM150控制终端[尚未完成]
|
||||||
|
|
|
@ -558,4 +558,7 @@ ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x84=1.修复酸液体和爆炸体权
|
||||||
|
|
||||||
ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x85=1.修复酸液体和爆炸体权重错误的问题\n2.修复一些少量错误
|
ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x85=1.修复酸液体和爆炸体权重错误的问题\n2.修复一些少量错误
|
||||||
|
|
||||||
|
ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x86=1:开发者模式下召唤的恶魔血巢可以移动和攻击攻击无动画且时间长,移动也无动画且移动后贴图和实际位置会不同(已处理,处理方式:移除)\n2:修复开发者模式下召唤烟雾体实际上召唤的是酸液体\n3:开启缩餐节食下幽灵的小月饼会消失(ling以知晓)(已处理,处理方式:食物即刻起正常生成)\n4:碧灰双刃的伤害固定,极化,安息,强化符石,额外力量均无法影响\n5:种子鞋的腐梅效果使用后会出现一个腐梅种子\n6:弱肉强食成就获取后每有怪物死亡就会在右下角播报(ling以知晓)(潘多拉已修复该问题)\n7:焰浪法杖加一只有2点充能(ling以知晓)(已处理,处理方式,换成upgrade函数)\n8:拟态王宝藏没获取第一个后续宝藏会消失(ling以知晓)(潘多拉已修复该问题,Ling已进行改进)\n9:水晶宝箱怪会飞(潘多拉已修复该问题)\n10:部分boss墙壁会消失,推测是因为吊桥楼层原因(已尝试修复,需要玩家验证)\n11:br可以通过升降器去到28层以后的楼层\n12:共生法杖可以通过奥术聚酯升级(ling以知晓)\n13:催眠符石有俩个效果\n14:快捷合成表部分图标错误(已处理)\n15:修复部分楼层转换错误。
|
||||||
|
|
||||||
|
|
||||||
//ui.changelist.mlpd.vm0_5_x_changes.xxx//
|
//ui.changelist.mlpd.vm0_5_x_changes.xxx//
|
|
@ -94,7 +94,7 @@ public class Assets {
|
||||||
public static final String TILES_DIED = "environment/tiles_died.png";
|
public static final String TILES_DIED = "environment/tiles_died.png";
|
||||||
public static final String TILES_GOLD = "environment/tiles_gold.png";
|
public static final String TILES_GOLD = "environment/tiles_gold.png";
|
||||||
|
|
||||||
public static final String WATER_COLD= "environment/water2.png";
|
public static final String WATER_COLD= "environment/water-1.png";
|
||||||
public static final String PRISON_EXIT_OLD = "environment/custom_tiles/prison_exit_old.png";
|
public static final String PRISON_EXIT_OLD = "environment/custom_tiles/prison_exit_old.png";
|
||||||
public static final String PRISON_EXIT_NEW = "environment/custom_tiles/prison_exit_new.png";
|
public static final String PRISON_EXIT_NEW = "environment/custom_tiles/prison_exit_new.png";
|
||||||
public static final String P_BOSS = "environment/custom_tiles/p_boss.png";
|
public static final String P_BOSS = "environment/custom_tiles/p_boss.png";
|
||||||
|
|
|
@ -28,7 +28,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClassArmor;
|
import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClassArmor;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClothArmor;
|
import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClothArmor;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.armor.custom.CustomArmor;
|
import com.shatteredpixel.shatteredpixeldungeon.items.armor.custom.CustomArmor;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.food.SmallRation;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.InterlevelScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.InterlevelScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||||
|
@ -53,7 +52,7 @@ public class Challenges {
|
||||||
|
|
||||||
public static final int PRO = 32768;
|
public static final int PRO = 32768;
|
||||||
|
|
||||||
public static final int MORELEVEL = 65536;
|
public static final int MOREROOM = 65536;
|
||||||
|
|
||||||
public static final int CS = 131072;
|
public static final int CS = 131072;
|
||||||
|
|
||||||
|
@ -81,16 +80,17 @@ public class Challenges {
|
||||||
|
|
||||||
public static final int[] MASKS = {
|
public static final int[] MASKS = {
|
||||||
NO_FOOD, NO_ARMOR, NO_HEALING, NO_HERBALISM, SWARM_INTELLIGENCE, DARKNESS, NO_SCROLLS
|
NO_FOOD, NO_ARMOR, NO_HEALING, NO_HERBALISM, SWARM_INTELLIGENCE, DARKNESS, NO_SCROLLS
|
||||||
, AQUAPHOBIA, CHAMPION_ENEMIES,RLPT,SBSG,EXSG,STRONGER_BOSSES,DHXD,ICEDIED,PRO,MORELEVEL,CS,
|
, AQUAPHOBIA, CHAMPION_ENEMIES,RLPT,SBSG,EXSG,STRONGER_BOSSES,DHXD,ICEDIED,PRO,MOREROOM,CS,
|
||||||
};
|
};
|
||||||
public String name;
|
public String name;
|
||||||
|
|
||||||
public static boolean isItemBlocked(Item item) {
|
public static boolean isItemBlocked(Item item) {
|
||||||
if (Dungeon.isChallenged(NO_FOOD)) {
|
//取消
|
||||||
if (item instanceof SmallRation) {
|
// if (Dungeon.isChallenged(NO_FOOD)) {
|
||||||
return true;
|
// if (item instanceof Food && !(item instanceof SmallRation || item instanceof MeatPie)) {
|
||||||
}
|
// return true;
|
||||||
}
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
if(InterlevelScene.mode == InterlevelScene.Mode.RESET){
|
if(InterlevelScene.mode == InterlevelScene.Mode.RESET){
|
||||||
if (item instanceof Ankh) {
|
if (item instanceof Ankh) {
|
||||||
|
@ -126,7 +126,7 @@ public class Challenges {
|
||||||
public static int activeChallenges() {
|
public static int activeChallenges() {
|
||||||
int chCount = 0;
|
int chCount = 0;
|
||||||
for (int ch : Challenges.MASKS) {
|
for (int ch : Challenges.MASKS) {
|
||||||
if ((Dungeon.challenges & ch) != 0 && ch <= MORELEVEL && ch != PRO && ch != DHXD) {
|
if ((Dungeon.challenges & ch) != 0 && ch <= MOREROOM && ch != PRO && ch != DHXD) {
|
||||||
chCount++;
|
chCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,8 +89,8 @@ public class ShatteredPixelDungeon extends Game {
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfFear.class,
|
com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfFear.class,
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfAffection" );
|
"com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfAffection" );
|
||||||
com.watabou.utils.Bundle.addAlias(
|
com.watabou.utils.Bundle.addAlias(
|
||||||
com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDeepSleep.class,
|
com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDeepenedSleep.class,
|
||||||
"com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDeepenedSleep" );
|
"com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDeepSleep" );
|
||||||
|
|
||||||
//v0.9.3
|
//v0.9.3
|
||||||
com.watabou.utils.Bundle.addAlias(
|
com.watabou.utils.Bundle.addAlias(
|
||||||
|
|
|
@ -117,6 +117,9 @@ public class Statistics {
|
||||||
//珍宝
|
//珍宝
|
||||||
public static int dimandchestmazeCollected;
|
public static int dimandchestmazeCollected;
|
||||||
|
|
||||||
|
//宝物生成限制,避免有byd的十字架重复刷取
|
||||||
|
public static int fuckGeneratorAlone;
|
||||||
|
|
||||||
public static int dageCollected;
|
public static int dageCollected;
|
||||||
|
|
||||||
//首次对决
|
//首次对决
|
||||||
|
@ -150,6 +153,7 @@ public class Statistics {
|
||||||
foodEaten = 0;
|
foodEaten = 0;
|
||||||
goldchestmazeCollected = 0;
|
goldchestmazeCollected = 0;
|
||||||
dimandchestmazeCollected =0;
|
dimandchestmazeCollected =0;
|
||||||
|
fuckGeneratorAlone = 0;
|
||||||
itemsCrafted = 0;
|
itemsCrafted = 0;
|
||||||
piranhasKilled = 0;
|
piranhasKilled = 0;
|
||||||
ankhsUsed = 0;
|
ankhsUsed = 0;
|
||||||
|
@ -295,6 +299,8 @@ public class Statistics {
|
||||||
|
|
||||||
private static final String LOVX = "lovx";
|
private static final String LOVX = "lovx";
|
||||||
|
|
||||||
|
private static final String FUCKALONE = "fuckplayer";
|
||||||
|
|
||||||
|
|
||||||
public static void storeInBundle( Bundle bundle ) {
|
public static void storeInBundle( Bundle bundle ) {
|
||||||
|
|
||||||
|
@ -304,6 +310,8 @@ public class Statistics {
|
||||||
bundle.put(LOVE,findMoon);
|
bundle.put(LOVE,findMoon);
|
||||||
bundle.put(LOVX,deadGo);
|
bundle.put(LOVX,deadGo);
|
||||||
|
|
||||||
|
bundle.put(FUCKALONE,fuckGeneratorAlone);
|
||||||
|
|
||||||
//分数
|
//分数
|
||||||
bundle.put( PROG_SCORE, progressScore );
|
bundle.put( PROG_SCORE, progressScore );
|
||||||
bundle.put( ITEM_VAL, heldItemValue );
|
bundle.put( ITEM_VAL, heldItemValue );
|
||||||
|
@ -397,6 +405,8 @@ public class Statistics {
|
||||||
|
|
||||||
bossWeapons = bundle.getInt(BDTX);
|
bossWeapons = bundle.getInt(BDTX);
|
||||||
|
|
||||||
|
fuckGeneratorAlone = bundle.getInt(FUCKALONE);
|
||||||
|
|
||||||
HealingIsDied = bundle.getInt( HEALDIED );
|
HealingIsDied = bundle.getInt( HEALDIED );
|
||||||
|
|
||||||
readBooks = bundle.getInt( READBOOKS );
|
readBooks = bundle.getInt( READBOOKS );
|
||||||
|
|
|
@ -63,10 +63,10 @@ import com.shatteredpixel.shatteredpixeldungeon.items.bags.BookBag;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.bags.HerbBag;
|
import com.shatteredpixel.shatteredpixeldungeon.items.bags.HerbBag;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.bags.KingBag;
|
import com.shatteredpixel.shatteredpixeldungeon.items.bags.KingBag;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.bags.VelvetPouch;
|
import com.shatteredpixel.shatteredpixeldungeon.items.bags.VelvetPouch;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.books.bookslist.DimandBook;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.books.bookslist.TestBooks;
|
import com.shatteredpixel.shatteredpixeldungeon.items.books.bookslist.TestBooks;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.food.Food;
|
import com.shatteredpixel.shatteredpixeldungeon.items.food.Food;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.food.MeatPie;
|
import com.shatteredpixel.shatteredpixeldungeon.items.food.MeatPie;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.food.SmallRation;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfExperience;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfExperience;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfInvisibility;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfInvisibility;
|
||||||
|
@ -179,7 +179,7 @@ public enum HeroClass {
|
||||||
new PotionOfMindVision().quantity(50).identify().collect();
|
new PotionOfMindVision().quantity(50).identify().collect();
|
||||||
|
|
||||||
new PotionOfLiquidFlame().quantity(50).identify().collect();
|
new PotionOfLiquidFlame().quantity(50).identify().collect();
|
||||||
new DimandBook().quantity(50).identify().collect();
|
new SmallRation.BlackMoon().quantity(50).identify().collect();
|
||||||
new PotionOfExperience().quantity(100).identify().collect();
|
new PotionOfExperience().quantity(100).identify().collect();
|
||||||
new ScrollOfMagicMapping().quantity(100).identify().collect();
|
new ScrollOfMagicMapping().quantity(100).identify().collect();
|
||||||
new ScrollOfUpgrade().quantity(100).identify().collect();
|
new ScrollOfUpgrade().quantity(100).identify().collect();
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.shatteredpixel.shatteredpixeldungeon.custom.testmode;
|
||||||
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Chrome;
|
import com.shatteredpixel.shatteredpixeldungeon.Chrome;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.Conducts;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
|
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||||
|
@ -81,7 +82,7 @@ public class LevelTeleporter extends TestItem {
|
||||||
public void execute( Hero hero, String action ) {
|
public void execute( Hero hero, String action ) {
|
||||||
super.execute( hero, action );
|
super.execute( hero, action );
|
||||||
if(action.equals(AC_DESCEND)) {
|
if(action.equals(AC_DESCEND)) {
|
||||||
if(Dungeon.hero.buff(LockedFloor.class) != null ) {
|
if(Dungeon.hero.buff(LockedFloor.class) != null || Dungeon.depth>26 && !(Dungeon.isDLC(Conducts.Conduct.BOSSRUSH)) || Dungeon.depth>28 && Dungeon.isDLC(Conducts.Conduct.BOSSRUSH) ) {
|
||||||
GLog.w(Messages.get(this,"cannot_send"));
|
GLog.w(Messages.get(this,"cannot_send"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Crab;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.DM100;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.DM100;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.DM200;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.DM200;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.DM201;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.DM201;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.DemonSpawner;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Elemental;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Elemental;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Eye;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Eye;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.FetidRat;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.FetidRat;
|
||||||
|
@ -493,7 +492,7 @@ public class MobPlacer extends TestItem{
|
||||||
ELE_CHAOS(Elemental.ChaosElemental.class, DictSpriteSheet.ELEMENTAL_CHAOS),
|
ELE_CHAOS(Elemental.ChaosElemental.class, DictSpriteSheet.ELEMENTAL_CHAOS),
|
||||||
|
|
||||||
RIPPER(RipperDemon.class, DictSpriteSheet.RIPPER),
|
RIPPER(RipperDemon.class, DictSpriteSheet.RIPPER),
|
||||||
SPAWNER(DemonSpawner.class, DictSpriteSheet.SPAWNER),
|
// SPAWNER(DemonSpawner.class, DictSpriteSheet.SPAWNER),
|
||||||
EYE(Eye.class, DictSpriteSheet.EYE),
|
EYE(Eye.class, DictSpriteSheet.EYE),
|
||||||
SUCCUBUS(Succubus.class, DictSpriteSheet.SUCCUBUS),
|
SUCCUBUS(Succubus.class, DictSpriteSheet.SUCCUBUS),
|
||||||
SCORPIO(Scorpio.class, DictSpriteSheet.SCORPIO),
|
SCORPIO(Scorpio.class, DictSpriteSheet.SCORPIO),
|
||||||
|
|
|
@ -29,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.bags.Bag;
|
import com.shatteredpixel.shatteredpixeldungeon.items.bags.Bag;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.bags.MagicalHolster;
|
import com.shatteredpixel.shatteredpixeldungeon.items.bags.MagicalHolster;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand;
|
import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfAnmy;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
|
@ -108,7 +109,7 @@ public class ArcaneResin extends Item {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSelect( Item item ) {
|
public void onSelect( Item item ) {
|
||||||
if (item != null && item instanceof Wand) {
|
if (item != null && item instanceof Wand && !(item instanceof WandOfAnmy)) {
|
||||||
Wand w = (Wand)item;
|
Wand w = (Wand)item;
|
||||||
|
|
||||||
if (w.level() >= 3){
|
if (w.level() >= 3){
|
||||||
|
|
|
@ -21,10 +21,11 @@
|
||||||
|
|
||||||
package com.shatteredpixel.shatteredpixeldungeon.items.artifacts;
|
package com.shatteredpixel.shatteredpixeldungeon.items.artifacts;
|
||||||
|
|
||||||
|
import static com.shatteredpixel.shatteredpixeldungeon.Statistics.deadGo;
|
||||||
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
|
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.CorrosiveGas;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.CorrosiveGas;
|
||||||
|
@ -116,7 +117,7 @@ public class DriedRose extends Artifact {
|
||||||
actions.remove(AC_EQUIP);
|
actions.remove(AC_EQUIP);
|
||||||
return actions;
|
return actions;
|
||||||
}
|
}
|
||||||
if (isEquipped( hero ) && charge == chargeCap && !cursed && ghostID == 0) {
|
if (isEquipped( hero ) && charge == chargeCap && !cursed && ghostID == 0 && !deadGo) {
|
||||||
actions.add(AC_SUMMON);
|
actions.add(AC_SUMMON);
|
||||||
}
|
}
|
||||||
if (ghostID != 0){
|
if (ghostID != 0){
|
||||||
|
@ -565,8 +566,9 @@ public class DriedRose extends Artifact {
|
||||||
damage(1, this);
|
damage(1, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(Statistics.findMoon){
|
if(deadGo){
|
||||||
die(true);
|
die(true);
|
||||||
|
GLog.n(Messages.get(DriedRose.class, "sorry"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isAlive()) {
|
if (!isAlive()) {
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
|
|
||||||
package com.shatteredpixel.shatteredpixeldungeon.items.quest;
|
package com.shatteredpixel.shatteredpixeldungeon.items.quest;
|
||||||
|
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||||
|
@ -103,6 +104,7 @@ public class MIME extends Item {
|
||||||
public boolean doPickUp(Hero hero, int pos) {
|
public boolean doPickUp(Hero hero, int pos) {
|
||||||
if (super.doPickUp(hero, pos)) {
|
if (super.doPickUp(hero, pos)) {
|
||||||
if(!isMimeSupported){
|
if(!isMimeSupported){
|
||||||
|
Statistics.dimandchestmazeCollected++;
|
||||||
isMimeSupported = true;
|
isMimeSupported = true;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -42,7 +42,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfAugmentation
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfBlast;
|
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfBlast;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfBlink;
|
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfBlink;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfClairvoyance;
|
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfClairvoyance;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDeepSleep;
|
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDeepenedSleep;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDisarming;
|
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfDisarming;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfEnchantment;
|
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfEnchantment;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfFear;
|
import com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfFear;
|
||||||
|
@ -290,7 +290,7 @@ public abstract class Scroll extends Item {
|
||||||
private static HashMap<Class<?extends Scroll>, Class<?extends Runestone>> stones = new HashMap<>();
|
private static HashMap<Class<?extends Scroll>, Class<?extends Runestone>> stones = new HashMap<>();
|
||||||
static {
|
static {
|
||||||
stones.put(ScrollOfIdentify.class, StoneOfIntuition.class);
|
stones.put(ScrollOfIdentify.class, StoneOfIntuition.class);
|
||||||
stones.put(ScrollOfLullaby.class, StoneOfDeepSleep.class);
|
stones.put(ScrollOfLullaby.class, StoneOfDeepenedSleep.class);
|
||||||
stones.put(ScrollOfMagicMapping.class, StoneOfClairvoyance.class);
|
stones.put(ScrollOfMagicMapping.class, StoneOfClairvoyance.class);
|
||||||
stones.put(ScrollOfMirrorImage.class, StoneOfFlock.class);
|
stones.put(ScrollOfMirrorImage.class, StoneOfFlock.class);
|
||||||
stones.put(ScrollOfRetribution.class, StoneOfBlast.class);
|
stones.put(ScrollOfRetribution.class, StoneOfBlast.class);
|
||||||
|
|
|
@ -1,57 +1,57 @@
|
||||||
/*
|
///*
|
||||||
* Pixel Dungeon
|
// * Pixel Dungeon
|
||||||
* Copyright (C) 2012-2015 Oleg Dolya
|
// * Copyright (C) 2012-2015 Oleg Dolya
|
||||||
*
|
// *
|
||||||
* Shattered Pixel Dungeon
|
// * Shattered Pixel Dungeon
|
||||||
* Copyright (C) 2014-2022 Evan Debenham
|
// * Copyright (C) 2014-2022 Evan Debenham
|
||||||
*
|
// *
|
||||||
* This program is free software: you can redistribute it and/or modify
|
// * 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
|
// * it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
// * the Free Software Foundation, either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
// * (at your option) any later version.
|
||||||
*
|
// *
|
||||||
* This program is distributed in the hope that it will be useful,
|
// * This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
// * GNU General Public License for more details.
|
||||||
*
|
// *
|
||||||
* You should have received a copy of the GNU General Public License
|
// * You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
// * along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
*/
|
// */
|
||||||
|
//
|
||||||
package com.shatteredpixel.shatteredpixeldungeon.items.stones;
|
//package com.shatteredpixel.shatteredpixeldungeon.items.stones;
|
||||||
|
//
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
//import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
//import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
//import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
//import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicalSleep;
|
//import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicalSleep;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
//import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
//import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||||
import com.watabou.noosa.audio.Sample;
|
//import com.watabou.noosa.audio.Sample;
|
||||||
|
//
|
||||||
public class StoneOfDeepSleep extends Runestone {
|
//public class StoneOfDeepSleep extends Runestone {
|
||||||
|
//
|
||||||
{
|
// {
|
||||||
image = ItemSpriteSheet.STONE_SLEEP;
|
// image = ItemSpriteSheet.STONE_SLEEP;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
protected void activate(int cell) {
|
// protected void activate(int cell) {
|
||||||
|
//
|
||||||
if (Actor.findChar(cell) != null) {
|
// if (Actor.findChar(cell) != null) {
|
||||||
|
//
|
||||||
Char c = Actor.findChar(cell);
|
// Char c = Actor.findChar(cell);
|
||||||
|
//
|
||||||
if (c instanceof Mob){
|
// if (c instanceof Mob){
|
||||||
|
//
|
||||||
Buff.affect(c, MagicalSleep.class);
|
// Buff.affect(c, MagicalSleep.class);
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
Sample.INSTANCE.play( Assets.Sounds.LULLABY );
|
// Sample.INSTANCE.play( Assets.Sounds.LULLABY );
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
|
@ -55,7 +55,7 @@ public class WandOfFireblast extends DamageWand {
|
||||||
public static class PlaceHolderX extends WandOfFireblast {
|
public static class PlaceHolderX extends WandOfFireblast {
|
||||||
|
|
||||||
{
|
{
|
||||||
image = ItemSpriteSheet.WAND_BLAST_WAVE;
|
image = ItemSpriteSheet.WAND_FIREBOLT;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -17,7 +17,7 @@ public class FiveRen extends MeleeWeapon {
|
||||||
hitSound = Assets.Sounds.HIT_STAB;
|
hitSound = Assets.Sounds.HIT_STAB;
|
||||||
hitSoundPitch = 0.9f;
|
hitSoundPitch = 0.9f;
|
||||||
|
|
||||||
tier = 2;
|
tier = 5;
|
||||||
DLY = 1.5f; //0.67x speed
|
DLY = 1.5f; //0.67x speed
|
||||||
RCH = 2; //extra reach
|
RCH = 2; //extra reach
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,19 +58,19 @@ public class Gauntlet extends MeleeWeapon {
|
||||||
switch (Random.Int(6)) {
|
switch (Random.Int(6)) {
|
||||||
case 0:case 1:case 2:case 3:
|
case 0:case 1:case 2:case 3:
|
||||||
default:
|
default:
|
||||||
return max(buffedLvl());
|
return super.proc( attacker, defender, damage );
|
||||||
case 4: case 5:
|
case 4: case 5:
|
||||||
Buff.affect(defender, HalomethaneBurning.class).reignite(defender);
|
Buff.affect(defender, HalomethaneBurning.class).reignite(defender);
|
||||||
if(Random.Float()<0.55f && level <3) {
|
if(Random.Float()<0.55f && level <3) {
|
||||||
Buff.prolong(attacker, Vertigo.class, 3f);
|
Buff.prolong(attacker, Vertigo.class, 3f);
|
||||||
}
|
}
|
||||||
return max(buffedLvl());
|
return super.proc( attacker, defender, damage );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public String statsInfo(){
|
public String statsInfo(){
|
||||||
if (isIdentified()){
|
if (isIdentified()){
|
||||||
return Messages.get(this, "stats_desc", 1+1*buffedLvl());
|
return Messages.get(this, "stats_desc", 1+ buffedLvl());
|
||||||
} else {
|
} else {
|
||||||
return Messages.get(this, "typical_stats_desc", 1);
|
return Messages.get(this, "typical_stats_desc", 1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -322,7 +322,7 @@ public class ColdChestBossLevel extends Level {
|
||||||
|
|
||||||
//进行Roll判定
|
//进行Roll判定
|
||||||
|
|
||||||
if(Statistics.dimandchestmazeCollected==0) {
|
if(Statistics.fuckGeneratorAlone==0) {
|
||||||
switch (Random.NormalIntRange(0, 3)) {
|
switch (Random.NormalIntRange(0, 3)) {
|
||||||
case 0:
|
case 0:
|
||||||
drop(new MIME.GOLD_ONE(), 634);
|
drop(new MIME.GOLD_ONE(), 634);
|
||||||
|
@ -338,7 +338,7 @@ public class ColdChestBossLevel extends Level {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Statistics.dimandchestmazeCollected++;
|
Statistics.fuckGeneratorAlone++;
|
||||||
|
|
||||||
pro = START;
|
pro = START;
|
||||||
break;
|
break;
|
||||||
|
@ -357,7 +357,7 @@ public class ColdChestBossLevel extends Level {
|
||||||
boss.HP = 360;
|
boss.HP = 360;
|
||||||
|
|
||||||
//进行Roll判定 获得一定的随机坐标
|
//进行Roll判定 获得一定的随机坐标
|
||||||
if(Statistics.dimandchestmazeCollected==1) {
|
if(Statistics.fuckGeneratorAlone==1) {
|
||||||
if (Random.Float() < 0.5f) {
|
if (Random.Float() < 0.5f) {
|
||||||
switch (Random.NormalIntRange(0, 4)) {
|
switch (Random.NormalIntRange(0, 4)) {
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -396,7 +396,7 @@ public class ColdChestBossLevel extends Level {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Statistics.dimandchestmazeCollected++;
|
Statistics.fuckGeneratorAlone++;
|
||||||
|
|
||||||
switch (Random.NormalIntRange(0,8)){
|
switch (Random.NormalIntRange(0,8)){
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -469,7 +469,7 @@ public class ColdChestBossLevel extends Level {
|
||||||
//drop( new PotionOfPurity(),648 );
|
//drop( new PotionOfPurity(),648 );
|
||||||
|
|
||||||
//进行Roll判定
|
//进行Roll判定
|
||||||
if(Statistics.dimandchestmazeCollected==2) {
|
if(Statistics.fuckGeneratorAlone==2) {
|
||||||
if (Random.Float() < 0.5f) {
|
if (Random.Float() < 0.5f) {
|
||||||
switch (Random.NormalIntRange(0, 1)) {
|
switch (Random.NormalIntRange(0, 1)) {
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -490,7 +490,7 @@ public class ColdChestBossLevel extends Level {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Statistics.dimandchestmazeCollected++;
|
Statistics.fuckGeneratorAlone++;
|
||||||
|
|
||||||
//生成四个水晶,宝箱王持续回血
|
//生成四个水晶,宝箱王持续回血
|
||||||
for (int i : FourCrystal) {
|
for (int i : FourCrystal) {
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
package com.shatteredpixel.shatteredpixeldungeon.levels;
|
package com.shatteredpixel.shatteredpixeldungeon.levels;
|
||||||
|
|
||||||
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.MORELEVEL;
|
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.MOREROOM;
|
||||||
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.SBSG;
|
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.SBSG;
|
||||||
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||||
|
@ -167,6 +167,9 @@ public abstract class Level implements Bundlable {
|
||||||
TRAPS,
|
TRAPS,
|
||||||
SECRETS,
|
SECRETS,
|
||||||
BIGTRAP,
|
BIGTRAP,
|
||||||
|
THREEWELL,
|
||||||
|
LINKROOM,
|
||||||
|
DIEDROOM
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isLevelExplored( int depth ){
|
public boolean isLevelExplored( int depth ){
|
||||||
|
@ -264,6 +267,60 @@ public abstract class Level implements Bundlable {
|
||||||
return 48*48;
|
return 48*48;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initializeLevelDepthType(){
|
||||||
|
if(Dungeon.isChallenged(MOREROOM)){
|
||||||
|
int randomInt = Random.Int(10);
|
||||||
|
if (randomInt == 0) {
|
||||||
|
feeling = Feeling.CHASM;
|
||||||
|
} else if (randomInt == 1) {
|
||||||
|
feeling = Feeling.WATER;
|
||||||
|
} else if (randomInt == 2) {
|
||||||
|
feeling = Feeling.GRASS;
|
||||||
|
} else if (randomInt == 3) {
|
||||||
|
feeling = Feeling.DARK;
|
||||||
|
addItemToSpawn(new Torch());
|
||||||
|
viewDistance = Math.round(viewDistance / 2f);
|
||||||
|
} else if (randomInt >= 4 && randomInt <= 5) {
|
||||||
|
feeling = Feeling.TRAPS;
|
||||||
|
} else if (randomInt == 6) {
|
||||||
|
feeling = Feeling.SECRETS;
|
||||||
|
} else if (randomInt == 7) {
|
||||||
|
feeling = Feeling.BIGTRAP;
|
||||||
|
} else if (randomInt == 8) {
|
||||||
|
feeling = Feeling.THREEWELL;
|
||||||
|
} else {
|
||||||
|
feeling = Feeling.LINKROOM;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch (Random.Int( 14 )) {
|
||||||
|
case 0:
|
||||||
|
feeling = Feeling.CHASM;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
feeling = Feeling.WATER;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
feeling = Feeling.GRASS;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
feeling = Feeling.DARK;
|
||||||
|
addItemToSpawn(new Torch());
|
||||||
|
viewDistance = Math.round(viewDistance/2f);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
feeling = Feeling.LARGE;
|
||||||
|
addItemToSpawn(Generator.random(Generator.Category.FOOD));
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
feeling = Feeling.TRAPS;
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
feeling = Feeling.SECRETS;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void create() {
|
public void create() {
|
||||||
|
|
||||||
Random.pushGenerator( Dungeon.seedCurDepth() );
|
Random.pushGenerator( Dungeon.seedCurDepth() );
|
||||||
|
@ -300,40 +357,8 @@ public abstract class Level implements Bundlable {
|
||||||
addItemToSpawn( new StoneOfIntuition() );
|
addItemToSpawn( new StoneOfIntuition() );
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Dungeon.depth > 1 && !Dungeon.bossLevel()) {
|
if (Dungeon.depth > 1 && !Dungeon.isDLC(Conducts.Conduct.BOSSRUSH)) {
|
||||||
//50% chance of getting a level feeling
|
initializeLevelDepthType();
|
||||||
//~7.15% chance for each feeling
|
|
||||||
switch (Random.Int( 14 )) {
|
|
||||||
case 0:
|
|
||||||
feeling = Feeling.CHASM;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
feeling = Feeling.WATER;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
feeling = Feeling.GRASS;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
feeling = Feeling.DARK;
|
|
||||||
addItemToSpawn(new Torch());
|
|
||||||
viewDistance = Math.round(viewDistance/2f);
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
feeling = Feeling.LARGE;
|
|
||||||
addItemToSpawn(Generator.random(Generator.Category.FOOD));
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
feeling = Feeling.TRAPS;
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
feeling = Feeling.SECRETS;
|
|
||||||
break;
|
|
||||||
case 7:
|
|
||||||
if(Dungeon.isChallenged(MORELEVEL)){
|
|
||||||
feeling = Feeling.BIGTRAP;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.levels;
|
||||||
|
|
||||||
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.AQUAPHOBIA;
|
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.AQUAPHOBIA;
|
||||||
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.EXSG;
|
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.EXSG;
|
||||||
|
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.MOREROOM;
|
||||||
import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero;
|
import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero;
|
||||||
import static com.shatteredpixel.shatteredpixeldungeon.levels.RegularLevel.Holiday.XMAS;
|
import static com.shatteredpixel.shatteredpixeldungeon.levels.RegularLevel.Holiday.XMAS;
|
||||||
|
|
||||||
|
@ -59,8 +60,10 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.builders.LoopBuilder;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.secret.SecretRoom;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.secret.SecretRoom;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.secret.SecretWellRoom;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.AutoShopRoom;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.AutoShopRoom;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.LanFireRoom;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.LanFireRoom;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.MagicWellRoom;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.MagicalFireRoom;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.MagicalFireRoom;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.NxhyShopRoom;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.NxhyShopRoom;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.NyzBombAndBooksRoom;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.NyzBombAndBooksRoom;
|
||||||
|
@ -235,8 +238,8 @@ public abstract class RegularLevel extends Level {
|
||||||
initRooms.add( roomExit = new ExitRoom());
|
initRooms.add( roomExit = new ExitRoom());
|
||||||
|
|
||||||
//force max standard rooms and multiple by 1.5x for large levels
|
//force max standard rooms and multiple by 1.5x for large levels
|
||||||
int standards = standardRooms(feeling == Feeling.LARGE);
|
int standards = standardRooms(feeling == Feeling.LARGE || Dungeon.isChallenged(MOREROOM));
|
||||||
if (feeling == Feeling.LARGE){
|
if (feeling == Feeling.LARGE || Dungeon.isChallenged(MOREROOM)){
|
||||||
standards = (int)Math.ceil(standards * 1.5f);
|
standards = (int)Math.ceil(standards * 1.5f);
|
||||||
}
|
}
|
||||||
for (int i = 0; i < standards; i++) {
|
for (int i = 0; i < standards; i++) {
|
||||||
|
@ -259,9 +262,9 @@ public abstract class RegularLevel extends Level {
|
||||||
}
|
}
|
||||||
|
|
||||||
// initRooms.add(new EyeRoom());
|
// initRooms.add(new EyeRoom());
|
||||||
// initRooms.add(new YinYangRoom());
|
// initRooms.add(new YinYangRoom());z
|
||||||
|
|
||||||
if(RegularLevel.holiday == Holiday.ZQJ){
|
if(RegularLevel.holiday == Holiday.ZQJ ){
|
||||||
if(Dungeon.depth == 17){
|
if(Dungeon.depth == 17){
|
||||||
initRooms.add(new HeartRoom());
|
initRooms.add(new HeartRoom());
|
||||||
}
|
}
|
||||||
|
@ -284,10 +287,14 @@ public abstract class RegularLevel extends Level {
|
||||||
}
|
}
|
||||||
|
|
||||||
//force max special rooms and add one more for large levels
|
//force max special rooms and add one more for large levels
|
||||||
int specials = specialRooms(feeling == Feeling.LARGE);
|
int specials = specialRooms(feeling == Feeling.LARGE || Dungeon.isChallenged(MOREROOM));
|
||||||
if (feeling == Feeling.LARGE){
|
if (feeling == Feeling.LARGE || Dungeon.isChallenged(MOREROOM)){
|
||||||
specials++;
|
specials++;
|
||||||
}
|
}
|
||||||
|
if(feeling == Feeling.THREEWELL){
|
||||||
|
initRooms.add(new SecretWellRoom());
|
||||||
|
initRooms.add(new MagicWellRoom());
|
||||||
|
}
|
||||||
SpecialRoom.initForFloor();
|
SpecialRoom.initForFloor();
|
||||||
for (int i = 0; i < specials; i++) {
|
for (int i = 0; i < specials; i++) {
|
||||||
SpecialRoom s = SpecialRoom.createRoom();
|
SpecialRoom s = SpecialRoom.createRoom();
|
||||||
|
@ -365,7 +372,7 @@ public abstract class RegularLevel extends Level {
|
||||||
if (Dungeon.depth <= 1) return 0;
|
if (Dungeon.depth <= 1) return 0;
|
||||||
|
|
||||||
int mobs = 3 + Dungeon.depth % 5 + Random.Int(3);
|
int mobs = 3 + Dungeon.depth % 5 + Random.Int(3);
|
||||||
if (feeling == Feeling.LARGE){
|
if (feeling == Feeling.LARGE || Dungeon.isChallenged(MOREROOM)){
|
||||||
mobs = (int)Math.ceil(mobs * 1.33f);
|
mobs = (int)Math.ceil(mobs * 1.33f);
|
||||||
}
|
}
|
||||||
return mobs;
|
return mobs;
|
||||||
|
@ -500,7 +507,7 @@ public abstract class RegularLevel extends Level {
|
||||||
// drops 3/4/5 items 60%/30%/10% of the time
|
// drops 3/4/5 items 60%/30%/10% of the time
|
||||||
int nItems = 3 + Random.chances(new float[]{6, 3, 1});
|
int nItems = 3 + Random.chances(new float[]{6, 3, 1});
|
||||||
|
|
||||||
if (feeling == Feeling.LARGE){
|
if (feeling == Feeling.LARGE || Dungeon.isChallenged(MOREROOM)){
|
||||||
nItems += 2;
|
nItems += 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -74,11 +74,19 @@ public class SLMKingLevel extends SewerLevel {
|
||||||
return initRooms;
|
return initRooms;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int tunnelTile() {
|
||||||
|
return Terrain.WATER;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected int standardRooms(boolean forceMax) {
|
protected int standardRooms(boolean forceMax) {
|
||||||
if (forceMax) return 3;
|
return 0;
|
||||||
//2 to 3, average 2.5
|
}
|
||||||
return 2+Random.chances(new float[]{1, 1});
|
|
||||||
|
@Override
|
||||||
|
protected int specialRooms(boolean forceMax) {
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Builder builder(){
|
protected Builder builder(){
|
||||||
|
|
|
@ -57,6 +57,11 @@ public class SewerBossLevel extends SewerLevel {
|
||||||
}
|
}
|
||||||
|
|
||||||
private int stairs = 0;
|
private int stairs = 0;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int tunnelTile() {
|
||||||
|
return Terrain.WATER;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void playLevelMusic() {
|
public void playLevelMusic() {
|
||||||
|
@ -108,9 +113,12 @@ public class SewerBossLevel extends SewerLevel {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected int standardRooms(boolean forceMax) {
|
protected int standardRooms(boolean forceMax) {
|
||||||
if (forceMax) return 3;
|
return 0;
|
||||||
//2 to 3, average 2.5
|
}
|
||||||
return 2+Random.chances(new float[]{1, 1});
|
|
||||||
|
@Override
|
||||||
|
protected int specialRooms(boolean forceMax) {
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Builder builder(){
|
protected Builder builder(){
|
||||||
|
|
|
@ -446,7 +446,7 @@ public abstract class RegularPainter extends Painter {
|
||||||
validCells.size()/5);
|
validCells.size()/5);
|
||||||
|
|
||||||
//5x traps on traps level feeling, but the extra traps are all visible
|
//5x traps on traps level feeling, but the extra traps are all visible
|
||||||
for (int i = 0; i < (l.feeling == Level.Feeling.BIGTRAP ? 25*nTraps : l.feeling == Level.Feeling.TRAPS ?
|
for (int i = 0; i < (l.feeling == Level.Feeling.BIGTRAP ? 23*nTraps : l.feeling == Level.Feeling.TRAPS ?
|
||||||
5*nTraps :
|
5*nTraps :
|
||||||
nTraps); i++) {
|
nTraps); i++) {
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.secret;
|
||||||
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfAwareness;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfAwareness;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfHealth;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfHealth;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfTransmutation;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WellWater;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WellWater;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
||||||
|
@ -33,7 +34,7 @@ import com.watabou.utils.Random;
|
||||||
public class SecretWellRoom extends SecretRoom {
|
public class SecretWellRoom extends SecretRoom {
|
||||||
|
|
||||||
private static final Class<?>[] WATERS =
|
private static final Class<?>[] WATERS =
|
||||||
{WaterOfAwareness.class, WaterOfHealth.class};
|
{WaterOfAwareness.class, WaterOfHealth.class, WaterOfTransmutation.class};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canConnect(Point p) {
|
public boolean canConnect(Point p) {
|
||||||
|
|
|
@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special;
|
||||||
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfAwareness;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfAwareness;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfHealth;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfHealth;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WaterOfTransmutation;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WellWater;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.WellWater;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
||||||
|
@ -33,7 +34,7 @@ import com.watabou.utils.Random;
|
||||||
public class MagicWellRoom extends SpecialRoom {
|
public class MagicWellRoom extends SpecialRoom {
|
||||||
|
|
||||||
private static final Class<?>[] WATERS =
|
private static final Class<?>[] WATERS =
|
||||||
{WaterOfAwareness.class, WaterOfHealth.class};
|
{WaterOfAwareness.class, WaterOfHealth.class, WaterOfTransmutation.class};
|
||||||
|
|
||||||
public Class<?extends WellWater> overrideWater = null;
|
public Class<?extends WellWater> overrideWater = null;
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,8 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard;
|
||||||
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.CHASM;
|
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.CHASM;
|
||||||
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.EMPTY;
|
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.EMPTY;
|
||||||
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.EMPTY_SP;
|
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.EMPTY_SP;
|
||||||
|
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.FURROWED_GRASS;
|
||||||
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.PEDESTAL;
|
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.PEDESTAL;
|
||||||
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.WALL;
|
|
||||||
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.WATER;
|
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.WATER;
|
||||||
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||||
|
@ -59,7 +59,7 @@ public class HeartRoom extends SpecialRoom {
|
||||||
Painter.drawLine(level, new Point(right, bottom), new Point(left, bottom), WATER);
|
Painter.drawLine(level, new Point(right, bottom), new Point(left, bottom), WATER);
|
||||||
Painter.drawLine(level, new Point(left, bottom), new Point(left, top), CHASM);
|
Painter.drawLine(level, new Point(left, bottom), new Point(left, top), CHASM);
|
||||||
|
|
||||||
Painter.fill(level,this, WALL);
|
Painter.fill(level,this, FURROWED_GRASS);
|
||||||
|
|
||||||
// 绘制爱心
|
// 绘制爱心
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ public class HeartRoom extends SpecialRoom {
|
||||||
Painter.drawLine(level, new Point(centerX + radius, centerY), new Point(centerX, centerY + radius), PEDESTAL);
|
Painter.drawLine(level, new Point(centerX + radius, centerY), new Point(centerX, centerY + radius), PEDESTAL);
|
||||||
|
|
||||||
// 绘制眼睛外圈和门
|
// 绘制眼睛外圈和门
|
||||||
int eyeRadius = radius / 2;
|
int eyeRadius = radius /4;
|
||||||
Painter.drawCircle(level, center, eyeRadius + 5, EMPTY);
|
Painter.drawCircle(level, center, eyeRadius + 5, EMPTY);
|
||||||
|
|
||||||
Painter.drawCircle(level, center, eyeRadius, CHASM);
|
Painter.drawCircle(level, center, eyeRadius, CHASM);
|
||||||
|
|
|
@ -5,7 +5,6 @@ import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.EMPTY;
|
||||||
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.EMPTY_SP;
|
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.EMPTY_SP;
|
||||||
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.FURROWED_GRASS;
|
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.FURROWED_GRASS;
|
||||||
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.PEDESTAL;
|
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.PEDESTAL;
|
||||||
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.WALL;
|
|
||||||
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.WATER;
|
import static com.shatteredpixel.shatteredpixeldungeon.levels.Terrain.WATER;
|
||||||
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||||
|
@ -49,7 +48,7 @@ public class LoveRoom extends SpecialRoom {
|
||||||
int centerY = center.y;
|
int centerY = center.y;
|
||||||
int radius = (right - left) / 2;
|
int radius = (right - left) / 2;
|
||||||
|
|
||||||
int MiddlePos = (top + 7) * level.width() + left + 7;
|
int MiddlePos = (top + 8) * level.width() + left + 8;
|
||||||
|
|
||||||
Mob n = new PinkGhostNPC();
|
Mob n = new PinkGhostNPC();
|
||||||
n.pos = MiddlePos;
|
n.pos = MiddlePos;
|
||||||
|
@ -60,7 +59,7 @@ public class LoveRoom extends SpecialRoom {
|
||||||
Painter.drawLine(level, new Point(right, bottom), new Point(left, bottom), WATER);
|
Painter.drawLine(level, new Point(right, bottom), new Point(left, bottom), WATER);
|
||||||
Painter.drawLine(level, new Point(left, bottom), new Point(left, top), CHASM);
|
Painter.drawLine(level, new Point(left, bottom), new Point(left, top), CHASM);
|
||||||
|
|
||||||
Painter.fill(level,this, WALL);
|
Painter.fill(level,this, WATER);
|
||||||
|
|
||||||
// 绘制爱心
|
// 绘制爱心
|
||||||
|
|
||||||
|
@ -74,7 +73,7 @@ public class LoveRoom extends SpecialRoom {
|
||||||
Painter.drawLine(level, new Point(centerX + radius, centerY), new Point(centerX, centerY + radius), PEDESTAL);
|
Painter.drawLine(level, new Point(centerX + radius, centerY), new Point(centerX, centerY + radius), PEDESTAL);
|
||||||
|
|
||||||
// 绘制眼睛外圈和门
|
// 绘制眼睛外圈和门
|
||||||
int eyeRadius = radius / 2;
|
int eyeRadius = radius / 4;
|
||||||
Painter.drawCircle(level, center, eyeRadius + 5, EMPTY);
|
Painter.drawCircle(level, center, eyeRadius + 5, EMPTY);
|
||||||
|
|
||||||
Painter.drawCircle(level, center, eyeRadius, FURROWED_GRASS);
|
Painter.drawCircle(level, center, eyeRadius, FURROWED_GRASS);
|
||||||
|
|
|
@ -52,7 +52,7 @@ public class YinYangRoom extends SpecialRoom {
|
||||||
Item prize;
|
Item prize;
|
||||||
do {
|
do {
|
||||||
prize = Generator.random(cat);
|
prize = Generator.random(cat);
|
||||||
prize.level= Random.NormalIntRange(1,2);
|
prize.upgrade(Random.NormalIntRange(1,2));
|
||||||
prize.cursed = false;
|
prize.cursed = false;
|
||||||
} while (Challenges.isItemBlocked(prize));
|
} while (Challenges.isItemBlocked(prize));
|
||||||
return prize;
|
return prize;
|
||||||
|
@ -64,7 +64,7 @@ public class YinYangRoom extends SpecialRoom {
|
||||||
Item prize;
|
Item prize;
|
||||||
do {
|
do {
|
||||||
prize = Generator.random(cat);
|
prize = Generator.random(cat);
|
||||||
prize.level= Random.NormalIntRange(2,3);
|
prize.upgrade(Random.NormalIntRange(2,3));
|
||||||
prize.cursed = true;
|
prize.cursed = true;
|
||||||
} while (Challenges.isItemBlocked(prize));
|
} while (Challenges.isItemBlocked(prize));
|
||||||
return prize;
|
return prize;
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
* Copyright (C) 2012-2015 Oleg Dolya
|
* Copyright (C) 2012-2015 Oleg Dolya
|
||||||
*
|
*
|
||||||
* Shattered Pixel Dungeon
|
* 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
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -23,12 +23,15 @@ package com.shatteredpixel.shatteredpixeldungeon.plants;
|
||||||
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.AdrenalineSurge;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.AdrenalineSurge;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.LeafParticle;
|
import com.shatteredpixel.shatteredpixeldungeon.effects.particles.LeafParticle;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||||
|
|
||||||
public class Rotberry extends Plant {
|
public class Rotberry extends Plant {
|
||||||
|
@ -42,20 +45,21 @@ public class Rotberry extends Plant {
|
||||||
public void activate( Char ch ) {
|
public void activate( Char ch ) {
|
||||||
if (ch instanceof Hero && ((Hero) ch).subClass == HeroSubClass.WARDEN){
|
if (ch instanceof Hero && ((Hero) ch).subClass == HeroSubClass.WARDEN){
|
||||||
Buff.affect(ch, AdrenalineSurge.class).reset(1, AdrenalineSurge.DURATION);
|
Buff.affect(ch, AdrenalineSurge.class).reset(1, AdrenalineSurge.DURATION);
|
||||||
|
} else {
|
||||||
|
GameScene.add( Blob.seed( pos, 100, ToxicGas.class ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
Dungeon.level.drop( new Seed(), pos ).sprite.drop();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void wither() {
|
public void wither() {
|
||||||
Dungeon.level.uproot( pos );
|
Dungeon.level.uproot( pos );
|
||||||
|
|
||||||
if (Dungeon.level.heroFOV[pos]) {
|
if (Dungeon.level.heroFOV[pos]) {
|
||||||
CellEmitter.get( pos ).burst( LeafParticle.GENERAL, 6 );
|
CellEmitter.get( pos ).burst( LeafParticle.GENERAL, 6 );
|
||||||
}
|
}
|
||||||
|
|
||||||
//no warden benefit
|
//seed always drops, no lotus benefit
|
||||||
|
Dungeon.level.drop( new Seed(), pos ).sprite.drop();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Seed extends Plant.Seed {
|
public static class Seed extends Plant.Seed {
|
||||||
|
@ -66,7 +70,7 @@ public class Rotberry extends Plant {
|
||||||
|
|
||||||
unique = true;
|
unique = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int value() {
|
public int value() {
|
||||||
return 30 * quantity;
|
return 30 * quantity;
|
||||||
|
|
|
@ -712,6 +712,7 @@ public class GameScene extends PixelScene {
|
||||||
case TRAPS: GLog.w(Messages.get(this, "traps")); break;
|
case TRAPS: GLog.w(Messages.get(this, "traps")); break;
|
||||||
case SECRETS: GLog.w(Messages.get(this, "secrets")); break;
|
case SECRETS: GLog.w(Messages.get(this, "secrets")); break;
|
||||||
case BIGTRAP: GLog.w(Messages.get(this, "moretraps")); break;
|
case BIGTRAP: GLog.w(Messages.get(this, "moretraps")); break;
|
||||||
|
case THREEWELL: GLog.w(Messages.get(this, "threewells")); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Mob mob : Dungeon.level.mobs) {
|
for (Mob mob : Dungeon.level.mobs) {
|
||||||
|
|
|
@ -294,6 +294,11 @@ public class HeroSelectScene extends PixelScene {
|
||||||
if( !visible && GamesInProgress.selectedClass != null){
|
if( !visible && GamesInProgress.selectedClass != null){
|
||||||
visible = true;
|
visible = true;
|
||||||
}
|
}
|
||||||
|
if (SPDSettings.challenges() > 0) {
|
||||||
|
icon(Icons.get( Icons.CHALLENGE_ON));
|
||||||
|
} else {
|
||||||
|
icon(Icons.get( Icons.CHALLENGE_OFF));
|
||||||
|
}
|
||||||
super.update();
|
super.update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -104,6 +104,13 @@ public enum Icons {
|
||||||
DEPTH_SECRETS,
|
DEPTH_SECRETS,
|
||||||
|
|
||||||
DEPTH_BTRAPS,
|
DEPTH_BTRAPS,
|
||||||
|
|
||||||
|
DEPTH_WELLS,
|
||||||
|
|
||||||
|
DEPTH_LINK_ROOM,
|
||||||
|
|
||||||
|
DEPTH_DIED,
|
||||||
|
|
||||||
CHAL_COUNT,
|
CHAL_COUNT,
|
||||||
|
|
||||||
HAPPY_ICON,
|
HAPPY_ICON,
|
||||||
|
@ -340,6 +347,15 @@ public enum Icons {
|
||||||
case DEPTH_BTRAPS:
|
case DEPTH_BTRAPS:
|
||||||
icon.frame( icon.texture.uvRectBySize( 112, 64, 7, 7 ) );
|
icon.frame( icon.texture.uvRectBySize( 112, 64, 7, 7 ) );
|
||||||
break;
|
break;
|
||||||
|
case DEPTH_WELLS:
|
||||||
|
icon.frame( icon.texture.uvRectBySize( 120, 64, 7, 7 ) );
|
||||||
|
break;
|
||||||
|
case DEPTH_LINK_ROOM:
|
||||||
|
icon.frame( icon.texture.uvRectBySize( 128, 64, 7, 7 ) );
|
||||||
|
break;
|
||||||
|
case DEPTH_DIED:
|
||||||
|
icon.frame( icon.texture.uvRectBySize( 136, 64, 7, 7 ) );
|
||||||
|
break;
|
||||||
case CHAL_COUNT:
|
case CHAL_COUNT:
|
||||||
icon.frame( icon.texture.uvRectBySize( 48, 72, 7, 7 ) );
|
icon.frame( icon.texture.uvRectBySize( 48, 72, 7, 7 ) );
|
||||||
break;
|
break;
|
||||||
|
@ -421,6 +437,12 @@ public enum Icons {
|
||||||
return get(DEPTH_TRAPS);
|
return get(DEPTH_TRAPS);
|
||||||
case BIGTRAP:
|
case BIGTRAP:
|
||||||
return get(DEPTH_BTRAPS);
|
return get(DEPTH_BTRAPS);
|
||||||
|
case THREEWELL:
|
||||||
|
return get(DEPTH_WELLS);
|
||||||
|
case DIEDROOM:
|
||||||
|
return get(DEPTH_DIED);
|
||||||
|
case LINKROOM:
|
||||||
|
return get(DEPTH_LINK_ROOM);
|
||||||
case SECRETS:
|
case SECRETS:
|
||||||
return get(DEPTH_SECRETS);
|
return get(DEPTH_SECRETS);
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
|
|
||||||
package com.shatteredpixel.shatteredpixeldungeon.ui;
|
package com.shatteredpixel.shatteredpixeldungeon.ui;
|
||||||
|
|
||||||
|
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.PRO;
|
||||||
import static com.shatteredpixel.shatteredpixeldungeon.ui.Window.CYELLOW;
|
import static com.shatteredpixel.shatteredpixeldungeon.ui.Window.CYELLOW;
|
||||||
import static com.shatteredpixel.shatteredpixeldungeon.ui.Window.GREEN_COLOR;
|
import static com.shatteredpixel.shatteredpixeldungeon.ui.Window.GREEN_COLOR;
|
||||||
import static com.shatteredpixel.shatteredpixeldungeon.ui.Window.RED_COLOR;
|
import static com.shatteredpixel.shatteredpixeldungeon.ui.Window.RED_COLOR;
|
||||||
|
@ -176,7 +177,8 @@ public class MenuPane extends Component {
|
||||||
btnMenu = new MenuButton();
|
btnMenu = new MenuButton();
|
||||||
add( btnMenu );
|
add( btnMenu );
|
||||||
|
|
||||||
version = new BitmapText( "v" + Game.version, PixelScene.pixelFont);
|
version = new BitmapText( "v" + Game.version + (Dungeon.isChallenged(PRO)?"-DEV_MODE":""),
|
||||||
|
PixelScene.pixelFont);
|
||||||
version.alpha( 0.5f );
|
version.alpha( 0.5f );
|
||||||
add(version);
|
add(version);
|
||||||
|
|
||||||
|
|
|
@ -146,6 +146,17 @@ public class vM0_6_7_X_Changes {
|
||||||
changes.addButton(new ChangeButton(i, ("熔岩火龙"),
|
changes.addButton(new ChangeButton(i, ("熔岩火龙"),
|
||||||
("丛林暴乱的真相")));
|
("丛林暴乱的真相")));
|
||||||
|
|
||||||
|
changes = new ChangeInfo("v0.6.5.0-Alpha5.2-国庆", true, "");
|
||||||
|
changes.hardlight(Window.TITLE_COLOR);
|
||||||
|
changeInfos.add(changes);
|
||||||
|
|
||||||
|
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_06X86")));
|
||||||
|
|
||||||
changes = new ChangeInfo("v0.6.5.0-Alpha5-中秋", true, "");
|
changes = new ChangeInfo("v0.6.5.0-Alpha5-中秋", true, "");
|
||||||
changes.hardlight(Window.TITLE_COLOR);
|
changes.hardlight(Window.TITLE_COLOR);
|
||||||
changeInfos.add(changes);
|
changeInfos.add(changes);
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
package com.shatteredpixel.shatteredpixeldungeon.windows;
|
||||||
|
|
||||||
|
public class WndBossMessage {
|
||||||
|
}
|
|
@ -252,6 +252,10 @@ public class WndChallenges extends Window {
|
||||||
info = new IconButton(Icons.get(Icons.INFO)){
|
info = new IconButton(Icons.get(Icons.INFO)){
|
||||||
@Override
|
@Override
|
||||||
protected void onClick() {
|
protected void onClick() {
|
||||||
|
// if(challenge.equals("stronger_bosses")){
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
ShatteredPixelDungeon.scene().add(
|
ShatteredPixelDungeon.scene().add(
|
||||||
new WndTitledMessage(new Image(ChallengeInfo.this.icon),
|
new WndTitledMessage(new Image(ChallengeInfo.this.icon),
|
||||||
Messages.titleCase(Messages.get(Challenges.class, challenge)),
|
Messages.titleCase(Messages.get(Challenges.class, challenge)),
|
||||||
|
|
|
@ -177,6 +177,7 @@ public class WndStartGame extends Window {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void layout() {
|
protected void layout() {
|
||||||
super.layout();
|
super.layout();
|
||||||
|
@ -299,9 +300,10 @@ public class WndStartGame extends Window {
|
||||||
if( !visible && GamesInProgress.selectedClass != null){
|
if( !visible && GamesInProgress.selectedClass != null){
|
||||||
visible = true;
|
visible = true;
|
||||||
}
|
}
|
||||||
if (parent != null) {
|
if (SPDSettings.challenges() > 0) {
|
||||||
icon(Icons.get(SPDSettings.challenges() > 0 ?
|
icon(Icons.get( Icons.CHALLENGE_ON));
|
||||||
Icons.CHALLENGE_ON : Icons.CHALLENGE_OFF));
|
} else {
|
||||||
|
icon(Icons.get( Icons.CHALLENGE_OFF));
|
||||||
}
|
}
|
||||||
super.update();
|
super.update();
|
||||||
}
|
}
|
||||||
|
@ -332,6 +334,8 @@ public class WndStartGame extends Window {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private static class HeroBtn extends IconButton {
|
private static class HeroBtn extends IconButton {
|
||||||
|
|
||||||
private HeroClass cl;
|
private HeroClass cl;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user