v3.1.0: added hermit crabs
This commit is contained in:
@@ -1655,6 +1655,10 @@ actors.mobs.guard.scorpion=Get over here!
|
||||
actors.mobs.guard.def_verb=blocked
|
||||
actors.mobs.guard.desc=Once keepers of the prison, these guards have long since become no different than the inmates. They shamble like zombies, brainlessly roaming through the halls in search of anything out of place, like you!\n\nThey carry chains around their hip, possibly used to pull in enemies to close range.
|
||||
|
||||
actors.mobs.hermitcrab.name=hermit crab
|
||||
actors.mobs.hermitcrab.def_verb=blocked
|
||||
actors.mobs.hermitcrab.desc=For one reason or another, this sewer crab has decided to wear the broken upper part of a barrel on its head! The extra weight has slown it down to regular speed, but has also granted it considerably more defence. You think you can hear something bouncing around inside the barrel though...
|
||||
|
||||
actors.mobs.mimic.name=mimic
|
||||
actors.mobs.mimic.reveal=That chest is a mimic!
|
||||
actors.mobs.mimic.hidden_hint=Something about this chest feels off... Walking up and trying to open it might be a bad idea.
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Pixel Dungeon
|
||||
* Copyright (C) 2012-2015 Oleg Dolya
|
||||
*
|
||||
* Shattered Pixel Dungeon
|
||||
* Copyright (C) 2014-2025 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.items.Generator;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.HermitCrabSprite;
|
||||
|
||||
public class HermitCrab extends Crab {
|
||||
|
||||
{
|
||||
spriteClass = HermitCrabSprite.class;
|
||||
|
||||
HP = HT = 25; //+67% HP
|
||||
baseSpeed = 1f; //-50% speed
|
||||
|
||||
loot = Generator.Category.ARMOR;
|
||||
lootChance = 1f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int drRoll() {
|
||||
return super.drRoll() + 2; //2-6 DR total, up from 0-4
|
||||
}
|
||||
|
||||
}
|
||||
@@ -245,25 +245,22 @@ public class MobSpawner extends Actor {
|
||||
for (int i = 0; i < rotation.size(); i++) {
|
||||
if (Random.Float() < altChance) {
|
||||
Class<? extends Mob> cl = rotation.get(i);
|
||||
if (cl == Rat.class) {
|
||||
cl = Albino.class;
|
||||
} else if (cl == Gnoll.class) {
|
||||
cl = GnollExile.class;
|
||||
} else if (cl == Slime.class) {
|
||||
cl = CausticSlime.class;
|
||||
} else if (cl == Thief.class) {
|
||||
cl = Bandit.class;
|
||||
} else if (cl == Necromancer.class) {
|
||||
cl = SpectralNecromancer.class;
|
||||
} else if (cl == Brute.class) {
|
||||
cl = ArmoredBrute.class;
|
||||
} else if (cl == DM200.class) {
|
||||
cl = DM201.class;
|
||||
} else if (cl == Monk.class) {
|
||||
cl = Senior.class;
|
||||
} else if (cl == Scorpio.class) {
|
||||
cl = Acidic.class;
|
||||
}
|
||||
if (cl == Rat.class) cl = Albino.class;
|
||||
else if (cl == Gnoll.class) cl = GnollExile.class;
|
||||
else if (cl == Crab.class) cl = HermitCrab.class;
|
||||
else if (cl == Slime.class) cl = CausticSlime.class;
|
||||
|
||||
else if (cl == Thief.class) cl = Bandit.class;
|
||||
else if (cl == Necromancer.class) cl = SpectralNecromancer.class;
|
||||
|
||||
else if (cl == Brute.class) cl = ArmoredBrute.class;
|
||||
else if (cl == DM200.class) cl = DM201.class;
|
||||
|
||||
else if (cl == Monk.class) cl = Senior.class;
|
||||
//chaos elemental spawning happens in Elemental.Random
|
||||
|
||||
else if (cl == Scorpio.class) cl = Acidic.class;
|
||||
|
||||
rotation.set(i, cl);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,6 +62,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Golem;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Goo;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.GreatCrab;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Guard;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.HermitCrab;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mimic;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Monk;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Necromancer;
|
||||
@@ -221,7 +222,7 @@ public enum Bestiary {
|
||||
|
||||
UNIVERSAL.addEntities(Wraith.class, Piranha.class, Mimic.class, GoldenMimic.class, EbonyMimic.class, Statue.class, GuardianTrap.Guardian.class, SentryRoom.Sentry.class);
|
||||
|
||||
RARE.addEntities(Albino.class, GnollExile.class, CausticSlime.class,
|
||||
RARE.addEntities(Albino.class, GnollExile.class, HermitCrab.class, CausticSlime.class,
|
||||
Bandit.class, SpectralNecromancer.class,
|
||||
ArmoredBrute.class, DM201.class,
|
||||
Elemental.ChaosElemental.class, Senior.class,
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
package com.shatteredpixel.shatteredpixeldungeon.sprites;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.watabou.noosa.MovieClip;
|
||||
import com.watabou.noosa.TextureFilm;
|
||||
|
||||
public class GreatCrabSprite extends MobSprite {
|
||||
@@ -34,17 +33,19 @@ public class GreatCrabSprite extends MobSprite {
|
||||
|
||||
TextureFilm frames = new TextureFilm( texture, 16, 16 );
|
||||
|
||||
idle = new MovieClip.Animation( 5, true );
|
||||
idle.frames( frames, 16, 17, 16, 18 );
|
||||
int c = 32;
|
||||
|
||||
run = new MovieClip.Animation( 10, true );
|
||||
run.frames( frames, 19, 20, 21, 22 );
|
||||
idle = new Animation( 5, true );
|
||||
idle.frames( frames, 0+c, 1+c, 0+c, 2+c );
|
||||
|
||||
attack = new MovieClip.Animation( 12, false );
|
||||
attack.frames( frames, 23, 24, 25 );
|
||||
run = new Animation( 10, true ); //slower run animation
|
||||
run.frames( frames, 3+c, 4+c, 5+c, 6+c );
|
||||
|
||||
die = new MovieClip.Animation( 12, false );
|
||||
die.frames( frames, 26, 27, 28, 29 );
|
||||
attack = new Animation( 12, false );
|
||||
attack.frames( frames, 7+c, 8+c, 9+c );
|
||||
|
||||
die = new Animation( 12, false );
|
||||
die.frames( frames, 10+c, 11+c, 12+c, 13+c );
|
||||
|
||||
play( idle );
|
||||
}
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* Pixel Dungeon
|
||||
* Copyright (C) 2012-2015 Oleg Dolya
|
||||
*
|
||||
* Shattered Pixel Dungeon
|
||||
* Copyright (C) 2014-2025 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.watabou.noosa.TextureFilm;
|
||||
|
||||
public class HermitCrabSprite extends MobSprite {
|
||||
|
||||
public HermitCrabSprite() {
|
||||
super();
|
||||
|
||||
texture( Assets.Sprites.CRAB );
|
||||
|
||||
TextureFilm frames = new TextureFilm( texture, 16, 16 );
|
||||
|
||||
int c = 16;
|
||||
|
||||
idle = new Animation( 5, true );
|
||||
idle.frames( frames, 0+c, 1+c, 0+c, 2+c );
|
||||
|
||||
run = new Animation( 10, true ); //slower run animation
|
||||
run.frames( frames, 3+c, 4+c, 5+c, 6+c );
|
||||
|
||||
attack = new Animation( 12, false );
|
||||
attack.frames( frames, 7+c, 8+c, 9+c );
|
||||
|
||||
die = new Animation( 12, false );
|
||||
die.frames( frames, 10+c, 11+c, 12+c, 13+c );
|
||||
|
||||
play( idle );
|
||||
}
|
||||
|
||||
@Override
|
||||
public int blood() {
|
||||
return 0xFFFFEA80;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user