diff --git a/core/src/main/assets/messages/actors/actors.properties b/core/src/main/assets/messages/actors/actors.properties index 84ffb0c25..2b9fc62be 100644 --- a/core/src/main/assets/messages/actors/actors.properties +++ b/core/src/main/assets/messages/actors/actors.properties @@ -1212,11 +1212,12 @@ actors.mobs.gnollgeomancer.name=gnoll geomancer actors.mobs.gnollgeomancer.desc=TODO actors.mobs.gnollguard.name=gnoll guard -actors.mobs.gnollguard.desc=A large and tough looking gnoll wielding a spear and a shield, but no helmet. These guards are likely brutes in training, roped into helping protect the mine from encroaching wildlife.\n\nThe gnoll guard is strong enough to wield the spear in one hand, but can't use it very well. It will need fairly open space to attack at a distance, and will do notably less damage to you if you get up close. -actors.mobs.gnollguard.desc_armor=A nearby sapper is holding a device that is granting this guard earthen armor, heavily reducing the damage it takes. +actors.mobs.gnollguard.desc=A large and tough looking gnoll wielding a spear and a shield, but no helmet. These guards are likely brutes in training, roped into helping protect the mine from encroaching wildlife.\n\nThe gnoll guard is strong enough to wield the spear in one hand, but can't use it very well. _It will need fairly open space to attack at a distance, and will do notably less damage to you if you get up close._ +actors.mobs.gnollguard.desc_armor=_A nearby gnoll sapper is holding a device that is granting this guard earthen armor, heavily reducing the damage it takes._ actors.mobs.gnollsapper.name=gnoll sapper -actors.mobs.gnollsapper.desc=TODO +actors.mobs.gnollsapper.rock_kill=The flying boulder killed you... +actors.mobs.gnollsapper.desc=A small and weak but intelligent gnoll with pale fur and a satchel full of various gadgets. They are likely here to assist with prospecting and mining dark gold, and have a nearby guard for protection. They are capable of fighting, but their attacks are pitifully weak, no stronger than a gnoll scout.\n\nInstead of fighting directly, sappers prefer to use the various gadgets they have to make the rocky environment attack for them. They don't know earth-moving magic themselves though, and so are pretty likely to use their gadgets recklessly. _There should be lots of ways to use their attacks against them, or their guard._ actors.mobs.gnolltrickster.name=gnoll trickster actors.mobs.gnolltrickster.desc=A strange looking creature, even by gnoll standards. It hunches forward with a wicked grin, almost cradling the satchel hanging over its shoulder. Its eyes are wide with a strange mix of fear and excitement.\n\nThere is a large collection of poorly made darts in its satchel, they all seem to be tipped with various harmful substances. diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/GnollSapper.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/GnollSapper.java index 4a898dc3c..6a5c9250b 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/GnollSapper.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/GnollSapper.java @@ -36,11 +36,13 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.Level; import com.shatteredpixel.shatteredpixeldungeon.levels.MiningLevel; import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain; import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; +import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.GnollSapperSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; import com.shatteredpixel.shatteredpixeldungeon.sprites.MissileSprite; +import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; import com.watabou.utils.Callback; @@ -95,7 +97,7 @@ public class GnollSapper extends Mob { @Override public int damageRoll() { - return Random.NormalIntRange( 3, 6 ); + return Random.NormalIntRange( 1, 6 ); } @Override @@ -133,7 +135,6 @@ public class GnollSapper extends Mob { reset( throwingRockFromPos, rockPath.collisionPos, new Boulder(), new Callback() { @Override public void call() { - //TODO can probably have better particles Splash.at(rockPath.collisionPos, ColorMath.random( 0x444444, 0x777766 ), 15); Sample.INSTANCE.play(Assets.Sounds.ROCKS); @@ -152,7 +153,7 @@ public class GnollSapper extends Mob { } else if (!ch.isAlive() && ch == Dungeon.hero) { Badges.validateDeathFromEnemyMagic(); Dungeon.fail( GnollSapper.this ); - //TODO GLog.n( Messages.get(this, "bolt_kill") ); + GLog.n( Messages.get(this, "rock_kill") ); } if (rockPath.path.size() > rockPath.dist+1) { @@ -192,7 +193,7 @@ public class GnollSapper extends Mob { if (Actor.findById(guardID) instanceof GnollGuard && Dungeon.level.distance(pos, enemy.pos) <= 3){ - ((GnollGuard) Actor.findById(guardID)).beckon(enemy.pos); + ((GnollGuard) Actor.findById(guardID)).target = enemy.pos; ((GnollGuard) Actor.findById(guardID)).aggro(enemy); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/MiningLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/MiningLevel.java index d93033259..3af258cf2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/MiningLevel.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/MiningLevel.java @@ -182,6 +182,11 @@ public class MiningLevel extends CavesLevel { drop( Generator.randomUsingDefaults(Generator.Category.FOOD), cell ); if (Blacksmith.Quest.Type() == Blacksmith.Quest.GNOLL){ //drop a second ration for the gnoll quest type, more mining required! + cell = randomDropCell(); + if (map[cell] == Terrain.HIGH_GRASS || map[cell] == Terrain.FURROWED_GRASS) { + map[cell] = Terrain.GRASS; + losBlocking[cell] = false; + } drop( Generator.randomUsingDefaults(Generator.Category.FOOD), cell ); }