Update Beta-P3-PreTest1

This commit is contained in:
LingASDJ 2023-02-09 10:57:52 +08:00
parent e57e8e8cf0
commit 0c99e4a292
27 changed files with 986 additions and 74 deletions

View File

@ -5,8 +5,8 @@ buildscript {
}
dependencies {
classpath 'com.android.tools.build:gradle:7.0.4'
classpath 'com.google.gms:google-services:4.3.13'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.1'
classpath 'com.google.gms:google-services:4.3.15'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2'
}
}
@ -17,7 +17,7 @@ allprojects {
appPackageName = 'com.ansdomagiclingpixeldungeon.ling'
appVersionCode =700925
appVersionName = '0.6.0.0-Beta21-p2.940-INDEV'
appVersionName = '0.6.0.0-Beta21-p3-PreTest1'
appJavaCompatibility = JavaVersion.VERSION_1_8

Binary file not shown.

After

Width:  |  Height:  |  Size: 484 B

View File

@ -1,3 +1,20 @@
#####MLPD-P3文本
actors.mobs.bosses.crivusfruits.name=克里弗斯之果
actors.mobs.bosses.crivusfruits.desc=这颗鲜红的果实将周围一切生物都化作自身的养分。身旁的触手会将不慎走进的小动物们绞杀,腐化成缠绕在四周的瘴气。但当它们感受到你手上拿着的提灯时,却表现出畏惧火焰的样子。\n\n极少有冒险者能对这株植物作出描述在得到的只言片语中你唯一能确定的就是“它是森林至暗的中心”。
actors.mobs.bosses.crivusfruits.notice=(触手正在不断蠕动,试图靠近你)
actors.mobs.bosses.crivusfruits.anargy=(触手的蠕动变为猛烈抽搐,拍打中释放出更多有毒气体)
actors.mobs.bosses.crivusfruits.died!!!=(所有藤蔓都停止了抽动,果实的颜色似乎更加鲜红了)
actors.mobs.bosses.crivusfruits.!!!=克里弗斯之果正在汲取魔力释放范围更大的红色毒雾!
actors.mobs.bosses.crivusfruits.dead=养分……汲取……失败……,果实破裂声中貌似夹杂着一丝悲鸣。
actors.mobs.bosses.crivusfruits$diedblobs.desc=一团红色的毒雾从克里弗斯之果周围散发而出,你的潜意识告诉你这种东西会对你造成极大的伤害。
actors.mobs.bosses.crivusfruits$diedblobs.csed=果实爆开后迸射出一些气味清新的红色气体,用来做空气清新剂似乎挺不错的。
actors.mobs.bosses.crivusfruitslasher.name=魔化藤
actors.mobs.bosses.crivusfruitslasher.desc=藤蔓没有智慧,它们的存在价值就是保护果实。不论是不小心靠近果实的“小动物”,还是企图清理枯藤更进一步的冒险者,都被这些藤蔓绞死成孕育果实的肥料了。
###SPD1.3
text.herostat.item_wnd_depth = 层数:
text.herostat.item_wnd_mimic = 宝箱怪:

View File

@ -1,3 +1,8 @@
####MLPD-P3文本
items.weapon.melee.lifetreesword.name=“倒悬的生命树”
items.weapon.melee.lifetreesword.desc=克里弗斯之果破碎时,四周的藤蔓缠结在暴露出的种子上,形成剑的形状。剑身触碰到生物时会汲取他们的生命力提供给种子,期待着它再一结出猩红的果实。\n\n特别说明克里弗斯之果Boss专武每击杀_100只怪物_掉落一颗克里弗斯幼果。
###MLPD
items.lightblack.oilpotion.name= 油瓶
items.lightblack.oilpotion.desc=里面蕴含了提灯需要的物质,在提灯熄灭前,它总能重新装填并让提灯重新发光。
@ -568,9 +573,12 @@ items.artifacts.driedrose$ghosthero.dialogue_halls_4=这里的怪物太诡异了
items.artifacts.driedrose$ghosthero.dialogue_halls_5=感觉到了吗?好像有什么东西在盯着我们。
items.artifacts.driedrose$ghosthero.dialogue_halls_6=还好有火把,这里太暗了!
items.artifacts.driedrose$ghosthero.seen_goo_1=当心粘咕!
items.artifacts.driedrose$ghosthero.seen_goo_2=有太多朋友死在这个家伙手上了,此仇必报!
items.artifacts.driedrose$ghosthero.seen_goo_3=不能让这个魔障活着离开!
//
items.artifacts.driedrose$ghosthero.seen_crivuefruit_1=看来它就是森林过于茂盛的罪魁祸首……
items.artifacts.driedrose$ghosthero.seen_crivuefruit_2=我们必须让这个魔物死去。
items.artifacts.driedrose$ghosthero.seen_crivuefruit_3=你动不动就吃苹果的日子结束了!克里弗斯之果!
items.artifacts.driedrose$ghosthero.seen_tengu_1=唯一剩下的囚犯是个危险的暗杀者。真应景……
items.artifacts.driedrose$ghosthero.seen_tengu_2=我们被他困住了!
items.artifacts.driedrose$ghosthero.seen_tengu_3=有关那个面具的鬼故事我听过不少……

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 71 KiB

View File

@ -287,11 +287,16 @@ public class Assets {
public static final String KEEPERKINGBOT = "sprites/npc/autoshop.png";
//BOSS
public static final String DIMK = "sprites/boss/DimandKing.png";
public static final String DIED = "sprites/items/died.png";
public static final String CRID = "sprites/boss/ColdGuard.png";
public static final String FRAS = "sprites/boss/FireMagicGirl.png";
public static final String CFAS = "sprites/boss/FruitsCrivus.png";
public static final String NECROREDEX = "sprites/boss/rednecromancer_ex.png";
public static final String SLIMEPRINCESS = "sprites/boss/SlimePrincess.png";
public static final String ICEALICE = "sprites/boss/IceFireCrstal.png";

View File

@ -56,6 +56,7 @@ import com.shatteredpixel.shatteredpixeldungeon.journal.Notes;
import com.shatteredpixel.shatteredpixeldungeon.levels.CavesLevel;
import com.shatteredpixel.shatteredpixeldungeon.levels.CityLevel;
import com.shatteredpixel.shatteredpixeldungeon.levels.DeadEndLevel;
import com.shatteredpixel.shatteredpixeldungeon.levels.ForestBossLevel;
import com.shatteredpixel.shatteredpixeldungeon.levels.HallsLevel;
import com.shatteredpixel.shatteredpixeldungeon.levels.LastLevel;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
@ -65,8 +66,6 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.NewCityBossLevel;
import com.shatteredpixel.shatteredpixeldungeon.levels.NewHallsBossLevel;
import com.shatteredpixel.shatteredpixeldungeon.levels.PrisonBossLevel;
import com.shatteredpixel.shatteredpixeldungeon.levels.PrisonLevel;
import com.shatteredpixel.shatteredpixeldungeon.levels.SLMKingLevel;
import com.shatteredpixel.shatteredpixeldungeon.levels.SewerBossLevel;
import com.shatteredpixel.shatteredpixeldungeon.levels.SewerLevel;
import com.shatteredpixel.shatteredpixeldungeon.levels.ShopBossLevel;
import com.shatteredpixel.shatteredpixeldungeon.levels.ZeroLevel;
@ -390,8 +389,7 @@ public class Dungeon {
level = new SewerLevel();
break;
case 5:
if((Statistics.boss_enhance & 0x1) != 0) level = new SLMKingLevel();
else level = new SewerBossLevel();
level = new ForestBossLevel();
break;
case 6:
case 7:

View File

@ -36,6 +36,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.StormCloud;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas;
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Web;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Tengu;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.bosses.CrivusFruits;
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.MagicalFireRoom;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
@ -80,7 +81,7 @@ public class BlobImmunity extends FlavourBuff {
immunities.add( StormCloud.class );
immunities.add( ToxicGas.class );
immunities.add( Web.class );
immunities.add( CrivusFruits.DiedBlobs.class );
immunities.add(Tengu.FireAbility.FireBlob.class);
}

View File

@ -111,14 +111,13 @@ import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfMagicMissile;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfRegrowth;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfScale;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.SpiritBow;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.BlackDog;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Dagger;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.EndingBlade;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.FireFishSword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Gauntlet;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Gloves;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.GreenSword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.IceFishSword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.LifeTreeSword;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.RedBloodMoon;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.SkyShield;
@ -215,7 +214,8 @@ public enum HeroClass {
new MasterThievesArmband().quantity(1).identify().collect();
new Dart().quantity(1).identify().collect();
new GreenSword().quantity(1).identify().collect();
new LifeTreeSword().quantity(1).identify().collect();
new SkyShield().quantity(1).identify().collect();
new SandalsOfNature().quantity(1).identify().collect();
new GoldBAo().quantity(9999).identify().collect();
@ -224,7 +224,6 @@ public enum HeroClass {
new PotionOfLightningShiledX().quantity(1).identify().collect();
new LevelTeleporter().quantity(1).identify().collect();
new MobPlacer().quantity(1).identify().collect();
new BlackDog().quantity(1).identify().collect();
new RedBloodMoon().quantity(1).identify().collect();
new KingBag().quantity(1).identify().collect();
new PotionOfLiquidFlameX().quantity(100).identify().collect();

View File

@ -24,6 +24,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs;
import static com.shatteredpixel.shatteredpixeldungeon.Challenges.RLPT;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.bosses.DimandKing;
import com.watabou.utils.Random;
import java.util.ArrayList;
@ -48,7 +49,7 @@ public class Bestiary {
return new ArrayList<>(Arrays.asList(
Rat.class, Rat.class,
Rat.class, OGPDZSLS.class, Snake.class,
Snake.class,Snake.class,Snake.class));
Snake.class,Snake.class,Snake.class, DimandKing.class));
case 2:
return new ArrayList<>(Arrays.asList(Rat.class,
Rat.class, Rat.class, Gnoll.class, Gnoll.class,

View File

@ -0,0 +1,225 @@
package com.shatteredpixel.shatteredpixeldungeon.actors.mobs.bosses;
import static com.shatteredpixel.shatteredpixeldungeon.levels.ForestBossLevel.ForestBossLasherTWOPos;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
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.Amok;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Dread;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Paralysis;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Sleep;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Vertigo;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
import com.shatteredpixel.shatteredpixeldungeon.effects.BlobEmitter;
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose;
import com.shatteredpixel.shatteredpixeldungeon.items.keys.CrystalKey;
import com.shatteredpixel.shatteredpixeldungeon.items.keys.IronKey;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.CrivusFruitsSprite;
import com.shatteredpixel.shatteredpixeldungeon.ui.BossHealthBar;
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
import com.watabou.noosa.audio.Sample;
import com.watabou.utils.Bundle;
//克里弗斯之果 本体
public class CrivusFruits extends Mob {
//基本属性
{
spriteClass = CrivusFruitsSprite.class;
HP = HT = 120;
defenseSkill = 4;
EXP = 20;
state = PASSIVE;
properties.add(Property.IMMOVABLE);
properties.add(Property.MINIBOSS);
}
//无敌也要扣减
public static class DiedDamager extends Buff {
public int icon() {
return BuffIndicator.COMBO;
}
@Override
public boolean act() {
if (target.alignment != Alignment.ENEMY){
detach();
}
spend( TICK );
return true;
}
@Override
public void detach() {
super.detach();
for (Mob m : Dungeon.level.mobs){
if (m instanceof CrivusFruits){
m.damage((int)7.5, this);
}
}
}
}
@Override
public boolean isInvulnerable(Class effect) {
return this.HP > 36 && effect != DiedDamager.class;
}
//对话框架
@Override
public void notice() {
super.notice();
if (!BossHealthBar.isAssigned()) {
BossHealthBar.assignBoss(this);
GLog.n(Messages.get(this, "notice"));
this.sprite.showStatus(CharSprite.NEGATIVE, "!!!");
for (Char ch : Actor.chars()){
if (ch instanceof DriedRose.GhostHero){
((DriedRose.GhostHero) ch).sayBoss();
}
}
}
}
public static boolean GoTwoBoss = false;
public static final String gotwoboss = "gotwoboss";
@Override
public void storeInBundle(Bundle bundle) {
super.storeInBundle(bundle);
bundle.put(gotwoboss, GoTwoBoss);
}
@Override
public void restoreFromBundle(Bundle bundle) {
super.restoreFromBundle(bundle);
GoTwoBoss = bundle.getBoolean(gotwoboss);
}
@Override
protected boolean act() {
GameScene.add(Blob.seed(pos, HP<36 ? 120 : 50, DiedBlobs.class));
//判定是否第一次加进入游戏
if( Dungeon.hero.buff(LockedFloor.class) != null){
notice();
}
state = PASSIVE;
//二阶段
if( HP<65 && !GoTwoBoss){
HP=HT=64;
GLog.n(Messages.get(this,"anargy"));
GoTwoBoss = true;
GameScene.flash(0x808c8c8c);
for (int i : ForestBossLasherTWOPos) {
CrivusFruitsLasher csp = new CrivusFruitsLasher();
csp.pos = i;
GameScene.add(csp);
}
Sample.INSTANCE.play( Assets.Sounds.CHALLENGE );
this.sprite.showStatus(CharSprite.NEGATIVE, "!!!");
}
//三阶段
if(HP==36){
GameScene.flash(0x80009c9c);
HP=HT=35;
GLog.n(Messages.get(this,"died!!!"));
GLog.w(Messages.get(this,"!!!"));
Sample.INSTANCE.play( Assets.Sounds.CHALLENGE );
this.sprite.showStatus(CharSprite.NEGATIVE, "!!!");
}
return super.act();
}
//红雾弥漫
public static class DiedBlobs extends Blob implements Hero.Doom {
@Override
public String tileDesc() {
return Messages.get(this, Dungeon.hero.buff(LockedFloor.class) != null? "desc" : "csed" );
}
@Override
protected void evolve() {
super.evolve();
int damage = 4;
Char ch;
int cell;
for (int i = area.left; i < area.right; i++){
for (int j = area.top; j < area.bottom; j++){
cell = i + j*Dungeon.level.width();
if (cur[cell] > 0 && (ch = Actor.findChar( cell )) != null) {
if (!ch.isImmune(this.getClass())) {
if( Dungeon.hero.buff(LockedFloor.class) != null) {
//不为空为4 否则就是0
ch.damage(Dungeon.hero.buff(LockedFloor.class) != null ? damage : 0, this);
}
}
}
}
}
}
@Override
public void use( BlobEmitter emitter ) {
super.use( emitter );
emitter.pour( Speck.factory( Speck.DIED ), 0.4f );
}
@Override
public void onDeath() {
//
}
}
@Override
public void beckon(int cell) {
//do nothing
}
@Override
public void die(Object cause) {
super.die(cause);
Dungeon.level.unseal();
GameScene.bossSlain();
GLog.n(Messages.get(this,"dead"));
Dungeon.level.drop( new CrystalKey( Dungeon.depth ), pos ).sprite.drop();
Dungeon.level.drop( new IronKey( Dungeon.depth ), pos-1 ).sprite.drop();
Dungeon.level.drop( new IronKey( Dungeon.depth ), pos+1 ).sprite.drop();
}
{
immunities.add( Paralysis.class );
immunities.add( Amok.class );
immunities.add( Sleep.class );
immunities.add( ToxicGas.class );
immunities.add( DiedBlobs.class );
immunities.add( Terror.class );
immunities.add( Dread.class );
immunities.add( Vertigo.class );
}
}

View File

@ -0,0 +1,204 @@
package com.shatteredpixel.shatteredpixeldungeon.actors.mobs.bosses;
import static com.shatteredpixel.shatteredpixeldungeon.actors.mobs.bosses.CrivusFruits.GoTwoBoss;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
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.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Burning;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Cripple;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.HalomethaneBurning;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportation;
import com.shatteredpixel.shatteredpixeldungeon.levels.ForestBossLevel;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
import com.shatteredpixel.shatteredpixeldungeon.sprites.RotLasherSprite;
import com.watabou.utils.Random;
public class CrivusFruitsLasher extends Mob {
{
spriteClass = RotLasherSprite.class;
HP = HT = GoTwoBoss ? 40 : 20;
defenseSkill = 0;
EXP = 1;
loot = Generator.Category.SEED;
lootChance = 0.35f;
state = WANDERING = new Waiting();
properties.add(Property.IMMOVABLE);
properties.add(Property.MINIBOSS);
}
@Override
protected boolean act() {
GameScene.add(Blob.seed(pos, GoTwoBoss ? 60 : 35, ToxicGas.class));
if(Dungeon.hero.buff(CrivusFruits.DiedDamager.class) == null){
Buff.affect(this,CrivusFruits.DiedDamager.class);
}
//二阶段开始瞬移地狱绘图
if(GoTwoBoss){
if(Random.Float() < 0.4f && (enemy == null || !Dungeon.level.adjacent(pos, enemy.pos))){
switch (Random.Int(14)){
case 0: default:
if(Dungeon.level.avoid[pos] || !Dungeon.level.passable[pos]
|| Actor.findChar(pos) != null){
ScrollOfTeleportation.appear(this, ForestBossLevel.WIDTH * 17 + 11);
}
break;
case 1:
if(Dungeon.level.avoid[pos] || !Dungeon.level.passable[pos]
|| Actor.findChar(pos) != null) {
ScrollOfTeleportation.appear(this, ForestBossLevel.WIDTH * 15 + 13);
}
break;
case 2:
if(Dungeon.level.avoid[pos] || !Dungeon.level.passable[pos]
|| Actor.findChar(pos) != null) {
ScrollOfTeleportation.appear(this, ForestBossLevel.WIDTH * 23 + 13);
}
break;
case 3:
if(Dungeon.level.avoid[pos] || !Dungeon.level.passable[pos]
|| Actor.findChar(pos) != null) {
ScrollOfTeleportation.appear(this, ForestBossLevel.WIDTH * 21 + 11);
}
break;
case 4:
if(Dungeon.level.avoid[pos] || !Dungeon.level.passable[pos]
|| Actor.findChar(pos) != null) {
ScrollOfTeleportation.appear(this, ForestBossLevel.WIDTH * 15 + 19);
}
break;
case 5:
if(Dungeon.level.avoid[pos] || !Dungeon.level.passable[pos]
|| Actor.findChar(pos) != null) {
ScrollOfTeleportation.appear(this, ForestBossLevel.WIDTH * 17 + 21);
}
break;
case 6:
if(Dungeon.level.avoid[pos] || !Dungeon.level.passable[pos]
|| Actor.findChar(pos) != null) {
ScrollOfTeleportation.appear(this, ForestBossLevel.WIDTH * 21 + 21);
}
break;
case 7:
if(Dungeon.level.avoid[pos] || !Dungeon.level.passable[pos]
|| Actor.findChar(pos) != null) {
ScrollOfTeleportation.appear(this, ForestBossLevel.WIDTH * 23 + 19);
}
break;
case 8:
if(Dungeon.level.avoid[pos] || !Dungeon.level.passable[pos]
|| Actor.findChar(pos) != null) {
ScrollOfTeleportation.appear(this, ForestBossLevel.WIDTH * 24 + 7);
}
break;
case 9:
if(Dungeon.level.avoid[pos] || !Dungeon.level.passable[pos]
|| Actor.findChar(pos) != null) {
ScrollOfTeleportation.appear(this, ForestBossLevel.WIDTH * 23 + 3);
}
break;
case 10:
if(Dungeon.level.avoid[pos] || !Dungeon.level.passable[pos]
|| Actor.findChar(pos) != null) {
ScrollOfTeleportation.appear(this, ForestBossLevel.WIDTH * 27 + 4);
}
break;
case 11:
if(Dungeon.level.avoid[pos] || !Dungeon.level.passable[pos]
|| Actor.findChar(pos) != null) {
ScrollOfTeleportation.appear(this, ForestBossLevel.WIDTH * 24 + 27);
}
break;
case 12:
if(Dungeon.level.avoid[pos] || !Dungeon.level.passable[pos]
|| Actor.findChar(pos) != null) {
ScrollOfTeleportation.appear(this, ForestBossLevel.WIDTH * 29 + 27);
}
break;
case 13: case 14:
if(Dungeon.level.avoid[pos] || !Dungeon.level.passable[pos]
|| Actor.findChar(pos) != null) {
ScrollOfTeleportation.appear(this, ForestBossLevel.WIDTH * 25 + 23);
}
break;
}
spend( TICK*6 );
}
}
if(this.HT!=HP) {
HP = Math.min(HT, HP + 1);
this.sprite.showStatus(CharSprite.POSITIVE, "+2");
}
return super.act();
}
@Override
public void damage(int dmg, Object src) {
if (src instanceof Burning && !GoTwoBoss) {
Buff.affect( this, HalomethaneBurning.class ).reignite( this, 100f );
} else {
super.damage(dmg, src);
}
}
@Override
public int attackProc(Char enemy, int damage) {
damage = super.attackProc( enemy, damage );
Buff.affect( enemy, Cripple.class, 2f );
return super.attackProc(enemy, damage);
}
@Override
public boolean reset() {
return true;
}
@Override
protected boolean getCloser(int target) {
return true;
}
@Override
protected boolean getFurther(int target) {
return true;
}
@Override
public int damageRoll() {
return Random.NormalIntRange(8, 15);
}
@Override
public int attackSkill( Char target ) {
return 15;
}
@Override
public int drRoll() {
return Random.NormalIntRange(0, 8);
}
{
immunities.add( ToxicGas.class );
}
private class Waiting extends Mob.Wandering{}
}

View File

@ -0,0 +1,77 @@
package com.shatteredpixel.shatteredpixeldungeon.actors.mobs.bosses;
import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.hero;
import static com.shatteredpixel.shatteredpixeldungeon.Statistics.lanterfireactive;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.Ratmogrify;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
import com.shatteredpixel.shatteredpixeldungeon.sprites.RatSprite;
import com.watabou.utils.Bundle;
import com.watabou.utils.Random;
import com.shatteredpixel.shatteredpixeldungeon.sprites.DimandKingSprite;
public class DimandKing extends Mob {
{
spriteClass = DimandKingSprite.class;
HP = HT = 8;
defenseSkill = 2;
maxLvl = 5;
}
@Override
public int attackProc( Char enemy, int damage ) {
damage = super.attackProc( enemy, damage );
if (lanterfireactive) {
if (Random.Float()<=0.05f && enemy instanceof Hero && hero.lanterfire < 85) {
((Hero) enemy).damageLantern(1);
hero.sprite.showStatus( 0x808080, "1");
}
} else {
super.attackProc( enemy, damage );
}
return damage;
}
@Override
protected boolean act() {
if (Dungeon.level.heroFOV[pos] && hero.armorAbility instanceof Ratmogrify){
alignment = Alignment.ALLY;
if (state == SLEEPING) state = WANDERING;
}
return super.act();
}
@Override
public int damageRoll() {
return Random.NormalIntRange( 1, 4 );
}
@Override
public int attackSkill( Char target ) {
return 8;
}
@Override
public int drRoll() {
return Random.NormalIntRange(0, 1);
}
private static final String RAT_ALLY = "rat_ally";
@Override
public void storeInBundle(Bundle bundle) {
super.storeInBundle(bundle);
if (alignment == Alignment.ALLY) bundle.put(RAT_ALLY, true);
}
@Override
public void restoreFromBundle(Bundle bundle) {
super.restoreFromBundle(bundle);
if (bundle.contains(RAT_ALLY)) alignment = Alignment.ALLY;
}
}

View File

@ -114,7 +114,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfTransfusion;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfWarding;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.AssassinsBlade;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.BattleAxe;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.BlackDog;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Crossbow;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Dagger;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Dairikyan;
@ -350,10 +349,9 @@ public class Generator {
WornShortsword.class,
Gloves.class,
Dagger.class,
MagesStaff.class,
BlackDog.class,
MagesStaff.class
};
WEP_T1.probs = new float[]{ 1, 1, 1, 0, 0 };
WEP_T1.probs = new float[]{ 1, 1, 1, 0, };
WEP_T2.classes = new Class<?>[]{
Shortsword.class,

View File

@ -778,7 +778,7 @@ public class DriedRose extends Artifact {
switch(depth){
case 0:
yell( Messages.get( this, "seen_goo_" + Random.IntRange(1, 3) ));
yell( Messages.get( this, "seen_crivuefruit_" + Random.IntRange(1, 3) ));
break;
case 1:
yell( Messages.get( this, "seen_tengu_" + Random.IntRange(1, 3) ));

View File

@ -30,6 +30,8 @@ public class IceFishSword extends Weapon {
tier = 6;
ACC = 2.90f; //20% boost to accuracy
DLY = 1.5f; //2x speed
cursed = true;
enchant(Enchantment.randomCurse());
}
@Override
@ -154,6 +156,11 @@ public class IceFishSword extends Weapon {
@Override
public int STRReq(int lvl) {
return Dungeon.depth/10+20;
return Dungeon.depth/10+16;
}
@Override
public int value() {
return quantity * 500;
}
}

View File

@ -23,21 +23,23 @@ package com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee;
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
public class BlackDog extends MeleeWeapon {
public class LifeTreeSword extends MeleeWeapon {
{
image = ItemSpriteSheet.BlackDog;
image = ItemSpriteSheet.LifeTreeSword;
tier = 1;
DLY = 0.6f; //2x speed
tier = 3;
bones = false;
}
@Override
public int max(int lvl) {
return (int)(0.1f*(tier+1)) + //6 base, down from 10
lvl*tier; //+1 per level, down from +2
return 12+lvl;
}
public int min(int lvl) {
return 9+lvl*2;
}
}

View File

@ -108,7 +108,6 @@ import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfTransfusion;
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfWarding;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.AssassinsBlade;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.BattleAxe;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.BlackDog;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Crossbow;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Dagger;
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Dairikyan;
@ -206,7 +205,7 @@ public enum Catalog {
WEAPONS.seen.put( LockSword.class, false);
WEAPONS.seen.put( SkyShield.class, false);
WEAPONS.seen.put( Dairikyan.class, false);
WEAPONS.seen.put( BlackDog.class, false);
//WEAPONS.seen.put( BlackDog.class, false);
WEAPONS.seen.put( IceFishSword.class, false);
WEAPONS.seen.put( FireFishSword.class, false);

View File

@ -0,0 +1,267 @@
package com.shatteredpixel.shatteredpixeldungeon.levels;
import static com.shatteredpixel.shatteredpixeldungeon.Dungeon.level;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.bosses.CrivusFruits;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.bosses.CrivusFruitsLasher;
import com.shatteredpixel.shatteredpixeldungeon.effects.Ripple;
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfPurity;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonTilemap;
import com.watabou.noosa.Game;
import com.watabou.noosa.Group;
import com.watabou.noosa.particles.Emitter;
import com.watabou.noosa.particles.PixelParticle;
import com.watabou.utils.ColorMath;
import com.watabou.utils.PointF;
import com.watabou.utils.Random;
//克里弗斯之果 5层
public class ForestBossLevel extends Level {
@Override
protected void createMobs() {
}
@Override
protected void createItems() {
drop( new PotionOfPurity(), WIDTH*15+19 );
drop( new PotionOfPurity(), WIDTH*23+19 );
drop( new PotionOfPurity(), WIDTH*15+13 );
}
public static final int WIDTH = 32;
private static final int HEIGHT = 32;
private static final short W = Terrain.WALL;
private static final short L = Terrain.CHASM;
private static final short M = Terrain.EMPTY;
private static final short H = Terrain.EMPTY_SP;
private static final short T = Terrain.STATUE;
private static final short X = Terrain.DOOR;
private static final short D = Terrain.PEDESTAL;
private static final short B = Terrain.WALL_DECO;
private static final short C = Terrain.WATER;
private static final short S = Terrain.LOCKED_DOOR;
private static final short Q = Terrain.EXIT;
private static final short A = Terrain.CRYSTAL_DOOR;
private static final short I = Terrain.ENTRANCE;
private static final int getBossDoor = WIDTH*9+16;
private static final int LDBossDoor = WIDTH*10+16;
private static final int HOME = WIDTH + 16;
//首先诞生的8个触手 一阶段
public static int[] ForestBossLasherPos = new int[]{
WIDTH*17+11,
WIDTH*15+13,
WIDTH*23+13,
WIDTH*21+11,
WIDTH*15+19,
WIDTH*17+21,
WIDTH*21+21,
WIDTH*23+19,
};
//2阶段4个主触手
public static int[] ForestBossLasherTWOPos = new int[]{
WIDTH*15+13,
WIDTH*15+19,
WIDTH*23+13,
WIDTH*23+19,
};
@Override
public void occupyCell( Char ch ) {
super.occupyCell( ch );
//如果有生物来到BossDoor的下一个坐标且生物是玩家那么触发seal().
if (map[getBossDoor] == Terrain.DOOR && ch.pos == LDBossDoor && ch == Dungeon.hero) {
seal();
}
}
@Override
public void seal() {
super.seal();
for (int i : ForestBossLasherPos) {
CrivusFruitsLasher csp = new CrivusFruitsLasher();
csp.pos = i;
GameScene.add(csp);
}
CrivusFruits boss = new CrivusFruits();
boss.state = boss.WANDERING;
boss.pos = WIDTH*19+16;
GameScene.add( boss );
set( getBossDoor, Terrain.WALL );
GameScene.updateMap( getBossDoor );
set( HOME, Terrain.EMPTY );
GameScene.updateMap( HOME );
Dungeon.observe();
}
@Override
public void unseal() {
super.unseal();
set( getBossDoor, Terrain.EMPTY );
GameScene.updateMap( getBossDoor );
set( HOME, Terrain.ENTRANCE );
GameScene.updateMap( HOME );
Dungeon.observe();
}
//地图结构
private static final int[] WorldRoomShort = {
W,W,W,W,W,W,W,B,B,B,B,W,W,W,W,W,W,W,W,W,W,W,B,B,B,B,W,W,W,W,W,W,
W,M,M,M,M,M,M,C,C,C,C,L,L,W,T,M,I,M,T,W,L,L,C,C,C,C,M,M,M,M,M,W,
W,M,M,M,M,M,M,C,C,C,L,L,L,W,T,M,M,M,T,W,L,L,L,C,C,C,M,M,M,M,M,W,
W,M,M,M,M,M,M,C,C,L,L,L,L,W,T,M,H,M,T,W,L,L,L,L,C,C,M,M,M,M,M,W,
W,M,M,M,M,M,M,C,C,L,L,L,L,W,T,M,M,M,T,W,L,L,L,L,C,C,M,M,M,M,M,W,
W,M,M,M,M,M,M,C,C,L,L,L,L,W,T,M,H,M,T,W,L,L,L,L,C,C,M,M,M,M,M,W,
W,M,M,M,M,M,M,C,C,L,L,L,L,W,T,M,M,M,T,W,L,L,L,L,C,C,M,M,M,M,M,W,
W,M,M,M,M,M,M,C,C,L,L,L,L,W,T,M,H,M,T,W,L,L,L,L,C,C,M,M,M,M,M,W,
W,M,M,M,M,M,M,C,C,L,L,L,L,W,T,M,M,M,T,W,L,L,L,L,C,C,M,M,M,M,M,W,
W,M,M,M,M,M,M,C,C,L,L,L,L,W,W,W,X,W,W,W,L,L,L,L,C,C,M,M,M,M,M,W,
W,M,M,M,M,M,M,C,C,L,L,L,L,W,M,B,H,B,M,W,L,L,L,L,C,C,M,M,M,M,M,W,
W,M,M,M,M,M,M,C,C,C,L,L,L,A,M,C,H,C,M,A,L,L,L,C,C,C,M,M,M,M,M,W,
W,M,M,M,M,M,M,C,C,C,C,L,L,W,M,C,H,C,M,W,L,L,C,C,C,C,M,M,M,M,M,W,
W,B,B,B,B,B,B,W,W,W,W,B,W,B,M,C,H,C,M,B,W,B,W,W,W,B,B,B,B,B,B,W,
W,C,C,C,C,C,C,W,W,W,M,C,M,C,M,C,H,C,M,C,M,C,W,W,W,C,C,C,C,C,C,W,
W,L,L,L,W,W,W,B,M,M,M,C,M,H,M,C,H,C,M,H,M,C,M,M,B,W,W,L,L,L,L,W,
W,L,L,W,W,M,M,C,M,M,M,C,C,C,C,C,H,C,C,C,M,C,M,M,C,M,W,W,L,L,L,W,
W,W,W,W,B,M,M,C,M,M,M,H,C,C,H,H,H,H,H,C,M,H,M,M,C,M,M,B,W,W,W,W,
W,W,C,C,C,C,C,C,C,C,C,C,C,C,H,C,C,C,H,C,C,C,C,C,C,C,C,C,C,C,W,W,
W,H,H,H,H,H,H,H,H,H,H,H,H,H,H,C,D,C,H,H,H,H,H,H,H,H,H,H,H,H,H,W,
W,C,C,C,C,C,C,C,C,C,C,C,C,C,H,C,C,C,H,C,C,C,C,C,C,C,C,C,C,C,M,W,
W,M,M,M,M,M,M,M,M,M,M,H,M,C,H,H,H,H,H,C,M,H,M,M,M,M,M,M,M,M,M,W,
W,M,M,M,M,M,M,M,M,M,M,M,M,C,C,C,H,C,C,C,M,M,M,M,M,M,M,M,M,M,M,W,
W,M,M,H,M,M,M,M,M,M,M,M,M,H,M,C,H,C,M,H,M,M,M,M,M,M,M,M,M,M,M,W,
W,M,M,M,M,M,M,H,M,M,M,M,M,M,M,C,H,C,M,M,M,M,M,M,M,M,M,H,M,M,M,W,
W,M,M,M,M,M,M,M,M,M,M,W,W,W,W,W,S,W,W,W,W,W,M,H,M,M,M,M,M,M,M,W,
W,M,M,M,M,M,M,M,M,M,W,W,M,M,W,L,M,L,W,M,M,W,W,M,M,M,M,M,M,M,M,W,
W,M,M,M,H,M,M,M,W,W,W,M,M,M,W,L,M,L,W,M,M,M,W,W,M,M,M,M,M,M,M,W,
W,M,M,M,M,M,M,M,W,M,M,M,M,M,S,M,M,M,S,M,M,M,M,W,W,M,M,M,M,M,M,W,
W,M,M,M,M,M,M,M,W,M,M,M,M,M,W,L,M,L,W,M,M,M,M,M,W,M,M,H,M,M,M,W,
W,W,M,M,M,M,M,M,W,M,M,M,M,M,W,L,Q,L,W,M,M,M,M,M,W,M,M,M,M,M,W,W,
W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,
};
private static class Sink extends Emitter {
private int pos;
private float rippleDelay = 0;
private static final Emitter.Factory factory = new Factory() {
@Override
public void emit( Emitter emitter, int index, float x, float y ) {
WaterParticle p = (WaterParticle)emitter.recycle( WaterParticle.class );
p.reset( x, y );
}
};
public Sink( int pos ) {
super();
this.pos = pos;
PointF p = DungeonTilemap.tileCenterToWorld( pos );
pos( p.x - 2, p.y + 3, 4, 0 );
pour( factory, 0.1f );
}
@Override
public void update() {
if (visible == (pos < level.heroFOV.length && level.heroFOV[pos])) {
super.update();
if (!isFrozen() && (rippleDelay -= Game.elapsed) <= 0) {
Ripple ripple = GameScene.ripple( pos + level.width() );
if (ripple != null) {
ripple.y -= DungeonTilemap.SIZE / 2f;
rippleDelay = Random.Float(0.1f, 0.9f);
}
}
}
}
}
public static final class WaterParticle extends PixelParticle {
public WaterParticle() {
super();
acc.y = 50;
am = 0.5f;
color( ColorMath.random( 0xb6ccc2, 0x3b6653 ) );
size( 2 );
}
public void reset( float x, float y ) {
revive();
this.x = x;
this.y = y;
speed.set( Random.Float( -1, +1 ), 0 );
left = lifespan = 0.5f;
}
}
public static void addSewerVisuals( Level level, Group group ) {
for (int i=0; i < level.length(); i++) {
if (level.map[i] == Terrain.WALL_DECO) {
group.add( new ForestBossLevel.Sink( i ) );
}
}
}
//构建地图
protected boolean build() {
setSize(WIDTH, HEIGHT);
map = WorldRoomShort.clone();
this.entrance = WIDTH + 16 ;
this.exit = WIDTH*30 + 16;
return true;
}
//加入粒子效果
@Override
public Group addVisuals() {
super.addVisuals();
addSewerVisuals(this, visuals);
return visuals;
}
public String tilesTex() {
return Assets.Environment.TILES_SEWERS;
}
public String waterTex() {
return Assets.Environment.WATER_SEWERS;
}
}

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

View File

@ -0,0 +1,78 @@
package com.shatteredpixel.shatteredpixeldungeon.sprites;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
import com.watabou.noosa.MovieClip;
import com.watabou.noosa.TextureFilm;
import com.watabou.noosa.particles.Emitter;
public class CrivusFruitsSprite extends MobSprite {
private Emitter cloud;
public CrivusFruitsSprite(){
super();
perspectiveRaise = 0.2f;
texture( Assets.Sprites.CFAS );
TextureFilm frames = new TextureFilm( texture, 16, 16 );
idle = new MovieClip.Animation( 1, true );
idle.frames( frames, 0);
run = new MovieClip.Animation( 1, true );
run.frames( frames, 0 );
attack = new MovieClip.Animation( 1, false );
attack.frames( frames, 0 );
die = new MovieClip.Animation( 8, false );
die.frames( frames, 1, 2, 3, 4, 5, 6,6,6 );
play( idle );
}
@Override
public void link( Char ch ) {
super.link( ch );
renderShadow = false;
if (cloud == null) {
cloud = emitter();
cloud.pour( Speck.factory(Speck.DIED), 0.7f );
}
}
@Override
public void turnTo(int from, int to) {
//do nothing
}
@Override
public void update() {
super.update();
if (cloud != null) {
cloud.visible = visible;
}
}
@Override
public void die() {
super.die();
if (cloud != null) {
cloud.on = false;
}
}
@Override
public int blood() {
return 0xFF88CC44;
}
}

View File

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

View File

@ -685,7 +685,7 @@ public class ItemSpriteSheet {
public static final int BANDOLIER = BAGS+3;
public static final int HOLSTER = BAGS+4;
public static final int MagicBlueSword = BAGS+5;
public static final int BlackDog = BAGS+6;
public static final int LifeTreeSword = BAGS+6;
public static final int RedBloodMoon = BAGS+7;
public static final int DG1 = BAGS+8;
public static final int DG2 = BAGS+9;

View File

@ -39,6 +39,7 @@ import java.util.ArrayList;
public class vM0_6_7_X_Changes {
public static void addAllChanges(ArrayList<ChangeInfo> changeInfos) {
add_v0_6_21_Changes(changeInfos);
add_v0_6_20_Changes(changeInfos);
add_v0_6_19_Changes(changeInfos);
add_v0_6_18_Changes(changeInfos);
@ -61,9 +62,37 @@ public class vM0_6_7_X_Changes {
add_v0_6_1_Changes(changeInfos);
add_v0_6_0_Changes(changeInfos);
}
public static void add_v0_6_20_Changes( ArrayList<ChangeInfo> changeInfos ) {
public static void add_v0_6_20_Changes(ArrayList<ChangeInfo> changeInfos) {
ChangeInfo changes = new ChangeInfo("v0.6.0.0-Beta21-p2.940", true, "");
changes.hardlight(65535);
changeInfos.add(changes);
ChangeInfo changes2 = new ChangeInfo("新内容", false, (String) null);
changes2.hardlight(65280);
changeInfos.add(changes2);
changes2.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), "污泥浊水", "1.矮人层饮用漂浮药剂或者水灵药剂都会获得极速Buff且每大层会额外产生食人鱼房间。\n-2.修复漂浮效果存在时还能获得Debuff的问题"));
changes2.addButton(new ChangeButton(Icons.get(Icons.INFO), "圣诞与常规两个主界面Logo", "现在圣诞和常规有两个主界面logo未来还会有更多。"));
ChangeInfo changes3 = new ChangeInfo("修复", false, (String) null);
changes3.hardlight(16776960);
changeInfos.add(changes3);
changes3.addButton(new ChangeButton(new Image("sprites/spinner.png", 144, 0, 16, 16), Messages.get(ChangesScene.class, "bugfixes", new Object[0]), Messages.get(vM0_6_7_X_Changes.class, "bug_06X40", new Object[0])));
ChangeInfo changes4 = new ChangeInfo("重制", false, (String) null);
changes4.hardlight(16711680);
changeInfos.add(changes4);
changes4.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.SKELETONGOLD), "Boss重制计划", "冰雪魔女钻石宝箱王矮人大师Yog-Zot,史莱姆王将在完全重制后重新加入并且可能会改名。且弃用注解版的Boss。并且现在Boss终端暂时暂停使用。"));
changes4.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.DG20), "教程重制计划", "教程文档正在返修,敬请期待"));
ChangeInfo changes5 = new ChangeInfo("调整", false, (String) null);
changes5.hardlight(8421504);
changeInfos.add(changes5);
changes5.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.REDDRAGON), "核子可乐", "核子可乐现在不能在红龙之王处被获得,但会在未来的娱乐模式中加入。"));
changes5.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.DG26), "玫瑰秘卷", "玫瑰秘卷无敌时间从35回合改为5回合且不能在此期间使用吸血圣杯。制造配方能量消耗从20改为14"));
changes5.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_OFF), "挑战重制计划", "药水癔症基因突变暴力Boss将会在未来重新加入现在暂时禁用"));
changes5.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.DG24), "极度秘卷", "暂时移除,将在未来加入。"));
changes5.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.ICEFISHSWORD), "尚方宝剑", "初始力量变为20每10大层进行+1力量成长面板调整攻击特效从100%改为20%有几率触发。"));
}
public static void add_v0_6_21_Changes( ArrayList<ChangeInfo> changeInfos ) {
ChangeInfo changes = new ChangeInfo("v0.6.0.0-Beta21-p2.950", true, "");
changes.hardlight(Window.TITLE_COLOR);
changeInfos.add(changes);
@ -71,50 +100,18 @@ public class vM0_6_7_X_Changes {
changes.hardlight(Window.GREEN_COLOR);
changeInfos.add(changes);
changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_ON), ("污泥浊水"),
("1.矮人层饮用漂浮药剂或者水灵药剂都会获得极速Buff且每大层会额外产生食人鱼房间。" +
"\n-2.修复漂浮效果存在时还能获得Debuff的问题" )));
changes.addButton(new ChangeButton(Icons.get(Icons.INFO), ("圣诞与常规两个主界面Logo"),
("现在圣诞和常规有两个主界面logo未来还会有更多。" )));
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_06X40")));
changes = new ChangeInfo("重制", false, null);
changes.hardlight(Window.ANSDO_COLOR);
changeInfos.add(changes);
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.SKELETONGOLD), ("Boss重制计划"),
("冰雪魔女钻石宝箱王矮人大师Yog-Zot,史莱姆王将在完全重制后重新加入并且可能会改名。且弃用注解版的Boss。并且现在Boss终端暂时暂停使用。" )));
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.DG20), ("教程重制计划"),
("教程文档正在返修,敬请期待" )));
changes.addButton(new ChangeButton(new Image("ADE.png", 0, 0, 32, 32),
("ADE环境部署成功"),
("AndroidIDE+AIDE综合部署现在作者可以手机/电脑协同开发也可以避免部分时候遇到一些重大bug没有代码而难以处理的问题")));
changes = new ChangeInfo("调整", false, null);
changes.hardlight(Window.CBLACK);
changeInfos.add(changes);
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.REDDRAGON), ("核子可乐"),
("核子可乐现在不能在红龙之王处被获得,但会在未来的娱乐模式中加入。" )));
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.DG26), ("玫瑰秘卷"),
("玫瑰秘卷无敌时间从35回合改为5回合且不能在此期间使用吸血圣杯。制造配方能量消耗从20改为14" )));
changes.addButton(new ChangeButton(Icons.get(Icons.CHALLENGE_OFF), ("挑战重制计划"),
("药水癔症基因突变暴力Boss将会在未来重新加入现在暂时禁用" )));
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.DG24), ("极度秘卷"),
("暂时移除,将在未来加入。" )));
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.ICEFISHSWORD), ("尚方宝剑"),
("初始力量变为20每10大层进行+1力量成长面板调整攻击特效从100%改为20%有几率触发。" )));
("尚方宝剑现在力量初始为16但是必定获得一个随机诅咒商人对它的价值提升" )));
}
public static void add_v0_6_19_Changes( ArrayList<ChangeInfo> changeInfos ) {
@ -872,8 +869,5 @@ public class vM0_6_7_X_Changes {
changes.addButton(new ChangeButton(new FlameBoiSprite(), ("火焰机器人"),
("移除火焰机器人在常规局的出现,仅出现在支离破碎的精英怪概率里面")));
changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.BlackDog), ("黑狗爪"),
("移除黑狗爪,它已不再有当年的威风")));
}
}