Update Beta p2.6

This commit is contained in:
LingASDJ 2022-10-23 01:09:25 +08:00
parent 667cce55f2
commit 0349f1674e
27 changed files with 247 additions and 120 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -55,7 +55,7 @@ actors.buffs.clearbleesdgoodbuff.blessnomoney.name=纯洁的祝福-富饶
actors.buffs.clearbleesdgoodbuff.blessnomoney.desc=魔女的气息在我们身旁徘徊,商人们一定会对你毕恭毕敬。\n\n本大层商店全场打3折
actors.buffs.clearbleesdgoodbuff.blessmobdied.name=纯洁的祝福-安息
actors.buffs.clearbleesdgoodbuff.blessmobdied.desc=安息吧!怪物们!!!\n\n本大层英雄伤害x2!
actors.buffs.clearbleesdgoodbuff.blessmobdied.desc=安息吧!怪物们!!!\n\n本大层英雄物理伤害x2!
actors.buffs.clearbleesdgoodbuff.blessmixshiled.name=纯洁的祝福-守护
actors.buffs.clearbleesdgoodbuff.blessmixshiled.desc=守护我们最后的种子!\n\n本大层英雄在血满的情况下每300回合获得一些护盾。

View File

@ -136,10 +136,14 @@ challenges.exsg_desc=药水癔症详细规则:\n力量药水 力量-1\n灵视
challenges.light&black = Π空洞旅程Π
challenges.light&black_desc=\n_一次次的踏入地牢只会使自己更加的被恶毒的魔法侵蚀。_这一次你已不知道是何时再来到这个地牢但邪恶的诡异气氛扑面而来。一个神秘人给了你一个提灯。你却不知道何时会被这里的魔法吞噬。\n\n开启本挑战将会获得在开局获得特殊理智Buff并且追加一个新道具_提灯_提灯的精神力量需要玩家击败敌人获得。\n\n_只有光芒中你才能活下去。否则你会被黑暗蚕食一点点的丧失理智成为怪物。_\n\n详情请看更新记录
challenges.custom = 额外玩法
challenges.custom = 自定义功能
challenges.dhxd =_灯火前路_
challenges.dhxd_desc= 灯火指引着前进的道路,提灯引路,灯火前行![此为三挑以上的特殊机制,但你也可以直接开启它!]
challenges.fixed = 游戏维护
challenges.bug =_BUG修复(实验功能)_
challenges.bug_desc= 实验性功能每次游戏更新后如果有旧存档需要同步的可修复型Bug将会自我修复让英雄行走一回合即可
dlc.bossrush=首领对决
dlc.bossrush_desc=被你击败过多次的首领们熟识了英雄的技能,并掌握了一定的对策。它们盘踞在地牢中,等待复仇的时机。\n你不知道这次又会有怎样的危机需要应对。\n但你感觉到这次的冒险绝对与其他时期有所不同。\n开启本挑战时支离破碎和缩餐节食将无法生成与使用。

View File

@ -472,4 +472,6 @@ ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x31=-P1.5\n1.修复了终焉的掉率
ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x32=-P2.0\n1.修复了种子在部分挑战内完全不一样的问题\n2.修复了一些意外的闪退Bug\n3.修复了火元素的活死人问题
ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x33=-P2.6\n1.修复了感知符石鉴定秘药可能崩溃的问题\n2.修复了回溯之书的错误问题
//ui.changelist.mlpd.vm0_5_x_changes.xxx//

View File

