Update V0.6.3.0-Beta4-5

This commit is contained in:
LingASDJ 2023-07-12 23:00:57 +08:00
parent 54369bc416
commit 1ae8e8ff16
36 changed files with 286 additions and 700 deletions

View File

@ -31,8 +31,6 @@ import android.widget.TextView;
import com.badlogic.gdx.graphics.g2d.freetype.FreeType;
import com.badlogic.gdx.utils.GdxNativesLoader;
import com.shatteredpixel.shatteredpixeldungeon.services.analytics.Analytics;
import com.shatteredpixel.shatteredpixeldungeon.services.analytics.AnalyticsImpl;
public class AndroidLauncher extends Activity {
@ -44,7 +42,6 @@ public class AndroidLauncher extends Activity {
try {
GdxNativesLoader.load();
FreeType.initFreeType();
Analytics.service = AnalyticsImpl.getAnalyticsService();
Intent intent = new Intent(this, AndroidGame.class);
startActivity(intent);
finish();

View File

@ -18,8 +18,8 @@ allprojects {
appName = 'Magic Ling Pixel Dungeon'
appPackageName = 'com.ansdomagiclingpixeldungeon.ling'
appVersionCode =900922
appVersionName = '0.6.3.0-Beta4.7'
appVersionCode =900925
appVersionName = '0.6.3.0-Beta5.0'
appJavaCompatibility = JavaVersion.VERSION_11

View File

@ -82,7 +82,7 @@ items.lightblack.oillantern.lanterneedsxs=你的油瓶还未加入提灯中,
items.lightblack.oillantern.lanterdied=你的提灯忽隐忽现地熄灭了!
items.lightblack.oillantern.lanteroff=你吹灭了提灯。
items.lightblack.oillantern.lanteron=你点亮了提灯。
items.lightblack.oillantern.lanterreload=把提灯的灯油再次加满了。
items.lightblack.oillantern.lanterreload=将提灯的灯油加了一部分,提灯看起来更明亮了。
items.lightblack.oillantern.lanterneed=你没多的油瓶给提灯加油了。
items.lightblack.oillantern.lanterneeds=你需要一个备用的油瓶给提灯加油。
items.lightblack.oillantern.black=你的提灯已经完全熄灭,必须需要新的火种才能重新点燃……
@ -1986,6 +1986,7 @@ items.weapon.melee.magesstaff.preserved=你保留了之前灌注的法杖!
items.weapon.melee.magesstaff.preserved_resin=之前的法杖失去魔力,还原为了奥术聚酯。
items.weapon.melee.magesstaff.conflict=相互冲突的魔法抹去了你魔杖上的附魔。
items.weapon.melee.magesstaff.id_first=你需要先鉴定这根法杖。
items.weapon.melee.magesstaff.no_wands=禁止灌注此
items.weapon.melee.magesstaff.cursed=你不能注入一根受诅咒的法杖。
items.weapon.melee.magesstaff.imbue_desc=你确定要将这根法杖注入老魔杖?\n\n如果被吸收法杖的等级大于等于老魔杖的等级老魔杖会在继承这根法杖的等级后再加上自身的一级。\n\n在这次灌注后老魔杖会变为_ %d _级。
items.weapon.melee.magesstaff.imbue_lost=魔杖之前吸收的魔力都会消散。

View File

@ -282,7 +282,7 @@ badges$badge.read_book_four.desc=一局累计阅读七本不同的书籍。
challenges.no_food=缩餐节食
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_healing=恐药异症
challenges.no_healing_desc=治疗药水真是种好东西,可惜你对它过敏!\n\n・治疗药水以及使用治疗药水炼制的道具将无法治愈英雄反而会使英雄中毒。\n・炼金催化剂不会随机到治愈英雄或使英雄中毒的效果。\n・这些道具对其他角色依然发挥正常效果。
@ -298,6 +298,7 @@ rankings$record.something=在黑暗中被击杀
challenges.aquaphobia=污泥浊水
challenges.aquaphobia_desc=地牢的水也被污染了\n\n圣境层到矮人层踩水将会获得DeBuff,玩家在开局获得4瓶水灵药水饮用可获得100回合的踩水不获得Debuff时间并获得祝福。\n注意矮人层饮用漂浮药剂或者水灵药剂都会获得极速Buff且每大层会额外产生食人鱼房间。
challenges.champion_enemies=精英战场
challenges.champion_enemies_desc=会升级的不止你一个!\n\n・普通敌人刷出时有 1/8 \
的机率拥有特殊的精英属性。\n・精英敌人刷出时会立即醒来。\n・精英敌人免疫腐化效果。\n\n精英敌人有九种\n_烈焰橙色_ 近战伤害 \
@ -326,11 +327,13 @@ challenges.icedied = 雪虐风饕(未完成)
challenges.icedied_desc=很显然,地牢的雪越下越大了,在这严寒里面,生存的法则将进一步让我们活得更久。\n篝火房间一旦被激活不再无限变成40回合的寒冷抑制商人会贩卖更多特殊物品。
challenges.dhxd =灯火前路
challenges.dhxd_desc= 灯火指引着前进的道路,提灯引路,灯火前行![此为三挑以上的特殊机制,但你也可以直接开启它!]
challenges.dhxd_desc= 灯火指引着前进的道路,提灯引路,灯火前行! \n\n此为三挑以上的特殊机制但你也可以直接开启它!\n\n1.追加灯火祝福和魔女诅咒机制,灯火会随着深入楼层进行降低\n2.在较低的灯火下死亡会精神崩溃,诞生自己的暗影。\n3.追加提灯和灯油,合理使用这些道具,让自己能在灯火祝福中活下去!如果不幸遭到魔女的诅咒,也不会让你陷入绝境。\n\n灯火不灭希望仍在提灯引路灯火前行
challenges.cs=挑战(占位符)
challenges.cs_desc=这并不是挑战,请忽略不计。
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控制终端[尚未完成]

View File

@ -543,4 +543,9 @@ ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x77=-V0.6.3-Beta4.0\n1.修复上个
ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x78=-V0.6.3-Beta4.5\n1.修复护身符的错误\n2.修复一些严重错误\n3.修复粽子无法生成的问题且活动时间补偿到7月12号。\n4.修复部分Boss可以被腐化的问题
ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x79=-V0.6.3-Beta4.8\n1.修复一些小错误\n2.调整一些文案
ui.changelist.mlpd.vm0_6_7_x_changes.bug_06x80=1.修复灯火值不扣减的错误\n2.其他小错误修复
//ui.changelist.mlpd.vm0_5_x_changes.xxx//

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

View File

@ -307,6 +307,7 @@ public class Assets {
public static final String KEEPERKINGBOT = "sprites/npc/autoshop.png";
//BOSS
public static final String FRDG = "sprites/boss/fireDragon.png";
public static final String VSGR = "sprites/boss/SeaVastGirl.png";

View File

@ -117,12 +117,9 @@ public class BGMPlayer {
if (Dungeon.isDLC(Conducts.Conduct.BOSSRUSH)) {
switch (depth){
case 2:
case 2: case 4:case 5:
playBGM(Assets.BGM_BOSSA, true);
break;
case 4:case 5:
playBGM(Assets.BGM_BOSSB, true);
break;
case 8: case 10:
playBGM(Assets.BGM_BOSSC, true);
break;

View File

@ -29,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClassArmor;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClothArmor;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.HornOfPlenty;
import com.shatteredpixel.shatteredpixeldungeon.items.food.SmallRation;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.InterlevelScene;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
@ -97,8 +98,8 @@ public class Challenges {
if (Dungeon.isChallenged(NO_ARMOR)) {
if (item instanceof Armor && !(item instanceof ClothArmor || item instanceof ClassArmor)) {
GLog.n("这片大地吃布甲之外的护甲从不挑食,侦查到作弊行为,已移除"+item);
return true;
//GLog.n("这片大地吃布甲之外的护甲从不挑食,侦查到作弊行为,已移除"+item);
GLog.n(Messages.get(Challenges.class, "no_armorx"), item);
}
}

View File

@ -21,6 +21,7 @@
package com.shatteredpixel.shatteredpixeldungeon;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.PRO;
import static com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroClass.ROGUE;
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
@ -1045,7 +1046,10 @@ public class Dungeon {
public static void fail( Class cause ) {
if (WndResurrect.instance == null) {
updateLevelExplored();
Rankings.INSTANCE.submit( false, cause );
if(!Dungeon.isChallenged(PRO)){
Rankings.INSTANCE.submit( false, cause );
}
}
}
@ -1053,7 +1057,9 @@ public class Dungeon {
Statistics.gameWon = true;
hero.belongings.identify();
updateLevelExplored();
Rankings.INSTANCE.submit( true, cause );
if(!Dungeon.isChallenged(PRO)) {
Rankings.INSTANCE.submit(true, cause);
}
}
//default to recomputing based on max hero vision, in case vision just shrank/grew

View File

@ -1052,9 +1052,12 @@ public abstract class Char extends Actor {
new HashSet<Class>( Arrays.asList(Ooze.class))),
ELECTRIC ( new HashSet<Class>( Arrays.asList(WandOfLightning.class, Shocking.class, Potential.class, Electricity.class, ShockingDart.class, Elemental.ShockElemental.class )),
new HashSet<Class>()),
ABYSS( new HashSet<Class>( Arrays.asList(Grim.class, GrimTrap.class, ScrollOfRetribution.class,
ScrollOfPsionicBlast.class)),new HashSet<Class>()),
LARGE,
IMMOVABLE,
NPC;
private HashSet<Class> resistances;
private HashSet<Class> immunities;

View File

@ -40,7 +40,9 @@ public class BlessAnmy extends Buff {
target.remove( this );
WandOfAnmy wandOfAnmy = Dungeon.hero.belongings.getItem(WandOfAnmy.class);
wandOfAnmy.detachAll( hero.belongings.backpack );
if(wandOfAnmy != null){
wandOfAnmy.detachAll( hero.belongings.backpack );
}
}
public int level() {

View File

@ -1,11 +0,0 @@
package com.shatteredpixel.shatteredpixeldungeon.actors.buffs;
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
public class HealingXP extends Healing{
@Override
public int icon() {
return BuffIndicator.HEALING;
}
}

View File

@ -1,6 +1,8 @@
package com.shatteredpixel.shatteredpixeldungeon.actors.buffs;
import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero;
import static com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero.badLanterFire;
import static com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero.goodLanterFire;
import static com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene.cure;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
@ -30,30 +32,18 @@ public class Nyctophobia extends Buff implements Hero.Doom {
@Override
public boolean act() {
if(hero.lanterfire == 90){
cure( Dungeon.hero );
goodLanterFire();
}
if (hero.lanterfire < 51 && hero.lanterfire>31) {
cure( Dungeon.hero );
switch (Random.Int(5)){
case 0: default:
Buff.affect(hero, MagicGirlSayMoneyMore.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, MagicGirlSaySoftDied.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, MagicGirlSaySlowy.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, MagicGirlSayKill.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, MagicGirlSayNoSTR.class).set( (100), 1 );
break;
case 5:
Buff.affect(hero, MagicGirlSayTimeLast.class).set( (100), 1 );
break;
}
badLanterFire();
spend(100f);
} else if (hero.lanterfire < 31) {
} else if (hero.lanterfire < 31 && hero.lanterfire > 0) {
cure( Dungeon.hero );
switch (Random.Int(5)){
case 0: case 1:
@ -70,6 +60,10 @@ public class Nyctophobia extends Buff implements Hero.Doom {
break;
}
spend(50f);
} else if(hero.lanterfire < 0){
hero.damage( (Dungeon.depth/5)*(Math.abs(hero.lanterfire)/2)+10, this );
spend(24f);
GLog.w( Messages.get(this, "desc6") );
}
@ -86,8 +80,8 @@ public class Nyctophobia extends Buff implements Hero.Doom {
return true;
}
if (hero.lanterfire >= 0 ) {
hero.damageLantern(1);
spend(17f-(float) Dungeon.depth/5);
hero.damageLantern(1+Dungeon.depth/5);
spend(10f+(float) Dungeon.depth/5);
} else {
spend(STEP);
}

View File

@ -66,6 +66,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ClearBleesdGoodBuff
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Combo;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Cripple;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.DeadSoul;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Dread;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Drowsy;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Foresight;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FrostImbueEX;
@ -1955,18 +1956,26 @@ public class Hero extends Char {
ankh = i;
}
}
//灯火值低于30死亡生成自己的邪恶面并清空金币将金币保存到json文件灵感空洞骑士
if(lanterfireactive && hero.lanterfire <= 30) {
BlackSoul s = new BlackSoul();
s.pos = Dungeon.hero.pos;
s.gold = Dungeon.gold;
Dungeon.gold = 0;
s.state = s.SLEEPING;
GameScene.add(s);
Buff.affect(s, ChampionEnemy.DeadSoulSX.class);
Buff.affect(s, DeadSoul.class);
GameScene.flash(0x80FF0000);
for (Mob mob : Dungeon.level.mobs.toArray(new Mob[0])){
if (mob instanceof BlackSoul) {
Buff.affect( mob, Dread.class );
Buff.prolong(mob, AnkhInvulnerability.class, 200f);
}
}
//灯火值低于35死亡生成自己的邪恶面并清空金币将金币保存到json文件灵感空洞骑士
if(lanterfireactive && hero.lanterfire <= 35) {
BlackSoul s = new BlackSoul();
s.pos = Dungeon.hero.pos;
s.gold = Dungeon.gold;
Dungeon.gold = 0;
s.state = s.SLEEPING;
GameScene.add(s);
Buff.affect(s, ChampionEnemy.DeadSoulSX.class);
Buff.affect(s, DeadSoul.class);
GameScene.flash(0x80FF0000);
}
if(Statistics.fireGirlnoshopping && Dungeon.depth < 0){
reallyDie( cause );
@ -2442,6 +2451,54 @@ public class Hero extends Char {
return smthFound;
}
public static void goodLanterFire(){
switch (Random.Int(5)){
case 0: default:
Buff.affect(hero, BlessNoMoney.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, BlessGoodSTR.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, BlessMobDied.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, BlessMixShiled.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, BlessImmune.class).set( (100), 1 );
break;
case 5:
Buff.affect(hero, BlessAnmy.class).set( (100), 1 );
break;
}
GLog.p(Messages.get(WndStory.class,"good"));
}
public static void badLanterFire(){
switch (Random.Int(5)){
case 0: default:
Buff.affect(hero, MagicGirlSayMoneyMore.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, MagicGirlSaySoftDied.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, MagicGirlSayCursed.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, MagicGirlSaySlowy.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, MagicGirlSayKill.class).set( (100), 1 );
break;
case 5:
Buff.affect(hero, MagicGirlSayNoSTR.class).set( (100), 1 );
break;
}
GLog.n(Messages.get(WndStory.class,"bad"));
}
public void resurrect() {
HP = HT;
@ -2449,271 +2506,33 @@ public class Hero extends Char {
if(lanterfireactive){
if (hero.lanterfire == 100){
switch (Random.Int(5)){
case 0: default:
Buff.affect(hero, BlessNoMoney.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, BlessGoodSTR.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, BlessMobDied.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, BlessMixShiled.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, BlessImmune.class).set( (100), 1 );
break;
case 5:
Buff.affect(hero, BlessAnmy.class).set( (100), 1 );
break;
}
GLog.p(Messages.get(WndStory.class,"good"));
goodLanterFire();
} else if (hero.lanterfire <= 99 && hero.lanterfire >= 90) {
switch (Random.Int(5)){
case 0: default:
Buff.affect(hero, BlessNoMoney.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, BlessGoodSTR.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, BlessMobDied.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, BlessMixShiled.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, BlessImmune.class).set( (100), 1 );
break;
case 5:
Buff.affect(hero, BlessAnmy.class).set( (100), 1 );
break;
}
GLog.p(Messages.get(WndStory.class,"good"));
goodLanterFire();
} else if (hero.lanterfire <= 89 && hero.lanterfire >= 80 && Random.Float() <= 0.05f ) {
switch (Random.Int(5)){
case 0: default:
Buff.affect(hero, MagicGirlSayMoneyMore.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, MagicGirlSaySoftDied.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, MagicGirlSayCursed.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, MagicGirlSaySlowy.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, MagicGirlSayKill.class).set( (100), 1 );
break;
case 5:
Buff.affect(hero, MagicGirlSayNoSTR.class).set( (100), 1 );
break;
}
GLog.n(Messages.get(WndStory.class,"bad"));
badLanterFire();
} else if (hero.lanterfire <= 89 && hero.lanterfire >= 80 && Random.Float() <= 0.85f ) {
switch (Random.Int(5)){
case 0: default:
Buff.affect(hero, BlessNoMoney.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, BlessGoodSTR.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, BlessMobDied.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, BlessMixShiled.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, BlessImmune.class).set( (100), 1 );
break;
case 5:
Buff.affect(hero, BlessAnmy.class).set( (100), 1 );
break;
}
GLog.p(Messages.get(WndStory.class,"good"));
goodLanterFire();
} else if (hero.lanterfire <= 89 && hero.lanterfire >= 80) {
GLog.b(Messages.get(WndStory.class,"normoal"));
} else if (hero.lanterfire <= 79 && hero.lanterfire >= 60 && Random.Float() <= 0.25f ) {
switch (Random.Int(5)){
case 0: default:
Buff.affect(hero, MagicGirlSayMoneyMore.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, MagicGirlSaySoftDied.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, MagicGirlSayCursed.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, MagicGirlSaySlowy.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, MagicGirlSayKill.class).set( (100), 1 );
break;
case 5:
Buff.affect(hero, MagicGirlSayNoSTR.class).set( (100), 1 );
break;
}
GLog.n(Messages.get(WndStory.class,"bad"));
badLanterFire();
} else if (hero.lanterfire <= 79 && hero.lanterfire >= 60 && Random.Float() <= 0.70f ) {
switch (Random.Int(6)){
case 0: default:
Buff.affect(hero, BlessNoMoney.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, BlessGoodSTR.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, BlessMobDied.class).set( (100), 1 );
break;
case 3:
new WandOfAnmy().quantity(1).identify().collect();
Buff.affect(hero, BlessAnmy.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, BlessImmune.class).set( (100), 1 );
break;
case 5:
Buff.affect(hero, BlessMixShiled.class).set( (100), 1 );
break;
}
GLog.p(Messages.get(WndStory.class,"good"));
goodLanterFire();
} else if (hero.lanterfire <= 79 && hero.lanterfire >= 60) {
GLog.b(Messages.get(WndStory.class,"normoal"));
} else if (hero.lanterfire <= 59 && hero.lanterfire >= 35 && Random.Float() <= 0.40f ) {
switch (Random.Int(5)){
case 0: default:
Buff.affect(hero, MagicGirlSayMoneyMore.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, MagicGirlSaySoftDied.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, MagicGirlSayCursed.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, MagicGirlSaySlowy.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, MagicGirlSayKill.class).set( (100), 1 );
break;
case 5:
Buff.affect(hero, MagicGirlSayNoSTR.class).set( (100), 1 );
break;
}
GLog.n(Messages.get(WndStory.class,"bad"));
badLanterFire();
} else if (hero.lanterfire <= 59 && hero.lanterfire >= 35 && Random.Float() <= 0.20f ) {
switch (Random.Int(4)){
case 0: default:
Buff.affect(hero, BlessNoMoney.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, BlessGoodSTR.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, BlessMobDied.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, BlessMixShiled.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, BlessImmune.class).set( (100), 1 );
break;
}
GLog.p(Messages.get(WndStory.class,"good"));
goodLanterFire();
} else if (hero.lanterfire <= 59 && hero.lanterfire >= 35) {
GLog.b(Messages.get(WndStory.class,"normoal"));
} else if (hero.lanterfire <= 34 && hero.lanterfire >= 1 && Random.Float() <= 0.40f ) {
switch (Random.Int(5)){
case 0: default:
Buff.affect(hero, MagicGirlSayMoneyMore.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, MagicGirlSaySoftDied.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, MagicGirlSayCursed.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, MagicGirlSaySlowy.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, MagicGirlSayKill.class).set( (100), 1 );
break;
case 5:
Buff.affect(hero, MagicGirlSayNoSTR.class).set( (100), 1 );
break;
}
GLog.n(Messages.get(WndStory.class,"bad"));
} else if (hero.lanterfire <= 34 && hero.lanterfire >= 1 && Random.Float() <= 0.35f ) {
switch (Random.Int(4)){
case 0: default:
Buff.affect(hero, BlessNoMoney.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, BlessGoodSTR.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, BlessMobDied.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, BlessMixShiled.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, BlessImmune.class).set( (100), 1 );
break;
}
GLog.p(Messages.get(WndStory.class,"good"));
badLanterFire();
} else if (hero.lanterfire <= 34 && hero.lanterfire >= 1) {
GLog.b(Messages.get(WndStory.class,"normoal"));
} else if (hero.lanterfire <= 0 && Random.Float() <= 0.48f ) {
switch (Random.Int(5)){
case 0: default:
Buff.affect(hero, MagicGirlSayMoneyMore.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, MagicGirlSaySoftDied.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, MagicGirlSayCursed.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, MagicGirlSaySlowy.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, MagicGirlSayKill.class).set( (100), 1 );
break;
case 5:
Buff.affect(hero, MagicGirlSayNoSTR.class).set( (100), 1 );
break;
}
GLog.n(Messages.get(WndStory.class,"bad"));
} else if (hero.lanterfire <= 0 && Random.Float() <= 0.10f ) {
switch (Random.Int(4)){
case 0: default:
Buff.affect(hero, BlessNoMoney.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, BlessGoodSTR.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, BlessMobDied.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, BlessMixShiled.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, BlessImmune.class).set( (100), 1 );
break;
}
GLog.p(Messages.get(WndStory.class,"good"));
} else if (hero.lanterfire <= 0 ) {
GLog.b(Messages.get(WndStory.class,"normoal"));
} else {
badLanterFire();
}
}

View File

@ -49,6 +49,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Amulet;
import com.shatteredpixel.shatteredpixeldungeon.items.BrokenSeal;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.shatteredpixel.shatteredpixeldungeon.items.KingsCrown;
import com.shatteredpixel.shatteredpixeldungeon.items.TengusMask;
import com.shatteredpixel.shatteredpixeldungeon.items.Waterskin;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClothArmor;
import com.shatteredpixel.shatteredpixeldungeon.items.armor.LeatherArmor;
@ -88,7 +89,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ScrollOfMys
import com.shatteredpixel.shatteredpixeldungeon.items.spells.AquaBlast;
import com.shatteredpixel.shatteredpixeldungeon.items.spells.MagicalInfusion;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfCorruption;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfFireblast;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfFrost;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfMagicMissile;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfRegrowth;
@ -112,7 +112,6 @@ import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.plants.AikeLaier;
import com.shatteredpixel.shatteredpixeldungeon.plants.Firebloom;
import com.shatteredpixel.shatteredpixeldungeon.plants.SkyBlueFireBloom;
import com.watabou.utils.Random;
public enum HeroClass {
@ -158,7 +157,7 @@ public enum HeroClass {
new LockSword().quantity(1).identify().collect();
new PotionOfInvisibility().quantity(45).identify().collect();
new SandalsOfNature().quantity(1).identify().collect();
new TengusMask().quantity(1).identify().collect();
new TimekeepersHourglass().quantity(1).identify().collect();
Buff.affect(hero, ChampionHero.AntiMagic.class, 50000f);
@ -300,20 +299,10 @@ public enum HeroClass {
MagesStaff staff;
staff = new MagesStaff(new WandOfMagicMissile());
//new MIME.GOLD_FIVE().quantity(1).identify().collect();
(hero.belongings.weapon = staff).identify();
(hero.belongings.weapon = staff).identify().level(1);
hero.belongings.weapon.activate(hero);
WandOfFireblast woc = new WandOfFireblast();
woc.identify().quantity(1).collect();
WandOfFrost wox = new WandOfFrost();
wox.level(Random.NormalIntRange(1,3));
wox.identify().quantity(1).collect();
Dungeon.quickslot.setSlot(0, staff);
Dungeon.quickslot.setSlot(1, wox);
Dungeon.quickslot.setSlot(2, woc);
new ScrollOfUpgrade().identify();
new PotionOfLiquidFlame().identify();

View File

@ -72,7 +72,7 @@ public class BloodBat extends Mob implements Callback {
Sample.INSTANCE.play( Assets.Sounds.DEBUFF );
}
int dmg = Random.NormalIntRange( (2+level)*Dungeon.depth/5, (2+level)*Dungeon.depth/5 );
int dmg = Random.NormalIntRange( (2*Dungeon.depth/5), 4*Dungeon.depth/5 );
enemy.damage( dmg, new BloodBat.DarkBolt() );
if (enemy == Dungeon.hero && !enemy.isAlive()) {
@ -150,7 +150,10 @@ public class BloodBat extends Mob implements Callback {
@Override
public void damage(int dmg, Object src) {
super.damage(dmg, src);
Buff.affect(Dungeon.hero, ArtifactRecharge.class).prolong(dmg*2);
if(Random.Int(10)==5 && hero.lvl>=10){
Buff.affect(Dungeon.hero, ArtifactRecharge.class).prolong(dmg/2f*2);
}
}
@Override

View File

@ -254,7 +254,7 @@ public class DiamondKnight extends Boss {
}
}
// 当boos血量低于360时加载第二场景
//当boos血量低于360时加载第二场景
@Override
public void die( Object cause ) {

View File

@ -27,6 +27,8 @@ public class BlackSoul extends Mob {
HP = HT = (20 + 5*(hero.lvl-1) + hero.HTBoost)/2;
immunities.add(AllyBuff.class);
properties.add(Property.ABYSS);
}
@Override
protected boolean act() {
@ -41,29 +43,23 @@ public class BlackSoul extends Mob {
@Override
public int attackSkill(Char target) {
return defenseSkill+5; //equal to base hero attack skill
return hero.defenseSkill(target)+5; //equal to base hero attack skill
}
@Override
public void die( Object cause ) {
super.die( cause );
if (gold > 0) {
Dungeon.level.drop( new Gold(gold), pos ).sprite.drop();
}
Dungeon.level.drop( new LostBackpack(), pos).sprite.drop( pos );
if (gold > 0) {
Dungeon.level.drop( new Gold(gold), pos ).sprite.drop();
}
Dungeon.level.drop( new LostBackpack(), pos).sprite.drop( pos );
}
@Override
public int damageRoll() {
int damage = Random.NormalIntRange(1, 5);
int heroDamage = hero.damageRoll();
heroDamage /= hero.attackDelay(); //normalize hero damage based on atk speed
heroDamage = Math.round(0.075f * hero.pointsInTalent(Talent.SHADOW_BLADE) * heroDamage);
if (heroDamage > 0){
damage += heroDamage;
}
return damage;
return hero.damageRoll()/2;
}
@Override
@ -79,35 +75,19 @@ public class BlackSoul extends Mob {
@Override
public int drRoll() {
int dr = super.drRoll();
int heroRoll = hero.drRoll();
heroRoll = Math.round(0.15f * hero.pointsInTalent(Talent.CLONED_ARMOR) * heroRoll);
if (heroRoll > 0){
dr += heroRoll;
}
return dr;
return hero.drRoll()/2;
}
@Override
public int defenseProc(Char enemy, int damage) {
damage = super.defenseProc(enemy, damage);
if (Random.Int(4) < hero.pointsInTalent(Talent.CLONED_ARMOR)
&& hero.belongings.armor() != null){
return hero.belongings.armor().proc( enemy, this, damage );
} else {
return damage;
}
return hero.defenseProc( enemy, damage );
}
@Override
public boolean canInteract(Char c) {
if (super.canInteract(c)){
return true;
} else if (Dungeon.level.distance(pos, c.pos) <= hero.pointsInTalent(Talent.PERFECT_COPY)) {
return true;
} else {
return false;
}
} else return Dungeon.level.distance(pos, c.pos) <= hero.pointsInTalent(Talent.PERFECT_COPY);
}
@Override

View File

@ -32,12 +32,12 @@ public class OilLantern extends Item {
private static final String CHARGE = "charge";
private static final String FLASKS = "flasks";
private static final int MAX_CHARGE = 100;
private static final int MAX_CHARGE = 30;
private static final float TIME_TO_USE = 2.0f;
private static final String TXT_STATUS = "%d%%";
private boolean active = false;
private int charge = MAX_CHARGE;
private int charge = 100;
public int flasks = 0;
public OilLantern() {
@ -122,7 +122,7 @@ public class OilLantern extends Item {
public void refill(Hero hero) {
this.flasks--;
this.charge = MAX_CHARGE;
this.charge += Math.min(MAX_CHARGE,charge);
hero.spend(TIME_TO_USE);
hero.busy();
Sample.INSTANCE.play(Assets.Sounds.DRINK, TIME_TO_USE, TIME_TO_USE, 1.2f);

View File

@ -29,14 +29,15 @@ import java.util.ArrayList;
public class WandOfAnmy extends DamageWand {
{
defaultAction = AC_ZAP;
usesTargeting = true;
bones = true;
}
@Override
public ArrayList<String> actions(Hero hero ) {
ArrayList<String> actions = super.actions( hero );
actions.remove(AC_DROP);
actions.remove(AC_THROW);
actions.add(AC_ZAP);
return actions;
public ArrayList<String> actions(Hero hero) {
return new ArrayList<>(); //yup, no dropping this one
}
public static class AllyToRestart extends AllyBuff {

View File

@ -184,7 +184,7 @@ public class SpiritBow extends Weapon {
@Override
public int min(int lvl) {
int dmg = 4 + Dungeon.hero.lvl/5
int dmg = 2 + Dungeon.hero.lvl/5
+ RingOfSharpshooting.levelDamageBonus(Dungeon.hero)
+ (curseInfusionBonus ? 1 + Dungeon.hero.lvl/30 : 0);
return Math.max(0, dmg);
@ -192,7 +192,7 @@ public class SpiritBow extends Weapon {
@Override
public int max(int lvl) {
int dmg = 9 + (int)(Dungeon.hero.lvl/2.5f)
int dmg = 6 + (int)(Dungeon.hero.lvl/2.5f)
+ 2*RingOfSharpshooting.levelDamageBonus(Dungeon.hero)
+ (curseInfusionBonus ? 2 + Dungeon.hero.lvl/15 : 0);
return Math.max(0, dmg);

View File

@ -38,6 +38,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.bags.Bag;
import com.shatteredpixel.shatteredpixeldungeon.items.bags.MagicalHolster;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRecharging;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.Wand;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfAnmy;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfCorrosion;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfCorruption;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfDisintegration;
@ -410,7 +411,9 @@ public class MagesStaff extends MeleeWeapon {
@Override
public void onSelect( final Item item ) {
if (item != null) {
if(item instanceof WandOfAnmy){
GLog.n(Messages.get(MagesStaff.class,"no_wands")+item.trueName()+"!");
} else if (item != null) {
if (!item.isIdentified()) {
GLog.w(Messages.get(MagesStaff.class, "id_first"));

View File

@ -34,7 +34,7 @@ public class WornShortsword extends MeleeWeapon {
image = ItemSpriteSheet.WORN_SHORTSWORD;
hitSound = Assets.Sounds.HIT_SLASH;
hitSoundPitch = 1.1f;
RCH = 3; //lots of extra reach
RCH = 2; //lots of extra reach
tier = 1;
bones = false;

View File

@ -190,6 +190,7 @@ public class ForestBossLevel extends Level {
boss.state = boss.WANDERING;
boss.pos = WIDTH*19+16;
GameScene.add( boss );
set( getBossDoor, Terrain.WALL );
GameScene.updateMap( getBossDoor );
set( HOME, Terrain.EMPTY );

View File

@ -266,7 +266,7 @@ public abstract class Level implements Bundlable {
Random.pushGenerator( Dungeon.seedCurDepth() );
if (!(Dungeon.bossLevel()) || Dungeon.isDLC(Conducts.Conduct.BOSSRUSH)) {
if (!(Dungeon.bossLevel()) || !(Dungeon.isDLC(Conducts.Conduct.BOSSRUSH))) {
addItemToSpawn(Generator.random(Generator.Category.FOOD));

View File

@ -526,7 +526,7 @@ public class InterlevelScene extends PixelScene {
Dungeon.hero.resurrect();
//todo 灯火少于30给予一个食物
if(lanterfireactive && hero.lanterfire <= 30){
if(lanterfireactive && hero.lanterfire <= 35){
level.drop(new Food(), invPos);
} else {
level.drop(new LostBackpack(), invPos);

View File

@ -797,7 +797,7 @@ public class ItemSpriteSheet {
assignItemRect(REDDRAGON, 14, 14);
assignItemRect(LANTERNA, 10, 14);
assignItemRect(LANTERNB, 10, 14);
assignItemRect(SKPOTION, 12, 14);
assignItemRect(SKPOTION, 8, 15);
assignItemRect(SKNANO, 15, 14);
assignItemRect(WATERSOUL, 14, 14);
assignItemRect(WRALIPS, 16, 16);
@ -848,6 +848,8 @@ public class ItemSpriteSheet {
public static final int CHALLANEESICON_14= CHALLANEESICONINDEX+13;
public static final int CHALLANEESICON_15= CHALLANEESICONINDEX+14;
//for smaller 8x8 icons that often accompany an item sprite
public static class Icons {

View File

@ -54,6 +54,9 @@ import java.util.ArrayList;
public class vM0_6_7_X_Changes {
public static void addAllChanges(ArrayList<ChangeInfo> changeInfos) {
add_v0_6_53_Changes(changeInfos);
add_v0_6_52_Changes(changeInfos);
add_v0_6_51_Changes(changeInfos);
add_v0_6_50_Changes(changeInfos);
add_v0_6_49_Changes(changeInfos);
add_v0_6_48_Changes(changeInfos);
@ -107,6 +110,93 @@ public class vM0_6_7_X_Changes {
add_v0_6_0_Changes(changeInfos);
}
public static void add_v0_6_53_Changes( ArrayList<ChangeInfo> changeInfos ) {
ChangeInfo changes = new ChangeInfo("v0.6.3.0-Beta5.0", true, "");
changes.hardlight(Window.TITLE_COLOR);
changeInfos.add(changes);
changes = new ChangeInfo("新内容", false, null);
changes.hardlight(Window.GREEN_COLOR);
changeInfos.add(changes);
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.CHALLANEESICON_15), ("灯火前行-V3.0-测试版"),
("灯火全面升级,追加暗影系统,灯火随着楼层深入更加危险,你能否在祝福或诅咒中活下去?")));
changes.addButton(new ChangeButton(Icons.get(Icons.AUDIO), ("MLPD-原创音乐-丛林Boss通用曲-丛林尽头"),
("感谢Prohonor的制作实装在丛林Boss区。")));
changes = new ChangeInfo("改动", false, null);
changes.hardlight(Window.CYELLOW);
changeInfos.add(changes);
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.SKPOTION), ("油瓶"),
("油瓶素材改动并且现在加灯火一次只有30%。")));
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.CHALLANEESICON_15), ("灯火前行-V3.0-测试版"),
("灯火随着楼层深入将更加危险灯油的充能仅有30%。你能否在祝福或诅咒中活下去?")));
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_06X80")));
}
public static void add_v0_6_52_Changes( ArrayList<ChangeInfo> changeInfos ) {
ChangeInfo changes = new ChangeInfo("v0.6.3.0-Beta4.9", true, "");
changes.hardlight(Window.TITLE_COLOR);
changeInfos.add(changes);
changes = new ChangeInfo("调整", false, null);
changes.hardlight(Window.GREEN_COLOR);
changeInfos.add(changes);
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.WORN_SHORTSWORD), ("战士改动"),
("战士初始武器攻击距离-1。")));
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.SPIRIT_ARROW), ("女猎改动"),
("灵能短弓伤害面板从2-4提升到2-6,成长系数不变。")));
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.WAND_FROST), ("法师改动"),
("现在移除初始冰霜法杖&焰浪法杖但初始老魔杖获得1级。")));
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.ARTIFACT_CLOAK), ("盗贼改动"),
("现在血影蝙蝠神器充能概率50%且需要英雄10级以上。")));
changes = new ChangeInfo("改动", false, null);
changes.hardlight(Window.CYELLOW);
changeInfos.add(changes);
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.LANTERNB), ("灯火系统调整"),
("在达到90灯火后立刻进行一次正向Buff的Roll判定。")));
}
public static void add_v0_6_51_Changes( ArrayList<ChangeInfo> changeInfos ) {
ChangeInfo changes = new ChangeInfo("v0.6.3.0-Beta4.8", true, "");
changes.hardlight(Window.TITLE_COLOR);
changeInfos.add(changes);
changes = new ChangeInfo("削弱", false, null);
changes.hardlight(Window.RED_COLOR);
changeInfos.add(changes);
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.SPIRIT_ARROW), ("女猎改动"),
("灵能短弓伤害面板从4-9降低到2-4,成长系数不变")));
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.WAND_FROST), ("法师改动"),
("现在移除初始冰霜法杖保留0级焰浪法杖")));
changes = new ChangeInfo("改动", false, null);
changes.hardlight(Window.CYELLOW);
changeInfos.add(changes);
changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), ("BossRush改动"),
("BossRush模式应该不会出现裂缝问题")));
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_06X79")));
}
public static void add_v0_6_50_Changes( ArrayList<ChangeInfo> changeInfos ) {
ChangeInfo changes = new ChangeInfo("v0.6.3.0-Beta4.5-7", true, "");
changes.hardlight(Window.TITLE_COLOR);

View File

@ -329,7 +329,7 @@ public class WndChallenges extends Window {
case "icedied":
return new ItemSprite(ItemSpriteSheet.CHALLANEESICON_14, new ItemSprite.Glowing(0x009999));
case "dhxd":
return new ItemSprite(ItemSpriteSheet.LANTERNB, new ItemSprite.Glowing(0x384976));
return new ItemSprite(ItemSpriteSheet.CHALLANEESICON_15, new ItemSprite.Glowing(0x384976));
case "cs":
return Icons.get(Icons.WARNING);
default:

View File

@ -152,6 +152,8 @@ public class WndInfoMob extends WndTitledMessage {
level = "领袖";
} else if (mob.properties.contains(Char.Property.MINIBOSS)){
level = "精英";
} else if (mob.properties.contains(Char.Property.ABYSS)){
level = "深渊";
} else if (mob.properties.contains(Char.Property.UNDEAD)){
level = "亡灵";
} else if (mob.properties.contains(Char.Property.DEMONIC)){

View File

@ -1,69 +0,0 @@
package com.shatteredpixel.shatteredpixeldungeon.windows;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.GamesInProgress;
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
import com.shatteredpixel.shatteredpixeldungeon.items.Ankh;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.scenes.TitleScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
import com.shatteredpixel.shatteredpixeldungeon.ui.RedButton;
import com.shatteredpixel.shatteredpixeldungeon.ui.RenderedTextBlock;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
import com.watabou.noosa.Game;
public class WndResurretDied extends Window {
private static final int WIDTH = 120;
private static final int BTN_HEIGHT = 20;
private static final float GAP = 2;
public static WndResurretDied instance;
public static Object causeOfDeath;
public WndResurretDied(final Ankh ankhs, Object causeOfDeath ) {
super();
instance = this;
WndResurretDied.causeOfDeath = causeOfDeath;
IconTitle titlebar = new IconTitle();
titlebar.icon( new ItemSprite(ItemSpriteSheet.DG12));
titlebar.label( Messages.titleCase(ankhs.name()) );
titlebar.setRect( 0, 0, WIDTH, 0 );
add( titlebar );
RenderedTextBlock message = PixelScene.renderTextBlock( Messages.get(this, "message"), 6 );
message.maxWidth(WIDTH);
message.setPos(0, titlebar.bottom() + GAP);
add( message );
RedButton btnYes = new RedButton( Messages.get(this, "yes") ) {
@Override
protected void onClick() {
hide();
Statistics.ankhsUsed++;
Dungeon.deleteGame( GamesInProgress.curSlot, true );
Game.switchScene( TitleScene.class );
}
};
btnYes.setRect( 0, message.top() + message.height() + GAP, WIDTH, BTN_HEIGHT );
add( btnYes );
resize( WIDTH, (int)btnYes.bottom() );
}
@Override
public void destroy() {
super.destroy();
instance = null;
}
@Override
public void onBackPressed() {
}
}

View File

@ -24,6 +24,8 @@ package com.shatteredpixel.shatteredpixeldungeon.windows;
import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.RollLevel;
import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero;
import static com.shatteredpixel.shatteredpixeldungeon.Statistics.lanterfireactive;
import static com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero.badLanterFire;
import static com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero.goodLanterFire;
import com.shatteredpixel.shatteredpixeldungeon.Chrome;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
@ -34,13 +36,6 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ClearBleesdGoodBuff
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ClearBleesdGoodBuff.BlessMixShiled;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ClearBleesdGoodBuff.BlessMobDied;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ClearBleesdGoodBuff.BlessNoMoney;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicGirlDebuff.MagicGirlSayCursed;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicGirlDebuff.MagicGirlSayKill;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicGirlDebuff.MagicGirlSayMoneyMore;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicGirlDebuff.MagicGirlSayNoSTR;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicGirlDebuff.MagicGirlSaySlowy;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicGirlDebuff.MagicGirlSaySoftDied;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicGirlDebuff.MagicGirlSayTimeLast;
import com.shatteredpixel.shatteredpixeldungeon.effects.SpellSprite;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfAnmy;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
@ -238,263 +233,34 @@ public class WndStory extends Window {
GLog.b(Messages.get(WndStory.class,"start"));
}
if (RollLevel()) {
//TODO 常规刷新
if (hero.lanterfire == 100){
switch (Random.Int(6)){
case 0: default:
Buff.affect(hero, BlessNoMoney.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, BlessGoodSTR.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, BlessMobDied.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, BlessMixShiled.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, BlessImmune.class).set( (100), 1 );
break;
case 5:
new WandOfAnmy().quantity(1).identify().collect();
Buff.affect(hero, BlessAnmy.class).set( (100), 1 );
break;
}
GLog.p(Messages.get(WndStory.class,"good"));
goodLanterFire();
} else if (hero.lanterfire <= 99 && hero.lanterfire >= 90) {
switch (Random.Int(6)){
case 0: default:
Buff.affect(hero, BlessNoMoney.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, BlessGoodSTR.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, BlessMobDied.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, BlessMixShiled.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, BlessImmune.class).set( (100), 1 );
break;
case 5:
new WandOfAnmy().quantity(1).identify().collect();
Buff.affect(hero, BlessAnmy.class).set( (100), 1 );
break;
}
GLog.p(Messages.get(WndStory.class,"good"));
goodLanterFire();
} else if (hero.lanterfire <= 89 && hero.lanterfire >= 80 && Random.Float() <= 0.05f ) {
switch (Random.Int(5)){
case 0: default:
Buff.affect(hero, MagicGirlSayMoneyMore.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, MagicGirlSaySoftDied.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, MagicGirlSayCursed.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, MagicGirlSaySlowy.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, MagicGirlSayKill.class).set( (100), 1 );
break;
case 5:
Buff.affect(hero, MagicGirlSayNoSTR.class).set( (100), 1 );
break;
}
GLog.n(Messages.get(WndStory.class,"bad"));
badLanterFire();
} else if (hero.lanterfire <= 89 && hero.lanterfire >= 80 && Random.Float() <= 0.85f ) {
switch (Random.Int(6)){
case 0: default:
Buff.affect(hero, BlessNoMoney.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, BlessGoodSTR.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, BlessMobDied.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, BlessMixShiled.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, BlessImmune.class).set( (100), 1 );
break;
case 5:
new WandOfAnmy().quantity(1).identify().collect();
Buff.affect(hero, BlessAnmy.class).set( (100), 1 );
break;
}
GLog.p(Messages.get(WndStory.class,"good"));
goodLanterFire();
} else if (hero.lanterfire <= 89 && hero.lanterfire >= 80) {
GLog.b(Messages.get(WndStory.class,"normoal"));
} else if (hero.lanterfire <= 79 && hero.lanterfire >= 60 && Random.Float() <= 0.45f ) {
switch (Random.Int(5)){
case 0: default:
Buff.affect(hero, MagicGirlSayMoneyMore.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, MagicGirlSaySoftDied.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, MagicGirlSayCursed.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, MagicGirlSaySlowy.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, MagicGirlSayKill.class).set( (100), 1 );
break;
case 5:
Buff.affect(hero, MagicGirlSayNoSTR.class).set( (100), 1 );
break;
}
GLog.n(Messages.get(WndStory.class,"bad"));
} else if (hero.lanterfire <= 79 && hero.lanterfire >= 60 && Random.Float() <= 0.50f ) {
switch (Random.Int(6)){
case 0: default:
Buff.affect(hero, BlessNoMoney.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, BlessGoodSTR.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, BlessMobDied.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, BlessMixShiled.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, BlessImmune.class).set( (100), 1 );
break;
case 5:
new WandOfAnmy().quantity(1).identify().collect();
Buff.affect(hero, BlessAnmy.class).set( (100), 1 );
break;
}
GLog.p(Messages.get(WndStory.class,"good"));
} else if (hero.lanterfire <= 79 && hero.lanterfire >= 60 && Random.Float() <= 0.25f ) {
badLanterFire();
} else if (hero.lanterfire <= 79 && hero.lanterfire >= 60 && Random.Float() <= 0.70f ) {
goodLanterFire();
} else if (hero.lanterfire <= 79 && hero.lanterfire >= 60) {
GLog.b(Messages.get(WndStory.class,"normoal"));
} else if (hero.lanterfire <= 59 && hero.lanterfire >= 29 && Random.Float() <= 0.20f ) {
switch (Random.Int(6)){
case 0: default:
Buff.affect(hero, MagicGirlSayMoneyMore.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, MagicGirlSaySoftDied.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, MagicGirlSayCursed.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, MagicGirlSaySlowy.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, MagicGirlSayKill.class).set( (100), 1 );
break;
case 5:
Buff.affect(hero, MagicGirlSayNoSTR.class).set( (100), 1 );
break;
case 6:
Buff.affect(hero, MagicGirlSayTimeLast.class).set( (100), 1 );
break;
}
GLog.n(Messages.get(WndStory.class,"bad"));
} else if (hero.lanterfire <= 59 && hero.lanterfire >= 35 && Random.Float() <= 0.60f ) {
switch (Random.Int(4)){
case 0: default:
Buff.affect(hero, BlessNoMoney.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, BlessGoodSTR.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, BlessMobDied.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, BlessMixShiled.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, BlessImmune.class).set( (100), 1 );
break;
}
GLog.p(Messages.get(WndStory.class,"good"));
} else if (hero.lanterfire <= 59 && hero.lanterfire >= 35 && Random.Float() <= 0.40f ) {
badLanterFire();
} else if (hero.lanterfire <= 59 && hero.lanterfire >= 35 && Random.Float() <= 0.20f ) {
goodLanterFire();
} else if (hero.lanterfire <= 59 && hero.lanterfire >= 35) {
GLog.b(Messages.get(WndStory.class,"normoal"));
} else if (hero.lanterfire <= 30 && hero.lanterfire >= 1 && Random.Float() <= 0.40f ) {
switch (Random.Int(6)){
case 0: default:
Buff.affect(hero, MagicGirlSayMoneyMore.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, MagicGirlSaySoftDied.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, MagicGirlSayCursed.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, MagicGirlSaySlowy.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, MagicGirlSayKill.class).set( (100), 1 );
break;
case 5:
Buff.affect(hero, MagicGirlSayNoSTR.class).set( (100), 1 );
break;
case 6:
Buff.affect(hero, MagicGirlSayTimeLast.class).set( (100), 1 );
break;
}
GLog.n(Messages.get(WndStory.class,"bad"));
} else if (hero.lanterfire <= 34 && hero.lanterfire >= 1 && Random.Float() <= 0.35f ) {
switch (Random.Int(4)){
case 0: default:
Buff.affect(hero, BlessNoMoney.class).set( (100), 1 );
break;
case 1:
Buff.affect(hero, BlessGoodSTR.class).set( (100), 1 );
break;
case 2:
Buff.affect(hero, BlessMobDied.class).set( (100), 1 );
break;
case 3:
Buff.affect(hero, BlessMixShiled.class).set( (100), 1 );
break;
case 4:
Buff.affect(hero, BlessImmune.class).set( (100), 1 );
break;
}
GLog.p(Messages.get(WndStory.class,"good"));
} else if (hero.lanterfire <= 0 && Random.Float() <= 0.48f ) {
switch (Random.Int(6)) {
case 0:
default:
Buff.affect(hero, MagicGirlSayMoneyMore.class).set((100), 1);
break;
case 1:
Buff.affect(hero, MagicGirlSaySoftDied.class).set((100), 1);
break;
case 2:
Buff.affect(hero, MagicGirlSayCursed.class).set((100), 1);
break;
case 3:
Buff.affect(hero, MagicGirlSaySlowy.class).set((100), 1);
break;
case 4:
Buff.affect(hero, MagicGirlSayKill.class).set((100), 1);
break;
case 5:
Buff.affect(hero, MagicGirlSayNoSTR.class).set((100), 1);
break;
case 6:
Buff.affect(hero, MagicGirlSayTimeLast.class).set( (100), 1 );
break;
}
GLog.n(Messages.get(WndStory.class, "bad"));
} else if (hero.lanterfire <= 34 && hero.lanterfire >= 1 && Random.Float() <= 0.40f ) {
badLanterFire();
} else if (hero.lanterfire <= 34 && hero.lanterfire >= 1) {
GLog.b(Messages.get(WndStory.class,"normoal"));
} else {
badLanterFire();
}
}
}