v1.1.0: reworked scroll of petrification, now scroll of dread
This commit is contained in:
parent
5a091dd781
commit
5b1e2bc3a9
|
@ -146,6 +146,9 @@ actors.buffs.degrade.desc=Powerful dark magic is sapping the strength that scrol
|
|||
actors.buffs.doom.name=Doomed
|
||||
actors.buffs.doom.desc=It's hard to keep going when it seems like the universe wants you dead.\n\nDoomed characters will receive double damage from all sources.\n\nDoom is permanent, its effects only end in death.
|
||||
|
||||
actors.buffs.dread.name=Dread
|
||||
actors.buffs.dread.desc=A terror so great that it will cause its target to flee the dungeon entirely!\n\nCreatures affected by dread will run from their opponent at high speed, and will disappear from the dungeon entirely once they are out of sight. Enemies that are disposed of this way will not award any items or experience. The shock of pain will lessen the duration of dread.\n\nTurns of dread remaining: %d.
|
||||
|
||||
actors.buffs.drowsy.name=Drowsy
|
||||
actors.buffs.drowsy.desc=A magical force is making it difficult to stay awake.\n\nThe hero can resist drowsiness by taking damage or by being at full health.\n\nAfter a few turns, the target will fall into a deep magical sleep.
|
||||
|
||||
|
|
|
@ -934,7 +934,7 @@ items.scrolls.scrollofterror.name=scroll of terror
|
|||
items.scrolls.scrollofterror.none=The scroll emits a brilliant flash of red light.
|
||||
items.scrolls.scrollofterror.one=The scroll emits a brilliant flash of red light and the %s flees!
|
||||
items.scrolls.scrollofterror.many=The scroll emits a brilliant flash of red light and the monsters flee!
|
||||
items.scrolls.scrollofterror.desc=A flash of red light will overwhelm all creatures in your field of view with terror, and they will turn and flee. Attacking a fleeing enemy will shorten the effect.
|
||||
items.scrolls.scrollofterror.desc=When read, this scroll will emit a flash of red light that will overwhelm all enemies in your field of view with terror, and they will turn and flee. Attacking a fleeing enemy will shorten the effect.
|
||||
|
||||
items.scrolls.scrolloftransmutation.name=scroll of transmutation
|
||||
items.scrolls.scrolloftransmutation.inv_title=Transmute an item
|
||||
|
@ -979,6 +979,9 @@ items.scrolls.exotic.scrollofdivination.nothing_left=There is nothing left to id
|
|||
items.scrolls.exotic.scrollofdivination.desc=This scroll will permanently identify four random item types. The types identified can be a potion's color, a scroll's rune, or a ring's gem. The items identified won't necessarily be ones you're carrying.
|
||||
items.scrolls.exotic.scrollofdivination$wnddivination.desc=Your scroll of divination has identified the following items:
|
||||
|
||||
items.scrolls.exotic.scrollofdread.name=scroll of dread
|
||||
items.scrolls.exotic.scrollofdread.desc=When read, this scroll will emit a flash of red light that will instill incredible terror in all enemies in your field of view. So great is this effect that they will rapidly try to flee from the entire dungeon, never to be seen again!\n\nJust like with terror, this effect can expire with time, or if the enemy is attacked.\n\nStrong-willed enemies, such as bosses, will be inflicted with regular terror instead.
|
||||
|
||||
items.scrolls.exotic.scrollofenchantment.name=scroll of enchantment
|
||||
items.scrolls.exotic.scrollofenchantment.inv_title=Enchant an item
|
||||
items.scrolls.exotic.scrollofenchantment.weapon=Select an enchantment to apply to your weapon.
|
||||
|
@ -996,9 +999,6 @@ items.scrolls.exotic.scrollofmysticalenergy.desc=The raw magical power bound up
|
|||
items.scrolls.exotic.scrollofpassage.name=scroll of passage
|
||||
items.scrolls.exotic.scrollofpassage.desc=The spell on this parchment instantly transports the reader to the nearest region entrance above them. Very handy for quickly getting to a shop.
|
||||
|
||||
items.scrolls.exotic.scrollofpetrification.name=scroll of petrification
|
||||
items.scrolls.exotic.scrollofpetrification.desc=A flash of red light will overwhelm all creatures in your field of view with such great terror that they will be frozen on the spot.
|
||||
|
||||
items.scrolls.exotic.scrollofpolymorph.name=scroll of polymorph
|
||||
items.scrolls.exotic.scrollofpolymorph.desc=This scroll contains powerful transmutation magic. When invoked, all enemies in the reader's sight will be transformed into magical sheep!\n\nThe transformation is permanent, eliminating all enemies affected. Powerful enemies will resist the effect though, and any items affected enemies were carrying are lost.
|
||||
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
@ -45,6 +45,10 @@ public class ShatteredPixelDungeon extends Game {
|
|||
public ShatteredPixelDungeon( PlatformSupport platform ) {
|
||||
super( sceneClass == null ? WelcomeScene.class : sceneClass, platform );
|
||||
|
||||
com.watabou.utils.Bundle.addAlias(
|
||||
com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ScrollOfDread.class,
|
||||
"com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ScrollOfPetrification" );
|
||||
|
||||
//v1.0.0
|
||||
com.watabou.utils.Bundle.addAlias(
|
||||
com.shatteredpixel.shatteredpixeldungeon.items.stones.StoneOfFear.class,
|
||||
|
|
|
@ -40,6 +40,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Corrosion;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Corruption;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Cripple;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Doom;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Dread;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FireImbue;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Frost;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FrostImbue;
|
||||
|
@ -507,6 +508,7 @@ public abstract class Char extends Actor {
|
|||
if ( buff( Stamina.class ) != null) speed *= 1.5f;
|
||||
if ( buff( Adrenaline.class ) != null) speed *= 2f;
|
||||
if ( buff( Haste.class ) != null) speed *= 3f;
|
||||
if ( buff( Dread.class ) != null) speed *= 2f;
|
||||
return speed;
|
||||
}
|
||||
|
||||
|
@ -564,6 +566,10 @@ public abstract class Char extends Actor {
|
|||
if (t != null){
|
||||
t.recover();
|
||||
}
|
||||
Dread d = buff(Dread.class);
|
||||
if (d != null){
|
||||
d.recover();
|
||||
}
|
||||
Charm c = buff(Charm.class);
|
||||
if (c != null){
|
||||
c.recover(src);
|
||||
|
@ -642,6 +648,9 @@ public abstract class Char extends Actor {
|
|||
if (ch.buff(Charm.class) != null && ch.buff(Charm.class).object == id()){
|
||||
ch.buff(Charm.class).detach();
|
||||
}
|
||||
if (ch.buff(Dread.class) != null && ch.buff(Dread.class).object == id()){
|
||||
ch.buff(Dread.class).detach();
|
||||
}
|
||||
if (ch.buff(Terror.class) != null && ch.buff(Terror.class).object == id()){
|
||||
ch.buff(Terror.class).detach();
|
||||
}
|
||||
|
@ -875,9 +884,9 @@ public abstract class Char extends Actor {
|
|||
|
||||
public enum Property{
|
||||
BOSS ( new HashSet<Class>( Arrays.asList(Grim.class, GrimTrap.class, ScrollOfRetribution.class, ScrollOfPsionicBlast.class)),
|
||||
new HashSet<Class>( Arrays.asList(Corruption.class) )),
|
||||
new HashSet<Class>( Arrays.asList(Corruption.class, Dread.class) )),
|
||||
MINIBOSS ( new HashSet<Class>(),
|
||||
new HashSet<Class>( Arrays.asList(Corruption.class) )),
|
||||
new HashSet<Class>( Arrays.asList(Corruption.class, Dread.class) )),
|
||||
UNDEAD,
|
||||
DEMONIC,
|
||||
INORGANIC ( new HashSet<Class>(),
|
||||
|
|
|
@ -0,0 +1,106 @@
|
|||
package com.shatteredpixel.shatteredpixeldungeon.actors.buffs;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.ui.BuffIndicator;
|
||||
import com.watabou.noosa.Image;
|
||||
import com.watabou.utils.Bundle;
|
||||
|
||||
public class Dread extends Buff {
|
||||
|
||||
protected int left = (int)DURATION;
|
||||
public int object = 0;
|
||||
|
||||
public static final float DURATION = 20f;
|
||||
|
||||
{
|
||||
type = buffType.NEGATIVE;
|
||||
announced = true;
|
||||
}
|
||||
|
||||
//dread overrides terror
|
||||
@Override
|
||||
public boolean attachTo(Char target) {
|
||||
if (super.attachTo(target)){
|
||||
Buff.detach( target, Terror.class );
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
immunities.add(Terror.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean act() {
|
||||
|
||||
if (!Dungeon.level.heroFOV[target.pos]
|
||||
&& Dungeon.level.distance(target.pos, Dungeon.hero.pos) >= 6) {
|
||||
Actor.remove( target );
|
||||
target.sprite.killAndErase();
|
||||
Dungeon.level.mobs.remove(target);
|
||||
} else {
|
||||
left--;
|
||||
if (left <= 0){
|
||||
detach();
|
||||
}
|
||||
}
|
||||
|
||||
spend(TICK);
|
||||
return true;
|
||||
}
|
||||
|
||||
private static final String LEFT = "left";
|
||||
private static final String OBJECT = "object";
|
||||
|
||||
@Override
|
||||
public void storeInBundle( Bundle bundle ) {
|
||||
super.storeInBundle(bundle);
|
||||
bundle.put(LEFT, left);
|
||||
bundle.put(OBJECT, object);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void restoreFromBundle( Bundle bundle ) {
|
||||
super.restoreFromBundle( bundle );
|
||||
object = bundle.getInt( OBJECT );
|
||||
left = bundle.getInt( LEFT );
|
||||
}
|
||||
|
||||
@Override
|
||||
public int icon() {
|
||||
return BuffIndicator.TERROR;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float iconFadePercent() {
|
||||
return Math.max(0, (DURATION - left) / DURATION);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tintIcon(Image icon) {
|
||||
icon.hardlight(1, 0, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return Messages.get(this, "name");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String desc() {
|
||||
return Messages.get(this, "desc", left);
|
||||
}
|
||||
|
||||
public void recover() {
|
||||
left -= 5;
|
||||
if (left <= 0){
|
||||
detach();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -29,6 +29,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Amok;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Blindness;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Charm;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Dread;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Haste;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Sleep;
|
||||
|
@ -164,6 +165,7 @@ public class SmokeBomb extends ArmorAbility {
|
|||
}
|
||||
|
||||
{
|
||||
immunities.add( Dread.class );
|
||||
immunities.add( Terror.class );
|
||||
immunities.add( Amok.class );
|
||||
immunities.add( Charm.class );
|
||||
|
|
|
@ -27,6 +27,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Corruption;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Dread;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Haste;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
|
@ -184,7 +185,9 @@ public class CrystalMimic extends Mimic {
|
|||
private class Fleeing extends Mob.Fleeing{
|
||||
@Override
|
||||
protected void nowhereToRun() {
|
||||
if (buff( Terror.class ) == null && buff( Corruption.class ) == null) {
|
||||
if (buff( Terror.class ) == null
|
||||
&& buff( Corruption.class ) == null
|
||||
&& buff( Dread.class ) == null) {
|
||||
if (enemySeen) {
|
||||
sprite.showStatus(CharSprite.NEGATIVE, Messages.get(Mob.class, "rage"));
|
||||
state = HUNTING;
|
||||
|
|
|
@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Amok;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Dread;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Paralysis;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Sleep;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror;
|
||||
|
@ -162,6 +163,7 @@ public class DemonSpawner extends Mob {
|
|||
immunities.add( Paralysis.class );
|
||||
immunities.add( Amok.class );
|
||||
immunities.add( Sleep.class );
|
||||
immunities.add( Dread.class );
|
||||
immunities.add( Terror.class );
|
||||
immunities.add( Vertigo.class );
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.ChampionEnemy;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Charm;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Corruption;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Dread;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Hunger;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Preparation;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Sleep;
|
||||
|
@ -188,7 +189,7 @@ public abstract class Mob extends Char {
|
|||
return true;
|
||||
}
|
||||
|
||||
if (buff(Terror.class) != null){
|
||||
if (buff(Terror.class) != null || buff(Dread.class) != null ){
|
||||
state = FLEEING;
|
||||
}
|
||||
|
||||
|
@ -204,6 +205,14 @@ public abstract class Mob extends Char {
|
|||
|
||||
protected Char chooseEnemy() {
|
||||
|
||||
Dread dread = buff( Dread.class );
|
||||
if (dread != null) {
|
||||
Char source = (Char)Actor.findById( dread.object );
|
||||
if (source != null) {
|
||||
return source;
|
||||
}
|
||||
}
|
||||
|
||||
Terror terror = buff( Terror.class );
|
||||
if (terror != null) {
|
||||
Char source = (Char)Actor.findById( terror.object );
|
||||
|
@ -340,7 +349,7 @@ public abstract class Mob extends Char {
|
|||
super.add( buff );
|
||||
if (buff instanceof Amok || buff instanceof Corruption) {
|
||||
state = HUNTING;
|
||||
} else if (buff instanceof Terror) {
|
||||
} else if (buff instanceof Terror || buff instanceof Dread) {
|
||||
state = FLEEING;
|
||||
} else if (buff instanceof Sleep) {
|
||||
state = SLEEPING;
|
||||
|
@ -351,7 +360,8 @@ public abstract class Mob extends Char {
|
|||
@Override
|
||||
public void remove( Buff buff ) {
|
||||
super.remove( buff );
|
||||
if (buff instanceof Terror) {
|
||||
if ((buff instanceof Terror && buff(Dread.class) == null)
|
||||
|| (buff instanceof Dread && buff(Terror.class) == null)) {
|
||||
if (enemySeen) {
|
||||
sprite.showStatus(CharSprite.NEGATIVE, Messages.get(this, "rage"));
|
||||
state = HUNTING;
|
||||
|
|
|
@ -30,6 +30,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Electricity;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Amok;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Dread;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Paralysis;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Sleep;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror;
|
||||
|
@ -212,6 +213,7 @@ public class Pylon extends Mob {
|
|||
immunities.add( Amok.class );
|
||||
immunities.add( Sleep.class );
|
||||
immunities.add( Terror.class );
|
||||
immunities.add( Dread.class );
|
||||
immunities.add( Vertigo.class );
|
||||
}
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.ToxicGas;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Amok;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Burning;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Dread;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Paralysis;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Sleep;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror;
|
||||
|
@ -128,6 +129,7 @@ public class RotHeart extends Mob {
|
|||
immunities.add( Sleep.class );
|
||||
immunities.add( ToxicGas.class );
|
||||
immunities.add( Terror.class );
|
||||
immunities.add( Dread.class );
|
||||
immunities.add( Vertigo.class );
|
||||
}
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Blob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.blobs.Web;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Dread;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Poison;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.food.MysteryMeat;
|
||||
|
@ -107,7 +108,7 @@ public class Spinner extends Mob {
|
|||
}
|
||||
}
|
||||
|
||||
if (state == FLEEING && buff( Terror.class ) == null &&
|
||||
if (state == FLEEING && buff( Terror.class ) == null && buff( Dread.class ) == null &&
|
||||
enemy != null && enemySeen && enemy.buff( Poison.class ) == null) {
|
||||
state = HUNTING;
|
||||
}
|
||||
|
@ -228,7 +229,7 @@ public class Spinner extends Mob {
|
|||
private class Fleeing extends Mob.Fleeing {
|
||||
@Override
|
||||
protected void nowhereToRun() {
|
||||
if (buff(Terror.class) == null) {
|
||||
if (buff(Terror.class) == null && buff(Dread.class) == null) {
|
||||
state = HUNTING;
|
||||
} else {
|
||||
super.nowhereToRun();
|
||||
|
|
|
@ -34,6 +34,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Blindness;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Burning;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Doom;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Dread;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
|
@ -333,6 +334,7 @@ public class Tengu extends Mob {
|
|||
|
||||
{
|
||||
immunities.add( Blindness.class );
|
||||
immunities.add( Dread.class );
|
||||
immunities.add( Terror.class );
|
||||
}
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ package com.shatteredpixel.shatteredpixeldungeon.actors.mobs;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Corruption;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Dread;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
||||
|
@ -196,7 +197,9 @@ public class Thief extends Mob {
|
|||
private class Fleeing extends Mob.Fleeing {
|
||||
@Override
|
||||
protected void nowhereToRun() {
|
||||
if (buff( Terror.class ) == null && buff( Corruption.class ) == null) {
|
||||
if (buff( Terror.class ) == null
|
||||
&& buff( Dread.class ) == null
|
||||
&& buff( Corruption.class ) == null) {
|
||||
if (enemySeen) {
|
||||
sprite.showStatus(CharSprite.NEGATIVE, Messages.get(Mob.class, "rage"));
|
||||
state = HUNTING;
|
||||
|
|
|
@ -28,6 +28,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.Actor;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Amok;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Charm;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Dread;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Frost;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Light;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.LockedFloor;
|
||||
|
@ -494,6 +495,7 @@ public class YogDzewa extends Mob {
|
|||
}
|
||||
|
||||
{
|
||||
immunities.add( Dread.class );
|
||||
immunities.add( Terror.class );
|
||||
immunities.add( Amok.class );
|
||||
immunities.add( Charm.class );
|
||||
|
|
|
@ -54,9 +54,6 @@ public abstract class ExoticScroll extends Scroll {
|
|||
regToExo.put(ScrollOfUpgrade.class, ScrollOfEnchantment.class);
|
||||
exoToReg.put(ScrollOfEnchantment.class, ScrollOfUpgrade.class);
|
||||
|
||||
regToExo.put(ScrollOfTerror.class, ScrollOfPetrification.class);
|
||||
exoToReg.put(ScrollOfPetrification.class, ScrollOfTerror.class);
|
||||
|
||||
regToExo.put(ScrollOfRemoveCurse.class, ScrollOfAntiMagic.class);
|
||||
exoToReg.put(ScrollOfAntiMagic.class, ScrollOfRemoveCurse.class);
|
||||
|
||||
|
@ -66,8 +63,8 @@ public abstract class ExoticScroll extends Scroll {
|
|||
regToExo.put(ScrollOfRage.class, ScrollOfConfusion.class);
|
||||
exoToReg.put(ScrollOfConfusion.class, ScrollOfRage.class);
|
||||
|
||||
regToExo.put(ScrollOfTerror.class, ScrollOfPetrification.class);
|
||||
exoToReg.put(ScrollOfPetrification.class, ScrollOfTerror.class);
|
||||
regToExo.put(ScrollOfTerror.class, ScrollOfDread.class);
|
||||
exoToReg.put(ScrollOfDread.class, ScrollOfTerror.class);
|
||||
|
||||
regToExo.put(ScrollOfRecharging.class, ScrollOfMysticalEnergy.class);
|
||||
exoToReg.put(ScrollOfMysticalEnergy.class, ScrollOfRecharging.class);
|
||||
|
|
|
@ -25,26 +25,31 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Paralysis;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Dread;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Terror;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Flare;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||
import com.watabou.noosa.audio.Sample;
|
||||
|
||||
public class ScrollOfPetrification extends ExoticScroll {
|
||||
public class ScrollOfDread extends ExoticScroll {
|
||||
|
||||
{
|
||||
icon = ItemSpriteSheet.Icons.SCROLL_PETRIF;
|
||||
icon = ItemSpriteSheet.Icons.SCROLL_DREAD;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doRead() {
|
||||
new Flare( 5, 32 ).color( 0xFF0000, true ).show( curUser.sprite, 2f );
|
||||
Sample.INSTANCE.play( Assets.Sounds.READ );
|
||||
|
||||
|
||||
for (Mob mob : Dungeon.level.mobs.toArray( new Mob[0] )) {
|
||||
if (mob.alignment != Char.Alignment.ALLY && Dungeon.level.heroFOV[mob.pos]) {
|
||||
Buff.affect( mob, Paralysis.class, Paralysis.DURATION );
|
||||
if (!mob.isImmune(Dread.class)){
|
||||
Buff.affect( mob, Dread.class ).object = curUser.id();
|
||||
} else {
|
||||
Buff.affect( mob, Terror.class, Terror.DURATION ).object = curUser.id();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -38,6 +38,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Corrosion;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Corruption;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Cripple;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Doom;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Dread;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Drowsy;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.FlavourBuff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Frost;
|
||||
|
@ -110,7 +111,8 @@ public class WandOfCorruption extends Wand {
|
|||
MAJOR_DEBUFFS.put(Slow.class, 2f);
|
||||
MAJOR_DEBUFFS.put(Hex.class, 2f);
|
||||
MAJOR_DEBUFFS.put(Paralysis.class, 1f);
|
||||
|
||||
|
||||
MAJOR_DEBUFFS.put(Dread.class, 0f);
|
||||
MAJOR_DEBUFFS.put(Charm.class, 0f);
|
||||
MAJOR_DEBUFFS.put(MagicalSleep.class, 0f);
|
||||
MAJOR_DEBUFFS.put(SoulMark.class, 0f);
|
||||
|
|
|
@ -778,7 +778,7 @@ public class ItemSpriteSheet {
|
|||
public static final int SCROLL_FORESIGHT= EXOTIC_SCROLLS+7;
|
||||
public static final int SCROLL_CONFUSION= EXOTIC_SCROLLS+8;
|
||||
public static final int SCROLL_PSIBLAST = EXOTIC_SCROLLS+9;
|
||||
public static final int SCROLL_PETRIF = EXOTIC_SCROLLS+10;
|
||||
public static final int SCROLL_DREAD = EXOTIC_SCROLLS+10;
|
||||
public static final int SCROLL_POLYMORPH= EXOTIC_SCROLLS+11;
|
||||
static {
|
||||
assignIconRect( SCROLL_ENCHANT, 7, 7 );
|
||||
|
@ -791,7 +791,7 @@ public class ItemSpriteSheet {
|
|||
assignIconRect( SCROLL_FORESIGHT, 7, 5 );
|
||||
assignIconRect( SCROLL_CONFUSION, 7, 7 );
|
||||
assignIconRect( SCROLL_PSIBLAST, 5, 6 );
|
||||
assignIconRect( SCROLL_PETRIF, 7, 5 );
|
||||
assignIconRect( SCROLL_DREAD, 5, 7 );
|
||||
assignIconRect( SCROLL_POLYMORPH, 7, 6 );
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user