v2.3.0: added basic no-functionality fungal core, and a few fungi fixes

This commit is contained in:
Evan Debenham
2023-12-19 14:13:56 -05:00
parent b5007169d1
commit 87703dbc4e
9 changed files with 178 additions and 10 deletions

View File

@@ -1202,6 +1202,9 @@ actors.mobs.eye.desc=Evil Eyes are floating balls of pent up demonic energy. Whi
actors.mobs.fetidrat.name=fetid rat
actors.mobs.fetidrat.desc=Something is clearly wrong with this rat. Its greasy black fur and rotting skin are very different from the healthy rats you've seen previously. Its pale green eyes make it seem especially menacing.\n\nThe rat carries a cloud of horrible stench with it, it's overpoweringly strong up close.\n\nDark ooze dribbles from the rat's mouth, it eats through the floor but seems to dissolve in water.
actors.mobs.fungalcore.name=fungal core
actors.mobs.fungalcore.desc=This gigantic mushroom must be the source of all the fungal activity in this cave. TODO.
actors.mobs.fungalsentry.name=fungal sentry
actors.mobs.fungalsentry.desc=This especially tall mushroom acts as a point of defense for the larger fungal network living in this cave.\n\nIt is immobile, but will shoot precise blasts of poison at anything that gets within its line of sight. While the impact of these blasts is fairly weak, _they can stack up deadly amounts of poison very quickly._ While it can be killed, it's probably best to avoid it.

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 B

View File

@@ -323,5 +323,6 @@ public class Assets {
public static final String GNOLL_GEOMANCER = "sprites/gnoll_geomancer.png";
public static final String FUNGAL_SPINNER = "sprites/fungal_spinner.png";
public static final String FUNGAL_SENTRY = "sprites/fungal_sentry.png";
public static final String FUNGAL_CORE = "sprites/fungal_core.png";
}
}

View File

@@ -0,0 +1,56 @@
/*
* Pixel Dungeon
* Copyright (C) 2012-2015 Oleg Dolya
*
* Shattered Pixel Dungeon
* Copyright (C) 2014-2023 Evan Debenham
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/
package com.shatteredpixel.shatteredpixeldungeon.actors.mobs;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Blacksmith;
import com.shatteredpixel.shatteredpixeldungeon.sprites.FungalCoreSprite;
public class FungalCore extends Mob {
{
HP = HT = 300;
spriteClass = FungalCoreSprite.class;
EXP = 20;
state = PASSIVE;
properties.add(Property.IMMOVABLE);
properties.add(Property.BOSS);
}
@Override
public boolean reset() {
return true;
}
@Override
public float spawningWeight() {
return 0;
}
@Override
public void die(Object cause) {
super.die(cause);
Blacksmith.Quest.beatBoss();
}
}

View File

@@ -51,6 +51,11 @@ public class FungalSentry extends Mob {
return true;
}
@Override
public float spawningWeight() {
return 0;
}
@Override
protected boolean getCloser(int target) {
return false;

View File

@@ -117,7 +117,7 @@ public class HighGrass {
if (Dungeon.level instanceof MiningLevel
&& Blacksmith.Quest.Type() == Blacksmith.Quest.FUNGI
&& Random.Int(3) != 0){
naturalismLevel = 0;
naturalismLevel = -1;
}
if (naturalismLevel >= 0) {

View File

@@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.quest;
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.CrystalSpire;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.FungalCore;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.GnollGeomancer;
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Blacksmith;
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
@@ -134,6 +135,10 @@ public class MineGiantRoom extends CaveRoom {
Painter.fillEllipse(level, this, 4, Terrain.HIGH_GRASS);
Painter.fillEllipse(level, this, 5, Terrain.GRASS);
Point p = center();
FungalCore m = new FungalCore();
m.pos = level.pointToCell(p);
level.mobs.add(m);
} else {
Painter.fillEllipse(level, this, 3, Terrain.EMPTY);

View File

@@ -0,0 +1,97 @@
/*
* Pixel Dungeon
* Copyright (C) 2012-2015 Oleg Dolya
*
* Shattered Pixel Dungeon
* Copyright (C) 2014-2023 Evan Debenham
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/
package com.shatteredpixel.shatteredpixeldungeon.sprites;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonWallsTilemap;
import com.watabou.noosa.TextureFilm;
public class FungalCoreSprite extends MobSprite {
public FungalCoreSprite(){
super();
texture( Assets.Sprites.FUNGAL_CORE );
TextureFilm frames = new TextureFilm( texture, 27, 27 );
idle = new Animation( 0, true );
idle.frames( frames, 0);
run = new Animation( 0, true );
run.frames( frames, 0);
attack = new Animation( 24, false );
attack.frames( frames, 0 );
zap = attack.clone();
die = new Animation( 12, false );
die.frames( frames, 0 );
play( idle );
}
boolean wasVisible = false;
@Override
public void update() {
super.update();
if (curAnim != die && ch != null && visible != wasVisible){
if (visible){
DungeonWallsTilemap.skipCells.add(ch.pos - 2* Dungeon.level.width());
DungeonWallsTilemap.skipCells.add(ch.pos - Dungeon.level.width());
} else {
DungeonWallsTilemap.skipCells.remove(ch.pos - 2*Dungeon.level.width());
DungeonWallsTilemap.skipCells.remove(ch.pos - Dungeon.level.width());
}
GameScene.updateMap(ch.pos-2*Dungeon.level.width());
GameScene.updateMap(ch.pos-Dungeon.level.width());
wasVisible = visible;
}
}
@Override
public void die() {
super.die();
if (ch != null && visible){
DungeonWallsTilemap.skipCells.remove(ch.pos - 2*Dungeon.level.width());
DungeonWallsTilemap.skipCells.remove(ch.pos - Dungeon.level.width());
GameScene.updateMap(ch.pos-2*Dungeon.level.width());
GameScene.updateMap(ch.pos-Dungeon.level.width());
}
}
@Override
public void turnTo(int from, int to) {
//do nothing
}
@Override
public int blood() {
return 0xFF88CC44;
}
}

View File

@@ -24,18 +24,17 @@ package com.shatteredpixel.shatteredpixeldungeon.sprites;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.effects.MagicMissile;
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
import com.watabou.noosa.TextureFilm;
import com.watabou.utils.Callback;
public class FungalSentrySprite extends CharSprite {
public class FungalSentrySprite extends MobSprite {
private int cellToAttack;
public FungalSentrySprite(){
super();
texture(Assets.Sprites.FUNGAL_SENTRY );
texture( Assets.Sprites.FUNGAL_SENTRY );
TextureFilm frames = new TextureFilm( texture, 18, 18 );
@@ -57,8 +56,6 @@ public class FungalSentrySprite extends CharSprite {
}
//TODO blood
@Override
public void attack( int cell ) {
if (!Dungeon.level.adjacent( cell, ch.pos )) {
@@ -89,10 +86,14 @@ public class FungalSentrySprite extends CharSprite {
}
}
public class ScorpioShot extends Item {
{
image = ItemSpriteSheet.FISHING_SPEAR;
}
@Override
public void turnTo(int from, int to) {
//do nothing
}
@Override
public int blood() {
return 0xFF88CC44;
}
}