v0.8.0: bugfixes / tweaks:
- Fixed crash bugs - Fixed bees attacking bosses while they are invulnerable - Fixed DM-201s attacking the hero through walls - Fixed golems rarely teleporting to enclosed spaces - Fixed viscocity glyph not accounting for sniper shot - Fixed a typo in spirit bow description - Ripper demons now telegraph their leap even if they aren't visible - Updated gradle build tools version
This commit is contained in:
@@ -4,7 +4,7 @@ buildscript {
|
|||||||
jcenter()
|
jcenter()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:3.6.1'
|
classpath 'com.android.tools.build:gradle:3.6.2'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -157,6 +157,7 @@ public class Bee extends Mob {
|
|||||||
if (!(mob == this)
|
if (!(mob == this)
|
||||||
&& Dungeon.level.distance(mob.pos, potPos) <= 3
|
&& Dungeon.level.distance(mob.pos, potPos) <= 3
|
||||||
&& mob.alignment != Alignment.NEUTRAL
|
&& mob.alignment != Alignment.NEUTRAL
|
||||||
|
&& !mob.isInvulnerable(getClass())
|
||||||
&& !(alignment == Alignment.ALLY && mob.alignment == Alignment.ALLY)) {
|
&& !(alignment == Alignment.ALLY && mob.alignment == Alignment.ALLY)) {
|
||||||
enemies.add(mob);
|
enemies.add(mob);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ public class DM201 extends DM200 {
|
|||||||
GameScene.add(Blob.seed(pos, 0, CorrosiveGas.class));
|
GameScene.add(Blob.seed(pos, 0, CorrosiveGas.class));
|
||||||
if (state == HUNTING && enemy != null && enemySeen
|
if (state == HUNTING && enemy != null && enemySeen
|
||||||
&& threatened && !Dungeon.level.adjacent(pos, enemy.pos)){
|
&& threatened && !Dungeon.level.adjacent(pos, enemy.pos)){
|
||||||
|
enemySeen = enemy != null && enemy.isAlive() && fieldOfView[enemy.pos] && enemy.invisible <= 0;
|
||||||
if (sprite != null && (sprite.visible || enemy.sprite.visible)) {
|
if (sprite != null && (sprite.visible || enemy.sprite.visible)) {
|
||||||
sprite.zap( enemy.pos );
|
sprite.zap( enemy.pos );
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ public class Golem extends Mob {
|
|||||||
enemyTeleCooldown--;
|
enemyTeleCooldown--;
|
||||||
if (teleporting){
|
if (teleporting){
|
||||||
((GolemSprite)sprite).teleParticles(false);
|
((GolemSprite)sprite).teleParticles(false);
|
||||||
if (Actor.findChar(target) == null) {
|
if (Actor.findChar(target) == null && Dungeon.level.openSpace[target]) {
|
||||||
ScrollOfTeleportation.appear(this, target);
|
ScrollOfTeleportation.appear(this, target);
|
||||||
selfTeleCooldown = 30;
|
selfTeleCooldown = 30;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -443,7 +443,7 @@ public abstract class Mob extends Char {
|
|||||||
//otherwise, check if other characters are forcing us to take a very slow route
|
//otherwise, check if other characters are forcing us to take a very slow route
|
||||||
// and don't try to go around them yet in response, basically assume their blockage is temporary
|
// and don't try to go around them yet in response, basically assume their blockage is temporary
|
||||||
PathFinder.Path ignoreChars = Dungeon.findPath(this, target, Dungeon.level.passable, fieldOfView, false);
|
PathFinder.Path ignoreChars = Dungeon.findPath(this, target, Dungeon.level.passable, fieldOfView, false);
|
||||||
if (full == null || full.size() > 2*ignoreChars.size()){
|
if (ignoreChars != null && (full == null || full.size() > 2*ignoreChars.size())){
|
||||||
//check if first cell of shorter path is valid. If it is, use new shorter path. Otherwise do nothing and wait.
|
//check if first cell of shorter path is valid. If it is, use new shorter path. Otherwise do nothing and wait.
|
||||||
path = ignoreChars;
|
path = ignoreChars;
|
||||||
if (!Dungeon.level.passable[ignoreChars.getFirst()]
|
if (!Dungeon.level.passable[ignoreChars.getFirst()]
|
||||||
|
|||||||
@@ -213,7 +213,7 @@ public class RipperDemon extends Mob {
|
|||||||
leapPos = targetPos;
|
leapPos = targetPos;
|
||||||
//don't want to overly punish players with slow move or attack speed
|
//don't want to overly punish players with slow move or attack speed
|
||||||
spend(GameMath.gate(TICK, enemy.cooldown(), 3*TICK));
|
spend(GameMath.gate(TICK, enemy.cooldown(), 3*TICK));
|
||||||
if (Dungeon.level.heroFOV[pos]){
|
if (Dungeon.level.heroFOV[pos] || Dungeon.level.heroFOV[leapPos]){
|
||||||
GLog.w(Messages.get(RipperDemon.this, "leap"));
|
GLog.w(Messages.get(RipperDemon.this, "leap"));
|
||||||
sprite.parent.addToBack(new TargetedCell(leapPos, 0xFF0000));
|
sprite.parent.addToBack(new TargetedCell(leapPos, 0xFF0000));
|
||||||
((RipperSprite)sprite).leapPrep( leapPos );
|
((RipperSprite)sprite).leapPrep( leapPos );
|
||||||
|
|||||||
@@ -282,6 +282,8 @@ public class YogDzewa extends Mob {
|
|||||||
super.damage( dmg, src );
|
super.damage( dmg, src );
|
||||||
int dmgTaken = preHP - HP;
|
int dmgTaken = preHP - HP;
|
||||||
|
|
||||||
|
if (phase == 0 || findFist() != null) return;
|
||||||
|
|
||||||
abilityCooldown -= dmgTaken/10f;
|
abilityCooldown -= dmgTaken/10f;
|
||||||
summonCooldown -= dmgTaken/10f;
|
summonCooldown -= dmgTaken/10f;
|
||||||
|
|
||||||
|
|||||||
@@ -25,8 +25,11 @@ import com.shatteredpixel.shatteredpixeldungeon.Badges;
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor;
|
import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor.Glyph;
|
import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor.Glyph;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
|
||||||
@@ -46,6 +49,13 @@ public class Viscosity extends Glyph {
|
|||||||
//should build in functionality for that, but this works for now
|
//should build in functionality for that, but this works for now
|
||||||
int realDamage = damage - defender.drRoll();
|
int realDamage = damage - defender.drRoll();
|
||||||
|
|
||||||
|
if (attacker instanceof Hero
|
||||||
|
&& ((Hero) attacker).belongings.weapon instanceof MissileWeapon
|
||||||
|
&& ((Hero) attacker).subClass == HeroSubClass.SNIPER
|
||||||
|
&& !Dungeon.level.adjacent(attacker.pos, defender.pos)){
|
||||||
|
realDamage = damage;
|
||||||
|
}
|
||||||
|
|
||||||
if (realDamage <= 0) {
|
if (realDamage <= 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1566,7 +1566,7 @@ items.weapon.spiritbow.name=spirit bow
|
|||||||
items.weapon.spiritbow.ac_shoot=SHOOT
|
items.weapon.spiritbow.ac_shoot=SHOOT
|
||||||
items.weapon.spiritbow.prompt=Choose a target
|
items.weapon.spiritbow.prompt=Choose a target
|
||||||
items.weapon.spiritbow.stats=The bow cannot be directly upgraded, but will instead steadily grow stronger as you level up. At your current level, arrows shot from the bow will deal _%1$d-%2$d damage_ and require _%3$d strength_ to use properly.
|
items.weapon.spiritbow.stats=The bow cannot be directly upgraded, but will instead steadily grow stronger as you level up. At your current level, arrows shot from the bow will deal _%1$d-%2$d damage_ and require _%3$d strength_ to use properly.
|
||||||
items.weapon.spiritbow.desc=A bow made of out ancient magical wood. The bow's string and etchings glow with a pale blue light. When the string is pulled this bow will conjure a magical arrow which can be fired at an enemy.
|
items.weapon.spiritbow.desc=A bow made out of ancient magical wood. The bow's string and etchings glow with a pale blue light. When the string is pulled this bow will conjure a magical arrow which can be fired at an enemy.
|
||||||
|
|
||||||
items.weapon.weapon.identify=You are now familiar enough with your weapon to identify it.
|
items.weapon.weapon.identify=You are now familiar enough with your weapon to identify it.
|
||||||
items.weapon.weapon.too_heavy=Because of your inadequate strength this weapon will hinder your attack speed, accuracy, and ability to surprise attack.
|
items.weapon.weapon.too_heavy=Because of your inadequate strength this weapon will hinder your attack speed, accuracy, and ability to surprise attack.
|
||||||
|
|||||||
Reference in New Issue
Block a user