v2.3.0: added basic no-functionality fungal core, and a few fungi fixes
This commit is contained in:
@@ -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.
|
||||
|
||||
|
||||
BIN
core/src/main/assets/sprites/fungal_core.png
Normal file
BIN
core/src/main/assets/sprites/fungal_core.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 221 B |
@@ -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";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user