@ -67,7 +67,7 @@ windows.wndinfomob.itm = 常规掉落:
windows.wndinfomob.shield= 护甲属性:
windows.wndnyzshop.nayazi=奈亚子
windows.wndnyzshop.nayaziwelcome=你好,冒险家。欢迎来到我的商店。和其他商店不同的是,我这里是一个智能终端的结合体!\n\n需要什么请进行选择但是智能终端通常会出现问题一旦终端出现问题将无法再次购买。\n\n书籍一本起价300金币炸弹一套起价270金币欢迎你的挑选\n\n有一些时候因为机器的缺陷性质可能实际费用会比预想的高
windows.wndnyzshop.nayaziwelcome=你好,冒险家。欢迎来到我的商店。和其他商店不同的是,我这里是一个智能终端的结合体!\n\n需要什么请进行选择但是智能终端通常会出现问题一旦终端出现问题将无法再次购买。\n\n书籍一本起价720金币炸弹一套起价270金币欢迎你的挑选\n\n有一些时候因为机器的缺陷性质可能实际费用会比预想的高
windows.wndnyzshop.buy=购买物品
windows.wndnyzshop.sellmod=出售物品
windows.wndnyzshop.cancel=取消购买

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -52,11 +52,14 @@ public class Challenges {
public static final int SBSG = 1024;
public static final int EXSG = 2048;
public static final int STRONGER_BOSSES = 4096;
public static final int DHXD = 8192;
public static final int PRO = 16384;
public static final int MAX_VALUE = 32768;
public static final int BUG = 32768;
public static final int MAX_VALUE = 65536;
public static final String[] NAME_IDS = {
"no_food",
@ -74,11 +77,12 @@ public class Challenges {
"stronger_bosses",
"dhxd",
"pro",
"bug",
};
public static final int[] MASKS = {
NO_FOOD, NO_ARMOR, NO_HEALING, NO_HERBALISM, SWARM_INTELLIGENCE, DARKNESS, NO_SCROLLS
, AQUAPHOBIA, CHAMPION_ENEMIES,RLPT,SBSG,EXSG,STRONGER_BOSSES,DHXD,PRO,
, AQUAPHOBIA, CHAMPION_ENEMIES,RLPT,SBSG,EXSG,STRONGER_BOSSES,DHXD,PRO,BUG,
};
public String name;
@ -127,7 +131,7 @@ public class Challenges {
public static int activeChallenges(){
int chCount = 0;
for (int ch : Challenges.MASKS){
if ((Dungeon.challenges & ch) != 0) chCount++;
if ((Dungeon.challenges & ch) != 0 && ch <= STRONGER_BOSSES) chCount++;
}
return chCount;
}

View File

@ -62,6 +62,10 @@ public class Statistics {
//TODO 灯火前行
public static boolean lanterfireactive = false;
//TODO BUG修复同步
public static boolean bugsyncfixed = false;
public static int dageCollected;
//Directly add float time will cause accuracy lose and stop timing if time is long enough
@ -102,6 +106,7 @@ public class Statistics {
endingbald = false;
lanterfireactive = false;
bugsyncfixed = false;
second_elapsed = 0f;
real_seconds = 0;
@ -145,9 +150,16 @@ public class Statistics {
//TODO 灯火前行
private static final String LANTERACTIVE = "lanterfireactive";
//TODO BUG修复的机制
private static final String BUG_SYNC_FIXED = "bugsyncfixed";
public static void storeInBundle( Bundle bundle ) {
bundle.put( LANTERACTIVE, lanterfireactive );
//TODO BUG修复的机制
bundle.put( BUG_SYNC_FIXED, bugsyncfixed );
bundle.put( GOLD, goldCollected );
bundle.put( DEEPEST, deepestFloor );
bundle.put( SLAIN, enemiesSlain );
@ -155,7 +167,7 @@ public class Statistics {
bundle.put( ALCHEMY, itemsCrafted );
bundle.put( PIRANHAS, piranhasKilled );
bundle.put( ANKHS, ankhsUsed );
bundle.put(EXLEVEL, realdeepestFloor);
bundle.put( EXLEVEL, realdeepestFloor);
bundle.put( UPGRADES, upgradesUsed );
bundle.put( SNEAKS, sneakAttacks );
bundle.put( THROWN, thrownAssists );
@ -212,6 +224,8 @@ public class Statistics {
lanterfireactive = bundle.getBoolean( LANTERACTIVE );
bugsyncfixed = bundle.getBoolean( BUG_SYNC_FIXED );
//SPD
second_elapsed = bundle.getFloat("real_time_passed");
real_seconds = bundle.getLong("real_seconds_passed");

View File

@ -0,0 +1,81 @@
package com.shatteredpixel.shatteredpixeldungeon.actors.buffs;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.watabou.utils.Bundle;
public class BugFixed extends Buff {
{
type = buffType.POSITIVE;
}
public static int level = 0;
private int interval = 1;
@Override
public boolean act() {
if (target.isAlive()) {
spend(interval);
if (level == 0) {
detach();
}
}
return true;
}
public int level() {
return level;
}
public void set( int value, int time ) {
//decide whether to override, preferring high value + low interval
if (Math.sqrt(interval)*level <= Math.sqrt(time)*value) {
level = value;
interval = time;
spend(time - cooldown() - 1);
}
}
@Override
public float iconFadePercent() {
if (target instanceof Hero){
float max = ((Hero) target).lvl;
return Math.max(0, (max-level)/max);
}
return 0;
}
@Override
public String toString() {
return Messages.get(this, "name");
}
@Override
public String desc() {
return Messages.get(this, "desc", level, dispTurns(visualcooldown()));
}
private static final String LEVEL = "level";
private static final String INTERVAL = "interval";
@Override
public void storeInBundle( Bundle bundle ) {
super.storeInBundle( bundle );
bundle.put( INTERVAL, interval );
bundle.put( LEVEL, level );
}
@Override
public void restoreFromBundle( Bundle bundle ) {
super.restoreFromBundle( bundle );
interval = bundle.getInt( INTERVAL );
level = bundle.getInt( LEVEL );
}
}

View File

@ -22,10 +22,12 @@
package com.shatteredpixel.shatteredpixeldungeon.actors.hero;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.AQUAPHOBIA;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.BUG;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.DHXD;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.PRO;
import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero;
import static com.shatteredpixel.shatteredpixeldungeon.SPDSettings.HelpSettings;
import static com.shatteredpixel.shatteredpixeldungeon.Statistics.bugsyncfixed;
import static com.shatteredpixel.shatteredpixeldungeon.Statistics.lanterfireactive;
import static com.shatteredpixel.shatteredpixeldungeon.levels.Level.set;
@ -135,6 +137,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.lightblack.OilLantern;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfExperience;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfLightningShiledX;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfMight;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.PotionOfDivineInspiration;
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfAccuracy;
@ -531,6 +534,7 @@ public class Hero extends Char {
for (Buff b : buffs()){
if (!b.revivePersists) b.detach();
}
Buff.affect( this, Regeneration.class );
Buff.affect( this, Hunger.class );
@ -925,6 +929,13 @@ public class Hero extends Char {
//TODO 获取三个挑战的枚举后则超过或等于3挑战以激活挑战在英雄移动的时候
//
//todo 移动时修复了BUG
if(Dungeon.isChallenged(BUG) && !bugsyncfixed){
new PotionOfLightningShiledX().quantity(3).identify().collect();
bugsyncfixed = true;
}
if(chCount >= 3 && !lanterfireactive && !Dungeon.isChallenged(PRO) || Dungeon.isChallenged(DHXD) && !lanterfireactive){
//TODO 灯火前行
lanterfire = 100;

View File

@ -21,6 +21,8 @@
package com.shatteredpixel.shatteredpixeldungeon.actors.hero;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.BUG;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Badges;
import com.shatteredpixel.shatteredpixeldungeon.Challenges;
@ -114,7 +116,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Gauntlet;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Gloves;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.GreenSword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.IceFishSword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.IceSan;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.LockSword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.RedBloodMoon;
@ -205,11 +206,11 @@ public enum HeroClass {
new GreenSword().quantity(1).identify().collect();
new SkyShield().quantity(1).identify().collect();
new IceSan().quantity(1).identify().collect();
//new IceSan().quantity(1).identify().collect();
new GoldBAo().quantity(9999).identify().collect();
new WandOfScale().quantity(1).identify().collect();
new WandOfGodIce().quantity(1).identify().collect();
new PotionOfLightningShiledX().quantity(50).identify().collect();
new PotionOfLightningShiledX().quantity(1).identify().collect();
new LevelTeleporter().quantity(1).identify().collect();
new MobPlacer().quantity(1).identify().collect();
new BlackDog().quantity(1).identify().collect();
@ -236,6 +237,7 @@ public enum HeroClass {
new ScrollOfRoseShiled().quantity(45).identify().collect();
new ScrollOfTerror().quantity(45).identify().collect();
new DriedRose().quantity(1).identify().collect();
Dungeon.gold = 600000000;
hero.STR = 27;
hero.lvl = 30;
@ -252,8 +254,10 @@ public enum HeroClass {
i = new Food();
//new EndingBlade().quantity(1).identify().collect();
//new ChaliceOfBlood().quantity(1).identify().collect();
//todo 不存在BUG挑战才给予
if(!Dungeon.isChallenged(BUG)) {
new PotionOfLightningShiledX().quantity(3).identify().collect();
}
new HerbBag().quantity(1).identify().collect();
new PotionOfHealing().quantity(3).identify().collect();

View File

@ -75,8 +75,7 @@ public class Bestiary {
case 10:
switch (Random.Int(3)) {
case 0:
return new ArrayList<>(Arrays.asList(Skeleton.class,
KagenoNusujin.class, BlackHost.class,
return new ArrayList<>(Arrays.asList(Skeleton.class, BlackHost.class,
Thief.class,DM100.class,Necromancer.class));
case 1:
return new ArrayList<>(Arrays.asList(Skeleton.class, Skeleton.class, Skeleton.class,
@ -100,8 +99,7 @@ public class Bestiary {
case 15:
switch (Random.Int(4)) {
case 0:
return new ArrayList<>(Arrays.asList(Skeleton.class,
KagenoNusujin.class, BlackHost.class,
return new ArrayList<>(Arrays.asList(Skeleton.class, BlackHost.class,
Thief.class,DM100.class,Necromancer.class));
case 1:
return new ArrayList<>(Arrays.asList(Skeleton.class, Skeleton.class, Skeleton.class,
@ -131,14 +129,13 @@ public class Bestiary {
case 25:
switch (Random.Int(6)) {
case 0:
return new ArrayList<>(Arrays.asList(Skeleton.class,
KagenoNusujin.class, BlackHost.class,
return new ArrayList<>(Arrays.asList(Skeleton.class, BlackHost.class,
Thief.class,DM100.class,Necromancer.class));
case 1:
return new ArrayList<>(Arrays.asList(Skeleton.class, Skeleton.class, Skeleton.class,
Thief.class,Thief.class,Fire_Scorpio.class,
DM201.class,SkullShaman.class,MolotovHuntsman.class,
DM201.class,SRPDHBLR.class, Ice_Scorpio.class));
DM200.class,SkullShaman.class,MolotovHuntsman.class,
DM100.class,SRPDHBLR.class, Ice_Scorpio.class));
case 2:
return new ArrayList<>(Arrays.asList(
Succubus.class, Succubus.class, Succubus.class,
@ -176,24 +173,18 @@ public class Bestiary {
//3x rat, 1x snake
return new ArrayList<>(Arrays.asList(
Rat.class, Rat.class,
Rat.class, OGPDZSLS.class, Rat.class,
Snake.class));
Rat.class));
case 2:
return new ArrayList<>(Arrays.asList(Rat.class,
Rat.class, Rat.class, Gnoll.class, Gnoll.class,
Gnoll.class, OGPDLLS.class, OGPDNQHZ.class));
case 3:
return new ArrayList<>(Arrays.asList(Rat.class,
Rat.class, Rat.class, Gnoll.class, Gnoll.class,
Gnoll.class, OGPDLLS.class, OGPDNQHZ.class,
Rat.class, OGPDNQHZ.class,
OGPDZSLS.class, Rat.class, Rat.class,
Snake.class,Crab.class,Crab.class,Swarm.class));
Snake.class,Crab.class,Swarm.class));
case 4:
return new ArrayList<>(Arrays.asList(Rat.class,
Gnoll.class, Gnoll.class
, OGPDLLS.class,
Snake.class,
OGPDNQHZ.class, OGPDZSLS.class,
return new ArrayList<>(Arrays.asList(OGPDZSLS.class,
OGPDLLS.class, Snake.class,
Slime_Orange.class, Swarm.class,Crab.class));
case 5:
@ -204,20 +195,16 @@ public class Bestiary {
Snake.class));
case 7:
return new ArrayList<>(Arrays.asList(Skeleton.class,
KagenoNusujin.class, BlackHost.class,
return new ArrayList<>(Arrays.asList(Skeleton.class, BlackHost.class,
Thief.class,DM100.class,Necromancer.class));
case 8:
return new ArrayList<>(Arrays.asList(Skeleton.class,
Skeleton.class,
Thief.class, Shaman.random(),BrownBat.class,KagenoNusujin.class,
Shaman.random(), Guard.class, SRPDHBLR.class,Necromancer.class,
KagenoNusujin.class,BrownBat.class));
Thief.class,BrownBat.class, Guard.class, SRPDHBLR.class,Necromancer.class, BrownBat.class));
case 9:
return new ArrayList<>(Arrays.asList(Skeleton.class, Skeleton.class, Skeleton.class,
Thief.class,Thief.class,BrownBat.class,
BrownBat.class,SpectralNecromancer.class,SpectralNecromancer.class,
DM100.class,BrownBat.class, BlackHost.class,KagenoNusujin.class));
BrownBat.class, DM100.class,BrownBat.class, BlackHost.class));
case 10:
return new ArrayList<>(Arrays.asList(Bat.class,
@ -236,7 +223,7 @@ public class Bestiary {
return new ArrayList<>(Arrays.asList(
Bat.class,
Brute.class,Spinner.class,
DM201.class,RedSwarm.class));
DM100.class,RedSwarm.class));
case 14:
return new ArrayList<>(Arrays.asList(
@ -257,28 +244,25 @@ public class Bestiary {
case 16:
//5x elemental, 5x warlock, 1x monk, 2x silvercrab
return new ArrayList<>(Arrays.asList(
Elemental.random(), Elemental.random(), Elemental.random(),
Monk.class,
Shaman.random()));
case 17:
//2x elemental, 2x warlock, 2x monk, 1x silvercrab
return new ArrayList<>(Arrays.asList(
Elemental.random(), Elemental.random(), Elemental.random(), Elemental.random(),
Monk.class,RedMurderer.class,FireGhost.class,MolotovHuntsman.class));
Elemental.random(),
Monk.class,FireGhost.class));
case 18:
//1x elemental, 1x warlock, 2x monk, 3x golem
return new ArrayList<>(Arrays.asList(
Elemental.random(),RedMurderer.class,
Warlock.class, Warlock.class,
Monk.class, Monk.class,
IceGolem.class, Golem.class, Golem.class,MolotovHuntsman.class,FireGhost.class));
Elemental.random(),
Warlock.class,
Monk.class,
Golem.class,MolotovHuntsman.class,FireGhost.class));
case 19:
//1x elemental, 1x warlock, 2x monk, 3x golem
return new ArrayList<>(Arrays.asList(
Elemental.random(),RedMurderer.class,RedMurderer.class,
ShieldHuntsman.class, Warlock.class,
Monk.class, IceGolem.class,IceGolem.class,
Golem.class, Golem.class, Golem.class,ShieldHuntsman.class));
Monk.class,IceGolem.class,
Golem.class,ShieldHuntsman.class));
case 20:
//1x elemental, 1x warlock, 2x monk, 3x golem
return new ArrayList<>(Arrays.asList(
@ -290,25 +274,20 @@ public class Bestiary {
case 21:case 22:
//3x succubus, 3x evil eye
return new ArrayList<>(Arrays.asList(
Succubus.class, Succubus.class, Succubus.class,
Succubus.class, Succubus.class,
Eye.class,ShieldHuntsman.class,Ice_Scorpio.class));
case 23:
//1x: succubus, 2x evil eye, 3x scorpio
return new ArrayList<>(Arrays.asList(
Succubus.class,
Eye.class, Eye.class,
Scorpio.class, Eye.class, Eye.class,Succubus.class, Succubus.class,
Scorpio.class, Scorpio.class, Scorpio.class,Fire_Scorpio.class,Ice_Scorpio.class));
Eye.class,
Scorpio.class, Succubus.class,ShieldHuntsman.class));
//前半段决战
case 24:
//1x succubus, 2x evil eye, 3x scorpio
return new ArrayList<>(Arrays.asList(
Succubus.class,
Eye.class, Eye.class,
Scorpio.class, Eye.class, Eye.class,Succubus.class, Succubus.class,
Scorpio.class, Scorpio.class,Fire_Scorpio.class,Scorpio.class,ShieldHuntsman.class,
Ice_Scorpio.class,Fire_Scorpio.class));
Eye.class,
Scorpio.class, Succubus.class,Fire_Scorpio.class,Ice_Scorpio.class,ShieldHuntsman.class));
default:
return new ArrayList<>(Arrays.asList(Rat.class, Rat.class,
Rat.class,

View File

@ -32,7 +32,7 @@ public class ColdGurad extends Mob implements Callback {
{
spriteClass = ColdGuardSprite.class;
HP = HT = 80;
HP = HT = 40;
defenseSkill = 10;
EXP = 0;
@ -140,12 +140,12 @@ public class ColdGurad extends Mob implements Callback {
@Override
public int attackSkill( Char target ) {
return 12;
return 5;
}
@Override
public int drRoll() {
return Random.NormalIntRange(0, 7);
return Random.NormalIntRange(0, 5);
}
@Override
@ -206,7 +206,7 @@ public class ColdGurad extends Mob implements Callback {
Sample.INSTANCE.play( Assets.Sounds.DEBUFF );
}
int dmg = Random.NormalIntRange( 12, 18 );
int dmg = Random.NormalIntRange( 3,6 );
for (Mob mob : Dungeon.level.mobs.toArray( new Mob[0] )) {
if(Random.NormalIntRange(0,9)<4) {

View File

@ -17,7 +17,7 @@ public class KagenoNusujin extends Thief {
public KagenoNusujin() {
this.spriteClass = KagenoNusujinSprite.class;
this.HT = this.HP =50;
this.defenseSkill = 16;
this.defenseSkill = -1;
this.maxLvl = 34;
this.properties.add(Property.UNDEAD);
WANDERING = new Wandering();

View File

@ -38,6 +38,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Chill;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Cripple;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Frost;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Haste;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MindVision;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Paralysis;
@ -480,7 +481,8 @@ public class NewDM300 extends Mob {
spend(Dungeon.isChallenged(Challenges.STRONGER_BOSSES) ? 2f : 3f);
yell(Messages.get(this, "charging"));
Buff.affect( hero, MindVision.class, 7f );
Buff.affect( hero, MindVision.class, 20f );
Buff.affect( hero, Haste.class, 7f );
sprite.showStatus(CharSprite.POSITIVE, Messages.get(this, "invulnerable"));
((DM300Sprite)sprite).updateChargeState(true);
((DM300Sprite)sprite).charge();

View File

@ -27,18 +27,18 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Fire;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Burning;
import com.shatteredpixel.shatteredpixeldungeon.items.quest.GooBlob;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfLiquidFlame;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.OrangeSprites;
import com.watabou.utils.PathFinder;
import com.watabou.utils.Random;
/*史莱姆烈焰审判现在移除*/
public class Slime_Orange extends Slime {
{
spriteClass = OrangeSprites.class;
lootChance = 0f; //by default, see rollToDropLoot()
lootChance = 0.25f; //by default, see rollToDropLoot()
loot = PotionOfLiquidFlame.class;
properties.add(Property.ACIDIC);
maxLvl = -200;
maxLvl = 12;
EXP=3;
}
private int combo = 0;
@ -55,17 +55,4 @@ public class Slime_Orange extends Slime {
}
return damage2;
}
@Override
public void rollToDropLoot() {
if (Dungeon.hero.lvl > maxLvl + 2) return;
super.rollToDropLoot();
int ofs;
do {
ofs = PathFinder.NEIGHBOURS8[Random.Int(8)];
} while (!Dungeon.level.passable[pos + ofs]);
Dungeon.level.drop( new GooBlob(), pos + ofs ).sprite.drop( pos );
}
}

View File

@ -26,7 +26,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Poison;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.RoseShiled;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.TestDwarfMasterLock;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Timer;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Vulnerable;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.BlackHost;
@ -1500,7 +1499,7 @@ public class DwarfMaster extends Boss {
@Override
public int defenseProc(Char enemy, int damage){
if(damage > 3) summonMiniGoo();
// if(damage > 3) summonMiniGoo();
return super.defenseProc(enemy, damage);
}
@ -1515,17 +1514,17 @@ public class DwarfMaster extends Boss {
}
}
if (candidates.size() > 0) {
RedMurderer mini = new RedMurderer();
Buff.affect(mini, Timer.class, berserk()? 5f:7f);
mini.pos = Random.element( candidates );
mini.state = mini.HUNTING;
Dungeon.level.occupyCell(mini);
GameScene.add( mini , 0f );
Actor.addDelayed( new Pushing( mini, pos, mini.pos ), -1 );
}
// if (candidates.size() > 0) {
// RedMurderer mini = new RedMurderer();
// Buff.affect(mini, Timer.class, berserk()? 5f:7f);
// mini.pos = Random.element( candidates );
// mini.state = mini.HUNTING;
//
// Dungeon.level.occupyCell(mini);
//
// GameScene.add( mini , 0f );
// Actor.addDelayed( new Pushing( mini, pos, mini.pos ), -1 );
// }
}
@Override

View File

@ -176,6 +176,7 @@ public class Shopkeeper extends NPC {
price *= 0.1;
}
price *= 1.5;
//todo 3折
} else if (Dungeon.hero.buff(BlessNoMoney.class) != null) {
price *= 0.3;
}

View File

@ -54,7 +54,9 @@ public class BackGoKey extends TestItem {
@Override
public ArrayList<String> actions(Hero hero ) {
ArrayList<String> actions = super.actions( hero );
actions.add(AC_INTER_TP);
if(Dungeon.hero.buff(ShopLimitLock.class) != null || Dungeon.depth == -5) {
actions.add(AC_INTER_TP);
}
return actions;
}
@ -142,7 +144,7 @@ public class BackGoKey extends TestItem {
InterlevelScene.returnDepth = selectedLevel;
InterlevelScene.returnPos = -1;
Game.switchScene( InterlevelScene.class );
//detach( hero.belongings.backpack );
if(Dungeon.hero.buff(ShopLimitLock.class) != null) {
for (Buff buffx : hero.buffs()) {
if (buffx instanceof ShopLimitLock) {

View File

@ -10,7 +10,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.AllyBuff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Barrier;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Corruption;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Doom;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hunger;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicImmune;
@ -356,22 +355,6 @@ public class EndingBlade extends Weapon {
}
}
private void corruptEnemy( Mob enemy ){
//cannot re-corrupt or doom an enemy, so give them a major debuff instead
if(enemy.buff(Corruption.class) != null || enemy.buff(Doom.class) != null){
GLog.w( Messages.get(this, "already_corrupted") );
return;
}
if (!enemy.isImmune(Corruption.class)){
Corruption.corruptionHeal(enemy);
AllyBuff.affectAndLoot(enemy, curUser, Corruption.class);
} else {
Buff.affect(enemy, Doom.class);
}
}
public void fxs(Ballistica beam, Callback callback) {
MagicMissile.boltFromChar( curUser.sprite.parent,
MagicMissile.SHADOW,
@ -401,8 +384,7 @@ public class EndingBlade extends Weapon {
if(TIME_TO_DIED != 0){
TIME_TO_DIED--;
}
//fixme
//todo
if(level >= 10){
fireenergy += 0;
//武器最高级

View File

@ -79,6 +79,7 @@ public class IceFishSword extends Weapon {
bolt.collisionPos,
callback);
}
public int tier;
@Override

View File

@ -182,7 +182,7 @@ public class InterlevelScene extends PixelScene {
fadeTime += 0.9f; //adds 1 second total
//speed up transition when debugging
} else if (DeviceCompat.isDebug()){
fadeTime = 0.9f;
fadeTime = 0.1f;
}
SkinnedBlock bg = new SkinnedBlock(Camera.main.width, Camera.main.height, loadingAsset ){
@ -465,6 +465,9 @@ public class InterlevelScene extends PixelScene {
Level level = Dungeon.loadLevel( GamesInProgress.curSlot );
Dungeon.switchLevel( level, Dungeon.hero.pos );
}
}
private void resurrect() {

View File

@ -957,7 +957,7 @@ public class ItemSpriteSheet {
assignIconRect( POTION_CLEANSE, 7, 7 );
assignIconRect( POTION_DIVINE, 7, 7 );
assignIconRect( POTION_DRAGONKING, 7, 7 );
assignIconRect( POTION_DRAGONKING, 5, 7 );
assignIconRect( POTION_HOLYFUROR, 5, 7 );
}
//16 free slots

View File

@ -1,6 +1,7 @@
package com.shatteredpixel.shatteredpixeldungeon.ui.changelist.mlpd;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.NewDM300;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.ChangesScene;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
@ -15,6 +16,7 @@ import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.shatteredpixel.shatteredpixeldungeon.sprites.KagenoNusujinSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.MimicSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.MurdererSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.SRPDHBLRTT;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ShopkKingSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.WFSprite;
@ -31,6 +33,7 @@ import java.util.ArrayList;
public class vM0_6_7_X_Changes {
public static void addAllChanges(ArrayList<ChangeInfo> changeInfos) {
add_v0_6_13_Changes(changeInfos);
add_v0_6_12_Changes(changeInfos);
add_v0_6_11_Changes(changeInfos);
add_v0_6_10_Changes(changeInfos);
@ -46,6 +49,47 @@ public class vM0_6_7_X_Changes {
add_v0_6_0_Changes(changeInfos);
}
public static void add_v0_6_13_Changes( ArrayList<ChangeInfo> changeInfos ) {
ChangeInfo changes = new ChangeInfo("v0.6.0.0-Beta21-p2.6", true, "");
changes.hardlight(Window.TITLE_COLOR);
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), ("BUG同步修复-实验功能"),
("实验性功能,将在每次更新游戏的时候对无法通过代码直接同步的数据进行自动同步。")));
changes = new ChangeInfo("改动", false, null);
changes.hardlight(Window.CYELLOW);
changeInfos.add(changes);
changes.addButton(new ChangeButton(Icons.get(Icons.INFO), ("杂项改动"),
("1.总体刷怪体系调整\n2.书籍改为720金币起一本。\n3.矮人大师不再召唤猩红大盗")));
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_06X33")));
Image i = new Image(new DM300Sprite());
i.scale.set(PixelScene.align(0.74f));
changes.addButton( new ChangeButton(i, Messages.get(NewDM300.class, "name"),
"DM300每次激活能量塔玩家获得20回合灵视和7回合极速"));
changes.addButton(new ChangeButton(new ColdGuardSprite(), ("雪凛守卫"),
("调整雪凛峡谷守卫的总体难度")));
changes = new ChangeInfo("移除", false, null);
changes.hardlight(Window.RED_COLOR);
changeInfos.add(changes);
changes.addButton(new ChangeButton(new KagenoNusujinSprite(), ("影子盗贼"),
("移除此怪物,将在未来版本调整后加入,但不再是普通怪物类型")));
changes.addButton(new ChangeButton(new MurdererSprite.RedMuderer(), ("猩红大盗"),
("移除此怪物,将在未来版本调整后加入,但不再是普通怪物类型")));
}
public static void add_v0_6_12_Changes( ArrayList<ChangeInfo> changeInfos ) {
ChangeInfo changes = new ChangeInfo("v0.6.0.0-Beta21-p2", true, "");
changes.hardlight(Window.TITLE_COLOR);

View File

@ -95,6 +95,7 @@ public class WndChallenges extends Window {
final int warning_mode =9;
final int custom_mode = 13;
final int Test_Debug = 14;
final int fixed_mode = 15;
boolean isCustom = false;
float pos = 0;
@ -102,7 +103,7 @@ public class WndChallenges extends Window {
final String challenge = Challenges.NAME_IDS[i];
if(i==normal_mode || i==hard_mode || i==warning_mode|| i==custom_mode || i==Test_Debug){
if(i==normal_mode || i==hard_mode || i==warning_mode|| i==custom_mode || i==fixed_mode || i==Test_Debug){
RenderedTextBlock block = PixelScene.renderTextBlock(10);
switch (i){
case normal_mode:
@ -125,6 +126,10 @@ public class WndChallenges extends Window {
block.text(Messages.get(Challenges.class, "test"));
block.hardlight(0xFFFF00);
break;
case fixed_mode:
block.text(Messages.get(Challenges.class, "fixed"));
block.hardlight(Window.CBLACK);
break;
}
block.setPos((WIDTH - block.width()) / 2,
pos + GAP *4);

View File

@ -187,8 +187,8 @@ public class WndNyzShop extends Window {
buff.detach();
}
}
} else if(Dungeon.gold > 300) {
Dungeon.gold-=300*Random.Int(2)+hero.lvl/5+10;
} else if(Dungeon.gold > 720) {
Dungeon.gold-=720*Random.Int(2)+hero.lvl/5+10;
WndNyzShop.this.selectReward( item );
if (RandomBuff.level-- >= 0) {
}

View File

@ -77,6 +77,8 @@ public class WndStory extends Window {
public static final int ID_CHAPTONEEND = 10;
public static final int ID_ICEBOSS = 11;
public static final int ID_GAME = 12;
//
public static final int ID_DWADA = 13;
private static final SparseArray<String> CHAPTERS = new SparseArray<>();