v0.9.2: added visible buffs to several new talents
This commit is contained in:
parent
071cc236e9
commit
6433c6200f
|
@ -149,6 +149,9 @@ actors.buffs.drowsy.desc=A magical force is making it difficult to stay awake.\n
|
||||||
actors.buffs.earthimbue.name=Imbued with Earth
|
actors.buffs.earthimbue.name=Imbued with Earth
|
||||||
actors.buffs.earthimbue.desc=You are imbued with the power of earth!\n\nAll physical attacks will shift the earth under the enemy, crippling them for a short time.\n\nTurns of earth imbue remaining: %s.
|
actors.buffs.earthimbue.desc=You are imbued with the power of earth!\n\nAll physical attacks will shift the earth under the enemy, crippling them for a short time.\n\nTurns of earth imbue remaining: %s.
|
||||||
|
|
||||||
|
actors.buffs.enhancedrings.name=Enhanced Rings
|
||||||
|
actors.buffs.enhancedrings.desc=The Rogue's recently used artifact is empowering his rings. Granting them +1 upgrade for %d more turns.
|
||||||
|
|
||||||
actors.buffs.fireimbue.name=Imbued with Fire
|
actors.buffs.fireimbue.name=Imbued with Fire
|
||||||
actors.buffs.fireimbue.desc=You are imbued with the power of fire!\n\nAll physical attacks will have a chance to light enemies ablaze. Additionally, you are completely immune to the effects of fire.\n\nTurns of fire imbue remaining: %s.
|
actors.buffs.fireimbue.desc=You are imbued with the power of fire!\n\nAll physical attacks will have a chance to light enemies ablaze. Additionally, you are completely immune to the effects of fire.\n\nTurns of fire imbue remaining: %s.
|
||||||
|
|
||||||
|
@ -179,6 +182,9 @@ actors.buffs.hex.name=Hexed
|
||||||
actors.buffs.hex.heromsg=You have been hexed!
|
actors.buffs.hex.heromsg=You have been hexed!
|
||||||
actors.buffs.hex.desc=Dark magic which saps focus, making the target slightly disoriented.\n\nHexing reduces accuracy and evasion by 20%%, making the target less effective in combat.\n\nTurns of hex remaining: %s.
|
actors.buffs.hex.desc=Dark magic which saps focus, making the target slightly disoriented.\n\nHexing reduces accuracy and evasion by 20%%, making the target less effective in combat.\n\nTurns of hex remaining: %s.
|
||||||
|
|
||||||
|
actors.buffs.holdfast.name=Hold Fast
|
||||||
|
actors.buffs.holdfast.desc=The Warrior is holding his position, increasing his armor by 0-%d. This will last until he moves.
|
||||||
|
|
||||||
actors.buffs.hunger.hungry=Hungry
|
actors.buffs.hunger.hungry=Hungry
|
||||||
actors.buffs.hunger.starving=Starving
|
actors.buffs.hunger.starving=Starving
|
||||||
actors.buffs.hunger.onhungry=You are hungry.
|
actors.buffs.hunger.onhungry=You are hungry.
|
||||||
|
@ -265,10 +271,19 @@ actors.buffs.prismaticguard.desc=You are being guarded by a prismatic image whic
|
||||||
actors.buffs.recharging.name=Recharging
|
actors.buffs.recharging.name=Recharging
|
||||||
actors.buffs.recharging.desc=Energy is coursing through you, improving the rate that your wands and staffs charge.\n\nEach turn this buff will increase current charge by one quarter, in addition to regular recharge.\n\nTurns of recharging remaining: %s.
|
actors.buffs.recharging.desc=Energy is coursing through you, improving the rate that your wands and staffs charge.\n\nEach turn this buff will increase current charge by one quarter, in addition to regular recharge.\n\nTurns of recharging remaining: %s.
|
||||||
|
|
||||||
|
actors.buffs.revealedarea.name=Revealed Area
|
||||||
|
actors.buffs.revealedarea.desc=An area of the dungeon has been temporarily revealed to the hero, They will see it no matter where they are.\n\nTurns remaining: %s.
|
||||||
|
|
||||||
|
actors.buffs.revealedchar.name=Revealed
|
||||||
|
actors.buffs.revealedchar.desc=This character is revealed to the hero, They will be visible no matter where they are.\n\nTurns remaining: %s.
|
||||||
|
|
||||||
actors.buffs.roots.name=Rooted
|
actors.buffs.roots.name=Rooted
|
||||||
actors.buffs.roots.heromsg=You can't move!
|
actors.buffs.roots.heromsg=You can't move!
|
||||||
actors.buffs.roots.desc=Roots (magical or natural) grab at the feet, forcing them down to the ground.\n\nRoots lock a target in place, making it impossible for them to move, but other actions are not affected.\n\nTurns of root remaining: %s.
|
actors.buffs.roots.desc=Roots (magical or natural) grab at the feet, forcing them down to the ground.\n\nRoots lock a target in place, making it impossible for them to move, but other actions are not affected.\n\nTurns of root remaining: %s.
|
||||||
|
|
||||||
|
actors.buffs.scrollempower.name=Scroll Empower
|
||||||
|
actors.buffs.scrollempower.desc=The energy from the Mage's recently read scroll is empowering his wands! His next wand zap within %1$d turns will gain +%2$d levels.
|
||||||
|
|
||||||
actors.buffs.shadows.name=Shadowmelded
|
actors.buffs.shadows.name=Shadowmelded
|
||||||
actors.buffs.shadows.desc=You are blended into the shadows around you, granting you invisibility and slowing your metabolism.\n\nWhile you are invisible enemies are unable to attack or follow you. Most physical attacks and magical effects (such as scrolls and wands) will immediately cancel invisibility. Additionally, while shadowmelded, your rate of hunger is slowed.\n\nYou will remain shadowmelded until you leave the shadows or an enemy comes into contact with you.
|
actors.buffs.shadows.desc=You are blended into the shadows around you, granting you invisibility and slowing your metabolism.\n\nWhile you are invisible enemies are unable to attack or follow you. Most physical attacks and magical effects (such as scrolls and wands) will immediately cancel invisibility. Additionally, while shadowmelded, your rate of hunger is slowed.\n\nYou will remain shadowmelded until you leave the shadows or an enemy comes into contact with you.
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Amok;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Awareness;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Awareness;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Light;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Light;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MindVision;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MindVision;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.RevealedArea;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||||
|
@ -769,12 +770,12 @@ public class Dungeon {
|
||||||
GameScene.updateFog(h.pos, 2);
|
GameScene.updateFog(h.pos, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
Talent.SeerShotTracker seerShot = hero.buff(Talent.SeerShotTracker.class);
|
for (RevealedArea a : hero.buffs(RevealedArea.class)){
|
||||||
if (seerShot != null && seerShot.depth == Dungeon.depth){
|
if (Dungeon.depth != a.depth) continue;
|
||||||
BArray.or( level.visited, level.heroFOV, seerShot.pos - 1 - level.width(), 3, level.visited );
|
BArray.or( level.visited, level.heroFOV, a.pos - 1 - level.width(), 3, level.visited );
|
||||||
BArray.or( level.visited, level.heroFOV, seerShot.pos - 1, 3, level.visited );
|
BArray.or( level.visited, level.heroFOV, a.pos - 1, 3, level.visited );
|
||||||
BArray.or( level.visited, level.heroFOV, seerShot.pos - 1 + level.width(), 3, level.visited );
|
BArray.or( level.visited, level.heroFOV, a.pos - 1 + level.width(), 3, level.visited );
|
||||||
GameScene.updateFog(seerShot.pos, 2);
|
GameScene.updateFog(a.pos, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
GameScene.afterObserve();
|
GameScene.afterObserve();
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
/*
|
||||||
|
* Pixel Dungeon
|
||||||
|
* Copyright (C) 2012-2015 Oleg Dolya
|
||||||
|
*
|
||||||
|
* Shattered Pixel Dungeon
|
||||||
|
* Copyright (C) 2014-2021 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.buffs;
|
||||||
|
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
||||||
|
import com.watabou.noosa.Image;
|
||||||
|
|
||||||
|
public class EnhancedRings extends FlavourBuff{
|
||||||
|
|
||||||
|
{
|
||||||
|
type = Buff.buffType.POSITIVE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int icon() {
|
||||||
|
return BuffIndicator.UPGRADE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tintIcon(Image icon) {
|
||||||
|
icon.hardlight(0, 1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float iconFadePercent() {
|
||||||
|
float max = 5*Dungeon.hero.pointsInTalent(Talent.ENHANCED_RINGS);
|
||||||
|
return Math.max(0, (max-visualcooldown()) / max);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return Messages.get(this, "name");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String desc() {
|
||||||
|
return Messages.get(this, "desc", (int)visualcooldown());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,70 @@
|
||||||
|
/*
|
||||||
|
* Pixel Dungeon
|
||||||
|
* Copyright (C) 2012-2015 Oleg Dolya
|
||||||
|
*
|
||||||
|
* Shattered Pixel Dungeon
|
||||||
|
* Copyright (C) 2014-2021 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.buffs;
|
||||||
|
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
||||||
|
import com.watabou.noosa.Image;
|
||||||
|
|
||||||
|
public class HoldFast extends Buff {
|
||||||
|
|
||||||
|
{
|
||||||
|
type = buffType.POSITIVE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int pos = -1;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean act() {
|
||||||
|
if (pos == -1) pos = target.pos;
|
||||||
|
if (pos != target.pos) {
|
||||||
|
detach();
|
||||||
|
} else {
|
||||||
|
spend(TICK);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int icon() {
|
||||||
|
return BuffIndicator.ARMOR;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tintIcon(Image icon) {
|
||||||
|
icon.hardlight(1.9f, 2.4f, 3.25f);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return Messages.get(this, "name");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String desc() {
|
||||||
|
return Messages.get(this, "desc", 2*Dungeon.hero.pointsInTalent(Talent.HOLD_FAST));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,88 @@
|
||||||
|
/*
|
||||||
|
* Pixel Dungeon
|
||||||
|
* Copyright (C) 2012-2015 Oleg Dolya
|
||||||
|
*
|
||||||
|
* Shattered Pixel Dungeon
|
||||||
|
* Copyright (C) 2014-2021 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.buffs;
|
||||||
|
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
||||||
|
import com.watabou.noosa.Image;
|
||||||
|
import com.watabou.utils.Bundle;
|
||||||
|
|
||||||
|
public class RevealedArea extends FlavourBuff{
|
||||||
|
|
||||||
|
{
|
||||||
|
type = Buff.buffType.POSITIVE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int pos, depth;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void detach() {
|
||||||
|
GameScene.updateFog(pos, 2);
|
||||||
|
super.detach();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int icon() {
|
||||||
|
return BuffIndicator.MIND_VISION;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tintIcon(Image icon) {
|
||||||
|
icon.hardlight(0, 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float iconFadePercent() {
|
||||||
|
float max = 5*Dungeon.hero.pointsInTalent(Talent.SEER_SHOT);
|
||||||
|
return Math.max(0, (max-visualcooldown()) / max);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return Messages.get(this, "name");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String desc() {
|
||||||
|
return Messages.get(this, "desc", (int)visualcooldown());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final String DEPTH = "depth";
|
||||||
|
private static final String POS = "pos";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void storeInBundle(Bundle bundle) {
|
||||||
|
super.storeInBundle(bundle);
|
||||||
|
bundle.put(DEPTH, depth);
|
||||||
|
bundle.put(POS, pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void restoreFromBundle(Bundle bundle) {
|
||||||
|
super.restoreFromBundle(bundle);
|
||||||
|
depth = bundle.getInt(DEPTH);
|
||||||
|
pos = bundle.getInt(POS);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,68 @@
|
||||||
|
/*
|
||||||
|
* Pixel Dungeon
|
||||||
|
* Copyright (C) 2012-2015 Oleg Dolya
|
||||||
|
*
|
||||||
|
* Shattered Pixel Dungeon
|
||||||
|
* Copyright (C) 2014-2021 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.buffs;
|
||||||
|
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
||||||
|
import com.watabou.noosa.Image;
|
||||||
|
|
||||||
|
public class ScrollEmpower extends FlavourBuff {
|
||||||
|
|
||||||
|
{
|
||||||
|
type = buffType.POSITIVE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void detach() {
|
||||||
|
super.detach();
|
||||||
|
Item.updateQuickslot();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int icon() {
|
||||||
|
return BuffIndicator.UPGRADE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tintIcon(Image icon) {
|
||||||
|
icon.hardlight(1, 1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float iconFadePercent() {
|
||||||
|
return Math.max(0, (10-visualcooldown()) / 10f);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return Messages.get(this, "name");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String desc() {
|
||||||
|
return Messages.get(this, "desc", (int)visualcooldown(), Dungeon.hero.pointsInTalent(Talent.EMPOWERING_SCROLLS));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -43,6 +43,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Combo;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Drowsy;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Drowsy;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Foresight;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Foresight;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Fury;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Fury;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.HoldFast;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hunger;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hunger;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MindVision;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MindVision;
|
||||||
|
@ -471,7 +472,7 @@ public class Hero extends Char {
|
||||||
Blocking.BlockBuff block = buff(Blocking.BlockBuff.class);
|
Blocking.BlockBuff block = buff(Blocking.BlockBuff.class);
|
||||||
if (block != null) dr += block.blockingRoll();
|
if (block != null) dr += block.blockingRoll();
|
||||||
|
|
||||||
if (buff(Talent.HoldFastTracker.class) != null){
|
if (buff(HoldFast.class) != null){
|
||||||
dr += Random.NormalIntRange(0, 2*pointsInTalent(Talent.HOLD_FAST));
|
dr += Random.NormalIntRange(0, 2*pointsInTalent(Talent.HOLD_FAST));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1067,7 +1068,7 @@ public class Hero extends Char {
|
||||||
spendAndNext( TIME_TO_REST );
|
spendAndNext( TIME_TO_REST );
|
||||||
if (!fullRest) {
|
if (!fullRest) {
|
||||||
if (hasTalent(Talent.HOLD_FAST)){
|
if (hasTalent(Talent.HOLD_FAST)){
|
||||||
Buff.affect(this, Talent.HoldFastTracker.class);
|
Buff.affect(this, HoldFast.class);
|
||||||
}
|
}
|
||||||
if (sprite != null) {
|
if (sprite != null) {
|
||||||
sprite.showStatus(CharSprite.DEFAULT, Messages.get(this, "wait"));
|
sprite.showStatus(CharSprite.DEFAULT, Messages.get(this, "wait"));
|
||||||
|
|
|
@ -28,6 +28,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ArtifactRecharge;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ArtifactRecharge;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.CounterBuff;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.CounterBuff;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.EnhancedRings;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Haste;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Haste;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Recharging;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Recharging;
|
||||||
|
@ -112,40 +113,10 @@ public enum Talent {
|
||||||
|
|
||||||
public static class ImprovisedProjectileCooldown extends FlavourBuff{};
|
public static class ImprovisedProjectileCooldown extends FlavourBuff{};
|
||||||
public static class LethalMomentumTracker extends FlavourBuff{};
|
public static class LethalMomentumTracker extends FlavourBuff{};
|
||||||
public static class HoldFastTracker extends Buff{
|
|
||||||
public int pos = -1;
|
|
||||||
@Override
|
|
||||||
public boolean act() {
|
|
||||||
if (pos == -1) pos = target.pos;
|
|
||||||
if (pos != target.pos) {
|
|
||||||
detach();
|
|
||||||
} else {
|
|
||||||
spend(TICK);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static class WandPreservationCounter extends CounterBuff{};
|
public static class WandPreservationCounter extends CounterBuff{};
|
||||||
public static class EmpoweringScrollsTracker extends FlavourBuff{
|
|
||||||
@Override
|
|
||||||
public void detach() {
|
|
||||||
super.detach();
|
|
||||||
Item.updateQuickslot();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
public static class EmpoweredStrikeTracker extends FlavourBuff{};
|
public static class EmpoweredStrikeTracker extends FlavourBuff{};
|
||||||
public static class EnhancedRingsTracker extends FlavourBuff{};
|
|
||||||
public static class BountyHunterTracker extends FlavourBuff{};
|
public static class BountyHunterTracker extends FlavourBuff{};
|
||||||
public static class RejuvenatingStepsCooldown extends FlavourBuff{};
|
public static class RejuvenatingStepsCooldown extends FlavourBuff{};
|
||||||
public static class SeerShotTracker extends FlavourBuff{
|
|
||||||
public int depth, pos; //TODO bundle
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void detach() {
|
|
||||||
GameScene.updateFog(pos, 2);
|
|
||||||
super.detach();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static class SeerShotCooldown extends FlavourBuff{};
|
public static class SeerShotCooldown extends FlavourBuff{};
|
||||||
|
|
||||||
int icon;
|
int icon;
|
||||||
|
@ -338,7 +309,7 @@ public enum Talent {
|
||||||
|
|
||||||
public static void onArtifactUsed( Hero hero ){
|
public static void onArtifactUsed( Hero hero ){
|
||||||
if (hero.hasTalent(ENHANCED_RINGS)){
|
if (hero.hasTalent(ENHANCED_RINGS)){
|
||||||
Buff.affect(hero, EnhancedRingsTracker.class, 5f*hero.pointsInTalent(ENHANCED_RINGS));
|
Buff.prolong(hero, EnhancedRings.class, 5f*hero.pointsInTalent(ENHANCED_RINGS));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@ 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.buffs.EnhancedRings;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
|
||||||
|
@ -289,7 +290,7 @@ public class Ring extends KindofMisc {
|
||||||
@Override
|
@Override
|
||||||
public int buffedLvl() {
|
public int buffedLvl() {
|
||||||
int lvl = super.buffedLvl();
|
int lvl = super.buffedLvl();
|
||||||
if (Dungeon.hero.buff(Talent.EnhancedRingsTracker.class) != null){
|
if (Dungeon.hero.buff(EnhancedRings.class) != null){
|
||||||
lvl++;
|
lvl++;
|
||||||
}
|
}
|
||||||
return lvl;
|
return lvl;
|
||||||
|
|
|
@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Blindness;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicImmune;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicImmune;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ScrollEmpower;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
|
||||||
|
@ -186,7 +187,7 @@ public abstract class Scroll extends Item {
|
||||||
((HeroSprite)curUser.sprite).read();
|
((HeroSprite)curUser.sprite).read();
|
||||||
|
|
||||||
if (curUser.hasTalent(Talent.EMPOWERING_SCROLLS)){
|
if (curUser.hasTalent(Talent.EMPOWERING_SCROLLS)){
|
||||||
Buff.affect(curUser, Talent.EmpoweringScrollsTracker.class, 10f);
|
Buff.affect(curUser, ScrollEmpower.class, 10f);
|
||||||
updateQuickslot();
|
updateQuickslot();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicImmune;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicImmune;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Recharging;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Recharging;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ScrollEmpower;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.SoulMark;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.SoulMark;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
|
||||||
|
@ -305,7 +306,7 @@ public abstract class Wand extends Item {
|
||||||
int lvl = super.buffedLvl();
|
int lvl = super.buffedLvl();
|
||||||
|
|
||||||
if (charger != null && charger.target != null) {
|
if (charger != null && charger.target != null) {
|
||||||
if (charger.target.buff(Talent.EmpoweringScrollsTracker.class) != null){
|
if (charger.target.buff(ScrollEmpower.class) != null){
|
||||||
lvl += Dungeon.hero.pointsInTalent(Talent.EMPOWERING_SCROLLS);
|
lvl += Dungeon.hero.pointsInTalent(Talent.EMPOWERING_SCROLLS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -361,9 +362,9 @@ public abstract class Wand extends Item {
|
||||||
|
|
||||||
curCharges -= cursed ? 1 : chargesPerCast();
|
curCharges -= cursed ? 1 : chargesPerCast();
|
||||||
|
|
||||||
Talent.EmpoweringScrollsTracker tracker = curUser.buff(Talent.EmpoweringScrollsTracker.class);
|
ScrollEmpower empower = curUser.buff(ScrollEmpower.class);
|
||||||
if (tracker != null){
|
if (empower != null){
|
||||||
tracker.detach();
|
empower.detach();
|
||||||
}
|
}
|
||||||
|
|
||||||
WandOfMagicMissile.MagicCharge buff = curUser.buff(WandOfMagicMissile.MagicCharge.class);
|
WandOfMagicMissile.MagicCharge buff = curUser.buff(WandOfMagicMissile.MagicCharge.class);
|
||||||
|
|
|
@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||||
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.buffs.RevealedArea;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Splash;
|
import com.shatteredpixel.shatteredpixeldungeon.effects.Splash;
|
||||||
|
@ -344,9 +345,9 @@ public class SpiritBow extends Weapon {
|
||||||
&& user.buff(Talent.SeerShotCooldown.class) == null){
|
&& user.buff(Talent.SeerShotCooldown.class) == null){
|
||||||
int shotPos = throwPos(user, dst);
|
int shotPos = throwPos(user, dst);
|
||||||
if (Actor.findChar(shotPos) == null) {
|
if (Actor.findChar(shotPos) == null) {
|
||||||
Talent.SeerShotTracker seerShot = Buff.affect(user, Talent.SeerShotTracker.class, 5 * user.pointsInTalent(Talent.SEER_SHOT));
|
RevealedArea a = Buff.affect(user, RevealedArea.class, 5 * user.pointsInTalent(Talent.SEER_SHOT));
|
||||||
seerShot.depth = Dungeon.depth;
|
a.depth = Dungeon.depth;
|
||||||
seerShot.pos = shotPos;
|
a.pos = shotPos;
|
||||||
Buff.affect(user, Talent.SeerShotCooldown.class, 20f);
|
Buff.affect(user, Talent.SeerShotCooldown.class, 20f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ChampionEnemy;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicalSight;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MagicalSight;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MindVision;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.MindVision;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.RevealedArea;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Shadows;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Shadows;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass;
|
||||||
|
@ -1191,10 +1192,10 @@ public abstract class Level implements Bundlable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Talent.SeerShotTracker seerShot = c.buff(Talent.SeerShotTracker.class);
|
for (RevealedArea a : c.buffs(RevealedArea.class)){
|
||||||
if (seerShot != null && seerShot.depth == Dungeon.depth){
|
if (Dungeon.depth != a.depth) continue;
|
||||||
for (int i : PathFinder.NEIGHBOURS9)
|
for (int i : PathFinder.NEIGHBOURS9)
|
||||||
fieldOfView[seerShot.pos+i] = true;
|
fieldOfView[a.pos+i] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user