Fixed CrivusFruits

This commit is contained in:
LingASDJ 2023-02-09 15:22:24 +08:00
parent 0c99e4a292
commit 29f8e5284f
7 changed files with 72 additions and 49 deletions

View File

@ -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=养分……汲取……失败……,果实破裂声中貌似夹杂着一丝悲鸣。

View File

@ -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

View File

@ -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

View File

@ -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();

View File

@ -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);
}
{

View File

@ -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();
}

View File

@ -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;