Fixed CrivusFruits
This commit is contained in:
parent
0c99e4a292
commit
29f8e5284f
|
@ -2,9 +2,9 @@
|
|||
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.notice=触手正在不断蠕动,试图靠近你
|
||||
actors.mobs.bosses.crivusfruits.anargy=触手的蠕动变为猛烈抽搐,拍打中释放出更多有毒气体
|
||||
actors.mobs.bosses.crivusfruits.died!!!=所有藤蔓都停止了抽动,果实的颜色似乎更加鲜红了
|
||||
actors.mobs.bosses.crivusfruits.!!!=克里弗斯之果正在汲取魔力释放范围更大的红色毒雾!
|
||||
actors.mobs.bosses.crivusfruits.dead=养分……汲取……失败……,果实破裂声中貌似夹杂着一丝悲鸣。
|
||||
|
||||
|
|
|
@ -59,14 +59,17 @@ public class Statistics {
|
|||
|
||||
public static boolean endingbald = false;
|
||||
|
||||
//TODO 灯火前行
|
||||
//灯火前行
|
||||
public static boolean lanterfireactive = false;
|
||||
|
||||
//克里弗斯之果
|
||||
public static boolean crivusfruitslevel2 = false;
|
||||
|
||||
//TODO BUG修复同步
|
||||
|
||||
//修复同步
|
||||
public static boolean bugsyncfixed = false;
|
||||
|
||||
//TODO 警告
|
||||
//警告
|
||||
public static boolean tipsgodungeon = false;
|
||||
|
||||
public static int dageCollected;
|
||||
|
@ -112,6 +115,7 @@ public class Statistics {
|
|||
|
||||
lanterfireactive = false;
|
||||
bugsyncfixed = false;
|
||||
crivusfruitslevel2 = false;
|
||||
|
||||
second_elapsed = 0f;
|
||||
real_seconds = 0;
|
||||
|
@ -152,21 +156,24 @@ public class Statistics {
|
|||
|
||||
private static final String EXLEVEL = "Exlevel";
|
||||
|
||||
//TODO 灯火前行
|
||||
//灯火前行
|
||||
private static final String LANTERACTIVE = "lanterfireactive";
|
||||
|
||||
//TODO BUG修复的机制
|
||||
//BUG修复的机制
|
||||
private static final String BUG_SYNC_FIXED = "bugsyncfixed";
|
||||
|
||||
//克里弗斯之果
|
||||
private static final String CrivusFruitsLevel2 = "crivusfruitslevel2";
|
||||
|
||||
private static final String TIPSGO = "tipsgo";
|
||||
|
||||
public static void storeInBundle( Bundle bundle ) {
|
||||
bundle.put( LANTERACTIVE, lanterfireactive );
|
||||
|
||||
|
||||
bundle.put( CrivusFruitsLevel2, crivusfruitslevel2 );
|
||||
|
||||
bundle.put( TIPSGO, tipsgodungeon );
|
||||
//TODO BUG修复的机制
|
||||
|
||||
bundle.put( BUG_SYNC_FIXED, bugsyncfixed );
|
||||
|
||||
bundle.put( GOLD, goldCollected );
|
||||
|
@ -235,6 +242,8 @@ public class Statistics {
|
|||
|
||||
bugsyncfixed = bundle.getBoolean( BUG_SYNC_FIXED );
|
||||
|
||||
crivusfruitslevel2 = bundle.getBoolean( CrivusFruitsLevel2 );
|
||||
|
||||
tipsgodungeon = bundle.getBoolean(TIPSGO);
|
||||
|
||||
//SPD
|
||||
|
|
|
@ -2656,7 +2656,9 @@ public class Hero extends Char {
|
|||
|
||||
MagicalHolster holster = belongings.getItem(MagicalHolster.class);
|
||||
|
||||
Buff.affect(this, LostInventory.class);
|
||||
if(!Dungeon.bossLevel()) {
|
||||
Buff.affect(this, LostInventory.class);
|
||||
}
|
||||
Buff.affect(this, Invisibility.class, 10f);
|
||||
//lost inventory is dropped in interlevelscene
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.shatteredpixel.shatteredpixeldungeon.actors.mobs.bosses;
|
||||
|
||||
import static com.shatteredpixel.shatteredpixeldungeon.Statistics.crivusfruitslevel2;
|
||||
import static com.shatteredpixel.shatteredpixeldungeon.levels.ForestBossLevel.ForestBossLasherTWOPos;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
|
@ -31,7 +32,6 @@ 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 {
|
||||
|
@ -98,25 +98,15 @@ public class CrivusFruits extends Mob {
|
|||
}
|
||||
|
||||
|
||||
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(!crivusfruitslevel2){
|
||||
GameScene.add(Blob.seed(pos, HP<65 ? 50 : 30, DiedBlobs.class));
|
||||
} else {
|
||||
GameScene.add(Blob.seed(pos, HP<36 ? 100 : 50, DiedBlobs.class));
|
||||
}
|
||||
|
||||
|
||||
//判定是否第一次加进入游戏
|
||||
if( Dungeon.hero.buff(LockedFloor.class) != null){
|
||||
|
@ -125,10 +115,10 @@ public class CrivusFruits extends Mob {
|
|||
state = PASSIVE;
|
||||
|
||||
//二阶段
|
||||
if( HP<65 && !GoTwoBoss){
|
||||
if( HP<65 && !crivusfruitslevel2){
|
||||
HP=HT=64;
|
||||
GLog.n(Messages.get(this,"anargy"));
|
||||
GoTwoBoss = true;
|
||||
crivusfruitslevel2 = true;
|
||||
GameScene.flash(0x808c8c8c);
|
||||
for (int i : ForestBossLasherTWOPos) {
|
||||
CrivusFruitsLasher csp = new CrivusFruitsLasher();
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
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.Statistics;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
|
||||
|
@ -25,7 +24,7 @@ public class CrivusFruitsLasher extends Mob {
|
|||
{
|
||||
spriteClass = RotLasherSprite.class;
|
||||
|
||||
HP = HT = GoTwoBoss ? 40 : 20;
|
||||
HP = HT = Statistics.crivusfruitslevel2 ? 20 : 15;
|
||||
defenseSkill = 0;
|
||||
|
||||
EXP = 1;
|
||||
|
@ -41,14 +40,16 @@ public class CrivusFruitsLasher extends Mob {
|
|||
|
||||
@Override
|
||||
protected boolean act() {
|
||||
GameScene.add(Blob.seed(pos, GoTwoBoss ? 60 : 35, ToxicGas.class));
|
||||
//毒雾 都得死 啊哈哈哈哈
|
||||
GameScene.add(Blob.seed(pos, Statistics.crivusfruitslevel2 ? 60 : 10, ToxicGas.class));
|
||||
|
||||
//无敌也要扣减本体 NND
|
||||
if(Dungeon.hero.buff(CrivusFruits.DiedDamager.class) == null){
|
||||
Buff.affect(this,CrivusFruits.DiedDamager.class);
|
||||
}
|
||||
|
||||
//二阶段开始瞬移,地狱绘图
|
||||
if(GoTwoBoss){
|
||||
if(Statistics.crivusfruitslevel2){
|
||||
if(Random.Float() < 0.4f && (enemy == null || !Dungeon.level.adjacent(pos, enemy.pos))){
|
||||
switch (Random.Int(14)){
|
||||
case 0: default:
|
||||
|
@ -141,7 +142,7 @@ public class CrivusFruitsLasher extends Mob {
|
|||
|
||||
}
|
||||
|
||||
if(this.HT!=HP) {
|
||||
if(this.HT!=HP && !Statistics.crivusfruitslevel2) {
|
||||
HP = Math.min(HT, HP + 1);
|
||||
this.sprite.showStatus(CharSprite.POSITIVE, "+2");
|
||||
}
|
||||
|
@ -151,7 +152,7 @@ public class CrivusFruitsLasher extends Mob {
|
|||
|
||||
@Override
|
||||
public void damage(int dmg, Object src) {
|
||||
if (src instanceof Burning && !GoTwoBoss) {
|
||||
if (src instanceof Burning && ! Statistics.crivusfruitslevel2) {
|
||||
Buff.affect( this, HalomethaneBurning.class ).reignite( this, 100f );
|
||||
} else {
|
||||
super.damage(dmg, src);
|
||||
|
@ -182,17 +183,17 @@ public class CrivusFruitsLasher extends Mob {
|
|||
|
||||
@Override
|
||||
public int damageRoll() {
|
||||
return Random.NormalIntRange(8, 15);
|
||||
return Random.NormalIntRange( 1, 7 );
|
||||
}
|
||||
|
||||
@Override
|
||||
public int attackSkill( Char target ) {
|
||||
return 15;
|
||||
return 6;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int drRoll() {
|
||||
return Random.NormalIntRange(0, 8);
|
||||
return Random.NormalIntRange(0, 4);
|
||||
}
|
||||
|
||||
{
|
||||
|
|
|
@ -29,9 +29,7 @@ public class ForestBossLevel extends Level {
|
|||
|
||||
@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;
|
||||
|
@ -79,6 +77,18 @@ public class ForestBossLevel extends Level {
|
|||
WIDTH*23+19,
|
||||
};
|
||||
|
||||
//铺路
|
||||
public static int[] UpdateRead = new int[]{
|
||||
WIDTH*11+12,
|
||||
WIDTH*11+10,
|
||||
WIDTH*11+11,
|
||||
WIDTH*11+9,
|
||||
|
||||
WIDTH*11+20,
|
||||
WIDTH*11+21,
|
||||
WIDTH*11+22,
|
||||
};
|
||||
|
||||
@Override
|
||||
public void occupyCell( Char ch ) {
|
||||
|
||||
|
@ -109,6 +119,10 @@ public class ForestBossLevel extends Level {
|
|||
set( HOME, Terrain.EMPTY );
|
||||
GameScene.updateMap( HOME );
|
||||
Dungeon.observe();
|
||||
|
||||
drop( new PotionOfPurity(), WIDTH*11+15 );
|
||||
drop( new PotionOfPurity(), WIDTH*15+16 );
|
||||
drop( new PotionOfPurity(), WIDTH*11+17 );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -121,6 +135,11 @@ public class ForestBossLevel extends Level {
|
|||
set( HOME, Terrain.ENTRANCE );
|
||||
GameScene.updateMap( HOME );
|
||||
|
||||
for (int i : UpdateRead) {
|
||||
set( i, Terrain.EMPTY_SP );
|
||||
GameScene.updateMap( i );
|
||||
}
|
||||
|
||||
Dungeon.observe();
|
||||
}
|
||||
|
||||
|
|
|
@ -478,18 +478,20 @@ public class InterlevelScene extends PixelScene {
|
|||
Mob.holdAllies( Dungeon.level );
|
||||
|
||||
Level level;
|
||||
if (Dungeon.level.locked) {
|
||||
if (Dungeon.level.locked || Dungeon.bossLevel()) {
|
||||
ArrayList<Item> preservedItems = Dungeon.level.getItemsToPreserveFromSealedResurrect();
|
||||
|
||||
Dungeon.hero.resurrect();
|
||||
Dungeon.depth--;
|
||||
level = Dungeon.newLevel();
|
||||
Dungeon.hero.pos = level.randomRespawnCell(Dungeon.hero);
|
||||
Dungeon.hero.pos = Terrain.ENTRANCE;
|
||||
|
||||
for (Item i : preservedItems){
|
||||
level.drop(i, level.randomRespawnCell(null));
|
||||
if(!Dungeon.bossLevel()) {
|
||||
for (Item i : preservedItems) {
|
||||
level.drop(i, level.randomRespawnCell(null));
|
||||
}
|
||||
level.drop(new LostBackpack(), level.randomRespawnCell(null));
|
||||
}
|
||||
level.drop(new LostBackpack(), level.randomRespawnCell(null));
|
||||
|
||||
} else {
|
||||
level = Dungeon.level;
|
||||
|
|
Loading…
Reference in New Issue
Block a user