====== Scroll Of Lullaby Item - Code References ====== {{ rpd:images:scroll_of_lullaby_item.png|Scroll of Lullaby }} ===== Java Classes ===== * [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/watabou/pixeldungeon/items/scrolls/ScrollOfLullaby.java|ScrollOfLullaby.java]] - Main Scroll of Lullaby class implementation * [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/watabou/pixeldungeon/items/scrolls/Scroll.java|Scroll.java]] - Base Scroll class * [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/watabou/pixeldungeon/actors/buffs/Sleep.java|Sleep.java]] - Sleep buff applied by the scroll ===== Java Class Content ===== package com.watabou.pixeldungeon.items.scrolls; import com.nyrds.pixeldungeon.ml.R; import com.nyrds.platform.audio.Sample; import com.nyrds.platform.util.StringsManager; import com.watabou.pixeldungeon.Assets; import com.watabou.pixeldungeon.actors.Char; import com.watabou.pixeldungeon.actors.buffs.Buff; import com.watabou.pixeldungeon.actors.buffs.Sleep; import com.watabou.pixeldungeon.actors.mobs.Mob; import com.watabou.pixeldungeon.effects.Speck; import com.watabou.pixeldungeon.levels.Level; import com.watabou.pixeldungeon.utils.GLog; import com.watabou.pixeldungeon.utils.Utils; import org.jetbrains.annotations.NotNull; public class ScrollOfLullaby extends Scroll { @Override protected void doRead(@NotNull Char reader) { reader.getSprite().centerEmitter().start( Speck.factory( Speck.NOTE ), 0.3f, 5 ); Sample.INSTANCE.play( Assets.SND_LULLABY ); int count = 0; Mob affected = null; Level level = reader.level(); for (Mob mob : level.getCopyOfMobsArray()) { if (level.fieldOfView[mob.getPos()]) { Buff.affect( mob, Sleep.class ); if (mob.hasBuff( Sleep.class )) { affected = mob; count++; } } } switch (count) { case 0: GLog.i(StringsManager.getVar(R.string.ScrollOfLullaby_Info1)); break; case 1: GLog.i(Utils.format(R.string.ScrollOfLullaby_Info2, affected.getName())); break; default: GLog.i(StringsManager.getVar(R.string.ScrollOfLullaby_Info3)); } setKnown(); reader.spend( TIME_TO_READ ); } @Override public int price() { return isKnown() ? 50 * quantity() : super.price(); } } ===== JSON Configuration ===== * [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/assets/spritesDesc/scroll_of_lullaby.json|scroll_of_lullaby.json]] - Sprite configuration (if exists) ===== String Resources ===== Scroll of Lullaby When read aloud, this scroll will put all nearby enemies to sleep. The scroll emits a soothing melody, but no one falls asleep. %s falls asleep. All nearby enemies fall asleep. ===== Lua Scripts ===== This entity is implemented in Java, no Lua script exists ===== Usage in Code ===== * Registered in ItemFactory: [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/nyrds/pixeldungeon/items/common/ItemFactory.java#L268|ItemFactory.java#L268]] * Listed in Scroll.java for common scrolls: [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/watabou/pixeldungeon/items/scrolls/Scroll.java#L40|Scroll.java#L40]] * Succubus has 5% chance to drop: [[https://github.com/NYRDS/remixed-dungeon/blob/master/RemixedDungeon/src/main/java/com/watabou/pixeldungeon/actors/mobs/Succubus.java#L36|Succubus.java#L36]] ===== Effect ===== * Puts all visible enemies to sleep * Applies Sleep buff to affected mobs * Has sound effect: Assets.SND_LULLABY * Price: 50 gold when known ===== Related mr Entities ===== * [[mr:scroll_item|Scroll]] * [[mr:sleep_buff|Sleep Buff]] * [[mr:succubus_mob|Succubus]]