diff --git a/assets/ascetic.png b/assets/ascetic.png new file mode 100644 index 00000000..2e5b6e21 Binary files /dev/null and b/assets/ascetic.png differ diff --git a/assets/avatars.png b/assets/avatars.png index 9b1e8c8a..37f454ca 100644 Binary files a/assets/avatars.png and b/assets/avatars.png differ diff --git a/assets/bluedragon.png b/assets/bluedragon.png new file mode 100644 index 00000000..d0f025a5 Binary files /dev/null and b/assets/bluedragon.png differ diff --git a/assets/buffs.png b/assets/buffs.png index 4c8e79a5..e53fada6 100644 Binary files a/assets/buffs.png and b/assets/buffs.png differ diff --git a/assets/bugdragon.png b/assets/bugdragon.png new file mode 100644 index 00000000..6831cd95 Binary files /dev/null and b/assets/bugdragon.png differ diff --git a/assets/follower.png b/assets/follower.png index 50d9e7f3..c181f5f4 100644 Binary files a/assets/follower.png and b/assets/follower.png differ diff --git a/assets/golddragon.png b/assets/golddragon.png new file mode 100644 index 00000000..2d4da138 Binary files /dev/null and b/assets/golddragon.png differ diff --git a/assets/greendragon.png b/assets/greendragon.png new file mode 100644 index 00000000..fb9a784d Binary files /dev/null and b/assets/greendragon.png differ diff --git a/assets/icebug.png b/assets/icebug.png new file mode 100644 index 00000000..5b228e70 Binary files /dev/null and b/assets/icebug.png differ diff --git a/assets/items.png b/assets/items.png index a03cf940..cc69f7c0 100644 Binary files a/assets/items.png and b/assets/items.png differ diff --git a/assets/large_buffs.png b/assets/large_buffs.png index 02e283bc..0b2f0e3a 100644 Binary files a/assets/large_buffs.png and b/assets/large_buffs.png differ diff --git a/assets/lightdragon.png b/assets/lightdragon.png new file mode 100644 index 00000000..0638cc4f Binary files /dev/null and b/assets/lightdragon.png differ diff --git a/assets/mage.png b/assets/mage.png index 8424cce4..3197f81f 100644 Binary files a/assets/mage.png and b/assets/mage.png differ diff --git a/assets/newdargon01.png b/assets/newdragon01.png similarity index 100% rename from assets/newdargon01.png rename to assets/newdragon01.png diff --git a/assets/newdargon02.png b/assets/newdragon02.png similarity index 100% rename from assets/newdargon02.png rename to assets/newdragon02.png diff --git a/assets/newmech.png b/assets/newmech.png deleted file mode 100644 index f50cecc6..00000000 Binary files a/assets/newmech.png and /dev/null differ diff --git a/assets/oldpetreddragon.png b/assets/oldpetreddragon.png deleted file mode 100644 index cbe7f948..00000000 Binary files a/assets/oldpetreddragon.png and /dev/null differ diff --git a/assets/performer.png b/assets/performer.png index 72129ba6..42c1652e 100644 Binary files a/assets/performer.png and b/assets/performer.png differ diff --git a/assets/petreddragon.png b/assets/petreddragon.png deleted file mode 100644 index 8dbaede3..00000000 Binary files a/assets/petreddragon.png and /dev/null differ diff --git a/assets/ranger.png b/assets/ranger.png index 81c135d6..99f1568e 100644 Binary files a/assets/ranger.png and b/assets/ranger.png differ diff --git a/assets/reddragon.png b/assets/reddragon.png new file mode 100644 index 00000000..0b3f966e Binary files /dev/null and b/assets/reddragon.png differ diff --git a/assets/rogue.png b/assets/rogue.png index 6f79d074..14493822 100644 Binary files a/assets/rogue.png and b/assets/rogue.png differ diff --git a/assets/shadowdragon.png b/assets/shadowdragon.png new file mode 100644 index 00000000..83c299d0 Binary files /dev/null and b/assets/shadowdragon.png differ diff --git a/assets/soldier.png b/assets/soldier.png index 90af2302..d8e4b22a 100644 Binary files a/assets/soldier.png and b/assets/soldier.png differ diff --git a/assets/tiles0.png b/assets/tiles0.png index 4fa30acd..c240aee0 100644 Binary files a/assets/tiles0.png and b/assets/tiles0.png differ diff --git a/assets/tiles1.png b/assets/tiles1.png index 3cbb9a29..d7a6b418 100644 Binary files a/assets/tiles1.png and b/assets/tiles1.png differ diff --git a/assets/tiles2.png b/assets/tiles2.png index 0ed76bdd..05927be7 100644 Binary files a/assets/tiles2.png and b/assets/tiles2.png differ diff --git a/assets/tiles3.png b/assets/tiles3.png index c37c2299..6d2f9cd3 100644 Binary files a/assets/tiles3.png and b/assets/tiles3.png differ diff --git a/assets/tiles4.png b/assets/tiles4.png index 0e3588c3..7e2739c8 100644 Binary files a/assets/tiles4.png and b/assets/tiles4.png differ diff --git a/assets/tiles_town.png b/assets/tiles_town.png index aae80f1a..3997aad9 100644 Binary files a/assets/tiles_town.png and b/assets/tiles_town.png differ diff --git a/assets/violetdragon.png b/assets/violetdragon.png new file mode 100644 index 00000000..0bb3424b Binary files /dev/null and b/assets/violetdragon.png differ diff --git a/assets/warrior.png b/assets/warrior.png index 9134e7c6..6bec1af7 100644 Binary files a/assets/warrior.png and b/assets/warrior.png differ diff --git a/java/com/hmdzl/spspd/Assets.java b/java/com/hmdzl/spspd/Assets.java index 41857796..84901889 100644 --- a/java/com/hmdzl/spspd/Assets.java +++ b/java/com/hmdzl/spspd/Assets.java @@ -367,11 +367,22 @@ public class Assets { public static final String ATV9 = "atv9.png"; - public static final String NEW_DARGON_01 = "newdargon01.png"; - public static final String NEW_DARGON_02 = "newdargon02.png"; + public static final String NEW_DRAGON_01 = "newdragon01.png"; + public static final String NEW_DRAGON_02 = "newdragon02.png"; public static final String PIG_PET = "pig.png"; public static final String DATURA = "datura.png"; + public static final String REDDRAGON = "reddragon.png"; + public static final String BLUEDRAGON = "bluedragon.png"; + public static final String GREENDRAGON = "greendragon.png"; + public static final String VIOLETDRAGON = "violetdragon.png"; + public static final String SHADOWDRAGON = "shadowdragon.png"; + public static final String LIGHTDRAGON = "lightdragon.png"; + public static final String GOLDDRAGON = "golddragon.png"; + public static final String BUGDRAGON = "bugdragon.png"; + + public static final String ICEBUG = "icebug.png"; + } diff --git a/java/com/hmdzl/spspd/Badges.java b/java/com/hmdzl/spspd/Badges.java index 31a02b62..0642afc9 100644 --- a/java/com/hmdzl/spspd/Badges.java +++ b/java/com/hmdzl/spspd/Badges.java @@ -46,7 +46,7 @@ import com.watabou.noosa.Game; import com.watabou.utils.Bundle; import com.watabou.utils.Callback; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class Badges { @@ -127,7 +127,7 @@ RARE_ALBINO, RARE_BANDIT, RARE_SHIELDED, RARE_SENIOR, RARE_ACIDIC, RARE(37, true public int image; - private Badge(int image) { + Badge(int image) { this(image, false); } diff --git a/java/com/hmdzl/spspd/Chrome.java b/java/com/hmdzl/spspd/Chrome.java index 4099c50b..0fb65327 100644 --- a/java/com/hmdzl/spspd/Chrome.java +++ b/java/com/hmdzl/spspd/Chrome.java @@ -23,9 +23,9 @@ public class Chrome { public enum Type { TOAST, TOAST_TR, WINDOW, BUTTON, TAG, GEM, SCROLL, TAB_SET, TAB_SELECTED, TAB_UNSELECTED - }; + } - public static NinePatch get(Type type) { + public static NinePatch get(Type type) { String Asset = Assets.CHROME; switch (type) { case WINDOW: diff --git a/java/com/hmdzl/spspd/Dungeon.java b/java/com/hmdzl/spspd/Dungeon.java index 2f399107..f2f605d1 100644 --- a/java/com/hmdzl/spspd/Dungeon.java +++ b/java/com/hmdzl/spspd/Dungeon.java @@ -17,27 +17,13 @@ */ package com.hmdzl.spspd; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.HashSet; - -import com.hmdzl.spspd.actors.buffs.actbuff.NmImbue; -import com.hmdzl.spspd.items.artifacts.DriedRose; -import com.hmdzl.spspd.levels.ChaosLevel; -import com.hmdzl.spspd.levels.PotLevel; -import com.hmdzl.spspd.levels.ShadowEaterLevel; -import com.hmdzl.spspd.levels.SokobanSPLevel; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Amok; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Dewcharge; import com.hmdzl.spspd.actors.buffs.Light; +import com.hmdzl.spspd.actors.buffs.actbuff.NmImbue; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.hero.HeroClass; import com.hmdzl.spspd.actors.mobs.npcs.Blacksmith; @@ -47,53 +33,57 @@ import com.hmdzl.spspd.items.Ankh; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.Item; +import com.hmdzl.spspd.items.artifacts.DriedRose; import com.hmdzl.spspd.items.potions.Potion; import com.hmdzl.spspd.items.rings.Ring; import com.hmdzl.spspd.items.scrolls.Scroll; import com.hmdzl.spspd.levels.BattleLevel; +import com.hmdzl.spspd.levels.BossRushLevel; import com.hmdzl.spspd.levels.CatacombLevel; import com.hmdzl.spspd.levels.CavesBossLevel; import com.hmdzl.spspd.levels.CavesLevel; +import com.hmdzl.spspd.levels.ChaosLevel; import com.hmdzl.spspd.levels.ChasmLevel; import com.hmdzl.spspd.levels.CityBossLevel; import com.hmdzl.spspd.levels.CityLevel; import com.hmdzl.spspd.levels.CrabBossLevel; import com.hmdzl.spspd.levels.DeadEndLevel; -import com.hmdzl.spspd.levels.FieldLevel; import com.hmdzl.spspd.levels.FieldBossLevel; +import com.hmdzl.spspd.levels.FieldLevel; import com.hmdzl.spspd.levels.FishingLevel; import com.hmdzl.spspd.levels.FortressLevel; import com.hmdzl.spspd.levels.HallsBossLevel; import com.hmdzl.spspd.levels.HallsLevel; import com.hmdzl.spspd.levels.InfestBossLevel; import com.hmdzl.spspd.levels.LastLevel; -import com.hmdzl.spspd.levels.LastShopLevel; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.MinesBossLevel; +import com.hmdzl.spspd.levels.PotLevel; import com.hmdzl.spspd.levels.PrisonBossLevel; import com.hmdzl.spspd.levels.PrisonLevel; import com.hmdzl.spspd.levels.Room; import com.hmdzl.spspd.levels.SafeLevel; import com.hmdzl.spspd.levels.SewerBossLevel; import com.hmdzl.spspd.levels.SewerLevel; +import com.hmdzl.spspd.levels.ShadowEaterLevel; import com.hmdzl.spspd.levels.SkeletonBossLevel; import com.hmdzl.spspd.levels.SokobanCastle; import com.hmdzl.spspd.levels.SokobanIntroLevel; import com.hmdzl.spspd.levels.SokobanPuzzlesLevel; +import com.hmdzl.spspd.levels.SokobanSPLevel; import com.hmdzl.spspd.levels.SokobanTeleportLevel; import com.hmdzl.spspd.levels.TenguDenLevel; import com.hmdzl.spspd.levels.ThiefBossLevel; import com.hmdzl.spspd.levels.ThiefCatchLevel; -import com.hmdzl.spspd.levels.BossRushLevel; import com.hmdzl.spspd.levels.TownLevel; import com.hmdzl.spspd.levels.VaultLevel; import com.hmdzl.spspd.levels.ZotBossLevel; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.scenes.StartScene; import com.hmdzl.spspd.ui.QuickSlotButton; import com.hmdzl.spspd.utils.BArray; import com.hmdzl.spspd.utils.GLog; - import com.hmdzl.spspd.windows.WndResurrect; import com.watabou.noosa.Game; import com.watabou.utils.Bundlable; @@ -102,12 +92,20 @@ import com.watabou.utils.Random; import com.watabou.utils.SparseArray; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Calendar; +import java.util.HashSet; + public class Dungeon { // enum of items which have limited spawns, records how many have spawned // could all be their own separate numbers, but this allows iterating, much // nicer for bundling/initializing. - public static enum limitedDrops { + public enum limitedDrops { // limited world drops strengthPotions, @@ -700,7 +698,7 @@ public static Level newJournalLevel(int page, Boolean first){ level = Dungeon.newLevel(); } - level.first = first; + Level.first = first; level.create(); Statistics.qualifiedForNoKilling = !bossLevel(); @@ -774,7 +772,7 @@ public static Level newChallengeLevel(int list, Boolean first){ level = Dungeon.newLevel(); } - level.first = first; + Level.first = first; level.create(); Statistics.qualifiedForNoKilling = !bossLevel(); @@ -795,18 +793,7 @@ public static Level newLevel() { if (depth > Statistics.deepestFloor && depth < 27) { Statistics.deepestFloor = depth; - if (Statistics.qualifiedForNoKilling) { - Statistics.completedWithNoKilling = true; - } else { - Statistics.completedWithNoKilling = false; - } - } - - if (depth==6){ - Statistics.sewerKills=Statistics.enemiesSlain; - } - if (depth==10){ - Statistics.prisonKills=Statistics.enemiesSlain-Statistics.sewerKills; + Statistics.completedWithNoKilling = Statistics.qualifiedForNoKilling; } Arrays.fill(visible, false); @@ -816,28 +803,28 @@ public static Level newLevel() { case 1: //level = new PrisonBossLevel(); //level = new SewerLevel(); - //hero.HT=999; - //hero.HP=hero.HT; + //hero.TRUE_HT=999; + //hero.HP=hero.TRUE_HT; //break; case 2: //level = new HallsLevel(); - //hero.HT=999; - //hero.HP=hero.HT; + //hero.TRUE_HT=999; + //hero.HP=hero.TRUE_HT; //break; case 3: case 4: //level = new CavesLevel(); level = new SewerLevel(); - //hero.HT=999; - //hero.HP=hero.HT; + //hero.TRUE_HT=999; + //hero.HP=hero.TRUE_HT; break; case 5: level = new SewerBossLevel(); break; case 6: //level = new HallsLevel(); - //hero.HT=999; - //hero.HP=hero.HT; + //hero.TRUE_HT=999; + //hero.HP=hero.TRUE_HT; //break; case 7: case 8: @@ -898,16 +885,15 @@ public static Level newLevel() { level.create(); Statistics.qualifiedForNoKilling = !bossLevel(); - if (depth<26 && !Dungeon.bossLevel(depth) && (Dungeon.dewDraw || Dungeon.dewWater)){ - Buff.prolong(Dungeon.hero, Dewcharge.class, Dewcharge.DURATION+(Math.max(Statistics.prevfloormoves,1))); + if (depth<25 && !Dungeon.bossLevel(depth) && (Dungeon.dewDraw || Dungeon.dewWater)){ + Buff.affect(Dungeon.hero, Dewcharge.class).level( (int)(Dewcharge.DURATION+(Math.max(Statistics.prevfloormoves,1))) ); //GLog.p("You feel the dungeon charge with dew!"); } NmImbue nm = Dungeon.hero.buff(NmImbue.class); - if (Dungeon.hero.heroClass == HeroClass.SOLDIER && Dungeon.skins == 4 && nm == null ){ + if (Dungeon.hero.heroClass == HeroClass.SOLDIER && Dungeon.skins == 4 && nm == null ){ Buff.affect(Dungeon.hero,NmImbue.class); - } - + } /*if(Dungeon.hero.heroClass == HeroClass.PERFORMER){ //Buff.prolong(Dungeon.hero,Rhythm.class,50); Buff.affect(Dungeon.hero,GlassShield.class).turns(3); @@ -944,7 +930,7 @@ public static boolean bossLevel(int depth) { } public static boolean notClearableLevel(int depth) { - return depth == 1 || depth ==2 ||depth == 5 || depth == 10 || depth == 15 || depth == 20 + return depth == 1 ||depth == 5 || depth == 10 || depth == 15 || depth == 20 || depth == 25 || depth>25; } @@ -963,7 +949,7 @@ public static boolean waterLevel(int depth) { public static boolean sokobanLevel(int depth) { return depth == 51 || depth == 52 || depth == 53 || depth == 54; } - + //public static boolean dropLevel(int depth) { //return depth == 40; //} @@ -973,7 +959,7 @@ public static boolean sokobanLevel(int depth) { public static void switchLevel(final Level level, int pos) { Dungeon.level = level; - DriedRose.restoreGhostHero( level, pos ); + //DriedRose.restoreGhostHero( level, pos ); Actor.init(); Actor respawner = level.respawner(); @@ -1157,7 +1143,7 @@ private static String depthFile(HeroClass cl) { } } - public static void saveGame(String fileName) throws IOException { + public static void saveGame(String fileName) { try { Bundle bundle = new Bundle(); @@ -1280,16 +1266,15 @@ public static void saveAll() throws IOException { } } - public static void loadGame(HeroClass cl) throws IOException { + public static void loadGame(HeroClass cl) { loadGame(gameFile(cl), true); } - public static void loadGame(String fileName) throws IOException { + public static void loadGame(String fileName) { loadGame(fileName, false); } - public static void loadGame(String fileName, boolean fullLoad) - throws IOException { + public static void loadGame(String fileName, boolean fullLoad) { try{ Bundle bundle = gameBundle(fileName); @@ -1462,7 +1447,7 @@ public static void preview(GamesInProgress.Info info, Bundle bundle) { Hero.preview(info, bundle.getBundle(HERO)); } - public static void fail( String desc ) { + public static void fail(String desc) { resultDescription = desc; if (hero.belongings.getItem(Ankh.class) == null) { Rankings.INSTANCE.submit(false); diff --git a/java/com/hmdzl/spspd/DungeonTilemap.java b/java/com/hmdzl/spspd/DungeonTilemap.java index 30c85e3e..728c7554 100644 --- a/java/com/hmdzl/spspd/DungeonTilemap.java +++ b/java/com/hmdzl/spspd/DungeonTilemap.java @@ -67,8 +67,8 @@ public void discover(int pos, int oldValue) { protected void onComplete() { tile.killAndErase(); killAndErase(); - }; - }); + } + }); } public static PointF tileToWorld(int pos) { @@ -88,8 +88,8 @@ public static Image tile(int index) { public static PointF raisedTileCenterToWorld( int pos ) { return new PointF( - (pos % Dungeon.level.WIDTH + 0.5f) * SIZE, - (pos / Dungeon.level.WIDTH + 0.1f) * SIZE ); + (pos % Level.WIDTH + 0.5f) * SIZE, + (pos / Level.WIDTH + 0.1f) * SIZE ); } @Override diff --git a/java/com/hmdzl/spspd/Journal.java b/java/com/hmdzl/spspd/Journal.java index 385b26d7..35a372ad 100644 --- a/java/com/hmdzl/spspd/Journal.java +++ b/java/com/hmdzl/spspd/Journal.java @@ -19,7 +19,7 @@ import java.util.ArrayList; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Bundlable; import com.watabou.utils.Bundle; @@ -43,9 +43,9 @@ public enum Feature { public String desc() { return Messages.get(this, name()); } - }; + } - public static class Record implements Comparable, Bundlable { + public static class Record implements Comparable, Bundlable { private static final String FEATURE = "feature"; private static final String DEPTH = "depth"; diff --git a/java/com/hmdzl/spspd/Rankings.java b/java/com/hmdzl/spspd/Rankings.java index c6e82ae3..f4acab7c 100644 --- a/java/com/hmdzl/spspd/Rankings.java +++ b/java/com/hmdzl/spspd/Rankings.java @@ -25,12 +25,20 @@ import java.util.Comparator; import com.hmdzl.spspd.actors.hero.HeroClass; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.Game; import com.watabou.utils.Bundlable; import com.watabou.utils.Bundle; import com.watabou.utils.SystemTime; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.Locale; + public enum Rankings { INSTANCE; @@ -45,7 +53,7 @@ public enum Rankings { public int totalNumber; public int wonNumber; - public void submit(boolean win) { + public void submit(boolean win){ load(); @@ -60,14 +68,11 @@ public void submit(boolean win) { rec.score = score(win); String gameFile = Messages.format( DETAILS_FILE, SystemTime.now ); - try { - Dungeon.saveGame(gameFile); - rec.gameFile = gameFile; - } catch (IOException e) { - rec.gameFile = ""; - } - records.add(rec); + Dungeon.saveGame(gameFile); + rec.gameFile = gameFile; + + records.add(rec); Collections.sort(records, scoreComparator); @@ -102,7 +107,7 @@ public void submit(boolean win) { private int score(boolean win) { return (Statistics.goldCollected + Dungeon.hero.lvl - * (win ? 26 : Dungeon.depth) * 100) + * (win ? 100 : Dungeon.depth) * 100) * (win ? 2 : 1); } diff --git a/java/com/hmdzl/spspd/ResultDescriptions.java b/java/com/hmdzl/spspd/ResultDescriptions.java index 9de71acb..5308cfb1 100644 --- a/java/com/hmdzl/spspd/ResultDescriptions.java +++ b/java/com/hmdzl/spspd/ResultDescriptions.java @@ -43,6 +43,8 @@ public class ResultDescriptions { public static final String FALL = "FALL"; public static final String COUNTDOWN = "COUNTDOWN"; public static final String CHEAT = "CHEAT"; + + public static final String LOSE = "LOSE"; public static final String WIN = "WIN"; public static final String WIN2 = "WIN2"; diff --git a/java/com/hmdzl/spspd/Skins.java b/java/com/hmdzl/spspd/Skins.java index 2de5daff..6c523a59 100644 --- a/java/com/hmdzl/spspd/Skins.java +++ b/java/com/hmdzl/spspd/Skins.java @@ -25,6 +25,8 @@ public class Skins { public static final int THIRD = 3; public static final int FOURTH = 4; public static final int FIFTH = 5; + public static final int SIXTH = 6; + public static final String[] NAME_IDS = { "normal", @@ -32,10 +34,11 @@ public class Skins { "second", "third", "fourth", - "fifth" + "fifth", + "sixth" }; public static final int[] MASKS = { - NORMAL, FIRST,SECOND,THIRD,FOURTH,FIFTH }; + NORMAL, FIRST,SECOND,THIRD,FOURTH,FIFTH,SIXTH }; } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/Statistics.java b/java/com/hmdzl/spspd/Statistics.java index e76f66a3..d874e504 100644 --- a/java/com/hmdzl/spspd/Statistics.java +++ b/java/com/hmdzl/spspd/Statistics.java @@ -23,6 +23,29 @@ public class Statistics { + private static final String GOLD = "score"; + private static final String DEEPEST = "maxDepth"; + private static final String REALDEEPEST = "maxDepthReal"; + private static final String SLAIN = "enemiesSlain"; + private static final String FOOD = "foodEaten"; + private static final String EGG = "eggBreak"; + private static final String ALCHEMY = "potionsCooked"; + private static final String PIRANHAS = "priranhas"; + private static final String WATERS = "waters"; + private static final String ARCHERS = "archers"; + private static final String SKELETONS = "skeletons"; + private static final String ASSASSINS = "assassins"; + private static final String APIRANHAS = "apiranhas"; + private static final String THIEVES = "thieves"; + private static final String NIGHT = "nightHunt"; + private static final String ANKHS = "ankhsUsed"; + private static final String DURATION = "duration"; + private static final String FLOORMOVES = "floormoves"; + private static final String PREVFLOORMOVES = "prevfloormoves"; + private static final String MOVES = "moves"; + private static final String TIME = "time"; + private static final String AMULET = "amuletObtained"; + private static final String ORB = "orbObtained"; public static int goldCollected; public static int deepestFloor; public static int realdeepestFloor; @@ -36,30 +59,18 @@ public class Statistics { public static int assassinsKilled; public static int albinoPiranhasKilled; public static int goldThievesKilled; - public static int shadowYogsKilled; public static int nightHunt; public static int ankhsUsed; - public static int ballsCooked; - public static int waters; - public static int sewerKills; - public static int prisonKills; - public static int petDies; - public static float duration; public static int floormoves; public static int prevfloormoves; public static int moves; public static float time; - - public static boolean qualifiedForNoKilling = false; public static boolean completedWithNoKilling = false; - - public static boolean amuletObtained = false; public static boolean orbObtained = false; - public static void reset() { goldCollected = 0; @@ -69,21 +80,15 @@ public static void reset() { foodEaten = 0; eggBreak = 0; potionsCooked = 0; - + piranhasKilled = 0; archersKilled = 0; assassinsKilled = 0; skeletonsKilled = 0; albinoPiranhasKilled = 0; goldThievesKilled = 0; - shadowYogsKilled = 0; nightHunt = 0; ankhsUsed = 0; - ballsCooked = 0; - waters = 0; - sewerKills = 0; - prisonKills = 0; - petDies = 0; duration = 0; moves = 0; @@ -98,37 +103,6 @@ public static void reset() { } - private static final String GOLD = "score"; - private static final String DEEPEST = "maxDepth"; - private static final String REALDEEPEST = "maxDepthReal"; - private static final String SLAIN = "enemiesSlain"; - private static final String FOOD = "foodEaten"; - private static final String EGG = "eggBreak"; - private static final String ALCHEMY = "potionsCooked"; - private static final String PIRANHAS = "priranhas"; - private static final String WATERS = "waters"; - - private static final String ARCHERS = "archers"; - private static final String SKELETONS = "skeletons"; - private static final String ASSASSINS = "assassins"; - private static final String APIRANHAS = "apiranhas"; - private static final String THIEVES = "thieves"; - private static final String SYOGS = "syogs"; - private static final String BALLS = "balls"; - private static final String PRISONKILLS = "prisonKills"; - private static final String SEWERKILLS = "sewerKills"; - private static final String PETDIES = "petDies"; - - private static final String NIGHT = "nightHunt"; - private static final String ANKHS = "ankhsUsed"; - private static final String DURATION = "duration"; - private static final String FLOORMOVES = "floormoves"; - private static final String PREVFLOORMOVES = "prevfloormoves"; - private static final String MOVES = "moves"; - private static final String TIME = "time"; - private static final String AMULET = "amuletObtained"; - private static final String ORB = "orbObtained"; - public static void storeInBundle(Bundle bundle) { bundle.put(GOLD, goldCollected); bundle.put(DEEPEST, deepestFloor); @@ -143,8 +117,6 @@ public static void storeInBundle(Bundle bundle) { bundle.put(ASSASSINS, assassinsKilled); bundle.put(APIRANHAS, albinoPiranhasKilled); bundle.put(THIEVES, goldThievesKilled); - bundle.put(SYOGS, shadowYogsKilled); - bundle.put(BALLS, ballsCooked); bundle.put(NIGHT, nightHunt); bundle.put(ANKHS, ankhsUsed); bundle.put(DURATION, duration); @@ -154,10 +126,6 @@ public static void storeInBundle(Bundle bundle) { bundle.put(TIME, time); bundle.put(AMULET, amuletObtained); bundle.put(ORB, orbObtained); - bundle.put(WATERS, waters); - bundle.put(SEWERKILLS, sewerKills); - bundle.put(PRISONKILLS, prisonKills); - bundle.put(PETDIES, petDies); } public static void restoreFromBundle(Bundle bundle) { @@ -169,18 +137,12 @@ public static void restoreFromBundle(Bundle bundle) { eggBreak = bundle.getInt(EGG); potionsCooked = bundle.getInt(ALCHEMY); piranhasKilled = bundle.getInt(PIRANHAS); - waters = bundle.getInt(WATERS); - sewerKills = bundle.getInt(SEWERKILLS); - prisonKills = bundle.getInt(PRISONKILLS); - petDies = bundle.getInt(PETDIES); - + archersKilled = bundle.getInt(ARCHERS); skeletonsKilled = bundle.getInt(SKELETONS); assassinsKilled = bundle.getInt(ASSASSINS); albinoPiranhasKilled = bundle.getInt(APIRANHAS); goldThievesKilled = bundle.getInt(THIEVES); - shadowYogsKilled = bundle.getInt(SYOGS); - ballsCooked = bundle.getInt(BALLS); nightHunt = bundle.getInt(NIGHT); ankhsUsed = bundle.getInt(ANKHS); diff --git a/java/com/hmdzl/spspd/actors/Char.java b/java/com/hmdzl/spspd/actors/Char.java index 777fbc96..c1bc9436 100644 --- a/java/com/hmdzl/spspd/actors/Char.java +++ b/java/com/hmdzl/spspd/actors/Char.java @@ -17,32 +17,40 @@ */ package com.hmdzl.spspd.actors; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; - import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.ResultDescriptions; +import com.hmdzl.spspd.actors.blobs.Blob; +import com.hmdzl.spspd.actors.blobs.ElectriShock; +import com.hmdzl.spspd.actors.blobs.Fire; +import com.hmdzl.spspd.actors.blobs.FrostGas; +import com.hmdzl.spspd.actors.blobs.HealLight; import com.hmdzl.spspd.actors.blobs.ToxicGas; import com.hmdzl.spspd.actors.buffs.ArmorBreak; import com.hmdzl.spspd.actors.buffs.AttackDown; import com.hmdzl.spspd.actors.buffs.AttackUp; +import com.hmdzl.spspd.actors.buffs.BeCorrupt; +import com.hmdzl.spspd.actors.buffs.BeOld; import com.hmdzl.spspd.actors.buffs.Bleeding; import com.hmdzl.spspd.actors.buffs.Bless; +import com.hmdzl.spspd.actors.buffs.Blindness; import com.hmdzl.spspd.actors.buffs.BloodAngry; +import com.hmdzl.spspd.actors.buffs.BloodImbue; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.Charm; +import com.hmdzl.spspd.actors.buffs.Chill; import com.hmdzl.spspd.actors.buffs.Cold; import com.hmdzl.spspd.actors.buffs.Cripple; -import com.hmdzl.spspd.actors.buffs.Chill; import com.hmdzl.spspd.actors.buffs.DamageUp; import com.hmdzl.spspd.actors.buffs.DefenceUp; import com.hmdzl.spspd.actors.buffs.Disarm; +import com.hmdzl.spspd.actors.buffs.Dry; import com.hmdzl.spspd.actors.buffs.EarthImbue; +import com.hmdzl.spspd.actors.buffs.EnergyArmor; import com.hmdzl.spspd.actors.buffs.FireImbue; import com.hmdzl.spspd.actors.buffs.Frost; +import com.hmdzl.spspd.actors.buffs.FrostIce; import com.hmdzl.spspd.actors.buffs.FrostImbue; import com.hmdzl.spspd.actors.buffs.GlassShield; import com.hmdzl.spspd.actors.buffs.GrowSeed; @@ -50,36 +58,65 @@ import com.hmdzl.spspd.actors.buffs.HighAttack; import com.hmdzl.spspd.actors.buffs.Hot; import com.hmdzl.spspd.actors.buffs.Hunger; +import com.hmdzl.spspd.actors.buffs.LightShootAttack; +import com.hmdzl.spspd.actors.buffs.MagicArmor; import com.hmdzl.spspd.actors.buffs.MagicWeak; +import com.hmdzl.spspd.actors.buffs.MagicalSleep; import com.hmdzl.spspd.actors.buffs.MechArmor; import com.hmdzl.spspd.actors.buffs.Needling; +import com.hmdzl.spspd.actors.buffs.Ooze; +import com.hmdzl.spspd.actors.buffs.Paralysis; import com.hmdzl.spspd.actors.buffs.ParyAttack; +import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.actors.buffs.Rhythm; import com.hmdzl.spspd.actors.buffs.Rhythm2; +import com.hmdzl.spspd.actors.buffs.Roots; +import com.hmdzl.spspd.actors.buffs.ShadowCurse; import com.hmdzl.spspd.actors.buffs.ShieldArmor; import com.hmdzl.spspd.actors.buffs.Shocked; +import com.hmdzl.spspd.actors.buffs.Shocked2; +import com.hmdzl.spspd.actors.buffs.Slow; import com.hmdzl.spspd.actors.buffs.SoulMark; +import com.hmdzl.spspd.actors.buffs.Speed; import com.hmdzl.spspd.actors.buffs.StoneIce; import com.hmdzl.spspd.actors.buffs.Tar; -import com.hmdzl.spspd.actors.buffs.MagicalSleep; -import com.hmdzl.spspd.actors.buffs.Paralysis; -import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Slow; -import com.hmdzl.spspd.actors.buffs.Speed; +import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.actors.buffs.Vertigo; -import com.hmdzl.spspd.actors.buffs.BloodImbue; import com.hmdzl.spspd.actors.buffs.Wet; import com.hmdzl.spspd.actors.buffs.mindbuff.AmokMind; import com.hmdzl.spspd.actors.buffs.mindbuff.TerrorMind; +import com.hmdzl.spspd.actors.damagetype.DamageType; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.hero.HeroClass; import com.hmdzl.spspd.actors.hero.HeroSubClass; -import com.hmdzl.spspd.actors.mobs.Bestiary; import com.hmdzl.spspd.effects.Lightning; +import com.hmdzl.spspd.items.armor.Armor; +import com.hmdzl.spspd.items.armor.glyphs.Darkglyph; +import com.hmdzl.spspd.items.armor.glyphs.Earthglyph; +import com.hmdzl.spspd.items.armor.glyphs.Electricityglyph; +import com.hmdzl.spspd.items.armor.glyphs.Lightglyph; +import com.hmdzl.spspd.items.rings.RingOfElements; import com.hmdzl.spspd.items.wands.Wand; +import com.hmdzl.spspd.items.wands.WandOfAcid; +import com.hmdzl.spspd.items.wands.WandOfBlood; import com.hmdzl.spspd.items.wands.WandOfFirebolt; +import com.hmdzl.spspd.items.wands.WandOfFlow; +import com.hmdzl.spspd.items.wands.WandOfFreeze; +import com.hmdzl.spspd.items.wands.WandOfLight; +import com.hmdzl.spspd.items.wands.WandOfLightning; +import com.hmdzl.spspd.items.wands.WandOfMeteorite; +import com.hmdzl.spspd.items.wands.WandOfSwamp; +import com.hmdzl.spspd.items.weapon.Weapon; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark2; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentEarth; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentEarth2; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentFire; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentFire2; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentLight; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentLight2; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentShock; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentShock2; import com.hmdzl.spspd.items.weapon.missiles.MissileWeapon; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; @@ -87,7 +124,6 @@ import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.utils.GLog; - import com.watabou.noosa.Camera; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundlable; @@ -95,6 +131,10 @@ import com.watabou.utils.GameMath; import com.watabou.utils.Random; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; + public abstract class Char extends Actor { protected static final String TXT_KILL = "%s killed you..."; @@ -106,6 +146,8 @@ public abstract class Char extends Actor { public String name = "mob"; public int HT; + public int TRUE_HT; + public int EX_HT; public int HP; protected float baseSpeed = 1; @@ -129,6 +171,9 @@ protected boolean act() { private static final String TAG_HP = "HP"; private static final String TAG_HT = "HT"; private static final String BUFFS = "buffs"; + private static final String TRUEHT = "ture_HT"; + private static final String EXHT = "EX_HT"; + @Override public void storeInBundle(Bundle bundle) { @@ -139,6 +184,8 @@ public void storeInBundle(Bundle bundle) { bundle.put(TAG_HP, HP); bundle.put(TAG_HT, HT); bundle.put(BUFFS, buffs); + bundle.put(TRUEHT, TRUE_HT); + bundle.put(EXHT, EX_HT); } @Override @@ -149,6 +196,8 @@ public void restoreFromBundle(Bundle bundle) { pos = bundle.getInt(POS); HP = bundle.getInt(TAG_HP); HT = bundle.getInt(TAG_HT); + TRUE_HT = bundle.getInt(TRUEHT); + EX_HT = bundle.getInt(EXHT); for (Bundlable b : bundle.getCollection(BUFFS)) { if (b != null) { @@ -199,7 +248,7 @@ public boolean attack(Char enemy) { StoneIce si = buff(StoneIce.class); if ( si != null){ - dmg *= 1.4; + dmg *= 1.4f; } DamageUp dmgup = buff(DamageUp.class); @@ -252,11 +301,11 @@ public boolean attack(Char enemy) { if (!enemy.isAlive() && visibleFight) { if (enemy == Dungeon.hero) { - if (Bestiary.isUnique(this)) { - Dungeon.fail(Messages.format(ResultDescriptions.UNIQUE)); - } else { - Dungeon.fail(Messages.format(ResultDescriptions.MOB)); - } + //if (Bestiary.isUnique(this)) { + //Dungeon.fail(Messages.format(ResultDescriptions.UNIQUE)); + //} else { + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); + //} } } @@ -314,7 +363,7 @@ public int attackProc(Char enemy, int damage) { if (buff(Shocked.class)!=null){ Buff.detach(this,Shocked.class); Buff.affect(this, Disarm.class,5f); - damage(this.HP/10,this); + damage(this.HP/10,Shocked.class); ArrayList arcs = new ArrayList<>(); arcs.add(new Lightning.Arc(pos - Level.WIDTH, pos + Level.WIDTH)); arcs.add(new Lightning.Arc(pos - 1, pos + 1)); @@ -341,6 +390,8 @@ public float speed() { return baseSpeed * 1.5f; } else if (buff(StoneIce.class) != null) { return baseSpeed * 0.8f; + } else if (buff(FrostIce.class) != null) { + return baseSpeed * 0.8f; } else{ return baseSpeed; } @@ -396,28 +447,72 @@ public void damage(int dmg, Object src) { } ShieldArmor sarmor = buff(ShieldArmor.class); - if (sarmor != null && !(src instanceof Hunger)) { + MagicArmor magicarmor = buff(MagicArmor.class); + MechArmor marmor = buff(MechArmor.class); + EnergyArmor earmor = buff(EnergyArmor.class); + if(!(src instanceof Hunger)) { + //if (!(src instanceof DamageType) && !(src instanceof Buff) && !(src instanceof Blob) + //&& !(src instanceof Wand) && !(src instanceof Weapon.Enchantment) && !(src instanceof Armor.Glyph)) { + + //} else { + + if (sarmor != null && !(src instanceof Buff) && + !(src instanceof DamageType) && !(src instanceof Blob) && !(src instanceof Wand) ) { dmg = sarmor.absorb(dmg); + //GLog.w(Messages.get(this, "htdown", src, dmg)); + } + if (magicarmor != null && (src instanceof DamageType || src instanceof Buff || + src instanceof Blob || src instanceof Wand )){ dmg = magicarmor.absorb(dmg); + //GLog.w(Messages.get(this, "htdown",src,dmg)); + } + //} + if (marmor != null ) { + dmg = marmor.absorb(dmg); + } + } - MechArmor marmor = buff(MechArmor.class); - if (marmor != null && !(src instanceof Hunger)) { - dmg = marmor.absorb(dmg); + if (earmor != null ) { + dmg = earmor.absorb(dmg); } - - if (HP <= 0 || dmg < 0) { - return; + + if(this.properties().contains(Property.UNKNOW)){ + if (((src instanceof Char)&& ((Char) src).properties().contains(Property.MAGICER)) || + src instanceof Buff || src instanceof DamageType || + src instanceof Blob || src instanceof Weapon.Enchantment || src instanceof Armor.Glyph || + src instanceof Wand) dmg = (int)(dmg*1.25); + else dmg = (int)(dmg*0.75); + } + + if(this.properties().contains(Property.ELEMENT)){ + if (((src instanceof Char)&& ((Char) src).properties().contains(Property.MAGICER)) || + + src instanceof Buff || src instanceof DamageType || + src instanceof Blob || src instanceof Weapon.Enchantment || src instanceof Armor.Glyph || + src instanceof Wand + ) dmg = (int)(dmg*0.75); + else dmg = (int)(dmg*1.25); + } + + if(this.properties().contains(Property.TROLL)){ + dmg = (int)(dmg*0.6); + } + + if(this.properties().contains(Property.ALIEN)){ + dmg = (int)(dmg*1.4); } Class srcClass = src.getClass(); - if (immunities().contains(srcClass)) { + if (isImmune( srcClass )) { dmg = 0; - } else if (resistances().contains(srcClass)) { + } else if (isResist( srcClass )) { dmg = Random.IntRange(0, dmg); - } else if (weakness().contains(srcClass)) { - dmg = Random.IntRange(dmg+1, 2*dmg); + } else if (isWeak(srcClass)) { + dmg = Random.IntRange(dmg+dmg/2, 2*dmg+dmg/2); } + + if (buff(Paralysis.class) != null) { if (Random.Int(dmg) >= Random.Int(HP)) { Buff.detach(this, Paralysis.class); @@ -434,6 +529,11 @@ public void damage(int dmg, Object src) { Buff.detach(this, GlassShield.class); } } + + if (HP <= 0 || dmg < 0) { + return; + } + //if (dmg > HP){ //Buff.detach(this,Corruption.class);} HP -= dmg; @@ -574,20 +674,6 @@ protected void onRemove() { public void updateSpriteState() { for (Buff buff : buffs) { - /*if (buff instanceof Burning) { - sprite.add(CharSprite.State.BURNING); - } else if (buff instanceof Levitation) { - sprite.add(CharSprite.State.LEVITATING); - } else if (buff instanceof Invisibility - || buff instanceof CloakOfShadows.cloakStealth) { - sprite.add(CharSprite.State.INVISIBLE); - } else if (buff instanceof Stun || buff instanceof Shieldblock) { - sprite.add(CharSprite.State.PARALYSED); - } else if (buff instanceof Frost) { - sprite.add(CharSprite.State.FROZEN); - } else if (buff instanceof Light) { - sprite.add(CharSprite.State.ILLUMINATED); - }*/ buff.fx( true ); } } @@ -654,77 +740,177 @@ public HashSet> weakness() { return EMPTY; } - //protected final HashSet resistances = new HashSet<>(); + protected final HashSet resistances = new HashSet<>(); - //returns percent effectiveness after resistances + //returns percent effectiveness after resisances //TODO currently resistances reduce effectiveness by a static 50%, and do not stack. - //public float resist( Class effect ){ - //HashSet resists = new HashSet<>(resistances); - // for (Property p : properties()){ - // resists.addAll(p.resistances()); - // } - // for (Buff b : buffs()){ - // resists.addAll(b.resistances()); - // } - - // float result = 1f; - // for (Class c : resists){ - // if (c.isAssignableFrom(effect)){ - // result *= 0.5f; - // } - // } - // return result * RingOfElements.restore(this, effect); - //} + public float resist( Class effect ){ + HashSet resists = new HashSet<>(resistances); + for (Property p : properties()){ + resists.addAll(p.resistances()); + } + for (Buff b : buffs()){ + resists.addAll(b.resistances()); + } - //protected final HashSet immunities = new HashSet<>(); - - //public boolean isImmune(Class effect ){ - //HashSet immunes = new HashSet<>(immunities); - //for (Property p : properties()){ - //immunes.addAll(p.immunities()); - //} - //for (Buff b : buffs()){ - //immunes.addAll(b.immunities()); - //} - - //for (Class c : immunes){ - //if (c.isAssignableFrom(effect)){ - // return true; - //} - // } - //return false; - //} + float result = 1f; + for (Class c : resists){ + if (c.isAssignableFrom(effect)){ + result *= 0.5f; + } + } + return result * RingOfElements.Rresist(this, effect); + } + + protected final HashSet weakness = new HashSet<>(); + + public float weak( Class effect ){ + HashSet weaks = new HashSet<>(weakness); + for (Property p : properties()){ + weaks.addAll(p.resistances()); + } + for (Buff b : buffs()){ + weaks.addAll(b.resistances()); + } + + float result = 1f; + for (Class c : weaks){ + if (c.isAssignableFrom(effect)){ + result *= 1.5f; + } + } + return result * RingOfElements.Rresist(this, effect); + } + + public boolean isResist( Class effect ){ + HashSet resists = new HashSet<>(resistances); + for (Property p : properties()){ + resists.addAll(p.resistances()); + } + for (Buff b : buffs()){ + resists.addAll(b.resistances()); + } + for (Class c : resists){ + if (c.isAssignableFrom(effect)){ + return true; + } + } + return false; + } + + public boolean isWeak( Class effect ){ + HashSet weaks = new HashSet<>(weakness); + for (Property p : properties()){ + weaks.addAll(p.resistances()); + } + for (Buff b : buffs()){ + weaks.addAll(b.resistances()); + } + for (Class c : weaks){ + if (c.isAssignableFrom(effect)){ + return true; + } + } + return false; + } + + protected final HashSet immunities = new HashSet<>(); + public boolean isImmune(Class effect ){ + HashSet immunes = new HashSet<>(immunities); + for (Property p : properties()){ + immunes.addAll(p.immunities()); + } + for (Buff b : buffs()){ + immunes.addAll(b.immunities()); + } + + for (Class c : immunes){ + if (c.isAssignableFrom(effect)){ + return true; + } + } + return false; + } + protected HashSet properties = new HashSet<>(); - public HashSet properties() { return properties; } + public HashSet properties() { + return new HashSet<>(properties); + } public enum Property{ BOSS, MINIBOSS, IMMOVABLE, - - HUMAN, - ORC, - ELF, - //GNOLL, - DWARF, - TROLL, - DEMONIC, - GOBLIN, - - BEAST, - DRAGON, - PLANT( new HashSet(), + MAGICER, + + HUMAN( new HashSet( ), + new HashSet( ), + new HashSet( ) + ), + ORC( new HashSet( Arrays.asList(Bleeding.class,Poison.class) ), + new HashSet( Arrays.asList(Roots.class) ), + new HashSet( Arrays.asList(BeCorrupt.class,BeOld.class) ) + ), + FISHER( new HashSet( Arrays.asList(WandOfLightning.class,WandOfFreeze.class,WandOfFlow.class,ElectriShock.class) ), + new HashSet( ), + new HashSet( Arrays.asList(Burning.class,WandOfFirebolt.class,WandOfMeteorite.class)) + ), + ELF( new HashSet( Arrays.asList(BeOld.class) ), + new HashSet( ), + new HashSet( Arrays.asList(Vertigo.class,Blindness.class)) + ), + DWARF( new HashSet( Arrays.asList(Paralysis.class , Ooze.class,GrowSeed.class ) ), + new HashSet( Arrays.asList(Cripple.class, Roots.class) ), + new HashSet( Arrays.asList(ShadowCurse.class,EnchantmentDark.class, EnchantmentDark2.class,Darkglyph.class,WandOfBlood.class)) + ), + TROLL( new HashSet( ), + new HashSet( ), + new HashSet( Arrays.asList(Buff.class) ) + ), + DEMONIC( new HashSet(Arrays.asList(ShadowCurse.class,EnchantmentDark.class, EnchantmentDark2.class,Darkglyph.class,WandOfBlood.class) ), + new HashSet( ), + new HashSet( Arrays.asList(WandOfLightning.class,EnchantmentLight.class, EnchantmentLight2.class,Lightglyph.class,LightShootAttack.class) ) + ), + GOBLIN( new HashSet( Arrays.asList(WandOfLightning.class,ElectriShock.class,EnchantmentShock.class,EnchantmentShock2.class,Shocked.class,Shocked2.class,Electricityglyph.class) ), + new HashSet( ), + new HashSet( Arrays.asList(EnchantmentEarth.class , EnchantmentEarth2.class,Earthglyph.class,WandOfSwamp.class,WandOfAcid.class ) ) + ), + + BEAST( new HashSet( Arrays.asList(Hot.class,Cold.class,Dry.class,Wet.class)), + new HashSet( ), + new HashSet( Arrays.asList( BeOld.class, EnchantmentDark.class, EnchantmentDark2.class, Blindness.class) ) + ), + DRAGON( new HashSet( Arrays.asList(Burning.class,WandOfFirebolt.class,WandOfMeteorite.class) ), + new HashSet( Arrays.asList(BeCorrupt.class,BeOld.class,AttackDown.class) ), + new HashSet( Arrays.asList(WandOfLightning.class,WandOfFreeze.class,WandOfFlow.class,ElectriShock.class) ) + ), + PLANT( new HashSet(Arrays.asList(Roots.class, Cripple.class, Ooze.class)), new HashSet( Arrays.asList(Bleeding.class, ToxicGas.class, Poison.class)), new HashSet( Arrays.asList(Burning.class, WandOfFirebolt.class,EnchantmentFire.class,EnchantmentFire2.class)) ), - ELEMENT, - - MECH, - UNDEAD, - ALIEN, - UNKNOW; + ELEMENT( new HashSet( ), + new HashSet( ), + new HashSet( ) + ), + + MECH( new HashSet( Arrays.asList(Fire.class, FrostGas.class, Frost.class,Burning.class)), + new HashSet( Arrays.asList(Charm.class, Terror.class) ), + new HashSet( Arrays.asList(Ooze.class,WandOfAcid.class, WandOfSwamp.class,EnchantmentEarth.class,EnchantmentEarth2.class)) + ), + UNDEAD( new HashSet( Arrays.asList(Cold.class, FrostGas.class, Frost.class,BeCorrupt.class)), + new HashSet( Arrays.asList(Bleeding.class, HealLight.class, Poison.class,BeOld.class)), + new HashSet(Arrays.asList(Blindness.class, WandOfLight.class,EnchantmentLight.class,EnchantmentLight2.class) ) + ), + ALIEN( new HashSet( Arrays.asList(Buff.class) ), + new HashSet( ), + new HashSet( ) + ), + UNKNOW( new HashSet( ), + new HashSet( ), + new HashSet( ) + ); private HashSet resistances; private HashSet immunities; @@ -736,14 +922,13 @@ public enum Property{ Property( HashSet resistances, HashSet immunities,HashSet weakness){ this.resistances = resistances; - this.immunities = immunities; + this.immunities = immunities ; this.weakness = weakness; } public HashSet resistances(){ return new HashSet<>(resistances); } - public HashSet immunities(){ return new HashSet<>(immunities); } diff --git a/java/com/hmdzl/spspd/actors/blobs/ConfusionGas.java b/java/com/hmdzl/spspd/actors/blobs/ConfusionGas.java index a8567148..66433b52 100644 --- a/java/com/hmdzl/spspd/actors/blobs/ConfusionGas.java +++ b/java/com/hmdzl/spspd/actors/blobs/ConfusionGas.java @@ -24,7 +24,7 @@ import com.hmdzl.spspd.actors.buffs.Vertigo; import com.hmdzl.spspd.effects.BlobEmitter; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class ConfusionGas extends Blob { @@ -35,7 +35,7 @@ protected void evolve() { Char ch; for (int i = 0; i < LENGTH; i++) { if (cur[i] > 0 && (ch = Actor.findChar(i)) != null) { - if (!ch.immunities().contains(this.getClass())) + if (!ch.isImmune(this.getClass())) Buff.prolong(ch, Vertigo.class, 2); Buff.prolong(ch, Locked.class,2f); } diff --git a/java/com/hmdzl/spspd/actors/blobs/CorruptGas.java b/java/com/hmdzl/spspd/actors/blobs/CorruptGas.java index 29617023..1f349a60 100644 --- a/java/com/hmdzl/spspd/actors/blobs/CorruptGas.java +++ b/java/com/hmdzl/spspd/actors/blobs/CorruptGas.java @@ -28,7 +28,7 @@ import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.effects.BlobEmitter; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class CorruptGas extends Blob implements Hero.Doom { @@ -44,11 +44,11 @@ protected void evolve() { for (int i = 0; i < LENGTH; i++) { if (cur[i] > 0 && (ch = Actor.findChar(i)) != null) { - if (!ch.immunities().contains(ConfusionGas.class)){ + if (!ch.isImmune(ConfusionGas.class)){ Buff.prolong(ch, Vertigo.class, 2); } - if (!ch.immunities().contains(this.getClass())){ + if (!ch.isImmune(this.getClass())){ Buff.affect(ch, Bleeding.class).set(bleedDamage); Buff.prolong(ch, Cripple.class, Cripple.DURATION); diff --git a/java/com/hmdzl/spspd/actors/blobs/CurseWeb.java b/java/com/hmdzl/spspd/actors/blobs/CurseWeb.java new file mode 100644 index 00000000..69d62ec6 --- /dev/null +++ b/java/com/hmdzl/spspd/actors/blobs/CurseWeb.java @@ -0,0 +1,70 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.actors.blobs; + +import com.hmdzl.spspd.actors.Actor; +import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.ShadowCurse; +import com.hmdzl.spspd.effects.BlobEmitter; +import com.hmdzl.spspd.effects.particles.WebParticle; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; + +public class CurseWeb extends Blob { + + @Override + protected void evolve() { + + for (int i = 0; i < LENGTH; i++) { + + int offv = cur[i] > 0 ? cur[i] - 1 : 0; + off[i] = offv; + + if (offv > 0) { + + volume += offv; + + Char ch = Actor.findChar(i); + if (ch != null && !ch.isImmune(this.getClass())) { + Buff.affect(ch, ShadowCurse.class); + } + } + } + } + + @Override + public void use(BlobEmitter emitter) { + super.use(emitter); + + emitter.pour(WebParticle.FACTORY, 0.4f); + } + + @Override + public void seed(int cell, int amount) { + int diff = amount - cur[cell]; + if (diff > 0) { + cur[cell] = amount; + volume += diff; + } + } + + @Override + public String tileDesc() { + return Messages.get(this, "desc"); + } +} diff --git a/java/com/hmdzl/spspd/actors/blobs/DarkGas.java b/java/com/hmdzl/spspd/actors/blobs/DarkGas.java index 8c2a1e5b..4c653bff 100644 --- a/java/com/hmdzl/spspd/actors/blobs/DarkGas.java +++ b/java/com/hmdzl/spspd/actors/blobs/DarkGas.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.buffs.Blindness; import com.hmdzl.spspd.effects.BlobEmitter; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class DarkGas extends Blob { @@ -34,7 +34,7 @@ protected void evolve() { Char ch; for (int i = 0; i < LENGTH; i++) { if (cur[i] > 0 && (ch = Actor.findChar(i)) != null) { - if (!ch.immunities().contains(this.getClass())) + if (!ch.isImmune(this.getClass())) Buff.prolong(ch, Blindness.class, 2); } } diff --git a/java/com/hmdzl/spspd/actors/blobs/ElectriShock.java b/java/com/hmdzl/spspd/actors/blobs/ElectriShock.java index ccae19b7..e30f98c7 100644 --- a/java/com/hmdzl/spspd/actors/blobs/ElectriShock.java +++ b/java/com/hmdzl/spspd/actors/blobs/ElectriShock.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.actors.blobs; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; +import com.hmdzl.spspd.ResultDescriptions;import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; @@ -27,7 +27,7 @@ import com.hmdzl.spspd.effects.particles.EnergyParticle; import com.hmdzl.spspd.items.Heap; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; + import com.watabou.utils.Random; public class ElectriShock extends Blob { @@ -64,7 +64,7 @@ protected void evolve() { private void shocking(int pos) { Char ch = Actor.findChar(pos); - if (ch != null ) { + if (ch != null && !ch.isImmune(this.getClass()) ) { //Buff.detach(ch,Corruption.class); ch.damage( Math.max( 1, Random.Int( ch.HP / 100, ch.HP / 50 ) ), this ); Buff.prolong(ch, Paralysis.class,1f); @@ -99,6 +99,6 @@ public String tileDesc() { } public void onDeath() { - Dungeon.fail(Messages.format(ResultDescriptions.GAS)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); } } diff --git a/java/com/hmdzl/spspd/actors/blobs/Fire.java b/java/com/hmdzl/spspd/actors/blobs/Fire.java index 2af6160e..e00270bd 100644 --- a/java/com/hmdzl/spspd/actors/blobs/Fire.java +++ b/java/com/hmdzl/spspd/actors/blobs/Fire.java @@ -27,7 +27,7 @@ import com.hmdzl.spspd.items.Heap; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.items.Generator; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/actors/blobs/Foliage.java b/java/com/hmdzl/spspd/actors/blobs/Foliage.java index 13e39f45..3b3a1aa5 100644 --- a/java/com/hmdzl/spspd/actors/blobs/Foliage.java +++ b/java/com/hmdzl/spspd/actors/blobs/Foliage.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.effects.particles.ShaftParticle; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; public class Foliage extends Blob { diff --git a/java/com/hmdzl/spspd/actors/blobs/Freezing.java b/java/com/hmdzl/spspd/actors/blobs/Freezing.java index f49bf2cc..305a01a9 100644 --- a/java/com/hmdzl/spspd/actors/blobs/Freezing.java +++ b/java/com/hmdzl/spspd/actors/blobs/Freezing.java @@ -34,7 +34,7 @@ public class Freezing { public static boolean affect(int cell, Fire fire) { Char ch = Actor.findChar(cell); - if (ch != null) { + if (ch != null ) { if (Level.water[ch.pos]) { Buff.prolong(ch, Frost.class, Frost.duration(ch) * Random.Float(5f, 7.5f)); diff --git a/java/com/hmdzl/spspd/actors/blobs/FrostCloud.java b/java/com/hmdzl/spspd/actors/blobs/FrostCloud.java new file mode 100644 index 00000000..a7d3b0ea --- /dev/null +++ b/java/com/hmdzl/spspd/actors/blobs/FrostCloud.java @@ -0,0 +1,93 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.actors.blobs; + +import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.actors.Actor; +import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.Frost; +import com.hmdzl.spspd.actors.buffs.FrostIce; +import com.hmdzl.spspd.effects.BlobEmitter; +import com.hmdzl.spspd.effects.particles.SnowParticle; +import com.hmdzl.spspd.items.Heap; +import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; + +public class FrostCloud extends Blob { + + @Override + protected void evolve() { + + int from = WIDTH + 1; + int to = Level.getLength() - WIDTH - 1; + + for (int pos = from; pos < to; pos++) { + + int ice; + + + if (cur[pos] > 0) { + + ice(pos); + + ice = cur[pos] - 1; + if (ice <= 0){ } + } else { + ice = 0; + } + + volume += (off[pos] = ice); + + } + + } + + private void ice(int pos) { + Char ch = Actor.findChar(pos); + if (ch != null && !ch.isImmune(this.getClass())) { + if (ch.buff(Frost.class) != null) { + Buff.affect(ch, FrostIce.class).level(15); + } + + Heap heap = Dungeon.level.heaps.get(pos); + if (heap != null) heap.freeze(); + } + } + + @Override + public void seed(int cell, int amount) { + if (cur[cell] == 0) { + volume += amount; + cur[cell] = amount; + /*} else { + volume += amount - cur[cell]; + cur[cell] = amount;*/ + } + } + + @Override + public void use(BlobEmitter emitter) { + super.use(emitter); + emitter.start(SnowParticle.FACTORY, 0.05f, 0); + } + @Override + public String tileDesc() { + return Messages.get(this, "desc"); + } +} diff --git a/java/com/hmdzl/spspd/actors/blobs/FrostGas.java b/java/com/hmdzl/spspd/actors/blobs/FrostGas.java index 428c3b9d..4835134b 100644 --- a/java/com/hmdzl/spspd/actors/blobs/FrostGas.java +++ b/java/com/hmdzl/spspd/actors/blobs/FrostGas.java @@ -27,7 +27,7 @@ import com.hmdzl.spspd.effects.particles.SnowParticle; import com.hmdzl.spspd.items.Heap; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class FrostGas extends Blob { @@ -60,7 +60,7 @@ protected void evolve() { private void ice(int pos) { Char ch = Actor.findChar( pos ); - if (ch != null && !ch.immunities().contains(this.getClass())) { + if (ch != null && !ch.isImmune(this.getClass())) { if (ch.buff(Frost.class) != null){ Buff.affect(ch, Frost.class, 2f); } else { diff --git a/java/com/hmdzl/spspd/actors/blobs/GooWarn.java b/java/com/hmdzl/spspd/actors/blobs/GooWarn.java index f6100a9d..1a73cfef 100644 --- a/java/com/hmdzl/spspd/actors/blobs/GooWarn.java +++ b/java/com/hmdzl/spspd/actors/blobs/GooWarn.java @@ -1,7 +1,7 @@ package com.hmdzl.spspd.actors.blobs; import com.hmdzl.spspd.effects.BlobEmitter; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.GooSprite; /** diff --git a/java/com/hmdzl/spspd/actors/blobs/HealLight.java b/java/com/hmdzl/spspd/actors/blobs/HealLight.java index c91e679b..5d3cdd48 100644 --- a/java/com/hmdzl/spspd/actors/blobs/HealLight.java +++ b/java/com/hmdzl/spspd/actors/blobs/HealLight.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.effects.BlobEmitter; @@ -36,12 +36,13 @@ protected void evolve() { Char ch; for (int i = 0; i < LENGTH; i++) { if (cur[i] > 0 && (ch = Actor.findChar(i)) != null) { - if (ch.HP 0 && (ch = Actor.findChar(i)) != null) { int damage = levelDamage ; - - ch.damage(damage, this); + if (!ch.isImmune(this.getClass())) { + ch.damage(damage, this); + } } } } @@ -64,7 +63,7 @@ public void onDeath() { Badges.validateDeathFromGas(); - Dungeon.fail(Messages.format(ResultDescriptions.GAS)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n("You died from a toxic gas.."); } } diff --git a/java/com/hmdzl/spspd/actors/blobs/ParalyticGas.java b/java/com/hmdzl/spspd/actors/blobs/ParalyticGas.java index 1d873705..7031b7a2 100644 --- a/java/com/hmdzl/spspd/actors/blobs/ParalyticGas.java +++ b/java/com/hmdzl/spspd/actors/blobs/ParalyticGas.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.buffs.Paralysis; import com.hmdzl.spspd.effects.BlobEmitter; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class ParalyticGas extends Blob { @@ -34,7 +34,7 @@ protected void evolve() { Char ch; for (int i = 0; i < LENGTH; i++) { if (cur[i] > 0 && (ch = Actor.findChar(i)) != null) { - if (!ch.immunities().contains(this.getClass())) + if (!ch.isImmune(this.getClass())) Buff.prolong(ch, Paralysis.class, Paralysis.duration(ch)); } } diff --git a/java/com/hmdzl/spspd/actors/blobs/PoisonGas.java b/java/com/hmdzl/spspd/actors/blobs/PoisonGas.java index 0b1afbee..9a218d52 100644 --- a/java/com/hmdzl/spspd/actors/blobs/PoisonGas.java +++ b/java/com/hmdzl/spspd/actors/blobs/PoisonGas.java @@ -28,7 +28,7 @@ import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.buffs.Tar; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.scenes.GameScene; @@ -43,7 +43,7 @@ protected void evolve() { Char ch; for (int i = 0; i < LENGTH; i++) { if (cur[i] > 0 && (ch = Actor.findChar(i)) != null) { - if (!ch.immunities().contains(this.getClass())){ + if (!ch.isImmune(this.getClass())){ Buff.affect(ch,Slow.class,3f); Buff.affect(ch,Roots.class,3f); Buff.affect(ch,ArmorBreak.class,3f).level(20); diff --git a/java/com/hmdzl/spspd/actors/blobs/ShockWeb.java b/java/com/hmdzl/spspd/actors/blobs/ShockWeb.java index d73f6946..f19ca3a3 100644 --- a/java/com/hmdzl/spspd/actors/blobs/ShockWeb.java +++ b/java/com/hmdzl/spspd/actors/blobs/ShockWeb.java @@ -20,10 +20,10 @@ import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Roots; +import com.hmdzl.spspd.actors.buffs.Shocked; import com.hmdzl.spspd.effects.BlobEmitter; import com.hmdzl.spspd.effects.particles.ShockWebParticle; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class ShockWeb extends Blob { @@ -40,10 +40,10 @@ protected void evolve() { volume += offv; Char ch = Actor.findChar(i); - if (ch != null) { + if (ch != null && !ch.isImmune(this.getClass())) { int damage = 5; ch.damage(damage, this); - Buff.prolong(ch, Roots.class, TICK); + Buff.prolong(ch, Shocked.class, TICK); } } } diff --git a/java/com/hmdzl/spspd/actors/blobs/SlowWeb.java b/java/com/hmdzl/spspd/actors/blobs/SlowWeb.java index d6f1b993..dd653dff 100644 --- a/java/com/hmdzl/spspd/actors/blobs/SlowWeb.java +++ b/java/com/hmdzl/spspd/actors/blobs/SlowWeb.java @@ -20,11 +20,10 @@ import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Roots; import com.hmdzl.spspd.actors.buffs.Slow; import com.hmdzl.spspd.effects.BlobEmitter; import com.hmdzl.spspd.effects.particles.WebParticle; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class SlowWeb extends Blob { @@ -41,7 +40,7 @@ protected void evolve() { volume += offv; Char ch = Actor.findChar(i); - if (ch != null) { + if (ch != null && !ch.isImmune(this.getClass())) { Buff.prolong(ch, Slow.class, TICK); } } diff --git a/java/com/hmdzl/spspd/actors/blobs/StenchGas.java b/java/com/hmdzl/spspd/actors/blobs/StenchGas.java index 0a7a6503..6e059392 100644 --- a/java/com/hmdzl/spspd/actors/blobs/StenchGas.java +++ b/java/com/hmdzl/spspd/actors/blobs/StenchGas.java @@ -6,7 +6,7 @@ import com.hmdzl.spspd.actors.buffs.Ooze; import com.hmdzl.spspd.effects.BlobEmitter; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; /** * Created by debenhame on 08/10/2014. @@ -20,7 +20,7 @@ protected void evolve() { Char ch; for (int i = 0; i < LENGTH; i++) { if (cur[i] > 0 && (ch = Actor.findChar(i)) != null) { - if (!ch.immunities().contains(this.getClass())) + if (!ch.isImmune(this.getClass())) Buff.affect(ch, Ooze.class); } } diff --git a/java/com/hmdzl/spspd/actors/blobs/TarGas.java b/java/com/hmdzl/spspd/actors/blobs/TarGas.java index 3b80b08b..27ac4ee6 100644 --- a/java/com/hmdzl/spspd/actors/blobs/TarGas.java +++ b/java/com/hmdzl/spspd/actors/blobs/TarGas.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.buffs.Tar; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.scenes.GameScene; @@ -40,7 +40,7 @@ protected void evolve() { Char ch; for (int i = 0; i < LENGTH; i++) { if (cur[i] > 0 && (ch = Actor.findChar(i)) != null) { - if (!ch.immunities().contains(this.getClass())) + if (!ch.isImmune(this.getClass())) Buff.affect(ch,Tar.class); if ( ch.buff( Burning.class ) != null ) {GameScene.add(Blob.seed(ch.pos, 2, Fire.class)); } diff --git a/java/com/hmdzl/spspd/actors/blobs/ToxicGas.java b/java/com/hmdzl/spspd/actors/blobs/ToxicGas.java index a9163512..7396471e 100644 --- a/java/com/hmdzl/spspd/actors/blobs/ToxicGas.java +++ b/java/com/hmdzl/spspd/actors/blobs/ToxicGas.java @@ -19,13 +19,12 @@ import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.effects.BlobEmitter; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class ToxicGas extends Blob implements Hero.Doom { @@ -45,7 +44,10 @@ protected void evolve() { damage++; } - ch.damage(damage, this); + if (!ch.isImmune(this.getClass())) { + + ch.damage(damage, this); + } } } } @@ -67,7 +69,7 @@ public void onDeath() { Badges.validateDeathFromGas(); - Dungeon.fail(Messages.format(ResultDescriptions.GAS)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n("You died from a toxic gas.."); } } diff --git a/java/com/hmdzl/spspd/actors/blobs/VenomGas.java b/java/com/hmdzl/spspd/actors/blobs/VenomGas.java index 6deeb651..3e4bc1f3 100644 --- a/java/com/hmdzl/spspd/actors/blobs/VenomGas.java +++ b/java/com/hmdzl/spspd/actors/blobs/VenomGas.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.actors.buffs.Venom; import com.hmdzl.spspd.effects.BlobEmitter; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Bundle; public class VenomGas extends Blob { @@ -43,7 +43,7 @@ protected void evolve() { Char ch; for (int i = 0; i < LENGTH; i++) { if (cur[i] > 0 && (ch = Actor.findChar(i)) != null) { - if (!ch.immunities().contains(this.getClass())) + if (!ch.isImmune(this.getClass())) Buff.affect(ch, Venom.class).set(2f, strength); } } diff --git a/java/com/hmdzl/spspd/actors/blobs/WaterOfAwareness.java b/java/com/hmdzl/spspd/actors/blobs/WaterOfAwareness.java index e96a8335..8d516480 100644 --- a/java/com/hmdzl/spspd/actors/blobs/WaterOfAwareness.java +++ b/java/com/hmdzl/spspd/actors/blobs/WaterOfAwareness.java @@ -32,7 +32,7 @@ import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.audio.Sample; diff --git a/java/com/hmdzl/spspd/actors/blobs/WaterOfHealth.java b/java/com/hmdzl/spspd/actors/blobs/WaterOfHealth.java index f08116a2..b315d520 100644 --- a/java/com/hmdzl/spspd/actors/blobs/WaterOfHealth.java +++ b/java/com/hmdzl/spspd/actors/blobs/WaterOfHealth.java @@ -30,7 +30,7 @@ import com.hmdzl.spspd.items.DewVial; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.potions.PotionOfHealing; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.audio.Sample; diff --git a/java/com/hmdzl/spspd/actors/blobs/WaterOfTransmutation.java b/java/com/hmdzl/spspd/actors/blobs/WaterOfTransmutation.java index f44e1618..055ba355 100644 --- a/java/com/hmdzl/spspd/actors/blobs/WaterOfTransmutation.java +++ b/java/com/hmdzl/spspd/actors/blobs/WaterOfTransmutation.java @@ -37,7 +37,7 @@ import com.hmdzl.spspd.items.wands.Wand; import com.hmdzl.spspd.items.armor.Armor; import com.hmdzl.spspd.items.weapon.melee.MeleeWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class WaterOfTransmutation extends WellWater { diff --git a/java/com/hmdzl/spspd/actors/blobs/WaterOfUpgradeEating.java b/java/com/hmdzl/spspd/actors/blobs/WaterOfUpgradeEating.java deleted file mode 100644 index 83f89588..00000000 --- a/java/com/hmdzl/spspd/actors/blobs/WaterOfUpgradeEating.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Pixel Dungeon - * Copyright (C) 2012-2014 Oleg Dolya - * - * 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 - */ -package com.hmdzl.spspd.actors.blobs; - -import com.hmdzl.spspd.effects.BlobEmitter; -import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.items.Item; -import com.hmdzl.spspd.items.Stylus; -import com.hmdzl.spspd.items.UpgradeBlobRed; -import com.hmdzl.spspd.items.UpgradeBlobViolet; -import com.hmdzl.spspd.items.UpgradeBlobYellow; -import com.hmdzl.spspd.items.potions.Potion; -import com.hmdzl.spspd.items.scrolls.Scroll; -import com.hmdzl.spspd.messages.Messages; -import com.hmdzl.spspd.plants.Seedpod; -import com.watabou.utils.Random; - -public class WaterOfUpgradeEating extends WellWater { - - @Override - protected Item affectItem(Item item) { - - if (item.isUpgradable()) { - item = eatUpgradable((Item) item); - } else if (item instanceof Scroll - || item instanceof Potion - || item instanceof Stylus) { - item = eatStandard((Item) item); - } else { - item = null; - } - - return item; - } - - @Override - public void use(BlobEmitter emitter) { - super.use(emitter); - emitter.start(Speck.factory(Speck.CHANGE), 0.2f, 0); - } - - private Item eatUpgradable(Item w) { - - int ups = w.level; - - Item n = null; - - if (Random.Float()<(ups/10)){ - - n = new UpgradeBlobViolet(); - - } else if (Random.Float()<(ups/5)) { - - n = new UpgradeBlobRed(); - - } else if (Random.Float()<(ups/3)) { - - n = new UpgradeBlobYellow(); - - } else { - - n =new Seedpod.Seed() ; - } - - return n; - } - - private Item eatStandard(Item w) { - - Item n = null; - - if (Random.Float()<0.1f){ - n = new UpgradeBlobYellow(); - } else { - n = new Seedpod.Seed() ; - } - - return n; - } - - @Override - public String tileDesc() { - return Messages.get(this, "desc"); - } -} diff --git a/java/com/hmdzl/spspd/actors/blobs/Web.java b/java/com/hmdzl/spspd/actors/blobs/Web.java index 345ba4d4..50b514d3 100644 --- a/java/com/hmdzl/spspd/actors/blobs/Web.java +++ b/java/com/hmdzl/spspd/actors/blobs/Web.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.buffs.Roots; import com.hmdzl.spspd.effects.BlobEmitter; import com.hmdzl.spspd.effects.particles.WebParticle; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class Web extends Blob { @@ -40,7 +40,7 @@ protected void evolve() { volume += offv; Char ch = Actor.findChar(i); - if (ch != null) { + if (ch != null && !ch.isImmune(this.getClass())) { Buff.prolong(ch, Roots.class, TICK); } } diff --git a/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfDead.java b/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfDead.java index aac908a1..63e008f0 100644 --- a/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfDead.java +++ b/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfDead.java @@ -9,7 +9,7 @@ import com.hmdzl.spspd.effects.BlobEmitter; import com.hmdzl.spspd.effects.particles.DeadParticle; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class WeatherOfDead extends Blob { diff --git a/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfQuite.java b/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfQuite.java index 9fa1379c..7cead418 100644 --- a/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfQuite.java +++ b/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfQuite.java @@ -8,7 +8,7 @@ import com.hmdzl.spspd.effects.BlobEmitter; import com.hmdzl.spspd.effects.particles.ShaftParticle; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class WeatherOfQuite extends Blob { diff --git a/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfRain.java b/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfRain.java index 884d8c91..6207a81c 100644 --- a/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfRain.java +++ b/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfRain.java @@ -9,7 +9,7 @@ import com.hmdzl.spspd.effects.BlobEmitter; import com.hmdzl.spspd.effects.particles.RainParticle; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class WeatherOfRain extends Blob { diff --git a/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfSand.java b/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfSand.java index 50815020..26ea2d73 100644 --- a/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfSand.java +++ b/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfSand.java @@ -9,7 +9,7 @@ import com.hmdzl.spspd.effects.BlobEmitter; import com.hmdzl.spspd.effects.particles.SandParticle; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class WeatherOfSand extends Blob { diff --git a/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfSnow.java b/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfSnow.java index 1fdbed87..e6fb4093 100644 --- a/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfSnow.java +++ b/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfSnow.java @@ -9,7 +9,7 @@ import com.hmdzl.spspd.effects.BlobEmitter; import com.hmdzl.spspd.effects.particles.SnowParticle; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class WeatherOfSnow extends Blob { diff --git a/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfSun.java b/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfSun.java index 97f57c1e..3e20cdc3 100644 --- a/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfSun.java +++ b/java/com/hmdzl/spspd/actors/blobs/weather/WeatherOfSun.java @@ -9,7 +9,7 @@ import com.hmdzl.spspd.effects.BlobEmitter; import com.hmdzl.spspd.effects.particles.ShaftParticle; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class WeatherOfSun extends Blob { diff --git a/java/com/hmdzl/spspd/actors/buffs/AflyBless.java b/java/com/hmdzl/spspd/actors/buffs/AflyBless.java index 1679fd43..7cb81f84 100644 --- a/java/com/hmdzl/spspd/actors/buffs/AflyBless.java +++ b/java/com/hmdzl/spspd/actors/buffs/AflyBless.java @@ -20,7 +20,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class AflyBless extends FlavourBuff { @@ -46,4 +46,5 @@ public String toString() { public String desc() { return Messages.get(this, "desc", dispTurns()); } + } diff --git a/java/com/hmdzl/spspd/actors/buffs/Amok.java b/java/com/hmdzl/spspd/actors/buffs/Amok.java index 52510154..a9bc98ca 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Amok.java +++ b/java/com/hmdzl/spspd/actors/buffs/Amok.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.actors.mobs.Mob; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Amok extends FlavourBuff { diff --git a/java/com/hmdzl/spspd/actors/buffs/Arcane.java b/java/com/hmdzl/spspd/actors/buffs/Arcane.java index ed315833..6c462064 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Arcane.java +++ b/java/com/hmdzl/spspd/actors/buffs/Arcane.java @@ -17,13 +17,17 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Arcane extends FlavourBuff { public static final float DURATION = 30f; + { + type = buffType.POSITIVE; + } + @Override public int icon() { return BuffIndicator.ARCANE; @@ -38,4 +42,5 @@ public String toString() { public String desc() { return Messages.get(this, "desc", dispTurns()); } + } diff --git a/java/com/hmdzl/spspd/actors/buffs/ArmorBreak.java b/java/com/hmdzl/spspd/actors/buffs/ArmorBreak.java index d8599590..b01f3b98 100644 --- a/java/com/hmdzl/spspd/actors/buffs/ArmorBreak.java +++ b/java/com/hmdzl/spspd/actors/buffs/ArmorBreak.java @@ -20,7 +20,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; @@ -46,7 +46,8 @@ public void restoreFromBundle(Bundle bundle) { public void set(float duration) { this.left = duration; - }; + } + public static final float DURATION = 10f; { diff --git a/java/com/hmdzl/spspd/actors/buffs/AttackDown.java b/java/com/hmdzl/spspd/actors/buffs/AttackDown.java index 3637893d..3ddb0274 100644 --- a/java/com/hmdzl/spspd/actors/buffs/AttackDown.java +++ b/java/com/hmdzl/spspd/actors/buffs/AttackDown.java @@ -17,9 +17,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; @@ -45,7 +43,7 @@ public void restoreFromBundle(Bundle bundle) { public void set(float duration) { this.left = duration; - }; + } { type = buffType.NEGATIVE; diff --git a/java/com/hmdzl/spspd/actors/buffs/AttackUp.java b/java/com/hmdzl/spspd/actors/buffs/AttackUp.java index 2317c3b5..443855af 100644 --- a/java/com/hmdzl/spspd/actors/buffs/AttackUp.java +++ b/java/com/hmdzl/spspd/actors/buffs/AttackUp.java @@ -17,9 +17,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; @@ -45,7 +43,7 @@ public void restoreFromBundle(Bundle bundle) { public void set(float duration) { this.left = duration; - }; + } { type = buffType.POSITIVE; @@ -53,11 +51,11 @@ public void set(float duration) { public boolean act() { - spend(TICK); - left -= TICK; - if (left <= 0) - detach(); - return true; + spend(TICK); + left -= TICK; + if (left <= 0) + detach(); + return true; } @Override diff --git a/java/com/hmdzl/spspd/actors/buffs/Awareness.java b/java/com/hmdzl/spspd/actors/buffs/Awareness.java index 12e0e25e..12c3f672 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Awareness.java +++ b/java/com/hmdzl/spspd/actors/buffs/Awareness.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Awareness extends FlavourBuff { @@ -49,4 +49,5 @@ public void detach() { public String desc() { return Messages.get(this, "desc", dispTurns()); } + } diff --git a/java/com/hmdzl/spspd/actors/buffs/Barkskin.java b/java/com/hmdzl/spspd/actors/buffs/Barkskin.java index 3dd6446d..7d9cc629 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Barkskin.java +++ b/java/com/hmdzl/spspd/actors/buffs/Barkskin.java @@ -17,7 +17,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; diff --git a/java/com/hmdzl/spspd/actors/buffs/BeCorrupt.java b/java/com/hmdzl/spspd/actors/buffs/BeCorrupt.java new file mode 100644 index 00000000..386f5315 --- /dev/null +++ b/java/com/hmdzl/spspd/actors/buffs/BeCorrupt.java @@ -0,0 +1,85 @@ +package com.hmdzl.spspd.actors.buffs; + +import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; +import com.hmdzl.spspd.ui.BuffIndicator; +import com.watabou.utils.Bundle; + +public class BeCorrupt extends Buff { + + private static final float STEP = 1f; + + private int lvl; + private int left; + + @Override + public boolean attachTo(Char target) { + left = target.HP; + return super.attachTo(target); + } + + @Override + public boolean act() { + + if (target.isAlive()) { + if(left < target.HP){ + lvl -= (target.HP - left); + target.HP = Math.max(1,left-1); + left = target.HP; + } + } + spend(STEP); + if (lvl <= 0 ) { + detach(); + } + return true; + } + + //public int absorb(int damage) { + //if (level <= damage) { + //detach(); + //return damage - level; + //} else { + //level -= damage; + //return 0; + //} + //} + + public void level(int value) { + if (lvl < value) { + lvl = value; + } + } + + @Override + public int icon() { + return BuffIndicator.BE_CORRUPT; + } + + @Override + public String toString() { + return Messages.get(this, "name"); + } + + @Override + public String desc() { + return Messages.get(this, "desc", lvl); + } + + private static final String LEFT = "left"; + private static final String LEVEL = "level"; + + @Override + public void storeInBundle(Bundle bundle) { + super.storeInBundle(bundle); + bundle.put(LEVEL, lvl); + bundle.put(LEFT, left); + } + + @Override + public void restoreFromBundle(Bundle bundle) { + super.restoreFromBundle(bundle); + lvl = bundle.getInt(LEVEL); + left = bundle.getInt(LEFT); + } + } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/buffs/BeOld.java b/java/com/hmdzl/spspd/actors/buffs/BeOld.java new file mode 100644 index 00000000..f0b3f55e --- /dev/null +++ b/java/com/hmdzl/spspd/actors/buffs/BeOld.java @@ -0,0 +1,115 @@ +/* +` * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.actors.buffs; + +import com.hmdzl.spspd.Badges; +import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.blobs.HealLight; +import com.hmdzl.spspd.actors.hero.Hero; +import com.hmdzl.spspd.effects.CellEmitter; +import com.hmdzl.spspd.effects.particles.PoisonParticle; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; +import com.hmdzl.spspd.ui.BuffIndicator; +import com.watabou.utils.Bundle; + +public class BeOld extends Buff implements Hero.Doom { + + protected float left; + + private static final String LEFT = "left"; + + @Override + public void storeInBundle(Bundle bundle) { + super.storeInBundle(bundle); + bundle.put(LEFT, left); + + } + + @Override + public void restoreFromBundle(Bundle bundle) { + super.restoreFromBundle(bundle); + left = bundle.getFloat(LEFT); + } + + public void set(float duration) { + this.left = duration; + } + + @Override + public int icon() { + return BuffIndicator.BE_OLD; + } + + @Override + public String toString() { + return Messages.get(this, "name"); + } + + @Override + public String heroMessage() { + return Messages.get(this, "heromsg"); + } + + @Override + public String desc() { + return Messages.get(this, "desc", dispTurns(left)); + } + + @Override + public boolean attachTo(Char target) { + if (super.attachTo(target) && target.sprite != null){ + CellEmitter.center(target.pos).burst( PoisonParticle.SPLASH, 5 ); + return true; + } else + return false; + } + + @Override + public boolean act() { + if (target.isAlive()) { + + target.damage(2, this); + spend(TICK); + + if ((left -= TICK) <= 0) { + detach(); + } + + } else { + + detach(); + + } + + return true; + } + + { + immunities.add( BerryRegeneration.class ); + immunities.add( HealLight.class ); + } + + @Override + public void onDeath() { + Badges.validateDeathFromPoison(); + + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); + //GLog.n("You died from poison..."); + } +} \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/buffs/BerryRegeneration.java b/java/com/hmdzl/spspd/actors/buffs/BerryRegeneration.java index cd910de2..22039730 100644 --- a/java/com/hmdzl/spspd/actors/buffs/BerryRegeneration.java +++ b/java/com/hmdzl/spspd/actors/buffs/BerryRegeneration.java @@ -19,7 +19,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.hero.HeroSubClass; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; diff --git a/java/com/hmdzl/spspd/actors/buffs/Bleeding.java b/java/com/hmdzl/spspd/actors/buffs/Bleeding.java index 5cd0fbb3..73af0998 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Bleeding.java +++ b/java/com/hmdzl/spspd/actors/buffs/Bleeding.java @@ -18,9 +18,8 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.effects.Splash; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; import com.watabou.utils.PointF; @@ -51,9 +50,9 @@ public void restoreFromBundle(Bundle bundle) { public void set(int level) { this.level = level; - }; + } - @Override + @Override public int icon() { return BuffIndicator.BLEEDING; } @@ -77,7 +76,7 @@ public boolean act() { } if (target == Dungeon.hero && !target.isAlive()) { - Dungeon.fail(Messages.format(ResultDescriptions.BLEEDING)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n("You bled to death..."); } diff --git a/java/com/hmdzl/spspd/actors/buffs/Bless.java b/java/com/hmdzl/spspd/actors/buffs/Bless.java index 30947fb5..ee88b27e 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Bless.java +++ b/java/com/hmdzl/spspd/actors/buffs/Bless.java @@ -37,13 +37,16 @@ import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSun; import com.hmdzl.spspd.actors.blobs.Web; import com.hmdzl.spspd.levels.traps.LightningTrap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Bless extends FlavourBuff { public static final float DURATION = 30f; + { + type = buffType.NEUTRAL; + } @Override public int icon() { return BuffIndicator.BLESS; @@ -55,27 +58,27 @@ public String toString() { } { - immunities.add( ParalyticGas.class ); - immunities.add( ToxicGas.class ); - immunities.add( ConfusionGas.class ); - immunities.add( StenchGas.class ); - immunities.add( VenomGas.class ); - immunities.add( CorruptGas.class ); - immunities.add( Fire.class ); - immunities.add( Freezing.class ); - immunities.add( ElectriShock.class ); - immunities.add( LightningTrap.Electricity.class ); - immunities.add( Regrowth.class ); - immunities.add( Web.class ); - immunities.add( ShockWeb.class ); - immunities.add( Hot.class ); - immunities.add( Cold.class ); - immunities.add( Wet.class ); - immunities.add( Dry.class ); - immunities.add(WeatherOfRain.class); - immunities.add(WeatherOfSand.class); - immunities.add(WeatherOfSnow.class); - immunities.add(WeatherOfSun.class); + resistances.add( ParalyticGas.class ); + resistances.add( ToxicGas.class ); + resistances.add( ConfusionGas.class ); + resistances.add( StenchGas.class ); + resistances.add( VenomGas.class ); + resistances.add( CorruptGas.class ); + resistances.add( Fire.class ); + resistances.add( Freezing.class ); + resistances.add( ElectriShock.class ); + resistances.add( LightningTrap.Electricity.class ); + resistances.add( Regrowth.class ); + resistances.add( Web.class ); + resistances.add( ShockWeb.class ); + resistances.add( Hot.class ); + resistances.add( Cold.class ); + resistances.add( Wet.class ); + resistances.add( Dry.class ); + resistances.add(WeatherOfRain.class); + resistances.add(WeatherOfSand.class); + resistances.add(WeatherOfSnow.class); + resistances.add(WeatherOfSun.class); } @Override diff --git a/java/com/hmdzl/spspd/actors/buffs/Blindness.java b/java/com/hmdzl/spspd/actors/buffs/Blindness.java index f43d099e..0f729689 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Blindness.java +++ b/java/com/hmdzl/spspd/actors/buffs/Blindness.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Blindness extends FlavourBuff { diff --git a/java/com/hmdzl/spspd/actors/buffs/BloodAngry.java b/java/com/hmdzl/spspd/actors/buffs/BloodAngry.java index 04ffbf2c..b0ce537b 100644 --- a/java/com/hmdzl/spspd/actors/buffs/BloodAngry.java +++ b/java/com/hmdzl/spspd/actors/buffs/BloodAngry.java @@ -37,7 +37,7 @@ import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSun; import com.hmdzl.spspd.actors.blobs.Web; import com.hmdzl.spspd.levels.traps.LightningTrap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; diff --git a/java/com/hmdzl/spspd/actors/buffs/BloodImbue.java b/java/com/hmdzl/spspd/actors/buffs/BloodImbue.java index bc19f6f4..fedb25ae 100644 --- a/java/com/hmdzl/spspd/actors/buffs/BloodImbue.java +++ b/java/com/hmdzl/spspd/actors/buffs/BloodImbue.java @@ -18,10 +18,11 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Random; + /** * Created by debenhame on 19/11/2014. */ @@ -70,7 +71,7 @@ public String desc() { immunities.add(Roots.class); immunities.add(Slow.class); immunities.add(Bleeding.class); - immunities.add(Weakness.class); + immunities.add(STRdown.class); } } diff --git a/java/com/hmdzl/spspd/actors/buffs/BoxStar.java b/java/com/hmdzl/spspd/actors/buffs/BoxStar.java index 597acab9..00e14dc2 100644 --- a/java/com/hmdzl/spspd/actors/buffs/BoxStar.java +++ b/java/com/hmdzl/spspd/actors/buffs/BoxStar.java @@ -18,15 +18,14 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.messages.Messages; -import com.hmdzl.spspd.sprites.CharSprite; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; -import com.watabou.utils.Bundle; -import com.watabou.utils.Random; + public class BoxStar extends FlavourBuff { + public static final float DURATION = 10f; + { type = buffType.POSITIVE; } diff --git a/java/com/hmdzl/spspd/actors/buffs/Buff.java b/java/com/hmdzl/spspd/actors/buffs/Buff.java index 4f1e17d0..29babc64 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Buff.java +++ b/java/com/hmdzl/spspd/actors/buffs/Buff.java @@ -17,27 +17,47 @@ */ package com.hmdzl.spspd.actors.buffs; -import java.text.DecimalFormat; -import java.util.HashSet; - import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.ui.BuffIndicator; +import java.text.DecimalFormat; +import java.util.HashSet; + public class Buff extends Actor { public Char target; - public enum buffType {POSITIVE, NEGATIVE, NEUTRAL, SILENT}; - public buffType type = buffType.SILENT; - - public HashSet> resistances = new HashSet>(); + public enum buffType {POSITIVE, NEGATIVE, NEUTRAL, SILENT} + + public buffType type = buffType.SILENT; + + //public HashSet> resistances = new HashSet>(); + + protected HashSet resistances = new HashSet<>(); + public HashSet resistances() { + return new HashSet<>(resistances); + } - public HashSet> immunities = new HashSet>(); + //public HashSet> immunities = new HashSet>(); + protected HashSet immunities = new HashSet<>(); + + public HashSet immunities() { + return new HashSet<>(immunities); + } + + //public HashSet> weakness = new HashSet>(); + + protected HashSet weakness = new HashSet<>(); + public HashSet weakness() { + return new HashSet<>(weakness); + } + public boolean attachTo(Char target) { - if (target.immunities().contains(getClass())) { + //if (target.immunities().contains(getClass())) { + if (target.isImmune( getClass() )) { return false; } @@ -48,11 +68,12 @@ public boolean attachTo(Char target) { if (target.sprite != null) fx( true ); return true; } else + this.target = null; return false; } public void detach() { - fx( false ); + if (target.sprite != null) fx( false ); target.remove(this); } @@ -68,9 +89,9 @@ public int icon() { public void fx(boolean on) { //do nothing by default - }; - - public String heroMessage(){ + } + + public String heroMessage(){ return null; } @@ -97,7 +118,7 @@ public static T append(Char target, Class buffClass) { public static T append(Char target, Class buffClass, float duration) { T buff = append(target, buffClass); - buff.spend(duration); + buff.spend(duration * target.resist(buffClass)*target.weak(buffClass)); return buff; } @@ -113,14 +134,14 @@ public static T affect(Char target, Class buffClass) { public static T affect(Char target, Class buffClass, float duration) { T buff = affect(target, buffClass); - buff.spend(duration); + buff.spend(duration * target.resist(buffClass)*target.weak(buffClass)); return buff; } public static T prolong(Char target, Class buffClass, float duration) { T buff = affect(target, buffClass); - buff.postpone(duration); + buff.postpone(duration * target.resist(buffClass)*target.weak(buffClass)); return buff; } diff --git a/java/com/hmdzl/spspd/actors/buffs/Burning.java b/java/com/hmdzl/spspd/actors/buffs/Burning.java index 6c9dbbb4..c5da02c7 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Burning.java +++ b/java/com/hmdzl/spspd/actors/buffs/Burning.java @@ -19,7 +19,6 @@ import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Blob; import com.hmdzl.spspd.actors.blobs.Fire; @@ -30,12 +29,11 @@ import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.food.meatfood.ChargrilledMeat; import com.hmdzl.spspd.items.food.meatfood.MysteryMeat; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; import com.hmdzl.spspd.items.scrolls.Scroll; import com.hmdzl.spspd.items.scrolls.ScrollOfMagicalInfusion; import com.hmdzl.spspd.items.scrolls.ScrollOfUpgrade; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.ui.BuffIndicator; @@ -141,6 +139,10 @@ public boolean act() { public void reignite(Char ch) { left = duration(ch); } + + public void reignite( Char ch, float duration ) { + left = duration; + } @Override public int icon() { @@ -165,11 +167,10 @@ public String toString() { } public static float duration(Char ch) { - Resistance r = ch.buff(Resistance.class); Tar tar = ch.buff(Tar.class); if (ch.isAlive() && tar!=null){ return DURATION; - } else return r != null ? r.durationFactor() * DURATION : DURATION; + } else return DURATION; } @@ -183,7 +184,7 @@ public void onDeath() { Badges.validateDeathFromFire(); - Dungeon.fail(Messages.format(ResultDescriptions.BURNING)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(TXT_BURNED_TO_DEATH); } } diff --git a/java/com/hmdzl/spspd/actors/buffs/Charm.java b/java/com/hmdzl/spspd/actors/buffs/Charm.java index 8731fee1..5114be9c 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Charm.java +++ b/java/com/hmdzl/spspd/actors/buffs/Charm.java @@ -17,9 +17,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; @@ -55,11 +53,6 @@ public String toString() { return Messages.get(this, "name"); } - public static float durationFactor(Char ch) { - Resistance r = ch.buff(Resistance.class); - return r != null ? r.durationFactor() : 1; - } - @Override public String heroMessage() { return Messages.get(this, "heromsg"); diff --git a/java/com/hmdzl/spspd/actors/buffs/Chill.java b/java/com/hmdzl/spspd/actors/buffs/Chill.java index 81ab6899..70b6d80f 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Chill.java +++ b/java/com/hmdzl/spspd/actors/buffs/Chill.java @@ -28,7 +28,7 @@ import com.hmdzl.spspd.items.potions.Potion; import com.hmdzl.spspd.items.potions.PotionOfMight; import com.hmdzl.spspd.items.potions.PotionOfStrength; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.ui.BuffIndicator; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/actors/buffs/Cold.java b/java/com/hmdzl/spspd/actors/buffs/Cold.java index c3f52a0e..783184af 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Cold.java +++ b/java/com/hmdzl/spspd/actors/buffs/Cold.java @@ -20,7 +20,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Cold extends FlavourBuff { diff --git a/java/com/hmdzl/spspd/actors/buffs/Combo.java b/java/com/hmdzl/spspd/actors/buffs/Combo.java index c0cdecde..7ad4ece8 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Combo.java +++ b/java/com/hmdzl/spspd/actors/buffs/Combo.java @@ -19,7 +19,7 @@ import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/actors/buffs/Corruption.java b/java/com/hmdzl/spspd/actors/buffs/Corruption.java index a3fd2e0d..7ea8999c 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Corruption.java +++ b/java/com/hmdzl/spspd/actors/buffs/Corruption.java @@ -22,7 +22,7 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.ui.BuffIndicator; diff --git a/java/com/hmdzl/spspd/actors/buffs/CountDown.java b/java/com/hmdzl/spspd/actors/buffs/CountDown.java index 3b6d74aa..330e2c41 100644 --- a/java/com/hmdzl/spspd/actors/buffs/CountDown.java +++ b/java/com/hmdzl/spspd/actors/buffs/CountDown.java @@ -18,9 +18,8 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.effects.particles.ShadowParticle; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; @@ -74,7 +73,7 @@ public boolean act() { } if (!target.isAlive() && target == Dungeon.hero) { - Dungeon.fail(Messages.format(ResultDescriptions.COUNTDOWN)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(TXT_HERO_KILLED, toString()); } diff --git a/java/com/hmdzl/spspd/actors/buffs/Cripple.java b/java/com/hmdzl/spspd/actors/buffs/Cripple.java index 54d68e33..0605c849 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Cripple.java +++ b/java/com/hmdzl/spspd/actors/buffs/Cripple.java @@ -17,7 +17,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Cripple extends FlavourBuff { diff --git a/java/com/hmdzl/spspd/actors/buffs/DBurning.java b/java/com/hmdzl/spspd/actors/buffs/DBurning.java index d3001ff0..9ecb3ee8 100644 --- a/java/com/hmdzl/spspd/actors/buffs/DBurning.java +++ b/java/com/hmdzl/spspd/actors/buffs/DBurning.java @@ -19,27 +19,11 @@ import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.actors.blobs.Blob; -import com.hmdzl.spspd.actors.blobs.Fire; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.actors.mobs.Thief; -import com.hmdzl.spspd.effects.particles.ElmoParticle; -import com.hmdzl.spspd.items.Heap; -import com.hmdzl.spspd.items.Item; -import com.hmdzl.spspd.items.food.meatfood.ChargrilledMeat; -import com.hmdzl.spspd.items.food.meatfood.MysteryMeat; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.items.scrolls.Scroll; -import com.hmdzl.spspd.items.scrolls.ScrollOfMagicalInfusion; -import com.hmdzl.spspd.items.scrolls.ScrollOfUpgrade; -import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; -import com.hmdzl.spspd.scenes.GameScene; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.ui.BuffIndicator; -import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Bundle; import com.watabou.utils.Random; @@ -98,9 +82,13 @@ public boolean act() { } public void reignite(Char ch) { - left = duration(ch); + left = DURATION; } + public void reignite( Char ch, float duration ) { + left = duration; + } + @Override public int icon() { return BuffIndicator.FIRE; @@ -122,11 +110,6 @@ public String heroMessage() { public String toString() { return Messages.get(this, "name"); } - - public static float duration(Char ch) { - Resistance r = ch.buff(Resistance.class); - return r != null ? r.durationFactor() * DURATION : DURATION; - } @Override public String desc() { @@ -138,7 +121,7 @@ public void onDeath() { Badges.validateDeathFromFire(); - Dungeon.fail(Messages.format(ResultDescriptions.BURNING)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(TXT_BURNED_TO_DEATH); } } diff --git a/java/com/hmdzl/spspd/actors/buffs/DamageUp.java b/java/com/hmdzl/spspd/actors/buffs/DamageUp.java index 9e08955d..3adfa1a6 100644 --- a/java/com/hmdzl/spspd/actors/buffs/DamageUp.java +++ b/java/com/hmdzl/spspd/actors/buffs/DamageUp.java @@ -17,9 +17,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; diff --git a/java/com/hmdzl/spspd/actors/buffs/DeadRaise.java b/java/com/hmdzl/spspd/actors/buffs/DeadRaise.java index f1de81fc..0bc1136b 100644 --- a/java/com/hmdzl/spspd/actors/buffs/DeadRaise.java +++ b/java/com/hmdzl/spspd/actors/buffs/DeadRaise.java @@ -20,7 +20,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class DeadRaise extends FlavourBuff { diff --git a/java/com/hmdzl/spspd/actors/buffs/DefenceUp.java b/java/com/hmdzl/spspd/actors/buffs/DefenceUp.java index 894865ef..fc4584bf 100644 --- a/java/com/hmdzl/spspd/actors/buffs/DefenceUp.java +++ b/java/com/hmdzl/spspd/actors/buffs/DefenceUp.java @@ -17,9 +17,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; @@ -45,7 +43,7 @@ public void restoreFromBundle(Bundle bundle) { public void set(float duration) { this.left = duration; - }; + } { type = buffType.POSITIVE; diff --git a/java/com/hmdzl/spspd/actors/buffs/DelayProtect.java b/java/com/hmdzl/spspd/actors/buffs/DelayProtect.java new file mode 100644 index 00000000..89e299e4 --- /dev/null +++ b/java/com/hmdzl/spspd/actors/buffs/DelayProtect.java @@ -0,0 +1,65 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.actors.buffs; + +import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; +import com.hmdzl.spspd.ui.BuffIndicator; +import com.watabou.utils.Random; + +public class DelayProtect extends Buff { + + { + type = buffType.NEUTRAL; + } + + + @Override + public int icon() { + return BuffIndicator.DROWSY; + } + + @Override + public boolean attachTo(Char target) { + if (!target.immunities().contains(GlassShield.class) + && super.attachTo(target)) { + if (cooldown() == 0) + spend(Random.Int(1, 2)); + return true; + } + return false; + } + + @Override + public boolean act() { + Buff.affect(target, GlassShield.class); + + detach(); + return true; + } + + @Override + public String toString() { + return Messages.get(this, "name"); + } + + @Override + public String desc() { + return Messages.get(this, "desc", dispTurns(cooldown()+1)); + } +} diff --git a/java/com/hmdzl/spspd/actors/buffs/Dewcharge.java b/java/com/hmdzl/spspd/actors/buffs/Dewcharge.java index 81e7afc1..4c59f108 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Dewcharge.java +++ b/java/com/hmdzl/spspd/actors/buffs/Dewcharge.java @@ -17,17 +17,80 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; +import com.watabou.utils.Bundle; -public class Dewcharge extends FlavourBuff { +public class Dewcharge extends Buff { public static final float DURATION = 300f; + + private int dewleft = 0; + + private static final String DEWLEFT = "dewleft"; + + public boolean isDewing() { + return dewleft > 2; + } + + @Override + public void storeInBundle(Bundle bundle) { + super.storeInBundle(bundle); + bundle.put(DEWLEFT, dewleft); + } + @Override + public void restoreFromBundle(Bundle bundle) { + super.restoreFromBundle(bundle); + dewleft = bundle.getInt(DEWLEFT); + } + @Override public int icon() { - return BuffIndicator.DEWCHARGE; + if (dewleft < 2) { + return BuffIndicator.NONE; + } else { + return BuffIndicator.DEWCHARGE; + } + } + + @Override + public boolean act() { + if (target.isAlive()) { + + spend(TICK); + boolean statusUpdated = false; + if (dewleft > 2) { + dewleft = dewleft-1; + } + + if (dewleft < 2){ + statusUpdated = true; + } + + if (statusUpdated) { + BuffIndicator.refreshHero(); + } + + } else { + + detach(); + + } + + return true; + } + + public int level() { + return dewleft; + } + + public void level(int value) { + if (dewleft < value) { + dewleft = value; + } + } @Override public String toString() { @@ -36,7 +99,7 @@ public String toString() { @Override public String desc() { - return Messages.get(this, "desc", dispTurns(cooldown()+1)); + return Messages.get(this, "desc", dewleft-2); } } diff --git a/java/com/hmdzl/spspd/actors/buffs/Disarm.java b/java/com/hmdzl/spspd/actors/buffs/Disarm.java index 6ad8c9e5..21472a58 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Disarm.java +++ b/java/com/hmdzl/spspd/actors/buffs/Disarm.java @@ -17,9 +17,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Disarm extends FlavourBuff { @@ -45,8 +43,5 @@ public String desc() { return Messages.get(this, "desc", dispTurns()); } - public static float duration(Char ch) { - Resistance r = ch.buff(Resistance.class); - return r != null ? r.durationFactor() * DURATION : DURATION; - } + } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/buffs/Drowsy.java b/java/com/hmdzl/spspd/actors/buffs/Drowsy.java index eba176f6..04b24897 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Drowsy.java +++ b/java/com/hmdzl/spspd/actors/buffs/Drowsy.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/actors/buffs/Dry.java b/java/com/hmdzl/spspd/actors/buffs/Dry.java index 5a6e23fc..7a5c1210 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Dry.java +++ b/java/com/hmdzl/spspd/actors/buffs/Dry.java @@ -20,7 +20,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Dry extends FlavourBuff { diff --git a/java/com/hmdzl/spspd/actors/buffs/EarthImbue.java b/java/com/hmdzl/spspd/actors/buffs/EarthImbue.java index a482c2c6..43169338 100644 --- a/java/com/hmdzl/spspd/actors/buffs/EarthImbue.java +++ b/java/com/hmdzl/spspd/actors/buffs/EarthImbue.java @@ -1,3 +1,4 @@ + /* * Pixel Dungeon * Copyright (C) 2012-2014 Oleg Dolya @@ -21,9 +22,10 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.particles.EarthParticle; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; + /** * Created by debenhame on 19/11/2014. */ @@ -31,6 +33,10 @@ public class EarthImbue extends FlavourBuff { public static final float DURATION = 30f; + { + type = buffType.POSITIVE; + } + public void proc(Char enemy) { Buff.affect(enemy, Roots.class, 2); CellEmitter.bottom(enemy.pos).start(EarthParticle.FACTORY, 0.05f, 8); @@ -55,5 +61,6 @@ public String desc() { immunities.add(Paralysis.class); immunities.add(Roots.class); immunities.add(Slow.class); - } + } + } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/buffs/EnergyArmor.java b/java/com/hmdzl/spspd/actors/buffs/EnergyArmor.java new file mode 100644 index 00000000..a8c0470b --- /dev/null +++ b/java/com/hmdzl/spspd/actors/buffs/EnergyArmor.java @@ -0,0 +1,65 @@ +package com.hmdzl.spspd.actors.buffs; + +import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.ui.BuffIndicator; +import com.watabou.utils.Bundle; + +public class EnergyArmor extends Buff { + + private static final float STEP = 1f; + + private int level; + + + @Override + public boolean act() { + spend(STEP); + return true; + } + + public int absorb(int damage) { + + if (level <= damage) { + detach(); + return damage - level; + } else { + level -= damage; + return 0; + } + } + + public void level(int value) { + if (level < value) { + level = value; + } + } + + @Override + public int icon() { + return BuffIndicator.ARMOR; + } + + @Override + public String toString() { + return Messages.get(this, "name"); + } + + @Override + public String desc() { + return Messages.get(this, "desc", level); + } + + private static final String LEVEL = "level"; + + @Override + public void storeInBundle(Bundle bundle) { + super.storeInBundle(bundle); + bundle.put(LEVEL, level); + } + + @Override + public void restoreFromBundle(Bundle bundle) { + super.restoreFromBundle(bundle); + level = bundle.getInt(LEVEL); + } + } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/buffs/ExitFind.java b/java/com/hmdzl/spspd/actors/buffs/ExitFind.java index 502a473e..40064492 100644 --- a/java/com/hmdzl/spspd/actors/buffs/ExitFind.java +++ b/java/com/hmdzl/spspd/actors/buffs/ExitFind.java @@ -18,14 +18,14 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class ExitFind extends FlavourBuff { public static final float DURATION = 1f; { - type = buffType.POSITIVE; + type = buffType.NEUTRAL; } @Override diff --git a/java/com/hmdzl/spspd/actors/buffs/Feed.java b/java/com/hmdzl/spspd/actors/buffs/Feed.java index e94e33f0..ccc0b2df 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Feed.java +++ b/java/com/hmdzl/spspd/actors/buffs/Feed.java @@ -20,30 +20,18 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.actors.blobs.ConfusionGas; -import com.hmdzl.spspd.actors.blobs.CorruptGas; -import com.hmdzl.spspd.actors.blobs.ElectriShock; -import com.hmdzl.spspd.actors.blobs.Fire; -import com.hmdzl.spspd.actors.blobs.Freezing; -import com.hmdzl.spspd.actors.blobs.ParalyticGas; -import com.hmdzl.spspd.actors.blobs.Regrowth; -import com.hmdzl.spspd.actors.blobs.ShockWeb; -import com.hmdzl.spspd.actors.blobs.StenchGas; -import com.hmdzl.spspd.actors.blobs.ToxicGas; -import com.hmdzl.spspd.actors.blobs.VenomGas; -import com.hmdzl.spspd.actors.blobs.weather.WeatherOfRain; -import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSand; -import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSnow; -import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSun; -import com.hmdzl.spspd.actors.blobs.Web; -import com.hmdzl.spspd.levels.traps.LightningTrap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; + public class Feed extends FlavourBuff { public static final float DURATION = 30f; + { + type = buffType.POSITIVE; + } + @Override public int icon() { return BuffIndicator.FEED; @@ -57,5 +45,6 @@ public String toString() { @Override public String desc() { return Messages.get(this, "desc", dispTurns()); - } + } + } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/buffs/FireImbue.java b/java/com/hmdzl/spspd/actors/buffs/FireImbue.java index 789daf07..088215cd 100644 --- a/java/com/hmdzl/spspd/actors/buffs/FireImbue.java +++ b/java/com/hmdzl/spspd/actors/buffs/FireImbue.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.effects.particles.FlameParticle; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; @@ -55,9 +55,9 @@ public void restoreFromBundle(Bundle bundle) { public void set(float duration) { this.left = duration; - }; + } - @Override + @Override public boolean act() { if (Dungeon.level.map[target.pos] == Terrain.GRASS) { Level.set(target.pos, Terrain.EMBERS); diff --git a/java/com/hmdzl/spspd/actors/buffs/ForeverShadow.java b/java/com/hmdzl/spspd/actors/buffs/ForeverShadow.java index b45f415b..20761486 100644 --- a/java/com/hmdzl/spspd/actors/buffs/ForeverShadow.java +++ b/java/com/hmdzl/spspd/actors/buffs/ForeverShadow.java @@ -21,24 +21,7 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.actors.blobs.ConfusionGas; -import com.hmdzl.spspd.actors.blobs.CorruptGas; -import com.hmdzl.spspd.actors.blobs.ElectriShock; -import com.hmdzl.spspd.actors.blobs.Fire; -import com.hmdzl.spspd.actors.blobs.Freezing; -import com.hmdzl.spspd.actors.blobs.ParalyticGas; -import com.hmdzl.spspd.actors.blobs.Regrowth; -import com.hmdzl.spspd.actors.blobs.ShockWeb; -import com.hmdzl.spspd.actors.blobs.StenchGas; -import com.hmdzl.spspd.actors.blobs.ToxicGas; -import com.hmdzl.spspd.actors.blobs.VenomGas; -import com.hmdzl.spspd.actors.blobs.weather.WeatherOfRain; -import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSand; -import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSnow; -import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSun; -import com.hmdzl.spspd.actors.blobs.Web; -import com.hmdzl.spspd.levels.traps.LightningTrap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.ui.BuffIndicator; @@ -89,5 +72,6 @@ public String toString() { @Override public String desc() { return Messages.get(this, "desc", dispTurns()); - } + } + } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/buffs/Frost.java b/java/com/hmdzl/spspd/actors/buffs/Frost.java index d2df6c5d..ad6c1ec3 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Frost.java +++ b/java/com/hmdzl/spspd/actors/buffs/Frost.java @@ -30,11 +30,10 @@ import com.hmdzl.spspd.items.potions.Potion; import com.hmdzl.spspd.items.potions.PotionOfMight; import com.hmdzl.spspd.items.potions.PotionOfStrength; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; -import com.hmdzl.spspd.ui.BuffIndicator; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; +import com.hmdzl.spspd.ui.BuffIndicator; import com.hmdzl.spspd.utils.GLog; public class Frost extends FlavourBuff { @@ -119,11 +118,6 @@ public String desc() { return Messages.get(this, "desc", dispTurns()); } - public static float duration(Char ch) { - Resistance r = ch.buff(Resistance.class); - return r != null ? r.durationFactor() * DURATION : DURATION; - } - { immunities.add( Chill.class ); immunities.add( FrostGas.class ); @@ -131,5 +125,7 @@ public static float duration(Char ch) { immunities.add( Cold.class ); immunities.add(WeatherOfSnow.class); } - + public static float duration( Char ch ) { + return DURATION; + } } diff --git a/java/com/hmdzl/spspd/actors/buffs/FrostIce.java b/java/com/hmdzl/spspd/actors/buffs/FrostIce.java new file mode 100644 index 00000000..97834438 --- /dev/null +++ b/java/com/hmdzl/spspd/actors/buffs/FrostIce.java @@ -0,0 +1,137 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.actors.buffs; + +import com.hmdzl.spspd.Badges; +import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; +import com.hmdzl.spspd.ui.BuffIndicator; +import com.watabou.utils.Bundle; + +public class FrostIce extends Buff { + + private int pos; + private float left; + private static final String LEFT = "left"; + private static final String POS = "pos"; + private static final float DURATION = 8f; + + + @Override + public void storeInBundle(Bundle bundle) { + super.storeInBundle(bundle); + bundle.put(POS, pos); + bundle.put(LEFT, left); + } + + @Override + public void restoreFromBundle(Bundle bundle) { + super.restoreFromBundle(bundle); + pos = bundle.getInt(POS); + left = bundle.getInt(LEFT); + } + + { + type = buffType.NEGATIVE; + } + + + @Override + public boolean attachTo(Char target) { + pos = target.pos; + return super.attachTo(target); + } + + public boolean act() { + + if (target.isAlive()) { + + if (target.pos != pos) { + pos = 0; + if (target.pos != -1) pos = target.pos; + target.damage(Math.min(500,(int)(target.HT/30)),this); + } + + Buff.detach( target, Burning.class); + + } else { + detach(); + } + + spend(TICK); + left -= TICK; + + if (left <= 0 ) { + detach(); + } + + return true; + } + + public void reignite(Char ch) { + left = duration(ch); + } + + public void reignite( Char ch, float duration ) { + left = duration; + } + + @Override + public int icon() { + return BuffIndicator.FROST_BITE; + } + + @Override + public String toString() { + return Messages.get(this, "name"); + } + + @Override + public String desc() { + return Messages.get(this, "desc",left); + } + + public void set(float duration) { + this.left = duration; + } + + public float level() { return left; } + + public void level(int value) { + if (left < value) { + left = value; + } + } + + public static float duration(Char ch) { + if (ch.isAlive() && (Level.water[ch.pos] && !ch.flying)){ + return DURATION; + } else return DURATION; + + } + + public void onDeath() { + + Badges.validateDeathFromFire(); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); + + } + +} diff --git a/java/com/hmdzl/spspd/actors/buffs/FrostImbue.java b/java/com/hmdzl/spspd/actors/buffs/FrostImbue.java index a0e1abe8..d44c12af 100644 --- a/java/com/hmdzl/spspd/actors/buffs/FrostImbue.java +++ b/java/com/hmdzl/spspd/actors/buffs/FrostImbue.java @@ -23,9 +23,9 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.effects.particles.SnowParticle; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; -import com.watabou.noosa.Image; + public class FrostImbue extends FlavourBuff { @@ -58,5 +58,6 @@ public String desc() { { immunities.add( Frost.class ); immunities.add( Chill.class ); - } + } + } diff --git a/java/com/hmdzl/spspd/actors/buffs/FullMoonStrength.java b/java/com/hmdzl/spspd/actors/buffs/FullMoonStrength.java index 871e01ad..08230aec 100644 --- a/java/com/hmdzl/spspd/actors/buffs/FullMoonStrength.java +++ b/java/com/hmdzl/spspd/actors/buffs/FullMoonStrength.java @@ -19,7 +19,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.Statistics; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Bundle; public class FullMoonStrength extends Buff { diff --git a/java/com/hmdzl/spspd/actors/buffs/Fury.java b/java/com/hmdzl/spspd/actors/buffs/Fury.java index 7a7812cd..fefac111 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Fury.java +++ b/java/com/hmdzl/spspd/actors/buffs/Fury.java @@ -17,7 +17,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Fury extends Buff { diff --git a/java/com/hmdzl/spspd/actors/buffs/GasesImmunity.java b/java/com/hmdzl/spspd/actors/buffs/GasesImmunity.java index 23c4011d..fcba4af9 100644 --- a/java/com/hmdzl/spspd/actors/buffs/GasesImmunity.java +++ b/java/com/hmdzl/spspd/actors/buffs/GasesImmunity.java @@ -28,13 +28,18 @@ import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSand; import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSnow; import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSun; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; + public class GasesImmunity extends FlavourBuff { - public static final float DURATION = 15f; + public static final float DURATION = 20f; + { + type = buffType.POSITIVE; + } + @Override public int icon() { return BuffIndicator.IMMUNITY; @@ -64,4 +69,5 @@ public String toString() { public String desc() { return Messages.get(this, "desc", dispTurns()); } + } diff --git a/java/com/hmdzl/spspd/actors/buffs/GlassShield.java b/java/com/hmdzl/spspd/actors/buffs/GlassShield.java index b9c79f63..06eb5b47 100644 --- a/java/com/hmdzl/spspd/actors/buffs/GlassShield.java +++ b/java/com/hmdzl/spspd/actors/buffs/GlassShield.java @@ -17,9 +17,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; diff --git a/java/com/hmdzl/spspd/actors/buffs/GoldTouch.java b/java/com/hmdzl/spspd/actors/buffs/GoldTouch.java index b6f8bcb8..1bb06a6f 100644 --- a/java/com/hmdzl/spspd/actors/buffs/GoldTouch.java +++ b/java/com/hmdzl/spspd/actors/buffs/GoldTouch.java @@ -20,30 +20,18 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.actors.blobs.ConfusionGas; -import com.hmdzl.spspd.actors.blobs.CorruptGas; -import com.hmdzl.spspd.actors.blobs.ElectriShock; -import com.hmdzl.spspd.actors.blobs.Fire; -import com.hmdzl.spspd.actors.blobs.Freezing; -import com.hmdzl.spspd.actors.blobs.ParalyticGas; -import com.hmdzl.spspd.actors.blobs.Regrowth; -import com.hmdzl.spspd.actors.blobs.ShockWeb; -import com.hmdzl.spspd.actors.blobs.StenchGas; -import com.hmdzl.spspd.actors.blobs.ToxicGas; -import com.hmdzl.spspd.actors.blobs.VenomGas; -import com.hmdzl.spspd.actors.blobs.weather.WeatherOfRain; -import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSand; -import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSnow; -import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSun; -import com.hmdzl.spspd.actors.blobs.Web; -import com.hmdzl.spspd.levels.traps.LightningTrap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; + public class GoldTouch extends FlavourBuff { public static final float DURATION = 30f; + { + type = buffType.POSITIVE; + } + @Override public int icon() { return BuffIndicator.GOLDTOUCH; @@ -58,5 +46,6 @@ public String toString() { @Override public String desc() { return Messages.get(this, "desc", dispTurns()); - } + } + } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/buffs/GrowSeed.java b/java/com/hmdzl/spspd/actors/buffs/GrowSeed.java index 25909034..55ad85d2 100644 --- a/java/com/hmdzl/spspd/actors/buffs/GrowSeed.java +++ b/java/com/hmdzl/spspd/actors/buffs/GrowSeed.java @@ -18,13 +18,11 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; @@ -67,7 +65,7 @@ public boolean act() { for (int n : Level.NEIGHBOURS8) { Char ch = Actor.findChar(n+p); if (ch != null && ch != target && ch.isAlive()) { - ch.HP +=Random.Int( Math.min(dmg,ch.HT - ch.HP)); + ch.HP +=Random.IntRange( 1, Math.min(dmg,ch.HT - ch.HP)); } } @@ -89,9 +87,13 @@ public boolean act() { } public void reignite(Char ch) { - left = duration(ch); + left = DURATION; } + public void reignite( Char ch, float duration ) { + left = duration; + } + @Override public int icon() { return BuffIndicator.GROW_SEED; @@ -118,13 +120,8 @@ public String desc() { return Messages.get(this, "desc", dispTurns(left)); } - public static float duration(Char ch) { - Resistance r = ch.buff(Resistance.class); - return r != null ? r.durationFactor() * DURATION : DURATION; - } - @Override public void onDeath() { - Dungeon.fail(Messages.format(ResultDescriptions.ITEM)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); } } diff --git a/java/com/hmdzl/spspd/actors/buffs/HasteBuff.java b/java/com/hmdzl/spspd/actors/buffs/HasteBuff.java index 2edf568f..f64eb529 100644 --- a/java/com/hmdzl/spspd/actors/buffs/HasteBuff.java +++ b/java/com/hmdzl/spspd/actors/buffs/HasteBuff.java @@ -16,15 +16,18 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; + public class HasteBuff extends FlavourBuff { public static final float DURATION = 10f; + { + type = buffType.POSITIVE; + } + @Override public int icon() { return BuffIndicator.HASTE; diff --git a/java/com/hmdzl/spspd/actors/buffs/HighAttack.java b/java/com/hmdzl/spspd/actors/buffs/HighAttack.java index 2c039547..e7c5e0e3 100644 --- a/java/com/hmdzl/spspd/actors/buffs/HighAttack.java +++ b/java/com/hmdzl/spspd/actors/buffs/HighAttack.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; @@ -53,11 +53,7 @@ public void restoreFromBundle(Bundle bundle) { @Override public boolean attachTo(Char target) { - if (super.attachTo(target)) { - return true; - } else { - return false; - } + return super.attachTo(target); } public boolean act() { diff --git a/java/com/hmdzl/spspd/actors/buffs/HighLight.java b/java/com/hmdzl/spspd/actors/buffs/HighLight.java index 5143aaf5..c0eebcb9 100644 --- a/java/com/hmdzl/spspd/actors/buffs/HighLight.java +++ b/java/com/hmdzl/spspd/actors/buffs/HighLight.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.ui.BuffIndicator; @@ -27,13 +27,13 @@ public class HighLight extends FlavourBuff { public static final float DURATION = 500f; public static final int DISTANCE = 10; + { + type = buffType.NEUTRAL; + } + @Override public boolean attachTo(Char target) { - if (super.attachTo(target)) { - return true; - } else { - return false; - } + return super.attachTo(target); } @Override diff --git a/java/com/hmdzl/spspd/actors/buffs/HighVoice.java b/java/com/hmdzl/spspd/actors/buffs/HighVoice.java index 2e953041..721821e4 100644 --- a/java/com/hmdzl/spspd/actors/buffs/HighVoice.java +++ b/java/com/hmdzl/spspd/actors/buffs/HighVoice.java @@ -17,7 +17,7 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Bundle; @@ -27,6 +27,10 @@ public class HighVoice extends FlavourBuff { public static final float DURATION = 10f; + { + type = buffType.NEUTRAL; + } + @Override public int icon() { return BuffIndicator.VOICE_UP; @@ -48,9 +52,9 @@ public void restoreFromBundle(Bundle bundle) { public void set(float duration) { this.left = duration; - }; - - @Override + } + + @Override public boolean act() { if (target.isAlive()) { if (target.buff(HighVoice.class) != null && Random.Int(8) == 0) { @@ -58,7 +62,7 @@ public boolean act() { Buff.affect(target,HasteBuff.class,5f); GLog.p(Messages.get(this,"speed",Dungeon.hero.givenName())); } else { - target.HP += (int)(target.HT/4); + target.HP += target.HT/4; GLog.p(Messages.get(this,"heal",Dungeon.hero.givenName())); } } diff --git a/java/com/hmdzl/spspd/actors/buffs/Hot.java b/java/com/hmdzl/spspd/actors/buffs/Hot.java index 3208298f..adc450a9 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Hot.java +++ b/java/com/hmdzl/spspd/actors/buffs/Hot.java @@ -20,7 +20,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Hot extends FlavourBuff { diff --git a/java/com/hmdzl/spspd/actors/buffs/Hunger.java b/java/com/hmdzl/spspd/actors/buffs/Hunger.java index 61fbab21..cff4dede 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Hunger.java +++ b/java/com/hmdzl/spspd/actors/buffs/Hunger.java @@ -20,11 +20,10 @@ import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Challenges; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.artifacts.Artifact; import com.hmdzl.spspd.items.artifacts.HornOfPlenty; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Bundle; @@ -213,7 +212,7 @@ public void onDeath() { Badges.validateDeathFromHunger(); - Dungeon.fail(Messages.format(ResultDescriptions.HUNGER)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(TXT_DEATH); } } diff --git a/java/com/hmdzl/spspd/actors/buffs/Haste.java b/java/com/hmdzl/spspd/actors/buffs/InfJump.java similarity index 71% rename from java/com/hmdzl/spspd/actors/buffs/Haste.java rename to java/com/hmdzl/spspd/actors/buffs/InfJump.java index 791bf797..df67330e 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Haste.java +++ b/java/com/hmdzl/spspd/actors/buffs/InfJump.java @@ -1,5 +1,9 @@ /* - * Copyright (C) 2012-2014 Oleg Dolya + * Pixel Dungeon + * Copyright (C) 2012-2015 Oleg Dolya + * + * Shattered Pixel Dungeon + * Copyright (C) 2014-2015 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 @@ -16,18 +20,19 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; -public class Haste extends FlavourBuff { +public class InfJump extends FlavourBuff { - public static final float DURATION = 10f; + public static final float DURATION = 30f; + { + type = buffType.NEUTRAL; + } @Override public int icon() { - return BuffIndicator.HASTE; + return BuffIndicator.INF_JUMP; } @Override @@ -39,5 +44,4 @@ public String toString() { public String desc() { return Messages.get(this, "desc", dispTurns()); } - -} +} \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/buffs/Invisibility.java b/java/com/hmdzl/spspd/actors/buffs/Invisibility.java index f3e9295f..422cbb26 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Invisibility.java +++ b/java/com/hmdzl/spspd/actors/buffs/Invisibility.java @@ -21,10 +21,11 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.items.artifacts.CloakOfShadows; import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.ui.BuffIndicator; + public class Invisibility extends FlavourBuff { public static final float DURATION = 15f; @@ -89,5 +90,6 @@ public static void dispel() { if (timeFreeze != null) { timeFreeze.detach(); } - } + } + } diff --git a/java/com/hmdzl/spspd/actors/buffs/Levitation.java b/java/com/hmdzl/spspd/actors/buffs/Levitation.java index 9494cbc7..600e0a02 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Levitation.java +++ b/java/com/hmdzl/spspd/actors/buffs/Levitation.java @@ -19,14 +19,19 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.ui.BuffIndicator; + public class Levitation extends FlavourBuff { public static final float DURATION = 20f; + { + type = buffType.POSITIVE; + } + @Override public boolean attachTo(Char target) { if (super.attachTo(target)) { @@ -64,5 +69,6 @@ public String toString() { @Override public String desc() { return Messages.get(this, "desc", dispTurns()); - } + } + } diff --git a/java/com/hmdzl/spspd/actors/buffs/Light.java b/java/com/hmdzl/spspd/actors/buffs/Light.java index cbda0228..e7d281da 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Light.java +++ b/java/com/hmdzl/spspd/actors/buffs/Light.java @@ -19,7 +19,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.ui.BuffIndicator; @@ -28,6 +28,10 @@ public class Light extends FlavourBuff { public static final float DURATION = 300f; public static final int DISTANCE = 6; + { + type = buffType.NEUTRAL; + } + @Override public boolean attachTo(Char target) { if (super.attachTo(target)) { diff --git a/java/com/hmdzl/spspd/actors/buffs/LightShootAttack.java b/java/com/hmdzl/spspd/actors/buffs/LightShootAttack.java new file mode 100644 index 00000000..91b5f51e --- /dev/null +++ b/java/com/hmdzl/spspd/actors/buffs/LightShootAttack.java @@ -0,0 +1,135 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.actors.buffs; + +import com.hmdzl.spspd.Badges; +import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; +import com.hmdzl.spspd.ui.BuffIndicator; +import com.watabou.utils.Bundle; + +public class LightShootAttack extends Buff { + + private int pos; + private float left; + private static final String LEFT = "left"; + private static final String POS = "pos"; + private static final float DURATION = 8f; + + + @Override + public void storeInBundle(Bundle bundle) { + super.storeInBundle(bundle); + bundle.put(POS, pos); + bundle.put(LEFT, left); + } + + @Override + public void restoreFromBundle(Bundle bundle) { + super.restoreFromBundle(bundle); + pos = bundle.getInt(POS); + left = bundle.getInt(LEFT); + } + + { + type = buffType.NEGATIVE; + } + + + @Override + public boolean attachTo(Char target) { + pos = target.pos; + return super.attachTo(target); + } + + public boolean act() { + + if (target.isAlive()) { + int dist = Level.distance(target.pos, pos); + if (dist < 3) { + target.damage(Math.min(500,(int)(target.HT/30)),this); + } else detach(); + + //Buff.detach( target, Burning.class); + + } else { + detach(); + } + + spend(TICK); + left -= TICK; + + if (left <= 0 ) { + detach(); + } + + return true; + } + + public void reignite(Char ch) { + left = duration(ch); + } + + public void reignite( Char ch, float duration ) { + left = duration; + } + + @Override + public int icon() { + return BuffIndicator.LIGHT_ATK; + } + + @Override + public String toString() { + return Messages.get(this, "name"); + } + + @Override + public String desc() { + return Messages.get(this, "desc",left); + } + + public void set(float duration) { + this.left = duration; + } + + public float level() { return left; } + + public void level(int value) { + if (left < value) { + left = value; + } + } + + public static float duration(Char ch) { + if (ch.isAlive() && (Level.water[ch.pos] && !ch.flying)){ + return DURATION; + } else return DURATION; + + } + + public void onDeath() { + + Badges.validateDeathFromFire(); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); + + } + +} diff --git a/java/com/hmdzl/spspd/actors/buffs/Locked.java b/java/com/hmdzl/spspd/actors/buffs/Locked.java index 95417523..c2753979 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Locked.java +++ b/java/com/hmdzl/spspd/actors/buffs/Locked.java @@ -17,9 +17,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Locked extends FlavourBuff { @@ -45,8 +43,4 @@ public String desc() { return Messages.get(this, "desc", dispTurns()); } - public static float duration(Char ch) { - Resistance r = ch.buff(Resistance.class); - return r != null ? r.durationFactor() * DURATION : DURATION; - } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/buffs/LokisPoison.java b/java/com/hmdzl/spspd/actors/buffs/LokisPoison.java index 479a3c1f..e15fd9a1 100644 --- a/java/com/hmdzl/spspd/actors/buffs/LokisPoison.java +++ b/java/com/hmdzl/spspd/actors/buffs/LokisPoison.java @@ -19,13 +19,12 @@ import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.particles.PoisonParticle; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.items.rings.RingOfElements.RingResistance; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; @@ -54,9 +53,9 @@ public void restoreFromBundle(Bundle bundle) { public void set(float duration) { this.left = duration; - }; + } - @Override + @Override public int icon() { return BuffIndicator.POISON; } @@ -107,15 +106,15 @@ public boolean act() { } public static float durationFactor(Char ch) { - Resistance r = ch.buff(Resistance.class); - return r != null ? r.durationFactor() : 1; + RingResistance r = ch.buff(RingResistance.class); + return 1; } @Override public void onDeath() { Badges.validateDeathFromPoison(); - Dungeon.fail(Messages.format(ResultDescriptions.POISON)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n("You died from poison..."); } } diff --git a/java/com/hmdzl/spspd/actors/buffs/MagicArmor.java b/java/com/hmdzl/spspd/actors/buffs/MagicArmor.java new file mode 100644 index 00000000..d1bb8903 --- /dev/null +++ b/java/com/hmdzl/spspd/actors/buffs/MagicArmor.java @@ -0,0 +1,65 @@ +package com.hmdzl.spspd.actors.buffs; + +import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.ui.BuffIndicator; +import com.watabou.utils.Bundle; + +public class MagicArmor extends Buff { + + private static final float STEP = 1f; + + private int level; + + + @Override + public boolean act() { + spend(STEP); + return true; + } + + public int absorb(int damage) { + if (level <= damage) { + detach(); + return damage - level; + } else { + level -= damage; + return 0; + } + + } + + public void level(int value) { + if (level < value) { + level = value; + } + } + + @Override + public int icon() { + return BuffIndicator.ARMOR; + } + + @Override + public String toString() { + return Messages.get(this, "name"); + } + + @Override + public String desc() { + return Messages.get(this, "desc", level); + } + + private static final String LEVEL = "level"; + + @Override + public void storeInBundle(Bundle bundle) { + super.storeInBundle(bundle); + bundle.put(LEVEL, level); + } + + @Override + public void restoreFromBundle(Bundle bundle) { + super.restoreFromBundle(bundle); + level = bundle.getInt(LEVEL); + } + } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/buffs/MagicImmunity.java b/java/com/hmdzl/spspd/actors/buffs/MagicImmunity.java index 12530abf..ce030f81 100644 --- a/java/com/hmdzl/spspd/actors/buffs/MagicImmunity.java +++ b/java/com/hmdzl/spspd/actors/buffs/MagicImmunity.java @@ -17,8 +17,6 @@ */ package com.hmdzl.spspd.actors.buffs; -import java.util.HashSet; - import com.hmdzl.spspd.actors.blobs.ConfusionGas; import com.hmdzl.spspd.actors.blobs.CorruptGas; import com.hmdzl.spspd.actors.blobs.ParalyticGas; @@ -29,9 +27,10 @@ import com.hmdzl.spspd.actors.mobs.Warlock; import com.hmdzl.spspd.actors.mobs.Yog; import com.hmdzl.spspd.levels.traps.LightningTrap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; + public class MagicImmunity extends FlavourBuff { public static final float DURATION = 10f; @@ -69,6 +68,7 @@ public String desc() { immunities.add(Yog.BurningFist.class); immunities.add(BrokenRobot.class); immunities.add(CorruptGas.class); - } + } + } diff --git a/java/com/hmdzl/spspd/actors/buffs/MagicWeak.java b/java/com/hmdzl/spspd/actors/buffs/MagicWeak.java index c7bf5c8d..6088964a 100644 --- a/java/com/hmdzl/spspd/actors/buffs/MagicWeak.java +++ b/java/com/hmdzl/spspd/actors/buffs/MagicWeak.java @@ -20,7 +20,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class MagicWeak extends FlavourBuff { diff --git a/java/com/hmdzl/spspd/actors/buffs/MagicalSleep.java b/java/com/hmdzl/spspd/actors/buffs/MagicalSleep.java index 1c1ec546..577d75e2 100644 --- a/java/com/hmdzl/spspd/actors/buffs/MagicalSleep.java +++ b/java/com/hmdzl/spspd/actors/buffs/MagicalSleep.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.mobs.Mob; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/actors/buffs/MechArmor.java b/java/com/hmdzl/spspd/actors/buffs/MechArmor.java index 6c87d472..a8468dad 100644 --- a/java/com/hmdzl/spspd/actors/buffs/MechArmor.java +++ b/java/com/hmdzl/spspd/actors/buffs/MechArmor.java @@ -1,6 +1,5 @@ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.ui.BuffIndicator; @@ -22,6 +21,8 @@ public boolean act() { if (level <= 1) { detach(); Buff.detach( target, ShieldArmor.class ); + Buff.detach( target, MagicArmor.class ); + Buff.detach( target, EnergyArmor.class ); } } else { diff --git a/java/com/hmdzl/spspd/actors/buffs/MindVision.java b/java/com/hmdzl/spspd/actors/buffs/MindVision.java index a43f24da..161eed9f 100644 --- a/java/com/hmdzl/spspd/actors/buffs/MindVision.java +++ b/java/com/hmdzl/spspd/actors/buffs/MindVision.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class MindVision extends FlavourBuff { @@ -27,6 +27,10 @@ public class MindVision extends FlavourBuff { public int distance = 2; + { + type = buffType.NEUTRAL; + } + @Override public int icon() { return BuffIndicator.MIND_VISION; diff --git a/java/com/hmdzl/spspd/actors/buffs/MirrorShield.java b/java/com/hmdzl/spspd/actors/buffs/MirrorShield.java index 8008616a..0699d904 100644 --- a/java/com/hmdzl/spspd/actors/buffs/MirrorShield.java +++ b/java/com/hmdzl/spspd/actors/buffs/MirrorShield.java @@ -18,17 +18,15 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.ui.BuffIndicator; -import com.watabou.utils.Bundle; import com.watabou.utils.Random; public class MirrorShield extends FlavourBuff { { - type = buffType.POSITIVE; + type = buffType.NEUTRAL; } public int proc(int damage, Char attacker) { diff --git a/java/com/hmdzl/spspd/actors/buffs/Muscle.java b/java/com/hmdzl/spspd/actors/buffs/Muscle.java index 5edc7634..5e010fb5 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Muscle.java +++ b/java/com/hmdzl/spspd/actors/buffs/Muscle.java @@ -20,9 +20,10 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; + public class Muscle extends FlavourBuff { public static final float DURATION = 200f; diff --git a/java/com/hmdzl/spspd/actors/buffs/Needling.java b/java/com/hmdzl/spspd/actors/buffs/Needling.java index 5689508c..351b4430 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Needling.java +++ b/java/com/hmdzl/spspd/actors/buffs/Needling.java @@ -21,24 +21,7 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.actors.blobs.ConfusionGas; -import com.hmdzl.spspd.actors.blobs.CorruptGas; -import com.hmdzl.spspd.actors.blobs.ElectriShock; -import com.hmdzl.spspd.actors.blobs.Fire; -import com.hmdzl.spspd.actors.blobs.Freezing; -import com.hmdzl.spspd.actors.blobs.ParalyticGas; -import com.hmdzl.spspd.actors.blobs.Regrowth; -import com.hmdzl.spspd.actors.blobs.ShockWeb; -import com.hmdzl.spspd.actors.blobs.StenchGas; -import com.hmdzl.spspd.actors.blobs.ToxicGas; -import com.hmdzl.spspd.actors.blobs.VenomGas; -import com.hmdzl.spspd.actors.blobs.weather.WeatherOfRain; -import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSand; -import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSnow; -import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSun; -import com.hmdzl.spspd.actors.blobs.Web; -import com.hmdzl.spspd.levels.traps.LightningTrap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Random; @@ -76,5 +59,6 @@ public String toString() { @Override public String desc() { return Messages.get(this, "desc", dispTurns()); - } + } + } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/buffs/NewCombo.java b/java/com/hmdzl/spspd/actors/buffs/NewCombo.java index 808d8216..02f18707 100644 --- a/java/com/hmdzl/spspd/actors/buffs/NewCombo.java +++ b/java/com/hmdzl/spspd/actors/buffs/NewCombo.java @@ -30,7 +30,7 @@ import com.hmdzl.spspd.effects.Pushing; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSprite; @@ -153,8 +153,8 @@ public void doAction() { } private enum finisherType{ - CLOBBER, CLEAVE, SLAM, CRUSH; - } + CLOBBER, CLEAVE, SLAM, CRUSH + } private CellSelector.Listener finisher = new CellSelector.Listener() { @@ -245,7 +245,7 @@ private void doAttack(final Char enemy){ } break; case SLAM: - Buff.affect(target,ShieldArmor.class).level((int)(dmg/5)); + Buff.affect(target,ShieldArmor.class).level(dmg/5); break; default: //nothing diff --git a/java/com/hmdzl/spspd/actors/buffs/Notice.java b/java/com/hmdzl/spspd/actors/buffs/Notice.java index 44dfcc2f..e51d3116 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Notice.java +++ b/java/com/hmdzl/spspd/actors/buffs/Notice.java @@ -20,30 +20,17 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.actors.blobs.ConfusionGas; -import com.hmdzl.spspd.actors.blobs.CorruptGas; -import com.hmdzl.spspd.actors.blobs.ElectriShock; -import com.hmdzl.spspd.actors.blobs.Fire; -import com.hmdzl.spspd.actors.blobs.Freezing; -import com.hmdzl.spspd.actors.blobs.ParalyticGas; -import com.hmdzl.spspd.actors.blobs.Regrowth; -import com.hmdzl.spspd.actors.blobs.ShockWeb; -import com.hmdzl.spspd.actors.blobs.StenchGas; -import com.hmdzl.spspd.actors.blobs.ToxicGas; -import com.hmdzl.spspd.actors.blobs.VenomGas; -import com.hmdzl.spspd.actors.blobs.weather.WeatherOfRain; -import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSand; -import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSnow; -import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSun; -import com.hmdzl.spspd.actors.blobs.Web; -import com.hmdzl.spspd.levels.traps.LightningTrap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Notice extends FlavourBuff { public static final float DURATION = 30f; + { + type = buffType.POSITIVE; + } + @Override public int icon() { return BuffIndicator.NOTICE; @@ -59,5 +46,6 @@ public String toString() { @Override public String desc() { return Messages.get(this, "desc", dispTurns()); - } + } + } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/buffs/OnePunch.java b/java/com/hmdzl/spspd/actors/buffs/OnePunch.java new file mode 100644 index 00000000..1d04e3d3 --- /dev/null +++ b/java/com/hmdzl/spspd/actors/buffs/OnePunch.java @@ -0,0 +1,79 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.actors.buffs; + +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; +import com.hmdzl.spspd.ui.BuffIndicator; +import com.watabou.utils.Bundle; + + + +public class OnePunch extends Buff { + private int level = 0; + private static final String LEVEL = "level"; + @Override + public void storeInBundle(Bundle bundle) { + super.storeInBundle(bundle); + bundle.put(LEVEL, level); + } + + @Override + public void restoreFromBundle(Bundle bundle) { + super.restoreFromBundle(bundle); + level = bundle.getInt(LEVEL); + } + + { + type = buffType.POSITIVE; + } + + @Override + public int icon() { + return BuffIndicator.ATTACK_UP; + } + + public int level() { + return level; + } + + public void level(int value) { + if (level < value) { + level = value; + } + } + + @Override + public String toString() { + return Messages.get(this, "name"); + } + + @Override + public String desc() { + return Messages.get(this, "desc",level/10); + } + + @Override + public boolean act() { + spend(TICK); + return true; + } + + public void dispel(){ + detach(); + } +} diff --git a/java/com/hmdzl/spspd/actors/buffs/Ooze.java b/java/com/hmdzl/spspd/actors/buffs/Ooze.java index 8b8b0e20..d46a8ee0 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Ooze.java +++ b/java/com/hmdzl/spspd/actors/buffs/Ooze.java @@ -18,9 +18,8 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Random; @@ -58,7 +57,7 @@ public boolean act() { else if (Random.Int(2) == 0) target.damage(1, this); if (!target.isAlive() && target == Dungeon.hero) { - Dungeon.fail(Messages.format(ResultDescriptions.OOZE)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(TXT_HERO_KILLED, toString()); } spend(TICK); diff --git a/java/com/hmdzl/spspd/actors/buffs/Paralysis.java b/java/com/hmdzl/spspd/actors/buffs/Paralysis.java index 4130a313..fd55e13b 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Paralysis.java +++ b/java/com/hmdzl/spspd/actors/buffs/Paralysis.java @@ -18,8 +18,7 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.ui.BuffIndicator; @@ -75,7 +74,6 @@ public String desc() { } public static float duration(Char ch) { - Resistance r = ch.buff(Resistance.class); - return r != null ? r.durationFactor() * DURATION : DURATION; + return DURATION; } } diff --git a/java/com/hmdzl/spspd/actors/buffs/ParyAttack.java b/java/com/hmdzl/spspd/actors/buffs/ParyAttack.java index cb244278..929f0b52 100644 --- a/java/com/hmdzl/spspd/actors/buffs/ParyAttack.java +++ b/java/com/hmdzl/spspd/actors/buffs/ParyAttack.java @@ -17,8 +17,9 @@ */ package com.hmdzl.spspd.actors.buffs; +import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; @@ -58,11 +59,14 @@ public boolean act() { if (target.isAlive()) { - if (target.pos != pos) { + if (target.pos != pos || Dungeon.gold < level) { detach(); } level++; + if (level > 100) + Dungeon.gold -=level*10; + spend(TICK); } else { diff --git a/java/com/hmdzl/spspd/actors/buffs/Poison.java b/java/com/hmdzl/spspd/actors/buffs/Poison.java index beebf50c..6d06ab63 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Poison.java +++ b/java/com/hmdzl/spspd/actors/buffs/Poison.java @@ -19,13 +19,11 @@ import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.particles.PoisonParticle; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; @@ -50,9 +48,9 @@ public void restoreFromBundle(Bundle bundle) { public void set(float duration) { this.left = duration; - }; + } - @Override + @Override public int icon() { return BuffIndicator.POISON; } @@ -101,16 +99,11 @@ public boolean act() { return true; } - public static float durationFactor(Char ch) { - Resistance r = ch.buff(Resistance.class); - return r != null ? r.durationFactor() : 1; - } - @Override public void onDeath() { Badges.validateDeathFromPoison(); - Dungeon.fail(Messages.format(ResultDescriptions.POISON)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n("You died from poison..."); } } diff --git a/java/com/hmdzl/spspd/actors/buffs/Recharging.java b/java/com/hmdzl/spspd/actors/buffs/Recharging.java index 88191b1e..c80772ad 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Recharging.java +++ b/java/com/hmdzl/spspd/actors/buffs/Recharging.java @@ -20,13 +20,17 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Recharging extends FlavourBuff { public static final float DURATION = 40f; + { + type = buffType.POSITIVE; + } + @Override public int icon() { return BuffIndicator.RECHARGING; @@ -49,5 +53,6 @@ public float remainder() { @Override public String desc() { return Messages.get(this, "desc", dispTurns()); - } + } + } diff --git a/java/com/hmdzl/spspd/actors/buffs/Regeneration.java b/java/com/hmdzl/spspd/actors/buffs/Regeneration.java index e6dd6522..218ca1eb 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Regeneration.java +++ b/java/com/hmdzl/spspd/actors/buffs/Regeneration.java @@ -30,11 +30,11 @@ public class Regeneration extends Buff { @Override public boolean act() { if (target.isAlive()) { - if (!((Hero) target).isStarving()){ + if (!((Hero) target).isStarving() && !((Hero) target).isBeOld()){ if (Dungeon.hero.subClass == HeroSubClass.PASTOR && target.HP < target.HT*1.5){ - target.HP += 2*Math.max(1,(int)(Dungeon.hero.lvl/5)); + target.HP += 2*Math.max(1, Dungeon.hero.lvl/5); } else if (target.HP < target.HT) { - target.HP += Math.min((target.HT - target.HP),Math.max(1,(int)(Dungeon.hero.lvl/5))); + target.HP += Math.min((target.HT - target.HP),Math.max(1, Dungeon.hero.lvl/5)); } } diff --git a/java/com/hmdzl/spspd/actors/buffs/Rhythm.java b/java/com/hmdzl/spspd/actors/buffs/Rhythm.java index d5365df6..b7006926 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Rhythm.java +++ b/java/com/hmdzl/spspd/actors/buffs/Rhythm.java @@ -16,15 +16,17 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Rhythm extends FlavourBuff { public static final float DURATION = 10f; + { + type = buffType.POSITIVE; + } + @Override public int icon() { return BuffIndicator.RHYTHM; diff --git a/java/com/hmdzl/spspd/actors/buffs/Rhythm2.java b/java/com/hmdzl/spspd/actors/buffs/Rhythm2.java index 7ad51d7c..4d040dd8 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Rhythm2.java +++ b/java/com/hmdzl/spspd/actors/buffs/Rhythm2.java @@ -16,15 +16,18 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; + public class Rhythm2 extends FlavourBuff { public static final float DURATION = 10f; + { + type = buffType.POSITIVE; + } + @Override public int icon() { return BuffIndicator.RHYTHM2; diff --git a/java/com/hmdzl/spspd/actors/buffs/Roots.java b/java/com/hmdzl/spspd/actors/buffs/Roots.java index 5d9c08e1..ccda855b 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Roots.java +++ b/java/com/hmdzl/spspd/actors/buffs/Roots.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Roots extends FlavourBuff { diff --git a/java/com/hmdzl/spspd/actors/buffs/Weakness.java b/java/com/hmdzl/spspd/actors/buffs/STRdown.java similarity index 84% rename from java/com/hmdzl/spspd/actors/buffs/Weakness.java rename to java/com/hmdzl/spspd/actors/buffs/STRdown.java index 00759a12..04ed5e7b 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Weakness.java +++ b/java/com/hmdzl/spspd/actors/buffs/STRdown.java @@ -20,11 +20,10 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; -public class Weakness extends FlavourBuff { +public class STRdown extends FlavourBuff { private static final float DURATION = 40f; @@ -62,11 +61,6 @@ public void detach() { ((Hero) target).weakened = false; } } - - public static float duration(Char ch) { - Resistance r = ch.buff(Resistance.class); - return r != null ? r.durationFactor() * DURATION : DURATION; - } @Override public String heroMessage() { diff --git a/java/com/hmdzl/spspd/actors/buffs/ShadowCurse.java b/java/com/hmdzl/spspd/actors/buffs/ShadowCurse.java new file mode 100644 index 00000000..fb1fedcf --- /dev/null +++ b/java/com/hmdzl/spspd/actors/buffs/ShadowCurse.java @@ -0,0 +1,84 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.actors.buffs; + +import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.effects.particles.ShadowParticle; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; +import com.hmdzl.spspd.ui.BuffIndicator; +import com.watabou.utils.Bundle; + +public class ShadowCurse extends Buff { + + private int ticks = 0; + + private static final String TICKS = "ticks"; + + { + type = buffType.NEGATIVE; + } + + @Override + public void storeInBundle(Bundle bundle) { + super.storeInBundle(bundle); + bundle.put(TICKS, ticks); + } + + @Override + public void restoreFromBundle(Bundle bundle) { + super.restoreFromBundle(bundle); + ticks = bundle.getInt(TICKS); + } + + + @Override + public int icon() { + return BuffIndicator.COUNTDOWN; + } + + @Override + public String toString() { + return Messages.get(this, "name"); + } + + @Override + public String desc() { + return Messages.get(this, "desc", 4-ticks); + } + + @Override + public boolean act() { + if (target.isAlive()) { + ticks++; + if (ticks>3){ + target.sprite.emitter().burst(ShadowParticle.CURSE, 6); + target.damage(Math.round(target.HT / 8), this); + detach(); + } + } + + if (!target.isAlive() && target == Dungeon.hero) { + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); + //GLog.n(TXT_HERO_KILLED, toString()); + } + + spend(TICK); + + return true; + } +} diff --git a/java/com/hmdzl/spspd/actors/buffs/Shadows.java b/java/com/hmdzl/spspd/actors/buffs/Shadows.java index 8204e2ec..13d49273 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Shadows.java +++ b/java/com/hmdzl/spspd/actors/buffs/Shadows.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; diff --git a/java/com/hmdzl/spspd/actors/buffs/Shield.java b/java/com/hmdzl/spspd/actors/buffs/Shield.java index 660a103b..13eeac7e 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Shield.java +++ b/java/com/hmdzl/spspd/actors/buffs/Shield.java @@ -19,7 +19,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.Statistics; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Shield extends Buff { @@ -30,7 +30,7 @@ public class Shield extends Buff { //private int hits = Math.max(2, Math.round(Statistics.deepestFloor/5)+3); { - type = buffType.POSITIVE; + type = buffType.NEUTRAL; } @Override diff --git a/java/com/hmdzl/spspd/actors/buffs/ShieldArmor.java b/java/com/hmdzl/spspd/actors/buffs/ShieldArmor.java index 3949dc36..f8d4997f 100644 --- a/java/com/hmdzl/spspd/actors/buffs/ShieldArmor.java +++ b/java/com/hmdzl/spspd/actors/buffs/ShieldArmor.java @@ -1,6 +1,5 @@ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; @@ -19,13 +18,14 @@ public boolean act() { } public int absorb(int damage) { - if (level <= damage) { - detach(); - return damage - level; - } else { - level -= damage; - return 0; - } + + if (level <= damage) { + detach(); + return damage - level; + } else { + level -= damage; + return 0; + } } public void level(int value) { diff --git a/java/com/hmdzl/spspd/actors/buffs/Shieldblock.java b/java/com/hmdzl/spspd/actors/buffs/Shieldblock.java index f70dcff6..2e7ebb78 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Shieldblock.java +++ b/java/com/hmdzl/spspd/actors/buffs/Shieldblock.java @@ -18,8 +18,7 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.ui.BuffIndicator; @@ -27,6 +26,9 @@ public class Shieldblock extends FlavourBuff { private static final float DURATION = 10f; + { + type = buffType.NEGATIVE; + } @Override public boolean attachTo(Char target) { if (super.attachTo(target)) { @@ -65,9 +67,4 @@ public String desc() { return Messages.get(this, "desc", dispTurns()); } - public static float duration(Char ch) { - Resistance r = ch.buff(Resistance.class); - return r != null ? r.durationFactor() * DURATION : DURATION; - } - } diff --git a/java/com/hmdzl/spspd/actors/buffs/Shocked.java b/java/com/hmdzl/spspd/actors/buffs/Shocked.java index be81e3a4..ce672b0f 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Shocked.java +++ b/java/com/hmdzl/spspd/actors/buffs/Shocked.java @@ -20,7 +20,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Shocked extends FlavourBuff { diff --git a/java/com/hmdzl/spspd/actors/buffs/Shocked2.java b/java/com/hmdzl/spspd/actors/buffs/Shocked2.java new file mode 100644 index 00000000..a5b34b6b --- /dev/null +++ b/java/com/hmdzl/spspd/actors/buffs/Shocked2.java @@ -0,0 +1,137 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2015 Oleg Dolya + * + * Yet Another Pixel Dungeon + * Copyright (C) 2015-2016 Considered Hamster + * + * 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 + */ +package com.hmdzl.spspd.actors.buffs; + +import com.hmdzl.spspd.Badges; +import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; +import com.hmdzl.spspd.ui.BuffIndicator; +import com.watabou.utils.Bundle; + +public class Shocked2 extends Buff { + + //private static final String TXT_DISARMED = "Sudden shock have made you drop your %s on the ground!"; + + + { + type = buffType.NEGATIVE; + } + + private int pos; + private float left; + private static final String LEFT = "left"; + private static final String POS = "pos"; + public static final float DURATION = 5f; + + + @Override + public void storeInBundle(Bundle bundle) { + super.storeInBundle(bundle); + bundle.put(POS, pos); + bundle.put(LEFT, left); + } + + @Override + public void restoreFromBundle(Bundle bundle) { + super.restoreFromBundle(bundle); + pos = bundle.getInt(POS); + left = bundle.getInt(LEFT); + } + @Override + public boolean attachTo(Char target) { + pos = target.pos; + return super.attachTo(target); + } + + public boolean act() { + + if (target.isAlive()) { + + if (target.pos != pos) { + pos = 0; + if (target.pos != -1) pos = target.pos; + target.damage(Math.min(1000,target.HT/20),this); + Buff.affect(target,Roots.class,5f); + detach(); + } + + } else { + detach(); + } + + spend(TICK); + left -= TICK; + + if (left <= 0 ) { + detach(); + } + + return true; + } + + public void reignite(Char ch) { + left = duration(ch); + } + + public void reignite( Char ch, float duration ) { + left = duration; + } + + @Override + public int icon() { + return BuffIndicator.STONE_ICE; + } + + @Override + public String toString() { + return Messages.get(this, "name"); + } + + @Override + public String desc() { + return Messages.get(this, "desc",left); + } + + public void set(float duration) { + this.left = duration; + } + + public float level() { return left; } + + public void level(int value) { + if (left < value) { + left = value; + } + } + + public static float duration(Char ch) { + return DURATION; + } + + public void onDeath() { + + Badges.validateDeathFromFire(); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); + + } + +} diff --git a/java/com/hmdzl/spspd/actors/buffs/Silent.java b/java/com/hmdzl/spspd/actors/buffs/Silent.java index ad235d6e..f06fa913 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Silent.java +++ b/java/com/hmdzl/spspd/actors/buffs/Silent.java @@ -17,9 +17,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Silent extends FlavourBuff { @@ -45,8 +43,4 @@ public String desc() { return Messages.get(this, "desc", dispTurns()); } - public static float duration(Char ch) { - Resistance r = ch.buff(Resistance.class); - return r != null ? r.durationFactor() * DURATION : DURATION; - } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/buffs/Slow.java b/java/com/hmdzl/spspd/actors/buffs/Slow.java index bad42534..240d0dbe 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Slow.java +++ b/java/com/hmdzl/spspd/actors/buffs/Slow.java @@ -17,9 +17,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Slow extends FlavourBuff { @@ -45,8 +43,4 @@ public String desc() { return Messages.get(this, "desc", dispTurns()); } - public static float duration(Char ch) { - Resistance r = ch.buff(Resistance.class); - return r != null ? r.durationFactor() * DURATION : DURATION; - } } diff --git a/java/com/hmdzl/spspd/actors/buffs/SnipersMark.java b/java/com/hmdzl/spspd/actors/buffs/SnipersMark.java index eef33234..6f3406f0 100644 --- a/java/com/hmdzl/spspd/actors/buffs/SnipersMark.java +++ b/java/com/hmdzl/spspd/actors/buffs/SnipersMark.java @@ -17,7 +17,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; diff --git a/java/com/hmdzl/spspd/actors/buffs/SoulBless.java b/java/com/hmdzl/spspd/actors/buffs/SoulBless.java index 88547b7d..50df0e26 100644 --- a/java/com/hmdzl/spspd/actors/buffs/SoulBless.java +++ b/java/com/hmdzl/spspd/actors/buffs/SoulBless.java @@ -37,7 +37,7 @@ import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSun; import com.hmdzl.spspd.actors.blobs.Web; import com.hmdzl.spspd.levels.traps.LightningTrap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class SoulBless extends FlavourBuff { diff --git a/java/com/hmdzl/spspd/actors/buffs/SoulMark.java b/java/com/hmdzl/spspd/actors/buffs/SoulMark.java index 8928455d..53aad2aa 100644 --- a/java/com/hmdzl/spspd/actors/buffs/SoulMark.java +++ b/java/com/hmdzl/spspd/actors/buffs/SoulMark.java @@ -20,7 +20,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.ui.BuffIndicator; diff --git a/java/com/hmdzl/spspd/actors/buffs/SpAttack.java b/java/com/hmdzl/spspd/actors/buffs/SpAttack.java index 85dc0b75..bafab63e 100644 --- a/java/com/hmdzl/spspd/actors/buffs/SpAttack.java +++ b/java/com/hmdzl/spspd/actors/buffs/SpAttack.java @@ -20,13 +20,17 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class SpAttack extends FlavourBuff { public static final float DURATION = 30f; + { + type = buffType.NEUTRAL; + } + @Override public int icon() { return BuffIndicator.SMASH; diff --git a/java/com/hmdzl/spspd/actors/buffs/StoneIce.java b/java/com/hmdzl/spspd/actors/buffs/StoneIce.java index 2c35efc8..fc8880f4 100644 --- a/java/com/hmdzl/spspd/actors/buffs/StoneIce.java +++ b/java/com/hmdzl/spspd/actors/buffs/StoneIce.java @@ -19,12 +19,9 @@ import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.rings.RingOfElements; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; -import com.hmdzl.spspd.sprites.CharSprite; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; @@ -73,6 +70,7 @@ public boolean act() { } Buff.detach( target, Burning.class); + Buff.detach( target, FrostIce.class); } else { detach(); @@ -109,9 +107,9 @@ public String desc() { public void set(float duration) { this.left = duration; - }; + } - public float level() { return left; } + public float level() { return left; } public void level(int value) { if (left < value) { @@ -129,7 +127,7 @@ public static float duration(Char ch) { public void onDeath() { Badges.validateDeathFromFire(); - Dungeon.fail(Messages.format(ResultDescriptions.BURNING)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); } diff --git a/java/com/hmdzl/spspd/actors/buffs/Strength.java b/java/com/hmdzl/spspd/actors/buffs/Strength.java index fb29363f..55d762a1 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Strength.java +++ b/java/com/hmdzl/spspd/actors/buffs/Strength.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Strength extends Buff { diff --git a/java/com/hmdzl/spspd/actors/buffs/SuperArcane.java b/java/com/hmdzl/spspd/actors/buffs/SuperArcane.java new file mode 100644 index 00000000..749e7b02 --- /dev/null +++ b/java/com/hmdzl/spspd/actors/buffs/SuperArcane.java @@ -0,0 +1,80 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.actors.buffs; + +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; +import com.hmdzl.spspd.ui.BuffIndicator; +import com.watabou.utils.Bundle; + +public class SuperArcane extends FlavourBuff { + + public static final float DURATION = 30f; + + private int level = 0; + private static final String LEVEL = "level"; + protected float left; + @Override + public void storeInBundle(Bundle bundle) { + super.storeInBundle(bundle); + bundle.put(LEVEL, level); + } + + @Override + public void restoreFromBundle(Bundle bundle) { + super.restoreFromBundle(bundle); + level = bundle.getInt(LEVEL); + } + + { + type = buffType.POSITIVE; + } + + public boolean act() { + spend(TICK); + left -= TICK; + if (left <= 0) + detach(); + return true; + } + @Override + public int icon() { + return BuffIndicator.ARCANE; + } + + public int level() { + return level; + } + + public void level(int value) { + if (level < value) { + level = value; + } + } + + @Override + public String toString() { + return Messages.get(this, "name"); + } + + @Override + public String desc() { + return Messages.get(this, "desc",level(), dispTurns()); + } + + +} diff --git a/java/com/hmdzl/spspd/actors/buffs/Tar.java b/java/com/hmdzl/spspd/actors/buffs/Tar.java index 48dfc687..a82dd0f6 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Tar.java +++ b/java/com/hmdzl/spspd/actors/buffs/Tar.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Tar extends Buff { diff --git a/java/com/hmdzl/spspd/actors/buffs/TargetShoot.java b/java/com/hmdzl/spspd/actors/buffs/TargetShoot.java index a7d10d4f..5a449de8 100644 --- a/java/com/hmdzl/spspd/actors/buffs/TargetShoot.java +++ b/java/com/hmdzl/spspd/actors/buffs/TargetShoot.java @@ -17,13 +17,18 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; + public class TargetShoot extends FlavourBuff { public static final float DURATION = 30f; - + + { + type = buffType.POSITIVE; + } + @Override public int icon() { return BuffIndicator.MARK; @@ -37,5 +42,6 @@ public String toString() { @Override public String desc() { return Messages.get(this, "desc", dispTurns()); - } + } + } diff --git a/java/com/hmdzl/spspd/actors/buffs/Taunt.java b/java/com/hmdzl/spspd/actors/buffs/Taunt.java index b589bdbb..8609fc47 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Taunt.java +++ b/java/com/hmdzl/spspd/actors/buffs/Taunt.java @@ -17,13 +17,6 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; -import com.hmdzl.spspd.ui.BuffIndicator; -import com.watabou.utils.Bundle; - public class Taunt extends Buff { { diff --git a/java/com/hmdzl/spspd/actors/buffs/Terror.java b/java/com/hmdzl/spspd/actors/buffs/Terror.java index f4c2db7a..3c745bff 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Terror.java +++ b/java/com/hmdzl/spspd/actors/buffs/Terror.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.actors.buffs; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; @@ -30,6 +30,10 @@ public class Terror extends FlavourBuff { private static final String OBJECT = "object"; + { + type = buffType.NEGATIVE; + } + @Override public void storeInBundle(Bundle bundle) { super.storeInBundle(bundle); diff --git a/java/com/hmdzl/spspd/actors/buffs/ToxicImbue.java b/java/com/hmdzl/spspd/actors/buffs/ToxicImbue.java index 4f96c8a6..9e1d6e8c 100644 --- a/java/com/hmdzl/spspd/actors/buffs/ToxicImbue.java +++ b/java/com/hmdzl/spspd/actors/buffs/ToxicImbue.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.actors.blobs.Blob; import com.hmdzl.spspd.actors.blobs.ToxicGas; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; @@ -51,9 +51,9 @@ public void restoreFromBundle(Bundle bundle) { public void set(float duration) { this.left = duration; - }; + } - @Override + @Override public boolean act() { GameScene.add(Blob.seed(target.pos, 50, ToxicGas.class)); diff --git a/java/com/hmdzl/spspd/actors/buffs/Venom.java b/java/com/hmdzl/spspd/actors/buffs/Venom.java index 93e82959..d4c07daf 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Venom.java +++ b/java/com/hmdzl/spspd/actors/buffs/Venom.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; diff --git a/java/com/hmdzl/spspd/actors/buffs/Vertigo.java b/java/com/hmdzl/spspd/actors/buffs/Vertigo.java index 1770e246..e44ac130 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Vertigo.java +++ b/java/com/hmdzl/spspd/actors/buffs/Vertigo.java @@ -16,9 +16,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.rings.RingOfElements.Resistance; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Vertigo extends FlavourBuff { @@ -44,8 +42,4 @@ public String desc() { return Messages.get(this, "desc", dispTurns()); } - public static float duration(Char ch) { - Resistance r = ch.buff(Resistance.class); - return r != null ? r.durationFactor() * DURATION : DURATION; - } } diff --git a/java/com/hmdzl/spspd/actors/buffs/WarGroove.java b/java/com/hmdzl/spspd/actors/buffs/WarGroove.java index 00a75d11..775d2ca9 100644 --- a/java/com/hmdzl/spspd/actors/buffs/WarGroove.java +++ b/java/com/hmdzl/spspd/actors/buffs/WarGroove.java @@ -17,7 +17,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class WarGroove extends Buff { diff --git a/java/com/hmdzl/spspd/actors/buffs/Wet.java b/java/com/hmdzl/spspd/actors/buffs/Wet.java index bfb079ef..b6161de1 100644 --- a/java/com/hmdzl/spspd/actors/buffs/Wet.java +++ b/java/com/hmdzl/spspd/actors/buffs/Wet.java @@ -20,7 +20,7 @@ */ package com.hmdzl.spspd.actors.buffs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Wet extends FlavourBuff { diff --git a/java/com/hmdzl/spspd/actors/buffs/actbuff/NmImbue.java b/java/com/hmdzl/spspd/actors/buffs/actbuff/NmImbue.java index 93a5e297..6f22b220 100644 --- a/java/com/hmdzl/spspd/actors/buffs/actbuff/NmImbue.java +++ b/java/com/hmdzl/spspd/actors/buffs/actbuff/NmImbue.java @@ -20,11 +20,9 @@ import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.Statistics; import com.hmdzl.spspd.actors.blobs.Blob; import com.hmdzl.spspd.actors.blobs.NmGas; -import com.hmdzl.spspd.actors.blobs.ToxicGas; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.Heap; @@ -38,14 +36,11 @@ import com.hmdzl.spspd.items.scrolls.Scroll; import com.hmdzl.spspd.items.wands.Wand; import com.hmdzl.spspd.items.weapon.Weapon; -import com.hmdzl.spspd.messages.Messages; -import com.hmdzl.spspd.plants.Earthroot; -import com.hmdzl.spspd.plants.NutPlant; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Plant; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.ui.BuffIndicator; import com.hmdzl.spspd.utils.GLog; -import com.watabou.utils.Bundle; import com.watabou.utils.Random; /** @@ -122,7 +117,7 @@ public void onDeath() { Badges.validateDeathFromFire(); - Dungeon.fail(Messages.format(ResultDescriptions.BURNING)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(TXT_BURNED_TO_DEATH); } diff --git a/java/com/hmdzl/spspd/actors/buffs/actbuff/Nmstop.java b/java/com/hmdzl/spspd/actors/buffs/actbuff/Nmstop.java index 02baf691..c6ab5b39 100644 --- a/java/com/hmdzl/spspd/actors/buffs/actbuff/Nmstop.java +++ b/java/com/hmdzl/spspd/actors/buffs/actbuff/Nmstop.java @@ -23,13 +23,17 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.Statistics; import com.hmdzl.spspd.actors.buffs.FlavourBuff; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class Nmstop extends FlavourBuff { public static final float DURATION = 10f; + { + type = buffType.NEUTRAL; + } + @Override public int icon() { return BuffIndicator.COLD; diff --git a/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphDark.java b/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphDark.java index c72c4d9b..1e936649 100644 --- a/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphDark.java +++ b/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphDark.java @@ -5,15 +5,19 @@ import com.hmdzl.spspd.actors.buffs.CountDown; import com.hmdzl.spspd.actors.buffs.DeadRaise; import com.hmdzl.spspd.actors.buffs.Silent; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; +import com.hmdzl.spspd.actors.damagetype.DamageType; import com.hmdzl.spspd.actors.mobs.DwarfLich; import com.hmdzl.spspd.actors.mobs.Fiend; import com.hmdzl.spspd.actors.mobs.Warlock; +import com.hmdzl.spspd.items.armor.glyphs.Darkglyph; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark2; public class GlyphDark extends Buff { { - immunities.add( Weakness.class ); + immunities.add( STRdown.class ); immunities.add( CountDown.class ); immunities.add( DeadRaise.class ); immunities.add( Silent.class ); @@ -22,6 +26,12 @@ public class GlyphDark extends Buff { resistances.add( DwarfLich.class ); resistances.add( Warlock.class ); resistances.add( Fiend.class ); + + immunities.add( EnchantmentDark2.class ); + immunities.add( EnchantmentDark.class ); + immunities.add(Darkglyph.class ); + immunities.add(DamageType.DarkDamage.class); + } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphEarth.java b/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphEarth.java index 3092dc4b..68cce6a0 100644 --- a/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphEarth.java +++ b/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphEarth.java @@ -1,22 +1,29 @@ package com.hmdzl.spspd.actors.buffs.armorbuff; +import com.hmdzl.spspd.actors.blobs.PoisonGas; import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSand; import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.GrowSeed; import com.hmdzl.spspd.actors.buffs.Ooze; import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.actors.buffs.Roots; -import com.hmdzl.spspd.actors.buffs.Weakness; -import com.hmdzl.spspd.actors.mobs.DwarfLich; -import com.hmdzl.spspd.actors.mobs.Fiend; -import com.hmdzl.spspd.actors.mobs.Warlock; +import com.hmdzl.spspd.actors.damagetype.DamageType; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentEarth; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentEarth2; - public class GlyphEarth extends Buff { +public class GlyphEarth extends Buff { { immunities.add( Roots.class ); immunities.add( Ooze.class ); immunities.add( Poison.class ); immunities.add(WeatherOfSand.class ); + + immunities.add( EnchantmentEarth.class ); + immunities.add( EnchantmentEarth2.class ); + immunities.add( GrowSeed.class ); + immunities.add(PoisonGas.class ); + immunities.add(DamageType.EarthDamage.class); } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphElectricity.java b/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphElectricity.java index 275e7465..cffe1329 100644 --- a/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphElectricity.java +++ b/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphElectricity.java @@ -4,13 +4,13 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Locked; import com.hmdzl.spspd.actors.buffs.Shocked; -import com.hmdzl.spspd.actors.buffs.Weakness; -import com.hmdzl.spspd.actors.mobs.DwarfLich; -import com.hmdzl.spspd.actors.mobs.Fiend; +import com.hmdzl.spspd.actors.buffs.Shocked2; +import com.hmdzl.spspd.actors.damagetype.DamageType; import com.hmdzl.spspd.actors.mobs.GnollShaman; import com.hmdzl.spspd.actors.mobs.Shell; -import com.hmdzl.spspd.actors.mobs.Warlock; import com.hmdzl.spspd.items.wands.WandOfLightning; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentShock; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentShock2; import com.hmdzl.spspd.levels.traps.LightningTrap; public class GlyphElectricity extends Buff { @@ -24,6 +24,11 @@ public class GlyphElectricity extends Buff { immunities.add( ElectriShock.class ); immunities.add( Locked.class ); immunities.add( LightningTrap.Electricity.class ); + + immunities.add( EnchantmentShock.class ); + immunities.add( EnchantmentShock2.class ); + immunities.add( Shocked2.class ); + immunities.add(DamageType.ShockDamage.class); } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphFire.java b/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphFire.java index 680781ef..80b86646 100644 --- a/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphFire.java +++ b/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphFire.java @@ -4,14 +4,14 @@ import com.hmdzl.spspd.actors.blobs.TarGas; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Burning; +import com.hmdzl.spspd.actors.buffs.DBurning; import com.hmdzl.spspd.actors.buffs.Hot; import com.hmdzl.spspd.actors.buffs.Tar; -import com.hmdzl.spspd.actors.buffs.Weakness; -import com.hmdzl.spspd.actors.mobs.DwarfLich; -import com.hmdzl.spspd.actors.mobs.Fiend; +import com.hmdzl.spspd.actors.damagetype.DamageType; import com.hmdzl.spspd.actors.mobs.FireElemental; -import com.hmdzl.spspd.actors.mobs.Warlock; import com.hmdzl.spspd.actors.mobs.Yog; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentFire; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentFire2; public class GlyphFire extends Buff { @@ -24,6 +24,12 @@ public class GlyphFire extends Buff { immunities.add( TarGas.class ); immunities.add( Hot.class ); + + immunities.add( EnchantmentFire.class ); + immunities.add( EnchantmentFire2.class ); + //immunities.add( Iceglyph.class ); + immunities.add(DBurning.class ); + immunities.add(DamageType.FireDamage.class); } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphIce.java b/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphIce.java index 0f56b4ed..43fdd844 100644 --- a/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphIce.java +++ b/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphIce.java @@ -6,10 +6,10 @@ import com.hmdzl.spspd.actors.buffs.Chill; import com.hmdzl.spspd.actors.buffs.Cold; import com.hmdzl.spspd.actors.buffs.Frost; -import com.hmdzl.spspd.actors.buffs.Weakness; -import com.hmdzl.spspd.actors.mobs.DwarfLich; -import com.hmdzl.spspd.actors.mobs.Fiend; -import com.hmdzl.spspd.actors.mobs.Warlock; +import com.hmdzl.spspd.actors.buffs.FrostIce; +import com.hmdzl.spspd.actors.damagetype.DamageType; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentIce; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentIce2; public class GlyphIce extends Buff { @@ -19,6 +19,11 @@ public class GlyphIce extends Buff { immunities.add( Chill.class ); immunities.add(WeatherOfSnow.class ); + immunities.add( EnchantmentIce.class ); + immunities.add( EnchantmentIce2.class ); + //immunities.add( Iceglyph.class ); + immunities.add(FrostIce.class ); + immunities.add(DamageType.IceDamage.class); } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphLight.java b/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphLight.java index 0830f055..74989f11 100644 --- a/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphLight.java +++ b/java/com/hmdzl/spspd/actors/buffs/armorbuff/GlyphLight.java @@ -4,20 +4,25 @@ import com.hmdzl.spspd.actors.buffs.Blindness; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Charm; +import com.hmdzl.spspd.actors.buffs.LightShootAttack; import com.hmdzl.spspd.actors.buffs.Vertigo; -import com.hmdzl.spspd.actors.buffs.Weakness; -import com.hmdzl.spspd.actors.mobs.DwarfLich; -import com.hmdzl.spspd.actors.mobs.Fiend; -import com.hmdzl.spspd.actors.mobs.SewerHeart; -import com.hmdzl.spspd.actors.mobs.Warlock; +import com.hmdzl.spspd.actors.damagetype.DamageType; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentLight; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentLight2; - public class GlyphLight extends Buff { +public class GlyphLight extends Buff { { immunities.add( Blindness.class ); immunities.add( Vertigo.class ); immunities.add( Charm.class ); immunities.add(WeatherOfSun.class ); + + immunities.add( EnchantmentLight.class ); + immunities.add( EnchantmentLight2.class ); + //immunities.add( Lightglyph.class ); + immunities.add(LightShootAttack.class ); + immunities.add(DamageType.LightDamage.class); } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/buffs/faithbuff/BalanceFaith.java b/java/com/hmdzl/spspd/actors/buffs/faithbuff/BalanceFaith.java index 540958b7..7d895a1d 100644 --- a/java/com/hmdzl/spspd/actors/buffs/faithbuff/BalanceFaith.java +++ b/java/com/hmdzl/spspd/actors/buffs/faithbuff/BalanceFaith.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.actors.buffs.faithbuff; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class BalanceFaith extends Buff { diff --git a/java/com/hmdzl/spspd/actors/buffs/faithbuff/DemonFaith.java b/java/com/hmdzl/spspd/actors/buffs/faithbuff/DemonFaith.java index 23fe10d7..487fc0b0 100644 --- a/java/com/hmdzl/spspd/actors/buffs/faithbuff/DemonFaith.java +++ b/java/com/hmdzl/spspd/actors/buffs/faithbuff/DemonFaith.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.actors.buffs.faithbuff; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class DemonFaith extends Buff { diff --git a/java/com/hmdzl/spspd/actors/buffs/faithbuff/HumanFaith.java b/java/com/hmdzl/spspd/actors/buffs/faithbuff/HumanFaith.java index 1cf39972..f7ac43ac 100644 --- a/java/com/hmdzl/spspd/actors/buffs/faithbuff/HumanFaith.java +++ b/java/com/hmdzl/spspd/actors/buffs/faithbuff/HumanFaith.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.actors.buffs.faithbuff; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class HumanFaith extends Buff { diff --git a/java/com/hmdzl/spspd/actors/buffs/faithbuff/LifeFaith.java b/java/com/hmdzl/spspd/actors/buffs/faithbuff/LifeFaith.java index da6022e7..e395534a 100644 --- a/java/com/hmdzl/spspd/actors/buffs/faithbuff/LifeFaith.java +++ b/java/com/hmdzl/spspd/actors/buffs/faithbuff/LifeFaith.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.actors.buffs.faithbuff; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class LifeFaith extends Buff { diff --git a/java/com/hmdzl/spspd/actors/buffs/faithbuff/MechFaith.java b/java/com/hmdzl/spspd/actors/buffs/faithbuff/MechFaith.java index ffeba214..9c280f90 100644 --- a/java/com/hmdzl/spspd/actors/buffs/faithbuff/MechFaith.java +++ b/java/com/hmdzl/spspd/actors/buffs/faithbuff/MechFaith.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.actors.buffs.faithbuff; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class MechFaith extends Buff { diff --git a/java/com/hmdzl/spspd/actors/buffs/mindbuff/AmokMind.java b/java/com/hmdzl/spspd/actors/buffs/mindbuff/AmokMind.java index 711e343d..0c99e190 100644 --- a/java/com/hmdzl/spspd/actors/buffs/mindbuff/AmokMind.java +++ b/java/com/hmdzl/spspd/actors/buffs/mindbuff/AmokMind.java @@ -18,14 +18,14 @@ package com.hmdzl.spspd.actors.buffs.mindbuff; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class AmokMind extends Buff { @Override public int icon() { - return BuffIndicator.MIND_BUFF; + return BuffIndicator.CRAZY_MIND; } @Override diff --git a/java/com/hmdzl/spspd/actors/buffs/mindbuff/CrazyMind.java b/java/com/hmdzl/spspd/actors/buffs/mindbuff/CrazyMind.java index f1fa4df1..2345b76e 100644 --- a/java/com/hmdzl/spspd/actors/buffs/mindbuff/CrazyMind.java +++ b/java/com/hmdzl/spspd/actors/buffs/mindbuff/CrazyMind.java @@ -18,14 +18,14 @@ package com.hmdzl.spspd.actors.buffs.mindbuff; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class CrazyMind extends Buff { @Override public int icon() { - return BuffIndicator.MIND_BUFF; + return BuffIndicator.CRAZY_MIND; } @Override diff --git a/java/com/hmdzl/spspd/actors/buffs/mindbuff/HopeMind.java b/java/com/hmdzl/spspd/actors/buffs/mindbuff/HopeMind.java index cc071fb3..31d2562f 100644 --- a/java/com/hmdzl/spspd/actors/buffs/mindbuff/HopeMind.java +++ b/java/com/hmdzl/spspd/actors/buffs/mindbuff/HopeMind.java @@ -18,14 +18,14 @@ package com.hmdzl.spspd.actors.buffs.mindbuff; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class HopeMind extends Buff { @Override public int icon() { - return BuffIndicator.MIND_BUFF; + return BuffIndicator.CRAZY_MIND; } @Override diff --git a/java/com/hmdzl/spspd/actors/buffs/mindbuff/KeepMind.java b/java/com/hmdzl/spspd/actors/buffs/mindbuff/KeepMind.java index 366c8a15..12be890f 100644 --- a/java/com/hmdzl/spspd/actors/buffs/mindbuff/KeepMind.java +++ b/java/com/hmdzl/spspd/actors/buffs/mindbuff/KeepMind.java @@ -27,14 +27,14 @@ import com.hmdzl.spspd.actors.buffs.Dry; import com.hmdzl.spspd.actors.buffs.Hot; import com.hmdzl.spspd.actors.buffs.Wet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class KeepMind extends Buff { @Override public int icon() { - return BuffIndicator.MIND_BUFF; + return BuffIndicator.CRAZY_MIND; } @Override diff --git a/java/com/hmdzl/spspd/actors/buffs/mindbuff/LoseMind.java b/java/com/hmdzl/spspd/actors/buffs/mindbuff/LoseMind.java index bdd66a80..8223fd0b 100644 --- a/java/com/hmdzl/spspd/actors/buffs/mindbuff/LoseMind.java +++ b/java/com/hmdzl/spspd/actors/buffs/mindbuff/LoseMind.java @@ -18,14 +18,14 @@ package com.hmdzl.spspd.actors.buffs.mindbuff; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class LoseMind extends Buff { @Override public int icon() { - return BuffIndicator.MIND_BUFF; + return BuffIndicator.CRAZY_MIND; } @Override diff --git a/java/com/hmdzl/spspd/actors/buffs/mindbuff/TerrorMind.java b/java/com/hmdzl/spspd/actors/buffs/mindbuff/TerrorMind.java index 3b027c47..c6d642c2 100644 --- a/java/com/hmdzl/spspd/actors/buffs/mindbuff/TerrorMind.java +++ b/java/com/hmdzl/spspd/actors/buffs/mindbuff/TerrorMind.java @@ -18,14 +18,14 @@ package com.hmdzl.spspd.actors.buffs.mindbuff; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class TerrorMind extends Buff { @Override public int icon() { - return BuffIndicator.MIND_BUFF; + return BuffIndicator.CRAZY_MIND; } @Override diff --git a/java/com/hmdzl/spspd/actors/buffs/mindbuff/WeakMind.java b/java/com/hmdzl/spspd/actors/buffs/mindbuff/WeakMind.java index 6bc23438..894d5f3c 100644 --- a/java/com/hmdzl/spspd/actors/buffs/mindbuff/WeakMind.java +++ b/java/com/hmdzl/spspd/actors/buffs/mindbuff/WeakMind.java @@ -18,14 +18,14 @@ package com.hmdzl.spspd.actors.buffs.mindbuff; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; public class WeakMind extends Buff { @Override public int icon() { - return BuffIndicator.MIND_BUFF; + return BuffIndicator.CRAZY_MIND; } @Override diff --git a/java/com/hmdzl/spspd/actors/damagetype/DamageType.java b/java/com/hmdzl/spspd/actors/damagetype/DamageType.java new file mode 100644 index 00000000..2ff08fe4 --- /dev/null +++ b/java/com/hmdzl/spspd/actors/damagetype/DamageType.java @@ -0,0 +1,66 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.actors.damagetype; + +import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.ResultDescriptions; +import com.hmdzl.spspd.messages.Messages; + +public class DamageType { + + public static final EnergyDamage ENERGY_DAMAGE = new EnergyDamage(); + + public static class EnergyDamage extends DamageType { + } + + public static final FireDamage FIRE_DAMAGE = new FireDamage(); + + public static class FireDamage extends DamageType{ + } + + public static final IceDamage ICE_DAMAGE = new IceDamage(); + + public static class IceDamage extends DamageType{ + } + + public static final ShockDamage SHOCK_DAMAGE = new ShockDamage(); + + public static class ShockDamage extends DamageType{ + } + + public static final EarthDamage EARTH_DAMAGE = new EarthDamage(); + + public static class EarthDamage extends DamageType{ + } + + public static final LightDamage LIGHT_DAMAGE = new LightDamage(); + + public static class LightDamage extends DamageType{ + } + + public static final DarkDamage DARK_DAMAGE = new DarkDamage(); + + public static class DarkDamage extends DamageType{ + } + + public void onDeath() { + + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); + //GLog.n(TXT_DEATH); + } +} diff --git a/java/com/hmdzl/spspd/actors/hero/Belongings.java b/java/com/hmdzl/spspd/actors/hero/Belongings.java index 07f1ebea..349fa782 100644 --- a/java/com/hmdzl/spspd/actors/hero/Belongings.java +++ b/java/com/hmdzl/spspd/actors/hero/Belongings.java @@ -17,8 +17,6 @@ */ package com.hmdzl.spspd.actors.hero; -import java.util.Iterator; - import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.items.Item; @@ -31,10 +29,13 @@ import com.hmdzl.spspd.items.scrolls.ScrollOfRemoveCurse; import com.hmdzl.spspd.items.wands.Wand; import com.hmdzl.spspd.items.weapon.guns.GunWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.items.weapon.missiles.ShootGun; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Bundle; import com.watabou.utils.Random; +import java.util.Iterator; + public class Belongings implements Iterable { public static final int BACKPACK_SIZE = 29; @@ -267,6 +268,13 @@ public int relord() { count++; gunweapon.updateQuickslot(); } + if (item instanceof ShootGun) { + ShootGun shootgun = (ShootGun) item; + shootgun.charge = Math.min(3,shootgun.charge + 1); + count++; + shootgun.updateQuickslot(); + } + } return count; } diff --git a/java/com/hmdzl/spspd/actors/hero/Hero.java b/java/com/hmdzl/spspd/actors/hero/Hero.java index 14064d3b..f9a29084 100644 --- a/java/com/hmdzl/spspd/actors/hero/Hero.java +++ b/java/com/hmdzl/spspd/actors/hero/Hero.java @@ -17,66 +17,116 @@ */ package com.hmdzl.spspd.actors.hero; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; - +import com.hmdzl.spspd.Assets; +import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Challenges; +import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.GamesInProgress; +import com.hmdzl.spspd.ResultDescriptions; +import com.hmdzl.spspd.Statistics; +import com.hmdzl.spspd.actors.Actor; +import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.NmGas; import com.hmdzl.spspd.actors.buffs.AflyBless; import com.hmdzl.spspd.actors.buffs.Arcane; import com.hmdzl.spspd.actors.buffs.ArmorBreak; import com.hmdzl.spspd.actors.buffs.AttackUp; +import com.hmdzl.spspd.actors.buffs.Barkskin; +import com.hmdzl.spspd.actors.buffs.BeCorrupt; +import com.hmdzl.spspd.actors.buffs.BeOld; import com.hmdzl.spspd.actors.buffs.Bless; import com.hmdzl.spspd.actors.buffs.BloodAngry; import com.hmdzl.spspd.actors.buffs.BoxStar; +import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Charm; +import com.hmdzl.spspd.actors.buffs.Combo; import com.hmdzl.spspd.actors.buffs.DBurning; import com.hmdzl.spspd.actors.buffs.DamageUp; import com.hmdzl.spspd.actors.buffs.DeadRaise; +import com.hmdzl.spspd.actors.buffs.Dewcharge; import com.hmdzl.spspd.actors.buffs.Disarm; +import com.hmdzl.spspd.actors.buffs.Drowsy; import com.hmdzl.spspd.actors.buffs.Dry; +import com.hmdzl.spspd.actors.buffs.Fury; import com.hmdzl.spspd.actors.buffs.GlassShield; import com.hmdzl.spspd.actors.buffs.GoldTouch; import com.hmdzl.spspd.actors.buffs.HasteBuff; import com.hmdzl.spspd.actors.buffs.HighAttack; import com.hmdzl.spspd.actors.buffs.HighLight; import com.hmdzl.spspd.actors.buffs.HighVoice; +import com.hmdzl.spspd.actors.buffs.Hunger; +import com.hmdzl.spspd.actors.buffs.Invisibility; +import com.hmdzl.spspd.actors.buffs.Light; import com.hmdzl.spspd.actors.buffs.Locked; +import com.hmdzl.spspd.actors.buffs.MechArmor; import com.hmdzl.spspd.actors.buffs.MirrorShield; import com.hmdzl.spspd.actors.buffs.Muscle; import com.hmdzl.spspd.actors.buffs.NewCombo; import com.hmdzl.spspd.actors.buffs.Notice; +import com.hmdzl.spspd.actors.buffs.OnePunch; +import com.hmdzl.spspd.actors.buffs.Paralysis; import com.hmdzl.spspd.actors.buffs.ParyAttack; +import com.hmdzl.spspd.actors.buffs.Regeneration; import com.hmdzl.spspd.actors.buffs.Rhythm; import com.hmdzl.spspd.actors.buffs.Rhythm2; import com.hmdzl.spspd.actors.buffs.Shocked; import com.hmdzl.spspd.actors.buffs.Silent; +import com.hmdzl.spspd.actors.buffs.SnipersMark; +import com.hmdzl.spspd.actors.buffs.Strength; +import com.hmdzl.spspd.actors.buffs.SuperArcane; import com.hmdzl.spspd.actors.buffs.Terror; +import com.hmdzl.spspd.actors.buffs.Vertigo; import com.hmdzl.spspd.actors.buffs.WarGroove; -import com.hmdzl.spspd.actors.buffs.mindbuff.AmokMind; import com.hmdzl.spspd.actors.buffs.faithbuff.BalanceFaith; -import com.hmdzl.spspd.actors.buffs.mindbuff.CrazyMind; import com.hmdzl.spspd.actors.buffs.faithbuff.DemonFaith; -import com.hmdzl.spspd.actors.buffs.mindbuff.HopeMind; import com.hmdzl.spspd.actors.buffs.faithbuff.HumanFaith; -import com.hmdzl.spspd.actors.buffs.mindbuff.KeepMind; import com.hmdzl.spspd.actors.buffs.faithbuff.LifeFaith; -import com.hmdzl.spspd.actors.buffs.mindbuff.LoseMind; import com.hmdzl.spspd.actors.buffs.faithbuff.MechFaith; +import com.hmdzl.spspd.actors.buffs.mindbuff.AmokMind; +import com.hmdzl.spspd.actors.buffs.mindbuff.CrazyMind; +import com.hmdzl.spspd.actors.buffs.mindbuff.HopeMind; +import com.hmdzl.spspd.actors.buffs.mindbuff.KeepMind; +import com.hmdzl.spspd.actors.buffs.mindbuff.LoseMind; import com.hmdzl.spspd.actors.buffs.mindbuff.TerrorMind; import com.hmdzl.spspd.actors.buffs.mindbuff.WeakMind; +import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.actors.mobs.SommonSkeleton; +import com.hmdzl.spspd.actors.mobs.npcs.NPC; +import com.hmdzl.spspd.actors.mobs.pets.PET; +import com.hmdzl.spspd.effects.CellEmitter; +import com.hmdzl.spspd.effects.CheckedCell; +import com.hmdzl.spspd.effects.Flare; import com.hmdzl.spspd.effects.Lightning; +import com.hmdzl.spspd.effects.Speck; +import com.hmdzl.spspd.items.Amulet; +import com.hmdzl.spspd.items.Ankh; +import com.hmdzl.spspd.items.Dewdrop; import com.hmdzl.spspd.items.DolyaSlate; import com.hmdzl.spspd.items.Generator; +import com.hmdzl.spspd.items.Heap; +import com.hmdzl.spspd.items.Heap.Type; +import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.KindOfArmor; +import com.hmdzl.spspd.items.KindOfWeapon; import com.hmdzl.spspd.items.KindofMisc; +import com.hmdzl.spspd.items.OrbOfZot; import com.hmdzl.spspd.items.armor.glyphs.Iceglyph; import com.hmdzl.spspd.items.artifacts.AlienBag; +import com.hmdzl.spspd.items.artifacts.CapeOfThorns; +import com.hmdzl.spspd.items.artifacts.DriedRose; import com.hmdzl.spspd.items.artifacts.EtherealChains; import com.hmdzl.spspd.items.artifacts.Pylon; +import com.hmdzl.spspd.items.artifacts.TalismanOfForesight; +import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; +import com.hmdzl.spspd.items.eggs.Egg; +import com.hmdzl.spspd.items.keys.GoldenKey; +import com.hmdzl.spspd.items.keys.GoldenSkeletonKey; +import com.hmdzl.spspd.items.keys.IronKey; +import com.hmdzl.spspd.items.keys.Key; +import com.hmdzl.spspd.items.keys.SkeletonKey; +import com.hmdzl.spspd.items.misc.Ankhshield; import com.hmdzl.spspd.items.misc.AttackShield; +import com.hmdzl.spspd.items.misc.AutoPotion.AutoHealPotion; import com.hmdzl.spspd.items.misc.BShovel; import com.hmdzl.spspd.items.misc.CopyBall; import com.hmdzl.spspd.items.misc.DanceLion; @@ -85,94 +135,48 @@ import com.hmdzl.spspd.items.misc.GunOfSoldier; import com.hmdzl.spspd.items.misc.HealBag; import com.hmdzl.spspd.items.misc.HorseTotem; +import com.hmdzl.spspd.items.misc.JumpA; import com.hmdzl.spspd.items.misc.JumpF; +import com.hmdzl.spspd.items.misc.JumpH; +import com.hmdzl.spspd.items.misc.JumpM; import com.hmdzl.spspd.items.misc.JumpP; +import com.hmdzl.spspd.items.misc.JumpR; import com.hmdzl.spspd.items.misc.JumpS; +import com.hmdzl.spspd.items.misc.JumpW; +import com.hmdzl.spspd.items.misc.Jumpshoes; import com.hmdzl.spspd.items.misc.LeaderFlag; +import com.hmdzl.spspd.items.misc.MissileShield; import com.hmdzl.spspd.items.misc.PotionOfMage; import com.hmdzl.spspd.items.misc.RangeBag; import com.hmdzl.spspd.items.misc.SavageHelmet; +import com.hmdzl.spspd.items.misc.SeriousPunch; import com.hmdzl.spspd.items.misc.Shovel; -import com.hmdzl.spspd.items.rings.RingOfMagic; -import com.hmdzl.spspd.items.wands.WandOfFlow; -import com.hmdzl.spspd.items.misc.MissileShield; -import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; -import com.hmdzl.spspd.Assets; -import com.hmdzl.spspd.Badges; -import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.GamesInProgress; -import com.hmdzl.spspd.ResultDescriptions; -import com.hmdzl.spspd.Statistics; -import com.hmdzl.spspd.actors.Actor; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.actors.buffs.Barkskin; -import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Combo; -import com.hmdzl.spspd.actors.buffs.Dewcharge; -import com.hmdzl.spspd.actors.buffs.Drowsy; -import com.hmdzl.spspd.actors.buffs.Fury; -import com.hmdzl.spspd.actors.buffs.Hunger; -import com.hmdzl.spspd.actors.buffs.Invisibility; -import com.hmdzl.spspd.actors.buffs.Light; -import com.hmdzl.spspd.actors.buffs.Paralysis; -import com.hmdzl.spspd.actors.buffs.Regeneration; -import com.hmdzl.spspd.actors.buffs.SnipersMark; -import com.hmdzl.spspd.actors.buffs.Strength; -import com.hmdzl.spspd.actors.buffs.Vertigo; -import com.hmdzl.spspd.actors.mobs.Mob; -import com.hmdzl.spspd.actors.mobs.npcs.NPC; -import com.hmdzl.spspd.actors.mobs.pets.PET; -import com.hmdzl.spspd.effects.CellEmitter; -import com.hmdzl.spspd.effects.CheckedCell; -import com.hmdzl.spspd.effects.Flare; -import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.items.Amulet; -import com.hmdzl.spspd.items.Ankh; -import com.hmdzl.spspd.items.Dewdrop; -import com.hmdzl.spspd.items.eggs.Egg; -import com.hmdzl.spspd.items.Heap; -import com.hmdzl.spspd.items.Heap.Type; -import com.hmdzl.spspd.items.Item; -import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.items.artifacts.CapeOfThorns; -import com.hmdzl.spspd.items.artifacts.DriedRose; -import com.hmdzl.spspd.items.artifacts.TalismanOfForesight; -import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; -import com.hmdzl.spspd.items.keys.GoldenKey; -import com.hmdzl.spspd.items.keys.GoldenSkeletonKey; -import com.hmdzl.spspd.items.keys.IronKey; -import com.hmdzl.spspd.items.keys.Key; -import com.hmdzl.spspd.items.keys.SkeletonKey; -import com.hmdzl.spspd.items.misc.AutoPotion.AutoHealPotion; +import com.hmdzl.spspd.items.misc.UndeadBook; import com.hmdzl.spspd.items.potions.Potion; import com.hmdzl.spspd.items.potions.PotionOfHealing; import com.hmdzl.spspd.items.potions.PotionOfMight; import com.hmdzl.spspd.items.potions.PotionOfStrength; -import com.hmdzl.spspd.items.rings.RingOfElements; +import com.hmdzl.spspd.items.rings.RingOfAccuracy; import com.hmdzl.spspd.items.rings.RingOfForce; import com.hmdzl.spspd.items.rings.RingOfFuror; import com.hmdzl.spspd.items.rings.RingOfHaste; +import com.hmdzl.spspd.items.rings.RingOfMagic; import com.hmdzl.spspd.items.rings.RingOfMight; import com.hmdzl.spspd.items.rings.RingOfTenacity; import com.hmdzl.spspd.items.scrolls.Scroll; import com.hmdzl.spspd.items.scrolls.ScrollOfMagicMapping; import com.hmdzl.spspd.items.scrolls.ScrollOfMagicalInfusion; import com.hmdzl.spspd.items.scrolls.ScrollOfUpgrade; +import com.hmdzl.spspd.items.wands.WandOfFlow; import com.hmdzl.spspd.items.weapon.melee.MeleeWeapon; -import com.hmdzl.spspd.items.misc.Jumpshoes; -import com.hmdzl.spspd.items.misc.JumpW; -import com.hmdzl.spspd.items.misc.JumpM; -import com.hmdzl.spspd.items.misc.JumpR; -import com.hmdzl.spspd.items.misc.JumpH; -import com.hmdzl.spspd.items.misc.Ankhshield; -import com.hmdzl.spspd.items.OrbOfZot; import com.hmdzl.spspd.items.weapon.missiles.MissileWeapon; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; import com.hmdzl.spspd.levels.features.AlchemyPot; import com.hmdzl.spspd.levels.features.Chasm; import com.hmdzl.spspd.levels.features.Sign; +import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.plants.Earthroot; import com.hmdzl.spspd.plants.Sungrass; import com.hmdzl.spspd.scenes.GameScene; @@ -183,20 +187,23 @@ import com.hmdzl.spspd.ui.AttackIndicator; import com.hmdzl.spspd.ui.BuffIndicator; import com.hmdzl.spspd.ui.QuickSlotButton; +import com.hmdzl.spspd.utils.BArray; import com.hmdzl.spspd.utils.GLog; import com.hmdzl.spspd.windows.WndAscend; import com.hmdzl.spspd.windows.WndDescend; import com.hmdzl.spspd.windows.WndMessage; import com.hmdzl.spspd.windows.WndResurrect; import com.hmdzl.spspd.windows.WndTradeItem; -import com.hmdzl.spspd.utils.BArray; import com.watabou.noosa.Camera; import com.watabou.noosa.Game; import com.watabou.noosa.audio.Sample; -import com.watabou.utils.PathFinder; import com.watabou.utils.Bundle; +import com.watabou.utils.PathFinder; import com.watabou.utils.Random; +import java.util.ArrayList; +import java.util.Collections; + import static com.hmdzl.spspd.Dungeon.hero; public class Hero extends Char { @@ -256,7 +263,8 @@ public Hero() { super(); name = Messages.get(this, "name"); - HP = HT = 30; + HP = TRUE_HT = HT = 30; + EX_HT = 0; STR = STARTING_STR; magicSkill = STARTING_MAGIC; @@ -267,11 +275,33 @@ public Hero() { visibleEnemies = new ArrayList(); } + + public void updateHT( boolean boostHP ){ + int curHT = HT; + EX_HT = 0; + for (Buff buff : buffs(RingOfMight.Might.class)) { + EX_HT = (int)(Math.min((TRUE_HT * RingOfMight.strengthBonus(this)/15),TRUE_HT * 2)); + } + HT = TRUE_HT + EX_HT; + //float multiplier = RingOfMight.HTMultiplier(this); + //HT = Math.round(multiplier * HT); + + //if (buff(ElixirOfMight.HTBoost.class) != null){ + //HT += buff(ElixirOfMight.HTBoost.class).boost(); + //} + + if (boostHP){ + HP += Math.max(HT - curHT, 0); + } + HP = Math.min(HP, HT); + } + + public int STR() { int STR = this.STR; for (Buff buff : buffs(RingOfMight.Might.class)) { - STR += (int)(((RingOfMight.Might) buff).level/5); + STR += (int)(RingOfMight.strengthBonus(this)/5); } if (buff(Muscle.class)!= null) @@ -297,6 +327,9 @@ public int magicSkill() { magicSkill += 10; if (buff(LoseMind.class)!= null) magicSkill -= 5; + SuperArcane sarcane = buff(SuperArcane.class); + if (sarcane!= null) + magicSkill += Math.max(5,sarcane.level()); return magicSkill; } @@ -464,10 +497,10 @@ public int drRoll() { if (barkskin != null) { dr += barkskin.level(); } - if (Dungeon.hero.heroClass == HeroClass.SOLDIER && Dungeon.skins == 2) { + if (Dungeon.hero.heroClass == HeroClass.SOLDIER && (Dungeon.skins == 2 || Dungeon.skins == 6)) { dr += Dungeon.hero.lvl; } - return (int)dr; + return dr; } @Override @@ -480,21 +513,40 @@ public int damageRoll() { bonus += ((RingOfForce.Force) buff).level; } + if (wep != null) { dmg = wep.damageRoll(this); } else { int str = 6; - dmg = bonus == 0 ? str > 1 ? Random.NormalIntRange(1, str) : 1 - : bonus > 0 ? str > 0 ? Random.NormalIntRange(str / 2 - + bonus, (int) (str * 0.5f * bonus) + str * 2) : 1 - : 0; + dmg = + bonus == 0 ? + str > 1 ? + Random.NormalIntRange(1, str) + : 1 + : bonus > 0 ? + str > 0 ? + Random.NormalIntRange(str / 2 + bonus, (int) (str * 0.5f * bonus) + str * 2) + : 1 + : 0; } + + + if (wep == null && Dungeon.hero.heroClass==HeroClass.SOLDIER && Dungeon.skins == 2) { + dmg+= Dungeon.hero.lvl* (Dungeon.hero.STR-10)* Dungeon.hero.HP/Dungeon.hero.HT; + } + if (bonus > 0){ dmg *= Math.min(3f,(1f + (bonus*1.00/10)*1f));} - + if (dmg < 0) dmg = 0; if (buff(Fury.class) != null){ dmg *= 1.30f; } + + OnePunch op = buff(OnePunch.class); + if (op != null){ + dmg *= 1f+op.level()*0.10f; + Buff.detach(this,OnePunch.class); + } if (Dungeon.skins == 4 && Dungeon.hero.heroClass == HeroClass.FOLLOWER){ if (Dungeon.hero.spp < 40){ @@ -529,8 +581,10 @@ public int damageRoll() { if (buff(BloodAngry.class) != null){ dmg *= 1.50f; } if (buff(Rhythm2.class) != null){ dmg *= 1.20f; } + + if (buff(CrazyMind.class) != null && Random.Int(10) == 0){ dmg = 0; } - if (buff(CrazyMind.class) != null){ dmg *= 0.80f; } + if (buff(CrazyMind.class) != null){ dmg *= 1.20f; } if (buff(LoseMind.class) != null){ dmg *= 1.20f; } if (buff(AmokMind.class) != null){ dmg *= 1.20f; } if (buff(WeakMind.class) != null){ dmg *= 1.20f; } @@ -551,7 +605,7 @@ public int damageRoll() { if (hunger != null && hunger.isHungry()) { dmg *= 0.9f;} if (hunger != null && hunger.isOverfed()) { dmg *= 1.2f; } - return (int) dmg; + return dmg; } @@ -590,12 +644,24 @@ public boolean canAttack(Char enemy){ return false; //can always attack adjacent enemies - if (Dungeon.level.adjacent(pos, enemy.pos)) + if (Level.adjacent(pos, enemy.pos)) return true; + int bonus = 0; + for (Buff buff : hero.buffs(RingOfAccuracy.Accuracy.class)) { + bonus += Math.min(((RingOfAccuracy.Accuracy) buff).level,30); + } + if (Dungeon.hero.subClass == HeroSubClass.JOKER){ + bonus += 10; + } + if (hero.buff(MechArmor.class) != null){ + bonus += 10; + } + + int emptyarange = (int)(1+bonus/10); KindOfWeapon wep = hero.belongings.weapon; - if (wep != null && Dungeon.level.distance( pos, enemy.pos ) <= wep.reachFactor(this)){ + if (wep != null && Level.distance( pos, enemy.pos ) <= wep.reachFactor(this)){ boolean[] passable = BArray.not(Level.solid, null); for (Mob m : Dungeon.level.mobs) @@ -605,7 +671,17 @@ public boolean canAttack(Char enemy){ return PathFinder.distance[pos] <= wep.reachFactor(this); - } else { + } else if (wep == null && Level.distance( pos, enemy.pos ) <= emptyarange){ + + boolean[] passable = BArray.not(Level.solid, null); + for (Mob m : Dungeon.level.mobs) + passable[m.pos] = false; + + PathFinder.buildDistanceMap(enemy.pos, passable, emptyarange); + + return PathFinder.distance[pos] <= emptyarange; + + } else{ return false; } } @@ -652,9 +728,9 @@ public void spend(float time) { } super.spend(time); - }; + } - public void spendAndNext(float time) { + public void spendAndNext(float time) { busy(); spend(time); next(); @@ -697,16 +773,15 @@ public boolean act() { return false; } - if( Statistics.time == 1 & Dungeon.hero.heroClass == HeroClass.PERFORMER & Dungeon.skins == 4){ - int people = Dungeon.hero.spp; - Dungeon.gold = Math.max(0, Dungeon.gold - people); + if(Dungeon.hero.heroClass == HeroClass.PERFORMER & Dungeon.skins == 4){ + if (Statistics.time == 1 ) { + LeaderFlag lflag = belongings.getItem(LeaderFlag.class); + int people = Dungeon.hero.spp; + Dungeon.gold = Math.max(0, Dungeon.gold - people); + lflag.charge = 1440; + } } - LeaderFlag lflag = belongings.getItem(LeaderFlag.class); - if (Statistics.time == 1){ - lflag.charge = 1440; - } - Egg egg = belongings.getItem(Egg.class); if (egg!=null){ egg.moves++; @@ -743,6 +818,9 @@ public boolean act() { JumpF jumpf = belongings.getItem(JumpF.class); if (jumpf!=null && jumpf.charge arcs = new ArrayList<>(); arcs.add(new Lightning.Arc(pos - Level.WIDTH, pos + Level.WIDTH)); arcs.add(new Lightning.Arc(pos - 1, pos + 1)); sprite.parent.add( new Lightning( arcs, null ) ); } if (buff(GoldTouch.class)!=null){ - if (rangedWeapon == null && Dungeon.gold < (int)((1000000/(Math.max(1,20-Statistics.deepestFloor))))) { + if (rangedWeapon == null && Dungeon.gold < (1000000/(Math.max(1,20-Statistics.deepestFloor)))) { int earngold = Math.min(1000 * hero.lvl, damage); Dungeon.gold += earngold; @@ -1550,12 +1616,14 @@ public int attackProc(Char enemy, int damage) { if (buff(MechFaith.class)!= null && ((enemy.properties().contains(Property.BEAST)) || (enemy.properties().contains(Property.PLANT)) + || (enemy.properties().contains(Property.FISHER)) || (enemy.properties().contains(Property.ELEMENT))) ){ damage=(int)(damage*1.5); } if (buff(LifeFaith.class)!= null && ((enemy.properties().contains(Property.MECH)) || (enemy.properties().contains(Property.ALIEN)) + || (enemy.properties().contains(Property.DWARF)) || (enemy.properties().contains(Property.GOBLIN))) ){ damage=(int)(damage*1.5); } @@ -1563,7 +1631,7 @@ public int attackProc(Char enemy, int damage) { if (buff(DemonFaith.class)!= null && ((enemy.properties().contains(Property.HUMAN)) || (enemy.properties().contains(Property.ORC)) || (enemy.properties().contains(Property.ELF)) - || (enemy.properties().contains(Property.DWARF)) + || (enemy.properties().contains(Property.TROLL)))){ damage=(int)(damage*1.5); } @@ -1608,6 +1676,9 @@ public int defenseProc(Char enemy, int damage) { KindOfArmor arm = belongings.armor; + UndeadBook ub = belongings.getItem(UndeadBook.class); + if (ub!=null) {ub.charge++;} + if (buff(HighVoice.class)!=null && Random.Int(5) == 0){ Buff.affect(this, GlassShield.class).turns(2); GLog.p(Messages.get(HighVoice.class,"save",Dungeon.hero.givenName())); @@ -1660,6 +1731,12 @@ public int defenseProc(Char enemy, int damage) { Dungeon.hero.spp +=x; if ( x > 0); damage = (int)(damage*0.7);} + case PERFORMER: + if (Dungeon.skins == 2){ + if (Dungeon.level.map[this.pos] == Terrain.WATER) { + Buff.prolong(this, Invisibility.class,2f); + } + } } switch (subClass) { case LEADER: @@ -1719,6 +1796,7 @@ public void damage(int dmg, Object src) { if (buff(LifeFaith.class) != null) { if ((enemy.properties().contains(Property.BEAST)) || (enemy.properties().contains(Property.PLANT)) + || (enemy.properties().contains(Property.FISHER)) || (enemy.properties().contains(Property.ELEMENT))) { dmg = (int) Math.ceil(dmg * 0.75); } @@ -1727,6 +1805,7 @@ public void damage(int dmg, Object src) { if (buff(MechFaith.class) != null) { if ((enemy.properties().contains(Property.MECH)) || (enemy.properties().contains(Property.ALIEN)) + || (enemy.properties().contains(Property.DWARF)) || (enemy.properties().contains(Property.GOBLIN))) { dmg = (int) Math.ceil(dmg * 0.75); } @@ -1736,7 +1815,7 @@ public void damage(int dmg, Object src) { if ((enemy.properties().contains(Property.HUMAN)) || (enemy.properties().contains(Property.ORC)) || (enemy.properties().contains(Property.ELF)) - || (enemy.properties().contains(Property.DWARF)) + || (enemy.properties().contains(Property.TROLL))) { dmg = (int) Math.ceil(dmg * 0.75); } @@ -2046,30 +2125,30 @@ public void earnExp(int exp) { lvl++; if (Dungeon.isChallenged(Challenges.LISTLESS)){ - HT += 2; + TRUE_HT += 2; HP += 1; hitSkill++; evadeSkill++; } else if (lvl < 12) { - HT += 4; + TRUE_HT += 4; HP += 4; hitSkill++; evadeSkill++; } else { - HT += 5; + TRUE_HT += 5; HP += 5; hitSkill++; evadeSkill++;} FourClover.FourCloverBless fcb = buff(FourClover.FourCloverBless.class); if (fcb != null){ - HT+=5; + TRUE_HT+=5; magicSkill++; Dungeon.gold+=1000; hero.sprite.showStatus(CharSprite.NEUTRAL, TXT_VALUE, 1000); } if (heroClass == HeroClass.SOLDIER){ - HT+=3; + TRUE_HT+=3; } if (heroClass == HeroClass.WARRIOR && Dungeon.skins == 4){ @@ -2079,21 +2158,21 @@ public void earnExp(int exp) { KindofMisc misc1 = hero.belongings.misc1; KindofMisc misc2 = hero.belongings.misc2; KindofMisc misc3 = hero.belongings.misc3; - if (weapon != null && weapon.level >= 0 ) { - Dungeon.hero.spp += weapon.level+1; + if (weapon != null ) { + Dungeon.hero.spp +=Math.max(1, weapon.level+1); hero.belongings.weapon = null; weapon.updateQuickslot(); - } else if ( armor != null && armor.level >= 0 ) { - Dungeon.hero.spp += armor.level+1; + } else if ( armor != null ) { + Dungeon.hero.spp += Math.max(1,armor.level+1); hero.belongings.armor = null; } else if ( misc1 != null && misc1.unique == false ) { - Dungeon.hero.spp += misc1.level+1; + Dungeon.hero.spp += Math.max(1,misc1.level+1); hero.belongings.misc1 = null; } else if ( misc2 != null && misc2.unique == false ) { - Dungeon.hero.spp += misc2.level+1; + Dungeon.hero.spp += Math.max(1,misc2.level+1); hero.belongings.misc2 = null; } else if ( misc3 != null && misc3.unique == false ) { - Dungeon.hero.spp += misc3.level+1; + Dungeon.hero.spp += Math.max(1,misc3.level+1); hero.belongings.misc3 = null; } else { Dungeon.gold = 0; @@ -2101,13 +2180,13 @@ public void earnExp(int exp) { } - if (heroClass == HeroClass.PERFORMER && Dungeon.skins == 4){ + if (heroClass == HeroClass.PERFORMER && (Dungeon.skins == 4 || Dungeon.skins == 6)){ Dungeon.hero.spp += lvl; } if (buff(HopeMind.class) != null){ - HT+=1; + TRUE_HT+=1; } if (lvl < 10) { updateAwareness(); @@ -2130,6 +2209,7 @@ public void earnExp(int exp) { sprite.emitter().burst(Speck.factory(Speck.HEALING), 1); } + hero.updateHT(true); buff(Hunger.class).satisfy(10); if(hero.heroClass == HeroClass.PERFORMER){ Buff.prolong(hero,Rhythm.class,100); @@ -2164,6 +2244,14 @@ public boolean isOverfed() { return buff(Hunger.class) != null && buff(Hunger.class).isOverfed(); } + + public boolean isBeOld() { + return buff(BeOld.class) != null; + } + + public boolean isBeCorrupt() { + return buff(BeCorrupt.class) != null; + } @Override public void add(Buff buff) { @@ -2180,10 +2268,12 @@ public void add(Buff buff) { } if (buff instanceof RingOfMight.Might) { - if (((RingOfMight.Might) buff).level > 0) { - HT += ((RingOfMight.Might) buff).level * 8; - } - } else if (buff instanceof Paralysis || buff instanceof Vertigo) { + //if (((RingOfMight.Might) buff).level > 0) { + // HT += ((RingOfMight.Might) buff).level * 8; + // } + Dungeon.hero.updateHT(false); + } else + if (buff instanceof Paralysis || buff instanceof Vertigo) { interrupt(); } @@ -2195,14 +2285,14 @@ public void add(Buff buff) { public void remove(Buff buff) { super.remove(buff); if (buff instanceof RingOfMight.Might) { - if (((RingOfMight.Might) buff).level > 0) { - HT -= ((RingOfMight.Might) buff).level * 8; - hero.damage(1, this); - if (!hero.isAlive()) { - Dungeon.fail(Messages.format(ResultDescriptions.ITEM)); - } - - } + //if (((RingOfMight.Might) buff).level > 0) { + //HT -= ((RingOfMight.Might) buff).level * 8; + //hero.damage(1, this); + //if (!hero.isAlive()) { + // Dungeon.fail(Messages.format(ResultDescriptions.ITEM)); + //} + Dungeon.hero.updateHT(false); + //} } BuffIndicator.refreshHero(); @@ -2552,11 +2642,17 @@ public void resurrect(int resetLevel) { } - @Override + /*@Override public HashSet> resistances() { - RingOfElements.Resistance r = buff(RingOfElements.Resistance.class); + RingOfElements.RingResistance r = buff(RingOfElements.RingResistance.class); return r == null ? super.resistances() : r.resistances(); } + + @Override + public HashSet> weakness() { + RingOfElements.RingResistance r = buff(RingOfElements.RingResistance.class); + return r == null ? super.weakness() : r.weakness(); + } @Override public HashSet> immunities() { @@ -2566,14 +2662,14 @@ public HashSet> immunities() { immunities.add(immunity); } return immunities; - } + }*/ @Override public void next() { super.next(); } - public static interface Doom { - public void onDeath(); + public interface Doom { + void onDeath(); } } diff --git a/java/com/hmdzl/spspd/actors/hero/HeroClass.java b/java/com/hmdzl/spspd/actors/hero/HeroClass.java index 3b962529..4388f277 100644 --- a/java/com/hmdzl/spspd/actors/hero/HeroClass.java +++ b/java/com/hmdzl/spspd/actors/hero/HeroClass.java @@ -33,24 +33,31 @@ import com.hmdzl.spspd.items.SaveYourLife; import com.hmdzl.spspd.items.SoulCollect; import com.hmdzl.spspd.items.Stylus; +import com.hmdzl.spspd.items.TomeOfMastery; import com.hmdzl.spspd.items.TriForce; import com.hmdzl.spspd.items.Weightstone; +import com.hmdzl.spspd.items.Whistle; import com.hmdzl.spspd.items.armor.Armor; import com.hmdzl.spspd.items.armor.normalarmor.BaseArmor; +import com.hmdzl.spspd.items.armor.normalarmor.ClothArmor; import com.hmdzl.spspd.items.armor.normalarmor.DiscArmor; import com.hmdzl.spspd.items.armor.normalarmor.LeatherArmor; -import com.hmdzl.spspd.items.armor.normalarmor.LifeArmor; -import com.hmdzl.spspd.items.armor.normalarmor.NormalArmor; import com.hmdzl.spspd.items.armor.normalarmor.RubberArmor; import com.hmdzl.spspd.items.armor.normalarmor.StyrofoamArmor; +import com.hmdzl.spspd.items.armor.normalarmor.VestArmor; +import com.hmdzl.spspd.items.armor.normalarmor.WoodenArmor; import com.hmdzl.spspd.items.artifacts.AlienBag; import com.hmdzl.spspd.items.artifacts.Artifact; +import com.hmdzl.spspd.items.artifacts.CloakOfShadows; import com.hmdzl.spspd.items.artifacts.EtherealChains; import com.hmdzl.spspd.items.artifacts.Pylon; import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; +import com.hmdzl.spspd.items.bags.KeyRing; import com.hmdzl.spspd.items.bags.PotionBandolier; +import com.hmdzl.spspd.items.bags.ScrollHolder; import com.hmdzl.spspd.items.bags.SeedPouch; import com.hmdzl.spspd.items.bags.WandHolster; +import com.hmdzl.spspd.items.bombs.DungeonBomb; import com.hmdzl.spspd.items.bombs.FireBomb; import com.hmdzl.spspd.items.bombs.IceBomb; import com.hmdzl.spspd.items.bombs.StormBomb; @@ -65,13 +72,28 @@ import com.hmdzl.spspd.items.eggs.GoldDragonEgg; import com.hmdzl.spspd.items.eggs.GreenDragonEgg; import com.hmdzl.spspd.items.eggs.LightDragonEgg; +import com.hmdzl.spspd.items.eggs.RandomEgg; import com.hmdzl.spspd.items.eggs.RedDragonEgg; import com.hmdzl.spspd.items.eggs.ShadowDragonEgg; import com.hmdzl.spspd.items.eggs.VioletDragonEgg; +import com.hmdzl.spspd.items.food.Honey; +import com.hmdzl.spspd.items.food.completefood.Chocolate; +import com.hmdzl.spspd.items.food.completefood.MoonCake; +import com.hmdzl.spspd.items.food.completefood.PetFood; +import com.hmdzl.spspd.items.food.fruit.Strawberry; +import com.hmdzl.spspd.items.food.staplefood.Pasty; +import com.hmdzl.spspd.items.journalpages.EnergyCore; +import com.hmdzl.spspd.items.journalpages.SafeSpotPage; +import com.hmdzl.spspd.items.journalpages.Sokoban1; +import com.hmdzl.spspd.items.journalpages.Sokoban2; +import com.hmdzl.spspd.items.journalpages.Sokoban3; +import com.hmdzl.spspd.items.journalpages.Sokoban4; +import com.hmdzl.spspd.items.journalpages.Town; import com.hmdzl.spspd.items.journalpages.Vault; import com.hmdzl.spspd.items.medicine.Hardpill; import com.hmdzl.spspd.items.medicine.Powerpill; import com.hmdzl.spspd.items.medicine.Smashpill; +import com.hmdzl.spspd.items.misc.Ankhshield; import com.hmdzl.spspd.items.misc.AttackShield; import com.hmdzl.spspd.items.misc.AttackShoes; import com.hmdzl.spspd.items.misc.BShovel; @@ -81,18 +103,31 @@ import com.hmdzl.spspd.items.misc.DiceTower; import com.hmdzl.spspd.items.misc.FaithSign; import com.hmdzl.spspd.items.misc.GnollMark; +import com.hmdzl.spspd.items.misc.GunOfSoldier; import com.hmdzl.spspd.items.misc.HealBag; import com.hmdzl.spspd.items.misc.HorseTotem; +import com.hmdzl.spspd.items.misc.JumpA; import com.hmdzl.spspd.items.misc.JumpF; +import com.hmdzl.spspd.items.misc.JumpH; +import com.hmdzl.spspd.items.misc.JumpM; +import com.hmdzl.spspd.items.misc.JumpP; +import com.hmdzl.spspd.items.misc.JumpR; +import com.hmdzl.spspd.items.misc.JumpS; +import com.hmdzl.spspd.items.misc.JumpW; import com.hmdzl.spspd.items.misc.LeaderFlag; import com.hmdzl.spspd.items.misc.MKbox; import com.hmdzl.spspd.items.misc.MechPocket; +import com.hmdzl.spspd.items.misc.MissileShield; import com.hmdzl.spspd.items.misc.NeedPaper; import com.hmdzl.spspd.items.misc.NmHealBag; import com.hmdzl.spspd.items.misc.PPC; +import com.hmdzl.spspd.items.misc.PPC2; +import com.hmdzl.spspd.items.misc.PotionOfMage; import com.hmdzl.spspd.items.misc.RangeBag; import com.hmdzl.spspd.items.misc.RewardPaper; import com.hmdzl.spspd.items.misc.SavageHelmet; +import com.hmdzl.spspd.items.misc.SeriousPunch; +import com.hmdzl.spspd.items.misc.Shovel; import com.hmdzl.spspd.items.misc.UndeadBook; import com.hmdzl.spspd.items.nornstone.BlueNornStone; import com.hmdzl.spspd.items.nornstone.GreenNornStone; @@ -100,60 +135,44 @@ import com.hmdzl.spspd.items.nornstone.PurpleNornStone; import com.hmdzl.spspd.items.nornstone.YellowNornStone; import com.hmdzl.spspd.items.potions.PotionOfHealing; -import com.hmdzl.spspd.items.potions.PotionOfShield; -import com.hmdzl.spspd.items.rings.Ring; -import com.hmdzl.spspd.items.rings.RingOfForce; -import com.hmdzl.spspd.items.rings.RingOfMight; -import com.hmdzl.spspd.items.scrolls.ScrollOfRegrowth; -import com.hmdzl.spspd.items.scrolls.ScrollOfTerror; -import com.hmdzl.spspd.items.TomeOfMastery; -import com.hmdzl.spspd.items.armor.normalarmor.VestArmor; -import com.hmdzl.spspd.items.armor.normalarmor.WoodenArmor; -import com.hmdzl.spspd.items.bags.ScrollHolder; -import com.hmdzl.spspd.items.bombs.DungeonBomb; -import com.hmdzl.spspd.items.food.Honey; -import com.hmdzl.spspd.items.food.staplefood.NormalRation; -import com.hmdzl.spspd.items.food.staplefood.Pasty; -import com.hmdzl.spspd.items.journalpages.SafeSpotPage; -import com.hmdzl.spspd.items.journalpages.Sokoban2; -import com.hmdzl.spspd.items.journalpages.Sokoban3; -import com.hmdzl.spspd.items.journalpages.Sokoban4; -import com.hmdzl.spspd.items.misc.Ankhshield; -import com.hmdzl.spspd.items.armor.normalarmor.ClothArmor; -import com.hmdzl.spspd.items.artifacts.CloakOfShadows; -import com.hmdzl.spspd.items.bags.KeyRing; -import com.hmdzl.spspd.items.eggs.RandomEgg; -import com.hmdzl.spspd.items.food.completefood.PetFood; -import com.hmdzl.spspd.items.journalpages.Sokoban1; -import com.hmdzl.spspd.items.journalpages.Town; -import com.hmdzl.spspd.items.misc.GunOfSoldier; -import com.hmdzl.spspd.items.misc.JumpP; -import com.hmdzl.spspd.items.misc.JumpS; -import com.hmdzl.spspd.items.misc.PotionOfMage; -import com.hmdzl.spspd.items.misc.Shovel; import com.hmdzl.spspd.items.potions.PotionOfInvisibility; import com.hmdzl.spspd.items.potions.PotionOfLiquidFlame; import com.hmdzl.spspd.items.potions.PotionOfMending; import com.hmdzl.spspd.items.potions.PotionOfMight; import com.hmdzl.spspd.items.potions.PotionOfMindVision; import com.hmdzl.spspd.items.potions.PotionOfPurity; +import com.hmdzl.spspd.items.potions.PotionOfShield; import com.hmdzl.spspd.items.potions.PotionOfStrength; import com.hmdzl.spspd.items.reward.SewerReward; +import com.hmdzl.spspd.items.rings.Ring; +import com.hmdzl.spspd.items.rings.RingOfAccuracy; +import com.hmdzl.spspd.items.rings.RingOfElements; +import com.hmdzl.spspd.items.rings.RingOfEnergy; +import com.hmdzl.spspd.items.rings.RingOfEvasion; +import com.hmdzl.spspd.items.rings.RingOfForce; +import com.hmdzl.spspd.items.rings.RingOfFuror; +import com.hmdzl.spspd.items.rings.RingOfHaste; +import com.hmdzl.spspd.items.rings.RingOfMagic; +import com.hmdzl.spspd.items.rings.RingOfMight; +import com.hmdzl.spspd.items.rings.RingOfSharpshooting; +import com.hmdzl.spspd.items.rings.RingOfTenacity; import com.hmdzl.spspd.items.scrolls.ScrollOfIdentify; import com.hmdzl.spspd.items.scrolls.ScrollOfLullaby; import com.hmdzl.spspd.items.scrolls.ScrollOfMagicMapping; import com.hmdzl.spspd.items.scrolls.ScrollOfMagicalInfusion; +import com.hmdzl.spspd.items.scrolls.ScrollOfPsionicBlast; import com.hmdzl.spspd.items.scrolls.ScrollOfRage; +import com.hmdzl.spspd.items.scrolls.ScrollOfRegrowth; import com.hmdzl.spspd.items.scrolls.ScrollOfRemoveCurse; +import com.hmdzl.spspd.items.scrolls.ScrollOfTerror; import com.hmdzl.spspd.items.scrolls.ScrollOfUpgrade; import com.hmdzl.spspd.items.wands.CannonOfMage; import com.hmdzl.spspd.items.wands.WandOfDisintegration; import com.hmdzl.spspd.items.wands.WandOfFirebolt; -import com.hmdzl.spspd.items.wands.WandOfFlock; import com.hmdzl.spspd.items.wands.WandOfFreeze; +import com.hmdzl.spspd.items.wands.WandOfLight; import com.hmdzl.spspd.items.wands.WandOfLightning; import com.hmdzl.spspd.items.wands.WandOfMagicMissile; -import com.hmdzl.spspd.items.wands.WandOfPoison; import com.hmdzl.spspd.items.weapon.Weapon; import com.hmdzl.spspd.items.weapon.guns.GunA; import com.hmdzl.spspd.items.weapon.guns.GunB; @@ -163,15 +182,16 @@ import com.hmdzl.spspd.items.weapon.melee.Glaive; import com.hmdzl.spspd.items.weapon.melee.Knuckles; import com.hmdzl.spspd.items.weapon.melee.Mace; +import com.hmdzl.spspd.items.weapon.melee.MageBook; import com.hmdzl.spspd.items.weapon.melee.Rapier; import com.hmdzl.spspd.items.weapon.melee.ShortSword; -import com.hmdzl.spspd.items.weapon.melee.MageBook; import com.hmdzl.spspd.items.weapon.melee.Spear; import com.hmdzl.spspd.items.weapon.melee.Triangolo; +import com.hmdzl.spspd.items.weapon.melee.TrickSand; import com.hmdzl.spspd.items.weapon.melee.Whip; import com.hmdzl.spspd.items.weapon.melee.WoodenStaff; import com.hmdzl.spspd.items.weapon.melee.special.DiamondPickaxe; -import com.hmdzl.spspd.items.weapon.melee.special.FireCracker; +import com.hmdzl.spspd.items.weapon.melee.special.EleKatana; import com.hmdzl.spspd.items.weapon.melee.special.LinkSword; import com.hmdzl.spspd.items.weapon.melee.special.ShadowEater; import com.hmdzl.spspd.items.weapon.melee.special.TestWeapon; @@ -180,15 +200,11 @@ import com.hmdzl.spspd.items.weapon.missiles.ElfBow; import com.hmdzl.spspd.items.weapon.missiles.EmpBola; import com.hmdzl.spspd.items.weapon.missiles.ErrorAmmo; -import com.hmdzl.spspd.items.misc.JumpW; -import com.hmdzl.spspd.items.misc.JumpH; -import com.hmdzl.spspd.items.misc.JumpM; -import com.hmdzl.spspd.items.misc.JumpR; import com.hmdzl.spspd.items.weapon.missiles.EscapeKnive; -import com.hmdzl.spspd.items.misc.MissileShield; import com.hmdzl.spspd.items.weapon.missiles.ManyKnive; import com.hmdzl.spspd.items.weapon.missiles.PocketBall; import com.hmdzl.spspd.items.weapon.missiles.PoisonDart; +import com.hmdzl.spspd.items.weapon.missiles.ShootGun; import com.hmdzl.spspd.items.weapon.missiles.Skull; import com.hmdzl.spspd.items.weapon.missiles.Smoke; import com.hmdzl.spspd.items.weapon.missiles.TaurcenBow; @@ -196,10 +212,10 @@ import com.hmdzl.spspd.items.weapon.spammo.GoldAmmo; import com.hmdzl.spspd.items.weapon.spammo.HeavyAmmo; import com.hmdzl.spspd.items.weapon.spammo.WoodenAmmo; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.plants.Dewcatcher; import com.hmdzl.spspd.plants.Seedpod; import com.watabou.utils.Bundle; -import com.hmdzl.spspd.messages.Messages; public enum HeroClass { @@ -215,7 +231,7 @@ public enum HeroClass { private String title; private String title2; - private HeroClass(String title, String title2) { + HeroClass(String title, String title2) { this.title = title; this.title2 = title2; } @@ -267,18 +283,19 @@ public void initHero(Hero hero) { private static void initCommon(Hero hero) { new KeyRing().collect(); - new NormalRation().identify().collect(); + //new NormalRation().identify().collect(); + new Chocolate().identify().collect(); - if (Dungeon.skins != 3) { + if (Dungeon.skins != 3 && Dungeon.skins != 6) { new Ankhshield().collect(); } if (Dungeon.skins == 3) { EtherealChains chains = new EtherealChains(); - (hero.belongings.misc3 = chains).identify(); + (hero.belongings.misc3 = chains).identify().upgrade(3); hero.belongings.misc3.activate(hero); - new EmpBola(7).collect(); - new PoisonDart(7).collect(); - new Smoke(7).collect(); + new EmpBola(10).collect(); + new PoisonDart(10).collect(); + new Smoke(10).collect(); new Weightstone().collect(); new Stylus().collect(); new PotionOfHealing().identify().collect(); @@ -309,6 +326,7 @@ private static void initCommon(Hero hero) { Dungeon.limitedDrops.strengthPotions.count+=10; Item shoes = Generator.random(Generator.Category.SHOES); shoes.identify().collect(); + new Whistle().collect(); } @@ -359,6 +377,7 @@ private static void initCommon(Hero hero) { new Sokoban3().collect(); new Sokoban4().collect(); new DolyaSlate().collect(); + new EnergyCore().collect(); new Vault().collect(); new CourageChallenge().collect(); new PowerChallenge().collect(); @@ -366,12 +385,15 @@ private static void initCommon(Hero hero) { new TriForce().collect(); new Palantir().collect(); + + new SoulCollect().collect(); new ErrorAmmo(20).collect(); new PowerHand().collect(); new TomeOfMastery().collect(); new ShadowEater().collect(); new TestWeapon().upgrade(90).collect(); + //new UnstableSpellbook().upgrade(4).collect(); new GoldDragonEgg().collect(); new VioletDragonEgg().collect(); @@ -382,13 +404,15 @@ private static void initCommon(Hero hero) { new BlueDragonEgg().collect(); new PocketBall(10).collect(); + //new Whistle().collect(); + for(int i=0; i<199; i++){ new ScrollOfMagicalInfusion().identify().collect(); new ScrollOfUpgrade().identify().collect(); new ScrollOfIdentify().identify().collect(); new ScrollOfMagicMapping().identify().collect(); new ExpOre().collect(); - new Pasty().collect(); + new MoonCake().collect(); new PotionOfMindVision().identify().collect(); new PotionOfStrength().identify().collect(); new PotionOfShield().identify().collect(); @@ -401,18 +425,36 @@ private static void initCommon(Hero hero) { for(int i=0; i<10; i++){ new Seedpod.Seed().collect(); new ScrollOfRegrowth().collect(); + new PotionOfLiquidFlame().collect(); + new ScrollOfPsionicBlast().collect(); + new Strawberry().collect(); } - //new WandOfFlock().upgrade(10).identify().collect(); - //new WandOfPoison().upgrade(10).identify().collect(); + + new RingOfElements().upgrade(10).identify().collect(); + new RingOfAccuracy().upgrade(10).identify().collect(); + new RingOfMight().upgrade(10).identify().collect(); + new RingOfForce().upgrade(10).identify().collect(); + new RingOfFuror().upgrade(10).identify().collect(); + new RingOfEvasion().upgrade(10).identify().collect(); + new RingOfEnergy().upgrade(10).identify().collect(); + new RingOfMagic().upgrade(10).identify().collect(); + new RingOfHaste().upgrade(10).identify().collect(); + new RingOfSharpshooting().upgrade(10).identify().collect(); + new RingOfTenacity().upgrade(10).identify().collect(); + + + + new SewerReward().collect(); new SaveYourLife().collect(); //new FireCracker().collect(); Dungeon.gold = 10000; //Dungeon.gold = 10000000; - hero.HT=hero.HP=10000; + hero.TRUE_HT=hero.HP=10000; + Dungeon.hero.updateHT(false); //hero.STR = hero.STR + 20; - Dungeon.depth = 1; + Dungeon.depth = 4; } } @@ -455,7 +497,8 @@ private static void initWarrior(Hero hero) { new JumpW().collect(); } else if (Dungeon.skins == 2) { - hero.HT+=36; + hero.TRUE_HT+=36; + Dungeon.hero.updateHT(false); hero.STR -=4; hero.hitSkill-=4; hero.evadeSkill+=1; @@ -491,6 +534,8 @@ private static void initWarrior(Hero hero) { new TestWeapon().identify().collect(); new TestWeapon().identify().collect(); new TestWeapon().identify().collect(); + new TestWeapon().identify().collect(); + new TestWeapon().identify().collect(); new RewardPaper().identify().collect(); @@ -501,6 +546,19 @@ private static void initWarrior(Hero hero) { } else if (Dungeon.skins == 5) { + } else if (Dungeon.skins == 6) { + (hero.belongings.armor = new VestArmor()).identify().upgrade(1); + RingOfForce force = new RingOfForce(); + (hero.belongings.misc1 = force).identify().upgrade(1); + hero.belongings.misc1.activate(hero); + + RingOfMight might = new RingOfMight(); + (hero.belongings.misc2 = might).identify().upgrade(1); + hero.belongings.misc2.activate(hero); + + new SeriousPunch().collect(); + new Ankhshield().collect(); + new JumpW().collect(); } else { (hero.belongings.weapon = new ShortSword()).identify(); (hero.belongings.armor = new WoodenArmor()).identify(); @@ -528,7 +586,8 @@ private static void initMage(Hero hero) { new CannonOfMage().identify().collect(); new JumpM().collect(); } else if (Dungeon.skins == 2) { - hero.HT-=10; + hero.TRUE_HT-=10; + Dungeon.hero.updateHT(false); hero.hitSkill-=5; hero.evadeSkill+=2; hero.magicSkill+=3; @@ -559,7 +618,16 @@ private static void initMage(Hero hero) { } else if (Dungeon.skins == 5) { + } else if (Dungeon.skins == 6) { + (hero.belongings.weapon = new ShortSword()).identify(); + (hero.belongings.armor = new ClothArmor()).identify(); + new GnollMark().collect(); + new WandOfLight().identify().collect(); + new Powerpill().collect(); + new Smashpill().collect(); + new Hardpill().collect(); + new JumpW().collect(); } else { (hero.belongings.weapon = new MageBook()).identify(); @@ -588,7 +656,8 @@ private static void initRogue(Hero hero) { hero.belongings.misc1.activate(hero); new JumpR().collect(); } else if (Dungeon.skins == 2) { - hero.HT-=20; + hero.TRUE_HT-=20; + Dungeon.hero.updateHT(false); hero.evadeSkill+=3; hero.magicSkill+=3; (hero.belongings.weapon = new Dagger()).identify(); @@ -619,7 +688,31 @@ private static void initRogue(Hero hero) { } else if (Dungeon.skins == 5) { - } else { + } else if (Dungeon.skins == 6) { + + (hero.belongings.weapon = new EleKatana()).identify(); + (hero.belongings.armor = new ClothArmor()).identify(); + + CloakOfShadows cloak = new CloakOfShadows(); + (hero.belongings.misc1 = cloak).identify(); + hero.belongings.misc1.activate(hero); + + EtherealChains chains = new EtherealChains(); + (hero.belongings.misc3 = chains).identify().upgrade(3); + hero.belongings.misc3.activate(hero); + new EmpBola(10).collect(); + new PoisonDart(10).collect(); + new Smoke(10).collect(); + new Weightstone().collect(); + new Stylus().collect(); + new PotionOfHealing().identify().collect(); + new ScrollOfMagicMapping().identify().collect(); + //new HorseTotem().identify().collect(); + + hero.STR += 2; + Dungeon.limitedDrops.strengthPotions.count+=2; + + }else { (hero.belongings.weapon = new Dagger()).identify(); (hero.belongings.armor = new VestArmor()).identify(); @@ -652,7 +745,8 @@ private static void initHuntress(Hero hero) { knife.identify().collect(); new JumpH().collect(); } else if (Dungeon.skins == 2) { - hero.HT-=10; + hero.TRUE_HT-=10; + Dungeon.hero.updateHT(false); hero.hitSkill+=5; hero.evadeSkill+=3; (hero.belongings.weapon = new Knuckles()).identify(); @@ -677,7 +771,18 @@ private static void initHuntress(Hero hero) { } else if (Dungeon.skins == 5) { - } else { + } else if (Dungeon.skins == 6) { + (hero.belongings.weapon = new Sling()).identify(); + (hero.belongings.armor = new VestArmor()).identify(); + + new ShootGun().identify().collect(); + new JumpS().collect(); + EmpBola empbola = new EmpBola(3); + empbola.identify().collect(); + hero.hitSkill = hero.hitSkill + 4; + hero.evadeSkill = hero.evadeSkill + 2; + + }else { (hero.belongings.weapon = new Knuckles()).identify(); (hero.belongings.armor = new ClothArmor()).identify(); @@ -705,7 +810,8 @@ private static void initPerformer(Hero hero) { new BShovel().collect(); new JumpP().collect(); } else if (Dungeon.skins == 2) { - hero.HT-=10; + hero.TRUE_HT-=10; + Dungeon.hero.updateHT(false); hero.magicSkill+=3; hero.evadeSkill+=5; (hero.belongings.weapon = new EmptyPotion()).identify(); @@ -737,6 +843,16 @@ private static void initPerformer(Hero hero) { } else if (Dungeon.skins == 5) { + } else if (Dungeon.skins == 6) { + hero.STR += 2; + Dungeon.limitedDrops.strengthPotions.count+=2; + + (hero.belongings.weapon = new Mace()).identify(); + (hero.belongings.armor = new LeatherArmor()).identify(); + + new PPC2().collect(); + new JumpP().collect(); + } else { (hero.belongings.weapon = new Triangolo()).identify(); @@ -767,7 +883,8 @@ private static void initSoldier(Hero hero) { new MKbox().collect(); }else if (Dungeon.skins == 2) { - hero.HT+=5; + hero.TRUE_HT+=5; + Dungeon.hero.updateHT(false); hero.STR += 6; hero.magicSkill+=5; hero.hitSkill-=10; @@ -798,25 +915,32 @@ private static void initSoldier(Hero hero) { } else if (Dungeon.skins == 5) { - - + } else if (Dungeon.skins == 6) { + hero.TRUE_HT+=5; + Dungeon.hero.updateHT(false); + hero.STR += 6; + hero.magicSkill+=5; + hero.hitSkill-=10; + hero.evadeSkill-=35; + (hero.belongings.weapon = new WoodenStaff()).identify(); + (hero.belongings.armor = new BaseArmor()).identify(); + Dungeon.limitedDrops.strengthPotions.count += 6; + new ShootGun().identify().collect(); + new JumpS().collect(); } else { - (hero.belongings.weapon = new Sling()).identify(); (hero.belongings.armor = new VestArmor()).identify(); - new GunOfSoldier().identify().collect(); - - new JumpS().collect(); + new JumpS().collect(); EscapeKnive knife = new EscapeKnive(3); knife.identify().collect(); } + new ScrollOfRage().setKnown(); + new PotionOfMending().setKnown(); - new ScrollOfRage().setKnown(); - new PotionOfMending().setKnown(); + hero.hitSkill = hero.hitSkill + 4; + hero.evadeSkill = hero.evadeSkill + 2; - hero.hitSkill = hero.hitSkill + 4; - hero.evadeSkill = hero.evadeSkill + 2; } private static void initFollower(Hero hero) { @@ -830,7 +954,7 @@ private static void initFollower(Hero hero) { (hero.belongings.weapon = new Dagger()).upgrade(2).identify(); (hero.belongings.armor = new VestArmor()).identify(); Pylon pylon = new Pylon(); - (hero.belongings.misc1 = pylon).identify(); + (hero.belongings.misc1 = pylon).identify().upgrade(2); hero.belongings.misc1.activate(hero); new JumpF().collect(); @@ -857,7 +981,12 @@ private static void initFollower(Hero hero) { } else if (Dungeon.skins == 5) { - + } else if (Dungeon.skins == 6) { + (hero.belongings.weapon = new TrickSand()).identify(); + (hero.belongings.armor = new VestArmor()).identify(); + new Skull(5).collect(); + new FaithSign().identify().collect(); + new JumpA().collect(); } else { diff --git a/java/com/hmdzl/spspd/actors/hero/HeroSubClass.java b/java/com/hmdzl/spspd/actors/hero/HeroSubClass.java index a4835b5a..ad99b153 100644 --- a/java/com/hmdzl/spspd/actors/hero/HeroSubClass.java +++ b/java/com/hmdzl/spspd/actors/hero/HeroSubClass.java @@ -17,7 +17,7 @@ */ package com.hmdzl.spspd.actors.hero; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Bundle; public enum HeroSubClass { diff --git a/java/com/hmdzl/spspd/actors/mobs/Acidic.java b/java/com/hmdzl/spspd/actors/mobs/Acidic.java index 8976d1cb..630b199a 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Acidic.java +++ b/java/com/hmdzl/spspd/actors/mobs/Acidic.java @@ -59,13 +59,8 @@ public void die(Object cause) { Badges.validateRare(this); } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(StenchGas.class); + { + immunities.add(StenchGas.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/AdultDragonViolet.java b/java/com/hmdzl/spspd/actors/mobs/AdultDragonViolet.java index c1fc2f19..05e199a6 100644 --- a/java/com/hmdzl/spspd/actors/mobs/AdultDragonViolet.java +++ b/java/com/hmdzl/spspd/actors/mobs/AdultDragonViolet.java @@ -17,31 +17,32 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.actors.buffs.Silent; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.ToxicGas; +import com.hmdzl.spspd.actors.buffs.BeOld; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Poison; +import com.hmdzl.spspd.actors.buffs.Silent; import com.hmdzl.spspd.items.BossRush; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.sprites.AdultDragonVioletSprite; +import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; -import com.hmdzl.spspd.sprites.NewDargon01Sprite; +import com.hmdzl.spspd.sprites.NewDragon01Sprite; import com.watabou.utils.Callback; import com.watabou.utils.Random; +import java.util.HashSet; + public class AdultDragonViolet extends Mob implements Callback{ private static final int JUMP_DELAY = 20; private static final float TIME_TO_ZAP = 1f; { - spriteClass = NewDargon01Sprite.class; + spriteClass = NewDragon01Sprite.class; baseSpeed = 1.5f; HP = HT = 8000; @@ -102,7 +103,7 @@ protected boolean doAttack(Char enemy) { boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos]; if (visible) { - ((NewDargon01Sprite) sprite).zap(enemy.pos); + sprite.zap(enemy.pos); } else { zap(); } @@ -123,7 +124,8 @@ private void zap() { int dmg = damageRoll(); enemy.damage(dmg, this); - Buff.affect(enemy,Poison.class).set(Poison.durationFactor(enemy)); + //Buff.affect(enemy,Poison.class).set(Random.Int(10, 20)); + Buff.affect(enemy,BeOld.class).set(20); } else { enemy.sprite.showStatus(CharSprite.NEUTRAL, enemy.defenseVerb()); @@ -141,16 +143,9 @@ public void call() { next(); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/Albino.java b/java/com/hmdzl/spspd/actors/mobs/Albino.java index 43b7b9c6..6b753476 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Albino.java +++ b/java/com/hmdzl/spspd/actors/mobs/Albino.java @@ -57,16 +57,10 @@ public boolean act() { return super.act(); } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(CorruptGas.class); - IMMUNITIES.add(Vertigo.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + { + immunities.add(Amok.class); + immunities.add(Terror.class); + immunities.add(CorruptGas.class); + immunities.add(Vertigo.class); } } diff --git a/java/com/hmdzl/spspd/actors/mobs/AlbinoPiranha.java b/java/com/hmdzl/spspd/actors/mobs/AlbinoPiranha.java index 2a66a6a3..b69c0373 100644 --- a/java/com/hmdzl/spspd/actors/mobs/AlbinoPiranha.java +++ b/java/com/hmdzl/spspd/actors/mobs/AlbinoPiranha.java @@ -24,7 +24,7 @@ import com.hmdzl.spspd.items.food.completefood.GoldenNut; import com.hmdzl.spspd.items.reward.CaveReward; import com.hmdzl.spspd.items.scrolls.ScrollOfSacrifice; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.Statistics; import com.hmdzl.spspd.actors.Char; @@ -54,7 +54,7 @@ public class AlbinoPiranha extends Mob { loot = new Meat(); lootChance = 0.1f; - properties.add(Property.BEAST); + properties.add(Property.FISHER); } public AlbinoPiranha() { @@ -186,18 +186,13 @@ protected boolean getFurther(int target) { } } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(Paralysis.class); - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(Roots.class); - IMMUNITIES.add(Frost.class); - IMMUNITIES.add(Corruption.class); + { + immunities.add(Burning.class); + immunities.add(Paralysis.class); + immunities.add(ToxicGas.class); + immunities.add(Roots.class); + immunities.add(Frost.class); + immunities.add(Corruption.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/Assassin.java b/java/com/hmdzl/spspd/actors/mobs/Assassin.java index c95f91f6..f5100238 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Assassin.java +++ b/java/com/hmdzl/spspd/actors/mobs/Assassin.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.Statistics; import com.hmdzl.spspd.actors.buffs.Locked; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.items.StoneOre; import com.hmdzl.spspd.actors.Actor; @@ -115,16 +115,9 @@ public static Assassin spawnAt(int pos) { } } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); - - } - - @Override - public HashSet> resistances() { - return RESISTANCES; + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + //resistances.add(EnchantmentDark.class); } } diff --git a/java/com/hmdzl/spspd/actors/mobs/BambooMob.java b/java/com/hmdzl/spspd/actors/mobs/BambooMob.java index efb1de08..2e1b8968 100644 --- a/java/com/hmdzl/spspd/actors/mobs/BambooMob.java +++ b/java/com/hmdzl/spspd/actors/mobs/BambooMob.java @@ -101,35 +101,19 @@ protected boolean getFurther(int target) { return true; } - private static final HashSet> IMMUNITIES = new HashSet<>(); + private static final HashSet> resistances = new HashSet<>(); - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> WEAKNESS = new HashSet>(); - static { - WEAKNESS.add(ToxicGas.class); - WEAKNESS.add(Ooze.class); - WEAKNESS.add(PoisonGas.class); + { + weakness.add(ToxicGas.class); + weakness.add(Ooze.class); + weakness.add(PoisonGas.class); - IMMUNITIES.add(Roots.class); + resistances.add(Roots.class); - WEAKNESS.add(Burning.class); - WEAKNESS.add(Wand.class); - WEAKNESS.add(EnchantmentFire.class); - WEAKNESS.add(Poison.class); + weakness.add(Wand.class); + weakness.add(Poison.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } - @Override - public HashSet> resistances() { - return RESISTANCES; - } - @Override - public HashSet> weakness() { - return WEAKNESS; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/Bandit.java b/java/com/hmdzl/spspd/actors/mobs/Bandit.java index adb40e20..114cf8b8 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Bandit.java +++ b/java/com/hmdzl/spspd/actors/mobs/Bandit.java @@ -46,7 +46,7 @@ public int attackProc(Char enemy, int damage) { Buff.prolong(enemy, Blindness.class, Random.Int(5, 12)); Buff.affect(enemy, Poison.class).set( - Random.Int(5, 7) * Poison.durationFactor(enemy)); + Random.Int(5, 7)); Buff.prolong(enemy, Cripple.class, Cripple.DURATION); Dungeon.observe(); diff --git a/java/com/hmdzl/spspd/actors/mobs/BanditKing.java b/java/com/hmdzl/spspd/actors/mobs/BanditKing.java index b00587b8..52434d45 100644 --- a/java/com/hmdzl/spspd/actors/mobs/BanditKing.java +++ b/java/com/hmdzl/spspd/actors/mobs/BanditKing.java @@ -17,7 +17,7 @@ */ package com.hmdzl.spspd.actors.mobs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; diff --git a/java/com/hmdzl/spspd/actors/mobs/Bat.java b/java/com/hmdzl/spspd/actors/mobs/Bat.java index 27c72d6d..d6fab9de 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Bat.java +++ b/java/com/hmdzl/spspd/actors/mobs/Bat.java @@ -44,10 +44,10 @@ public class Bat extends Mob { flying = true; loot = Generator.Category.SEED; - lootChance = 0.1667f; // by default, see die() + lootChance = 0.15f; // by default, see die() lootOther = new Meat(); - lootChanceOther = 0.5f; // by default, see die() + lootChanceOther = 0.3f; // by default, see die() properties.add(Property.BEAST); } @@ -92,13 +92,4 @@ protected Item createLoot() { return super.createLoot(); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/Bestiary.java b/java/com/hmdzl/spspd/actors/mobs/Bestiary.java index 0db47b80..d58f72a7 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Bestiary.java +++ b/java/com/hmdzl/spspd/actors/mobs/Bestiary.java @@ -18,7 +18,6 @@ package com.hmdzl.spspd.actors.mobs; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.actors.Char; import com.watabou.utils.Random; public class Bestiary { @@ -37,13 +36,15 @@ public static Mob mutable(int depth) { @SuppressWarnings("unchecked") Class cl = (Class) mobClass(depth); - if (Random.Int(30) == 0) { + if (Random.Int(15) == 0) { if (cl == Rat.class) { cl = Albino.class; } else if (cl == Thief.class) { cl = Bandit.class; } else if (cl == Brute.class) { cl = Shielded.class; + } else if (cl == IceBug.class) { + cl = BombBug.class; } else if (cl == Monk.class) { cl = Senior.class; } else if (cl == Scorpio.class) { @@ -152,19 +153,19 @@ private static Class mobClass(int depth) { case 12: chances = new float[] { 1, 0.9f, 0.7f, 0.5f, 0.3f ,0.9f,1 }; classes = new Class[] { Bat.class, Skeleton.class, Brute.class, - GnollShaman.class,Spinner.class,SandMob.class,BombBug.class }; + GnollShaman.class,Spinner.class,SandMob.class,IceBug.class }; break; case 13: chances = new float[] { 1, 1, 0.9f, 0.7f, 0.6f, 0.7f,0.4f, 0.02f,1 }; classes = new Class[] { Bat.class, Skeleton.class, Brute.class, GnollShaman.class,Spinner.class, BrokenRobot.class,SandMob.class, - FireElemental.class,BombBug.class }; + FireElemental.class,IceBug.class }; break; case 14: chances = new float[] { 1, 1, 1, 0.9f,0.8f,0.6f,0.6f,0.04f, 0.02f,1 }; classes = new Class[] { Bat.class, Skeleton.class, Brute.class, GnollShaman.class,Spinner.class, BrokenRobot.class,SandMob.class, - FireElemental.class, Monk.class,BombBug.class}; + FireElemental.class, Monk.class,IceBug.class}; break; case 15: @@ -216,24 +217,26 @@ private static Class mobClass(int depth) { break; case 21: - chances = new float[] { 0.8f,0.8f, 1, 1, 1, 0.2f, 0.2f }; + chances = new float[] { 0.8f,0.8f, 1, 1, 1, 0.2f, 0.2f,0.5f }; classes = new Class[] {Musketeer.class, DwarfLich.class, - Succubus.class, Eye.class, DemonGoo.class, DemonFlower.class, Sufferer.class}; + Succubus.class, Eye.class, DemonGoo.class, DemonFlower.class, Sufferer.class,DemonTraper.class}; break; case 22: - chances = new float[] { 1, 1, 1, 0.5f,0.5f, 0.5f,0.5f }; + chances = new float[] { 1, 1, 1, 0.5f,0.5f, 0.5f,0.5f, 1}; classes = new Class[] { Succubus.class, Eye.class, DemonGoo.class, - Scorpio.class,ThiefImp.class , DemonFlower.class, Sufferer.class}; + Scorpio.class,ThiefImp.class , DemonFlower.class, Sufferer.class + ,DemonTraper.class}; break; case 23: - chances = new float[] { 1, 1, 1, 0.5f,0.5f, 0.5f,0.5f }; + chances = new float[] { 1, 1, 1, 0.5f,0.5f, 0.5f,0.5f,1 }; classes = new Class[] { Succubus.class, Eye.class, DemonGoo.class, - Scorpio.class,ThiefImp.class , DemonFlower.class, Sufferer.class}; + Scorpio.class,ThiefImp.class , DemonFlower.class, Sufferer.class + ,DemonTraper.class}; break; case 24: - chances = new float[] { 1, 1, 1, 1, 1, 1, 1 }; + chances = new float[] { 1, 1, 1, 1, 1, 1, 1, 1 }; classes = new Class[] {Succubus.class, Eye.class, DemonGoo.class, - Scorpio.class,ThiefImp.class, DemonFlower.class, Sufferer.class + Scorpio.class,ThiefImp.class, DemonFlower.class, Sufferer.class,DemonTraper.class }; break; @@ -333,15 +336,15 @@ private static Class mobClass(int depth) { return classes[Random.chances(chances)]; } - public static boolean isUnique(Char mob) { - return mob instanceof Goo - || mob instanceof Tengu - || mob instanceof DM300 - || mob instanceof King - || mob instanceof Yog.BurningFist - || mob instanceof Yog.RottingFist - || mob instanceof FetidRat - || mob instanceof GnollTrickster - || mob instanceof GreatCrab; - } + //public static boolean isUnique(Char mob) { + // return mob instanceof Goo + // || mob instanceof Tengu + // || mob instanceof DM300 + // || mob instanceof King + // || mob instanceof Yog.BurningFist + // || mob instanceof Yog.RottingFist + // || mob instanceof FetidRat + // || mob instanceof GnollTrickster + // || mob instanceof GreatCrab; + //} } diff --git a/java/com/hmdzl/spspd/actors/mobs/BlueCat.java b/java/com/hmdzl/spspd/actors/mobs/BlueCat.java index 316cb102..b11b98a4 100644 --- a/java/com/hmdzl/spspd/actors/mobs/BlueCat.java +++ b/java/com/hmdzl/spspd/actors/mobs/BlueCat.java @@ -29,7 +29,7 @@ import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.BanditKingSprite; import com.hmdzl.spspd.utils.GLog; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Bundle; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/actors/mobs/BlueWraith.java b/java/com/hmdzl/spspd/actors/mobs/BlueWraith.java index 58734685..f96719ce 100644 --- a/java/com/hmdzl/spspd/actors/mobs/BlueWraith.java +++ b/java/com/hmdzl/spspd/actors/mobs/BlueWraith.java @@ -24,6 +24,7 @@ import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.actors.buffs.Vertigo; import com.hmdzl.spspd.effects.particles.ShadowParticle; +import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.BlueWraithSprite; import com.watabou.noosa.tweeners.AlphaTweener; @@ -50,7 +51,7 @@ public class BlueWraith extends Wraith { @Override public int attackProc(Char enemy, int damage) { if (Random.Int(10) == 0) { - Buff.affect(enemy, Vertigo.class, Vertigo.duration(enemy)); + Buff.affect(enemy, Vertigo.class, 5f); Buff.affect(enemy, Terror.class, Terror.DURATION).object = enemy.id(); } @@ -81,7 +82,7 @@ public int drRoll() { @Override protected boolean canAttack(Char enemy) { - return Dungeon.level.distance( pos, enemy.pos ) <= 2 ; + return Level.distance( pos, enemy.pos ) <= 2 ; } public static BlueWraith spawnAt(int pos) { diff --git a/java/com/hmdzl/spspd/actors/mobs/BombBug.java b/java/com/hmdzl/spspd/actors/mobs/BombBug.java index 12890c51..2f83d651 100644 --- a/java/com/hmdzl/spspd/actors/mobs/BombBug.java +++ b/java/com/hmdzl/spspd/actors/mobs/BombBug.java @@ -17,34 +17,26 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - +import com.hmdzl.spspd.Assets; +import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; +import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Silent; import com.hmdzl.spspd.actors.buffs.StoneIce; import com.hmdzl.spspd.items.StoneOre; -import com.hmdzl.spspd.messages.Messages; -import com.hmdzl.spspd.Assets; -import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.Generator; -import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.scenes.GameScene; -import com.hmdzl.spspd.sprites.SkeletonSprite; - -import com.hmdzl.spspd.sprites.SpiderJumpSprite; +import com.hmdzl.spspd.sprites.BombBugSprite; import com.watabou.noosa.audio.Sample; -import com.watabou.utils.Bundle; import com.watabou.utils.Random; -public class BombBug extends Mob { +import java.util.HashSet; + +public class BombBug extends IceBug { { - spriteClass = SpiderJumpSprite.class; + spriteClass = BombBugSprite.class; HP = HT = 80+(adj(0)*Random.NormalIntRange(2, 5)); evadeSkill = 15+adj(0); @@ -61,7 +53,7 @@ public class BombBug extends Mob { @Override public int damageRoll() { - return Random.NormalIntRange(15, 20+adj(0)); + return Random.NormalIntRange(10, 15+adj(0)); } @@ -96,16 +88,6 @@ public int drRoll() { return Random.NormalIntRange(2, 5); } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(EnchantmentDark.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; - } - public static void spawnAround(int pos) { for (int n : Level.NEIGHBOURS4) { int cell = pos + n; diff --git a/java/com/hmdzl/spspd/actors/mobs/BrokenRobot.java b/java/com/hmdzl/spspd/actors/mobs/BrokenRobot.java index 50d977e8..4487060d 100644 --- a/java/com/hmdzl/spspd/actors/mobs/BrokenRobot.java +++ b/java/com/hmdzl/spspd/actors/mobs/BrokenRobot.java @@ -17,18 +17,14 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.items.StoneOre; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.actors.blobs.ToxicGas; import com.hmdzl.spspd.actors.blobs.Blob; import com.hmdzl.spspd.actors.blobs.TarGas; +import com.hmdzl.spspd.actors.blobs.ToxicGas; import com.hmdzl.spspd.actors.buffs.Light; import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.effects.CellEmitter; @@ -36,20 +32,21 @@ import com.hmdzl.spspd.effects.particles.PurpleParticle; import com.hmdzl.spspd.effects.particles.SmokeParticle; import com.hmdzl.spspd.items.Heap; +import com.hmdzl.spspd.items.StoneOre; import com.hmdzl.spspd.items.scrolls.ScrollOfRecharging; -import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; - import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.BrokenRobotSprite; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.utils.GLog; - import com.watabou.noosa.audio.Sample; import com.watabou.utils.Random; +import static com.hmdzl.spspd.actors.damagetype.DamageType.LIGHT_DAMAGE; + public class BrokenRobot extends Mob { private static final String TXT_DEATHGAZE_KILLED = "%s's deathray killed you..."; @@ -72,6 +69,7 @@ public class BrokenRobot extends Mob { loot = new ScrollOfRecharging(); lootChance = 0.25f; // by default, see die() + properties.add(Property.MAGICER); properties.add(Property.MECH); } @@ -151,7 +149,7 @@ public boolean attack(Char enemy) { } if (hit(this, ch, true)) { - ch.damage(Random.NormalIntRange(2, 8+adj(0)), this); + ch.damage(Random.NormalIntRange(2, 8+adj(0)), LIGHT_DAMAGE); if (Dungeon.visible[pos]) { ch.sprite.flash(); @@ -160,7 +158,7 @@ public boolean attack(Char enemy) { } if (!ch.isAlive() && ch == Dungeon.hero) { - Dungeon.fail(Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(Messages.get(this, "kill")); } } else { @@ -246,25 +244,10 @@ public void explode(int cell) { } } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(EnchantmentDark.class); + { + immunities.add(Terror.class); + immunities.add(ToxicGas.class); } - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(ToxicGas.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/BrownBat.java b/java/com/hmdzl/spspd/actors/mobs/BrownBat.java index 070c10d2..82c71f34 100644 --- a/java/com/hmdzl/spspd/actors/mobs/BrownBat.java +++ b/java/com/hmdzl/spspd/actors/mobs/BrownBat.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.food.meatfood.Meat; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.BrownBatSprite; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/actors/mobs/Brute.java b/java/com/hmdzl/spspd/actors/mobs/Brute.java index a622dbee..24203d2f 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Brute.java +++ b/java/com/hmdzl/spspd/actors/mobs/Brute.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.items.Gold; import com.hmdzl.spspd.items.Generator; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.BruteSprite; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.utils.GLog; @@ -104,13 +104,8 @@ protected boolean canAttack(Char enemy) {if (buff(Locked.class) != null){ return Dungeon.level.distance( pos, enemy.pos ) <= 2 ; } */ - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Terror.class); + { + immunities.add(Terror.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/Crab.java b/java/com/hmdzl/spspd/actors/mobs/Crab.java index 8a5afdc6..a8211236 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Crab.java +++ b/java/com/hmdzl/spspd/actors/mobs/Crab.java @@ -37,7 +37,7 @@ public class Crab extends Mob { loot = new MysteryMeat(); lootChance = 0.5f; - properties.add(Property.BEAST); + properties.add(Property.FISHER); } @Override diff --git a/java/com/hmdzl/spspd/actors/mobs/CrabKing.java b/java/com/hmdzl/spspd/actors/mobs/CrabKing.java index 8d0dd032..ecd9c1e7 100644 --- a/java/com/hmdzl/spspd/actors/mobs/CrabKing.java +++ b/java/com/hmdzl/spspd/actors/mobs/CrabKing.java @@ -36,7 +36,7 @@ import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.CrabKingSprite; import com.hmdzl.spspd.utils.GLog; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Random; @@ -52,7 +52,7 @@ public class CrabKing extends Mob { EXP = 20; evadeSkill = 30; - properties.add(Property.BEAST); + properties.add(Property.FISHER); properties.add(Property.BOSS); } @@ -158,16 +158,10 @@ public void notice() { yell(Messages.get(this,"notice")); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); } - @Override - public HashSet> resistances() { - return RESISTANCES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/DM300.java b/java/com/hmdzl/spspd/actors/mobs/DM300.java index ba548f50..b51be5ea 100644 --- a/java/com/hmdzl/spspd/actors/mobs/DM300.java +++ b/java/com/hmdzl/spspd/actors/mobs/DM300.java @@ -44,7 +44,7 @@ import com.hmdzl.spspd.items.artifacts.CapeOfThorns; import com.hmdzl.spspd.levels.CavesBossLevel; import com.hmdzl.spspd.levels.traps.LightningTrap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.items.journalpages.Sokoban3; import com.hmdzl.spspd.items.keys.SkeletonKey; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; @@ -108,7 +108,7 @@ public void spawnTower() { do { a.pos = pos + PathFinder.NEIGHBOURS8[Random.Int( 8 )]; b.pos = pos + PathFinder.NEIGHBOURS8[Random.Int( 8 )]; - } while (!Dungeon.level.passable[a.pos] || !Dungeon.level.passable[b.pos] || a.pos == b.pos); + } while (!Level.passable[a.pos] || !Level.passable[b.pos] || a.pos == b.pos); GameScene.add(a); GameScene.add(b); @@ -182,7 +182,7 @@ public void die(Object cause) { if(bossAlive==0){ GameScene.bossSlain(); - ((CavesBossLevel) Dungeon.level).unseal(); + Dungeon.level.unseal(); Dungeon.level.drop(new SkeletonKey(Dungeon.depth), pos).sprite.drop(); Badges.validateBossSlain(); } @@ -230,27 +230,11 @@ public void call() { next(); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(EnchantmentDark.class); - - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(Terror.class); + { + immunities.add(ToxicGas.class); + immunities.add(Terror.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } public static class Tower extends Mob implements Callback { @@ -404,7 +388,7 @@ public void die(Object cause) { if(bossAlive==0){ GameScene.bossSlain(); - ((CavesBossLevel) Dungeon.level).unseal(); + Dungeon.level.unseal(); Dungeon.level.drop(new SkeletonKey(Dungeon.depth), pos).sprite.drop(); Dungeon.level.drop(new Gold(Random.Int(3000, 6000)), pos).sprite.drop(); @@ -413,28 +397,12 @@ public void die(Object cause) { explodeDew(pos); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(EnchantmentDark.class); - - RESISTANCES.add(LightningTrap.Electricity.class); - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(ConfusionGas.class); - } + { + resistances.add(LightningTrap.Electricity.class); - @Override - public HashSet> immunities() { - return IMMUNITIES; + immunities.add(ToxicGas.class); + immunities.add(Terror.class); + immunities.add(ConfusionGas.class); } diff --git a/java/com/hmdzl/spspd/actors/mobs/DemonFlower.java b/java/com/hmdzl/spspd/actors/mobs/DemonFlower.java index ffe90d29..ee0cc385 100644 --- a/java/com/hmdzl/spspd/actors/mobs/DemonFlower.java +++ b/java/com/hmdzl/spspd/actors/mobs/DemonFlower.java @@ -27,7 +27,7 @@ import com.hmdzl.spspd.actors.buffs.GrowSeed; import com.hmdzl.spspd.actors.buffs.Silent; import com.hmdzl.spspd.items.Generator; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.ToxicGas; @@ -117,32 +117,14 @@ private void debuffadd() { spend(1f); } - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> WEAKNESS = new HashSet>(); - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - WEAKNESS.add(Burning.class); + { + weakness.add(Burning.class); - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); + resistances.add(ToxicGas.class); + resistances.add(Poison.class); - IMMUNITIES.add(GrowSeed.class); + immunities.add(GrowSeed.class); } - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - @Override - public HashSet> weakness() { - return WEAKNESS; - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/DemonGoo.java b/java/com/hmdzl/spspd/actors/mobs/DemonGoo.java index cfdf9c16..01f44845 100644 --- a/java/com/hmdzl/spspd/actors/mobs/DemonGoo.java +++ b/java/com/hmdzl/spspd/actors/mobs/DemonGoo.java @@ -40,7 +40,7 @@ import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.DemonGooSprite; import com.hmdzl.spspd.utils.GLog; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Bundle; import com.watabou.utils.Random; @@ -186,28 +186,13 @@ public void die(Object cause) { //yell(Messages.get(this, "die")); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(EnchantmentDark.class); - - } + { + resistances.add(ToxicGas.class); - @Override - public HashSet> resistances() { - return RESISTANCES; + immunities.add(Roots.class); } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Roots.class); - } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/DemonTraper.java b/java/com/hmdzl/spspd/actors/mobs/DemonTraper.java new file mode 100644 index 00000000..d5b358a0 --- /dev/null +++ b/java/com/hmdzl/spspd/actors/mobs/DemonTraper.java @@ -0,0 +1,163 @@ +/* + * 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 + */ + +package com.hmdzl.spspd.actors.mobs; + +import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.blobs.Blob; +import com.hmdzl.spspd.actors.blobs.CurseWeb; +import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.LightShootAttack; +import com.hmdzl.spspd.actors.buffs.ShadowCurse; +import com.hmdzl.spspd.actors.buffs.Terror; +import com.hmdzl.spspd.items.Generator; +import com.hmdzl.spspd.scenes.GameScene; +import com.hmdzl.spspd.sprites.ErrorSprite; +import com.watabou.utils.Bundle; +import com.watabou.utils.Random; + +public class DemonTraper extends Mob { + + { + spriteClass = ErrorSprite.class; + + HP = HT = 300; + evadeSkill = 17; + + EXP = 20; + maxLvl = 29; + + loot = Generator.random(Generator.Category.RANGEWEAPON); + lootChance = 0.2f; + + properties.add(Property.ORC); + properties.add(Property.DEMONIC); + + FLEEING = new Fleeing(); + } + + @Override + public int damageRoll() { + return Random.NormalIntRange(30, 50); + } + + @Override + public int hitSkill(Char target) { + return 50; + } + + @Override + public int drRoll() { + return Random.NormalIntRange(0, 6); + } + + //private int webCoolDown = 0; + private int lastEnemyPos = -1; + + private static final String WEB_COOLDOWN = "web_cooldown"; + //private static final String LAST_ENEMY_POS = "last_enemy_pos"; + + @Override + public void storeInBundle(Bundle bundle) { + super.storeInBundle(bundle); + //bundle.put(WEB_COOLDOWN, webCoolDown); + //bundle.put(LAST_ENEMY_POS, lastEnemyPos); + } + + @Override + public void restoreFromBundle(Bundle bundle) { + super.restoreFromBundle(bundle); + //webCoolDown = bundle.getInt( WEB_COOLDOWN ); + //lastEnemyPos = bundle.getInt( LAST_ENEMY_POS ); + } + + @Override + protected boolean act() { + AiState lastState = state; + boolean result = super.act(); + + //if state changed from wandering to hunting, we haven't acted yet, don't update. + if (!(lastState == WANDERING || state == HUNTING)) { + //webCoolDown--; + //if (shotWebVisually){ + //result = shotWebVisually = false; + //} else { + if (enemy != null && enemySeen) { + lastEnemyPos = enemy.pos; + // } else { + // lastEnemyPos = Dungeon.hero.pos; + // } + } + } + + if (state == FLEEING && buff( Terror.class ) == null && + enemy != null && enemySeen && enemy.buff(LightShootAttack.class ) == null) { + state = HUNTING; + } + + return result; + } + + @Override + public int attackProc(Char enemy, int damage) { + damage = super.attackProc( enemy, damage ); + if (Random.Int(2) == 0) { + Buff.affect(enemy, LightShootAttack.class).level(6); + //webCoolDown = 0; + state = FLEEING; + } + + return damage; + } + + //private boolean shotWebVisually = false; + +@Override + public void move(int step) { + if (enemySeen ){ + if (state == FLEEING){ + GameScene.add(Blob.seed(pos, Random.Int(6, 8), CurseWeb.class)); + //webCoolDown = 5 ; + } + } + super.move(step); + } + + { + resistances.add(LightShootAttack.class); + } + + { + immunities.add(CurseWeb.class); + immunities.add(ShadowCurse.class); + } + + private class Fleeing extends Mob.Fleeing { + @Override + protected void nowhereToRun() { + if (buff(Terror.class) == null) { + state = HUNTING; + } else { + super.nowhereToRun(); + } + } + } +} diff --git a/java/com/hmdzl/spspd/actors/mobs/Dragonking.java b/java/com/hmdzl/spspd/actors/mobs/Dragonking.java index 155a1339..fdfc5aa9 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Dragonking.java +++ b/java/com/hmdzl/spspd/actors/mobs/Dragonking.java @@ -28,14 +28,14 @@ import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.DragonkingSprite; -import com.hmdzl.spspd.sprites.NewDargon02Sprite; +import com.hmdzl.spspd.sprites.NewDragon02Sprite; import com.watabou.utils.Random; import com.hmdzl.spspd.actors.blobs.ShockWeb; public class Dragonking extends Mob { { - spriteClass = NewDargon02Sprite.class; + spriteClass = NewDragon02Sprite.class; baseSpeed = 1f; HP = HT = 100; @@ -84,16 +84,10 @@ protected boolean doAttack(Char enemy) { } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + //resistances.add(EnchantmentDark.class); } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/DustElement.java b/java/com/hmdzl/spspd/actors/mobs/DustElement.java index 87ad37d4..99831ca4 100644 --- a/java/com/hmdzl/spspd/actors/mobs/DustElement.java +++ b/java/com/hmdzl/spspd/actors/mobs/DustElement.java @@ -17,16 +17,18 @@ */ package com.hmdzl.spspd.actors.mobs; +import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Blindness; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.messages.Messages; -import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.items.Generator; -import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.sprites.DustElementSprite; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Random; +import static com.hmdzl.spspd.actors.damagetype.DamageType.EARTH_DAMAGE; + public class DustElement extends Mob { { @@ -62,6 +64,8 @@ public int attackProc(Char enemy, int damage) { Dungeon.observe(); } + enemy.damage(damage, EARTH_DAMAGE); + damage = 0; return damage; } diff --git a/java/com/hmdzl/spspd/actors/mobs/DwarfLich.java b/java/com/hmdzl/spspd/actors/mobs/DwarfLich.java index 0c6f4859..7eb8723a 100644 --- a/java/com/hmdzl/spspd/actors/mobs/DwarfLich.java +++ b/java/com/hmdzl/spspd/actors/mobs/DwarfLich.java @@ -17,20 +17,19 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.items.food.fruit.Blackberry; import com.hmdzl.spspd.items.potions.PotionOfHealing; - import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.DwarfLichSprite; import com.watabou.utils.Random; +import static com.hmdzl.spspd.actors.damagetype.DamageType.DARK_DAMAGE; + public class DwarfLich extends Mob { private static final float SPAWN_DELAY = 2f; @@ -51,6 +50,7 @@ public class DwarfLich extends Mob { lootChanceOther = 0.3f; properties.add(Property.UNDEAD); + properties.add(Property.MAGICER); properties.add(Property.DWARF); } @@ -89,6 +89,15 @@ public void die(Object cause) { super.die(cause); } + @Override + public int attackProc(Char enemy, int damage) { + + enemy.damage(damage/2, DARK_DAMAGE ); + damage = damage/2; + + return damage; + } + public static void spawnAround(int pos) { for (int n : Level.NEIGHBOURS4) { int cell = pos + n; @@ -110,14 +119,10 @@ public static DwarfLich spawnAt(int pos) { } - private static final HashSet> RESISTANCES = new HashSet>(); - static { + { - RESISTANCES.add(Poison.class); + resistances.add(Poison.class); } - @Override - public HashSet> resistances() { - return RESISTANCES; - } + } diff --git a/java/com/hmdzl/spspd/actors/mobs/ElderAvatar.java b/java/com/hmdzl/spspd/actors/mobs/ElderAvatar.java index c5063da9..037be76e 100644 --- a/java/com/hmdzl/spspd/actors/mobs/ElderAvatar.java +++ b/java/com/hmdzl/spspd/actors/mobs/ElderAvatar.java @@ -17,16 +17,20 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - +import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Challenges; +import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.actors.Actor; +import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.DarkGas; import com.hmdzl.spspd.actors.blobs.ElectriShock; +import com.hmdzl.spspd.actors.blobs.ToxicGas; import com.hmdzl.spspd.actors.buffs.Amok; import com.hmdzl.spspd.actors.buffs.ArmorBreak; import com.hmdzl.spspd.actors.buffs.AttackDown; import com.hmdzl.spspd.actors.buffs.Blindness; +import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.Charm; import com.hmdzl.spspd.actors.buffs.Chill; @@ -34,36 +38,28 @@ import com.hmdzl.spspd.actors.buffs.Frost; import com.hmdzl.spspd.actors.buffs.GlassShield; import com.hmdzl.spspd.actors.buffs.GrowSeed; -import com.hmdzl.spspd.actors.buffs.ShieldArmor; +import com.hmdzl.spspd.actors.buffs.Paralysis; +import com.hmdzl.spspd.actors.buffs.EnergyArmor; +import com.hmdzl.spspd.actors.buffs.Vertigo; import com.hmdzl.spspd.actors.hero.Hero; +import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.items.DolyaSlate; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.Gold; import com.hmdzl.spspd.items.KindOfArmor; import com.hmdzl.spspd.items.StoneOre; import com.hmdzl.spspd.items.armor.normalarmor.BaseArmor; -import com.hmdzl.spspd.items.armor.normalarmor.NormalArmor; import com.hmdzl.spspd.items.armor.normalarmor.RubberArmor; import com.hmdzl.spspd.items.armor.normalarmor.WoodenArmor; import com.hmdzl.spspd.items.artifacts.AlienBag; import com.hmdzl.spspd.items.bombs.DangerousBomb; -import com.hmdzl.spspd.items.keys.SkeletonKey; -import com.hmdzl.spspd.levels.Terrain; -import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; -import com.hmdzl.spspd.Assets; -import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.actors.Actor; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.actors.blobs.ToxicGas; -import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Paralysis; -import com.hmdzl.spspd.actors.buffs.Vertigo; -import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.items.journalpages.Sokoban4; +import com.hmdzl.spspd.items.keys.SkeletonKey; import com.hmdzl.spspd.items.wands.WandOfDisintegration; -import com.hmdzl.spspd.levels.CityBossLevel; import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.levels.Terrain; +import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ElderAvatarSprite; import com.hmdzl.spspd.sprites.GolemSprite; @@ -76,6 +72,8 @@ import com.watabou.utils.Bundle; import com.watabou.utils.Random; +import java.util.HashSet; + public class ElderAvatar extends Mob { { @@ -149,8 +147,8 @@ public int drRoll() { @Override protected boolean canAttack(Char enemy) { - if (HP > 49) return Dungeon.level.distance(pos, enemy.pos) <= 3; - else return Dungeon.level.distance(pos, enemy.pos) <= 0; + if (HP > 49) return Level.distance(pos, enemy.pos) <= 3; + else return Level.distance(pos, enemy.pos) <= 0; } @Override @@ -159,8 +157,7 @@ public int attackProc(Char enemy, int damage) { new DangerousBomb().explode(enemy.pos); } if (Random.Int(8) == 0) { - Buff.affect(enemy, Charm.class, Charm.durationFactor(enemy) - * Random.IntRange(3, 5)).object = id(); + Buff.affect(enemy, Charm.class, Random.IntRange(3, 5)).object = id(); enemy.sprite.centerEmitter().start(Speck.factory(Speck.HEART), 0.2f, 5); Sample.INSTANCE.play(Assets.SND_CHARMS); @@ -188,18 +185,14 @@ public boolean checkObelisk() { } } } - if (obeliskAlive > 0) { - return true; - } else { - return false; - } + return obeliskAlive > 0; } @Override public void damage(int dmg, Object src) { if (dmg > this.HP && checkObelisk()) { dmg = Random.Int(this.HP); - //Buff.affect(this,ShieldArmor.class).level(100); + //Buff.affect(this,EnergyArmor.class).level(100); } super.damage(dmg, src); } @@ -217,7 +210,7 @@ protected boolean act() { if (HP < 50 && waves == 0 && breaks == 0) { summonHunter(pos); waves++; - Buff.affect(this,ShieldArmor.class).level(100); + Buff.affect(this,EnergyArmor.class).level(100); sprite.centerEmitter().start(Speck.factory(Speck.SCREAM), 0.4f, 2); Sample.INSTANCE.play(Assets.SND_CHALLENGE); return true; @@ -226,7 +219,7 @@ protected boolean act() { if (HP < 50 && waves == 1 && breaks == 1) { summonWarlock(pos); waves++; - Buff.affect(this,ShieldArmor.class).level(100); + Buff.affect(this,EnergyArmor.class).level(100); sprite.centerEmitter().start(Speck.factory(Speck.SCREAM), 0.4f, 2); Sample.INSTANCE.play(Assets.SND_CHALLENGE); return true; @@ -235,7 +228,7 @@ protected boolean act() { if (HP < 50 && waves == 2 && breaks == 2) { summonMonk(pos); waves++; - Buff.affect(this,ShieldArmor.class).level(100); + Buff.affect(this,EnergyArmor.class).level(100); sprite.centerEmitter().start(Speck.factory(Speck.SCREAM), 0.4f, 2); Sample.INSTANCE.play(Assets.SND_CHALLENGE); return true; @@ -244,7 +237,7 @@ protected boolean act() { if (HP < 50 && waves == 3 && breaks == 3) { summonMech(pos); waves++; - Buff.affect(this,ShieldArmor.class).level(100); + Buff.affect(this,EnergyArmor.class).level(100); sprite.centerEmitter().start(Speck.factory(Speck.SCREAM), 0.4f, 2); Sample.INSTANCE.play(Assets.SND_CHALLENGE); return true; @@ -275,7 +268,7 @@ public void die(Object cause) { yell(Messages.get(this, "died")); GameScene.bossSlain(); - ((CityBossLevel) Dungeon.level).unseal(); + Dungeon.level.unseal(); if (!Dungeon.limitedDrops.journal.dropped()) { Dungeon.level.drop(new DolyaSlate(), pos).sprite.drop(); Dungeon.limitedDrops.journal.drop(); @@ -296,32 +289,17 @@ public void notice() { yell(Messages.get(this, "notice")); } - private static final HashSet> RESISTANCES = new HashSet>(); - - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Amok.class); - RESISTANCES.add(Vertigo.class); - - RESISTANCES.add(WandOfDisintegration.class); - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } + { + resistances.add(ToxicGas.class); + resistances.add(Amok.class); + resistances.add(Vertigo.class); - private static final HashSet> IMMUNITIES = new HashSet>(); + resistances.add(WandOfDisintegration.class); - static { - IMMUNITIES.add(Paralysis.class); - IMMUNITIES.add(Charm.class); + immunities.add(Paralysis.class); + immunities.add(Charm.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } public static class TheHunter extends Mob { @@ -402,18 +380,12 @@ public static TheHunter spawnAt(int pos) { } - private static final HashSet> IMMUNITIES = new HashSet>(); - - static { - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Paralysis.class); + { + immunities.add(Charm.class); + immunities.add(Amok.class); + immunities.add(Paralysis.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } public static class TheWarlock extends Mob { @@ -447,7 +419,7 @@ public int attackProc(Char enemy, int damage) { @Override public void damage(int dmg, Object src) { - dmg =(int)(dmg/2); + dmg = dmg/2; super.damage(dmg, src); } @@ -482,18 +454,13 @@ public static TheWarlock spawnAt(int pos) { } - private static final HashSet> IMMUNITIES = new HashSet>(); - - static { - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Paralysis.class); + { + immunities.add(Charm.class); + immunities.add(Amok.class); + immunities.add(Paralysis.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } + } public static class TheMonk extends Mob { @@ -574,18 +541,12 @@ public static TheMonk spawnAt(int pos) { } - private static final HashSet> IMMUNITIES = new HashSet>(); - - static { - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Paralysis.class); + { + immunities.add(Charm.class); + immunities.add(Amok.class); + immunities.add(Paralysis.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } public static class TheMech extends Mob { @@ -617,7 +578,7 @@ public int hitSkill(Char target) { protected boolean act() { if (addshield < 1) { - Buff.affect(this,ShieldArmor.class).level(100); + Buff.affect(this,EnergyArmor.class).level(100); addshield++; return true; } @@ -666,25 +627,19 @@ public static TheMech spawnAt(int pos) { } - private static final HashSet> IMMUNITIES = new HashSet>(); - - static { - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(Frost.class); - IMMUNITIES.add(Chill.class); - IMMUNITIES.add(ElectriShock.class); - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(DarkGas.class); - IMMUNITIES.add(GrowSeed.class); - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Paralysis.class); + { + immunities.add(Burning.class); + immunities.add(Frost.class); + immunities.add(Chill.class); + immunities.add(ElectriShock.class); + immunities.add(ToxicGas.class); + immunities.add(DarkGas.class); + immunities.add(GrowSeed.class); + immunities.add(Charm.class); + immunities.add(Amok.class); + immunities.add(Paralysis.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } public static class Obelisk extends Mob { @@ -751,16 +706,12 @@ public boolean checkElder() { int elderAlive = 0; if (Dungeon.level.mobs != null) { for (Mob mob : Dungeon.level.mobs) { - if (mob instanceof ElderAvatar && mob.HP > 20) { + if (mob instanceof ElderAvatar && mob.HP > 50) { elderAlive++; } } } - if (elderAlive > 0) { - return true; - } else { - return false; - } + return elderAlive > 0; } @Override diff --git a/java/com/hmdzl/spspd/actors/mobs/Eye.java b/java/com/hmdzl/spspd/actors/mobs/Eye.java index 98a95fd1..74f02efb 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Eye.java +++ b/java/com/hmdzl/spspd/actors/mobs/Eye.java @@ -17,9 +17,6 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Actor; @@ -32,16 +29,17 @@ import com.hmdzl.spspd.items.potions.PotionOfHealing; import com.hmdzl.spspd.items.wands.WandOfDisintegration; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; - import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.EyeSprite; - import com.watabou.noosa.tweeners.AlphaTweener; import com.watabou.utils.Random; +import static com.hmdzl.spspd.actors.damagetype.DamageType.LIGHT_DAMAGE; + public class Eye extends Mob { private static final String TXT_DEATHGAZE_KILLED = "%s's deathgaze killed you..."; @@ -66,13 +64,14 @@ public class Eye extends Mob { lootChanceOther = 0.5f; // by default, see die() properties.add(Property.DEMONIC); + properties.add(Property.MAGICER); } private Ballistica beam; @Override public int drRoll() { - return Random.NormalIntRange(10, 20); + return Random.NormalIntRange(20, 30); } private int hitCell; @@ -85,6 +84,15 @@ protected boolean canAttack(Char enemy) { return beam.subPath(1, beam.dist).contains(enemy.pos); } + + @Override + public int attackProc(Char enemy, int damage) { + + enemy.damage(damage*3/4, LIGHT_DAMAGE); + damage = damage/4; + + return damage; + } @Override public int hitSkill(Char target) { @@ -129,7 +137,7 @@ public boolean attack(Char enemy) { } if (hit(this, ch, true)) { - ch.damage(Random.NormalIntRange(14, 20+adj(0)), this); + ch.damage(Random.NormalIntRange(14, 20+adj(0)), LIGHT_DAMAGE); if (Dungeon.visible[pos]) { ch.sprite.flash(); @@ -138,7 +146,7 @@ public boolean attack(Char enemy) { } if (!ch.isAlive() && ch == Dungeon.hero) { - Dungeon.fail(Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(Messages.get(this, "kill")); } } else { @@ -177,24 +185,12 @@ public static Eye spawnAt(int pos) { } } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(WandOfDisintegration.class); - RESISTANCES.add(EnchantmentDark.class); - } + { + resistances.add(WandOfDisintegration.class); + resistances.add(EnchantmentDark.class); - @Override - public HashSet> resistances() { - return RESISTANCES; + immunities.add(Terror.class); } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Terror.class); - } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/FetidRat.java b/java/com/hmdzl/spspd/actors/mobs/FetidRat.java index d2bd95a3..adb9b817 100644 --- a/java/com/hmdzl/spspd/actors/mobs/FetidRat.java +++ b/java/com/hmdzl/spspd/actors/mobs/FetidRat.java @@ -81,13 +81,8 @@ public void die(Object cause) { Ghost.Quest.process(); } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(StenchGas.class); + { + immunities.add(StenchGas.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/mobs/Fiend.java b/java/com/hmdzl/spspd/actors/mobs/Fiend.java index 84342950..756ac837 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Fiend.java +++ b/java/com/hmdzl/spspd/actors/mobs/Fiend.java @@ -17,21 +17,20 @@ */ package com.hmdzl.spspd.actors.mobs; -import com.hmdzl.spspd.actors.buffs.Silent; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; +import com.hmdzl.spspd.actors.buffs.Silent; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.FiendSprite; - import com.watabou.utils.Callback; import com.watabou.utils.Random; @@ -95,7 +94,7 @@ protected boolean doAttack(Char enemy) { boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos]; if (visible) { - ((FiendSprite) sprite).zap(enemy.pos); + sprite.zap(enemy.pos); } else { zap(); } @@ -109,14 +108,14 @@ private void zap() { if (hit(this, enemy, true)) { if (enemy == Dungeon.hero && Random.Int(5) == 0) { - Buff.prolong(enemy, Weakness.class, Weakness.duration(enemy)); + Buff.prolong(enemy, STRdown.class,5f); } int dmg = Random.Int(20, 45); enemy.damage(dmg, this); if (!enemy.isAlive() && enemy == Dungeon.hero) { - Dungeon.fail( Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(Messages.get(this, "kill")); } } else { diff --git a/java/com/hmdzl/spspd/actors/mobs/FireElemental.java b/java/com/hmdzl/spspd/actors/mobs/FireElemental.java index a13aa6c0..838f3e06 100644 --- a/java/com/hmdzl/spspd/actors/mobs/FireElemental.java +++ b/java/com/hmdzl/spspd/actors/mobs/FireElemental.java @@ -17,18 +17,18 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Fire; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.Chill; import com.hmdzl.spspd.actors.buffs.Frost; +import com.hmdzl.spspd.actors.damagetype.DamageType; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.items.wands.WandOfFirebolt; import com.hmdzl.spspd.items.potions.PotionOfLiquidFlame; +import com.hmdzl.spspd.items.wands.WandOfFirebolt; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentFire; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentFire2; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.sprites.FireElementalSprite; import com.watabou.utils.Random; @@ -53,6 +53,7 @@ public class FireElemental extends Mob { lootChanceOther = 0.02f; // by default, see die() properties.add(Property.ELEMENT); + properties.add(Property.MAGICER); } @Override @@ -75,13 +76,16 @@ public int attackProc(Char enemy, int damage) { if (Random.Int(2) == 0) { Buff.affect(enemy, Burning.class).reignite(enemy); } + + enemy.damage(damage, DamageType.FIRE_DAMAGE); + damage = 0; return damage; } @Override protected boolean canAttack(Char enemy) { - return Dungeon.level.distance( pos, enemy.pos ) <= 2 ; + return Level.distance( pos, enemy.pos ) <= 2 ; } @Override @@ -101,15 +105,13 @@ public void add(Buff buff) { } } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(Fire.class); - IMMUNITIES.add(WandOfFirebolt.class); + { + immunities.add(Burning.class); + immunities.add(Fire.class); + immunities.add(WandOfFirebolt.class); + immunities.add(EnchantmentFire2.class); + immunities.add(EnchantmentFire.class); + immunities.add(DamageType.FireDamage.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/FireRabbit.java b/java/com/hmdzl/spspd/actors/mobs/FireRabbit.java index f4591ee5..be2a8c41 100644 --- a/java/com/hmdzl/spspd/actors/mobs/FireRabbit.java +++ b/java/com/hmdzl/spspd/actors/mobs/FireRabbit.java @@ -28,7 +28,8 @@ import com.hmdzl.spspd.actors.buffs.Locked; import com.hmdzl.spspd.items.wands.WandOfFirebolt; import com.hmdzl.spspd.items.potions.PotionOfLiquidFlame; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.FireRabbitSprite; import com.watabou.utils.Random; @@ -70,7 +71,7 @@ public int attackProc(Char enemy, int damage) { Buff.affect(enemy, Burning.class).reignite(enemy); yell( Messages.get(this, "yell") ); } - if (Dungeon.level.distance( pos, enemy.pos ) == 3){ + if (Level.distance( pos, enemy.pos ) == 3){ damage = 0; Buff.affect(enemy, ArmorBreak.class,5f).level(20); } @@ -79,20 +80,15 @@ public int attackProc(Char enemy, int damage) { @Override protected boolean canAttack(Char enemy) { - return Dungeon.level.distance( pos, enemy.pos ) <= 3 ; + return Level.distance( pos, enemy.pos ) <= 3 ; } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Locked.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(Fire.class); - IMMUNITIES.add(WandOfFirebolt.class); + { + immunities.add(Locked.class); + immunities.add(Burning.class); + immunities.add(Fire.class); + immunities.add(WandOfFirebolt.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/FishProtector.java b/java/com/hmdzl/spspd/actors/mobs/FishProtector.java index 17ffb9ae..3458c695 100644 --- a/java/com/hmdzl/spspd/actors/mobs/FishProtector.java +++ b/java/com/hmdzl/spspd/actors/mobs/FishProtector.java @@ -17,8 +17,6 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Char; @@ -29,10 +27,9 @@ import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.traps.LightningTrap; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.FishProtectorSprite; - -import com.hmdzl.spspd.messages.Messages; import com.watabou.noosa.Camera; import com.watabou.utils.Callback; import com.watabou.utils.Random; @@ -94,7 +91,7 @@ protected boolean doAttack(Char enemy) { boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos]; if (visible) { - ((FishProtectorSprite) sprite).zap(enemy.pos); + sprite.zap(enemy.pos); } spend(TIME_TO_ZAP); @@ -114,7 +111,7 @@ protected boolean doAttack(Char enemy) { Camera.main.shake(2, 0.3f); if (!enemy.isAlive()) { - Dungeon.fail( Messages.format(ResultDescriptions.MOB) ); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE) ); //GLog.n(Messages.get(this, "zap_kill")); } } @@ -133,14 +130,9 @@ public void call() { } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(LightningTrap.Electricity.class); - RESISTANCES.add(Invisibility.class); + { + resistances.add(LightningTrap.Electricity.class); + resistances.add(Invisibility.class); } - @Override - public HashSet> resistances() { - return RESISTANCES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/FlyingProtector.java b/java/com/hmdzl/spspd/actors/mobs/FlyingProtector.java index e4b34487..d3aea502 100644 --- a/java/com/hmdzl/spspd/actors/mobs/FlyingProtector.java +++ b/java/com/hmdzl/spspd/actors/mobs/FlyingProtector.java @@ -17,21 +17,18 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.actors.buffs.Silent; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.buffs.Silent; import com.hmdzl.spspd.effects.particles.SparkParticle; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.traps.LightningTrap; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.FlyingProtectorSprite; - import com.watabou.noosa.Camera; import com.watabou.utils.Callback; import com.watabou.utils.Random; @@ -65,7 +62,7 @@ public int damageRoll() { @Override public int hitSkill(Char target) { - return (int) ((9 + Dungeon.depth)); + return (9 + Dungeon.depth); } @Override @@ -92,7 +89,7 @@ protected boolean doAttack(Char enemy) { boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos]; if (visible) { - ((FlyingProtectorSprite) sprite).zap(enemy.pos); + sprite.zap(enemy.pos); } spend(TIME_TO_ZAP); @@ -112,7 +109,7 @@ protected boolean doAttack(Char enemy) { Camera.main.shake(2, 0.3f); if (!enemy.isAlive()) { - Dungeon.fail( Messages.format(ResultDescriptions.MOB) ); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(Messages.get(this, "kill")); } } @@ -140,13 +137,8 @@ public void call() { next(); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(LightningTrap.Electricity.class); + { + resistances.add(LightningTrap.Electricity.class); } - @Override - public HashSet> resistances() { - return RESISTANCES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/ForestProtector.java b/java/com/hmdzl/spspd/actors/mobs/ForestProtector.java index d846e340..2f9c6ad8 100644 --- a/java/com/hmdzl/spspd/actors/mobs/ForestProtector.java +++ b/java/com/hmdzl/spspd/actors/mobs/ForestProtector.java @@ -17,22 +17,19 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.actors.buffs.Silent; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.Statistics; import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.buffs.Silent; import com.hmdzl.spspd.effects.particles.SparkParticle; import com.hmdzl.spspd.items.VioletDewdrop; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.traps.LightningTrap; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.ForestProtectorSprite; - import com.watabou.noosa.Camera; import com.watabou.utils.Callback; import com.watabou.utils.Random; @@ -94,7 +91,7 @@ protected boolean doAttack(Char enemy) { boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos]; if (visible) { - ((ForestProtectorSprite) sprite).zap(enemy.pos); + sprite.zap(enemy.pos); } spend(TIME_TO_ZAP); @@ -114,7 +111,7 @@ protected boolean doAttack(Char enemy) { Camera.main.shake(2, 0.3f); if (!enemy.isAlive()) { - Dungeon.fail(Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(Messages.get(this, "kill")); } } @@ -132,13 +129,9 @@ public void call() { next(); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(LightningTrap.Electricity.class); + { + resistances.add(LightningTrap.Electricity.class); } - @Override - public HashSet> resistances() { - return RESISTANCES; - } + } diff --git a/java/com/hmdzl/spspd/actors/mobs/Gnoll.java b/java/com/hmdzl/spspd/actors/mobs/Gnoll.java index 86f90540..51813892 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Gnoll.java +++ b/java/com/hmdzl/spspd/actors/mobs/Gnoll.java @@ -57,7 +57,7 @@ public int damageRoll() { protected boolean canAttack(Char enemy) {if (buff(Locked.class) != null){ return Level.adjacent(pos, enemy.pos) && (!isCharmedBy(enemy)); } else - return Dungeon.level.distance( pos, enemy.pos ) <= 2 ; + return Level.distance( pos, enemy.pos ) <= 2 ; } @Override diff --git a/java/com/hmdzl/spspd/actors/mobs/GnollArcher.java b/java/com/hmdzl/spspd/actors/mobs/GnollArcher.java index 789cf9d6..e809e9f0 100644 --- a/java/com/hmdzl/spspd/actors/mobs/GnollArcher.java +++ b/java/com/hmdzl/spspd/actors/mobs/GnollArcher.java @@ -32,7 +32,7 @@ import com.hmdzl.spspd.sprites.GnollArcherSprite; import com.hmdzl.spspd.utils.GLog; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class GnollArcher extends Mob { @@ -63,7 +63,7 @@ public int hitSkill(Char target) { @Override protected boolean canAttack(Char enemy) { Ballistica attack = new Ballistica( pos, enemy.pos, Ballistica.PROJECTILE); - if (buff(Locked.class) != null){ + if (buff(Locked.class) != null){ return Level.adjacent(pos, enemy.pos) && (!isCharmedBy(enemy)); } else diff --git a/java/com/hmdzl/spspd/actors/mobs/GnollKing.java b/java/com/hmdzl/spspd/actors/mobs/GnollKing.java index 28363e58..c12909d0 100644 --- a/java/com/hmdzl/spspd/actors/mobs/GnollKing.java +++ b/java/com/hmdzl/spspd/actors/mobs/GnollKing.java @@ -17,37 +17,35 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.items.quest.GnollClothes; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.items.Gold; -import com.hmdzl.spspd.sprites.GnollKingSprite; -import com.hmdzl.spspd.sprites.GnollKeeperSprite; -import com.hmdzl.spspd.items.AdamantRing; -import com.hmdzl.spspd.actors.buffs.Burning; -import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.actors.Actor; +import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Blob; import com.hmdzl.spspd.actors.blobs.CorruptGas; -import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Cripple; -import com.hmdzl.spspd.actors.buffs.Roots; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.blobs.ToxicGas; import com.hmdzl.spspd.actors.buffs.Amok; import com.hmdzl.spspd.actors.buffs.Bleeding; +import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.Charm; +import com.hmdzl.spspd.actors.buffs.Cripple; +import com.hmdzl.spspd.actors.buffs.Paralysis; import com.hmdzl.spspd.actors.buffs.Poison; +import com.hmdzl.spspd.actors.buffs.Roots; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.buffs.Sleep; import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.actors.buffs.Vertigo; -import com.hmdzl.spspd.actors.buffs.Paralysis; -import com.hmdzl.spspd.actors.blobs.ToxicGas; +import com.hmdzl.spspd.items.AdamantRing; +import com.hmdzl.spspd.items.Gold; +import com.hmdzl.spspd.items.quest.GnollClothes; import com.hmdzl.spspd.items.scrolls.ScrollOfPsionicBlast; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.scenes.GameScene; +import com.hmdzl.spspd.sprites.GnollKeeperSprite; +import com.hmdzl.spspd.sprites.GnollKingSprite; import com.watabou.utils.Bundle; import com.watabou.utils.Random; @@ -151,7 +149,7 @@ public int attackProc(Char enemy, int damage) { if (breaks == 3){ if (Random.Int(2) == 0) { if(enemy == Dungeon.hero){ - Buff.prolong(enemy, Weakness.class, 3); + Buff.prolong(enemy, STRdown.class, 3); } } } @@ -175,7 +173,7 @@ public int defenseProc(Char enemy, int damage) { @Override public void damage(int dmg, Object src) { - dmg = Random.Int(10,20); + dmg = Math.min(dmg,20); if (breaks == 2){ if (dmg > 15){ @@ -189,8 +187,8 @@ public void damage(int dmg, Object src) { protected boolean canAttack(Char enemy) { if (breaks == 2){ - return Dungeon.level.distance( pos, enemy.pos ) <= 2 ;} - else return Dungeon.level.distance( pos, enemy.pos ) <= 1; + return Level.distance( pos, enemy.pos ) <= 2 ;} + else return Level.distance( pos, enemy.pos ) <= 1; } @Override @@ -216,35 +214,24 @@ public void notice() { } - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); - IMMUNITIES.add(EnchantmentDark.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(Paralysis.class); - IMMUNITIES.add(Bleeding.class); - IMMUNITIES.add(CorruptGas.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + //resistances.add(EnchantmentDark.class); + immunities.add(EnchantmentDark.class); + immunities.add(Terror.class); + immunities.add(Amok.class); + immunities.add(Charm.class); + immunities.add(Sleep.class); + immunities.add(Burning.class); + immunities.add(ToxicGas.class); + immunities.add(ScrollOfPsionicBlast.class); + immunities.add(Vertigo.class); + immunities.add(Paralysis.class); + immunities.add(Bleeding.class); + immunities.add(CorruptGas.class); } - @Override - public HashSet> resistances() { - return RESISTANCES; - } private static final String BREAKS = "breaks"; diff --git a/java/com/hmdzl/spspd/actors/mobs/GnollShaman.java b/java/com/hmdzl/spspd/actors/mobs/GnollShaman.java index ef9e1f90..2875ef87 100644 --- a/java/com/hmdzl/spspd/actors/mobs/GnollShaman.java +++ b/java/com/hmdzl/spspd/actors/mobs/GnollShaman.java @@ -17,26 +17,25 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.actors.buffs.Silent; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.buffs.Silent; import com.hmdzl.spspd.effects.particles.SparkParticle; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.wands.WandOfLightning; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.traps.LightningTrap; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.ShamanSprite; - import com.watabou.noosa.Camera; import com.watabou.utils.Callback; import com.watabou.utils.Random; +import static com.hmdzl.spspd.actors.damagetype.DamageType.SHOCK_DAMAGE; + public class GnollShaman extends Mob implements Callback { private static final float TIME_TO_ZAP = 2f; @@ -59,6 +58,7 @@ public class GnollShaman extends Mob implements Callback { lootChanceOther = 0.02f; properties.add(Property.ORC); + properties.add(Property.MAGICER); } @Override @@ -75,6 +75,15 @@ public int hitSkill(Char target) { public int drRoll() { return Random.NormalIntRange(0, 4); } + + @Override + public int attackProc(Char enemy, int damage) { + + enemy.damage(damage/2, SHOCK_DAMAGE); + damage = damage/2; + + return damage; + } @Override protected boolean canAttack(Char enemy) { if (buff(Silent.class) != null){ @@ -95,7 +104,7 @@ protected boolean doAttack(Char enemy) { boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos]; if (visible) { - ((ShamanSprite) sprite).zap(enemy.pos); + sprite.zap(enemy.pos); } spend(TIME_TO_ZAP); @@ -105,7 +114,7 @@ protected boolean doAttack(Char enemy) { if (Level.water[enemy.pos] && !enemy.flying) { dmg *= 1.5f; } - enemy.damage(dmg, this); + enemy.damage(dmg, SHOCK_DAMAGE); enemy.sprite.centerEmitter().burst(SparkParticle.FACTORY, 3); enemy.sprite.flash(); @@ -115,7 +124,7 @@ protected boolean doAttack(Char enemy) { Camera.main.shake(2, 0.3f); if (!enemy.isAlive()) { - Dungeon.fail( Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE) ); //GLog.n(Messages.get(this, "zap_kill")); } } @@ -133,13 +142,9 @@ public void call() { next(); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(LightningTrap.Electricity.class); + { + resistances.add(LightningTrap.Electricity.class); } - @Override - public HashSet> resistances() { - return RESISTANCES; - } + } diff --git a/java/com/hmdzl/spspd/actors/mobs/GnollTrickster.java b/java/com/hmdzl/spspd/actors/mobs/GnollTrickster.java index 2e11f5d4..000165ee 100644 --- a/java/com/hmdzl/spspd/actors/mobs/GnollTrickster.java +++ b/java/com/hmdzl/spspd/actors/mobs/GnollTrickster.java @@ -87,7 +87,7 @@ public int attackProc(Char enemy, int damage) { } else Buff.affect(enemy, Poison.class).set( - (effect - 2) * Poison.durationFactor(enemy)); + (effect - 2)); } return damage; diff --git a/java/com/hmdzl/spspd/actors/mobs/GoldOrc.java b/java/com/hmdzl/spspd/actors/mobs/GoldOrc.java index 6fc7e545..2de65b67 100644 --- a/java/com/hmdzl/spspd/actors/mobs/GoldOrc.java +++ b/java/com/hmdzl/spspd/actors/mobs/GoldOrc.java @@ -72,27 +72,12 @@ public void damage(int dmg, Object src) { super.damage(dmg, src); } - - private static final HashSet> RESISTANCES = new HashSet>(); - static { - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(CorruptGas.class); - IMMUNITIES.add(Vertigo.class); + { + immunities.add(Amok.class); + immunities.add(Terror.class); + immunities.add(CorruptGas.class); + immunities.add(Vertigo.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/GoldThief.java b/java/com/hmdzl/spspd/actors/mobs/GoldThief.java index bda7c078..7c909569 100644 --- a/java/com/hmdzl/spspd/actors/mobs/GoldThief.java +++ b/java/com/hmdzl/spspd/actors/mobs/GoldThief.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.items.food.completefood.GoldenNut; import com.hmdzl.spspd.items.reward.CityReward; import com.hmdzl.spspd.items.scrolls.ScrollOfSacrifice; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.Statistics; import com.hmdzl.spspd.actors.Char; diff --git a/java/com/hmdzl/spspd/actors/mobs/Golem.java b/java/com/hmdzl/spspd/actors/mobs/Golem.java index c1a6ffae..2f4c74a0 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Golem.java +++ b/java/com/hmdzl/spspd/actors/mobs/Golem.java @@ -99,26 +99,12 @@ public void die(Object cause) { super.die(cause); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(TarGas.class); - IMMUNITIES.add(Tar.class); + { + immunities.add(Amok.class); + immunities.add(Terror.class); + immunities.add(Sleep.class); + immunities.add(TarGas.class); + immunities.add(Tar.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/Goo.java b/java/com/hmdzl/spspd/actors/mobs/Goo.java index 0057eea1..669c3f3f 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Goo.java +++ b/java/com/hmdzl/spspd/actors/mobs/Goo.java @@ -17,42 +17,41 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.ArrayList; -import java.util.HashSet; - -import com.hmdzl.spspd.actors.Actor; -import com.hmdzl.spspd.actors.blobs.Web; -import com.hmdzl.spspd.actors.buffs.Burning; -import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Terror; -import com.hmdzl.spspd.effects.Pushing; -import com.hmdzl.spspd.items.StoneOre; -import com.hmdzl.spspd.items.UpgradeBlobViolet; -import com.hmdzl.spspd.items.wands.WandOfFirebolt; -import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentFire; -import com.hmdzl.spspd.levels.Terrain; -import com.hmdzl.spspd.levels.features.Door; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Badges; -import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.Badges.Badge; +import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Blob; import com.hmdzl.spspd.actors.blobs.GooWarn; import com.hmdzl.spspd.actors.blobs.ToxicGas; +import com.hmdzl.spspd.actors.blobs.Web; import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.Ooze; +import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.actors.buffs.Roots; +import com.hmdzl.spspd.actors.buffs.Terror; +import com.hmdzl.spspd.actors.damagetype.DamageType; import com.hmdzl.spspd.effects.CellEmitter; +import com.hmdzl.spspd.effects.Pushing; import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.effects.particles.ElmoParticle; -import com.hmdzl.spspd.items.summon.ActiveMrDestructo; +import com.hmdzl.spspd.items.StoneOre; +import com.hmdzl.spspd.items.UpgradeBlobViolet; import com.hmdzl.spspd.items.journalpages.Sokoban1; import com.hmdzl.spspd.items.keys.SkeletonKey; +import com.hmdzl.spspd.items.summon.ActiveMrDestructo; +import com.hmdzl.spspd.items.wands.WandOfFirebolt; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark2; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentFire; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentFire2; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.levels.SewerBossLevel; +import com.hmdzl.spspd.levels.Terrain; +import com.hmdzl.spspd.levels.features.Door; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.GooSprite; @@ -63,6 +62,8 @@ import com.watabou.utils.Bundle; import com.watabou.utils.Random; +import java.util.ArrayList; + public class Goo extends Mob { { HP = HT = 350; @@ -222,7 +223,7 @@ public void die(Object cause) { if(goosAlive==0){ - ((SewerBossLevel) Dungeon.level).unseal(); + Dungeon.level.unseal(); GameScene.bossSlain(); Dungeon.level.drop(new SkeletonKey(Dungeon.depth), pos).sprite.drop(); @@ -267,7 +268,7 @@ public void die(Object cause) { public void notice() { super.notice(); yell("GLURP-GLURP!"); - ((SewerBossLevel) Dungeon.level).seal(); + Dungeon.level.seal(); if (!spawnedMini){ PoisonGoo.spawnAround(pos); spawnedMini = true; @@ -292,35 +293,20 @@ public void restoreFromBundle(Bundle bundle) { pumpedUp = bundle.getInt(PUMPEDUP); } - private static final HashSet> IMMUNITIES = new HashSet>(); - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> WEAKNESS = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(EnchantmentDark.class); - - - IMMUNITIES.add(Roots.class); + { + resistances.add(ToxicGas.class); + resistances.add(EnchantmentDark.class); + resistances.add(EnchantmentDark2.class); - WEAKNESS.add(Burning.class); - WEAKNESS.add(WandOfFirebolt.class); - WEAKNESS.add(EnchantmentFire.class); - } + immunities.add(Roots.class); - @Override - public HashSet> resistances() { - return RESISTANCES; + weakness.add(Burning.class); + weakness.add(WandOfFirebolt.class); + weakness.add(EnchantmentFire.class); + weakness.add(EnchantmentFire2.class); + weakness.add(DamageType.FireDamage.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } - - @Override - public HashSet> weakness() { - return WEAKNESS; - } public static class PoisonGoo extends Mob { @@ -373,7 +359,7 @@ protected boolean act() { public int attackProc(Char enemy, int damage) { if (Random.Int(1) == 0) { Buff.affect(enemy, Poison.class).set( - Random.Int(7, 10) * Poison.durationFactor(enemy)); + Random.Int(4, 7)); state = FLEEING; } @@ -489,7 +475,7 @@ public void die(Object cause) { } if(goosAlive==0){ - ((SewerBossLevel) Dungeon.level).unseal(); + Dungeon.level.unseal(); GameScene.bossSlain(); Dungeon.level.drop(new SkeletonKey(Dungeon.depth), pos).sprite.drop(); @@ -511,27 +497,10 @@ public void notice() { yell("GLURP-GLURP!"); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(EnchantmentDark.class); - - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - - static { - IMMUNITIES.add(Roots.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + { + resistances.add(ToxicGas.class); + resistances.add(EnchantmentDark.class); + immunities.add(Roots.class); } private class Fleeing extends Mob.Fleeing { diff --git a/java/com/hmdzl/spspd/actors/mobs/GraveProtector.java b/java/com/hmdzl/spspd/actors/mobs/GraveProtector.java index 44c2e01a..87be33ce 100644 --- a/java/com/hmdzl/spspd/actors/mobs/GraveProtector.java +++ b/java/com/hmdzl/spspd/actors/mobs/GraveProtector.java @@ -17,8 +17,6 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.Statistics; @@ -29,10 +27,9 @@ import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.traps.LightningTrap; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.GraveProtectorSprite; - -import com.hmdzl.spspd.messages.Messages; import com.watabou.noosa.Camera; import com.watabou.utils.Callback; import com.watabou.utils.Random; @@ -93,7 +90,7 @@ protected boolean doAttack(Char enemy) { boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos]; if (visible) { - ((GraveProtectorSprite) sprite).zap(enemy.pos); + sprite.zap(enemy.pos); } spend(TIME_TO_ZAP); @@ -113,7 +110,7 @@ protected boolean doAttack(Char enemy) { Camera.main.shake(2, 0.3f); if (!enemy.isAlive()) { - Dungeon.fail( Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE) ); //GLog.n(Messages.get(this, "kill")); } } @@ -131,13 +128,9 @@ public void call() { next(); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(LightningTrap.Electricity.class); + { + resistances.add(LightningTrap.Electricity.class); } - @Override - public HashSet> resistances() { - return RESISTANCES; - } + } diff --git a/java/com/hmdzl/spspd/actors/mobs/GreatCrab.java b/java/com/hmdzl/spspd/actors/mobs/GreatCrab.java index 17951c3c..b58e34a3 100644 --- a/java/com/hmdzl/spspd/actors/mobs/GreatCrab.java +++ b/java/com/hmdzl/spspd/actors/mobs/GreatCrab.java @@ -27,7 +27,7 @@ import com.hmdzl.spspd.sprites.GreatCrabSprite; import com.hmdzl.spspd.utils.GLog; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class GreatCrab extends Crab { { diff --git a/java/com/hmdzl/spspd/actors/mobs/Greatmoss.java b/java/com/hmdzl/spspd/actors/mobs/Greatmoss.java index 73327325..f45a3631 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Greatmoss.java +++ b/java/com/hmdzl/spspd/actors/mobs/Greatmoss.java @@ -17,8 +17,6 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - import com.hmdzl.spspd.actors.blobs.Blob; import com.hmdzl.spspd.actors.blobs.ConfusionGas; import com.hmdzl.spspd.actors.blobs.DarkGas; @@ -26,29 +24,14 @@ import com.hmdzl.spspd.actors.blobs.TarGas; import com.hmdzl.spspd.actors.blobs.ToxicGas; import com.hmdzl.spspd.actors.buffs.Amok; -import com.hmdzl.spspd.actors.buffs.Silent; import com.hmdzl.spspd.actors.buffs.Sleep; import com.hmdzl.spspd.actors.buffs.Tar; import com.hmdzl.spspd.actors.buffs.Terror; -import com.hmdzl.spspd.items.scrolls.ScrollOfRage; -import com.hmdzl.spspd.messages.Messages; -import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Weakness; import com.hmdzl.spspd.items.Generator; -import com.hmdzl.spspd.items.Item; -import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; -import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.mechanics.Ballistica; import com.hmdzl.spspd.scenes.GameScene; -import com.hmdzl.spspd.sprites.CharSprite; -import com.hmdzl.spspd.sprites.ErrorSprite; import com.hmdzl.spspd.sprites.GreatMossSprite; -import com.hmdzl.spspd.sprites.WarlockSprite; -import com.watabou.utils.Callback; import com.watabou.utils.Random; public class Greatmoss extends Mob { @@ -131,27 +114,15 @@ public void die(Object cause) { super.die(cause); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(TarGas.class); - IMMUNITIES.add(Tar.class); + { + immunities.add(Amok.class); + immunities.add(Terror.class); + immunities.add(Sleep.class); + immunities.add(TarGas.class); + immunities.add(Tar.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } + } diff --git a/java/com/hmdzl/spspd/actors/mobs/GreyRat.java b/java/com/hmdzl/spspd/actors/mobs/GreyRat.java index 444e3e48..42c931e6 100644 --- a/java/com/hmdzl/spspd/actors/mobs/GreyRat.java +++ b/java/com/hmdzl/spspd/actors/mobs/GreyRat.java @@ -106,35 +106,20 @@ public static GreyRat spawnAt(int pos) { } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(EnchantmentDark.class); - - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(Poison.class); - IMMUNITIES.add(StenchGas.class); + { + resistances.add(ToxicGas.class); + //resistances.add(EnchantmentDark.class); + + immunities.add(Amok.class); + immunities.add(Sleep.class); + immunities.add(Terror.class); + immunities.add(Burning.class); + immunities.add(ScrollOfPsionicBlast.class); + immunities.add(Vertigo.class); + immunities.add(Poison.class); + immunities.add(StenchGas.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } - } diff --git a/java/com/hmdzl/spspd/actors/mobs/Guard.java b/java/com/hmdzl/spspd/actors/mobs/Guard.java index b7d9f28e..84badb74 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Guard.java +++ b/java/com/hmdzl/spspd/actors/mobs/Guard.java @@ -17,25 +17,23 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - +import com.hmdzl.spspd.Assets; +import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Actor; +import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Cripple; import com.hmdzl.spspd.actors.buffs.Silent; import com.hmdzl.spspd.effects.Chains; import com.hmdzl.spspd.effects.Pushing; -import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; -import com.hmdzl.spspd.Assets; -import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; -import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark2; import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.sprites.GuardSprite; - import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; import com.watabou.utils.Callback; @@ -158,7 +156,7 @@ public void die(Object cause) { } if (heroKilled) { - Dungeon.fail(Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(Messages.get(this, "kill")); } } @@ -199,15 +197,11 @@ public void restoreFromBundle(Bundle bundle) { chainsUsed = bundle.getBoolean(CHAINSUSED); } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(EnchantmentDark.class); + { + immunities.add(EnchantmentDark.class); + immunities.add(EnchantmentDark2.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } /*private class Hunting extends Mob.Hunting{ @Override diff --git a/java/com/hmdzl/spspd/actors/mobs/HermitCrab.java b/java/com/hmdzl/spspd/actors/mobs/HermitCrab.java index 72356b6c..694995b2 100644 --- a/java/com/hmdzl/spspd/actors/mobs/HermitCrab.java +++ b/java/com/hmdzl/spspd/actors/mobs/HermitCrab.java @@ -17,23 +17,19 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.actors.buffs.Silent; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.buffs.Silent; import com.hmdzl.spspd.effects.particles.SparkParticle; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.keys.GoldenSkeletonKey; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.traps.LightningTrap; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.HermitCrabSprite; import com.hmdzl.spspd.utils.GLog; - import com.watabou.noosa.Camera; import com.watabou.utils.Callback; import com.watabou.utils.Random; @@ -111,7 +107,7 @@ protected boolean doAttack(Char enemy) { boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos]; if (visible) { - ((HermitCrabSprite) sprite).zap(enemy.pos); + sprite.zap(enemy.pos); } spend(TIME_TO_ZAP); @@ -131,7 +127,7 @@ protected boolean doAttack(Char enemy) { Camera.main.shake(2, 0.3f); if (!enemy.isAlive()) { - Dungeon.fail(Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(Messages.get(this, "kill")); } } @@ -157,13 +153,7 @@ public void die(Object cause) { } } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(LightningTrap.Electricity.class); - } - - @Override - public HashSet> resistances() { - return RESISTANCES; + { + resistances.add(LightningTrap.Electricity.class); } } diff --git a/java/com/hmdzl/spspd/actors/mobs/Hybrid.java b/java/com/hmdzl/spspd/actors/mobs/Hybrid.java index 1c3dd93a..fe85ef8f 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Hybrid.java +++ b/java/com/hmdzl/spspd/actors/mobs/Hybrid.java @@ -32,6 +32,7 @@ import com.hmdzl.spspd.actors.blobs.ParalyticGas; import com.hmdzl.spspd.actors.blobs.ToxicGas; import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.EnergyArmor; import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.actors.buffs.ShieldArmor; import com.hmdzl.spspd.actors.buffs.Tar; @@ -42,7 +43,6 @@ import com.hmdzl.spspd.items.journalpages.Sokoban3; import com.hmdzl.spspd.items.keys.SkeletonKey; import com.hmdzl.spspd.items.potions.PotionOfExperience; -import com.hmdzl.spspd.levels.CavesBossLevel; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; import com.hmdzl.spspd.levels.features.Door; @@ -53,7 +53,9 @@ import com.watabou.utils.Random; import java.util.ArrayList; -import java.util.HashSet; + +import static com.hmdzl.spspd.actors.damagetype.DamageType.ENERGY_DAMAGE; +import static com.hmdzl.spspd.actors.damagetype.DamageType.SHOCK_DAMAGE; public class Hybrid extends Mob { @@ -102,7 +104,7 @@ public void move(int step) { if (Dungeon.level.map[step] == Terrain.INACTIVE_TRAP) { if (state == FLEEING){ - Buff.affect(this,ShieldArmor.class).level(200); + Buff.affect(this,EnergyArmor.class).level(200); yell(Messages.get(this, "shield")); state = HUNTING; } @@ -115,10 +117,13 @@ public void move(int step) { public int attackProc(Char enemy, int damage) { if (Random.Int(5) == 0) { Buff.affect(enemy, Poison.class).set( - Random.Int(7, 9) * Poison.durationFactor(enemy)); + Random.Int(8, 10)); state = FLEEING; } + enemy.damage(damage/2, ENERGY_DAMAGE); + damage = damage/2; + return damage; } @@ -129,6 +134,7 @@ public int defenseProc(Char enemy, int damage) { Buff.affect(enemy, Tar.class); state = HUNTING; } + return super.defenseProc(enemy, damage); } @@ -175,14 +181,14 @@ public void destroy() { @Override protected boolean canAttack(Char enemy) { - return Dungeon.level.distance( pos, enemy.pos ) <= 2 ; + return Level.distance( pos, enemy.pos ) <= 2 ; } @Override public void die(Object cause) { super.die(cause); GameScene.bossSlain(); - ((CavesBossLevel) Dungeon.level).unseal(); + Dungeon.level.unseal(); Dungeon.level.drop(new SkeletonKey(Dungeon.depth), pos).sprite.drop(); Badges.validateBossSlain(); @@ -254,17 +260,11 @@ public void restoreFromBundle( Bundle bundle ) { breaks = bundle.getInt( BREAKS ); } - private static final HashSet> IMMUNITIES = new HashSet<>(); - static { - IMMUNITIES.add(ToxicGas.class ); - IMMUNITIES.add(ParalyticGas.class); - IMMUNITIES.add(DarkGas.class); - IMMUNITIES.add(ConfusionGas.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + { + immunities.add(ToxicGas.class ); + immunities.add(ParalyticGas.class); + immunities.add(DarkGas.class); + immunities.add(ConfusionGas.class); } public static class Mixers extends Mob { @@ -283,7 +283,7 @@ public static class Mixers extends Mob { @Override public int damageRoll() { - return Random.NormalIntRange(25, 55 ); + return Random.NormalIntRange(25, 55); } @Override @@ -291,6 +291,16 @@ public int hitSkill(Char target) { return 100; } + @Override + public int attackProc(Char enemy, int damage) { + + enemy.damage(damage/4, SHOCK_DAMAGE); + damage = damage*3/4; + + return damage; + } + + @Override public int drRoll() { return 0; diff --git a/java/com/hmdzl/spspd/actors/mobs/IceBug.java b/java/com/hmdzl/spspd/actors/mobs/IceBug.java new file mode 100644 index 00000000..f978cf2a --- /dev/null +++ b/java/com/hmdzl/spspd/actors/mobs/IceBug.java @@ -0,0 +1,88 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.actors.mobs; + +import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.FrostIce; +import com.hmdzl.spspd.actors.buffs.StoneIce; +import com.hmdzl.spspd.actors.damagetype.DamageType; +import com.hmdzl.spspd.items.StoneOre; +import com.hmdzl.spspd.items.wands.WandOfFlow; +import com.hmdzl.spspd.items.wands.WandOfFreeze; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentIce; +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentIce2; +import com.hmdzl.spspd.sprites.IceBugSprite; +import com.watabou.utils.Random; + +public class IceBug extends Mob { + + { + spriteClass = IceBugSprite.class; + + HP = HT = 80+(adj(0)*Random.NormalIntRange(2, 5)); + evadeSkill = 15+adj(0); + baseSpeed = 1.5f; + + EXP = 9; + maxLvl = 25; + + loot = new StoneOre(); + lootChance = 0.3f; + + properties.add(Property.BEAST); + } + + @Override + public int damageRoll() { + return Random.NormalIntRange(15, 20+adj(0)); + } + + @Override + public int attackProc(Char enemy, int damage) { + if (Random.Int(5) == 0) { + Buff.affect(enemy, StoneIce.class).level(5); + } + + return damage; + } + + @Override + public int hitSkill(Char target) { + return 16+adj(0); + } + + @Override + public int drRoll() { + return Random.NormalIntRange(2, 5); + } + + { + resistances.add(DamageType.IceDamage.class); + resistances.add(WandOfFlow.class); + resistances.add(WandOfFreeze.class); + + immunities.add(FrostIce.class); + + immunities.add(EnchantmentIce.class); + immunities.add(EnchantmentIce2.class); + } + + + +} \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/mobs/King.java b/java/com/hmdzl/spspd/actors/mobs/King.java index 988be12f..fd162c5d 100644 --- a/java/com/hmdzl/spspd/actors/mobs/King.java +++ b/java/com/hmdzl/spspd/actors/mobs/King.java @@ -28,7 +28,7 @@ import com.hmdzl.spspd.items.scrolls.ScrollOfTeleportation; import com.hmdzl.spspd.items.weapon.missiles.Skull; import com.hmdzl.spspd.levels.Terrain; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; @@ -264,29 +264,15 @@ public void notice() { yell(Messages.get(this,"meeting")); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(EnchantmentDark.class); + { + resistances.add(ToxicGas.class); + //resistances.add(EnchantmentDark.class); - RESISTANCES.add(WandOfDisintegration.class); - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Paralysis.class); - IMMUNITIES.add(Vertigo.class); + resistances.add(WandOfDisintegration.class); + immunities.add(Paralysis.class); + immunities.add(Vertigo.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } public static class Undead extends Mob { @@ -361,16 +347,11 @@ public int drRoll() { return 5; } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(EnchantmentDark.class); - IMMUNITIES.add(Paralysis.class); + { + //immunities.add(EnchantmentDark.class); + immunities.add(Paralysis.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } public static class DwarfKingTomb extends Mob { @@ -430,11 +411,7 @@ public boolean checkKing(){ } } } - if (kingAlive>0){ - return true; - } else { - return false; - } + return kingAlive > 0; } @Override @@ -459,7 +436,7 @@ public void die(Object cause) { } GameScene.bossSlain(); - ((CityBossLevel) Dungeon.level).unseal(); + Dungeon.level.unseal(); Dungeon.level.drop(new SkeletonKey(Dungeon.depth), pos).sprite.drop(); Dungeon.level.drop(new Gold(Random.Int(1000, 2000)), pos).sprite.drop(); diff --git a/java/com/hmdzl/spspd/actors/mobs/LevelChecker.java b/java/com/hmdzl/spspd/actors/mobs/LevelChecker.java index ada79bd6..53ed1a8e 100644 --- a/java/com/hmdzl/spspd/actors/mobs/LevelChecker.java +++ b/java/com/hmdzl/spspd/actors/mobs/LevelChecker.java @@ -55,7 +55,7 @@ public int attackProc(Char enemy, int damage) { Dungeon.hero.exp=0; Dungeon.hero.lvl=1; - //Dungeon.hero.HT=30; + //Dungeon.hero.TRUE_HT=30; //Dungeon.hero.hitSkill=10; //Dungeon.hero.evadeSkill=5; damage = 0; diff --git a/java/com/hmdzl/spspd/actors/mobs/LichDancer.java b/java/com/hmdzl/spspd/actors/mobs/LichDancer.java index b73e96f5..c2fec519 100644 --- a/java/com/hmdzl/spspd/actors/mobs/LichDancer.java +++ b/java/com/hmdzl/spspd/actors/mobs/LichDancer.java @@ -17,22 +17,8 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.ArrayList; -import java.util.HashSet; - -import com.hmdzl.spspd.Badges; -import com.hmdzl.spspd.effects.CellEmitter; -import com.hmdzl.spspd.items.DolyaSlate; -import com.hmdzl.spspd.items.Generator; -import com.hmdzl.spspd.items.Gold; -import com.hmdzl.spspd.items.StoneOre; -import com.hmdzl.spspd.items.artifacts.GlassTotem; -import com.hmdzl.spspd.items.bombs.DungeonBomb; -import com.hmdzl.spspd.items.keys.SkeletonKey; -import com.hmdzl.spspd.items.scrolls.ScrollOfTeleportation; -import com.hmdzl.spspd.levels.Terrain; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Assets; +import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; @@ -40,12 +26,22 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Paralysis; import com.hmdzl.spspd.actors.buffs.Vertigo; +import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.Speck; +import com.hmdzl.spspd.items.DolyaSlate; +import com.hmdzl.spspd.items.Generator; +import com.hmdzl.spspd.items.Gold; +import com.hmdzl.spspd.items.StoneOre; +import com.hmdzl.spspd.items.artifacts.GlassTotem; +import com.hmdzl.spspd.items.bombs.DungeonBomb; import com.hmdzl.spspd.items.journalpages.Sokoban4; +import com.hmdzl.spspd.items.keys.SkeletonKey; +import com.hmdzl.spspd.items.scrolls.ScrollOfTeleportation; import com.hmdzl.spspd.items.wands.WandOfDisintegration; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; -import com.hmdzl.spspd.levels.CityBossLevel; import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.levels.Terrain; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.BatteryTombSprite; import com.hmdzl.spspd.sprites.LichDancerSprite; @@ -55,6 +51,10 @@ import com.watabou.utils.PathFinder; import com.watabou.utils.Random; +import java.util.ArrayList; + +import static com.hmdzl.spspd.actors.damagetype.DamageType.ENERGY_DAMAGE; + public class LichDancer extends Mob { private static final int MAX_ARMY_SIZE = 4; @@ -75,6 +75,7 @@ public class LichDancer extends Mob { lootChanceOther= 1f; properties.add(Property.UNDEAD); + properties.add(Property.MAGICER); properties.add(Property.BOSS); } @@ -120,7 +121,7 @@ protected boolean act() { for (int i = 0; i < PathFinder.NEIGHBOURS8.length; i++) { int p = enemy.pos + PathFinder.NEIGHBOURS8[i]; - if (Actor.findChar( p ) == null && (Dungeon.level.passable[p] || Dungeon.level.avoid[p])) { + if (Actor.findChar( p ) == null && (Level.passable[p] || Level.avoid[p])) { spawnPoints.add( p ); } } @@ -163,6 +164,10 @@ public int attackProc(Char enemy, int damage) { if (Random.Int(5) == 0) { Buff.prolong(enemy, Vertigo.class,3f); } + + enemy.damage(damage/2, ENERGY_DAMAGE); + damage = damage/2; + return damage; } @@ -193,7 +198,7 @@ public void die(Object cause) { } GameScene.bossSlain(); - ((CityBossLevel) Dungeon.level).unseal(); + Dungeon.level.unseal(); Dungeon.level.drop(new SkeletonKey(Dungeon.depth), pos).sprite.drop(); Dungeon.level.drop(new Gold(Random.Int(1000, 2000)), pos).sprite.drop(); @@ -220,11 +225,7 @@ public boolean checkBattery() { } } } - if (batteryAlive > 0) { - return true; - } else { - return false; - } + return batteryAlive > 0; } @Override @@ -242,29 +243,16 @@ public void notice() { yell(Messages.get(this,"notice")); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(EnchantmentDark.class); + { + resistances.add(ToxicGas.class); + resistances.add(EnchantmentDark.class); - RESISTANCES.add(WandOfDisintegration.class); - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } + resistances.add(WandOfDisintegration.class); - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Paralysis.class); - IMMUNITIES.add(Vertigo.class); + immunities.add(Paralysis.class); + immunities.add(Vertigo.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } public static class BatteryTomb extends Mob { @@ -283,7 +271,7 @@ public static class BatteryTomb extends Mob { lootChance = 0.05f; properties.add(Property.MECH); - properties.add(Property.BOSS); + properties.add(Property.MINIBOSS); } @Override diff --git a/java/com/hmdzl/spspd/actors/mobs/LitTower.java b/java/com/hmdzl/spspd/actors/mobs/LitTower.java index cc7da20f..5d1feca6 100644 --- a/java/com/hmdzl/spspd/actors/mobs/LitTower.java +++ b/java/com/hmdzl/spspd/actors/mobs/LitTower.java @@ -17,9 +17,6 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; @@ -34,12 +31,14 @@ import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.traps.LightningTrap; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.sprites.OtiluckStoneSprite; - import com.watabou.noosa.Camera; import com.watabou.utils.Callback; import com.watabou.utils.Random; +import static com.hmdzl.spspd.actors.damagetype.DamageType.ENERGY_DAMAGE; + public class LitTower extends Mob implements Callback { private static final float TIME_TO_ZAP = 2f; @@ -62,6 +61,7 @@ public class LitTower extends Mob implements Callback { properties.add(Property.MECH); properties.add(Property.BOSS); + properties.add(Property.MAGICER); } @Override @@ -146,18 +146,18 @@ public void zapAll(int loc){ Char hero=Dungeon.hero; - int mobDmg=Random.Int(200, 300); + int mobDmg=Random.Int(100, 200); boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[loc]; if (visible) { - ((OtiluckStoneSprite) sprite).zap(loc); + sprite.zap(loc); } - hero.damage(mobDmg, this); + hero.damage(mobDmg,ENERGY_DAMAGE); hero.sprite.centerEmitter().burst(SparkParticle.FACTORY, 3); hero.sprite.flash(); @@ -170,29 +170,14 @@ public void add(Buff buff) { } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(EnchantmentDark.class); + { + resistances.add(EnchantmentDark.class); - RESISTANCES.add(LightningTrap.Electricity.class); - } + resistances.add(LightningTrap.Electricity.class); - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(ConfusionGas.class); + immunities.add(ToxicGas.class); + immunities.add(Terror.class); + immunities.add(ConfusionGas.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } - - } diff --git a/java/com/hmdzl/spspd/actors/mobs/MagicEye.java b/java/com/hmdzl/spspd/actors/mobs/MagicEye.java index b99a9476..9448dc44 100644 --- a/java/com/hmdzl/spspd/actors/mobs/MagicEye.java +++ b/java/com/hmdzl/spspd/actors/mobs/MagicEye.java @@ -17,10 +17,6 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.items.Generator; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Actor; @@ -29,19 +25,20 @@ import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.particles.PurpleParticle; -import com.hmdzl.spspd.items.potions.PotionOfMending; +import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.wands.WandOfDisintegration; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; - import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.MagicEyeSprite; - import com.watabou.noosa.tweeners.AlphaTweener; import com.watabou.utils.Random; +import static com.hmdzl.spspd.actors.damagetype.DamageType.LIGHT_DAMAGE; + public class MagicEye extends Mob { private static final String TXT_DEATHGAZE_KILLED = "%s's deathgaze killed you..."; @@ -62,6 +59,7 @@ public class MagicEye extends Mob { lootChance = 0.1f; properties.add(Property.DEMONIC); + properties.add(Property.MAGICER); properties.add(Property.ELEMENT); } @@ -89,6 +87,15 @@ public int hitSkill(Char target) { protected float attackDelay() { return 2f; } + + @Override + public int attackProc(Char enemy, int damage) { + + enemy.damage(damage*3/4, LIGHT_DAMAGE); + damage = damage/4; + + return damage; + } @Override protected boolean doAttack(Char enemy) { @@ -123,8 +130,8 @@ public boolean attack(Char enemy) { } if (hit(this, ch, true)) { - ch.damage(Random.NormalIntRange(50, 100), this); - damage(Random.NormalIntRange(50, 100), this); + ch.damage(Random.NormalIntRange(20, 50),LIGHT_DAMAGE); + damage(Random.NormalIntRange(20, 50),LIGHT_DAMAGE ); if (Dungeon.visible[pos]) { ch.sprite.flash(); CellEmitter.center(pos).burst(PurpleParticle.BURST, @@ -132,7 +139,7 @@ public boolean attack(Char enemy) { } if (!ch.isAlive() && ch == Dungeon.hero) { - Dungeon.fail( Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(Messages.get(this, "kill")); } } else { @@ -170,25 +177,11 @@ public static MagicEye spawnAt(int pos) { } } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(WandOfDisintegration.class); - RESISTANCES.add(EnchantmentDark.class); - - } + { + resistances.add(WandOfDisintegration.class); + resistances.add(EnchantmentDark.class); - @Override - public HashSet> resistances() { - return RESISTANCES; + immunities.add(Terror.class); } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Terror.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/Mimic.java b/java/com/hmdzl/spspd/actors/mobs/Mimic.java index 7fa1ab5e..583a065d 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Mimic.java +++ b/java/com/hmdzl/spspd/actors/mobs/Mimic.java @@ -157,13 +157,7 @@ public static Mimic spawnAt(int pos, List items) { return m; } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(ScrollOfPsionicBlast.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + { + immunities.add(ScrollOfPsionicBlast.class); } } diff --git a/java/com/hmdzl/spspd/actors/mobs/MineSentinel.java b/java/com/hmdzl/spspd/actors/mobs/MineSentinel.java index fed65928..6849ddd9 100644 --- a/java/com/hmdzl/spspd/actors/mobs/MineSentinel.java +++ b/java/com/hmdzl/spspd/actors/mobs/MineSentinel.java @@ -17,10 +17,6 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.ArrayList; -import java.util.HashSet; - -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; @@ -28,11 +24,11 @@ import com.hmdzl.spspd.actors.buffs.Amok; import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.Charm; +import com.hmdzl.spspd.actors.buffs.Paralysis; import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.actors.buffs.Sleep; import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.actors.buffs.Vertigo; -import com.hmdzl.spspd.actors.buffs.Paralysis; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.Speck; @@ -41,13 +37,15 @@ import com.hmdzl.spspd.items.weapon.Weapon; import com.hmdzl.spspd.items.weapon.Weapon.Enchantment; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; - import com.hmdzl.spspd.items.weapon.melee.MeleeWeapon; import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.SentinelSprite; import com.watabou.utils.Bundle; import com.watabou.utils.Random; +import java.util.ArrayList; + public class MineSentinel extends Mob { @@ -159,7 +157,15 @@ protected boolean act() { } return super.act(); } - + + @Override + protected boolean canAttack(Char enemy) { + //return checkOtiluke(); + if (checkOtiluke()) { + return false; + }else return Level.adjacent(pos, enemy.pos) && (!isCharmedBy(enemy)); + } + protected boolean heroNear (){ boolean check=false; for (int i : Level.NEIGHBOURS9DIST2){ @@ -228,37 +234,37 @@ public boolean reset() { return true; } + protected boolean checkOtiluke(){ + boolean check = false; + + for (Mob mob : Dungeon.level.mobs) { + if (mob instanceof Otiluke) { + check=true; + } + } + return check; + } + @Override public String description() { return Messages.get(this, "desc", weapon.name()); } - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + //resistances.add(EnchantmentDark.class); - IMMUNITIES.add(EnchantmentDark.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(Paralysis.class); - } - - @Override - public HashSet> resistances() { - return RESISTANCES; + //immunities.add(EnchantmentDark.class); + immunities.add(Terror.class); + immunities.add(Amok.class); + immunities.add(Charm.class); + immunities.add(Sleep.class); + immunities.add(Burning.class); + immunities.add(ToxicGas.class); + immunities.add(ScrollOfPsionicBlast.class); + immunities.add(Vertigo.class); + immunities.add(Paralysis.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/Mob.java b/java/com/hmdzl/spspd/actors/mobs/Mob.java index 48610317..6b366326 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Mob.java +++ b/java/com/hmdzl/spspd/actors/mobs/Mob.java @@ -17,9 +17,6 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.ArrayList; -import java.util.HashSet; - import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Challenges; @@ -29,12 +26,12 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.AflyBless; import com.hmdzl.spspd.actors.buffs.Amok; +import com.hmdzl.spspd.actors.buffs.BeCorrupt; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Corruption; import com.hmdzl.spspd.actors.buffs.Dewcharge; import com.hmdzl.spspd.actors.buffs.Disarm; import com.hmdzl.spspd.actors.buffs.Feed; -import com.hmdzl.spspd.actors.buffs.Hunger; import com.hmdzl.spspd.actors.buffs.Rhythm; import com.hmdzl.spspd.actors.buffs.Rhythm2; import com.hmdzl.spspd.actors.buffs.Sleep; @@ -55,6 +52,7 @@ import com.hmdzl.spspd.items.VioletDewdrop; import com.hmdzl.spspd.items.YellowDewdrop; import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; +import com.hmdzl.spspd.items.misc.DemoScroll; import com.hmdzl.spspd.items.misc.LuckyBadge; import com.hmdzl.spspd.items.misc.PPC; import com.hmdzl.spspd.items.misc.Shovel; @@ -63,18 +61,20 @@ import com.hmdzl.spspd.levels.Level.Feeling; import com.hmdzl.spspd.levels.Terrain; import com.hmdzl.spspd.levels.features.Door; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.utils.GLog; - -import com.hmdzl.spspd.messages.Messages; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; import com.watabou.utils.Random; +import java.util.ArrayList; +import java.util.HashSet; + public abstract class Mob extends Char { - - { + + { name = Messages.get(this, "name"); } @@ -554,11 +554,11 @@ public int adj(int type){ if (type == 0){ adjustment = Dungeon.depth; } else if (type == 1){ - adjustment = (int) Dungeon.depth/2; + adjustment = Dungeon.depth /2; } else if (type == 2){ - adjustment = (int) Dungeon.depth/4; + adjustment = Dungeon.depth /4; } else if (type == 3){ - adjustment = (int) Dungeon.depth*2; + adjustment = Dungeon.depth *2; } else adjustment = 1; return adjustment; @@ -576,6 +576,11 @@ public void damage(int dmg, Object src) { if (state != HUNTING) { alerted = true; } + + BeCorrupt beco = buff(BeCorrupt.class); + if( beco != null) { + dmg = (int) Math.ceil(dmg * 1.2); + } //alerted = true; super.damage(dmg, src); @@ -617,7 +622,8 @@ public void destroy() { } if(Dungeon.hero.buff(Feed.class)!=null){ - Dungeon.hero.HT++; + Dungeon.hero.TRUE_HT++; + Dungeon.hero.updateHT(true); //Buff.affect(Dungeon.hero,GlassShield.class).turns(3) } @@ -660,20 +666,19 @@ public void die(Object cause) { SandMob.MiniSand mnsand = (SandMob.MiniSand) this; generation=mnsand.generation; } - - if (Dungeon.hero.buff(Dewcharge.class) != null && generation==0) { + + Dewcharge dewing = Dungeon.hero.buff(Dewcharge.class); + if (Dungeon.hero.buff(Dewcharge.class) != null && dewing.isDewing() && generation==0) { explodeDewHigh(pos); } - if (!Dungeon.level.cleared && originalgen && !checkOriginalGenMobs() && Dungeon.depth>2 + if (!Dungeon.level.cleared && originalgen && !checkOriginalGenMobs() && Dungeon.depth>1 && Dungeon.depth<25 && !Dungeon.bossLevel(Dungeon.depth) && (Dungeon.dewDraw || Dungeon.dewWater)){ Dungeon.level.cleared=true; GameScene.levelCleared(); if(Dungeon.depth>0){Statistics.prevfloormoves=Math.max(Dungeon.pars[Dungeon.depth]-Dungeon.level.currentmoves,0); if (Statistics.prevfloormoves>1){ GLog.h(Messages.get(this, "clear1"), Statistics.prevfloormoves); - } else if (Statistics.prevfloormoves==1){ - GLog.h(Messages.get(this, "clear2")); } else if (Statistics.prevfloormoves==0){ GLog.h(Messages.get(this, "clear3")); } @@ -716,6 +721,9 @@ public void die(Object cause) { PPC ppc = Dungeon.hero.belongings.getItem(PPC.class); if (ppc!=null) {ppc.charge++;} + + DemoScroll dc = Dungeon.hero.belongings.getItem(DemoScroll.class); + if (dc!=null) {dc.charge++;} if (Dungeon.isChallenged(Challenges.NIGHTMARE_VIRUS) && !(this instanceof Virus)) { ArrayList candidates = new ArrayList(); @@ -887,9 +895,9 @@ public boolean focusingHero() { } public interface AiState { - public boolean act(boolean enemyInFOV, boolean justAlerted); + boolean act(boolean enemyInFOV, boolean justAlerted); - public String status(); + String status(); } private class Sleeping implements AiState { diff --git a/java/com/hmdzl/spspd/actors/mobs/Monk.java b/java/com/hmdzl/spspd/actors/mobs/Monk.java index 3522e6ab..294ab500 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Monk.java +++ b/java/com/hmdzl/spspd/actors/mobs/Monk.java @@ -30,7 +30,7 @@ import com.hmdzl.spspd.items.food.staplefood.OverpricedRation; import com.hmdzl.spspd.items.weapon.melee.FightGloves; import com.hmdzl.spspd.items.weapon.melee.Knuckles; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.MonkSprite; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Random; @@ -104,14 +104,8 @@ public int attackProc(Char enemy, int damage) { return damage; } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Terror.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + { + immunities.add(Amok.class); + immunities.add(Terror.class); } } diff --git a/java/com/hmdzl/spspd/actors/mobs/MonsterBox.java b/java/com/hmdzl/spspd/actors/mobs/MonsterBox.java index 0fa90d9f..c4764289 100644 --- a/java/com/hmdzl/spspd/actors/mobs/MonsterBox.java +++ b/java/com/hmdzl/spspd/actors/mobs/MonsterBox.java @@ -170,13 +170,8 @@ public static MonsterBox spawnAt(int pos, List items) { return m; } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(ScrollOfPsionicBlast.class); + { + immunities.add(ScrollOfPsionicBlast.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/MossySkeleton.java b/java/com/hmdzl/spspd/actors/mobs/MossySkeleton.java index 793e1b66..083035af 100644 --- a/java/com/hmdzl/spspd/actors/mobs/MossySkeleton.java +++ b/java/com/hmdzl/spspd/actors/mobs/MossySkeleton.java @@ -17,27 +17,28 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.items.challengelists.PrisonChallenge; -import com.hmdzl.spspd.items.food.completefood.GoldenNut; -import com.hmdzl.spspd.items.reward.PrisonReward; -import com.hmdzl.spspd.items.scrolls.ScrollOfSacrifice; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.Statistics; import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.buffs.BeOld; +import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.items.Bone; import com.hmdzl.spspd.items.RedDewdrop; import com.hmdzl.spspd.items.YellowDewdrop; +import com.hmdzl.spspd.items.challengelists.PrisonChallenge; +import com.hmdzl.spspd.items.food.completefood.GoldenNut; +import com.hmdzl.spspd.items.reward.PrisonReward; +import com.hmdzl.spspd.items.scrolls.ScrollOfSacrifice; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.MossySkeletonSprite; import com.hmdzl.spspd.utils.GLog; - import com.watabou.noosa.audio.Sample; import com.watabou.utils.Random; +import java.util.HashSet; + public class MossySkeleton extends Mob { private static final String TXT_KILLCOUNT = "Mossy Skeleton Kill Count: %s"; @@ -71,6 +72,14 @@ public int damageRoll() { protected float attackDelay() { return 2f-(Math.min(1.5f, Statistics.skeletonsKilled/50)); } + + @Override + public int attackProc(Char enemy, int damage) { + if (Random.Int(3) == 0) { + Buff.affect(enemy, BeOld.class).set(20); + } + return damage; + } @Override public void die(Object cause) { @@ -124,13 +133,8 @@ public int drRoll() { return 10+Statistics.skeletonsKilled/5; } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(EnchantmentDark.class); + { + //immunities.add(EnchantmentDark.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/Musketeer.java b/java/com/hmdzl/spspd/actors/mobs/Musketeer.java index 88187d4c..638f6052 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Musketeer.java +++ b/java/com/hmdzl/spspd/actors/mobs/Musketeer.java @@ -123,15 +123,10 @@ public int attackProc(Char enemy, int damage) { } return damage; } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Terror.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + + { + immunities.add(Amok.class); + immunities.add(Terror.class); } @Override diff --git a/java/com/hmdzl/spspd/actors/mobs/OrbOfZotMob.java b/java/com/hmdzl/spspd/actors/mobs/OrbOfZotMob.java index 21ee4cbb..319fcd59 100644 --- a/java/com/hmdzl/spspd/actors/mobs/OrbOfZotMob.java +++ b/java/com/hmdzl/spspd/actors/mobs/OrbOfZotMob.java @@ -17,11 +17,7 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.ToxicGas; @@ -29,16 +25,16 @@ import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.particles.PurpleParticle; import com.hmdzl.spspd.items.OrbOfZot; -import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; - import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.OrbOfZotSprite; - import com.watabou.utils.Random; +import java.util.HashSet; + public class OrbOfZotMob extends Mob { private static final String TXT_DEATHGAZE_KILLED = "%s's deathray killed you..."; @@ -173,7 +169,7 @@ public boolean attack(Char enemy) { } if (!ch.isAlive() && ch == Dungeon.hero) { - Dungeon.fail(Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(Messages.get(this, "kill")); } } else { @@ -196,25 +192,9 @@ public void die(Object cause) { super.die(cause); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(EnchantmentDark.class); - - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(ToxicGas.class); + { + immunities.add(Terror.class); + immunities.add(ToxicGas.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/Orc.java b/java/com/hmdzl/spspd/actors/mobs/Orc.java index b91a2ec6..35f6f538 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Orc.java +++ b/java/com/hmdzl/spspd/actors/mobs/Orc.java @@ -17,27 +17,26 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Blob; import com.hmdzl.spspd.actors.blobs.CorruptGas; import com.hmdzl.spspd.actors.buffs.Amok; import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.actors.buffs.Vertigo; -import com.hmdzl.spspd.sprites.OrcSprite; import com.hmdzl.spspd.scenes.GameScene; +import com.hmdzl.spspd.sprites.OrcSprite; import com.watabou.utils.Random; +import java.util.HashSet; + public class Orc extends Mob { { spriteClass = OrcSprite.class; state = SLEEPING; - HP = HT = 200+(Dungeon.depth*10); - evadeSkill = 18+(Math.round((Dungeon.depth)/2)); + HP = HT = 400; + evadeSkill = 30; EXP = 22; maxLvl = 40; @@ -73,25 +72,11 @@ public void damage(int dmg, Object src) { super.damage(dmg, src); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(CorruptGas.class); - IMMUNITIES.add(Vertigo.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + { + immunities.add(Amok.class); + immunities.add(Terror.class); + immunities.add(CorruptGas.class); + immunities.add(Vertigo.class); } + } diff --git a/java/com/hmdzl/spspd/actors/mobs/Otiluke.java b/java/com/hmdzl/spspd/actors/mobs/Otiluke.java index aa4bcb51..b9529607 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Otiluke.java +++ b/java/com/hmdzl/spspd/actors/mobs/Otiluke.java @@ -17,11 +17,6 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.actors.buffs.Silent; -import com.hmdzl.spspd.items.misc.SkillOfMig; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Char; @@ -30,23 +25,26 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.Charm; +import com.hmdzl.spspd.actors.buffs.Paralysis; import com.hmdzl.spspd.actors.buffs.Poison; +import com.hmdzl.spspd.actors.buffs.STRdown; +import com.hmdzl.spspd.actors.buffs.Silent; import com.hmdzl.spspd.actors.buffs.Sleep; import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.actors.buffs.Vertigo; -import com.hmdzl.spspd.actors.buffs.Weakness; -import com.hmdzl.spspd.actors.buffs.Paralysis; +import com.hmdzl.spspd.items.misc.SkillOfMig; import com.hmdzl.spspd.items.scrolls.ScrollOfPsionicBlast; -import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; - +import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentEnergy; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.OtilukeSprite; - import com.watabou.utils.Callback; import com.watabou.utils.Random; +import static com.hmdzl.spspd.actors.damagetype.DamageType.ENERGY_DAMAGE; + public class Otiluke extends Mob implements Callback { private static final float TIME_TO_ZAP = 1f; @@ -67,6 +65,7 @@ public class Otiluke extends Mob implements Callback { lootChance = 1f; properties.add(Property.ELEMENT); + properties.add(Property.MAGICER); properties.add(Property.BOSS); } @@ -110,6 +109,14 @@ public void damage(int dmg, Object src) { } + @Override + public int attackProc(Char enemy, int damage) { + + enemy.damage(damage/2, ENERGY_DAMAGE); + damage = damage/2; + + return damage; + } @Override @@ -131,7 +138,7 @@ protected boolean doAttack(Char enemy) { boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos]; if (visible) { - ((OtilukeSprite) sprite).zap(enemy.pos); + sprite.zap(enemy.pos); } else { zap(); } @@ -145,14 +152,14 @@ private void zap() { if (hit(this, enemy, true)) { if (enemy == Dungeon.hero && Random.Int(2) == 0) { - Buff.prolong(enemy, Weakness.class, Weakness.duration(enemy)); + Buff.prolong(enemy, STRdown.class, 6f); } int dmg = Random.Int(100, 160+adj(0)); - enemy.damage(dmg, this); + enemy.damage(dmg,EnchantmentEnergy.class); if (!enemy.isAlive() && enemy == Dungeon.hero) { - Dungeon.fail(Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(Messages.get(this, "kill")); } } else { @@ -178,31 +185,21 @@ public void die(Object cause) { } - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + //resistances.add(EnchantmentDark.class); - IMMUNITIES.add(EnchantmentDark.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(Paralysis.class); + //immunities.add(EnchantmentDark.class); + immunities.add(Terror.class); + immunities.add(Amok.class); + immunities.add(Charm.class); + immunities.add(Sleep.class); + immunities.add(Burning.class); + immunities.add(ToxicGas.class); + immunities.add(ScrollOfPsionicBlast.class); + immunities.add(Vertigo.class); + immunities.add(Paralysis.class); } - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; - }} +} diff --git a/java/com/hmdzl/spspd/actors/mobs/PatrolUAV.java b/java/com/hmdzl/spspd/actors/mobs/PatrolUAV.java index fe240e6f..a51c0df0 100644 --- a/java/com/hmdzl/spspd/actors/mobs/PatrolUAV.java +++ b/java/com/hmdzl/spspd/actors/mobs/PatrolUAV.java @@ -90,19 +90,15 @@ public void die(Object cause) { } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(ElectriShock.class); - IMMUNITIES.add(WandOfLightning.class); - } - @Override - public HashSet> immunities() { - return IMMUNITIES; + { + immunities.add(Amok.class); + immunities.add(Sleep.class); + immunities.add(Terror.class); + immunities.add(Burning.class); + immunities.add(Vertigo.class); + immunities.add(ElectriShock.class); + immunities.add(WandOfLightning.class); } + } diff --git a/java/com/hmdzl/spspd/actors/mobs/Piranha.java b/java/com/hmdzl/spspd/actors/mobs/Piranha.java index 4926d86f..caecd4f3 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Piranha.java +++ b/java/com/hmdzl/spspd/actors/mobs/Piranha.java @@ -47,7 +47,7 @@ public class Piranha extends Mob { loot = new Meat(); lootChance = 1f; - properties.add(Property.BEAST); + properties.add(Property.FISHER); } public Piranha() { @@ -147,18 +147,13 @@ protected boolean getFurther(int target) { } } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(Paralysis.class); - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(Roots.class); - IMMUNITIES.add(Frost.class); - IMMUNITIES.add(Corruption.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + { + immunities.add(Burning.class); + immunities.add(Paralysis.class); + immunities.add(ToxicGas.class); + immunities.add(Roots.class); + immunities.add(Frost.class); + immunities.add(Corruption.class); } + } diff --git a/java/com/hmdzl/spspd/actors/mobs/PlagueDoctor.java b/java/com/hmdzl/spspd/actors/mobs/PlagueDoctor.java index 2b91eda9..fafdf2a6 100644 --- a/java/com/hmdzl/spspd/actors/mobs/PlagueDoctor.java +++ b/java/com/hmdzl/spspd/actors/mobs/PlagueDoctor.java @@ -50,7 +50,7 @@ import com.hmdzl.spspd.items.wands.WandOfLight; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.SewerBossLevel; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.PlagueDoctorSprite; import com.hmdzl.spspd.sprites.ShadowRatSprite; @@ -92,7 +92,7 @@ public class PlagueDoctor extends Mob { public void notice() { super.notice(); yell(Messages.get(this, "notice")); - ((SewerBossLevel) Dungeon.level).seal(); + Dungeon.level.seal(); if (!spawnedshadow) { Buff.affect(hero, ShadowRatSummon.class); spawnedshadow = true; @@ -132,7 +132,7 @@ public int attackProc(Char enemy, int damage) { if (Random.Int(2) == 0) { switch (Random.Int (4)) { case 0: - enemy.HP += (int)((enemy.HT)/10); + enemy.HP += (enemy.HT)/10; enemy.sprite.emitter().start(Speck.factory(Speck.HEALING), 0.4f,1); break; case 1: @@ -215,7 +215,7 @@ protected boolean canAttack(Char enemy) { @Override public void die(Object cause) { super.die(cause); - ((SewerBossLevel) Dungeon.level).unseal(); + Dungeon.level.unseal(); GameScene.bossSlain(); Dungeon.level.drop(new SkeletonKey(Dungeon.depth), pos).sprite.drop(); @@ -268,17 +268,11 @@ public int drRoll() { return Random.NormalIntRange(0, 5); } - private static final HashSet> IMMUNITIES = new HashSet<>(); - static { - IMMUNITIES.add(ToxicGas.class ); - IMMUNITIES.add(ParalyticGas.class); - IMMUNITIES.add(DarkGas.class); - IMMUNITIES.add(ConfusionGas.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + { + immunities.add(ToxicGas.class ); + immunities.add(ParalyticGas.class); + immunities.add(DarkGas.class); + immunities.add(ConfusionGas.class); } private static final String BREAKS = "breaks"; @@ -318,7 +312,7 @@ public boolean act() { int pos = 0; do { pos = Random.Int(Dungeon.level.randomRespawnCellMob()); - } while (!Dungeon.level.passable[pos] || Actor.findChar(pos) != null); + } while (!Level.passable[pos] || Actor.findChar(pos) != null); ShadowRat.spawnAt(pos); Sample.INSTANCE.play(Assets.SND_BURNING); } @@ -409,17 +403,12 @@ public int drRoll() { return 0; } - private static final HashSet> IMMUNITIES = new HashSet<>(); - static { - IMMUNITIES.add( ToxicGas.class ); - IMMUNITIES.add(Poison.class); - IMMUNITIES.add(Burning.class); + { + immunities.add( ToxicGas.class ); + immunities.add(Poison.class); + immunities.add(Burning.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } public static void spawnAround(int pos) { for (int n : Level.NEIGHBOURS8) { diff --git a/java/com/hmdzl/spspd/actors/mobs/PrisonWander.java b/java/com/hmdzl/spspd/actors/mobs/PrisonWander.java index f2f07996..f93a4ed8 100644 --- a/java/com/hmdzl/spspd/actors/mobs/PrisonWander.java +++ b/java/com/hmdzl/spspd/actors/mobs/PrisonWander.java @@ -17,42 +17,38 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - +import com.hmdzl.spspd.Assets; +import com.hmdzl.spspd.Badges; +import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.actors.Actor; +import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.blobs.ToxicGas; import com.hmdzl.spspd.actors.buffs.Blindness; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.Chill; import com.hmdzl.spspd.actors.buffs.Cripple; import com.hmdzl.spspd.actors.buffs.GlassShield; +import com.hmdzl.spspd.actors.buffs.Poison; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.buffs.Vertigo; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.Chains; import com.hmdzl.spspd.effects.Pushing; +import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.items.ArmorKit; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.TenguKey; import com.hmdzl.spspd.items.artifacts.EtherealChains; import com.hmdzl.spspd.items.bombs.DungeonBomb; +import com.hmdzl.spspd.items.journalpages.Sokoban2; +import com.hmdzl.spspd.items.keys.SkeletonKey; import com.hmdzl.spspd.items.wands.WandOfFlow; import com.hmdzl.spspd.items.wands.WandOfLight; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentLight; -import com.hmdzl.spspd.levels.PrisonBossLevel; -import com.hmdzl.spspd.messages.Messages; -import com.hmdzl.spspd.Assets; -import com.hmdzl.spspd.Badges; -import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.actors.Actor; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.actors.blobs.ToxicGas; -import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.effects.CellEmitter; -import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.items.journalpages.Sokoban2; -import com.hmdzl.spspd.items.keys.SkeletonKey; -import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Blindweed; import com.hmdzl.spspd.plants.Firebloom; import com.hmdzl.spspd.plants.Icecap; @@ -214,7 +210,7 @@ public int attackProc(Char enemy, int damage) { || Level.adjacent(newPos, hero.pos) || Actor.findChar(newPos) != null); - Buff.affect(hero, Weakness.class,5f); + Buff.affect(hero, STRdown.class,5f); hero.sprite.move(pos, newPos); hero.move(newPos); @@ -245,7 +241,7 @@ public void die(Object cause) { Badges.validateBossSlain(); - ((PrisonBossLevel) Dungeon.level).unseal(); + Dungeon.level.unseal(); Dungeon.level.drop(new ArmorKit(), pos).sprite.drop(); @@ -273,42 +269,24 @@ public void restoreFromBundle(Bundle bundle) { breaks = bundle.getInt( BREAKS ); } - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> WEAKNESS = new HashSet>(); - private static final HashSet> IMMUNITIES = new HashSet<>(); - static { - WEAKNESS.add(WandOfLight.class); - WEAKNESS.add(EnchantmentLight.class); - - IMMUNITIES.add(Burning.class); - RESISTANCES.add(ToxicGas.class); - IMMUNITIES.add(Poison.class); - IMMUNITIES.add(Chill.class); - IMMUNITIES.add(Blindness.class); - IMMUNITIES.add(Vertigo.class); - RESISTANCES.add(EnchantmentDark.class); + { + weakness.add(WandOfLight.class); + weakness.add(EnchantmentLight.class); + + immunities.add(Burning.class); + resistances.add(ToxicGas.class); + immunities.add(Poison.class); + immunities.add(Chill.class); + immunities.add(Blindness.class); + immunities.add(Vertigo.class); + //resistances.add(EnchantmentDark.class); - IMMUNITIES.add(Icecap.class); - IMMUNITIES.add(Firebloom.class); - IMMUNITIES.add(Blindweed.class); - IMMUNITIES.add(Stormvine.class); - IMMUNITIES.add(Sorrowmoss.class); - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - @Override - public HashSet> weakness() { - return WEAKNESS; - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + immunities.add(Icecap.class); + immunities.add(Firebloom.class); + immunities.add(Blindweed.class); + immunities.add(Stormvine.class); + immunities.add(Sorrowmoss.class); } public static class SeekBombP extends Mob { diff --git a/java/com/hmdzl/spspd/actors/mobs/RedWraith.java b/java/com/hmdzl/spspd/actors/mobs/RedWraith.java index de15a97f..0f73210e 100644 --- a/java/com/hmdzl/spspd/actors/mobs/RedWraith.java +++ b/java/com/hmdzl/spspd/actors/mobs/RedWraith.java @@ -17,8 +17,6 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; @@ -34,8 +32,8 @@ import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.actors.buffs.Vertigo; import com.hmdzl.spspd.effects.particles.ShadowParticle; -import com.hmdzl.spspd.items.RedDewdrop; import com.hmdzl.spspd.items.Generator; +import com.hmdzl.spspd.items.RedDewdrop; import com.hmdzl.spspd.items.scrolls.ScrollOfPsionicBlast; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; import com.hmdzl.spspd.levels.Level; @@ -45,6 +43,8 @@ import com.watabou.utils.Bundle; import com.watabou.utils.Random; +import java.util.HashSet; + public class RedWraith extends Mob { protected static final float SPAWN_DELAY = 2f; @@ -103,7 +103,7 @@ public void adjustStats(int level) { @Override public int attackProc(Char enemy, int damage) { if (Random.Int(4) == 0) { - Buff.affect(enemy, Vertigo.class, Vertigo.duration(enemy)); + Buff.affect(enemy, Vertigo.class, 5f); Buff.affect(enemy, Terror.class, Terror.DURATION).object = enemy.id(); } @@ -112,7 +112,7 @@ public int attackProc(Char enemy, int damage) { @Override protected boolean canAttack(Char enemy) { - return Dungeon.level.distance( pos, enemy.pos ) <= 2 ; + return Level.distance( pos, enemy.pos ) <= 2 ; } @Override @@ -176,24 +176,19 @@ public static RedWraith spawnAt(int pos) { } } - protected static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(EnchantmentDark.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(Paralysis.class); - IMMUNITIES.add(Roots.class); - IMMUNITIES.add(Frost.class); + { + //immunities.add(EnchantmentDark.class); + immunities.add(Terror.class); + immunities.add(Amok.class); + immunities.add(Charm.class); + immunities.add(Sleep.class); + immunities.add(ToxicGas.class); + immunities.add(ScrollOfPsionicBlast.class); + immunities.add(Vertigo.class); + immunities.add(Burning.class); + immunities.add(Paralysis.class); + immunities.add(Roots.class); + immunities.add(Frost.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/SandMob.java b/java/com/hmdzl/spspd/actors/mobs/SandMob.java index 826d7be8..5886e402 100644 --- a/java/com/hmdzl/spspd/actors/mobs/SandMob.java +++ b/java/com/hmdzl/spspd/actors/mobs/SandMob.java @@ -155,17 +155,12 @@ public static MiniSand spawnAt(int pos) { } } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(EnchantmentEarth.class); - IMMUNITIES.add(EnchantmentEarth2.class); - IMMUNITIES.add(Paralysis.class); + { + immunities.add(EnchantmentEarth.class); + immunities.add(EnchantmentEarth2.class); + immunities.add(Paralysis.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } } diff --git a/java/com/hmdzl/spspd/actors/mobs/Scorpio.java b/java/com/hmdzl/spspd/actors/mobs/Scorpio.java index 358474dd..912a49ed 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Scorpio.java +++ b/java/com/hmdzl/spspd/actors/mobs/Scorpio.java @@ -75,7 +75,7 @@ protected boolean canAttack(Char enemy) { if (buff(Locked.class) != null){ return Level.adjacent(pos, enemy.pos) && (!isCharmedBy(enemy)); } else - return Dungeon.level.distance( pos, enemy.pos ) <= 2 ; + return Level.distance( pos, enemy.pos ) <= 2 ; } @@ -108,14 +108,9 @@ protected Item createLoot() { } } - private static final HashSet> RESISTANCES = new HashSet>(); - static { + { - RESISTANCES.add(Poison.class); + resistances.add(Poison.class); } - @Override - public HashSet> resistances() { - return RESISTANCES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/Sentinel.java b/java/com/hmdzl/spspd/actors/mobs/Sentinel.java index 65c87fa6..9887f3e5 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Sentinel.java +++ b/java/com/hmdzl/spspd/actors/mobs/Sentinel.java @@ -17,22 +17,19 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Levitation; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.Journal; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.ToxicGas; +import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.Levitation; import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.weapon.Weapon; import com.hmdzl.spspd.items.weapon.Weapon.Enchantment; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; - import com.hmdzl.spspd.items.weapon.melee.MeleeWeapon; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.SentinelSprite; import com.watabou.utils.Bundle; import com.watabou.utils.Random; @@ -157,27 +154,18 @@ public boolean reset() { return true; } + + @Override public String description() { return Messages.get(this, "desc", weapon.name()); } - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + //resistances.add(EnchantmentDark.class); } - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/SewerHeart.java b/java/com/hmdzl/spspd/actors/mobs/SewerHeart.java index 16f52ea4..04b9fb1a 100644 --- a/java/com/hmdzl/spspd/actors/mobs/SewerHeart.java +++ b/java/com/hmdzl/spspd/actors/mobs/SewerHeart.java @@ -25,7 +25,6 @@ import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Badges.Badge; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Blob; @@ -42,9 +41,8 @@ import com.hmdzl.spspd.items.journalpages.Sokoban1; import com.hmdzl.spspd.items.keys.SkeletonKey; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.levels.SewerBossLevel; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Rotberry; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.CharSprite; @@ -55,8 +53,6 @@ import com.watabou.utils.Bundle; import com.watabou.utils.Random; -import java.util.HashSet; - import static com.hmdzl.spspd.Dungeon.hero; public class SewerHeart extends Mob { @@ -89,10 +85,10 @@ public class SewerHeart extends Mob { public void notice() { super.notice(); //yell("GLURP-GLURP!"); - ((SewerBossLevel) Dungeon.level).seal(); + Dungeon.level.seal(); if (!spawnedLasher){ - Buff.affect(hero, LasherSpawner.class);; - spawnedLasher = true; + Buff.affect(hero, LasherSpawner.class); + spawnedLasher = true; } state = PASSIVE; } @@ -221,7 +217,7 @@ public void deathGaze(){ for (int pos : beam.subPath(1, beam.dist)) { - if (Dungeon.level.flamable[pos]) { + if (Level.flamable[pos]) { Dungeon.level.destroy( pos ); GameScene.updateMap( pos ); @@ -243,7 +239,7 @@ public void deathGaze(){ } if (!ch.isAlive() && ch == Dungeon.hero) { - Dungeon.fail( Messages.format(ResultDescriptions.BURNING)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); } } else { ch.sprite.showStatus( CharSprite.NEUTRAL, ch.defenseVerb() ); @@ -261,7 +257,7 @@ public void deathGaze(){ @Override public void die(Object cause) { super.die(cause); - ((SewerBossLevel) Dungeon.level).unseal(); + Dungeon.level.unseal(); GameScene.bossSlain(); Dungeon.level.drop(new SkeletonKey(Dungeon.depth), pos).sprite.drop(); @@ -341,16 +337,10 @@ public void restoreFromBundle(Bundle bundle) { breaks = bundle.getInt( BREAKS ); } - private static final HashSet> IMMUNITIES = new HashSet<>(); - static { - IMMUNITIES.add( ToxicGas.class ); + { + immunities.add( ToxicGas.class ); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } - public static class LasherSpawner extends Buff { int spawnPower = 0; @@ -372,7 +362,7 @@ public boolean act() { int pos = 0; do{ pos = Random.Int(Dungeon.level.randomRespawnCellMob()); - } while (!Dungeon.level.passable[pos] || Actor.findChar( pos ) != null); + } while (!Level.passable[pos] || Actor.findChar( pos ) != null); SewerLasher.spawnAt(pos); Sample.INSTANCE.play(Assets.SND_BURNING); } @@ -485,14 +475,8 @@ public int drRoll() { return Random.NormalIntRange(2, 8); } - private static final HashSet> IMMUNITIES = new HashSet<>(); - static { - IMMUNITIES.add( ToxicGas.class ); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + { + immunities.add( ToxicGas.class ); } public static void spawnAround(int pos) { diff --git a/java/com/hmdzl/spspd/actors/mobs/ShadowYog.java b/java/com/hmdzl/spspd/actors/mobs/ShadowYog.java index 246d709c..957ff127 100644 --- a/java/com/hmdzl/spspd/actors/mobs/ShadowYog.java +++ b/java/com/hmdzl/spspd/actors/mobs/ShadowYog.java @@ -20,7 +20,7 @@ import java.util.HashSet; import com.hmdzl.spspd.levels.traps.SummoningTrap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.Statistics; import com.hmdzl.spspd.actors.Actor; @@ -166,7 +166,7 @@ public void beckon(int cell) { public void die(Object cause) { super.die(cause); - Statistics.shadowYogsKilled++; + //Statistics.shadowYogsKilled++; for (Mob mob : Dungeon.level.mobs) { @@ -197,24 +197,20 @@ public void notice() { yell(Messages.get(this,"illusion")); } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - - IMMUNITIES.add(EnchantmentDark.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Paralysis.class); - IMMUNITIES.add(Vertigo.class); - } + { - @Override - public HashSet> immunities() { - return IMMUNITIES; + immunities.add(EnchantmentDark.class); + immunities.add(Terror.class); + immunities.add(Amok.class); + immunities.add(Charm.class); + immunities.add(Sleep.class); + immunities.add(Burning.class); + immunities.add(ToxicGas.class); + immunities.add(ScrollOfPsionicBlast.class); + immunities.add(Paralysis.class); + immunities.add(Vertigo.class); } + + } diff --git a/java/com/hmdzl/spspd/actors/mobs/Shell.java b/java/com/hmdzl/spspd/actors/mobs/Shell.java index 884dd964..a74974fd 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Shell.java +++ b/java/com/hmdzl/spspd/actors/mobs/Shell.java @@ -17,27 +17,22 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.actors.buffs.Silent; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.ToxicGas; import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.Silent; import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.effects.particles.SparkParticle; import com.hmdzl.spspd.items.RedDewdrop; -import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.traps.LightningTrap; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.ShellSprite; import com.hmdzl.spspd.utils.GLog; - import com.watabou.noosa.Camera; import com.watabou.utils.Bundle; import com.watabou.utils.Callback; @@ -142,7 +137,7 @@ protected boolean doAttack(Char enemy) { boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos]; if (visible) { - ((ShellSprite) sprite).zap(enemy.pos); + sprite.zap(enemy.pos); } zapAll(10); spend(TIME_TO_ZAP); @@ -164,7 +159,7 @@ protected boolean doAttack(Char enemy) { Camera.main.shake(2, 0.3f); if (!enemy.isAlive()) { - Dungeon.fail(Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(Messages.get(this, "kill")); } } @@ -194,7 +189,7 @@ public void zapAll(int dmg){ if (visible) { - ((ShellSprite) sprite).zap(mob.pos); + sprite.zap(mob.pos); } mob.damage(mobDmg, this); @@ -215,7 +210,7 @@ public void zapAll(int dmg){ boolean visibleHero = Level.fieldOfView[pos] || Level.fieldOfView[hero.pos]; if (visibleHero && Random.Int(4) > 2 ) { - ((ShellSprite) sprite).zap(hero.pos); + sprite.zap(hero.pos); } heroDmg = Random.Int(Math.round(shellCharge/4), Math.round(shellCharge/2)); @@ -249,7 +244,7 @@ public void zapAround(int dmg){ || Level.fieldOfView[ch.pos]; if (visible) { - ((ShellSprite) sprite).zap(ch.pos); + sprite.zap(ch.pos); } if (Level.water[ch.pos] && !ch.flying) { @@ -276,7 +271,7 @@ public void zapAround(int dmg){ || Level.fieldOfView[ch.pos]; if (visible) { - ((ShellSprite) sprite).zap(ch.pos); + sprite.zap(ch.pos); } ch.damage(heroDmg, this); @@ -302,28 +297,11 @@ public void die(Object cause) { } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(EnchantmentDark.class); + { + //resistances.add(EnchantmentDark.class); - RESISTANCES.add(LightningTrap.Electricity.class); - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(Terror.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; - } - - + resistances.add(LightningTrap.Electricity.class); + immunities.add(ToxicGas.class); + immunities.add(Terror.class); + } } diff --git a/java/com/hmdzl/spspd/actors/mobs/Skeleton.java b/java/com/hmdzl/spspd/actors/mobs/Skeleton.java index 06dbbbe9..08e0cc6d 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Skeleton.java +++ b/java/com/hmdzl/spspd/actors/mobs/Skeleton.java @@ -17,23 +17,19 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.actors.Actor; -import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Silent; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.ResultDescriptions; +import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.Silent; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.Item; -import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.SkeletonSprite; - import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; import com.watabou.utils.Random; @@ -91,7 +87,7 @@ public void die(Object cause) { } if (heroKilled) { - Dungeon.fail( Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(Messages.get(this, "kill")); } } @@ -131,15 +127,9 @@ public void adjustStats(int level) { enemySeen = true; } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(EnchantmentDark.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; - } + //{ + //IMMUNITIES.add(EnchantmentDark.class); + //} public static void spawnAround(int pos) { for (int n : Level.NEIGHBOURS4) { diff --git a/java/com/hmdzl/spspd/actors/mobs/SkeletonHand1.java b/java/com/hmdzl/spspd/actors/mobs/SkeletonHand1.java index 7333bb5f..9f5695a6 100644 --- a/java/com/hmdzl/spspd/actors/mobs/SkeletonHand1.java +++ b/java/com/hmdzl/spspd/actors/mobs/SkeletonHand1.java @@ -27,6 +27,7 @@ import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.items.potions.PotionOfLiquidFlame; import com.hmdzl.spspd.items.wands.WandOfFirebolt; +import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.sprites.SkeletonHand1Sprite; import com.watabou.utils.Random; @@ -90,18 +91,13 @@ public int attackProc(Char enemy, int damage) { @Override protected boolean canAttack(Char enemy) { - return Dungeon.level.distance( pos, enemy.pos ) <= 2; + return Level.distance( pos, enemy.pos ) <= 2; } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(Fire.class); - IMMUNITIES.add(WandOfFirebolt.class); + { + immunities.add(Burning.class); + immunities.add(Fire.class); + immunities.add(WandOfFirebolt.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/SkeletonHand2.java b/java/com/hmdzl/spspd/actors/mobs/SkeletonHand2.java index 4c29e52b..8de6c3c8 100644 --- a/java/com/hmdzl/spspd/actors/mobs/SkeletonHand2.java +++ b/java/com/hmdzl/spspd/actors/mobs/SkeletonHand2.java @@ -29,6 +29,7 @@ import com.hmdzl.spspd.items.potions.PotionOfLiquidFlame; import com.hmdzl.spspd.items.wands.WandOfFirebolt; +import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.sprites.SkeletonHand2Sprite; import com.watabou.utils.Random; @@ -93,18 +94,13 @@ public int attackProc(Char enemy, int damage) { @Override protected boolean canAttack(Char enemy) { - return Dungeon.level.distance( pos, enemy.pos ) <= 2; + return Level.distance( pos, enemy.pos ) <= 2; } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(Fire.class); - IMMUNITIES.add(WandOfFirebolt.class); + { + immunities.add(Burning.class); + immunities.add(Fire.class); + immunities.add(WandOfFirebolt.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/SkeletonKing.java b/java/com/hmdzl/spspd/actors/mobs/SkeletonKing.java index cc6d760e..3be8bd0a 100644 --- a/java/com/hmdzl/spspd/actors/mobs/SkeletonKing.java +++ b/java/com/hmdzl/spspd/actors/mobs/SkeletonKing.java @@ -17,21 +17,19 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.actors.blobs.Fire; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.blobs.Fire; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Burning; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.buffs.Terror; -import com.hmdzl.spspd.actors.buffs.Weakness; import com.hmdzl.spspd.items.AdamantWeapon; import com.hmdzl.spspd.items.Gold; import com.hmdzl.spspd.items.potions.PotionOfLiquidFlame; import com.hmdzl.spspd.items.wands.WandOfFirebolt; - +import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.SkeletonKingSprite; import com.watabou.utils.Random; @@ -75,7 +73,7 @@ protected boolean act() { boolean result = super.act(); if (state == FLEEING && buff(Terror.class) == null && enemy != null - && enemySeen && enemy.buff(Weakness.class) == null) { + && enemySeen && enemy.buff(STRdown.class) == null) { state = HUNTING; } return result; @@ -85,7 +83,7 @@ protected boolean act() { public int attackProc(Char enemy, int damage) { if (Random.Int(2) == 0) { if(enemy == Dungeon.hero){ - Buff.prolong(enemy, Weakness.class, Weakness.duration(enemy)); + Buff.prolong(enemy, STRdown.class,10f); state = FLEEING; } } @@ -95,7 +93,7 @@ public int attackProc(Char enemy, int damage) { @Override protected boolean canAttack(Char enemy) { - return Dungeon.level.distance( pos, enemy.pos ) <= 3; + return Level.distance( pos, enemy.pos ) <= 3; } @Override @@ -120,15 +118,10 @@ public void notice() { yell(Messages.get(this, "notice", Dungeon.hero.givenName())); } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(Fire.class); - IMMUNITIES.add(WandOfFirebolt.class); + { + immunities.add(Burning.class); + immunities.add(Fire.class); + immunities.add(WandOfFirebolt.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/SokobanSentinel.java b/java/com/hmdzl/spspd/actors/mobs/SokobanSentinel.java index 639ec1d4..282ae3c5 100644 --- a/java/com/hmdzl/spspd/actors/mobs/SokobanSentinel.java +++ b/java/com/hmdzl/spspd/actors/mobs/SokobanSentinel.java @@ -19,7 +19,7 @@ import java.util.HashSet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.ToxicGas; @@ -182,22 +182,12 @@ public String description() { return Messages.get(this, "desc", weapon.name()); } - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + //resistances.add(EnchantmentDark.class); } - @Override - public HashSet> resistances() { - return RESISTANCES; - } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/SommonSkeleton.java b/java/com/hmdzl/spspd/actors/mobs/SommonSkeleton.java index 243801d7..2d1a7d28 100644 --- a/java/com/hmdzl/spspd/actors/mobs/SommonSkeleton.java +++ b/java/com/hmdzl/spspd/actors/mobs/SommonSkeleton.java @@ -113,13 +113,7 @@ public static SommonSkeleton spawnAt(int pos) { } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(EnchantmentDark.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; - } + //{ + //IMMUNITIES.add(EnchantmentDark.class); + //} } diff --git a/java/com/hmdzl/spspd/actors/mobs/SpiderBot.java b/java/com/hmdzl/spspd/actors/mobs/SpiderBot.java index 6d40f30f..3bf5591a 100644 --- a/java/com/hmdzl/spspd/actors/mobs/SpiderBot.java +++ b/java/com/hmdzl/spspd/actors/mobs/SpiderBot.java @@ -94,27 +94,12 @@ public void move(int step) { super.move(step); } - private static final HashSet> RESISTANCES = new HashSet>(); - - static { - RESISTANCES.add(Bleeding.class); - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); + { + resistances.add(Bleeding.class); - static { - IMMUNITIES.add(Roots.class); + immunities.add(Roots.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } private class Fleeing extends Mob.Fleeing { @Override diff --git a/java/com/hmdzl/spspd/actors/mobs/SpiderQueen.java b/java/com/hmdzl/spspd/actors/mobs/SpiderQueen.java index 4d0b6e9d..2c434fd3 100644 --- a/java/com/hmdzl/spspd/actors/mobs/SpiderQueen.java +++ b/java/com/hmdzl/spspd/actors/mobs/SpiderQueen.java @@ -17,12 +17,9 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.ArrayList; -import java.util.HashSet; - import com.hmdzl.spspd.Badges; -import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.Badges.Badge; +import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Blob; @@ -46,15 +43,14 @@ import com.hmdzl.spspd.items.TomeOfMastery; import com.hmdzl.spspd.items.artifacts.RobotDMT; import com.hmdzl.spspd.items.food.meatfood.MysteryMeat; -import com.hmdzl.spspd.items.scrolls.ScrollOfTeleportation; -import com.hmdzl.spspd.levels.CavesBossLevel; -import com.hmdzl.spspd.levels.features.Door; -import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.items.journalpages.Sokoban3; import com.hmdzl.spspd.items.keys.SkeletonKey; +import com.hmdzl.spspd.items.scrolls.ScrollOfTeleportation; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; +import com.hmdzl.spspd.levels.features.Door; +import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.SpiderEggSprite; import com.hmdzl.spspd.sprites.SpiderGoldSprite; @@ -63,9 +59,11 @@ import com.hmdzl.spspd.sprites.SpiderNormalSprite; import com.hmdzl.spspd.sprites.SpiderQueenSprite; import com.hmdzl.spspd.utils.GLog; - import com.watabou.utils.Random; +import java.util.ArrayList; +import java.util.HashSet; + public class SpiderQueen extends Mob { { @@ -116,7 +114,7 @@ public boolean act() { public int attackProc(Char enemy, int damage) { if (Random.Int(2) == 0) { Buff.affect(enemy, Poison.class).set( - Random.Int(7, 9) * Poison.durationFactor(enemy)); + Random.Int(7, 9)); state = FLEEING; } @@ -166,7 +164,7 @@ public void move(int step) { public void die(Object cause) { GameScene.bossSlain(); - ((CavesBossLevel) Dungeon.level).unseal(); + Dungeon.level.unseal(); Dungeon.level.drop(new SkeletonKey(Dungeon.depth), pos).sprite.drop(); Badges.validateBossSlain(); @@ -208,28 +206,12 @@ public void notice() { yell(Messages.get(this, "notice")); } - private static final HashSet> RESISTANCES = new HashSet>(); - - static { - RESISTANCES.add(Poison.class); - } - - @Override - public HashSet> resistances() { - return RESISTANCES; + { + resistances.add(Poison.class); + immunities.add(Slow.class); + immunities.add(Roots.class); } - private static final HashSet> IMMUNITIES = new HashSet>(); - - static { - IMMUNITIES.add(Slow.class); - IMMUNITIES.add(Roots.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; - } private class Fleeing extends Mob.Fleeing { @Override @@ -302,21 +284,16 @@ public boolean act() { return super.act(); } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Poison.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(Slow.class); + { + immunities.add(Amok.class); + immunities.add(Sleep.class); + immunities.add(Terror.class); + immunities.add(Poison.class); + immunities.add(Vertigo.class); + immunities.add(ToxicGas.class); + immunities.add(Slow.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } public static class SpiderWorker extends Mob { @@ -353,29 +330,13 @@ public int drRoll() { return Random.NormalIntRange(6, 10); } + { + resistances.add(Poison.class); - private static final HashSet> RESISTANCES = new HashSet>(); - - static { - RESISTANCES.add(Poison.class); - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - - static { - IMMUNITIES.add(Roots.class); - IMMUNITIES.add(SlowWeb.class); + immunities.add(Roots.class); + immunities.add(SlowWeb.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } public static SpiderWorker spawnAt(int pos) { @@ -435,26 +396,9 @@ public boolean act() { return super.act(); } - private static final HashSet> RESISTANCES = new HashSet>(); - - static { - RESISTANCES.add(Poison.class); - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - - static { - IMMUNITIES.add(Roots.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + { + resistances.add(Poison.class); + immunities.add(Roots.class); } public static SpiderMind spawnAt(int pos) { @@ -548,26 +492,11 @@ private void blink(int target) { delay = BLINK_DELAY; } - private static final HashSet> RESISTANCES = new HashSet>(); - - static { - RESISTANCES.add(Poison.class); - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Roots.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + { + resistances.add(Poison.class); + + immunities.add(Roots.class); } public static SpiderJumper spawnAt(int pos) { @@ -625,28 +554,12 @@ public int defenseProc(Char enemy, int damage) { return super.defenseProc(enemy, damage); } - private static final HashSet> RESISTANCES = new HashSet>(); - - static { - RESISTANCES.add(Poison.class); - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - - static { - IMMUNITIES.add(ConfusionGas.class); - IMMUNITIES.add(Roots.class); + { + resistances.add(Poison.class); + immunities.add(ConfusionGas.class); + immunities.add(Roots.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } public static SpiderGold spawnAt(int pos) { diff --git a/java/com/hmdzl/spspd/actors/mobs/Spinner.java b/java/com/hmdzl/spspd/actors/mobs/Spinner.java index ca24ff1f..40e1ea0c 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Spinner.java +++ b/java/com/hmdzl/spspd/actors/mobs/Spinner.java @@ -17,8 +17,6 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Blob; import com.hmdzl.spspd.actors.blobs.Web; @@ -31,6 +29,8 @@ import com.hmdzl.spspd.sprites.SpinnerSprite; import com.watabou.utils.Random; +import java.util.HashSet; + public class Spinner extends Mob { { @@ -80,7 +80,7 @@ protected boolean act() { public int attackProc(Char enemy, int damage) { if (Random.Int(2) == 0) { Buff.affect(enemy, Poison.class).set( - Random.Int(7, 9) * Poison.durationFactor(enemy)); + Random.Int(7, 9)); state = FLEEING; } @@ -95,27 +95,11 @@ public void move(int step) { super.move(step); } - private static final HashSet> RESISTANCES = new HashSet>(); - - static { - RESISTANCES.add(Poison.class); - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - - static { - IMMUNITIES.add(Roots.class); + { + resistances.add(Poison.class); + immunities.add(Roots.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } private class Fleeing extends Mob.Fleeing { @Override diff --git a/java/com/hmdzl/spspd/actors/mobs/Statue.java b/java/com/hmdzl/spspd/actors/mobs/Statue.java index bfc04d31..299708a4 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Statue.java +++ b/java/com/hmdzl/spspd/actors/mobs/Statue.java @@ -19,7 +19,8 @@ import java.util.HashSet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.Journal; import com.hmdzl.spspd.actors.Char; @@ -106,7 +107,7 @@ public int drRoll() { @Override protected boolean canAttack(Char enemy) { - return Dungeon.level.distance( pos, enemy.pos ) <= weapon.RCH; + return Level.distance( pos, enemy.pos ) <= weapon.RCH; } @Override @@ -153,22 +154,10 @@ public String description() { return Messages.get(this, "desc", weapon.name()); } - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + //resistances.add(EnchantmentDark.class); } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/Succubus.java b/java/com/hmdzl/spspd/actors/mobs/Succubus.java index b6203d27..df901bde 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Succubus.java +++ b/java/com/hmdzl/spspd/actors/mobs/Succubus.java @@ -17,28 +17,27 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.ArrayList; -import java.util.HashSet; - -import com.hmdzl.spspd.actors.buffs.Silent; -import com.hmdzl.spspd.items.scrolls.ScrollOfTeleportation; import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Charm; import com.hmdzl.spspd.actors.buffs.Light; +import com.hmdzl.spspd.actors.buffs.Silent; import com.hmdzl.spspd.actors.buffs.Sleep; import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.items.food.meatfood.MysteryMeat; import com.hmdzl.spspd.items.scrolls.ScrollOfLullaby; - +import com.hmdzl.spspd.items.scrolls.ScrollOfTeleportation; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; import com.hmdzl.spspd.sprites.SuccubusSprite; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Random; +import java.util.ArrayList; +import java.util.HashSet; + public class Succubus extends Mob { private static final int BLINK_DELAY = 5; @@ -73,8 +72,7 @@ public int damageRoll() { public int attackProc(Char enemy, int damage) { if (Random.Int(3) == 0) { - Buff.affect(enemy, Charm.class, Charm.durationFactor(enemy) - * Random.IntRange(3, 7)).object = id(); + Buff.affect(enemy, Charm.class, Random.IntRange(3, 7)).object = id(); enemy.sprite.centerEmitter().start(Speck.factory(Speck.HEART), 0.2f, 5); Sample.INSTANCE.play(Assets.SND_CHARMS); @@ -147,23 +145,8 @@ public int drRoll() { return Random.NormalIntRange(5, 10); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - - } - - @Override - public HashSet> resistances() { - return RESISTANCES; + { + immunities.add(Sleep.class); } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Sleep.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/Sufferer.java b/java/com/hmdzl/spspd/actors/mobs/Sufferer.java index 2aca7caa..789b0247 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Sufferer.java +++ b/java/com/hmdzl/spspd/actors/mobs/Sufferer.java @@ -17,20 +17,20 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.GlassShield; -import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Amok; +import com.hmdzl.spspd.actors.buffs.BeCorrupt; +import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.GlassShield; import com.hmdzl.spspd.actors.buffs.Sleep; import com.hmdzl.spspd.actors.buffs.Terror; - +import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.sprites.SuffererSprite; import com.watabou.utils.Random; -public class Sufferer extends Mob { +import static com.hmdzl.spspd.actors.damagetype.DamageType.DARK_DAMAGE; + + public class Sufferer extends Mob { { spriteClass = SuffererSprite.class; @@ -45,12 +45,13 @@ public class Sufferer extends Mob { lootChance = 0.35f; properties.add(Property.DEMONIC); + properties.add(Property.MAGICER); properties.add(Property.HUMAN); } @Override public int damageRoll() { - return Random.NormalIntRange(12+adj(0), 40+adj(1)); + return Random.NormalIntRange(7+adj(0), 10+adj(1)); } @Override @@ -64,6 +65,18 @@ public int drRoll() { return Random.NormalIntRange(0, 10); } + @Override + public int attackProc(Char enemy, int damage) { + if (Random.Int(3) == 0) { + Buff.affect(enemy, BeCorrupt.class).level(20); + } + + enemy.damage(damage, DARK_DAMAGE); + damage = 0; + + return damage; + } + @Override public int defenseProc(Char enemy, int damage) { @@ -74,23 +87,12 @@ public int defenseProc(Char enemy, int damage) { return super.defenseProc(enemy, damage); } - - private static final HashSet> RESISTANCES = new HashSet>(); - @Override - public HashSet> resistances() { - return RESISTANCES; - } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Sleep.class); + { + immunities.add(Amok.class); + immunities.add(Terror.class); + immunities.add(Sleep.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/Tank.java b/java/com/hmdzl/spspd/actors/mobs/Tank.java index 4a848601..2313738e 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Tank.java +++ b/java/com/hmdzl/spspd/actors/mobs/Tank.java @@ -30,7 +30,7 @@ import com.hmdzl.spspd.items.wands.WandOfLight; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentLight; import com.hmdzl.spspd.levels.PrisonBossLevel; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Dungeon; @@ -107,7 +107,7 @@ public void die(Object cause) { Badges.validateBossSlain(); - ((PrisonBossLevel) Dungeon.level).unseal(); + Dungeon.level.unseal(); Dungeon.level.drop(new ArmorKit(), pos).sprite.drop(); @@ -242,25 +242,14 @@ public void notice() { yell(Messages.get(this, "notice")); } - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> WEAKNESS = new HashSet>(); - static { - WEAKNESS.add(WandOfLight.class); - WEAKNESS.add(EnchantmentLight.class); + { + weakness.add(WandOfLight.class); + weakness.add(EnchantmentLight.class); - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + resistances.add(EnchantmentDark.class); } - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - @Override - public HashSet> weakness() { - return WEAKNESS; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/Tengu.java b/java/com/hmdzl/spspd/actors/mobs/Tengu.java index f1ca08ea..d128a5e4 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Tengu.java +++ b/java/com/hmdzl/spspd/actors/mobs/Tengu.java @@ -31,7 +31,7 @@ import com.hmdzl.spspd.items.weapon.missiles.HugeShuriken; import com.hmdzl.spspd.levels.PrisonBossLevel; import com.hmdzl.spspd.levels.traps.PoisonTrap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Dungeon; @@ -99,7 +99,7 @@ public void die(Object cause) { yell(Messages.get(this,"die")); GameScene.bossSlain(); Badges.validateBossSlain(); - ((PrisonBossLevel) Dungeon.level).unseal(); + Dungeon.level.unseal(); Dungeon.level.drop(new ArmorKit(), pos).sprite.drop(); Dungeon.level.drop(new Sokoban2(), pos).sprite.drop(); Dungeon.level.drop(new SkeletonKey(Dungeon.depth), pos).sprite.drop(); @@ -198,26 +198,14 @@ public void notice() { yell(Messages.get(this, "notice", Dungeon.hero.givenName())); } - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> WEAKNESS = new HashSet>(); - static { - WEAKNESS.add(WandOfLight.class); - WEAKNESS.add(EnchantmentLight.class); + { + weakness.add(WandOfLight.class); + weakness.add(EnchantmentLight.class); - RESISTANCES.add(Burning.class); - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); + resistances.add(Burning.class); + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + resistances.add(EnchantmentDark.class); } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - @Override - public HashSet> weakness() { - return WEAKNESS; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/TenguDen.java b/java/com/hmdzl/spspd/actors/mobs/TenguDen.java index 363141bd..a06493ef 100644 --- a/java/com/hmdzl/spspd/actors/mobs/TenguDen.java +++ b/java/com/hmdzl/spspd/actors/mobs/TenguDen.java @@ -17,33 +17,33 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Burning; -import com.hmdzl.spspd.actors.buffs.Locked; -import com.hmdzl.spspd.actors.buffs.Paralysis; -import com.hmdzl.spspd.actors.buffs.Slow; -import com.hmdzl.spspd.effects.particles.FlameParticle; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.ToxicGas; +import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.Burning; +import com.hmdzl.spspd.actors.buffs.Locked; +import com.hmdzl.spspd.actors.buffs.Paralysis; import com.hmdzl.spspd.actors.buffs.Poison; +import com.hmdzl.spspd.actors.buffs.Slow; import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.Speck; +import com.hmdzl.spspd.effects.particles.FlameParticle; import com.hmdzl.spspd.items.AdamantRing; import com.hmdzl.spspd.items.Gold; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.TenguSprite; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Random; +import java.util.HashSet; + public class TenguDen extends Mob { private static final int JUMP_DELAY = 5; @@ -132,7 +132,7 @@ public int attackProc(Char enemy, int damage) { enemy.sprite.emitter().burst(FlameParticle.FACTORY, 5); } if(Random.Int(20)==0){ - Buff.affect(enemy, Slow.class, Slow.duration(enemy) / 2); + Buff.affect(enemy, Slow.class, 3f); } if(Random.Int(30)==0){ @@ -194,16 +194,10 @@ public void notice() { yell(Messages.get(this,"notice")); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); - + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + //resistances.add(EnchantmentDark.class); } - @Override - public HashSet> resistances() { - return RESISTANCES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/TestMob.java b/java/com/hmdzl/spspd/actors/mobs/TestMob.java index 70ba4402..d79239cf 100644 --- a/java/com/hmdzl/spspd/actors/mobs/TestMob.java +++ b/java/com/hmdzl/spspd/actors/mobs/TestMob.java @@ -17,21 +17,17 @@ */ package com.hmdzl.spspd.actors.mobs; +import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Amok; -import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.Charm; import com.hmdzl.spspd.actors.buffs.Sleep; import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.actors.buffs.Vertigo; import com.hmdzl.spspd.items.bags.HeartOfScarecrow; -import com.hmdzl.spspd.items.wands.WandOfFirebolt; -import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.sprites.ScarecrowSprite; import com.watabou.utils.Bundle; -import java.util.HashSet; - public class TestMob extends Mob { @@ -45,7 +41,9 @@ public class TestMob extends Mob { state = PASSIVE; - properties.add(Property.PLANT); + //properties.add(Property.PLANT); + + properties.add(Property.ELEMENT); } @@ -99,36 +97,17 @@ public void die(Object cause) { } - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> WEAKNESS = new HashSet>(); - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - WEAKNESS.add(Burning.class); - WEAKNESS.add(WandOfFirebolt.class); + { + //WEAKNESS.add(Burning.class); + //WEAKNESS.add(WandOfFirebolt.class); //WEAKNESS.add(TestWeapon.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Vertigo.class); + immunities.add(Terror.class); + immunities.add(Amok.class); + immunities.add(Charm.class); + immunities.add(Sleep.class); + immunities.add(Vertigo.class); } - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - @Override - public HashSet> weakness() { - return WEAKNESS; - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; - } - - private final String SKILL = "skill"; @Override diff --git a/java/com/hmdzl/spspd/actors/mobs/TestMob2.java b/java/com/hmdzl/spspd/actors/mobs/TestMob2.java index e787e6b5..869d7795 100644 --- a/java/com/hmdzl/spspd/actors/mobs/TestMob2.java +++ b/java/com/hmdzl/spspd/actors/mobs/TestMob2.java @@ -17,24 +17,22 @@ */ package com.hmdzl.spspd.actors.mobs; +import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.ElectriShock; +import com.hmdzl.spspd.actors.buffs.BeCorrupt; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Locked; -import com.hmdzl.spspd.actors.buffs.Shocked; -import com.hmdzl.spspd.actors.buffs.StoneIce; +import com.hmdzl.spspd.actors.damagetype.DamageType; import com.hmdzl.spspd.items.bags.HeartOfScarecrow; import com.hmdzl.spspd.items.wands.WandOfLightning; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentShock; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentShock2; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.sprites.ScarecrowSprite; import com.watabou.utils.Bundle; -import java.util.HashSet; - public class TestMob2 extends Mob { @@ -75,7 +73,7 @@ public void damage(int dmg, Object src) { @Override public int attackProc(Char enemy, int damage) { - Buff.affect(enemy,StoneIce.class).level(10); + Buff.affect(enemy,BeCorrupt.class).level(100); return damage; } @@ -114,26 +112,14 @@ public void die(Object cause) { } - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> WEAKNESS = new HashSet>(); - static { - WEAKNESS.add(ElectriShock.class); - WEAKNESS.add(WandOfLightning.class); - WEAKNESS.add(EnchantmentShock.class); - WEAKNESS.add(EnchantmentShock2.class); - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - @Override - public HashSet> weakness() { - return WEAKNESS; + { + weakness.add(DamageType.ShockDamage.class); + weakness.add(ElectriShock.class); + weakness.add(WandOfLightning.class); + weakness.add(EnchantmentShock.class); + weakness.add(EnchantmentShock2.class); } - private final String SKILL = "skill"; @Override diff --git a/java/com/hmdzl/spspd/actors/mobs/Thief.java b/java/com/hmdzl/spspd/actors/mobs/Thief.java index acfcc681..f2156dd3 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Thief.java +++ b/java/com/hmdzl/spspd/actors/mobs/Thief.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Locked; import com.hmdzl.spspd.items.food.vegetable.NutVegetable; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Terror; diff --git a/java/com/hmdzl/spspd/actors/mobs/ThiefImp.java b/java/com/hmdzl/spspd/actors/mobs/ThiefImp.java index 118bd91e..e82518a8 100644 --- a/java/com/hmdzl/spspd/actors/mobs/ThiefImp.java +++ b/java/com/hmdzl/spspd/actors/mobs/ThiefImp.java @@ -17,7 +17,7 @@ */ package com.hmdzl.spspd.actors.mobs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Terror; diff --git a/java/com/hmdzl/spspd/actors/mobs/ThiefKing.java b/java/com/hmdzl/spspd/actors/mobs/ThiefKing.java index 466fe694..8fd44121 100644 --- a/java/com/hmdzl/spspd/actors/mobs/ThiefKing.java +++ b/java/com/hmdzl/spspd/actors/mobs/ThiefKing.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.actors.buffs.Locked; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.items.AdamantRing; @@ -104,13 +104,8 @@ public void notice() { yell(Messages.get(this,"notice",Dungeon.hero.givenName())); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(LightningTrap.Electricity.class); + { + resistances.add(LightningTrap.Electricity.class); } - @Override - public HashSet> resistances() { - return RESISTANCES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/TrollWarrior.java b/java/com/hmdzl/spspd/actors/mobs/TrollWarrior.java index a2a2f202..b118a37f 100644 --- a/java/com/hmdzl/spspd/actors/mobs/TrollWarrior.java +++ b/java/com/hmdzl/spspd/actors/mobs/TrollWarrior.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.DefenceUp; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.items.StoneOre; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.ToxicGas; @@ -81,17 +81,10 @@ protected float attackDelay() { return 1.2f; } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); - - } - - @Override - public HashSet> resistances() { - return RESISTANCES; + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + resistances.add(EnchantmentDark.class); } private final String ENDLESS = "endless"; diff --git a/java/com/hmdzl/spspd/actors/mobs/UAmulet.java b/java/com/hmdzl/spspd/actors/mobs/UAmulet.java index 8f92953f..b24a856f 100644 --- a/java/com/hmdzl/spspd/actors/mobs/UAmulet.java +++ b/java/com/hmdzl/spspd/actors/mobs/UAmulet.java @@ -18,33 +18,30 @@ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Blob; +import com.hmdzl.spspd.actors.blobs.CorruptGas; import com.hmdzl.spspd.actors.blobs.ToxicGas; import com.hmdzl.spspd.actors.buffs.Amok; +import com.hmdzl.spspd.actors.buffs.Bleeding; import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.Charm; +import com.hmdzl.spspd.actors.buffs.Paralysis; import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.actors.buffs.Sleep; import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.actors.buffs.Vertigo; +import com.hmdzl.spspd.items.Playericon; import com.hmdzl.spspd.items.scrolls.ScrollOfPsionicBlast; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ErrorSprite; - import com.hmdzl.spspd.sprites.MirrorSprite; import com.watabou.utils.Bundle; import com.watabou.utils.Random; -import com.hmdzl.spspd.actors.blobs.CorruptGas; -import com.hmdzl.spspd.actors.buffs.Bleeding; -import com.hmdzl.spspd.actors.buffs.Paralysis; -import com.hmdzl.spspd.items.Playericon; public class UAmulet extends Mob { @@ -115,8 +112,8 @@ public void restoreFromBundle( Bundle bundle ) { @Override public void damage(int dmg, Object src) { - - dmg = Random.Int(10,20); + + dmg = Math.min(dmg,20); if (dmg > 15){ GameScene.add(Blob.seed(pos, 30, CorruptGas.class)); } @@ -146,38 +143,25 @@ public static UAmulet spawnAt(int pos) { } } - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); - IMMUNITIES.add(EnchantmentDark.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(Paralysis.class); - IMMUNITIES.add(Bleeding.class); - IMMUNITIES.add(CorruptGas.class); + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + resistances.add(EnchantmentDark.class); + immunities.add(EnchantmentDark.class); + immunities.add(Terror.class); + immunities.add(Amok.class); + immunities.add(Charm.class); + immunities.add(Sleep.class); + immunities.add(Burning.class); + immunities.add(ToxicGas.class); + immunities.add(ScrollOfPsionicBlast.class); + immunities.add(Vertigo.class); + immunities.add(Paralysis.class); + immunities.add(Bleeding.class); + immunities.add(CorruptGas.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - public static class DarkMirror extends Mob { { @@ -199,7 +183,7 @@ public int hitSkill(Char target) { @Override public int damageRoll() { - return (int)(Dungeon.hero.HT/10); + return Dungeon.hero.HT/10; } @Override diff --git a/java/com/hmdzl/spspd/actors/mobs/UDM300.java b/java/com/hmdzl/spspd/actors/mobs/UDM300.java index 2255a67e..7bc9ae75 100644 --- a/java/com/hmdzl/spspd/actors/mobs/UDM300.java +++ b/java/com/hmdzl/spspd/actors/mobs/UDM300.java @@ -18,37 +18,35 @@ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.items.bombs.DungeonBomb; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Blob; -import com.hmdzl.spspd.actors.blobs.ToxicGas; -import com.hmdzl.spspd.actors.blobs.ShockWeb; +import com.hmdzl.spspd.actors.blobs.CorruptGas; +import com.hmdzl.spspd.actors.blobs.DarkGas; import com.hmdzl.spspd.actors.blobs.FrostGas; +import com.hmdzl.spspd.actors.blobs.ShockWeb; import com.hmdzl.spspd.actors.blobs.TarGas; -import com.hmdzl.spspd.actors.blobs.DarkGas; +import com.hmdzl.spspd.actors.blobs.ToxicGas; import com.hmdzl.spspd.actors.buffs.Amok; +import com.hmdzl.spspd.actors.buffs.Bleeding; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.Charm; +import com.hmdzl.spspd.actors.buffs.Paralysis; import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.actors.buffs.Sleep; +import com.hmdzl.spspd.actors.buffs.Tar; import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.actors.buffs.Vertigo; +import com.hmdzl.spspd.items.bombs.DungeonBomb; import com.hmdzl.spspd.items.scrolls.ScrollOfPsionicBlast; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.scenes.GameScene; +import com.hmdzl.spspd.sprites.SeekingBombSprite; import com.hmdzl.spspd.sprites.UDM300Sprite; import com.watabou.utils.Random; -import com.hmdzl.spspd.actors.blobs.CorruptGas; -import com.hmdzl.spspd.actors.buffs.Bleeding; -import com.hmdzl.spspd.actors.buffs.Tar; -import com.hmdzl.spspd.actors.buffs.Paralysis; -import com.hmdzl.spspd.sprites.SeekingBombSprite; public class UDM300 extends Mob { @@ -144,7 +142,7 @@ public boolean act() { public int attackProc(Char enemy, int damage) { if (breaks == 0 ){ if (Random.Int(2) == 0) { - Buff.affect(enemy, Poison.class).set(Random.Int(7, 9) * Poison.durationFactor(enemy)); + Buff.affect(enemy, Poison.class).set(Random.Int(7, 9)); state = FLEEING; } } @@ -175,8 +173,8 @@ public void move(int step) { @Override public void damage(int dmg, Object src) { - - dmg = Random.Int(10,20); + + dmg = Math.min(dmg,20); if (dmg > 15){ GameScene.add(Blob.seed(pos, 30, CorruptGas.class)); } @@ -229,38 +227,26 @@ protected void nowhereToRun() { } } - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); - IMMUNITIES.add(EnchantmentDark.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(Paralysis.class); - IMMUNITIES.add(Bleeding.class); - IMMUNITIES.add(CorruptGas.class); - IMMUNITIES.add(FrostGas.class); - IMMUNITIES.add(TarGas.class); - IMMUNITIES.add(Tar.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + resistances.add(EnchantmentDark.class); + immunities.add(EnchantmentDark.class); + immunities.add(Terror.class); + immunities.add(Amok.class); + immunities.add(Charm.class); + immunities.add(Sleep.class); + immunities.add(Burning.class); + immunities.add(ToxicGas.class); + immunities.add(ScrollOfPsionicBlast.class); + immunities.add(Vertigo.class); + immunities.add(Paralysis.class); + immunities.add(Bleeding.class); + immunities.add(CorruptGas.class); + immunities.add(FrostGas.class); + immunities.add(TarGas.class); + immunities.add(Tar.class); } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } public static class SeekBomb extends Mob { diff --git a/java/com/hmdzl/spspd/actors/mobs/UGoo.java b/java/com/hmdzl/spspd/actors/mobs/UGoo.java index 28189582..e5da2925 100644 --- a/java/com/hmdzl/spspd/actors/mobs/UGoo.java +++ b/java/com/hmdzl/spspd/actors/mobs/UGoo.java @@ -18,22 +18,23 @@ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Blob; +import com.hmdzl.spspd.actors.blobs.CorruptGas; import com.hmdzl.spspd.actors.blobs.ElectriShock; import com.hmdzl.spspd.actors.blobs.Fire; import com.hmdzl.spspd.actors.blobs.FrostGas; import com.hmdzl.spspd.actors.blobs.ToxicGas; import com.hmdzl.spspd.actors.buffs.Amok; +import com.hmdzl.spspd.actors.buffs.Bleeding; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.Charm; import com.hmdzl.spspd.actors.buffs.Ooze; +import com.hmdzl.spspd.actors.buffs.Paralysis; import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.actors.buffs.Roots; import com.hmdzl.spspd.actors.buffs.Silent; @@ -42,19 +43,15 @@ import com.hmdzl.spspd.actors.buffs.Vertigo; import com.hmdzl.spspd.items.scrolls.ScrollOfPsionicBlast; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; +import com.hmdzl.spspd.items.weapon.melee.special.Handcannon; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.CharSprite; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.sprites.UGooSprite; - import com.watabou.utils.Bundle; import com.watabou.utils.Random; -import com.hmdzl.spspd.actors.blobs.CorruptGas; -import com.hmdzl.spspd.actors.buffs.Bleeding; -import com.hmdzl.spspd.actors.buffs.Paralysis; -import com.hmdzl.spspd.items.weapon.melee.special.Handcannon; public class UGoo extends Mob { @@ -167,7 +164,7 @@ public void damage(int dmg, Object src) { if (GoosCount > 0){ dmg = Random.Int(0,1); - } else dmg = Random.Int(10,20); + } else dmg = Math.min(dmg,20); if (dmg > 15){ GameScene.add(Blob.seed(pos, 30, CorruptGas.class)); } @@ -203,35 +200,24 @@ public static UGoo spawnAt(int pos) { } } - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); - IMMUNITIES.add(EnchantmentDark.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(Paralysis.class); - IMMUNITIES.add(Bleeding.class); - IMMUNITIES.add(CorruptGas.class); + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + resistances.add(EnchantmentDark.class); + immunities.add(EnchantmentDark.class); + immunities.add(Terror.class); + immunities.add(Amok.class); + immunities.add(Charm.class); + immunities.add(Sleep.class); + immunities.add(Burning.class); + immunities.add(ToxicGas.class); + immunities.add(ScrollOfPsionicBlast.class); + immunities.add(Vertigo.class); + immunities.add(Paralysis.class); + immunities.add(Bleeding.class); + immunities.add(CorruptGas.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } public static class EarthGoo extends Mob { @@ -291,32 +277,17 @@ public int attackProc(Char enemy, int damage) { return damage; } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(EnchantmentDark.class); - - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Poison.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(ToxicGas.class); + { + resistances.add(ToxicGas.class); + resistances.add(EnchantmentDark.class); + immunities.add(Amok.class); + immunities.add(Sleep.class); + immunities.add(Terror.class); + immunities.add(Poison.class); + immunities.add(Vertigo.class); + immunities.add(ToxicGas.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } public static class FireGoo extends Mob { @@ -385,7 +356,7 @@ public boolean attack(Char enemy) { enemy.sprite.flash(); if (!enemy.isAlive() && enemy == Dungeon.hero) { - Dungeon.fail(Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(TXT_KILL, name); } return true; @@ -412,33 +383,18 @@ public boolean act() { return super.act(); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(EnchantmentDark.class); - - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(ToxicGas.class); + { + resistances.add(ToxicGas.class); + resistances.add(EnchantmentDark.class); + immunities.add(Amok.class); + immunities.add(Sleep.class); + immunities.add(Terror.class); + immunities.add(Burning.class); + immunities.add(ScrollOfPsionicBlast.class); + immunities.add(Vertigo.class); + immunities.add(ToxicGas.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } public static class IceGoo extends Mob { @@ -501,34 +457,19 @@ public boolean act() { return super.act(); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(EnchantmentDark.class); - - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Poison.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(FrostGas.class); + { + resistances.add(ToxicGas.class); + resistances.add(EnchantmentDark.class); + immunities.add(Amok.class); + immunities.add(Sleep.class); + immunities.add(Terror.class); + immunities.add(Poison.class); + immunities.add(Vertigo.class); + immunities.add(ToxicGas.class); + immunities.add(FrostGas.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } @@ -591,32 +532,17 @@ public void damage(int dmg, Object src) { - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(EnchantmentDark.class); - - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(ElectriShock.class); + { + resistances.add(ToxicGas.class); + resistances.add(EnchantmentDark.class); + immunities.add(Amok.class); + immunities.add(Sleep.class); + immunities.add(Terror.class); + immunities.add(Burning.class); + immunities.add(ScrollOfPsionicBlast.class); + immunities.add(Vertigo.class); + immunities.add(ElectriShock.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/mobs/UIcecorps.java b/java/com/hmdzl/spspd/actors/mobs/UIcecorps.java index ade54132..064e5e89 100644 --- a/java/com/hmdzl/spspd/actors/mobs/UIcecorps.java +++ b/java/com/hmdzl/spspd/actors/mobs/UIcecorps.java @@ -18,47 +18,42 @@ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - +import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.actors.blobs.Blob; +import com.hmdzl.spspd.actors.blobs.CorruptGas; import com.hmdzl.spspd.actors.blobs.ToxicGas; import com.hmdzl.spspd.actors.buffs.Amok; +import com.hmdzl.spspd.actors.buffs.Bleeding; import com.hmdzl.spspd.actors.buffs.BoxStar; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.Charm; import com.hmdzl.spspd.actors.buffs.Chill; import com.hmdzl.spspd.actors.buffs.Frost; +import com.hmdzl.spspd.actors.buffs.Paralysis; import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.actors.buffs.Sleep; +import com.hmdzl.spspd.actors.buffs.Slow; import com.hmdzl.spspd.actors.buffs.StoneIce; import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.actors.buffs.Vertigo; import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.items.eggs.EasterEgg; import com.hmdzl.spspd.items.scrolls.ScrollOfMagicMapping; import com.hmdzl.spspd.items.scrolls.ScrollOfPsionicBlast; -import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; -import com.hmdzl.spspd.items.weapon.melee.special.Handcannon; import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.levels.Terrain; import com.hmdzl.spspd.levels.traps.SpearTrap; import com.hmdzl.spspd.scenes.GameScene; -import com.hmdzl.spspd.sprites.ErrorSprite; import com.hmdzl.spspd.sprites.IceRabbitSprite; -import com.watabou.utils.Bundle; -import com.watabou.utils.Random; -import com.hmdzl.spspd.actors.blobs.CorruptGas; -import com.hmdzl.spspd.actors.buffs.Bleeding; -import com.hmdzl.spspd.actors.buffs.Slow; -import com.hmdzl.spspd.actors.buffs.Paralysis; import com.watabou.noosa.Camera; import com.watabou.noosa.audio.Sample; -import com.hmdzl.spspd.Assets; -import com.hmdzl.spspd.levels.Terrain; +import com.watabou.utils.Bundle; +import com.watabou.utils.Random; + +import static com.hmdzl.spspd.actors.damagetype.DamageType.ICE_DAMAGE; public class UIcecorps extends Mob { @@ -107,7 +102,7 @@ public int drRoll() { @Override protected boolean canAttack(Char enemy) { - return Dungeon.level.distance( pos, enemy.pos ) <= 2 ; + return Level.distance( pos, enemy.pos ) <= 2 ; } @@ -116,6 +111,9 @@ public int attackProc(Char enemy, int damage) { if (Random.Int(2) == 0) { Buff.affect(enemy, StoneIce.class).level(3); } + + enemy.damage(damage/2, ICE_DAMAGE); + damage = damage/2; return damage; } @@ -213,36 +211,23 @@ public static UIcecorps spawnAt(int pos) { } } - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); - IMMUNITIES.add(EnchantmentDark.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(Chill.class); - IMMUNITIES.add(Frost.class); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(Paralysis.class); - IMMUNITIES.add(Bleeding.class); - IMMUNITIES.add(CorruptGas.class); + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + immunities.add(Terror.class); + immunities.add(Amok.class); + immunities.add(Charm.class); + immunities.add(Sleep.class); + immunities.add(Burning.class); + immunities.add(ToxicGas.class); + immunities.add(Chill.class); + immunities.add(Frost.class); + immunities.add(ScrollOfPsionicBlast.class); + immunities.add(Vertigo.class); + immunities.add(Paralysis.class); + immunities.add(Bleeding.class); + immunities.add(CorruptGas.class); } - - @Override - public HashSet> immunities() { - return IMMUNITIES; - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } + } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/mobs/UIcecorps2.java b/java/com/hmdzl/spspd/actors/mobs/UIcecorps2.java index 4d4f52f5..f31fd5a3 100644 --- a/java/com/hmdzl/spspd/actors/mobs/UIcecorps2.java +++ b/java/com/hmdzl/spspd/actors/mobs/UIcecorps2.java @@ -18,22 +18,24 @@ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - +import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.actors.blobs.Blob; +import com.hmdzl.spspd.actors.blobs.CorruptGas; import com.hmdzl.spspd.actors.blobs.ToxicGas; import com.hmdzl.spspd.actors.buffs.Amok; +import com.hmdzl.spspd.actors.buffs.Bleeding; import com.hmdzl.spspd.actors.buffs.BoxStar; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.Charm; import com.hmdzl.spspd.actors.buffs.Chill; import com.hmdzl.spspd.actors.buffs.Frost; +import com.hmdzl.spspd.actors.buffs.Paralysis; import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.actors.buffs.Sleep; +import com.hmdzl.spspd.actors.buffs.Slow; import com.hmdzl.spspd.actors.buffs.StoneIce; import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.actors.buffs.Vertigo; @@ -42,24 +44,17 @@ import com.hmdzl.spspd.items.eggs.EasterEgg; import com.hmdzl.spspd.items.scrolls.ScrollOfMagicMapping; import com.hmdzl.spspd.items.scrolls.ScrollOfPsionicBlast; -import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; -import com.hmdzl.spspd.items.weapon.melee.special.Handcannon; import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.levels.Terrain; import com.hmdzl.spspd.levels.traps.SpearTrap; import com.hmdzl.spspd.scenes.GameScene; -import com.hmdzl.spspd.sprites.ErrorSprite; import com.hmdzl.spspd.sprites.IceRabbit2Sprite; -import com.hmdzl.spspd.sprites.IceRabbitSprite; -import com.watabou.utils.Bundle; -import com.watabou.utils.Random; -import com.hmdzl.spspd.actors.blobs.CorruptGas; -import com.hmdzl.spspd.actors.buffs.Bleeding; -import com.hmdzl.spspd.actors.buffs.Slow; -import com.hmdzl.spspd.actors.buffs.Paralysis; import com.watabou.noosa.Camera; import com.watabou.noosa.audio.Sample; -import com.hmdzl.spspd.Assets; -import com.hmdzl.spspd.levels.Terrain; +import com.watabou.utils.Bundle; +import com.watabou.utils.Random; + +import static com.hmdzl.spspd.actors.damagetype.DamageType.ICE_DAMAGE; public class UIcecorps2 extends Mob { @@ -110,7 +105,7 @@ public int drRoll() { @Override protected boolean canAttack(Char enemy) { - return Dungeon.level.distance( pos, enemy.pos ) <= 2 ; + return Level.distance( pos, enemy.pos ) <= 2 ; } @@ -119,6 +114,10 @@ public int attackProc(Char enemy, int damage) { if (Random.Int(2) == 0) { Buff.affect(enemy, StoneIce.class).level(3); } + + enemy.damage(damage*3/4, ICE_DAMAGE); + damage = damage/4; + return damage; } @@ -221,36 +220,26 @@ public static UIcecorps2 spawnAt(int pos) { } } - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); - IMMUNITIES.add(EnchantmentDark.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(Chill.class); - IMMUNITIES.add(Frost.class); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(Paralysis.class); - IMMUNITIES.add(Bleeding.class); - IMMUNITIES.add(CorruptGas.class); + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + //resistances.add(EnchantmentDark.class); + //immunities.add(EnchantmentDark.class); + immunities.add(Terror.class); + immunities.add(Amok.class); + immunities.add(Charm.class); + immunities.add(Sleep.class); + immunities.add(Burning.class); + immunities.add(ToxicGas.class); + immunities.add(Chill.class); + immunities.add(Frost.class); + immunities.add(ScrollOfPsionicBlast.class); + immunities.add(Vertigo.class); + immunities.add(Paralysis.class); + immunities.add(Bleeding.class); + immunities.add(CorruptGas.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } + } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/mobs/UKing.java b/java/com/hmdzl/spspd/actors/mobs/UKing.java index 3b20e7cf..07099ae1 100644 --- a/java/com/hmdzl/spspd/actors/mobs/UKing.java +++ b/java/com/hmdzl/spspd/actors/mobs/UKing.java @@ -18,17 +18,18 @@ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.blobs.CorruptGas; import com.hmdzl.spspd.actors.blobs.ToxicGas; import com.hmdzl.spspd.actors.buffs.Amok; import com.hmdzl.spspd.actors.buffs.AttackUp; +import com.hmdzl.spspd.actors.buffs.Bleeding; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.Charm; +import com.hmdzl.spspd.actors.buffs.Paralysis; import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.actors.buffs.Roots; import com.hmdzl.spspd.actors.buffs.Sleep; @@ -41,13 +42,9 @@ import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; import com.hmdzl.spspd.scenes.GameScene; - import com.hmdzl.spspd.sprites.PlantKingSprite; import com.watabou.utils.Bundle; import com.watabou.utils.Random; -import com.hmdzl.spspd.actors.blobs.CorruptGas; -import com.hmdzl.spspd.actors.buffs.Bleeding; -import com.hmdzl.spspd.actors.buffs.Paralysis; public class UKing extends Mob { @@ -137,8 +134,8 @@ public float speed() { @Override protected boolean canAttack(Char enemy) { if (breaks >2){ - return Dungeon.level.distance( pos, enemy.pos ) <= 3;} - else return Dungeon.level.distance( pos, enemy.pos ) <= 1; + return Level.distance( pos, enemy.pos ) <= 3;} + else return Level.distance( pos, enemy.pos ) <= 1; } @Override @@ -169,7 +166,11 @@ public void restoreFromBundle( Bundle bundle ) { public void damage(int dmg, Object src) { dmg = (int)(dmg*0.4); - Buff.affect(this, AttackUp.class,3f).level((int)(15*dmg/85)); + + Buff.affect(this, AttackUp.class,3f).level(15*dmg/85); + + dmg = Math.min(dmg,20); + super.damage(dmg, src); } @@ -196,35 +197,23 @@ public static UKing spawnAt(int pos) { } } - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); - IMMUNITIES.add(EnchantmentDark.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(Paralysis.class); - IMMUNITIES.add(Bleeding.class); - IMMUNITIES.add(CorruptGas.class); + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + //resistances.add(EnchantmentDark.class); + //immunities.add(EnchantmentDark.class); + immunities.add(Terror.class); + immunities.add(Amok.class); + immunities.add(Charm.class); + immunities.add(Sleep.class); + immunities.add(Burning.class); + immunities.add(ToxicGas.class); + immunities.add(ScrollOfPsionicBlast.class); + immunities.add(Vertigo.class); + immunities.add(Paralysis.class); + immunities.add(Bleeding.class); + immunities.add(CorruptGas.class); } - - @Override - public HashSet> immunities() { - return IMMUNITIES; - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/mobs/UTengu.java b/java/com/hmdzl/spspd/actors/mobs/UTengu.java index 2b9399e7..b88da1d5 100644 --- a/java/com/hmdzl/spspd/actors/mobs/UTengu.java +++ b/java/com/hmdzl/spspd/actors/mobs/UTengu.java @@ -18,17 +18,18 @@ package com.hmdzl.spspd.actors.mobs; -import com.hmdzl.spspd.items.wands.WandOfFlow; - -import java.util.HashSet; +import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Blob; +import com.hmdzl.spspd.actors.blobs.CorruptGas; import com.hmdzl.spspd.actors.blobs.ToxicGas; import com.hmdzl.spspd.actors.buffs.Amok; +import com.hmdzl.spspd.actors.buffs.Bleeding; import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.Charm; +import com.hmdzl.spspd.actors.buffs.Paralysis; import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.actors.buffs.Sleep; import com.hmdzl.spspd.actors.buffs.Terror; @@ -36,19 +37,16 @@ import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.items.scrolls.ScrollOfPsionicBlast; +import com.hmdzl.spspd.items.wands.WandOfFlow; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; import com.hmdzl.spspd.items.weapon.melee.block.TenguSword; import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.mechanics.Ballistica; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.UTenguSprite; +import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; import com.watabou.utils.Random; -import com.hmdzl.spspd.actors.blobs.CorruptGas; -import com.hmdzl.spspd.actors.buffs.Bleeding; -import com.hmdzl.spspd.actors.buffs.Paralysis; -import com.hmdzl.spspd.Assets; -import com.hmdzl.spspd.mechanics.Ballistica; -import com.watabou.noosa.audio.Sample; @@ -138,7 +136,7 @@ public void restoreFromBundle( Bundle bundle ) { @Override public void damage(int dmg, Object src) { - dmg = Random.Int(10,20); + dmg = Math.min(dmg,20); if (dmg > 15){ GameScene.add(Blob.seed(pos, 30, CorruptGas.class)); } @@ -160,8 +158,8 @@ public int defenseProc(Char enemy, int damage) { @Override protected boolean canAttack(Char enemy) { if (breaks <2){ - return Dungeon.level.distance( pos, enemy.pos ) <= 4;} - else return Dungeon.level.distance( pos, enemy.pos ) <= 1; + return Level.distance( pos, enemy.pos ) <= 4;} + else return Level.distance( pos, enemy.pos ) <= 1; } @Override @@ -179,7 +177,7 @@ protected boolean doAttack(Char enemy) { public int attackProc(Char enemy, int damage) { Char ch; - if (Random.Int( 5 ) >= 3 && Dungeon.level.distance( pos, enemy.pos )<= 1){ + if (Random.Int( 5 ) >= 3 && Level.distance( pos, enemy.pos )<= 1){ int oppositeTengu = enemy.pos + (enemy.pos - pos); Ballistica trajectory = new Ballistica(enemy.pos, oppositeTengu, Ballistica.MAGIC_BOLT); WandOfFlow.throwChar(enemy, trajectory, 1); @@ -248,35 +246,23 @@ private void jump() { } - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); - IMMUNITIES.add(EnchantmentDark.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(Paralysis.class); - IMMUNITIES.add(Bleeding.class); - IMMUNITIES.add(CorruptGas.class); + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + //resistances.add(EnchantmentDark.class); + //immunities.add(EnchantmentDark.class); + immunities.add(Terror.class); + immunities.add(Amok.class); + immunities.add(Charm.class); + immunities.add(Sleep.class); + immunities.add(Burning.class); + immunities.add(ToxicGas.class); + immunities.add(ScrollOfPsionicBlast.class); + immunities.add(Vertigo.class); + immunities.add(Paralysis.class); + immunities.add(Bleeding.class); + immunities.add(CorruptGas.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/mobs/UYog.java b/java/com/hmdzl/spspd/actors/mobs/UYog.java index ce7d149c..79253553 100644 --- a/java/com/hmdzl/spspd/actors/mobs/UYog.java +++ b/java/com/hmdzl/spspd/actors/mobs/UYog.java @@ -18,16 +18,17 @@ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Blob; +import com.hmdzl.spspd.actors.blobs.CorruptGas; import com.hmdzl.spspd.actors.blobs.ToxicGas; import com.hmdzl.spspd.actors.buffs.Amok; +import com.hmdzl.spspd.actors.buffs.Bleeding; import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.Charm; +import com.hmdzl.spspd.actors.buffs.Paralysis; import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.actors.buffs.Sleep; import com.hmdzl.spspd.actors.buffs.Terror; @@ -38,12 +39,8 @@ import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ErrorSprite; - import com.watabou.utils.Bundle; import com.watabou.utils.Random; -import com.hmdzl.spspd.actors.blobs.CorruptGas; -import com.hmdzl.spspd.actors.buffs.Bleeding; -import com.hmdzl.spspd.actors.buffs.Paralysis; public class UYog extends Mob { @@ -127,8 +124,8 @@ public void restoreFromBundle( Bundle bundle ) { @Override public void damage(int dmg, Object src) { - - dmg = Random.Int(10,20); + + dmg = Math.min(dmg,20); if (dmg > 15){ GameScene.add(Blob.seed(pos, 30, CorruptGas.class)); } @@ -158,35 +155,23 @@ public static UYog spawnAt(int pos) { } } - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); - IMMUNITIES.add(EnchantmentDark.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(Paralysis.class); - IMMUNITIES.add(Bleeding.class); - IMMUNITIES.add(CorruptGas.class); + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + //resistances.add(EnchantmentDark.class); + //immunities.add(EnchantmentDark.class); + immunities.add(Terror.class); + immunities.add(Amok.class); + immunities.add(Charm.class); + immunities.add(Sleep.class); + immunities.add(Burning.class); + immunities.add(ToxicGas.class); + immunities.add(ScrollOfPsionicBlast.class); + immunities.add(Vertigo.class); + immunities.add(Paralysis.class); + immunities.add(Bleeding.class); + immunities.add(CorruptGas.class); } - - @Override - public HashSet> immunities() { - return IMMUNITIES; - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/mobs/VaultProtector.java b/java/com/hmdzl/spspd/actors/mobs/VaultProtector.java index 99a7b194..3fdc5851 100644 --- a/java/com/hmdzl/spspd/actors/mobs/VaultProtector.java +++ b/java/com/hmdzl/spspd/actors/mobs/VaultProtector.java @@ -17,21 +17,18 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.actors.buffs.Silent; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.buffs.Silent; import com.hmdzl.spspd.effects.particles.SparkParticle; import com.hmdzl.spspd.items.VioletDewdrop; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.traps.LightningTrap; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.VaultProtectorSprite; - import com.watabou.noosa.Camera; import com.watabou.utils.Callback; import com.watabou.utils.Random; @@ -92,7 +89,7 @@ protected boolean doAttack(Char enemy) { boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos]; if (visible) { - ((VaultProtectorSprite) sprite).zap(enemy.pos); + sprite.zap(enemy.pos); } spend(TIME_TO_ZAP); @@ -112,7 +109,7 @@ protected boolean doAttack(Char enemy) { Camera.main.shake(2, 0.3f); if (!enemy.isAlive()) { - Dungeon.fail( Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(Messages.get(this, "kill")); } } @@ -130,13 +127,8 @@ public void call() { next(); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(LightningTrap.Electricity.class); + { + resistances.add(LightningTrap.Electricity.class); } - @Override - public HashSet> resistances() { - return RESISTANCES; - } } diff --git a/java/com/hmdzl/spspd/actors/mobs/Virus.java b/java/com/hmdzl/spspd/actors/mobs/Virus.java index 72be6f4d..6e4462a4 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Virus.java +++ b/java/com/hmdzl/spspd/actors/mobs/Virus.java @@ -39,7 +39,7 @@ public class Virus extends Mob { protected static final float SPAWN_DELAY = 1f; { spriteClass = ErrorSprite.class; - HP = HT = (int)Dungeon.hero.HT/5; + HP = HT = Dungeon.hero.HT /5; EXP = 0; evadeSkill = Dungeon.hero.evadeSkill; @@ -94,18 +94,12 @@ public void add( Buff buff ) { //in other words, can't be directly affected by buffs/debuffs. } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - - IMMUNITIES.add(EnchantmentDark.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(CorruptGas.class); + { + //immunities.add(EnchantmentDark.class); + immunities.add(Burning.class); + immunities.add(ToxicGas.class); + immunities.add(ScrollOfPsionicBlast.class); + immunities.add(CorruptGas.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/mobs/Warlock.java b/java/com/hmdzl/spspd/actors/mobs/Warlock.java index c1eecb1f..4e4ae2c5 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Warlock.java +++ b/java/com/hmdzl/spspd/actors/mobs/Warlock.java @@ -17,26 +17,25 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - -import com.hmdzl.spspd.actors.buffs.Silent; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; +import com.hmdzl.spspd.actors.buffs.Silent; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.WarlockSprite; - import com.watabou.utils.Callback; import com.watabou.utils.Random; +import static com.hmdzl.spspd.actors.damagetype.DamageType.DARK_DAMAGE; + public class Warlock extends Mob implements Callback { private static final float TIME_TO_ZAP = 1f; @@ -59,11 +58,12 @@ public class Warlock extends Mob implements Callback { lootChanceOther = 0.02f; // by default, see die() properties.add(Property.DWARF); + properties.add(Property.MAGICER); } @Override public int damageRoll() { - return Random.NormalIntRange(12, 25+adj(0)); + return Random.NormalIntRange(12, 24+adj(0)); } @Override @@ -76,6 +76,15 @@ public int drRoll() { return Random.NormalIntRange(4, 8); } + @Override + public int attackProc(Char enemy, int damage) { + + enemy.damage(damage/2, DARK_DAMAGE); + damage = damage/2; + + return damage; + } + @Override protected boolean canAttack(Char enemy) { if (buff(Silent.class) != null){ return Level.adjacent(pos, enemy.pos) && (!isCharmedBy(enemy)); @@ -95,7 +104,7 @@ protected boolean doAttack(Char enemy) { boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos]; if (visible) { - ((WarlockSprite) sprite).zap(enemy.pos); + sprite.zap(enemy.pos); } else { zap(); } @@ -109,14 +118,14 @@ private void zap() { if (hit(this, enemy, true)) { if (enemy == Dungeon.hero && Random.Int(2) == 0) { - Buff.prolong(enemy, Weakness.class, Weakness.duration(enemy)); + Buff.prolong(enemy, STRdown.class,10f); } int dmg = Random.Int(16, 24+adj(0)); - enemy.damage(dmg, this); + enemy.damage(dmg, DARK_DAMAGE); if (!enemy.isAlive() && enemy == Dungeon.hero) { - Dungeon.fail(Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(Messages.get(this, "kill")); } } else { @@ -140,13 +149,7 @@ public Item createLoot() { return loot; } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(EnchantmentDark.class); - } - - @Override - public HashSet> resistances() { - return RESISTANCES; + { + resistances.add(EnchantmentDark.class); } } diff --git a/java/com/hmdzl/spspd/actors/mobs/Wraith.java b/java/com/hmdzl/spspd/actors/mobs/Wraith.java index 40ad5c3c..51a87f0c 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Wraith.java +++ b/java/com/hmdzl/spspd/actors/mobs/Wraith.java @@ -17,8 +17,6 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; @@ -45,6 +43,8 @@ import com.watabou.utils.Bundle; import com.watabou.utils.Random; +import java.util.HashSet; + public class Wraith extends Mob { protected static final float SPAWN_DELAY = 2f; @@ -78,7 +78,7 @@ public void storeInBundle(Bundle bundle) { @Override protected boolean canAttack(Char enemy) { - return Dungeon.level.distance( pos, enemy.pos ) <= 4 ; + return Level.distance( pos, enemy.pos ) <= 4 ; } @@ -108,7 +108,7 @@ public void adjustStats(int level) { @Override public int attackProc(Char enemy, int damage) { if (Random.Int(10) == 0) { - Buff.affect(enemy, Vertigo.class, Vertigo.duration(enemy)); + Buff.affect(enemy, Vertigo.class,5f); Buff.affect(enemy, Terror.class, Terror.DURATION).object = enemy.id(); } @@ -167,24 +167,18 @@ public static Wraith spawnAt(int pos) { } } - protected static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(EnchantmentDark.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(Paralysis.class); - IMMUNITIES.add(Roots.class); - IMMUNITIES.add(Frost.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + { + //immunities.add(EnchantmentDark.class); + immunities.add(Terror.class); + immunities.add(Amok.class); + immunities.add(Charm.class); + immunities.add(Sleep.class); + immunities.add(ToxicGas.class); + immunities.add(ScrollOfPsionicBlast.class); + immunities.add(Vertigo.class); + immunities.add(Burning.class); + immunities.add(Paralysis.class); + immunities.add(Roots.class); + immunities.add(Frost.class); } } diff --git a/java/com/hmdzl/spspd/actors/mobs/YearBeast.java b/java/com/hmdzl/spspd/actors/mobs/YearBeast.java index edd872a1..14da91f9 100644 --- a/java/com/hmdzl/spspd/actors/mobs/YearBeast.java +++ b/java/com/hmdzl/spspd/actors/mobs/YearBeast.java @@ -54,7 +54,7 @@ import com.hmdzl.spspd.items.weapon.missiles.MoneyPack; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.BeastYearSprite; import com.hmdzl.spspd.utils.GLog; @@ -117,7 +117,7 @@ public boolean act() { } @Override protected boolean canAttack(Char enemy) { - return Dungeon.level.distance( pos, enemy.pos ) <= 2 ; + return Level.distance( pos, enemy.pos ) <= 2 ; } @Override public int attackProc(Char enemy, int damage) { @@ -224,30 +224,16 @@ public void notice() { yell(Messages.get(this, "notice")); } - - - @Override - public HashSet> immunities() { - return IMMUNITIES; - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Fire.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(Burning.class); + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + resistances.add(ScrollOfPsionicBlast.class); + immunities.add(Charm.class); + immunities.add(Sleep.class); + immunities.add(Terror.class); + immunities.add(Fire.class); + immunities.add(Vertigo.class); + immunities.add(Burning.class); } } diff --git a/java/com/hmdzl/spspd/actors/mobs/YearBeast2.java b/java/com/hmdzl/spspd/actors/mobs/YearBeast2.java index d8d7da02..f4862feb 100644 --- a/java/com/hmdzl/spspd/actors/mobs/YearBeast2.java +++ b/java/com/hmdzl/spspd/actors/mobs/YearBeast2.java @@ -17,8 +17,6 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.HashSet; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Fire; @@ -38,7 +36,6 @@ import com.hmdzl.spspd.items.KindOfArmor; import com.hmdzl.spspd.items.KindOfWeapon; import com.hmdzl.spspd.items.armor.normalarmor.BaseArmor; -import com.hmdzl.spspd.items.armor.normalarmor.NormalArmor; import com.hmdzl.spspd.items.armor.normalarmor.RubberArmor; import com.hmdzl.spspd.items.armor.normalarmor.WoodenArmor; import com.hmdzl.spspd.items.eggs.YearPetEgg; @@ -48,13 +45,17 @@ import com.hmdzl.spspd.items.weapon.melee.FightGloves; import com.hmdzl.spspd.items.weapon.melee.Knuckles; import com.hmdzl.spspd.items.weapon.melee.special.FireCracker; +import com.hmdzl.spspd.items.weapon.missiles.MoneyPack; +import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.BeastYearSprite; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Bundle; import com.watabou.utils.Random; +import java.util.HashSet; + public class YearBeast2 extends Mob { protected static final float SPAWN_DELAY = 1f; { @@ -104,7 +105,7 @@ public boolean act() { } @Override protected boolean canAttack(Char enemy) { - return Dungeon.level.distance( pos, enemy.pos ) <= 2 ; + return Level.distance( pos, enemy.pos ) <= 2 ; } @Override public int attackProc(Char enemy, int damage) { @@ -168,10 +169,10 @@ public int defenseProc(Char enemy, int damage) { public void damage(int dmg, Object src) { if(src instanceof Wand) { - dmg = (int)(dmg/3); + dmg = dmg/3; } - if ( src instanceof FireCracker) { + if ( src instanceof FireCracker || src instanceof MoneyPack) { times=0; } @@ -194,30 +195,16 @@ public void notice() { yell(Messages.get(this, "notice")); } - - - @Override - public HashSet> immunities() { - return IMMUNITIES; - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Fire.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(Burning.class); + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + resistances.add(ScrollOfPsionicBlast.class); + immunities.add(Charm.class); + immunities.add(Sleep.class); + immunities.add(Terror.class); + immunities.add(Fire.class); + immunities.add(Vertigo.class); + immunities.add(Burning.class); } } diff --git a/java/com/hmdzl/spspd/actors/mobs/Yog.java b/java/com/hmdzl/spspd/actors/mobs/Yog.java index b54529b8..c8602220 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Yog.java +++ b/java/com/hmdzl/spspd/actors/mobs/Yog.java @@ -17,17 +17,7 @@ */ package com.hmdzl.spspd.actors.mobs; -import java.util.ArrayList; -import java.util.HashSet; - -import com.hmdzl.spspd.actors.buffs.Silent; -import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.items.DolyaSlate; -import com.hmdzl.spspd.items.Elevator; -import com.hmdzl.spspd.levels.HallsBossLevel; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Blob; @@ -40,18 +30,23 @@ import com.hmdzl.spspd.actors.buffs.Ooze; import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.actors.buffs.Roots; +import com.hmdzl.spspd.actors.buffs.Silent; import com.hmdzl.spspd.actors.buffs.Sleep; import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.actors.buffs.Vertigo; +import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.Pushing; import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.effects.particles.ShadowParticle; +import com.hmdzl.spspd.items.DolyaSlate; +import com.hmdzl.spspd.items.Elevator; import com.hmdzl.spspd.items.keys.SkeletonKey; import com.hmdzl.spspd.items.scrolls.ScrollOfPsionicBlast; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentDark; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.BurningFistSprite; import com.hmdzl.spspd.sprites.CharSprite; @@ -61,10 +56,11 @@ import com.hmdzl.spspd.sprites.RottingFistSprite; import com.hmdzl.spspd.sprites.YogSprite; import com.hmdzl.spspd.utils.GLog; - import com.watabou.utils.Bundle; import com.watabou.utils.Random; +import java.util.ArrayList; + public class Yog extends Mob { { @@ -93,11 +89,7 @@ public boolean checkYear() { } } } - if (yearAlive++ > 0) { - return true; - } else { - return false; - } + return yearAlive++ > 0; } @Override @@ -244,7 +236,7 @@ public void beckon(int cell) { @Override public void die(Object cause) { - ((HallsBossLevel) Dungeon.level).unseal(); + Dungeon.level.unseal(); for (Mob mob : (Iterable) Dungeon.level.mobs.clone()) { if (mob instanceof BurningFist || mob instanceof RottingFist || mob instanceof Eye || mob instanceof PinningFist || mob instanceof InfectingFist) { @@ -272,24 +264,17 @@ public void notice() { yell(Messages.get(this, "notice")); } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - - IMMUNITIES.add(EnchantmentDark.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Vertigo.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + { + + resistances.add(EnchantmentDark.class); + resistances.add(Terror.class); + resistances.add(Amok.class); + resistances.add(Charm.class); + resistances.add(Sleep.class); + resistances.add(Burning.class); + resistances.add(ToxicGas.class); + resistances.add(ScrollOfPsionicBlast.class); + resistances.add(Vertigo.class); } public static class RottingFist extends Mob { @@ -328,7 +313,7 @@ public int hitSkill(Char target) { @Override public int damageRoll() { - return Random.NormalIntRange(44, 86); + return Random.NormalIntRange(44, 76); } @Override @@ -357,31 +342,15 @@ public boolean act() { return super.act(); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(EnchantmentDark.class); - - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Poison.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(ToxicGas.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + { + resistances.add(ToxicGas.class); + resistances.add(EnchantmentDark.class); + resistances.add(Amok.class); + resistances.add(Sleep.class); + resistances.add(Terror.class); + resistances.add(Poison.class); + resistances.add(Vertigo.class); + resistances.add(ToxicGas.class); } } @@ -448,7 +417,7 @@ public boolean attack(Char enemy) { enemy.sprite.flash(); if (!enemy.isAlive() && enemy == Dungeon.hero) { - Dungeon.fail(Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(TXT_KILL, name); } return true; @@ -475,31 +444,16 @@ public boolean act() { return super.act(); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(EnchantmentDark.class); - - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(ToxicGas.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + { + resistances.add(EnchantmentDark.class); + resistances.add(Amok.class); + resistances.add(Sleep.class); + resistances.add(Terror.class); + resistances.add(Burning.class); + resistances.add(Fire.class); + resistances.add(ScrollOfPsionicBlast.class); + resistances.add(Vertigo.class); + resistances.add(ToxicGas.class); } } @@ -547,7 +501,7 @@ public int drRoll() { @Override public int attackProc(Char enemy, int damage) { if (Random.Int(2) == 0) { - Buff.affect(enemy, Poison.class).set(Random.Int(7, 9) * Poison.durationFactor(enemy)); + Buff.affect(enemy, Poison.class).set(Random.Int(7, 9)); state = FLEEING; } @@ -562,32 +516,17 @@ public boolean act() { return super.act(); } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(EnchantmentDark.class); - - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Poison.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(ToxicGas.class); + { + resistances.add(ToxicGas.class); + resistances.add(EnchantmentDark.class); + resistances.add(Amok.class); + resistances.add(Sleep.class); + resistances.add(Terror.class); + resistances.add(Poison.class); + resistances.add(Vertigo.class); + resistances.add(ToxicGas.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } @@ -667,7 +606,7 @@ public boolean attack(Char enemy) { enemy.sprite.flash(); if (!enemy.isAlive() && enemy == Dungeon.hero) { - Dungeon.fail(Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); GLog.n(TXT_KILL, name); } return true; @@ -684,32 +623,17 @@ public boolean attack(Char enemy) { } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(EnchantmentDark.class); - - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Vertigo.class); + { + resistances.add(ToxicGas.class); + resistances.add(EnchantmentDark.class); + resistances.add(Amok.class); + resistances.add(Sleep.class); + resistances.add(Terror.class); + resistances.add(Burning.class); + resistances.add(ScrollOfPsionicBlast.class); + resistances.add(Vertigo.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } public static class Larva extends Mob { diff --git a/java/com/hmdzl/spspd/actors/mobs/Zombie.java b/java/com/hmdzl/spspd/actors/mobs/Zombie.java index b3f2d2c5..145e4895 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Zombie.java +++ b/java/com/hmdzl/spspd/actors/mobs/Zombie.java @@ -19,9 +19,9 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.ToxicGas; +import com.hmdzl.spspd.actors.buffs.BeOld; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Burning; -import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.items.potions.PotionOfToxicGas; import com.hmdzl.spspd.items.wands.WandOfFirebolt; import com.hmdzl.spspd.sprites.ZombieSprite; @@ -73,29 +73,16 @@ public int drRoll() { @Override public int attackProc(Char enemy, int damage) { - if (Random.Int(5) == 0) { - Buff.affect(enemy, Poison.class).set( - Random.Int(7, 9) * Poison.durationFactor(enemy)); + if (Random.Int(3) == 0) { + Buff.affect(enemy, BeOld.class).set(20); } return damage; } - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> WEAKNESS = new HashSet>(); - static { - WEAKNESS.add(Burning.class); - WEAKNESS.add(WandOfFirebolt.class); - RESISTANCES.add(ToxicGas.class); - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - @Override - public HashSet> weakness() { - return WEAKNESS; + { + weakness.add(Burning.class); + weakness.add(WandOfFirebolt.class); + resistances.add(ToxicGas.class); } } diff --git a/java/com/hmdzl/spspd/actors/mobs/Zot.java b/java/com/hmdzl/spspd/actors/mobs/Zot.java index 24b24681..1fd7f1b8 100644 --- a/java/com/hmdzl/spspd/actors/mobs/Zot.java +++ b/java/com/hmdzl/spspd/actors/mobs/Zot.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.buffs.Silent; import com.hmdzl.spspd.items.SoulCollect; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; @@ -287,32 +287,20 @@ public void notice() { yell(Messages.get(this,"notice")); } - private static final HashSet> RESISTANCES = new HashSet>(); - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - RESISTANCES.add(ToxicGas.class); - RESISTANCES.add(Poison.class); - RESISTANCES.add(EnchantmentDark.class); + { + resistances.add(ToxicGas.class); + resistances.add(Poison.class); + //resistances.add(EnchantmentDark.class); - IMMUNITIES.add(EnchantmentDark.class); - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(Amok.class); - IMMUNITIES.add(Charm.class); - IMMUNITIES.add(Sleep.class); - IMMUNITIES.add(Burning.class); - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - IMMUNITIES.add(Vertigo.class); - IMMUNITIES.add(Paralysis.class); - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + immunities.add(EnchantmentDark.class); + immunities.add(Terror.class); + immunities.add(Amok.class); + immunities.add(Charm.class); + immunities.add(Sleep.class); + immunities.add(Burning.class); + immunities.add(ToxicGas.class); + immunities.add(ScrollOfPsionicBlast.class); + immunities.add(Vertigo.class); + immunities.add(Paralysis.class); } } diff --git a/java/com/hmdzl/spspd/actors/mobs/ZotPhase.java b/java/com/hmdzl/spspd/actors/mobs/ZotPhase.java index 74ba515e..3d12c271 100644 --- a/java/com/hmdzl/spspd/actors/mobs/ZotPhase.java +++ b/java/com/hmdzl/spspd/actors/mobs/ZotPhase.java @@ -79,13 +79,9 @@ protected boolean canAttack(Char enemy) { if (buff(Silent.class) != null){ return new Ballistica( pos, enemy.pos, Ballistica.MAGIC_BOLT).collisionPos == enemy.pos; } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(LightningTrap.Electricity.class); + { + resistances.add(LightningTrap.Electricity.class); } - @Override - public HashSet> resistances() { - return RESISTANCES; - } + } diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/AFly.java b/java/com/hmdzl/spspd/actors/mobs/npcs/AFly.java index bf84a524..034de0ff 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/AFly.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/AFly.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.AFlySprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.windows.WndAflyInfo; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/ATV9.java b/java/com/hmdzl/spspd/actors/mobs/npcs/ATV9.java index 11b6cfe6..94b9e471 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/ATV9.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/ATV9.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.ATV9Sprite; import com.hmdzl.spspd.sprites.CoconutSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class ATV9 extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/AliveFish.java b/java/com/hmdzl/spspd/actors/mobs/npcs/AliveFish.java index 61efcf8d..6dcce0ec 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/AliveFish.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/AliveFish.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.PiranhaSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class AliveFish extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Apostle.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Apostle.java index d87e2307..3a433761 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Apostle.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Apostle.java @@ -24,7 +24,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ApostleSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.windows.WndDream; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/AshWolf.java b/java/com/hmdzl/spspd/actors/mobs/npcs/AshWolf.java index 395ee9ef..7eaae2f1 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/AshWolf.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/AshWolf.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.actors.mobs.Golem; import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.actors.mobs.Monk; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.quest.DwarfToken; import com.hmdzl.spspd.items.rings.Ring; diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Bilboldev.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Bilboldev.java index 16de0116..9328e6a8 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Bilboldev.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Bilboldev.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.BilboldevSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class Bilboldev extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/BlackMeow.java b/java/com/hmdzl/spspd/actors/mobs/npcs/BlackMeow.java index c993332c..200d644e 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/BlackMeow.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/BlackMeow.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.BlackMeowSprite; import com.hmdzl.spspd.sprites.CoconutSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class BlackMeow extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Blacksmith.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Blacksmith.java index 2b52d69d..8551f765 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Blacksmith.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Blacksmith.java @@ -17,8 +17,6 @@ */ package com.hmdzl.spspd.actors.mobs.npcs; -import java.util.Collection; - import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Dungeon; @@ -37,13 +35,12 @@ import com.hmdzl.spspd.items.quest.DarkGold; import com.hmdzl.spspd.items.quest.Pickaxe; import com.hmdzl.spspd.items.scrolls.ScrollOfUpgrade; -import com.hmdzl.spspd.items.weapon.melee.special.Handcannon; import com.hmdzl.spspd.items.weapon.melee.special.ShadowEater; import com.hmdzl.spspd.levels.Room; import com.hmdzl.spspd.levels.Room.Type; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.BlacksmithSprite; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.utils.GLog; import com.hmdzl.spspd.windows.WndBlacksmith; import com.hmdzl.spspd.windows.WndQuest; @@ -51,6 +48,8 @@ import com.watabou.utils.Bundle; import com.watabou.utils.Random; +import java.util.Collection; + public class Blacksmith extends NPC { private static final String TXT_GOLD_1 = "Hey human! Wanna be useful, eh? Take dis pickaxe and mine me some _dark gold ore_, _15 pieces_ should be enough. " @@ -105,8 +104,7 @@ public boolean interact() { if (!Quest.given) { - GameScene.show(new WndQuest(this, - Quest.alternative ? Messages.get(this, "blood_1") : Messages.get(this, "gold_1")) { + GameScene.show(new WndQuest(this, Messages.get(this, "gold_1")) { @Override public void onBackPressed() { @@ -119,32 +117,12 @@ public void onBackPressed() { Dungeon.level.drop(pick, Dungeon.hero.pos).sprite.drop(); - }; - }); + } + }); Journal.add(Journal.Feature.TROLL); } else if (!Quest.completed) { - if (Quest.alternative) { - - Pickaxe pick = Dungeon.hero.belongings.getItem(Pickaxe.class); - if (pick == null) { - tell(Messages.get(this, "lost_pick")); - } else if (!pick.bloodStained) { - tell(Messages.get(this, "blood_2")); - } else { - //if (pick.isEquipped(Dungeon.hero)) { - // pick.doUnequip(Dungeon.hero, false); - //} - //pick.detach(Dungeon.hero.belongings.backpack); - yell( Messages.get(this, "keeppickaxe")); - tell(Messages.get(this, "completed")); - - Quest.completed = true; - Quest.reforged = false; - } - - } else { Pickaxe pick = Dungeon.hero.belongings.getItem(Pickaxe.class); DarkGold gold = Dungeon.hero.belongings.getItem(DarkGold.class); @@ -164,7 +142,6 @@ public void onBackPressed() { Quest.reforged = false; } - } } else if (!Quest.reforged) { GameScene.show(new WndBlacksmith(this, Dungeon.hero)); @@ -316,7 +293,7 @@ public static class Quest { private static boolean spawned; - private static boolean alternative; + //private static boolean alternative; private static boolean given; private static boolean completed; private static boolean reforged; @@ -331,7 +308,7 @@ public static void reset() { private static final String NODE = "blacksmith"; private static final String SPAWNED = "spawned"; - private static final String ALTERNATIVE = "alternative"; + //private static final String ALTERNATIVE = "alternative"; private static final String GIVEN = "given"; private static final String COMPLETED = "completed"; private static final String REFORGED = "reforged"; @@ -343,7 +320,7 @@ public static void storeInBundle(Bundle bundle) { node.put(SPAWNED, spawned); if (spawned) { - node.put(ALTERNATIVE, alternative); + //node.put(ALTERNATIVE, alternative); node.put(GIVEN, given); node.put(COMPLETED, completed); node.put(REFORGED, reforged); @@ -357,7 +334,7 @@ public static void restoreFromBundle(Bundle bundle) { Bundle node = bundle.getBundle(NODE); if (!node.isNull() && (spawned = node.getBoolean(SPAWNED))) { - alternative = node.getBoolean(ALTERNATIVE); + //alternative = node.getBoolean(ALTERNATIVE); given = node.getBoolean(GIVEN); completed = node.getBoolean(COMPLETED); reforged = node.getBoolean(REFORGED); @@ -379,12 +356,8 @@ public static boolean spawn(Collection rooms) { spawned = true; - Handcannon saw = Dungeon.hero.belongings.getItem(Handcannon.class); - if (saw==null){ - alternative = Random.Int(2) == 0; - } else { - alternative = false; - } + //alternative = Random.Int(2) == 0; + given = false; break; diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Blacksmith2.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Blacksmith2.java index 58b472be..37c9d5a0 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Blacksmith2.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Blacksmith2.java @@ -34,7 +34,7 @@ import com.hmdzl.spspd.items.weapon.melee.MeleeWeapon; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ElectricwelderSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.utils.GLog; import com.hmdzl.spspd.windows.WndBlacksmith2; import com.hmdzl.spspd.windows.WndQuest; @@ -169,12 +169,9 @@ public static boolean checkAdamant() { AdamantWeapon weapon1 = Dungeon.hero.belongings.getItem(AdamantWeapon.class); AdamantRing ring1 = Dungeon.hero.belongings.getItem(AdamantRing.class); AdamantWand wand1 = Dungeon.hero.belongings.getItem(AdamantWand.class); - - if(armor1!=null || weapon1!=null || ring1!=null || wand1!=null) { - return true; - } - return false; - } + + return armor1 != null || weapon1 != null || ring1 != null || wand1 != null; + } diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/CatSheep.java b/java/com/hmdzl/spspd/actors/mobs/npcs/CatSheep.java index 6d57e3d3..f284c048 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/CatSheep.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/CatSheep.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.CatSheepSprite; import com.hmdzl.spspd.sprites.CoconutSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class CatSheep extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Coconut.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Coconut.java index 2ac86db1..d200914f 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Coconut.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Coconut.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.CoconutSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class Coconut extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Coconut2.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Coconut2.java index ec82756d..02d5442b 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Coconut2.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Coconut2.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.CoconutSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class Coconut2 extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/ConsideredHamster.java b/java/com/hmdzl/spspd/actors/mobs/npcs/ConsideredHamster.java index e0e02a96..d94f850e 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/ConsideredHamster.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/ConsideredHamster.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.MimicSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class ConsideredHamster extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Dachhack.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Dachhack.java index 45164128..eda35e0f 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Dachhack.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Dachhack.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.DachhackSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class Dachhack extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/DreamPlayer.java b/java/com/hmdzl/spspd/actors/mobs/npcs/DreamPlayer.java index 49415a30..7f78d0e4 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/DreamPlayer.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/DreamPlayer.java @@ -24,7 +24,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.DreamPlayerSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.windows.WndDream; import com.hmdzl.spspd.windows.WndSaidBySun; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Evan.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Evan.java index 09165b3b..51efe49d 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Evan.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Evan.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.EvanSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class Evan extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/FruitCat.java b/java/com/hmdzl/spspd/actors/mobs/npcs/FruitCat.java index 22c5cdb8..f29f73c2 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/FruitCat.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/FruitCat.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.FruitCatSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class FruitCat extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/G2159687.java b/java/com/hmdzl/spspd/actors/mobs/npcs/G2159687.java index b297152b..649b64d8 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/G2159687.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/G2159687.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.G2159687Sprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.windows.WndHotel; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Ghost.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Ghost.java index a846bcc7..0ac1ac93 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Ghost.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Ghost.java @@ -17,8 +17,6 @@ */ package com.hmdzl.spspd.actors.mobs.npcs; -import java.util.HashSet; - import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.Journal; @@ -26,27 +24,24 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Paralysis; import com.hmdzl.spspd.actors.buffs.Roots; -import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.actors.mobs.FetidRat; import com.hmdzl.spspd.actors.mobs.GnollTrickster; import com.hmdzl.spspd.actors.mobs.GreatCrab; +import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.items.Generator; -import com.hmdzl.spspd.items.Item; -import com.hmdzl.spspd.items.armor.Armor; +import com.hmdzl.spspd.items.artifacts.Artifact; import com.hmdzl.spspd.items.eggs.Egg; import com.hmdzl.spspd.items.eggs.RandomEgg; -import com.hmdzl.spspd.items.weapon.Weapon; -import com.hmdzl.spspd.items.weapon.missiles.MissileWeapon; +import com.hmdzl.spspd.items.rings.Ring; import com.hmdzl.spspd.levels.SewerLevel; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.GhostSprite; import com.hmdzl.spspd.utils.GLog; - import com.hmdzl.spspd.windows.WndQuest; import com.hmdzl.spspd.windows.WndSadGhost; -import com.hmdzl.spspd.messages.Messages; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; import com.watabou.utils.Random; @@ -136,7 +131,7 @@ public boolean interact() { Sample.INSTANCE.play(Assets.SND_GHOST); if (Quest.given) { - if (Quest.weapon != null) { + if (Quest.artifact != null) { if (Quest.processed) { GameScene.show(new WndSadGhost(this, Quest.type)); } else { @@ -201,16 +196,11 @@ public boolean interact() { return false; } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Paralysis.class); - IMMUNITIES.add(Roots.class); + { + immunities.add(Paralysis.class); + immunities.add(Roots.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } public static class Quest { @@ -223,15 +213,15 @@ public static class Quest { private static int depth; - public static Weapon weapon; - public static Armor armor; + public static Artifact artifact; + public static Ring ring; public static Egg pet; public static void reset() { spawned = false; - weapon = null; - armor = null; + artifact = null; + ring = null; pet = null; } @@ -242,8 +232,8 @@ public static void reset() { private static final String GIVEN = "given"; private static final String PROCESSED = "processed"; private static final String DEPTH = "depth"; - private static final String WEAPON = "weapon"; - private static final String ARMOR = "armor"; + private static final String ARTIFACT = "artifact"; + private static final String RING = "ring"; private static final String PET = "pet"; public static void storeInBundle(Bundle bundle) { @@ -260,8 +250,8 @@ public static void storeInBundle(Bundle bundle) { node.put(DEPTH, depth); node.put(PROCESSED, processed); - node.put(WEAPON, weapon); - node.put(ARMOR, armor); + node.put(ARTIFACT, artifact); + node.put(RING, ring); node.put(PET, pet); } @@ -280,8 +270,8 @@ public static void restoreFromBundle(Bundle bundle) { depth = node.getInt(DEPTH); - weapon = (Weapon) node.get(WEAPON); - armor = (Armor) node.get(ARMOR); + artifact = (Artifact) node.get(ARTIFACT); + ring = (Ring) node.get(RING); pet = (Egg) node.get(PET); } else { reset(); @@ -309,27 +299,15 @@ public static void spawn(SewerLevel level) { depth = Dungeon.depth; do { - weapon = Generator.randomWeapon(10); - } while (weapon instanceof MissileWeapon); - armor = Generator.randomArmor(10); - - for (int i = 1; i <= 3; i++) { - Item another; - do { - another = Generator.randomWeapon(10 + i); - } while (another instanceof MissileWeapon); - if (another.level >= weapon.level) { - weapon = (Weapon) another; - } - another = Generator.randomArmor(10 + i); - if (another.level >= armor.level) { - armor = (Armor) another; - } - } + artifact = Generator.randomArtifact(); + } while (artifact.cursed); + do { + ring = Generator.randomRing(); + } while (ring.cursed); - pet = (Egg) new RandomEgg(); - weapon.identify(); - armor.identify(); + pet = new RandomEgg(); + artifact.identify(); + ring.identify(); } } @@ -349,8 +327,8 @@ public static void process() { } public static void complete() { - weapon = null; - armor = null; + artifact = null; + ring = null; pet = null; Journal.remove(Journal.Feature.GHOST); diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/GoblinPlayer.java b/java/com/hmdzl/spspd/actors/mobs/npcs/GoblinPlayer.java index 2f2c2d1b..0a7f436c 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/GoblinPlayer.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/GoblinPlayer.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.GoblinPlayerSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.windows.WndGoblin; import com.hmdzl.spspd.windows.WndSaidBySun; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/HBB.java b/java/com/hmdzl/spspd/actors/mobs/npcs/HBB.java index e8611e3f..e7103192 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/HBB.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/HBB.java @@ -24,7 +24,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.items.Flag; import com.hmdzl.spspd.sprites.HBBSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class HBB extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/HateSokoban.java b/java/com/hmdzl/spspd/actors/mobs/npcs/HateSokoban.java index 165daabc..b1946958 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/HateSokoban.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/HateSokoban.java @@ -24,7 +24,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.HateSokobanSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.windows.WndHate; import com.hmdzl.spspd.windows.WndSaidBySun; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/HeXA.java b/java/com/hmdzl/spspd/actors/mobs/npcs/HeXA.java index 0354cb9b..f7b573b1 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/HeXA.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/HeXA.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.HeXASprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class HeXA extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Hmdzl001.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Hmdzl001.java index 07aa10c8..7ae21035 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Hmdzl001.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Hmdzl001.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.Hmdzl001Sprite; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/HoneyPoooot.java b/java/com/hmdzl/spspd/actors/mobs/npcs/HoneyPoooot.java index e7e2dc6f..8351e2b4 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/HoneyPoooot.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/HoneyPoooot.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.items.PotKey; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.HoneyPooootSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.windows.WndDream; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Ice13.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Ice13.java index bf002d31..84ee1b6f 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Ice13.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Ice13.java @@ -24,7 +24,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.Ice13Sprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.windows.WndSaidBySun; import com.hmdzl.spspd.windows.Wndice13; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Imp.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Imp.java index 7a18c060..33e5fa90 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Imp.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Imp.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.actors.mobs.Golem; import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.actors.mobs.Monk; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.quest.DwarfToken; import com.hmdzl.spspd.items.rings.Ring; diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/ImpShopkeeper.java b/java/com/hmdzl/spspd/actors/mobs/npcs/ImpShopkeeper.java index 09eea7b1..af24263b 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/ImpShopkeeper.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/ImpShopkeeper.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.sprites.ImpSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class ImpShopkeeper extends Shopkeeper { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Jinkeloid.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Jinkeloid.java index eadf6ec6..e0ada471 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Jinkeloid.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Jinkeloid.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.JinkeloidSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class Jinkeloid extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Juh9870.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Juh9870.java index 203f713a..c5863032 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Juh9870.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Juh9870.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.Juh9870Sprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class Juh9870 extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Kostis12345.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Kostis12345.java index cae1971e..543cec1c 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Kostis12345.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Kostis12345.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.Kostis12345Sprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class Kostis12345 extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/LaJi.java b/java/com/hmdzl/spspd/actors/mobs/npcs/LaJi.java index dc54a7c0..b27cd339 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/LaJi.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/LaJi.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.LaJiSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class LaJi extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Lery.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Lery.java index a40f1cf3..f88cb41d 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Lery.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Lery.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.LerySprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class Lery extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Locastan.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Locastan.java index 7a0d7dc3..dd01cb67 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Locastan.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Locastan.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.LocastanSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class Locastan extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Lyn.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Lyn.java index 441c6730..989621dd 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Lyn.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Lyn.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.LynSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class Lyn extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Lynn.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Lynn.java index fee6f80e..5d0849ea 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Lynn.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Lynn.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.LynnSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class Lynn extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/MemoryOfSand.java b/java/com/hmdzl/spspd/actors/mobs/npcs/MemoryOfSand.java index a99cb4da..9ed8bcbb 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/MemoryOfSand.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/MemoryOfSand.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.MemoryOfSandSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class MemoryOfSand extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Millilitre.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Millilitre.java index ef6058f5..32c88990 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Millilitre.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Millilitre.java @@ -24,7 +24,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.MillilitreSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.windows.WndIssic; import com.hmdzl.spspd.windows.WndSaidBySun; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/MirrorImage.java b/java/com/hmdzl/spspd/actors/mobs/npcs/MirrorImage.java index 36a04ddf..ca988302 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/MirrorImage.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/MirrorImage.java @@ -123,7 +123,7 @@ public CharSprite sprite() { @Override public boolean interact() { - if (!Dungeon.level.passable[pos]){ + if (!Level.passable[pos]){ return true; } if (this.buff(MagicalSleep.class) != null) { @@ -150,14 +150,9 @@ public boolean interact() { return true; } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add(Burning.class); + { + immunities.add(ToxicGas.class); + immunities.add(Burning.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Mtree.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Mtree.java index efd24f98..e5c63cbf 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Mtree.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Mtree.java @@ -80,7 +80,7 @@ protected Char chooseEnemy() { @Override public boolean interact() { - if (Dungeon.level.passable[pos] || Dungeon.hero.flying) { + if (Level.passable[pos] || Dungeon.hero.flying) { int curPos = pos; moveSprite(pos, Dungeon.hero.pos); @@ -97,15 +97,8 @@ public boolean interact() { } } - private static final HashSet> IMMUNITIES = new HashSet>(); - - static { - IMMUNITIES.add(Poison.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + { + immunities.add(Poison.class); } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/NYRDS.java b/java/com/hmdzl/spspd/actors/mobs/npcs/NYRDS.java index e3ad365d..66de85a3 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/NYRDS.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/NYRDS.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.NYRDSSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class NYRDS extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/NewPlayer.java b/java/com/hmdzl/spspd/actors/mobs/npcs/NewPlayer.java index e9271a77..aa1c0c9a 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/NewPlayer.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/NewPlayer.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.IceRabbitSprite; import com.hmdzl.spspd.sprites.NewPlayerSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class NewPlayer extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/NutPainter.java b/java/com/hmdzl/spspd/actors/mobs/npcs/NutPainter.java index 13968c0b..cb9f61cc 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/NutPainter.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/NutPainter.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.PainterSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class NutPainter extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/OldNewStwist.java b/java/com/hmdzl/spspd/actors/mobs/npcs/OldNewStwist.java index 3809fa1b..0c3c2f24 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/OldNewStwist.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/OldNewStwist.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.items.quest.GnollClothes; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.OldNewStwistSprite; import com.hmdzl.spspd.windows.WndONS; diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Omicronrg9.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Omicronrg9.java index 053fb4c8..43f21540 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Omicronrg9.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Omicronrg9.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.Omicronrg9Sprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class Omicronrg9 extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/OtilukeNPC.java b/java/com/hmdzl/spspd/actors/mobs/npcs/OtilukeNPC.java index 62cc96b0..978456a2 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/OtilukeNPC.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/OtilukeNPC.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.items.Amulet; import com.hmdzl.spspd.sprites.OtilukeNPCSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class OtilukeNPC extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/RENnpc.java b/java/com/hmdzl/spspd/actors/mobs/npcs/RENnpc.java index 1036ea57..2babcb53 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/RENnpc.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/RENnpc.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.items.ChallengeBook; import com.hmdzl.spspd.items.weapon.melee.special.Goei; import com.hmdzl.spspd.sprites.RENSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class RENnpc extends NPC { @@ -33,8 +33,8 @@ public class RENnpc extends NPC { { //name = "RENnpc"; spriteClass = RENSprite.class; - properties.add(Property.ELF);; - } + properties.add(Property.ELF); + } @Override protected boolean act() { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/RainTrainer.java b/java/com/hmdzl/spspd/actors/mobs/npcs/RainTrainer.java index f065783c..c7110ba5 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/RainTrainer.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/RainTrainer.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.RainSprite; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/RatKing.java b/java/com/hmdzl/spspd/actors/mobs/npcs/RatKing.java index 994c0fbe..04d04edc 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/RatKing.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/RatKing.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.items.Heap; import com.hmdzl.spspd.items.weapon.melee.special.Spork; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.RatKingSprite; public class RatKing extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/RatKingDen.java b/java/com/hmdzl/spspd/actors/mobs/npcs/RatKingDen.java index 96f17f4c..5359a958 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/RatKingDen.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/RatKingDen.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.RatKingSprite; public class RatKingDen extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Ravenwolf.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Ravenwolf.java index c2ea670d..14b58593 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Ravenwolf.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Ravenwolf.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.RavenwolfSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class Ravenwolf extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Rustyblade.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Rustyblade.java index 8aa6b6ed..0e589187 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Rustyblade.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Rustyblade.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.RustybladeSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class Rustyblade extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/SFB.java b/java/com/hmdzl/spspd/actors/mobs/npcs/SFB.java index a9affaa6..0d354284 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/SFB.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/SFB.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.SFBSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class SFB extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/SP931.java b/java/com/hmdzl/spspd/actors/mobs/npcs/SP931.java index c8ba20a6..dcb52ec4 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/SP931.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/SP931.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.SP931Sprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class SP931 extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/SadSaltan.java b/java/com/hmdzl/spspd/actors/mobs/npcs/SadSaltan.java index 731cbb57..987b308a 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/SadSaltan.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/SadSaltan.java @@ -5,7 +5,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.SadSaltanSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class SadSaltan extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/SaidbySun.java b/java/com/hmdzl/spspd/actors/mobs/npcs/SaidbySun.java index a7a9cc1a..9600fdfc 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/SaidbySun.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/SaidbySun.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.SaidbySunSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.windows.WndHotel; import com.hmdzl.spspd.windows.WndSadGhost; import com.hmdzl.spspd.windows.WndSaidBySun; diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Sheep.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Sheep.java index e577aeb6..eba04d9f 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Sheep.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Sheep.java @@ -20,7 +20,7 @@ */ package com.hmdzl.spspd.actors.mobs.npcs; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.SheepSprite; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/SheepSokobanStop.java b/java/com/hmdzl/spspd/actors/mobs/npcs/SheepSokobanStop.java index 60deef1d..375102de 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/SheepSokobanStop.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/SheepSokobanStop.java @@ -19,7 +19,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.SheepSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class SheepSokobanStop extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Shopkeeper.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Shopkeeper.java index 64996245..2e5f887d 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Shopkeeper.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Shopkeeper.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.sprites.ShopkeeperSprite; import com.hmdzl.spspd.windows.WndBag; import com.hmdzl.spspd.windows.WndTradeItem; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class Shopkeeper extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Shower.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Shower.java index 04bb78bb..7e88cafb 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Shower.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Shower.java @@ -24,7 +24,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ShowerSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.windows.WndSaidBySun; import com.hmdzl.spspd.windows.WndShower; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/StormAndRain.java b/java/com/hmdzl/spspd/actors/mobs/npcs/StormAndRain.java index 92fddcab..fb92665a 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/StormAndRain.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/StormAndRain.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.StormAndRainSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class StormAndRain extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Tempest102.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Tempest102.java index be700506..175ee32c 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Tempest102.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Tempest102.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.Tempest102Sprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class Tempest102 extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/ThankList.java b/java/com/hmdzl/spspd/actors/mobs/npcs/ThankList.java index 612375c3..0c08a9b9 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/ThankList.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/ThankList.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ThankListSprite; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Tinkerer1.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Tinkerer1.java index 94e54913..6d83e0c9 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Tinkerer1.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Tinkerer1.java @@ -28,7 +28,7 @@ import com.hmdzl.spspd.windows.WndQuest; import com.hmdzl.spspd.windows.WndTinkerer; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class Tinkerer1 extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Tinkerer2.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Tinkerer2.java index a198169b..0a093155 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Tinkerer2.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Tinkerer2.java @@ -28,7 +28,7 @@ import com.hmdzl.spspd.windows.WndQuest; import com.hmdzl.spspd.windows.WndTinkerer2; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class Tinkerer2 extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Tinkerer3.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Tinkerer3.java index 74982ad8..b660e7eb 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Tinkerer3.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Tinkerer3.java @@ -28,7 +28,7 @@ import com.hmdzl.spspd.windows.WndQuest; import com.hmdzl.spspd.windows.WndTinkerer3; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class Tinkerer3 extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Tinkerer4.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Tinkerer4.java index 4ad6ef7b..0479dde4 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Tinkerer4.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Tinkerer4.java @@ -24,7 +24,7 @@ import com.hmdzl.spspd.sprites.NoodlemireSprite; import com.hmdzl.spspd.windows.WndQuest; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Bundle; public class Tinkerer4 extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Tinkerer5.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Tinkerer5.java index 5ccb5ed8..a318a7b3 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Tinkerer5.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Tinkerer5.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.sprites.Xavier251998Sprite; import com.hmdzl.spspd.windows.WndQuest; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Bundle; import com.watabou.utils.Random; @@ -38,7 +38,7 @@ public class Tinkerer5 extends NPC { } private static final String TXT_DUNGEON = "We used to mine stone ore out of the mines. " - +"But now a powerful dargon ruin the enter and watch in there." + +"But now a powerful dragon ruin the enter and watch in there." +"Be careful if you enter its space."; diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/TypedScroll.java b/java/com/hmdzl/spspd/actors/mobs/npcs/TypedScroll.java index 9ca7e9e6..c34aef94 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/TypedScroll.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/TypedScroll.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.TypedScrollSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class TypedScroll extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Udawos.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Udawos.java index f344b58e..be29a978 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Udawos.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Udawos.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.UdawosSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class Udawos extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/UncleS.java b/java/com/hmdzl/spspd/actors/mobs/npcs/UncleS.java index c58a981f..2377e896 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/UncleS.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/UncleS.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.UncleSSprite; public class UncleS extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Wandmaker.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Wandmaker.java index 4c087560..37a0af7b 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Wandmaker.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Wandmaker.java @@ -17,8 +17,6 @@ */ package com.hmdzl.spspd.actors.mobs.npcs; -import java.util.ArrayList; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.Journal; import com.hmdzl.spspd.actors.Actor; @@ -29,31 +27,32 @@ import com.hmdzl.spspd.items.quest.CorpseDust; import com.hmdzl.spspd.items.wands.Wand; import com.hmdzl.spspd.items.wands.WandOfAcid; -import com.hmdzl.spspd.items.wands.WandOfCharm; -import com.hmdzl.spspd.items.wands.WandOfFlock; -import com.hmdzl.spspd.items.wands.WandOfMagicMissile; -import com.hmdzl.spspd.items.wands.WandOfMeteorite; import com.hmdzl.spspd.items.wands.WandOfBlood; +import com.hmdzl.spspd.items.wands.WandOfCharm; import com.hmdzl.spspd.items.wands.WandOfDisintegration; import com.hmdzl.spspd.items.wands.WandOfFirebolt; -import com.hmdzl.spspd.items.wands.WandOfLightning; -import com.hmdzl.spspd.items.wands.WandOfPoison; -import com.hmdzl.spspd.items.wands.WandOfLight; -import com.hmdzl.spspd.items.wands.WandOfFreeze; +import com.hmdzl.spspd.items.wands.WandOfFlock; import com.hmdzl.spspd.items.wands.WandOfFlow; +import com.hmdzl.spspd.items.wands.WandOfFreeze; +import com.hmdzl.spspd.items.wands.WandOfLight; +import com.hmdzl.spspd.items.wands.WandOfLightning; +import com.hmdzl.spspd.items.wands.WandOfMagicMissile; +import com.hmdzl.spspd.items.wands.WandOfMeteorite; +import com.hmdzl.spspd.items.wands.WandOfSwamp; import com.hmdzl.spspd.items.wands.WandOfTCloud; import com.hmdzl.spspd.levels.PrisonLevel; import com.hmdzl.spspd.levels.Room; import com.hmdzl.spspd.levels.Terrain; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Rotberry; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.WandmakerSprite; - import com.hmdzl.spspd.windows.WndQuest; import com.hmdzl.spspd.windows.WndWandmaker; import com.watabou.utils.Bundle; import com.watabou.utils.Random; -import com.hmdzl.spspd.messages.Messages; + +import java.util.ArrayList; public class Wandmaker extends NPC { @@ -251,7 +250,7 @@ public static void spawn(PrisonLevel level, Room room) { wand2 = new WandOfFlock(); break; case 2: - wand2 = new WandOfPoison(); + wand2 = new WandOfSwamp(); break; case 3: wand2 = new WandOfMeteorite(); diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/Watabou.java b/java/com/hmdzl/spspd/actors/mobs/npcs/Watabou.java index 1e18198a..843b0c15 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/Watabou.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/Watabou.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.sprites.WatabouSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class Watabou extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/WhiteGhost.java b/java/com/hmdzl/spspd/actors/mobs/npcs/WhiteGhost.java index b88ab274..66e4bbd6 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/WhiteGhost.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/WhiteGhost.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.WhiteGhostSprite; public class WhiteGhost extends NPC { diff --git a/java/com/hmdzl/spspd/actors/mobs/npcs/XixiZero.java b/java/com/hmdzl/spspd/actors/mobs/npcs/XixiZero.java index c948e12a..beb67068 100644 --- a/java/com/hmdzl/spspd/actors/mobs/npcs/XixiZero.java +++ b/java/com/hmdzl/spspd/actors/mobs/npcs/XixiZero.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.XixiZeroSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.windows.WndEgoalInfo; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/actors/mobs/pets/BlueDragon.java b/java/com/hmdzl/spspd/actors/mobs/pets/BlueDragon.java index 7e1aa374..34a475ed 100644 --- a/java/com/hmdzl/spspd/actors/mobs/pets/BlueDragon.java +++ b/java/com/hmdzl/spspd/actors/mobs/pets/BlueDragon.java @@ -24,7 +24,7 @@ import com.hmdzl.spspd.effects.particles.SnowParticle; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.BlueDragonSprite; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.utils.GLog; @@ -105,7 +105,7 @@ protected boolean doAttack(Char enemy) { boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos]; if (visible) { - ((BlueDragonSprite) sprite).zap(enemy.pos); + sprite.zap(enemy.pos); } else { zap(); } diff --git a/java/com/hmdzl/spspd/actors/mobs/pets/BugDragon.java b/java/com/hmdzl/spspd/actors/mobs/pets/BugDragon.java index dc0640d1..b732e9d3 100644 --- a/java/com/hmdzl/spspd/actors/mobs/pets/BugDragon.java +++ b/java/com/hmdzl/spspd/actors/mobs/pets/BugDragon.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.BugDragonSprite; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.utils.GLog; @@ -100,7 +100,7 @@ protected boolean doAttack(Char enemy) { boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos]; if (visible) { - ((BugDragonSprite) sprite).zap(enemy.pos); + sprite.zap(enemy.pos); } else { zap(); } diff --git a/java/com/hmdzl/spspd/actors/mobs/pets/Bunny.java b/java/com/hmdzl/spspd/actors/mobs/pets/Bunny.java index 9ada21ff..78dbcc39 100644 --- a/java/com/hmdzl/spspd/actors/mobs/pets/Bunny.java +++ b/java/com/hmdzl/spspd/actors/mobs/pets/Bunny.java @@ -17,7 +17,7 @@ */ package com.hmdzl.spspd.actors.mobs.pets; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.BunnySprite; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/actors/mobs/pets/CocoCat.java b/java/com/hmdzl/spspd/actors/mobs/pets/CocoCat.java index 796e5fb4..f90cabb8 100644 --- a/java/com/hmdzl/spspd/actors/mobs/pets/CocoCat.java +++ b/java/com/hmdzl/spspd/actors/mobs/pets/CocoCat.java @@ -20,11 +20,12 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.items.bombs.BuildBomb; +import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.sprites.CoconutSprite; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Random; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class CocoCat extends PET { @@ -84,7 +85,7 @@ protected boolean act() { @Override protected boolean canAttack(Char enemy) { - return Dungeon.level.distance( pos, enemy.pos ) <= 4 ; + return Level.distance( pos, enemy.pos ) <= 4 ; } diff --git a/java/com/hmdzl/spspd/actors/mobs/pets/DogPet.java b/java/com/hmdzl/spspd/actors/mobs/pets/DogPet.java index 7716d1b6..57434db1 100644 --- a/java/com/hmdzl/spspd/actors/mobs/pets/DogPet.java +++ b/java/com/hmdzl/spspd/actors/mobs/pets/DogPet.java @@ -18,16 +18,15 @@ package com.hmdzl.spspd.actors.mobs.pets; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.actors.buffs.ShieldArmor; +import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.sprites.DogPetSprite; -import com.hmdzl.spspd.sprites.NewSnakeSprite; -import com.hmdzl.spspd.sprites.SnakeSprite; import com.watabou.utils.Bundle; import com.watabou.utils.Random; +import static com.hmdzl.spspd.Dungeon.hero; + public class DogPet extends PET { { @@ -63,21 +62,15 @@ public int damageRoll() { } @Override - protected boolean act() { - - + protected boolean act() { + if (Level.adjacent(pos, Dungeon.hero.pos)) { + if ((hero.buff(ShieldArmor.class) == null)) { + Buff.affect(hero, ShieldArmor.class).level(level * 2); + } + } return super.act(); } - @Override - public int attackProc(Char enemy, int damage) { - if (Random.Int(8) == 0) { - Buff.affect(Dungeon.hero,ShieldArmor.class).level(level*2); - } - - return damage; - } - /* @Override protected Char chooseEnemy() { diff --git a/java/com/hmdzl/spspd/actors/mobs/pets/Fairy.java b/java/com/hmdzl/spspd/actors/mobs/pets/Fairy.java deleted file mode 100644 index 20ef8c6c..00000000 --- a/java/com/hmdzl/spspd/actors/mobs/pets/Fairy.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Pixel Dungeon - * Copyright (C) 2012-2014 Oleg Dolya - * - * 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 - */ -package com.hmdzl.spspd.actors.mobs.pets; - -import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.effects.particles.SparkParticle; -import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; -import com.hmdzl.spspd.sprites.CharSprite; -import com.hmdzl.spspd.sprites.FairySprite; -import com.hmdzl.spspd.utils.GLog; - -import com.watabou.noosa.Camera; -import com.watabou.utils.Callback; -import com.watabou.utils.Random; - -public class Fairy extends PET implements Callback{ - - { - //name = "fairy"; - spriteClass = FairySprite.class; - //flying=true; - state = HUNTING; - level = 1; - type = 10; - cooldown=500; - - properties.add(Property.UNKNOW); - } - private static final float TIME_TO_ZAP = 2f; - private static final String TXT_LIGHTNING_KILLED = "%s's lightning bolt killed you..."; - - @Override - protected float attackDelay() { - return 0.5f; - } - - //Frames 0,2 are idle, 0,1,2 are moving, 0,3,4,1 are attack and 5,6,7 are for death - - @Override - public void adjustStats(int level) { - this.level = level; - HT = 70 + level*10; - evadeSkill = 5 + level; - } - - - - - @Override - public int damageRoll() { - return Random.NormalIntRange((5+level), (5+level*3)); - } - - @Override - protected boolean act() { - - if (cooldown>0){ - cooldown=Math.max(cooldown-(1+9*((level-1)/19)),0); - if (cooldown==0) {GLog.w(Messages.get(this,"ready"));} - } - - if (cooldown==0 && Level.adjacent(pos, Dungeon.hero.pos) && Random.Int(2)==0){ - - int bless = Random.Int(1+9*((level-1)/19)); - - Dungeon.hero.sprite.emitter().start(Speck.factory(Speck.HEALING), 0.4f, 1); - Dungeon.hero.sprite.showStatus(CharSprite.POSITIVE,Integer.toString(bless)); - - Dungeon.hero.HP = Math.min(Dungeon.hero.HT, Dungeon.hero.HP+bless); - } - - - - return super.act(); - } - - - @Override - protected boolean canAttack(Char enemy) { - return new Ballistica( pos, enemy.pos, Ballistica.MAGIC_BOLT).collisionPos == enemy.pos; - - } - - - - @Override - protected boolean doAttack(Char enemy) { - - if (Level.adjacent(pos, enemy.pos)) { - - return super.doAttack(enemy); - - } else { - - boolean visible = Level.fieldOfView[pos] - || Level.fieldOfView[enemy.pos]; - if (visible) { - ((FairySprite) sprite).zap(enemy.pos); - } - - spend(TIME_TO_ZAP); - cooldown=500; - - if (hit(this, enemy, true)) { - int dmg = damageRoll()*2; - if (Level.water[enemy.pos] && !enemy.flying) { - dmg *= 1.5f; - } - enemy.damage(dmg, this); - - enemy.sprite.centerEmitter().burst(SparkParticle.FACTORY, 3); - enemy.sprite.flash(); - - if (enemy == Dungeon.hero) { - - Camera.main.shake(2, 0.3f); - - if (!enemy.isAlive()) { - Dungeon.fail( Messages.format(ResultDescriptions.NAMED)); - //GLog.n(TXT_LIGHTNING_KILLED, name); - } - } - } else { - enemy.sprite - .showStatus(CharSprite.NEUTRAL, enemy.defenseVerb()); - } - - return !visible; - } - } - - - - @Override - public void call() { - next(); - } - -} \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/mobs/pets/GoldDragon.java b/java/com/hmdzl/spspd/actors/mobs/pets/GoldDragon.java index 15306959..03dbccf7 100644 --- a/java/com/hmdzl/spspd/actors/mobs/pets/GoldDragon.java +++ b/java/com/hmdzl/spspd/actors/mobs/pets/GoldDragon.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.GoldDragonSprite; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.utils.GLog; @@ -100,7 +100,7 @@ protected boolean doAttack(Char enemy) { boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos]; if (visible) { - ((GoldDragonSprite) sprite).zap(enemy.pos); + sprite.zap(enemy.pos); } else { zap(); } diff --git a/java/com/hmdzl/spspd/actors/mobs/pets/GreenDragon.java b/java/com/hmdzl/spspd/actors/mobs/pets/GreenDragon.java index 882887bf..3c9cac92 100644 --- a/java/com/hmdzl/spspd/actors/mobs/pets/GreenDragon.java +++ b/java/com/hmdzl/spspd/actors/mobs/pets/GreenDragon.java @@ -18,16 +18,14 @@ package com.hmdzl.spspd.actors.mobs.pets; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.effects.particles.SparkParticle; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.GreenDragonSprite; import com.hmdzl.spspd.utils.GLog; - import com.watabou.noosa.Camera; import com.watabou.utils.Callback; import com.watabou.utils.Random; @@ -111,7 +109,7 @@ protected boolean doAttack(Char enemy) { boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos]; if (visible) { - ((GreenDragonSprite) sprite).zap(enemy.pos); + sprite.zap(enemy.pos); } spend(TIME_TO_ZAP); @@ -132,7 +130,7 @@ protected boolean doAttack(Char enemy) { Camera.main.shake(2, 0.3f); if (!enemy.isAlive()) { - Dungeon.fail(Messages.format(ResultDescriptions.NAMED)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(TXT_LIGHTNING_KILLED, name); } } diff --git a/java/com/hmdzl/spspd/actors/mobs/pets/LeryFire.java b/java/com/hmdzl/spspd/actors/mobs/pets/LeryFire.java index e1cd1efe..16c1c26e 100644 --- a/java/com/hmdzl/spspd/actors/mobs/pets/LeryFire.java +++ b/java/com/hmdzl/spspd/actors/mobs/pets/LeryFire.java @@ -18,7 +18,6 @@ package com.hmdzl.spspd.actors.mobs.pets; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Blob; import com.hmdzl.spspd.actors.blobs.Fire; @@ -30,10 +29,10 @@ import com.hmdzl.spspd.effects.particles.SparkParticle; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; -import com.hmdzl.spspd.sprites.LerySprite; import com.hmdzl.spspd.sprites.CharSprite; +import com.hmdzl.spspd.sprites.LerySprite; import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.Camera; import com.watabou.utils.Callback; @@ -109,7 +108,7 @@ protected boolean doAttack(Char enemy) { boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos]; if (visible) { - ((LerySprite) sprite).zap(enemy.pos); + sprite.zap(enemy.pos); } else { zap(); } @@ -140,8 +139,8 @@ private void zap() { int dmg = damageRoll()*2; enemy.damage(dmg, this); - Buff.affect(enemy,Poison.class).set(Poison.durationFactor(enemy) * (level + 1)); - + Buff.affect(enemy,Poison.class).set(level + 1); + } else { enemy.sprite.showStatus(CharSprite.NEUTRAL, enemy.defenseVerb()); } @@ -185,7 +184,7 @@ private void zap() { Camera.main.shake(2, 0.3f); if (!enemy.isAlive()) { - Dungeon.fail(Messages.format(ResultDescriptions.NAMED)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(TXT_LIGHTNING_KILLED, name); } } diff --git a/java/com/hmdzl/spspd/actors/mobs/pets/LightDragon.java b/java/com/hmdzl/spspd/actors/mobs/pets/LightDragon.java index 53e93c2e..3e3c4c35 100644 --- a/java/com/hmdzl/spspd/actors/mobs/pets/LightDragon.java +++ b/java/com/hmdzl/spspd/actors/mobs/pets/LightDragon.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.LightDragonSprite; import com.hmdzl.spspd.utils.GLog; @@ -91,7 +91,7 @@ protected boolean canAttack(Char enemy) { public int attackProc(Char enemy, int damage) { if (cooldown == 0) { cooldown=500; - enemy.damage((int)(enemy.HP/4),this); + enemy.damage(enemy.HP/4,this); Buff.affect(enemy, Blindness.class, 10f); } return damage; diff --git a/java/com/hmdzl/spspd/actors/mobs/pets/PET.java b/java/com/hmdzl/spspd/actors/mobs/pets/PET.java index 7fb49ede..52b553e1 100644 --- a/java/com/hmdzl/spspd/actors/mobs/pets/PET.java +++ b/java/com/hmdzl/spspd/actors/mobs/pets/PET.java @@ -36,7 +36,7 @@ import com.hmdzl.spspd.items.Heap; import com.hmdzl.spspd.items.scrolls.ScrollOfPsionicBlast; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Bundle; import com.watabou.utils.Random; @@ -173,7 +173,7 @@ public void damage(int dmg, Object src) { public void die(Object cause) { super.die(cause); Dungeon.hero.haspet=false; - Statistics.petDies++; + //Statistics.petDies++; GLog.n(Messages.get(this,"pet_died")); } @@ -186,14 +186,14 @@ protected Char chooseEnemy() { if (enemy == null || !enemy.isAlive() || !Dungeon.level.mobs.contains(enemy) - || Dungeon.level.distance(enemy.pos, Dungeon.hero.pos) > 8 + || Level.distance(enemy.pos, Dungeon.hero.pos) > 8 || state == WANDERING) { HashSet enemies = new HashSet<>(); for (Mob mob : Dungeon.level.mobs) { if (mob.hostile && Level.fieldOfView[mob.pos] - && Dungeon.level.distance(mob.pos, Dungeon.hero.pos) <= 8 + && Level.distance(mob.pos, Dungeon.hero.pos) <= 8 && mob.state != mob.PASSIVE) { enemies.add(mob); } @@ -203,7 +203,7 @@ protected Char chooseEnemy() { Char closest = null; for (Char curr : enemies){ if (closest == null - || Dungeon.level.distance(pos, curr.pos) < Dungeon.level.distance(pos, closest.pos)){ + || Level.distance(pos, curr.pos) < Level.distance(pos, closest.pos)){ closest = curr; } } @@ -276,7 +276,7 @@ public boolean interact() { - if (!Dungeon.level.passable[pos]){ + if (!Level.passable[pos]){ return true; } @@ -297,21 +297,15 @@ public boolean interact() { } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add( ToxicGas.class ); - IMMUNITIES.add( VenomGas.class ); - IMMUNITIES.add( Burning.class ); - IMMUNITIES.add( ScrollOfPsionicBlast.class ); - IMMUNITIES.add( CorruptGas.class ); - IMMUNITIES.add( NmGas.class ); + { + immunities.add( ToxicGas.class ); + immunities.add( VenomGas.class ); + immunities.add( Burning.class ); + immunities.add( ScrollOfPsionicBlast.class ); + immunities.add( CorruptGas.class ); + immunities.add( NmGas.class ); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } - /*private class Wandering extends Mob.Wandering { @Override diff --git a/java/com/hmdzl/spspd/actors/mobs/pets/RedDragon.java b/java/com/hmdzl/spspd/actors/mobs/pets/RedDragon.java index 4109409f..e069e5e2 100644 --- a/java/com/hmdzl/spspd/actors/mobs/pets/RedDragon.java +++ b/java/com/hmdzl/spspd/actors/mobs/pets/RedDragon.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.blobs.Fire; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.RedDragonSprite; @@ -100,7 +100,7 @@ protected boolean doAttack(Char enemy) { boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos]; if (visible) { - ((RedDragonSprite) sprite).zap(enemy.pos); + sprite.zap(enemy.pos); } else { zap(); } diff --git a/java/com/hmdzl/spspd/actors/mobs/pets/Scorpion.java b/java/com/hmdzl/spspd/actors/mobs/pets/Scorpion.java index 33739eda..12c2b484 100644 --- a/java/com/hmdzl/spspd/actors/mobs/pets/Scorpion.java +++ b/java/com/hmdzl/spspd/actors/mobs/pets/Scorpion.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Ooze; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.ScorpionSprite; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/actors/mobs/pets/ShadowDragon.java b/java/com/hmdzl/spspd/actors/mobs/pets/ShadowDragon.java index d462ce60..1bb7a20b 100644 --- a/java/com/hmdzl/spspd/actors/mobs/pets/ShadowDragon.java +++ b/java/com/hmdzl/spspd/actors/mobs/pets/ShadowDragon.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ShadowDragonSprite; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.utils.GLog; @@ -101,7 +101,7 @@ protected boolean doAttack(Char enemy) { boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos]; if (visible) { - ((ShadowDragonSprite) sprite).zap(enemy.pos); + sprite.zap(enemy.pos); } else { zap(); } diff --git a/java/com/hmdzl/spspd/actors/mobs/pets/Snake.java b/java/com/hmdzl/spspd/actors/mobs/pets/Snake.java index 477f597f..ecd05d4e 100644 --- a/java/com/hmdzl/spspd/actors/mobs/pets/Snake.java +++ b/java/com/hmdzl/spspd/actors/mobs/pets/Snake.java @@ -21,7 +21,6 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.sprites.NewSnakeSprite; -import com.hmdzl.spspd.sprites.SnakeSprite; import com.watabou.utils.Bundle; import com.watabou.utils.Random; @@ -70,7 +69,7 @@ protected boolean act() { public int attackProc(Char enemy, int damage) { if (Random.Int(10) == 0) { Buff.affect(enemy, Poison.class).set( - Random.Int(5, 7) * Poison.durationFactor(enemy)); + Random.Int(5, 7)); } return damage; diff --git a/java/com/hmdzl/spspd/actors/mobs/pets/Spider.java b/java/com/hmdzl/spspd/actors/mobs/pets/Spider.java index 27719b7e..52ab9f67 100644 --- a/java/com/hmdzl/spspd/actors/mobs/pets/Spider.java +++ b/java/com/hmdzl/spspd/actors/mobs/pets/Spider.java @@ -22,10 +22,9 @@ import com.hmdzl.spspd.actors.blobs.Web; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.NewSpinnerSprite; -import com.hmdzl.spspd.sprites.SpiderSprite; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Random; @@ -75,11 +74,11 @@ protected boolean act() { @Override public int attackProc(Char enemy, int damage) { if (cooldown>0 && Random.Int(10) == 0) { - Buff.affect(enemy, Poison.class).set(Random.Int(7, 9) * Poison.durationFactor(enemy)); + Buff.affect(enemy, Poison.class).set(Random.Int(7, 9) ); GameScene.add(Blob.seed(enemy.pos, Random.Int(5, 7), Web.class)); } if (cooldown==0) { - Buff.affect(enemy, Poison.class).set(Random.Int(10, 25) * Poison.durationFactor(enemy)); + Buff.affect(enemy, Poison.class).set(Random.Int(10, 25)); GameScene.add(Blob.seed(enemy.pos, Random.Int(8, 9), Web.class)); damage+=damage; cooldown=500; diff --git a/java/com/hmdzl/spspd/actors/mobs/pets/SugarplumFairy.java b/java/com/hmdzl/spspd/actors/mobs/pets/SugarplumFairy.java deleted file mode 100644 index d3eed201..00000000 --- a/java/com/hmdzl/spspd/actors/mobs/pets/SugarplumFairy.java +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Pixel Dungeon - * Copyright (C) 2012-2014 Oleg Dolya - * - * 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 - */ -package com.hmdzl.spspd.actors.mobs.pets; - -import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.effects.particles.SparkParticle; -import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; -import com.hmdzl.spspd.sprites.CharSprite; -import com.hmdzl.spspd.sprites.SugarplumFairySprite; -import com.hmdzl.spspd.utils.GLog; - -import com.watabou.noosa.Camera; -import com.watabou.utils.Callback; -import com.watabou.utils.Random; - -public class SugarplumFairy extends PET implements Callback{ - - { - //name = "sugarplum fairy"; - spriteClass = SugarplumFairySprite.class; - //flying=true; - state = HUNTING; - level = 1; - type = 11; - cooldown=500; - - properties.add(Property.UNKNOW); - } - private static final float TIME_TO_ZAP = 2f; - - @Override - protected float attackDelay() { - return 0.5f; - } - - //Frames 0,2 are idle, 0,1,2 are moving, 0,3,4,1 are attack and 5,6,7 are for death - - - - - - @Override - public void adjustStats(int level) { - this.level = level; - HT = 70 + level*10; - evadeSkill = 5 + level; - } - - - - - @Override - public int damageRoll() { - return Random.NormalIntRange(evadeSkill/2, evadeSkill); - } - - @Override - protected boolean act() { - - if (cooldown>0){ - cooldown=Math.max(cooldown-(1+9*((level-1)/19)),0); - if (cooldown==0) {GLog.w(Messages.get(this,"ready"));} - } - - if (cooldown==0 && Level.adjacent(pos, Dungeon.hero.pos) && Random.Int(1)==0){ - - int bless = Random.Int(1+9*((level-1)/19)); - - Dungeon.hero.sprite.emitter().start(Speck.factory(Speck.HEALING), 0.4f, 1); - Dungeon.hero.sprite.showStatus(CharSprite.POSITIVE,Integer.toString(bless)); - - Dungeon.hero.HP = Math.min(Dungeon.hero.HT, Dungeon.hero.HP+bless); - - if (Random.Int(20)==0){ - Dungeon.hero.HT += 1; - Dungeon.hero.sprite.showStatus(CharSprite.POSITIVE, Messages.get(this,"ht")); - cooldown=500; - } - } - - - - return super.act(); - } - - - @Override - protected boolean canAttack(Char enemy) { - return new Ballistica( pos, enemy.pos, Ballistica.MAGIC_BOLT).collisionPos == enemy.pos; - - } - - - - @Override - protected boolean doAttack(Char enemy) { - - if (Level.adjacent(pos, enemy.pos)) { - - return super.doAttack(enemy); - - } else { - - boolean visible = Level.fieldOfView[pos] - || Level.fieldOfView[enemy.pos]; - if (visible) { - ((SugarplumFairySprite) sprite).zap(enemy.pos); - } - - spend(TIME_TO_ZAP); - cooldown=500; - - if (hit(this, enemy, true)) { - int dmg = damageRoll()*2; - if (Level.water[enemy.pos] && !enemy.flying) { - dmg *= 1.5f; - } - enemy.damage(dmg, this); - - enemy.sprite.centerEmitter().burst(SparkParticle.FACTORY, 3); - enemy.sprite.flash(); - - if (enemy == Dungeon.hero) { - - Camera.main.shake(2, 0.3f); - - if (!enemy.isAlive()) { - Dungeon.fail( Messages.format(ResultDescriptions.NAMED)); - //GLog.n(TXT_LIGHTNING_KILLED, name); - } - } - } else { - enemy.sprite - .showStatus(CharSprite.NEUTRAL, enemy.defenseVerb()); - } - - return !visible; - } - } - - - - @Override - public void call() { - next(); - } -} \ No newline at end of file diff --git a/java/com/hmdzl/spspd/actors/mobs/pets/Velocirooster.java b/java/com/hmdzl/spspd/actors/mobs/pets/Velocirooster.java index b2389930..2234e4ff 100644 --- a/java/com/hmdzl/spspd/actors/mobs/pets/Velocirooster.java +++ b/java/com/hmdzl/spspd/actors/mobs/pets/Velocirooster.java @@ -17,7 +17,7 @@ */ package com.hmdzl.spspd.actors.mobs.pets; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.VelociroosterSprite; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/actors/mobs/pets/VioletDragon.java b/java/com/hmdzl/spspd/actors/mobs/pets/VioletDragon.java index 0b35f190..956cd226 100644 --- a/java/com/hmdzl/spspd/actors/mobs/pets/VioletDragon.java +++ b/java/com/hmdzl/spspd/actors/mobs/pets/VioletDragon.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.VioletDragonSprite; import com.hmdzl.spspd.utils.GLog; @@ -106,7 +106,7 @@ protected boolean doAttack(Char enemy) { boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos]; if (visible) { - ((VioletDragonSprite) sprite).zap(enemy.pos); + sprite.zap(enemy.pos); } else { zap(); } @@ -126,7 +126,7 @@ private void zap() { int dmg = damageRoll()*2; enemy.damage(dmg, this); - Buff.affect(enemy,Poison.class).set(Poison.durationFactor(enemy) * (level + 1)); + Buff.affect(enemy,Poison.class).set(level + 1); } else { enemy.sprite.showStatus(CharSprite.NEUTRAL, enemy.defenseVerb()); diff --git a/java/com/hmdzl/spspd/effects/BadgeBanner.java b/java/com/hmdzl/spspd/effects/BadgeBanner.java index ad85f557..39ee1e8f 100644 --- a/java/com/hmdzl/spspd/effects/BadgeBanner.java +++ b/java/com/hmdzl/spspd/effects/BadgeBanner.java @@ -28,9 +28,9 @@ public class BadgeBanner extends Image { private enum State { FADE_IN, STATIC, FADE_OUT - }; + } - private State state; + private State state; private static final float DEFAULT_SCALE = 3; diff --git a/java/com/hmdzl/spspd/effects/BannerSprites.java b/java/com/hmdzl/spspd/effects/BannerSprites.java index 875e27c3..eebff4c8 100644 --- a/java/com/hmdzl/spspd/effects/BannerSprites.java +++ b/java/com/hmdzl/spspd/effects/BannerSprites.java @@ -24,9 +24,9 @@ public class BannerSprites { public enum Type { PIXEL_DUNGEON, BOSS_SLAIN, GAME_OVER, SELECT_YOUR_HERO, PIXEL_DUNGEON_SIGNS, CLEARED - }; + } - public static Image get(Type type) { + public static Image get(Type type) { Image icon = new Image(Assets.BANNERS); switch (type) { case PIXEL_DUNGEON: diff --git a/java/com/hmdzl/spspd/effects/DeathRay.java b/java/com/hmdzl/spspd/effects/DeathRay.java deleted file mode 100644 index e4082dfa..00000000 --- a/java/com/hmdzl/spspd/effects/DeathRay.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Pixel Dungeon - * Copyright (C) 2012-2014 Oleg Dolya - * - * 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 - */ -package com.hmdzl.spspd.effects; - -import javax.microedition.khronos.opengles.GL10; - -import android.opengl.GLES20; - -import com.hmdzl.spspd.Assets; -import com.watabou.noosa.Game; -import com.watabou.noosa.Image; -import com.watabou.noosa.audio.Sample; -import com.watabou.utils.PointF; - -public class DeathRay extends Image { - - private static final double A = 180 / Math.PI; - - private static final float DURATION = 0.5f; - - private float timeLeft; - - public DeathRay(PointF s, PointF e) { - super(Effects.get(Effects.Type.DEATH_RAY)); - - origin.set(0, height / 2); - - x = s.x - origin.x; - y = s.y - origin.y; - - float dx = e.x - s.x; - float dy = e.y - s.y; - angle = (float) (Math.atan2(dy, dx) * A); - scale.x = (float) Math.sqrt(dx * dx + dy * dy) / width; - - Sample.INSTANCE.play(Assets.SND_RAY); - - timeLeft = DURATION; - } - - @Override - public void update() { - super.update(); - - float p = timeLeft / DURATION; - alpha(p); - scale.set(scale.x, p); - - if ((timeLeft -= Game.elapsed) <= 0) { - killAndErase(); - } - } - - @Override - public void draw() { - GLES20.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE); - super.draw(); - GLES20.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); - } -} diff --git a/java/com/hmdzl/spspd/effects/Effects.java b/java/com/hmdzl/spspd/effects/Effects.java index c7efe8d9..052c3640 100644 --- a/java/com/hmdzl/spspd/effects/Effects.java +++ b/java/com/hmdzl/spspd/effects/Effects.java @@ -32,9 +32,9 @@ public enum Type { LIGHT_RAY, HEALTH_RAY, WATER_RAY - }; - - public static Image get( Type type ) { + } + + public static Image get( Type type ) { Image icon = new Image( Assets.EFFECTS ); switch (type) { case RIPPLE: diff --git a/java/com/hmdzl/spspd/effects/MagicMissile.java b/java/com/hmdzl/spspd/effects/MagicMissile.java index b13c4cf1..6333a163 100644 --- a/java/com/hmdzl/spspd/effects/MagicMissile.java +++ b/java/com/hmdzl/spspd/effects/MagicMissile.java @@ -217,8 +217,8 @@ public void emit(Emitter emitter, int index, float x, float y) { @Override public boolean lightMode() { return true; - }; - }; + } + }; public MagicParticle() { super(); @@ -291,8 +291,8 @@ public void emit(Emitter emitter, int index, float x, float y) { @Override public boolean lightMode() { return true; - }; - }; + } + }; public WhiteParticle() { super(); @@ -333,8 +333,8 @@ public void emit(Emitter emitter, int index, float x, float y) { @Override public boolean lightMode() { return true; - }; - }; + } + }; public SlowParticle() { super(); @@ -418,8 +418,8 @@ public void emit(Emitter emitter, int index, float x, float y) { @Override public boolean lightMode() { return true; - }; - }; + } + }; public ColdParticle() { super(); diff --git a/java/com/hmdzl/spspd/effects/Pushing.java b/java/com/hmdzl/spspd/effects/Pushing.java index f4413d54..6e8ba233 100644 --- a/java/com/hmdzl/spspd/effects/Pushing.java +++ b/java/com/hmdzl/spspd/effects/Pushing.java @@ -60,7 +60,7 @@ protected boolean act() { //so that all pushing effects at the same time go simultaneously for ( Actor actor : Actor.all() ){ - if (actor instanceof Pushing && ((Pushing) actor).cooldown() == 0) + if (actor instanceof Pushing && actor.cooldown() == 0) return true; } return false; diff --git a/java/com/hmdzl/spspd/effects/SpellSprite.java b/java/com/hmdzl/spspd/effects/SpellSprite.java index 279d5694..fe7303f3 100644 --- a/java/com/hmdzl/spspd/effects/SpellSprite.java +++ b/java/com/hmdzl/spspd/effects/SpellSprite.java @@ -37,9 +37,9 @@ public class SpellSprite extends Image { private enum Phase { FADE_IN, STATIC, FADE_OUT - }; + } - private static final float FADE_IN_TIME = 0.2f; + private static final float FADE_IN_TIME = 0.2f; private static final float STATIC_TIME = 0.8f; private static final float FADE_OUT_TIME = 0.4f; diff --git a/java/com/hmdzl/spspd/effects/particles/BlastParticle.java b/java/com/hmdzl/spspd/effects/particles/BlastParticle.java index 6d0bd649..cefb41d3 100644 --- a/java/com/hmdzl/spspd/effects/particles/BlastParticle.java +++ b/java/com/hmdzl/spspd/effects/particles/BlastParticle.java @@ -33,8 +33,8 @@ public void emit(Emitter emitter, int index, float x, float y) { @Override public boolean lightMode() { return true; - }; - }; + } + }; public BlastParticle() { super(); diff --git a/java/com/hmdzl/spspd/effects/particles/ElmoParticle.java b/java/com/hmdzl/spspd/effects/particles/ElmoParticle.java index 88ad9586..10bc076b 100644 --- a/java/com/hmdzl/spspd/effects/particles/ElmoParticle.java +++ b/java/com/hmdzl/spspd/effects/particles/ElmoParticle.java @@ -32,8 +32,8 @@ public void emit(Emitter emitter, int index, float x, float y) { @Override public boolean lightMode() { return true; - }; - }; + } + }; public ElmoParticle() { super(); diff --git a/java/com/hmdzl/spspd/effects/particles/EnergyParticle.java b/java/com/hmdzl/spspd/effects/particles/EnergyParticle.java index 974c964d..52f4bc2f 100644 --- a/java/com/hmdzl/spspd/effects/particles/EnergyParticle.java +++ b/java/com/hmdzl/spspd/effects/particles/EnergyParticle.java @@ -35,8 +35,8 @@ public void emit(Emitter emitter, int index, float x, float y) { @Override public boolean lightMode() { return true; - }; - }; + } + }; public EnergyParticle() { super(); diff --git a/java/com/hmdzl/spspd/effects/particles/FlameParticle.java b/java/com/hmdzl/spspd/effects/particles/FlameParticle.java index ecca2cb5..58c8f2bf 100644 --- a/java/com/hmdzl/spspd/effects/particles/FlameParticle.java +++ b/java/com/hmdzl/spspd/effects/particles/FlameParticle.java @@ -32,8 +32,8 @@ public void emit(Emitter emitter, int index, float x, float y) { @Override public boolean lightMode() { return true; - }; - }; + } + }; public FlameParticle() { super(); diff --git a/java/com/hmdzl/spspd/effects/particles/MemoryParticle.java b/java/com/hmdzl/spspd/effects/particles/MemoryParticle.java index 7a7b1314..f856c9b4 100644 --- a/java/com/hmdzl/spspd/effects/particles/MemoryParticle.java +++ b/java/com/hmdzl/spspd/effects/particles/MemoryParticle.java @@ -31,8 +31,8 @@ public void emit( Emitter emitter, int index, float x, float y ) { @Override public boolean lightMode() { return true; - }; - }; + } + }; public MemoryParticle() { super(); diff --git a/java/com/hmdzl/spspd/effects/particles/PoisonParticle.java b/java/com/hmdzl/spspd/effects/particles/PoisonParticle.java index e24326db..468febd0 100644 --- a/java/com/hmdzl/spspd/effects/particles/PoisonParticle.java +++ b/java/com/hmdzl/spspd/effects/particles/PoisonParticle.java @@ -35,8 +35,8 @@ public void emit(Emitter emitter, int index, float x, float y) { @Override public boolean lightMode() { return true; - }; - }; + } + }; public static final Emitter.Factory SPLASH = new Factory() { @Override @@ -48,8 +48,8 @@ public void emit(Emitter emitter, int index, float x, float y) { @Override public boolean lightMode() { return true; - }; - }; + } + }; public PoisonParticle() { super(); diff --git a/java/com/hmdzl/spspd/effects/particles/SparkParticle.java b/java/com/hmdzl/spspd/effects/particles/SparkParticle.java index 04c38873..a464c686 100644 --- a/java/com/hmdzl/spspd/effects/particles/SparkParticle.java +++ b/java/com/hmdzl/spspd/effects/particles/SparkParticle.java @@ -33,8 +33,8 @@ public void emit(Emitter emitter, int index, float x, float y) { @Override public boolean lightMode() { return true; - }; - }; + } + }; public SparkParticle() { super(); diff --git a/java/com/hmdzl/spspd/infos/NewCatalog.java b/java/com/hmdzl/spspd/infos/NewCatalog.java new file mode 100644 index 00000000..562af2fc --- /dev/null +++ b/java/com/hmdzl/spspd/infos/NewCatalog.java @@ -0,0 +1,460 @@ +/* + * 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 + */ + +package com.hmdzl.spspd.infos; + +import com.hmdzl.spspd.items.Item; +import com.hmdzl.spspd.items.armor.normalarmor.BaseArmor; +import com.hmdzl.spspd.items.armor.normalarmor.BulletArmor; +import com.hmdzl.spspd.items.armor.normalarmor.CDArmor; +import com.hmdzl.spspd.items.armor.normalarmor.CeramicsArmor; +import com.hmdzl.spspd.items.armor.normalarmor.ClothArmor; +import com.hmdzl.spspd.items.armor.normalarmor.DiscArmor; +import com.hmdzl.spspd.items.armor.normalarmor.ErrorArmor; +import com.hmdzl.spspd.items.armor.normalarmor.LeatherArmor; +import com.hmdzl.spspd.items.armor.normalarmor.LifeArmor; +import com.hmdzl.spspd.items.armor.normalarmor.MachineArmor; +import com.hmdzl.spspd.items.armor.normalarmor.MailArmor; +import com.hmdzl.spspd.items.armor.normalarmor.MultiplelayerArmor; +import com.hmdzl.spspd.items.armor.normalarmor.PhantomArmor; +import com.hmdzl.spspd.items.armor.normalarmor.PlateArmor; +import com.hmdzl.spspd.items.armor.normalarmor.ProtectiveclothingArmor; +import com.hmdzl.spspd.items.armor.normalarmor.RubberArmor; +import com.hmdzl.spspd.items.armor.normalarmor.ScaleArmor; +import com.hmdzl.spspd.items.armor.normalarmor.StoneArmor; +import com.hmdzl.spspd.items.armor.normalarmor.StyrofoamArmor; +import com.hmdzl.spspd.items.armor.normalarmor.VestArmor; +import com.hmdzl.spspd.items.armor.normalarmor.WoodenArmor; +import com.hmdzl.spspd.items.artifacts.AlchemistsToolkit; +import com.hmdzl.spspd.items.artifacts.AlienBag; +import com.hmdzl.spspd.items.artifacts.CapeOfThorns; +import com.hmdzl.spspd.items.artifacts.ChaliceOfBlood; +import com.hmdzl.spspd.items.artifacts.CloakOfShadows; +import com.hmdzl.spspd.items.artifacts.DriedRose; +import com.hmdzl.spspd.items.artifacts.EtherealChains; +import com.hmdzl.spspd.items.artifacts.EyeOfSkadi; +import com.hmdzl.spspd.items.artifacts.GlassTotem; +import com.hmdzl.spspd.items.artifacts.HornOfPlenty; +import com.hmdzl.spspd.items.artifacts.MasterThievesArmband; +import com.hmdzl.spspd.items.artifacts.Pylon; +import com.hmdzl.spspd.items.artifacts.RobotDMT; +import com.hmdzl.spspd.items.artifacts.SandalsOfNature; +import com.hmdzl.spspd.items.artifacts.TalismanOfForesight; +import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; +import com.hmdzl.spspd.items.artifacts.UnstableSpellbook; +import com.hmdzl.spspd.items.food.Honey; +import com.hmdzl.spspd.items.food.Nut; +import com.hmdzl.spspd.items.food.WaterItem; +import com.hmdzl.spspd.items.food.completefood.AflyFood; +import com.hmdzl.spspd.items.food.completefood.Chickennugget; +import com.hmdzl.spspd.items.food.completefood.Chocolate; +import com.hmdzl.spspd.items.food.completefood.Crystalnucleus; +import com.hmdzl.spspd.items.food.completefood.Foamedbeverage; +import com.hmdzl.spspd.items.food.completefood.FoodFans; +import com.hmdzl.spspd.items.food.completefood.Frenchfries; +import com.hmdzl.spspd.items.food.completefood.Fruitsalad; +import com.hmdzl.spspd.items.food.completefood.Garbage; +import com.hmdzl.spspd.items.food.completefood.Gel; +import com.hmdzl.spspd.items.food.completefood.GoldenNut; +import com.hmdzl.spspd.items.food.completefood.Hamburger; +import com.hmdzl.spspd.items.food.completefood.Herbmeat; +import com.hmdzl.spspd.items.food.completefood.HoneyGel; +import com.hmdzl.spspd.items.food.completefood.HoneyWater; +import com.hmdzl.spspd.items.food.completefood.Honeymeat; +import com.hmdzl.spspd.items.food.completefood.Honeyrice; +import com.hmdzl.spspd.items.food.completefood.Icecream; +import com.hmdzl.spspd.items.food.completefood.Kebab; +import com.hmdzl.spspd.items.food.completefood.Meatroll; +import com.hmdzl.spspd.items.food.completefood.NutCake; +import com.hmdzl.spspd.items.food.completefood.PerfectFood; +import com.hmdzl.spspd.items.food.completefood.PetFood; +import com.hmdzl.spspd.items.food.completefood.Porksoup; +import com.hmdzl.spspd.items.food.completefood.Ricefood; +import com.hmdzl.spspd.items.food.completefood.Vegetablekebab; +import com.hmdzl.spspd.items.food.completefood.Vegetableroll; +import com.hmdzl.spspd.items.food.completefood.Vegetablesoup; +import com.hmdzl.spspd.items.food.completefood.ZongZi; +import com.hmdzl.spspd.items.food.fruit.Blackberry; +import com.hmdzl.spspd.items.food.fruit.Blandfruit; +import com.hmdzl.spspd.items.food.fruit.Blueberry; +import com.hmdzl.spspd.items.food.fruit.Cherry; +import com.hmdzl.spspd.items.food.fruit.Cloudberry; +import com.hmdzl.spspd.items.food.fruit.FullMoonberry; +import com.hmdzl.spspd.items.food.fruit.Moonberry; +import com.hmdzl.spspd.items.food.fruit.Strawberry; +import com.hmdzl.spspd.items.food.meatfood.ChargrilledMeat; +import com.hmdzl.spspd.items.food.meatfood.FrozenCarpaccio; +import com.hmdzl.spspd.items.food.meatfood.Meat; +import com.hmdzl.spspd.items.food.meatfood.MysteryMeat; +import com.hmdzl.spspd.items.food.staplefood.NormalRation; +import com.hmdzl.spspd.items.food.staplefood.OverpricedRation; +import com.hmdzl.spspd.items.food.staplefood.Pasty; +import com.hmdzl.spspd.items.food.vegetable.BattleFlower; +import com.hmdzl.spspd.items.food.vegetable.DreamLeaf; +import com.hmdzl.spspd.items.food.vegetable.HealGrass; +import com.hmdzl.spspd.items.food.vegetable.NutVegetable; +import com.hmdzl.spspd.items.medicine.BlueMilk; +import com.hmdzl.spspd.items.medicine.DeathCap; +import com.hmdzl.spspd.items.medicine.Earthstar; +import com.hmdzl.spspd.items.medicine.GoldenJelly; +import com.hmdzl.spspd.items.medicine.GreenSpore; +import com.hmdzl.spspd.items.medicine.Hardpill; +import com.hmdzl.spspd.items.medicine.JackOLantern; +import com.hmdzl.spspd.items.medicine.Magicpill; +import com.hmdzl.spspd.items.medicine.Musicpill; +import com.hmdzl.spspd.items.medicine.PixieParasol; +import com.hmdzl.spspd.items.medicine.Powerpill; +import com.hmdzl.spspd.items.medicine.RealgarWine; +import com.hmdzl.spspd.items.medicine.Shootpill; +import com.hmdzl.spspd.items.medicine.Smashpill; +import com.hmdzl.spspd.items.rings.RingOfAccuracy; +import com.hmdzl.spspd.items.rings.RingOfElements; +import com.hmdzl.spspd.items.rings.RingOfEnergy; +import com.hmdzl.spspd.items.rings.RingOfEvasion; +import com.hmdzl.spspd.items.rings.RingOfForce; +import com.hmdzl.spspd.items.rings.RingOfFuror; +import com.hmdzl.spspd.items.rings.RingOfHaste; +import com.hmdzl.spspd.items.rings.RingOfMagic; +import com.hmdzl.spspd.items.rings.RingOfMight; +import com.hmdzl.spspd.items.rings.RingOfSharpshooting; +import com.hmdzl.spspd.items.rings.RingOfTenacity; +import com.hmdzl.spspd.items.wands.CannonOfMage; +import com.hmdzl.spspd.items.wands.WandOfAcid; +import com.hmdzl.spspd.items.wands.WandOfBlood; +import com.hmdzl.spspd.items.wands.WandOfCharm; +import com.hmdzl.spspd.items.wands.WandOfDisintegration; +import com.hmdzl.spspd.items.wands.WandOfError; +import com.hmdzl.spspd.items.wands.WandOfFirebolt; +import com.hmdzl.spspd.items.wands.WandOfFlock; +import com.hmdzl.spspd.items.wands.WandOfFlow; +import com.hmdzl.spspd.items.wands.WandOfFreeze; +import com.hmdzl.spspd.items.wands.WandOfLight; +import com.hmdzl.spspd.items.wands.WandOfLightning; +import com.hmdzl.spspd.items.wands.WandOfMagicMissile; +import com.hmdzl.spspd.items.wands.WandOfMeteorite; +import com.hmdzl.spspd.items.wands.WandOfSwamp; +import com.hmdzl.spspd.items.wands.WandOfTCloud; +import com.hmdzl.spspd.items.weapon.guns.GunA; +import com.hmdzl.spspd.items.weapon.guns.GunB; +import com.hmdzl.spspd.items.weapon.guns.GunC; +import com.hmdzl.spspd.items.weapon.guns.GunD; +import com.hmdzl.spspd.items.weapon.guns.GunE; +import com.hmdzl.spspd.items.weapon.guns.Sling; +import com.hmdzl.spspd.items.weapon.guns.ToyGun; +import com.hmdzl.spspd.items.weapon.melee.AssassinsBlade; +import com.hmdzl.spspd.items.weapon.melee.BattleAxe; +import com.hmdzl.spspd.items.weapon.melee.Club; +import com.hmdzl.spspd.items.weapon.melee.Dagger; +import com.hmdzl.spspd.items.weapon.melee.Dualknive; +import com.hmdzl.spspd.items.weapon.melee.FightGloves; +import com.hmdzl.spspd.items.weapon.melee.Flute; +import com.hmdzl.spspd.items.weapon.melee.Glaive; +import com.hmdzl.spspd.items.weapon.melee.Gsword; +import com.hmdzl.spspd.items.weapon.melee.Halberd; +import com.hmdzl.spspd.items.weapon.melee.Handaxe; +import com.hmdzl.spspd.items.weapon.melee.Harp; +import com.hmdzl.spspd.items.weapon.melee.HolyWater; +import com.hmdzl.spspd.items.weapon.melee.Knuckles; +import com.hmdzl.spspd.items.weapon.melee.Lance; +import com.hmdzl.spspd.items.weapon.melee.Mace; +import com.hmdzl.spspd.items.weapon.melee.MageBook; +import com.hmdzl.spspd.items.weapon.melee.Nunchakus; +import com.hmdzl.spspd.items.weapon.melee.PrayerWheel; +import com.hmdzl.spspd.items.weapon.melee.Rapier; +import com.hmdzl.spspd.items.weapon.melee.Scimitar; +import com.hmdzl.spspd.items.weapon.melee.ShortSword; +import com.hmdzl.spspd.items.weapon.melee.Spear; +import com.hmdzl.spspd.items.weapon.melee.StoneCross; +import com.hmdzl.spspd.items.weapon.melee.Triangolo; +import com.hmdzl.spspd.items.weapon.melee.Trumpet; +import com.hmdzl.spspd.items.weapon.melee.WarHammer; +import com.hmdzl.spspd.items.weapon.melee.Wardrum; +import com.hmdzl.spspd.items.weapon.melee.Whip; +import com.hmdzl.spspd.items.weapon.melee.WoodenStaff; +import com.hmdzl.spspd.items.weapon.melee.block.GoblinShield; +import com.hmdzl.spspd.items.weapon.melee.block.SpKnuckles; +import com.hmdzl.spspd.items.weapon.melee.block.TenguSword; +import com.hmdzl.spspd.items.weapon.melee.relic.AresSword; +import com.hmdzl.spspd.items.weapon.melee.relic.CromCruachAxe; +import com.hmdzl.spspd.items.weapon.melee.relic.JupitersWraith; +import com.hmdzl.spspd.items.weapon.melee.relic.LokisFlail; +import com.hmdzl.spspd.items.weapon.melee.relic.NeptunusTrident; +import com.hmdzl.spspd.items.weapon.melee.special.Brick; +import com.hmdzl.spspd.items.weapon.melee.special.DemonBlade; +import com.hmdzl.spspd.items.weapon.melee.special.DiamondPickaxe; +import com.hmdzl.spspd.items.weapon.melee.special.DragonBoat; +import com.hmdzl.spspd.items.weapon.melee.special.ErrorW; +import com.hmdzl.spspd.items.weapon.melee.special.FireCracker; +import com.hmdzl.spspd.items.weapon.melee.special.Goei; +import com.hmdzl.spspd.items.weapon.melee.special.Handcannon; +import com.hmdzl.spspd.items.weapon.melee.special.HookHam; +import com.hmdzl.spspd.items.weapon.melee.special.KeyWeapon; +import com.hmdzl.spspd.items.weapon.melee.special.LinkSword; +import com.hmdzl.spspd.items.weapon.melee.special.Lollipop; +import com.hmdzl.spspd.items.weapon.melee.special.Pumpkin; +import com.hmdzl.spspd.items.weapon.melee.special.RunicBlade; +import com.hmdzl.spspd.items.weapon.melee.special.SJRBMusic; +import com.hmdzl.spspd.items.weapon.melee.special.ShadowEater; +import com.hmdzl.spspd.items.weapon.melee.special.Spork; +import com.hmdzl.spspd.items.weapon.melee.special.TekkoKagi; +import com.hmdzl.spspd.items.weapon.melee.special.TestWeapon; +import com.hmdzl.spspd.items.weapon.melee.special.Tree; +import com.hmdzl.spspd.items.weapon.melee.special.WraithBreath; +import com.hmdzl.spspd.items.weapon.melee.zero.EmptyPotion; +import com.hmdzl.spspd.items.weapon.melee.zero.WoodenHammer; +import com.hmdzl.spspd.items.weapon.missiles.Boomerang; +import com.hmdzl.spspd.items.weapon.missiles.ManyKnive; +import com.hmdzl.spspd.items.weapon.missiles.MiniMoai; +import com.hmdzl.spspd.items.weapon.missiles.TaurcenBow; + +import java.util.Collection; +import java.util.LinkedHashMap; + +public enum NewCatalog { + + WEAPONS, + ARMOR, + WANDS, + RINGS, + ARTIFACTS, + FOODS, + PILLS; + + private LinkedHashMap,Boolean> seen = new LinkedHashMap<>(); + + public Collection> items(){ + return seen.keySet(); + } + + static { + WEAPONS.seen.put( ShortSword.class , true); + WEAPONS.seen.put( Handaxe.class , true); + WEAPONS.seen.put( Scimitar.class , true); + WEAPONS.seen.put( BattleAxe.class , true); + WEAPONS.seen.put( Gsword.class , true); + WEAPONS.seen.put( WoodenHammer.class , true); + WEAPONS.seen.put( MageBook.class , true); + WEAPONS.seen.put( FightGloves.class , true); + WEAPONS.seen.put( Nunchakus.class , true); + WEAPONS.seen.put( Club.class , true); + WEAPONS.seen.put( WarHammer.class , true); + WEAPONS.seen.put( Dagger.class , true); + WEAPONS.seen.put( Dualknive.class , true); + WEAPONS.seen.put( Rapier.class , true); + WEAPONS.seen.put( AssassinsBlade.class , true); + WEAPONS.seen.put( Lance.class , true); + WEAPONS.seen.put( Knuckles.class , true); + WEAPONS.seen.put( Spear.class , true); + WEAPONS.seen.put( Whip.class , true); + WEAPONS.seen.put( Glaive.class , true); + WEAPONS.seen.put( Halberd.class , true); + WEAPONS.seen.put( EmptyPotion.class , true); + WEAPONS.seen.put( Triangolo.class , true); + WEAPONS.seen.put( Flute.class , true); + WEAPONS.seen.put( Wardrum.class , true); + WEAPONS.seen.put( Trumpet.class , true); + WEAPONS.seen.put( Harp.class , true); + WEAPONS.seen.put( Sling.class , true); + WEAPONS.seen.put( GunA.class , true); + WEAPONS.seen.put( GunB.class , true); + WEAPONS.seen.put( GunC.class , true); + WEAPONS.seen.put( GunD.class , true); + WEAPONS.seen.put( GunE.class , true); + WEAPONS.seen.put( WoodenStaff.class , true); + WEAPONS.seen.put( Mace.class , true); + WEAPONS.seen.put( HolyWater.class , true); + WEAPONS.seen.put( PrayerWheel.class , true); + WEAPONS.seen.put( StoneCross.class , true); + WEAPONS.seen.put( AresSword.class , true); + WEAPONS.seen.put( CromCruachAxe.class , true); + WEAPONS.seen.put( JupitersWraith.class , true); + WEAPONS.seen.put( LokisFlail.class , true); + WEAPONS.seen.put( NeptunusTrident.class , true); + WEAPONS.seen.put( DemonBlade.class , true); + WEAPONS.seen.put( DiamondPickaxe.class , true); + WEAPONS.seen.put( LinkSword.class , true); + WEAPONS.seen.put( Boomerang.class , true); + WEAPONS.seen.put( ManyKnive.class , true); + WEAPONS.seen.put( TaurcenBow.class , true); + WEAPONS.seen.put( TekkoKagi.class , true); + WEAPONS.seen.put( WraithBreath.class , true); + WEAPONS.seen.put( Spork.class , true); + WEAPONS.seen.put( Goei.class , true); + WEAPONS.seen.put( Handcannon.class , true); + WEAPONS.seen.put( RunicBlade.class , true); + WEAPONS.seen.put( ErrorW.class , true); + WEAPONS.seen.put( ShadowEater.class , true); + WEAPONS.seen.put( Brick.class , true); + WEAPONS.seen.put( DragonBoat.class , true); + WEAPONS.seen.put( FireCracker.class , true); + WEAPONS.seen.put( HookHam.class , true); + WEAPONS.seen.put( KeyWeapon.class , true); + WEAPONS.seen.put( Lollipop.class , true); + WEAPONS.seen.put( Pumpkin.class , true); + WEAPONS.seen.put( SJRBMusic.class , true); + WEAPONS.seen.put( TestWeapon.class , true); + WEAPONS.seen.put( Tree.class , true); + WEAPONS.seen.put( ToyGun.class , true); + WEAPONS.seen.put( MiniMoai.class , true); + WEAPONS.seen.put( GoblinShield.class , true); + WEAPONS.seen.put( SpKnuckles.class , true); + WEAPONS.seen.put( TenguSword.class , true); + + ARMOR.seen.put( BaseArmor.class, true); + ARMOR.seen.put( VestArmor.class, true); + ARMOR.seen.put( ClothArmor.class, true); + ARMOR.seen.put( WoodenArmor.class, true); + ARMOR.seen.put( RubberArmor.class, true); + ARMOR.seen.put( LeatherArmor.class, true); + ARMOR.seen.put( CeramicsArmor.class, true); + ARMOR.seen.put( CDArmor.class, true); + ARMOR.seen.put( DiscArmor.class, true); + ARMOR.seen.put( StoneArmor.class, true); + ARMOR.seen.put( StyrofoamArmor.class, true); + ARMOR.seen.put( MailArmor.class, true); + ARMOR.seen.put( MultiplelayerArmor.class, true); + ARMOR.seen.put( ProtectiveclothingArmor.class, true); + ARMOR.seen.put( ScaleArmor.class, true); + ARMOR.seen.put( BulletArmor.class, true); + ARMOR.seen.put( PhantomArmor.class, true); + ARMOR.seen.put( PlateArmor.class, true); + ARMOR.seen.put( MachineArmor.class, true); + ARMOR.seen.put( LifeArmor.class, true); + ARMOR.seen.put( ErrorArmor.class, true); + + WANDS.seen.put( WandOfMagicMissile.class, true); + WANDS.seen.put( WandOfDisintegration.class, true); + WANDS.seen.put( WandOfLightning.class, true); + WANDS.seen.put( WandOfTCloud.class, true); + WANDS.seen.put( WandOfFirebolt.class, true); + WANDS.seen.put( WandOfMeteorite.class, true); + WANDS.seen.put( WandOfFreeze.class, true); + WANDS.seen.put( WandOfFlow.class, true); + WANDS.seen.put( WandOfAcid.class, true); + WANDS.seen.put( WandOfSwamp.class, true); + WANDS.seen.put( WandOfLight.class, true); + WANDS.seen.put( WandOfCharm.class, true); + WANDS.seen.put( WandOfFlock.class, true); + WANDS.seen.put( WandOfBlood.class, true); + WANDS.seen.put( WandOfError.class, true); + WANDS.seen.put( CannonOfMage.class, true); + + RINGS.seen.put( RingOfAccuracy.class, true); + RINGS.seen.put( RingOfEnergy.class, true); + RINGS.seen.put( RingOfElements.class, true); + RINGS.seen.put( RingOfEvasion.class, true); + RINGS.seen.put( RingOfForce.class, true); + RINGS.seen.put( RingOfFuror.class, true); + RINGS.seen.put( RingOfHaste.class, true); + RINGS.seen.put( RingOfMight.class, true); + RINGS.seen.put( RingOfSharpshooting.class, true); + RINGS.seen.put( RingOfTenacity.class, true); + RINGS.seen.put( RingOfMagic.class, true); + + ARTIFACTS.seen.put( AlchemistsToolkit.class, true); + ARTIFACTS.seen.put( CapeOfThorns.class, true); + ARTIFACTS.seen.put( ChaliceOfBlood.class, true); + ARTIFACTS.seen.put( CloakOfShadows.class, true); + ARTIFACTS.seen.put( DriedRose.class, true); + ARTIFACTS.seen.put( EtherealChains.class, true); + ARTIFACTS.seen.put( HornOfPlenty.class, true); + ARTIFACTS.seen.put( GlassTotem.class, true); + ARTIFACTS.seen.put( MasterThievesArmband.class, true); + ARTIFACTS.seen.put( SandalsOfNature.class, true); + ARTIFACTS.seen.put( TalismanOfForesight.class, true); + ARTIFACTS.seen.put( TimekeepersHourglass.class, true); + ARTIFACTS.seen.put( UnstableSpellbook.class, true); + ARTIFACTS.seen.put( AlienBag.class, true); + ARTIFACTS.seen.put( EyeOfSkadi.class, true); + ARTIFACTS.seen.put( RobotDMT.class, true); + ARTIFACTS.seen.put( Pylon.class, true); + + FOODS.seen.put( Honey.class, true); + FOODS.seen.put( Nut.class, true); + FOODS.seen.put( WaterItem.class, true); + FOODS.seen.put( OverpricedRation.class, true); + FOODS.seen.put( NormalRation.class, true); + FOODS.seen.put( Pasty.class, true); + FOODS.seen.put( BattleFlower.class, true); + FOODS.seen.put( DreamLeaf.class, true); + FOODS.seen.put( HealGrass.class, true); + FOODS.seen.put( NutVegetable.class, true); + FOODS.seen.put( Blackberry.class, true); + FOODS.seen.put( Blueberry.class, true); + FOODS.seen.put( Cloudberry.class, true); + FOODS.seen.put( Moonberry.class, true); + FOODS.seen.put( FullMoonberry.class, true); + FOODS.seen.put( Blandfruit.class, true); + FOODS.seen.put( Strawberry.class, true); + FOODS.seen.put( Cherry.class, true); + FOODS.seen.put( Meat.class, true); + FOODS.seen.put( MysteryMeat.class, true); + FOODS.seen.put( ChargrilledMeat.class, true); + FOODS.seen.put( FrozenCarpaccio.class, true); + + FOODS.seen.put( AflyFood.class, true); + FOODS.seen.put( Chickennugget.class, true); + FOODS.seen.put( Chocolate.class, true); + FOODS.seen.put( Crystalnucleus.class, true); + FOODS.seen.put( Foamedbeverage.class, true); + FOODS.seen.put( FoodFans.class, true); + FOODS.seen.put( Frenchfries.class, true); + FOODS.seen.put( Fruitsalad.class, true); + FOODS.seen.put( Garbage.class, true); + FOODS.seen.put( Gel.class, true); + FOODS.seen.put( GoldenNut.class, true); + FOODS.seen.put( Hamburger.class, true); + FOODS.seen.put( Herbmeat.class, true); + FOODS.seen.put( HoneyGel.class, true); + FOODS.seen.put( Honeymeat.class, true); + FOODS.seen.put( Honeyrice.class, true); + FOODS.seen.put( HoneyWater.class, true); + FOODS.seen.put( Icecream.class, true); + FOODS.seen.put( Kebab.class, true); + FOODS.seen.put( Meatroll.class, true); + FOODS.seen.put( NutCake.class, true); + FOODS.seen.put( PerfectFood.class, true); + FOODS.seen.put( PetFood.class, true); + FOODS.seen.put( Porksoup.class, true); + FOODS.seen.put( Ricefood.class, true); + FOODS.seen.put( Vegetablekebab.class, true); + FOODS.seen.put( Vegetableroll.class, true); + FOODS.seen.put( Vegetablesoup.class, true); + FOODS.seen.put( ZongZi.class, true); + + PILLS.seen.put( Powerpill.class, true); + PILLS.seen.put( Magicpill.class, true); + PILLS.seen.put( Shootpill.class, true); + PILLS.seen.put( Smashpill.class, true); + PILLS.seen.put( Musicpill.class, true); + PILLS.seen.put( Hardpill.class, true); + PILLS.seen.put( BlueMilk.class, true); + PILLS.seen.put( DeathCap.class, true); + PILLS.seen.put( Earthstar.class, true); + PILLS.seen.put( GoldenJelly.class, true); + PILLS.seen.put( GreenSpore.class, true); + PILLS.seen.put( JackOLantern.class, true); + PILLS.seen.put( PixieParasol.class, true); + PILLS.seen.put( RealgarWine.class, true); + + } + +} \ No newline at end of file diff --git a/java/com/hmdzl/spspd/infos/NewDocument.java b/java/com/hmdzl/spspd/infos/NewDocument.java new file mode 100644 index 00000000..9a0345fc --- /dev/null +++ b/java/com/hmdzl/spspd/infos/NewDocument.java @@ -0,0 +1,90 @@ +/* + * 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 + */ + +package com.hmdzl.spspd.infos; + +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; + +import java.util.Collection; +import java.util.LinkedHashMap; + +public enum NewDocument { + + STORY_GUIDE, + //ALCHEMY_GUIDE(ItemSpriteSheet.ALCH_PAGE); + + NewDocument; + + private LinkedHashMap pages = new LinkedHashMap<>(); + + public Collection pages(){ + return pages.keySet(); + } + + public boolean hasPage( String page ){ + return pages.containsKey(page) && pages.get(page); + } + + public String title(){ + return Messages.get( this, name() + ".title"); + } + + public String pageTitle( String page ){ + return Messages.get( this, name() + "." + page + ".title"); + } + + public String pageBody( String page ){ + return Messages.get( this, name() + "." + page + ".body"); + } + + + public static final String GUIDE_INTRO_PAGE = "Intro"; + //public static final String GUIDE_SEARCH_PAGE = "Examining_and_Searching"; + + static { + STORY_GUIDE.pages.put(GUIDE_INTRO_PAGE, true); + STORY_GUIDE.pages.put("tester", true); + STORY_GUIDE.pages.put("tower", true); + STORY_GUIDE.pages.put("def", true); + STORY_GUIDE.pages.put("palace", true); + STORY_GUIDE.pages.put("ruins", true); + STORY_GUIDE.pages.put("horn", true); + STORY_GUIDE.pages.put("tribe", true); + STORY_GUIDE.pages.put("homeless", true); + STORY_GUIDE.pages.put("overseas", true); + + //sewers + //ALCHEMY_GUIDE.pages.put("Potions", DeviceCompat.isDebug()); + //ALCHEMY_GUIDE.pages.put("Stones", DeviceCompat.isDebug()); + //ALCHEMY_GUIDE.pages.put("Energy_Food", DeviceCompat.isDebug()); + //ALCHEMY_GUIDE.pages.put("Bombs", DeviceCompat.isDebug()); + //ALCHEMY_GUIDE.pages.put("Darts", DeviceCompat.isDebug()); + + //prison + //ALCHEMY_GUIDE.pages.put("Exotic_Potions", DeviceCompat.isDebug()); + //ALCHEMY_GUIDE.pages.put("Exotic_Scrolls", DeviceCompat.isDebug()); + + //caves + //ALCHEMY_GUIDE.pages.put("Catalysts", DeviceCompat.isDebug()); + //ALCHEMY_GUIDE.pages.put("Brews_Elixirs", DeviceCompat.isDebug()); + //ALCHEMY_GUIDE.pages.put("Spells", DeviceCompat.isDebug()); + } +} diff --git a/java/com/hmdzl/spspd/infos/NewJournal.java b/java/com/hmdzl/spspd/infos/NewJournal.java new file mode 100644 index 00000000..298e1397 --- /dev/null +++ b/java/com/hmdzl/spspd/infos/NewJournal.java @@ -0,0 +1,27 @@ +/* + * 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 + */ + +package com.hmdzl.spspd.infos; + +public class NewJournal { + + +} diff --git a/java/com/hmdzl/spspd/infos/NewMobCatalog.java b/java/com/hmdzl/spspd/infos/NewMobCatalog.java new file mode 100644 index 00000000..25dc8f07 --- /dev/null +++ b/java/com/hmdzl/spspd/infos/NewMobCatalog.java @@ -0,0 +1,184 @@ +/* + * 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 + */ + +package com.hmdzl.spspd.infos; + +import com.hmdzl.spspd.actors.mobs.AlbinoPiranha; +import com.hmdzl.spspd.actors.mobs.Assassin; +import com.hmdzl.spspd.actors.mobs.BambooMob; +import com.hmdzl.spspd.actors.mobs.Bat; +import com.hmdzl.spspd.actors.mobs.BlueWraith; +import com.hmdzl.spspd.actors.mobs.BrokenRobot; +import com.hmdzl.spspd.actors.mobs.BrownBat; +import com.hmdzl.spspd.actors.mobs.Brute; +import com.hmdzl.spspd.actors.mobs.Crab; +import com.hmdzl.spspd.actors.mobs.DM300; +import com.hmdzl.spspd.actors.mobs.DemonFlower; +import com.hmdzl.spspd.actors.mobs.DemonGoo; +import com.hmdzl.spspd.actors.mobs.DustElement; +import com.hmdzl.spspd.actors.mobs.DwarfLich; +import com.hmdzl.spspd.actors.mobs.ElderAvatar; +import com.hmdzl.spspd.actors.mobs.Eye; +import com.hmdzl.spspd.actors.mobs.Fiend; +import com.hmdzl.spspd.actors.mobs.FireElemental; +import com.hmdzl.spspd.actors.mobs.FireRabbit; +import com.hmdzl.spspd.actors.mobs.Gnoll; +import com.hmdzl.spspd.actors.mobs.GnollArcher; +import com.hmdzl.spspd.actors.mobs.GnollShaman; +import com.hmdzl.spspd.actors.mobs.GoldOrc; +import com.hmdzl.spspd.actors.mobs.GoldThief; +import com.hmdzl.spspd.actors.mobs.Golem; +import com.hmdzl.spspd.actors.mobs.Goo; +import com.hmdzl.spspd.actors.mobs.Greatmoss; +import com.hmdzl.spspd.actors.mobs.Guard; +import com.hmdzl.spspd.actors.mobs.Hybrid; +import com.hmdzl.spspd.actors.mobs.IceBug; +import com.hmdzl.spspd.actors.mobs.King; +import com.hmdzl.spspd.actors.mobs.LichDancer; +import com.hmdzl.spspd.actors.mobs.LiveMoss; +import com.hmdzl.spspd.actors.mobs.ManySkeleton; +import com.hmdzl.spspd.actors.mobs.Mimic; +import com.hmdzl.spspd.actors.mobs.Mob; +import com.hmdzl.spspd.actors.mobs.Monk; +import com.hmdzl.spspd.actors.mobs.MossySkeleton; +import com.hmdzl.spspd.actors.mobs.Musketeer; +import com.hmdzl.spspd.actors.mobs.Orc; +import com.hmdzl.spspd.actors.mobs.PatrolUAV; +import com.hmdzl.spspd.actors.mobs.Piranha; +import com.hmdzl.spspd.actors.mobs.PlagueDoctor; +import com.hmdzl.spspd.actors.mobs.PrisonWander; +import com.hmdzl.spspd.actors.mobs.Rat; +import com.hmdzl.spspd.actors.mobs.SandMob; +import com.hmdzl.spspd.actors.mobs.Scorpio; +import com.hmdzl.spspd.actors.mobs.SewerHeart; +import com.hmdzl.spspd.actors.mobs.Skeleton; +import com.hmdzl.spspd.actors.mobs.SpiderBot; +import com.hmdzl.spspd.actors.mobs.SpiderQueen; +import com.hmdzl.spspd.actors.mobs.Spinner; +import com.hmdzl.spspd.actors.mobs.Succubus; +import com.hmdzl.spspd.actors.mobs.Sufferer; +import com.hmdzl.spspd.actors.mobs.Swarm; +import com.hmdzl.spspd.actors.mobs.Tank; +import com.hmdzl.spspd.actors.mobs.Tengu; +import com.hmdzl.spspd.actors.mobs.TestMob; +import com.hmdzl.spspd.actors.mobs.Thief; +import com.hmdzl.spspd.actors.mobs.ThiefImp; +import com.hmdzl.spspd.actors.mobs.TrollWarrior; +import com.hmdzl.spspd.actors.mobs.Warlock; +import com.hmdzl.spspd.actors.mobs.Wraith; +import com.hmdzl.spspd.actors.mobs.Yog; +import com.hmdzl.spspd.actors.mobs.Zombie; + +import java.util.Collection; +import java.util.LinkedHashMap; + +public enum NewMobCatalog { + + SEWER, + PRISON, + CAVE, + CITY, + HALL, + EX, + ETC; + + private LinkedHashMap,Boolean> seen = new LinkedHashMap<>(); + + public Collection> mob(){ + return seen.keySet(); + } + + static { + SEWER.seen.put( Rat.class , true); + SEWER.seen.put( BrownBat.class , true); + SEWER.seen.put( DustElement.class , true); + SEWER.seen.put( LiveMoss.class , true); + SEWER.seen.put( Swarm.class , true); + SEWER.seen.put( Crab.class , true); + SEWER.seen.put( PatrolUAV.class , true); + SEWER.seen.put( Goo.class , true); + SEWER.seen.put( SewerHeart.class , true); + SEWER.seen.put( PlagueDoctor.class , true); + + PRISON.seen.put( Thief.class , true); + PRISON.seen.put( Gnoll.class , true); + PRISON.seen.put( Guard.class , true); + PRISON.seen.put( Zombie.class , true); + PRISON.seen.put( BambooMob.class , true); + PRISON.seen.put( Assassin.class , true); + PRISON.seen.put( TrollWarrior.class , true); + PRISON.seen.put( FireRabbit.class , true); + PRISON.seen.put( Tengu.class , true); + PRISON.seen.put( PrisonWander.class , true); + PRISON.seen.put( Tank.class , true); + + CAVE.seen.put( Bat.class , true); + CAVE.seen.put( Skeleton.class , true); + CAVE.seen.put( GnollShaman.class , true); + CAVE.seen.put( Brute.class , true); + CAVE.seen.put( SandMob.class , true); + CAVE.seen.put( Spinner.class , true); + CAVE.seen.put( IceBug.class , true); + CAVE.seen.put( BrokenRobot.class , true); + CAVE.seen.put( Hybrid.class , true); + CAVE.seen.put( DM300.class , true); + CAVE.seen.put( SpiderQueen.class , true); + + CITY.seen.put( FireElemental.class , true); + CITY.seen.put( Warlock.class , true); + CITY.seen.put( Monk.class , true); + CITY.seen.put( SpiderBot.class , true); + CITY.seen.put( Golem.class , true); + CITY.seen.put( Musketeer.class , true); + CITY.seen.put( DwarfLich.class , true); + CITY.seen.put( ManySkeleton.class , true); + CITY.seen.put( LichDancer.class , true); + CITY.seen.put( ElderAvatar.class , true); + CITY.seen.put( King.class , true); + + HALL.seen.put( Succubus.class , true); + HALL.seen.put( Eye.class , true); + HALL.seen.put( DemonGoo.class , true); + HALL.seen.put( DemonFlower.class , true); + HALL.seen.put( Sufferer.class , true); + HALL.seen.put( ThiefImp.class , true); + HALL.seen.put( Scorpio.class , true); + HALL.seen.put( Yog.class , true); + + EX.seen.put( GnollArcher.class , true); + EX.seen.put( MossySkeleton.class , true); + EX.seen.put( AlbinoPiranha.class , true); + EX.seen.put( GoldThief.class , true); + EX.seen.put( BlueWraith.class , true); + EX.seen.put( Orc.class , true); + EX.seen.put( GoldOrc.class , true); + EX.seen.put( Fiend.class , true); + + ETC.seen.put( Wraith.class , true); + ETC.seen.put( Greatmoss.class , true); + ETC.seen.put( Piranha.class , true); + ETC.seen.put( Mimic.class , true); + ETC.seen.put( TestMob.class , true); + ETC.seen.put( Rat.class , true); + + } + +} \ No newline at end of file diff --git a/java/com/hmdzl/spspd/items/AncientCoin.java b/java/com/hmdzl/spspd/items/AncientCoin.java index 30621023..dfe85da1 100644 --- a/java/com/hmdzl/spspd/items/AncientCoin.java +++ b/java/com/hmdzl/spspd/items/AncientCoin.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.InterlevelScene; import com.hmdzl.spspd.sprites.ItemSprite.Glowing; import com.hmdzl.spspd.sprites.ItemSpriteSheet; diff --git a/java/com/hmdzl/spspd/items/Ankh.java b/java/com/hmdzl/spspd/items/Ankh.java index 0cbdb294..77dfed69 100644 --- a/java/com/hmdzl/spspd/items/Ankh.java +++ b/java/com/hmdzl/spspd/items/Ankh.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.sprites.ItemSprite.Glowing; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; diff --git a/java/com/hmdzl/spspd/items/Bone.java b/java/com/hmdzl/spspd/items/Bone.java index 4da62228..d22755a2 100644 --- a/java/com/hmdzl/spspd/items/Bone.java +++ b/java/com/hmdzl/spspd/items/Bone.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.InterlevelScene; import com.hmdzl.spspd.sprites.ItemSprite.Glowing; import com.hmdzl.spspd.sprites.ItemSpriteSheet; diff --git a/java/com/hmdzl/spspd/items/BossRush.java b/java/com/hmdzl/spspd/items/BossRush.java index e3712b25..626178da 100644 --- a/java/com/hmdzl/spspd/items/BossRush.java +++ b/java/com/hmdzl/spspd/items/BossRush.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.InterlevelScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/ChallengeBook.java b/java/com/hmdzl/spspd/items/ChallengeBook.java index d1fa20f3..b1c3f168 100644 --- a/java/com/hmdzl/spspd/items/ChallengeBook.java +++ b/java/com/hmdzl/spspd/items/ChallengeBook.java @@ -30,7 +30,7 @@ import com.hmdzl.spspd.utils.GLog; import com.hmdzl.spspd.windows.WndBag; import com.hmdzl.spspd.windows.WndChallengeBook; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.Game; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; diff --git a/java/com/hmdzl/spspd/items/ConchShell.java b/java/com/hmdzl/spspd/items/ConchShell.java index 84db98ae..e1139322 100644 --- a/java/com/hmdzl/spspd/items/ConchShell.java +++ b/java/com/hmdzl/spspd/items/ConchShell.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.InterlevelScene; import com.hmdzl.spspd.sprites.ItemSprite.Glowing; import com.hmdzl.spspd.sprites.ItemSpriteSheet; diff --git a/java/com/hmdzl/spspd/items/DewVial.java b/java/com/hmdzl/spspd/items/DewVial.java index dcc41adc..76f31dd4 100644 --- a/java/com/hmdzl/spspd/items/DewVial.java +++ b/java/com/hmdzl/spspd/items/DewVial.java @@ -17,13 +17,10 @@ */ package com.hmdzl.spspd.items; -import java.util.ArrayList; - import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Challenges; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.Statistics; import com.hmdzl.spspd.actors.blobs.Blob; import com.hmdzl.spspd.actors.blobs.Water; @@ -37,9 +34,9 @@ import com.hmdzl.spspd.actors.buffs.Light; import com.hmdzl.spspd.actors.buffs.MindVision; import com.hmdzl.spspd.actors.buffs.Ooze; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.buffs.Tar; import com.hmdzl.spspd.actors.buffs.Vertigo; -import com.hmdzl.spspd.actors.buffs.Weakness; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.hero.HeroClass; import com.hmdzl.spspd.actors.hero.HeroSubClass; @@ -49,12 +46,11 @@ import com.hmdzl.spspd.items.food.WaterItem; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.utils.GLog; - import com.hmdzl.spspd.windows.WndBag; import com.hmdzl.spspd.windows.WndItem; import com.watabou.noosa.audio.Sample; @@ -62,6 +58,8 @@ import com.watabou.utils.GameMath; import com.watabou.utils.Random; +import java.util.ArrayList; + public class DewVial extends Item { private static final int MAX_VOLUME = 120; @@ -185,7 +183,7 @@ public void execute(final Hero hero, String action) { if (volume > 350 ){ hero.damage(hero.HT,this); if (!hero.isAlive()) { - Dungeon.fail(Messages.format(ResultDescriptions.CHEAT)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); } } if (volume > 0) { @@ -227,10 +225,10 @@ public void execute(final Hero hero, String action) { if (volume > 350 ){ hero.damage(hero.HT,this); if (!hero.isAlive()) { - Dungeon.fail(Messages.format(ResultDescriptions.CHEAT)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); } } - Statistics.waters++; + //Statistics.waters++; int positive = 0; int negative = 0; @@ -284,7 +282,7 @@ public void execute(final Hero hero, String action) { if (volume > 350 ){ hero.damage(hero.HT,this); if (!hero.isAlive()) { - Dungeon.fail(Messages.format(ResultDescriptions.CHEAT)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); } } Buff.affect(hero, HasteBuff.class, HasteBuff.DURATION); @@ -302,7 +300,7 @@ public void execute(final Hero hero, String action) { if (volume > 350 ){ hero.damage(hero.HT,this); if (!hero.isAlive()) { - Dungeon.fail(Messages.format(ResultDescriptions.CHEAT)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); } } boolean procced = uncurse(hero, hero.belongings.backpack.items.toArray(new Item[0])); @@ -324,7 +322,7 @@ public void execute(final Hero hero, String action) { if (volume > 350 ){ hero.damage(hero.HT,this); if (!hero.isAlive()) { - Dungeon.fail(Messages.format(ResultDescriptions.CHEAT)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); } } curUser = hero; @@ -335,7 +333,7 @@ public void execute(final Hero hero, String action) { if (volume > 350 ){ hero.damage(hero.HT,this); if (!hero.isAlive()) { - Dungeon.fail(Messages.format(ResultDescriptions.CHEAT)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); } } Buff.affect(hero, Light.class, 80f); @@ -349,13 +347,13 @@ public void execute(final Hero hero, String action) { if (volume > 350 ){ hero.damage(hero.HT,this); if (!hero.isAlive()) { - Dungeon.fail(Messages.format(ResultDescriptions.CHEAT)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); } } Buff.detach(hero, Burning.class); Buff.detach(hero, Ooze.class); Buff.detach(hero, Tar.class); - Buff.detach(hero, Weakness.class); + Buff.detach(hero, STRdown.class); Buff.detach(hero, Vertigo.class); if (Random.Int(8) == 0) { @@ -375,7 +373,7 @@ public void execute(final Hero hero, String action) { if (volume > 350 ){ hero.damage(hero.HT,this); if (!hero.isAlive()) { - Dungeon.fail(Messages.format(ResultDescriptions.CHEAT)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); } } Buff.affect(hero, MindVision.class, 2f); @@ -389,7 +387,7 @@ public void execute(final Hero hero, String action) { if (volume > 350 ){ hero.damage(hero.HT,this); if (!hero.isAlive()) { - Dungeon.fail(Messages.format(ResultDescriptions.CHEAT)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); } } volume = volume - 10 - rejection; @@ -479,7 +477,7 @@ public void onSelect(Item item) { }; private void upgrade(Item item) { - int n = Random.Int(Math.min(1,(int)(Statistics.deepestFloor/24)) , Math.max(2,(int)(Statistics.deepestFloor/6))); + int n = Random.Int(Math.min(1, Statistics.deepestFloor/24) , Math.max(2, Statistics.deepestFloor/6)); //GLog.w(Messages.get(this, "looks_better", item.name())); for(int i=0; i 25 || Dungeon.depth < 21) { + if ((Dungeon.bossLevel() || Dungeon.depth > 25 || Dungeon.depth < 21) && Dungeon.depth != 1) { hero.spend(DwarfHammer.TIME_TO_USE); GLog.w(Messages.get(this, "prevent")); return; @@ -74,7 +74,7 @@ public void execute(Hero hero, String action) { if (hero.pos != Dungeon.level.exit) { detach(Dungeon.hero.belongings.backpack); - Dungeon.level.sealedlevel=false; + // Dungeon.level.sealedlevel=false; //Dungeon.level.map[Dungeon.level.exit]=Terrain.EMPTY; //GameScene.updateMap(Dungeon.level.exit); diff --git a/java/com/hmdzl/spspd/items/EquipableItem.java b/java/com/hmdzl/spspd/items/EquipableItem.java index 1c6d48ed..95cba5eb 100644 --- a/java/com/hmdzl/spspd/items/EquipableItem.java +++ b/java/com/hmdzl/spspd/items/EquipableItem.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.effects.particles.ShadowParticle; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.audio.Sample; diff --git a/java/com/hmdzl/spspd/items/Generator.java b/java/com/hmdzl/spspd/items/Generator.java index f5edb2c9..9d878cac 100644 --- a/java/com/hmdzl/spspd/items/Generator.java +++ b/java/com/hmdzl/spspd/items/Generator.java @@ -17,26 +17,46 @@ */ package com.hmdzl.spspd.items; -import java.util.HashMap; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.hero.Hero; +import com.hmdzl.spspd.items.armor.Armor; import com.hmdzl.spspd.items.armor.normalarmor.BulletArmor; import com.hmdzl.spspd.items.armor.normalarmor.CDArmor; import com.hmdzl.spspd.items.armor.normalarmor.CeramicsArmor; +import com.hmdzl.spspd.items.armor.normalarmor.ClothArmor; +import com.hmdzl.spspd.items.armor.normalarmor.DiscArmor; +import com.hmdzl.spspd.items.armor.normalarmor.ErrorArmor; +import com.hmdzl.spspd.items.armor.normalarmor.LeatherArmor; import com.hmdzl.spspd.items.armor.normalarmor.MachineArmor; +import com.hmdzl.spspd.items.armor.normalarmor.MailArmor; import com.hmdzl.spspd.items.armor.normalarmor.MultiplelayerArmor; import com.hmdzl.spspd.items.armor.normalarmor.PhantomArmor; +import com.hmdzl.spspd.items.armor.normalarmor.PlateArmor; import com.hmdzl.spspd.items.armor.normalarmor.ProtectiveclothingArmor; import com.hmdzl.spspd.items.armor.normalarmor.RubberArmor; +import com.hmdzl.spspd.items.armor.normalarmor.ScaleArmor; import com.hmdzl.spspd.items.armor.normalarmor.StoneArmor; import com.hmdzl.spspd.items.armor.normalarmor.StyrofoamArmor; import com.hmdzl.spspd.items.armor.normalarmor.VestArmor; import com.hmdzl.spspd.items.armor.normalarmor.WoodenArmor; +import com.hmdzl.spspd.items.artifacts.AlchemistsToolkit; import com.hmdzl.spspd.items.artifacts.AlienBag; +import com.hmdzl.spspd.items.artifacts.Artifact; +import com.hmdzl.spspd.items.artifacts.CapeOfThorns; +import com.hmdzl.spspd.items.artifacts.ChaliceOfBlood; +import com.hmdzl.spspd.items.artifacts.CloakOfShadows; +import com.hmdzl.spspd.items.artifacts.DriedRose; import com.hmdzl.spspd.items.artifacts.EtherealChains; +import com.hmdzl.spspd.items.artifacts.EyeOfSkadi; import com.hmdzl.spspd.items.artifacts.GlassTotem; +import com.hmdzl.spspd.items.artifacts.HornOfPlenty; +import com.hmdzl.spspd.items.artifacts.MasterThievesArmband; import com.hmdzl.spspd.items.artifacts.RobotDMT; +import com.hmdzl.spspd.items.artifacts.SandalsOfNature; +import com.hmdzl.spspd.items.artifacts.TalismanOfForesight; +import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; +import com.hmdzl.spspd.items.artifacts.UnstableSpellbook; +import com.hmdzl.spspd.items.bags.Bag; import com.hmdzl.spspd.items.bombs.Bomb; import com.hmdzl.spspd.items.bombs.BuildBomb; import com.hmdzl.spspd.items.bombs.DarkBomb; @@ -64,6 +84,7 @@ import com.hmdzl.spspd.items.eggs.SpiderEgg; import com.hmdzl.spspd.items.eggs.VelociroosterEgg; import com.hmdzl.spspd.items.eggs.VioletDragonEgg; +import com.hmdzl.spspd.items.food.Food; import com.hmdzl.spspd.items.food.completefood.Chickennugget; import com.hmdzl.spspd.items.food.completefood.Chocolate; import com.hmdzl.spspd.items.food.completefood.Foamedbeverage; @@ -86,21 +107,27 @@ import com.hmdzl.spspd.items.food.completefood.Vegetablekebab; import com.hmdzl.spspd.items.food.completefood.Vegetableroll; import com.hmdzl.spspd.items.food.completefood.Vegetablesoup; +import com.hmdzl.spspd.items.food.fruit.Blackberry; +import com.hmdzl.spspd.items.food.fruit.Blueberry; +import com.hmdzl.spspd.items.food.fruit.Cloudberry; +import com.hmdzl.spspd.items.food.fruit.Moonberry; import com.hmdzl.spspd.items.food.staplefood.NormalRation; +import com.hmdzl.spspd.items.food.staplefood.OverpricedRation; +import com.hmdzl.spspd.items.food.staplefood.Pasty; +import com.hmdzl.spspd.items.medicine.BlueMilk; +import com.hmdzl.spspd.items.medicine.DeathCap; +import com.hmdzl.spspd.items.medicine.Earthstar; +import com.hmdzl.spspd.items.medicine.GoldenJelly; +import com.hmdzl.spspd.items.medicine.GreenSpore; import com.hmdzl.spspd.items.medicine.Hardpill; +import com.hmdzl.spspd.items.medicine.JackOLantern; import com.hmdzl.spspd.items.medicine.Magicpill; import com.hmdzl.spspd.items.medicine.Musicpill; import com.hmdzl.spspd.items.medicine.Pill; +import com.hmdzl.spspd.items.medicine.PixieParasol; import com.hmdzl.spspd.items.medicine.Powerpill; import com.hmdzl.spspd.items.medicine.Shootpill; import com.hmdzl.spspd.items.medicine.Smashpill; -import com.hmdzl.spspd.items.medicine.PixieParasol; -import com.hmdzl.spspd.items.medicine.GreenSpore; -import com.hmdzl.spspd.items.medicine.GoldenJelly; -import com.hmdzl.spspd.items.medicine.Earthstar; -import com.hmdzl.spspd.items.medicine.DeathCap; -import com.hmdzl.spspd.items.medicine.JackOLantern; -import com.hmdzl.spspd.items.medicine.BlueMilk; import com.hmdzl.spspd.items.misc.JumpF; import com.hmdzl.spspd.items.misc.JumpH; import com.hmdzl.spspd.items.misc.JumpM; @@ -108,79 +135,6 @@ import com.hmdzl.spspd.items.misc.JumpR; import com.hmdzl.spspd.items.misc.JumpS; import com.hmdzl.spspd.items.misc.JumpW; -import com.hmdzl.spspd.items.potions.PotionOfMixing; -import com.hmdzl.spspd.items.potions.PotionOfShield; -import com.hmdzl.spspd.items.rings.RingOfEnergy; -import com.hmdzl.spspd.items.scrolls.ScrollOfSacrifice; -import com.hmdzl.spspd.items.summon.ActiveMrDestructo; -import com.hmdzl.spspd.items.summon.FairyCard; -import com.hmdzl.spspd.items.summon.Mobile; -import com.hmdzl.spspd.items.wands.WandOfFlow; -import com.hmdzl.spspd.items.wands.WandOfLight; -import com.hmdzl.spspd.items.wands.WandOfMeteorite; -import com.hmdzl.spspd.items.wands.WandOfTCloud; -import com.hmdzl.spspd.items.weapon.guns.GunA; -import com.hmdzl.spspd.items.weapon.guns.GunB; -import com.hmdzl.spspd.items.weapon.guns.GunC; -import com.hmdzl.spspd.items.weapon.guns.GunD; -import com.hmdzl.spspd.items.weapon.guns.GunE; -import com.hmdzl.spspd.items.weapon.melee.Club; -import com.hmdzl.spspd.items.weapon.melee.FightGloves; -import com.hmdzl.spspd.items.weapon.melee.Flute; -import com.hmdzl.spspd.items.weapon.melee.Harp; -import com.hmdzl.spspd.items.weapon.melee.HolyWater; -import com.hmdzl.spspd.items.weapon.melee.Lance; -import com.hmdzl.spspd.items.weapon.melee.Mace; -import com.hmdzl.spspd.items.weapon.melee.PrayerWheel; -import com.hmdzl.spspd.items.weapon.melee.Rapier; -import com.hmdzl.spspd.items.weapon.melee.StoneCross; -import com.hmdzl.spspd.items.weapon.melee.Triangolo; -import com.hmdzl.spspd.items.weapon.melee.Trumpet; -import com.hmdzl.spspd.items.weapon.melee.Wardurm; -import com.hmdzl.spspd.items.weapon.melee.WoodenStaff; -import com.hmdzl.spspd.items.weapon.melee.special.Handcannon; -import com.hmdzl.spspd.items.weapon.melee.special.Pumpkin; -import com.hmdzl.spspd.items.weapon.melee.special.RunicBlade; -import com.hmdzl.spspd.items.weapon.missiles.EmpBola; -import com.hmdzl.spspd.items.weapon.missiles.EscapeKnive; -import com.hmdzl.spspd.items.weapon.missiles.HugeShuriken; -import com.hmdzl.spspd.items.weapon.missiles.NormalBomb; -import com.hmdzl.spspd.items.weapon.missiles.RiceBall; -import com.hmdzl.spspd.items.weapon.missiles.ShatteredAmmo; -import com.hmdzl.spspd.items.weapon.missiles.Skull; -import com.hmdzl.spspd.items.weapon.missiles.Smoke; -import com.hmdzl.spspd.items.weapon.missiles.Wave; -import com.hmdzl.spspd.plants.NutPlant; -import com.hmdzl.spspd.plants.Rotberry; -import com.hmdzl.spspd.items.armor.Armor; -import com.hmdzl.spspd.items.armor.normalarmor.ClothArmor; -import com.hmdzl.spspd.items.armor.normalarmor.LeatherArmor; -import com.hmdzl.spspd.items.armor.normalarmor.MailArmor; -import com.hmdzl.spspd.items.armor.normalarmor.PlateArmor; -import com.hmdzl.spspd.items.armor.normalarmor.DiscArmor; -import com.hmdzl.spspd.items.armor.normalarmor.ScaleArmor; -import com.hmdzl.spspd.items.armor.normalarmor.ErrorArmor; -import com.hmdzl.spspd.items.artifacts.AlchemistsToolkit; -import com.hmdzl.spspd.items.artifacts.Artifact; -import com.hmdzl.spspd.items.artifacts.CapeOfThorns; -import com.hmdzl.spspd.items.artifacts.ChaliceOfBlood; -import com.hmdzl.spspd.items.artifacts.CloakOfShadows; -import com.hmdzl.spspd.items.artifacts.DriedRose; -import com.hmdzl.spspd.items.artifacts.HornOfPlenty; -import com.hmdzl.spspd.items.artifacts.MasterThievesArmband; -import com.hmdzl.spspd.items.artifacts.EyeOfSkadi; -import com.hmdzl.spspd.items.artifacts.SandalsOfNature; -import com.hmdzl.spspd.items.artifacts.TalismanOfForesight; -import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; -import com.hmdzl.spspd.items.artifacts.UnstableSpellbook; -import com.hmdzl.spspd.items.bags.Bag; -import com.hmdzl.spspd.items.food.fruit.Blackberry; -import com.hmdzl.spspd.items.food.fruit.Blueberry; -import com.hmdzl.spspd.items.food.fruit.Cloudberry; -import com.hmdzl.spspd.items.food.Food; -import com.hmdzl.spspd.items.food.fruit.Moonberry; -import com.hmdzl.spspd.items.food.staplefood.Pasty; -import com.hmdzl.spspd.items.food.staplefood.OverpricedRation; import com.hmdzl.spspd.items.nornstone.BlueNornStone; import com.hmdzl.spspd.items.nornstone.GreenNornStone; import com.hmdzl.spspd.items.nornstone.NornStone; @@ -197,14 +151,17 @@ import com.hmdzl.spspd.items.potions.PotionOfMending; import com.hmdzl.spspd.items.potions.PotionOfMight; import com.hmdzl.spspd.items.potions.PotionOfMindVision; +import com.hmdzl.spspd.items.potions.PotionOfMixing; import com.hmdzl.spspd.items.potions.PotionOfOverHealing; import com.hmdzl.spspd.items.potions.PotionOfParalyticGas; import com.hmdzl.spspd.items.potions.PotionOfPurity; +import com.hmdzl.spspd.items.potions.PotionOfShield; import com.hmdzl.spspd.items.potions.PotionOfStrength; import com.hmdzl.spspd.items.potions.PotionOfToxicGas; import com.hmdzl.spspd.items.rings.Ring; import com.hmdzl.spspd.items.rings.RingOfAccuracy; import com.hmdzl.spspd.items.rings.RingOfElements; +import com.hmdzl.spspd.items.rings.RingOfEnergy; import com.hmdzl.spspd.items.rings.RingOfEvasion; import com.hmdzl.spspd.items.rings.RingOfForce; import com.hmdzl.spspd.items.rings.RingOfFuror; @@ -224,46 +181,85 @@ import com.hmdzl.spspd.items.scrolls.ScrollOfRecharging; import com.hmdzl.spspd.items.scrolls.ScrollOfRegrowth; import com.hmdzl.spspd.items.scrolls.ScrollOfRemoveCurse; +import com.hmdzl.spspd.items.scrolls.ScrollOfSacrifice; import com.hmdzl.spspd.items.scrolls.ScrollOfTeleportation; import com.hmdzl.spspd.items.scrolls.ScrollOfTerror; import com.hmdzl.spspd.items.scrolls.ScrollOfUpgrade; +import com.hmdzl.spspd.items.summon.ActiveMrDestructo; +import com.hmdzl.spspd.items.summon.FairyCard; +import com.hmdzl.spspd.items.summon.Mobile; import com.hmdzl.spspd.items.wands.Wand; -import com.hmdzl.spspd.items.wands.WandOfCharm; +import com.hmdzl.spspd.items.wands.WandOfAcid; import com.hmdzl.spspd.items.wands.WandOfBlood; +import com.hmdzl.spspd.items.wands.WandOfCharm; import com.hmdzl.spspd.items.wands.WandOfDisintegration; +import com.hmdzl.spspd.items.wands.WandOfError; import com.hmdzl.spspd.items.wands.WandOfFirebolt; import com.hmdzl.spspd.items.wands.WandOfFlock; +import com.hmdzl.spspd.items.wands.WandOfFlow; +import com.hmdzl.spspd.items.wands.WandOfFreeze; +import com.hmdzl.spspd.items.wands.WandOfLight; import com.hmdzl.spspd.items.wands.WandOfLightning; import com.hmdzl.spspd.items.wands.WandOfMagicMissile; -import com.hmdzl.spspd.items.wands.WandOfPoison; -import com.hmdzl.spspd.items.wands.WandOfFreeze; -import com.hmdzl.spspd.items.wands.WandOfAcid; -import com.hmdzl.spspd.items.wands.WandOfError; +import com.hmdzl.spspd.items.wands.WandOfMeteorite; +import com.hmdzl.spspd.items.wands.WandOfSwamp; +import com.hmdzl.spspd.items.wands.WandOfTCloud; import com.hmdzl.spspd.items.weapon.Weapon; +import com.hmdzl.spspd.items.weapon.guns.GunA; +import com.hmdzl.spspd.items.weapon.guns.GunB; +import com.hmdzl.spspd.items.weapon.guns.GunC; +import com.hmdzl.spspd.items.weapon.guns.GunD; +import com.hmdzl.spspd.items.weapon.guns.GunE; +import com.hmdzl.spspd.items.weapon.melee.AssassinsBlade; import com.hmdzl.spspd.items.weapon.melee.BattleAxe; -import com.hmdzl.spspd.items.weapon.melee.Dualknive; -import com.hmdzl.spspd.items.weapon.melee.MageBook; -import com.hmdzl.spspd.items.weapon.melee.Nunchakus; +import com.hmdzl.spspd.items.weapon.melee.Club; import com.hmdzl.spspd.items.weapon.melee.Dagger; +import com.hmdzl.spspd.items.weapon.melee.Dualknive; +import com.hmdzl.spspd.items.weapon.melee.FightGloves; +import com.hmdzl.spspd.items.weapon.melee.Flute; import com.hmdzl.spspd.items.weapon.melee.Glaive; +import com.hmdzl.spspd.items.weapon.melee.Gsword; +import com.hmdzl.spspd.items.weapon.melee.Halberd; +import com.hmdzl.spspd.items.weapon.melee.Handaxe; +import com.hmdzl.spspd.items.weapon.melee.Harp; +import com.hmdzl.spspd.items.weapon.melee.HolyWater; import com.hmdzl.spspd.items.weapon.melee.Knuckles; -import com.hmdzl.spspd.items.weapon.melee.AssassinsBlade; +import com.hmdzl.spspd.items.weapon.melee.Lance; +import com.hmdzl.spspd.items.weapon.melee.Mace; +import com.hmdzl.spspd.items.weapon.melee.MageBook; +import com.hmdzl.spspd.items.weapon.melee.Nunchakus; +import com.hmdzl.spspd.items.weapon.melee.PrayerWheel; +import com.hmdzl.spspd.items.weapon.melee.Rapier; import com.hmdzl.spspd.items.weapon.melee.Scimitar; -import com.hmdzl.spspd.items.weapon.melee.Handaxe; import com.hmdzl.spspd.items.weapon.melee.ShortSword; import com.hmdzl.spspd.items.weapon.melee.Spear; -import com.hmdzl.spspd.items.weapon.melee.special.Spork; -import com.hmdzl.spspd.items.weapon.melee.Whip; +import com.hmdzl.spspd.items.weapon.melee.StoneCross; +import com.hmdzl.spspd.items.weapon.melee.Triangolo; +import com.hmdzl.spspd.items.weapon.melee.Trumpet; import com.hmdzl.spspd.items.weapon.melee.WarHammer; -import com.hmdzl.spspd.items.weapon.melee.Gsword; -import com.hmdzl.spspd.items.weapon.melee.Halberd; +import com.hmdzl.spspd.items.weapon.melee.Wardrum; +import com.hmdzl.spspd.items.weapon.melee.Whip; +import com.hmdzl.spspd.items.weapon.melee.WoodenStaff; import com.hmdzl.spspd.items.weapon.melee.special.ErrorW; +import com.hmdzl.spspd.items.weapon.melee.special.Handcannon; +import com.hmdzl.spspd.items.weapon.melee.special.Pumpkin; +import com.hmdzl.spspd.items.weapon.melee.special.RunicBlade; +import com.hmdzl.spspd.items.weapon.melee.special.Spork; import com.hmdzl.spspd.items.weapon.melee.special.TekkoKagi; import com.hmdzl.spspd.items.weapon.melee.special.WraithBreath; import com.hmdzl.spspd.items.weapon.missiles.Boomerang; -import com.hmdzl.spspd.items.weapon.missiles.PoisonDart; +import com.hmdzl.spspd.items.weapon.missiles.EmpBola; +import com.hmdzl.spspd.items.weapon.missiles.EscapeKnive; +import com.hmdzl.spspd.items.weapon.missiles.HugeShuriken; import com.hmdzl.spspd.items.weapon.missiles.IncendiaryDart; +import com.hmdzl.spspd.items.weapon.missiles.NormalBomb; +import com.hmdzl.spspd.items.weapon.missiles.PoisonDart; +import com.hmdzl.spspd.items.weapon.missiles.RiceBall; +import com.hmdzl.spspd.items.weapon.missiles.ShatteredAmmo; +import com.hmdzl.spspd.items.weapon.missiles.Skull; +import com.hmdzl.spspd.items.weapon.missiles.Smoke; import com.hmdzl.spspd.items.weapon.missiles.Tamahawk; +import com.hmdzl.spspd.items.weapon.missiles.Wave; import com.hmdzl.spspd.plants.BlandfruitBush; import com.hmdzl.spspd.plants.Blindweed; import com.hmdzl.spspd.plants.Dewcatcher; @@ -273,18 +269,22 @@ import com.hmdzl.spspd.plants.Firebloom; import com.hmdzl.spspd.plants.Flytrap; import com.hmdzl.spspd.plants.Icecap; +import com.hmdzl.spspd.plants.NutPlant; import com.hmdzl.spspd.plants.Phaseshift; -import com.hmdzl.spspd.plants.Seedpod; import com.hmdzl.spspd.plants.Plant; +import com.hmdzl.spspd.plants.Rotberry; +import com.hmdzl.spspd.plants.Seedpod; import com.hmdzl.spspd.plants.Sorrowmoss; import com.hmdzl.spspd.plants.Starflower; import com.hmdzl.spspd.plants.Stormvine; import com.hmdzl.spspd.plants.Sungrass; import com.watabou.utils.Random; +import java.util.HashMap; + public class Generator { - public static enum Category { + public enum Category { WEAPON(150, Weapon.class), MELEEWEAPON( 20,Weapon.class),OLDWEAPON(0,Weapon.class),RANGEWEAPON(20,Weapon.class),GUNWEAPON(0,Weapon.class),ARMOR(100, Armor.class), POTION(500, Potion.class), SCROLL(400, Scroll.class), WAND(40, Wand.class), RING(15, Ring.class), ARTIFACT(20, Artifact.class), SEED(5, Plant.Seed.class), SEED2(0, Plant.Seed.class),SEED3(0, Plant.Seed.class),SEED4(0, Plant.Seed.class), @@ -298,7 +298,7 @@ public static enum Category { public float prob; public Class superClass; - private Category(float prob, Class superClass) { + Category(float prob, Class superClass) { this.prob = prob; this.superClass = superClass; } @@ -313,9 +313,9 @@ public static int order(Item item) { return item instanceof Bag ? Integer.MAX_VALUE : Integer.MAX_VALUE - 1; } - }; + } - private static HashMap categoryProbs = new HashMap(); + private static HashMap categoryProbs = new HashMap(); //private static final float[] INITIAL_ARTIFACT_PROBS = new float[]{ 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; @@ -347,7 +347,7 @@ public static int order(Item item) { Category.WAND.classes = new Class[] { WandOfAcid.class, WandOfFreeze.class, WandOfFirebolt.class, - WandOfLight.class, WandOfPoison.class, WandOfBlood.class, + WandOfLight.class, WandOfSwamp.class, WandOfBlood.class, WandOfLightning.class, WandOfCharm.class, WandOfFlow.class, WandOfFlock.class, WandOfMagicMissile.class, WandOfDisintegration.class, @@ -361,7 +361,7 @@ public static int order(Item item) { Nunchakus.class, Scimitar.class,Whip.class,Spork.class, Rapier.class, AssassinsBlade.class,BattleAxe.class,Glaive.class,Handcannon.class,Club.class, Gsword.class, Halberd.class, WarHammer.class, RunicBlade.class, Lance.class, - Triangolo.class, Flute.class, Wardurm.class, Trumpet.class, Harp.class, + Triangolo.class, Flute.class, Wardrum.class, Trumpet.class, Harp.class, WoodenStaff.class, Mace.class, HolyWater.class, PrayerWheel.class, StoneCross.class }; Category.WEAPON.probs = new float[] { @@ -391,7 +391,7 @@ public static int order(Item item) { Nunchakus.class, Scimitar.class,Whip.class, Rapier.class, AssassinsBlade.class,BattleAxe.class,Glaive.class,Club.class, Gsword.class, Halberd.class, WarHammer.class, Lance.class, - Triangolo.class, Flute.class, Wardurm.class, Trumpet.class, Harp.class, + Triangolo.class, Flute.class, Wardrum.class, Trumpet.class, Harp.class, WoodenStaff.class, Mace.class, HolyWater.class, PrayerWheel.class, StoneCross.class}; Category.MELEEWEAPON.probs = new float[] { 1,1,1,1, @@ -424,7 +424,7 @@ public static int order(Item item) { }; Category.MUSICWEAPON.classes = new Class[] { - Triangolo.class, Flute.class, Wardurm.class, Trumpet.class, Harp.class}; + Triangolo.class, Flute.class, Wardrum.class, Trumpet.class, Harp.class}; Category.MUSICWEAPON.probs = new float[] { 1,1,1,1,1, }; @@ -602,7 +602,7 @@ public static Item random(Category cat) { public static Item random(Class cl) { try { - return ((Item) cl.newInstance()).random(); + return cl.newInstance().random(); } catch (Exception e) { diff --git a/java/com/hmdzl/spspd/items/Gold.java b/java/com/hmdzl/spspd/items/Gold.java index 8fb4e0f8..c637e704 100644 --- a/java/com/hmdzl/spspd/items/Gold.java +++ b/java/com/hmdzl/spspd/items/Gold.java @@ -17,24 +17,28 @@ */ package com.hmdzl.spspd.items; -import java.util.ArrayList; - import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.Statistics; +import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.EnergyArmor; import com.hmdzl.spspd.actors.buffs.GoldTouch; +import com.hmdzl.spspd.actors.buffs.MagicArmor; +import com.hmdzl.spspd.actors.buffs.MechArmor; +import com.hmdzl.spspd.actors.buffs.ShieldArmor; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.hero.HeroClass; import com.hmdzl.spspd.items.artifacts.MasterThievesArmband; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; - import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; import com.watabou.utils.Random; +import java.util.ArrayList; + public class Gold extends Item { private static final String TXT_COLLECT = "Collect gold coins to spend them later in a shop."; @@ -49,6 +53,8 @@ public class Gold extends Item { stackable = true; } + public static final String AC_UNARMOR = "UNARMOR"; + public Gold() { this(1); } @@ -59,7 +65,11 @@ public Gold(int value) { @Override public ArrayList actions(Hero hero) { - return new ArrayList(); + ArrayList actions = super.actions(hero); + actions.remove(AC_DROP); + actions.remove(AC_THROW); + actions.add(AC_UNARMOR); + return actions; } @Override @@ -90,6 +100,17 @@ public boolean doPickUp(Hero hero) { return true; } + @Override + public void execute(Hero hero, String action) { + + if (action.equals(AC_UNARMOR)) { + Buff.detach(hero,MagicArmor.class); + Buff.detach(hero,ShieldArmor.class); + Buff.detach(hero,MechArmor.class); + Buff.detach(hero,EnergyArmor.class); + } + } + @Override public boolean isUpgradable() { return false; diff --git a/java/com/hmdzl/spspd/items/Heap.java b/java/com/hmdzl/spspd/items/Heap.java index df4f951f..754b0db3 100644 --- a/java/com/hmdzl/spspd/items/Heap.java +++ b/java/com/hmdzl/spspd/items/Heap.java @@ -17,10 +17,6 @@ */ package com.hmdzl.spspd.items; -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedList; - import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.buffs.Buff; @@ -47,15 +43,15 @@ import com.hmdzl.spspd.items.potions.PotionOfMight; import com.hmdzl.spspd.items.potions.PotionOfStrength; import com.hmdzl.spspd.items.scrolls.Scroll; -import com.hmdzl.spspd.items.scrolls.ScrollOfUpgrade; import com.hmdzl.spspd.items.scrolls.ScrollOfMagicalInfusion; +import com.hmdzl.spspd.items.scrolls.ScrollOfUpgrade; import com.hmdzl.spspd.items.weapon.Weapon; import com.hmdzl.spspd.items.weapon.melee.relic.AresSword; import com.hmdzl.spspd.items.weapon.melee.relic.CromCruachAxe; +import com.hmdzl.spspd.items.weapon.melee.relic.JupitersWraith; import com.hmdzl.spspd.items.weapon.melee.relic.LokisFlail; import com.hmdzl.spspd.items.weapon.melee.relic.NeptunusTrident; -import com.hmdzl.spspd.items.weapon.melee.relic.JupitersWraith; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; @@ -64,6 +60,10 @@ import com.watabou.utils.Bundle; import com.watabou.utils.Random; +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedList; + public class Heap implements Bundlable { private static final int SEEDS_TO_POTION = 3; @@ -334,9 +334,10 @@ public void explode() { return; } // unique and upgraded items can endure the blast - } else if (!(item.level > 0 || item.unique)) - items.remove(item); + //} else if (!(item.level > 0 || item.unique)) + } else if (item instanceof Gold) + items.remove(item); } if (items.isEmpty()) diff --git a/java/com/hmdzl/spspd/items/Item.java b/java/com/hmdzl/spspd/items/Item.java index a15407d4..7c7eb28d 100644 --- a/java/com/hmdzl/spspd/items/Item.java +++ b/java/com/hmdzl/spspd/items/Item.java @@ -33,7 +33,7 @@ import com.hmdzl.spspd.items.bags.Bag; import com.hmdzl.spspd.items.weapon.missiles.Boomerang; import com.hmdzl.spspd.items.weapon.missiles.MissileWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.mechanics.Ballistica; import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; diff --git a/java/com/hmdzl/spspd/items/ItemStatusHandler.java b/java/com/hmdzl/spspd/items/ItemStatusHandler.java index c286c861..65950206 100644 --- a/java/com/hmdzl/spspd/items/ItemStatusHandler.java +++ b/java/com/hmdzl/spspd/items/ItemStatusHandler.java @@ -47,7 +47,7 @@ public ItemStatusHandler( Class[] items, String[] allLabels, Intege for (int i=0; i < items.length - exclude; i++) { - Class item = (Class)(items[i]); + Class item = items[i]; int index = Random.Int( labelsLeft.size() - exclude); @@ -60,7 +60,7 @@ public ItemStatusHandler( Class[] items, String[] allLabels, Intege for(int i = items.length - exclude; i < items.length; i++) { - Class item = (Class)(items[i]); + Class item = items[i]; labels.put( item, allLabels[i] ); diff --git a/java/com/hmdzl/spspd/items/KindOfArmor.java b/java/com/hmdzl/spspd/items/KindOfArmor.java index 0f05732e..0ca49368 100644 --- a/java/com/hmdzl/spspd/items/KindOfArmor.java +++ b/java/com/hmdzl/spspd/items/KindOfArmor.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.HeroSprite; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/items/KindOfWeapon.java b/java/com/hmdzl/spspd/items/KindOfWeapon.java index 445aefa2..208c27b0 100644 --- a/java/com/hmdzl/spspd/items/KindOfWeapon.java +++ b/java/com/hmdzl/spspd/items/KindOfWeapon.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/items/LloydsBeacon.java b/java/com/hmdzl/spspd/items/LloydsBeacon.java index 0d5aa7c6..9e076f76 100644 --- a/java/com/hmdzl/spspd/items/LloydsBeacon.java +++ b/java/com/hmdzl/spspd/items/LloydsBeacon.java @@ -31,7 +31,7 @@ import com.hmdzl.spspd.sprites.ItemSprite.Glowing; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.Game; import com.watabou.noosa.audio.Sample; diff --git a/java/com/hmdzl/spspd/items/OrbOfZot.java b/java/com/hmdzl/spspd/items/OrbOfZot.java index 577673a5..f23f64d5 100644 --- a/java/com/hmdzl/spspd/items/OrbOfZot.java +++ b/java/com/hmdzl/spspd/items/OrbOfZot.java @@ -34,7 +34,7 @@ import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; import com.watabou.utils.Random; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class OrbOfZot extends Item { diff --git a/java/com/hmdzl/spspd/items/Palantir.java b/java/com/hmdzl/spspd/items/Palantir.java index 1fdb540d..a7454ee0 100644 --- a/java/com/hmdzl/spspd/items/Palantir.java +++ b/java/com/hmdzl/spspd/items/Palantir.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.InterlevelScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/Playericon.java b/java/com/hmdzl/spspd/items/Playericon.java index 7b62b8eb..13883cc6 100644 --- a/java/com/hmdzl/spspd/items/Playericon.java +++ b/java/com/hmdzl/spspd/items/Playericon.java @@ -19,7 +19,7 @@ import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/PotKey.java b/java/com/hmdzl/spspd/items/PotKey.java index 43fe322e..e180802a 100644 --- a/java/com/hmdzl/spspd/items/PotKey.java +++ b/java/com/hmdzl/spspd/items/PotKey.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.InterlevelScene; import com.hmdzl.spspd.sprites.ItemSprite.Glowing; import com.hmdzl.spspd.sprites.ItemSpriteSheet; diff --git a/java/com/hmdzl/spspd/items/PowerHand.java b/java/com/hmdzl/spspd/items/PowerHand.java index 679b42fe..7135c5a8 100644 --- a/java/com/hmdzl/spspd/items/PowerHand.java +++ b/java/com/hmdzl/spspd/items/PowerHand.java @@ -24,7 +24,7 @@ import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.bags.Bag; import com.hmdzl.spspd.items.nornstone.NornStone; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.scenes.PowerHandScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; diff --git a/java/com/hmdzl/spspd/items/RedDewdrop.java b/java/com/hmdzl/spspd/items/RedDewdrop.java index 818b6e65..ff48d7df 100644 --- a/java/com/hmdzl/spspd/items/RedDewdrop.java +++ b/java/com/hmdzl/spspd/items/RedDewdrop.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.hero.HeroClass; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.watabou.noosa.audio.Sample; diff --git a/java/com/hmdzl/spspd/items/ShadowEaterKey.java b/java/com/hmdzl/spspd/items/ShadowEaterKey.java index 45bfc8c8..071931ce 100644 --- a/java/com/hmdzl/spspd/items/ShadowEaterKey.java +++ b/java/com/hmdzl/spspd/items/ShadowEaterKey.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.InterlevelScene; import com.hmdzl.spspd.sprites.ItemSprite.Glowing; import com.hmdzl.spspd.sprites.ItemSpriteSheet; diff --git a/java/com/hmdzl/spspd/items/SoulCollect.java b/java/com/hmdzl/spspd/items/SoulCollect.java index c72b2b80..7c5b278c 100644 --- a/java/com/hmdzl/spspd/items/SoulCollect.java +++ b/java/com/hmdzl/spspd/items/SoulCollect.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/Stylus.java b/java/com/hmdzl/spspd/items/Stylus.java index 2a6341d7..0810b60c 100644 --- a/java/com/hmdzl/spspd/items/Stylus.java +++ b/java/com/hmdzl/spspd/items/Stylus.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.actors.hero.HeroClass; import com.hmdzl.spspd.effects.particles.PurpleParticle; import com.hmdzl.spspd.items.armor.Armor; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/TenguKey.java b/java/com/hmdzl/spspd/items/TenguKey.java index b0eb955a..b3c72d67 100644 --- a/java/com/hmdzl/spspd/items/TenguKey.java +++ b/java/com/hmdzl/spspd/items/TenguKey.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.InterlevelScene; import com.hmdzl.spspd.sprites.ItemSprite.Glowing; import com.hmdzl.spspd.sprites.ItemSpriteSheet; diff --git a/java/com/hmdzl/spspd/items/TomeOfMastery.java b/java/com/hmdzl/spspd/items/TomeOfMastery.java index 29b84e69..c799e0fa 100644 --- a/java/com/hmdzl/spspd/items/TomeOfMastery.java +++ b/java/com/hmdzl/spspd/items/TomeOfMastery.java @@ -30,7 +30,7 @@ import com.hmdzl.spspd.effects.SpellSprite; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.utils.GLog; import com.hmdzl.spspd.windows.WndChooseWay; diff --git a/java/com/hmdzl/spspd/items/Towel.java b/java/com/hmdzl/spspd/items/Towel.java index aa615fd4..889191fc 100644 --- a/java/com/hmdzl/spspd/items/Towel.java +++ b/java/com/hmdzl/spspd/items/Towel.java @@ -33,7 +33,7 @@ import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.actors.mobs.pets.PET; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/TransmutationBall.java b/java/com/hmdzl/spspd/items/TransmutationBall.java index 85156a11..53118d17 100644 --- a/java/com/hmdzl/spspd/items/TransmutationBall.java +++ b/java/com/hmdzl/spspd/items/TransmutationBall.java @@ -30,7 +30,7 @@ import com.hmdzl.spspd.items.rings.Ring; import com.hmdzl.spspd.items.wands.Wand; import com.hmdzl.spspd.items.weapon.melee.MeleeWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.windows.WndBag; diff --git a/java/com/hmdzl/spspd/items/TreasureMap.java b/java/com/hmdzl/spspd/items/TreasureMap.java index 88c6ba05..f0bf152f 100644 --- a/java/com/hmdzl/spspd/items/TreasureMap.java +++ b/java/com/hmdzl/spspd/items/TreasureMap.java @@ -27,7 +27,7 @@ import com.hmdzl.spspd.actors.mobs.pets.PET; import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.InterlevelScene; import com.hmdzl.spspd.sprites.ItemSprite.Glowing; import com.hmdzl.spspd.sprites.ItemSpriteSheet; diff --git a/java/com/hmdzl/spspd/items/TriForce.java b/java/com/hmdzl/spspd/items/TriForce.java index 086f7f28..e2097520 100644 --- a/java/com/hmdzl/spspd/items/TriForce.java +++ b/java/com/hmdzl/spspd/items/TriForce.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.InterlevelScene; import com.hmdzl.spspd.sprites.ItemSprite.Glowing; import com.hmdzl.spspd.sprites.ItemSpriteSheet; diff --git a/java/com/hmdzl/spspd/items/UpgradeBlobRed.java b/java/com/hmdzl/spspd/items/UpgradeBlobRed.java index 0bb24731..59dc9102 100644 --- a/java/com/hmdzl/spspd/items/UpgradeBlobRed.java +++ b/java/com/hmdzl/spspd/items/UpgradeBlobRed.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.actors.hero.HeroClass; import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.items.scrolls.ScrollOfUpgrade; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/UpgradeBlobViolet.java b/java/com/hmdzl/spspd/items/UpgradeBlobViolet.java index 3d567f46..b854cdcd 100644 --- a/java/com/hmdzl/spspd/items/UpgradeBlobViolet.java +++ b/java/com/hmdzl/spspd/items/UpgradeBlobViolet.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.actors.hero.HeroClass; import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.items.scrolls.ScrollOfUpgrade; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/UpgradeBlobYellow.java b/java/com/hmdzl/spspd/items/UpgradeBlobYellow.java index cb6e8b54..08789855 100644 --- a/java/com/hmdzl/spspd/items/UpgradeBlobYellow.java +++ b/java/com/hmdzl/spspd/items/UpgradeBlobYellow.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.actors.hero.HeroClass; import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.items.scrolls.ScrollOfUpgrade; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/UpgradeEatBall.java b/java/com/hmdzl/spspd/items/UpgradeEatBall.java index eea6a28d..ec2de13a 100644 --- a/java/com/hmdzl/spspd/items/UpgradeEatBall.java +++ b/java/com/hmdzl/spspd/items/UpgradeEatBall.java @@ -27,7 +27,7 @@ import com.hmdzl.spspd.items.potions.Potion; import com.hmdzl.spspd.items.scrolls.Scroll; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Seedpod; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; @@ -88,11 +88,11 @@ public void onSelect(Item item) { Item result; if (item != null) { if (item.isUpgradable()) { - result = eatUpgradable((Item) item); + result = eatUpgradable(item); } else if (item instanceof Scroll || item instanceof Potion || item instanceof Stylus) { - result = eatStandard((Item) item); + result = eatStandard(item); } else { result = null; } diff --git a/java/com/hmdzl/spspd/items/VioletDewdrop.java b/java/com/hmdzl/spspd/items/VioletDewdrop.java index 3b03b8ba..9c7374f5 100644 --- a/java/com/hmdzl/spspd/items/VioletDewdrop.java +++ b/java/com/hmdzl/spspd/items/VioletDewdrop.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.hero.HeroClass; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.watabou.noosa.audio.Sample; diff --git a/java/com/hmdzl/spspd/items/Weightstone.java b/java/com/hmdzl/spspd/items/Weightstone.java index bb9b5075..360513ff 100644 --- a/java/com/hmdzl/spspd/items/Weightstone.java +++ b/java/com/hmdzl/spspd/items/Weightstone.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.actors.hero.HeroClass; import com.hmdzl.spspd.effects.particles.PurpleParticle; import com.hmdzl.spspd.items.weapon.Weapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; @@ -106,8 +106,8 @@ public int price() { @Override public void onSelect(Item item) { if (item != null) { - Weightstone.this.apply((Weapon) item);; - } + Weightstone.this.apply((Weapon) item); + } } }; diff --git a/java/com/hmdzl/spspd/items/Whistle.java b/java/com/hmdzl/spspd/items/Whistle.java index 694ab154..41d3ec9a 100644 --- a/java/com/hmdzl/spspd/items/Whistle.java +++ b/java/com/hmdzl/spspd/items/Whistle.java @@ -17,12 +17,9 @@ */ package com.hmdzl.spspd.items; -import java.util.ArrayList; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.hero.Hero; - -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; @@ -30,6 +27,9 @@ import com.hmdzl.spspd.ui.RenderedTextMultiline; import com.hmdzl.spspd.ui.Window; import com.hmdzl.spspd.windows.IconTitle; +import com.hmdzl.spspd.windows.WndDocument; + +import java.util.ArrayList; public class Whistle extends Item { @@ -57,8 +57,8 @@ public ArrayList actions(Hero hero) { public void execute(Hero hero, String action) { - if (action == AC_CALL) { - GameScene.show( new WndWhistle(this) ); + if (action == AC_CALL) { + GameScene.show( new WndDocument() ); } else { super.execute(hero, action); @@ -77,6 +77,8 @@ public boolean isUpgradable() { public boolean isIdentified() { return true; } + + private static class WndWhistle extends Window { private static final int BTN_SIZE = 32; diff --git a/java/com/hmdzl/spspd/items/YellowDewdrop.java b/java/com/hmdzl/spspd/items/YellowDewdrop.java index 9439316e..dd686f30 100644 --- a/java/com/hmdzl/spspd/items/YellowDewdrop.java +++ b/java/com/hmdzl/spspd/items/YellowDewdrop.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.hero.HeroClass; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.watabou.noosa.audio.Sample; diff --git a/java/com/hmdzl/spspd/items/armor/Armor.java b/java/com/hmdzl/spspd/items/armor/Armor.java index 81bd16d0..114eb5bc 100644 --- a/java/com/hmdzl/spspd/items/armor/Armor.java +++ b/java/com/hmdzl/spspd/items/armor/Armor.java @@ -36,7 +36,7 @@ import com.hmdzl.spspd.items.armor.glyphs.Revivalglyph; import com.hmdzl.spspd.items.armor.glyphs.Testglyph; import com.hmdzl.spspd.items.rings.RingOfEvasion; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.Item; @@ -175,7 +175,7 @@ public int energyFactor(Hero hero) { public int drRoll(Hero hero) { int encumbrance = STR() - hero.STR(); int dr = super.drRoll(hero); - return encumbrance > 0 ? Math.max((int)(Math.round(dr)*(1-encumbrance/3)),0) :Math.round(dr); + return encumbrance > 0 ? Math.max(Math.round(dr)*(1-encumbrance/3),0) :Math.round(dr); } diff --git a/java/com/hmdzl/spspd/items/armor/glyphs/Darkglyph.java b/java/com/hmdzl/spspd/items/armor/glyphs/Darkglyph.java index 4794bc90..5f1322ab 100644 --- a/java/com/hmdzl/spspd/items/armor/glyphs/Darkglyph.java +++ b/java/com/hmdzl/spspd/items/armor/glyphs/Darkglyph.java @@ -17,33 +17,22 @@ */ package com.hmdzl.spspd.items.armor.glyphs; -import android.icu.util.Calendar; - import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Hunger; -import com.hmdzl.spspd.actors.buffs.Weakness; import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphDark; import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphEarth; import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphElectricity; import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphFire; import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphIce; import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphLight; -import com.hmdzl.spspd.actors.mobs.DwarfLich; -import com.hmdzl.spspd.actors.mobs.Fiend; -import com.hmdzl.spspd.actors.mobs.Warlock; import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.items.armor.Armor; import com.hmdzl.spspd.items.armor.Armor.Glyph; import com.hmdzl.spspd.items.misc.FourClover; -import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.sprites.ItemSprite.Glowing; -import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Random; -import java.util.HashSet; - public class Darkglyph extends Glyph { private static ItemSprite.Glowing BLACK = new ItemSprite.Glowing( 0x000000 ); @@ -75,7 +64,7 @@ public int proc(Armor armor, Char attacker, Char defender, int damage) { int healing = Random.Int(attacker.HP/10); if (healing > 0) { - defender.HP += Random.Int(Math.min(healing, defender.HT - defender.HP)/2); + defender.HP += Random.Int(Math.min(healing, (defender.HT - defender.HP)/4)/2); defender.sprite.emitter().burst(Speck.factory(Speck.HEALING), 1); //defender.sprite.showStatus(CharSprite.POSITIVE,Integer.toString(healing)); attacker.damage(healing, this); diff --git a/java/com/hmdzl/spspd/items/armor/glyphs/Iceglyph.java b/java/com/hmdzl/spspd/items/armor/glyphs/Iceglyph.java index 87ef1e84..e7ad4197 100644 --- a/java/com/hmdzl/spspd/items/armor/glyphs/Iceglyph.java +++ b/java/com/hmdzl/spspd/items/armor/glyphs/Iceglyph.java @@ -19,27 +19,25 @@ import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Frost; +import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphDark; +import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphEarth; +import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphElectricity; +import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphFire; +import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphIce; +import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphLight; import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.particles.SnowParticle; import com.hmdzl.spspd.items.armor.Armor; import com.hmdzl.spspd.items.armor.Armor.Glyph; import com.hmdzl.spspd.items.misc.FourClover; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.sprites.ItemSprite.Glowing; import com.hmdzl.spspd.ui.BuffIndicator; -import com.hmdzl.spspd.messages.Messages; -import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphDark; -import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphEarth; -import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphElectricity; -import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphFire; -import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphIce; -import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphLight; - import com.watabou.utils.Bundle; import com.watabou.utils.Random; @@ -151,9 +149,9 @@ public boolean attachTo(Char target) { public void prolong(int damage) { this.damage += damage; - }; + } - @Override + @Override public int icon() { return BuffIndicator.DEFERRED; } @@ -172,7 +170,7 @@ public boolean act() { if (target == Dungeon.hero && !target.isAlive()) { Glyph glyph = new Iceglyph(); - Dungeon.fail(Messages.format(ResultDescriptions.GLYPH)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n("%s killed you...", glyph.name()); Badges.validateDeathFromGlyph(); diff --git a/java/com/hmdzl/spspd/items/armor/glyphs/Lightglyph.java b/java/com/hmdzl/spspd/items/armor/glyphs/Lightglyph.java index 854debf7..30cd6a07 100644 --- a/java/com/hmdzl/spspd/items/armor/glyphs/Lightglyph.java +++ b/java/com/hmdzl/spspd/items/armor/glyphs/Lightglyph.java @@ -21,29 +21,22 @@ import com.hmdzl.spspd.actors.buffs.Amok; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Charm; -import com.hmdzl.spspd.actors.buffs.Frost; import com.hmdzl.spspd.actors.buffs.Terror; -import com.hmdzl.spspd.actors.mobs.SewerHeart; -import com.hmdzl.spspd.effects.CellEmitter; -import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.effects.particles.SnowParticle; -import com.hmdzl.spspd.items.armor.Armor; -import com.hmdzl.spspd.items.armor.Armor.Glyph; -import com.hmdzl.spspd.items.misc.FourClover; -import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.sprites.ItemSprite; -import com.hmdzl.spspd.sprites.ItemSprite.Glowing; import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphDark; import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphEarth; import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphElectricity; import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphFire; import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphIce; import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphLight; +import com.hmdzl.spspd.effects.Speck; +import com.hmdzl.spspd.items.armor.Armor; +import com.hmdzl.spspd.items.armor.Armor.Glyph; +import com.hmdzl.spspd.items.misc.FourClover; +import com.hmdzl.spspd.sprites.ItemSprite; +import com.hmdzl.spspd.sprites.ItemSprite.Glowing; import com.watabou.utils.GameMath; import com.watabou.utils.Random; -import java.util.HashSet; - public class Lightglyph extends Glyph { private static ItemSprite.Glowing YELLOW = new ItemSprite.Glowing( 0xFFFF44 ); @@ -72,10 +65,7 @@ public int proc(Armor armor, Char attacker, Char defender, int damage) { int level = (int) GameMath.gate(0, armor.level, 6); if (Random.Int(level / 2 + 5) >= 4) { - - int duration = Random.IntRange(4, 7); - Buff.affect(attacker, Charm.class, Charm.durationFactor(attacker) - * duration).object = defender.id(); + Buff.affect(attacker, Charm.class, Random.IntRange( 4, 7 )).object = defender.id(); Buff.affect(attacker, Amok.class,10f); attacker.sprite.centerEmitter().start(Speck.factory(Speck.HEART),0.2f, 5); } diff --git a/java/com/hmdzl/spspd/items/armor/glyphs/Revivalglyph.java b/java/com/hmdzl/spspd/items/armor/glyphs/Revivalglyph.java index 65d872f9..7884a5af 100644 --- a/java/com/hmdzl/spspd/items/armor/glyphs/Revivalglyph.java +++ b/java/com/hmdzl/spspd/items/armor/glyphs/Revivalglyph.java @@ -33,31 +33,25 @@ import com.hmdzl.spspd.actors.buffs.Slow; import com.hmdzl.spspd.actors.buffs.Tar; import com.hmdzl.spspd.actors.buffs.Vertigo; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.effects.CellEmitter; -import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.effects.particles.LeafParticle; import com.hmdzl.spspd.items.armor.Armor; import com.hmdzl.spspd.items.armor.Armor.Glyph; import com.hmdzl.spspd.items.misc.FourClover; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.sprites.ItemSprite.Glowing; -import com.hmdzl.spspd.utils.GLog; import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphDark; import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphEarth; import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphElectricity; import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphFire; import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphIce; import com.hmdzl.spspd.actors.buffs.armorbuff.GlyphLight; -import com.watabou.utils.PathFinder; import com.watabou.utils.Random; -import java.util.ArrayList; - public class Revivalglyph extends Glyph { private static ItemSprite.Glowing RED = new ItemSprite.Glowing(0xCC0000); @@ -95,7 +89,7 @@ public int proc(Armor armor, Char attacker, Char defender, int damage) { Buff.detach(defender, Burning.class); Buff.detach(defender, Ooze.class); Buff.detach(defender, Tar.class); - Buff.detach(defender, Weakness.class); + Buff.detach(defender, STRdown.class); Buff.detach(defender, Vertigo.class); Buff.detach(defender, Poison.class); Buff.detach(defender, Cripple.class); diff --git a/java/com/hmdzl/spspd/items/armor/normalarmor/DiscArmor.java b/java/com/hmdzl/spspd/items/armor/normalarmor/DiscArmor.java index 083cf03b..0859e1a4 100644 --- a/java/com/hmdzl/spspd/items/armor/normalarmor/DiscArmor.java +++ b/java/com/hmdzl/spspd/items/armor/normalarmor/DiscArmor.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.items.armor.normalarmor; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class DiscArmor extends NormalArmor { diff --git a/java/com/hmdzl/spspd/items/armor/normalarmor/ErrorArmor.java b/java/com/hmdzl/spspd/items/armor/normalarmor/ErrorArmor.java index 52c94b0c..37de1cef 100644 --- a/java/com/hmdzl/spspd/items/armor/normalarmor/ErrorArmor.java +++ b/java/com/hmdzl/spspd/items/armor/normalarmor/ErrorArmor.java @@ -81,7 +81,7 @@ public void proc(Char attacker, Char defender, int damage) { break; case 4 : if (defender.HP < defender.HT){ - defender.HP += (int)((defender.HT)/10); + defender.HP += (defender.HT)/10; defender.sprite.emitter().start(Speck.factory(Speck.HEALING), 0.4f,1);} break; case 5 : @@ -102,6 +102,6 @@ public void proc(Char attacker, Char defender, int damage) { if (glyph != null) { glyph.proc(this, attacker, defender, damage); - } ; - }; + } + } } diff --git a/java/com/hmdzl/spspd/items/armor/normalarmor/LeatherArmor.java b/java/com/hmdzl/spspd/items/armor/normalarmor/LeatherArmor.java index 32e6238a..3737feb6 100644 --- a/java/com/hmdzl/spspd/items/armor/normalarmor/LeatherArmor.java +++ b/java/com/hmdzl/spspd/items/armor/normalarmor/LeatherArmor.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.items.armor.normalarmor; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class LeatherArmor extends NormalArmor { diff --git a/java/com/hmdzl/spspd/items/armor/normalarmor/LifeArmor.java b/java/com/hmdzl/spspd/items/armor/normalarmor/LifeArmor.java index 46f8f620..dfe28126 100644 --- a/java/com/hmdzl/spspd/items/armor/normalarmor/LifeArmor.java +++ b/java/com/hmdzl/spspd/items/armor/normalarmor/LifeArmor.java @@ -17,24 +17,13 @@ */ package com.hmdzl.spspd.items.armor.normalarmor; -import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.actors.buffs.ArmorBreak; -import com.hmdzl.spspd.actors.buffs.AttackDown; -import com.hmdzl.spspd.actors.buffs.Bleeding; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.GrowSeed; -import com.hmdzl.spspd.actors.buffs.Ooze; -import com.hmdzl.spspd.actors.buffs.Shocked; -import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.effects.particles.ShadowParticle; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.watabou.utils.Bundle; -import com.watabou.utils.Random; public class LifeArmor extends NormalArmor { @@ -109,7 +98,7 @@ public boolean act() { if (time > 1) { time--; } else { - Dungeon.hero.HP += charge; + Dungeon.hero.HP += Math.min(Dungeon.hero.HT-Dungeon.hero.HP, charge); charge = 0; } @@ -148,6 +137,6 @@ public void proc(Char attacker, Char defender, int damage) { if (glyph != null) { glyph.proc(this, attacker, defender, damage); - } ; - }; + } + } } diff --git a/java/com/hmdzl/spspd/items/armor/normalarmor/MailArmor.java b/java/com/hmdzl/spspd/items/armor/normalarmor/MailArmor.java index bb76094a..62c6d7e5 100644 --- a/java/com/hmdzl/spspd/items/armor/normalarmor/MailArmor.java +++ b/java/com/hmdzl/spspd/items/armor/normalarmor/MailArmor.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.items.armor.normalarmor; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class MailArmor extends NormalArmor { diff --git a/java/com/hmdzl/spspd/items/armor/normalarmor/NormalArmor.java b/java/com/hmdzl/spspd/items/armor/normalarmor/NormalArmor.java index 4590aaf3..49110f58 100644 --- a/java/com/hmdzl/spspd/items/armor/normalarmor/NormalArmor.java +++ b/java/com/hmdzl/spspd/items/armor/normalarmor/NormalArmor.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.items.armor.Armor; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.items.Item; @@ -48,7 +48,7 @@ private int min() { } private int max() { - return (int) ( 8*tier - 4 ); + return 8*tier - 4; } diff --git a/java/com/hmdzl/spspd/items/armor/normalarmor/PlateArmor.java b/java/com/hmdzl/spspd/items/armor/normalarmor/PlateArmor.java index 67d88bff..dfd8e128 100644 --- a/java/com/hmdzl/spspd/items/armor/normalarmor/PlateArmor.java +++ b/java/com/hmdzl/spspd/items/armor/normalarmor/PlateArmor.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.items.armor.normalarmor; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class PlateArmor extends NormalArmor { diff --git a/java/com/hmdzl/spspd/items/armor/normalarmor/ScaleArmor.java b/java/com/hmdzl/spspd/items/armor/normalarmor/ScaleArmor.java index 100f9422..76031fab 100644 --- a/java/com/hmdzl/spspd/items/armor/normalarmor/ScaleArmor.java +++ b/java/com/hmdzl/spspd/items/armor/normalarmor/ScaleArmor.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.items.armor.normalarmor; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class ScaleArmor extends NormalArmor { diff --git a/java/com/hmdzl/spspd/items/artifacts/AlchemistsToolkit.java b/java/com/hmdzl/spspd/items/artifacts/AlchemistsToolkit.java index 6555d6d5..29a6d48d 100644 --- a/java/com/hmdzl/spspd/items/artifacts/AlchemistsToolkit.java +++ b/java/com/hmdzl/spspd/items/artifacts/AlchemistsToolkit.java @@ -14,7 +14,7 @@ import com.hmdzl.spspd.items.potions.PotionOfMight; import com.hmdzl.spspd.items.potions.PotionOfOverHealing; import com.hmdzl.spspd.items.potions.PotionOfStrength; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; @@ -184,8 +184,8 @@ public String desc() { // would only trigger if an upgraded toolkit was gained through // transmutation or bones. } else { - result += Messages.get(this, "need_fix");; - } + result += Messages.get(this, "need_fix"); + } return result; } diff --git a/java/com/hmdzl/spspd/items/artifacts/AlienBag.java b/java/com/hmdzl/spspd/items/artifacts/AlienBag.java index a485280c..50f56e4e 100644 --- a/java/com/hmdzl/spspd/items/artifacts/AlienBag.java +++ b/java/com/hmdzl/spspd/items/artifacts/AlienBag.java @@ -1,14 +1,12 @@ package com.hmdzl.spspd.items.artifacts; -import java.util.ArrayList; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.DefenceUp; +import com.hmdzl.spspd.actors.buffs.EnergyArmor; import com.hmdzl.spspd.actors.buffs.HasteBuff; import com.hmdzl.spspd.actors.buffs.Invisibility; import com.hmdzl.spspd.actors.buffs.Levitation; -import com.hmdzl.spspd.actors.buffs.ShieldArmor; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.messages.Messages; @@ -16,6 +14,8 @@ import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Bundle; +import java.util.ArrayList; + /** * Created by dachhack on 10/15/2015. */ @@ -66,7 +66,7 @@ else if (charge != chargeCap) GLog.i(Messages.get(this, "no_charge")); else { charge = 0; - Buff.affect(hero,ShieldArmor.class).level(level * 20); + Buff.affect(hero,EnergyArmor.class).level(level * 20); Buff.affect(hero,DefenceUp.class,20).level(level * 5); hero.spend(1f); updateQuickslot(); diff --git a/java/com/hmdzl/spspd/items/artifacts/Artifact.java b/java/com/hmdzl/spspd/items/artifacts/Artifact.java index c90c956f..05f8c075 100644 --- a/java/com/hmdzl/spspd/items/artifacts/Artifact.java +++ b/java/com/hmdzl/spspd/items/artifacts/Artifact.java @@ -9,7 +9,7 @@ import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.KindofMisc; import com.hmdzl.spspd.utils.GLog; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Bundle; import com.watabou.utils.Random; @@ -230,9 +230,9 @@ protected String convertName(String className) { className = className.replaceAll("(\\p{Ll})(\\p{Lu})", "$1 $2"); return className; - }; + } - @Override + @Override public Item random() { if (Random.Float() < 0.3f) { cursed = true; diff --git a/java/com/hmdzl/spspd/items/artifacts/CapeOfThorns.java b/java/com/hmdzl/spspd/items/artifacts/CapeOfThorns.java index d63ac1ea..deeedb83 100644 --- a/java/com/hmdzl/spspd/items/artifacts/CapeOfThorns.java +++ b/java/com/hmdzl/spspd/items/artifacts/CapeOfThorns.java @@ -7,7 +7,7 @@ import com.hmdzl.spspd.actors.buffs.Needling; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.effects.particles.ElmoParticle; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.ui.BuffIndicator; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/artifacts/ChaliceOfBlood.java b/java/com/hmdzl/spspd/items/artifacts/ChaliceOfBlood.java index 76f57271..19e8af77 100644 --- a/java/com/hmdzl/spspd/items/artifacts/ChaliceOfBlood.java +++ b/java/com/hmdzl/spspd/items/artifacts/ChaliceOfBlood.java @@ -1,26 +1,25 @@ package com.hmdzl.spspd.items.artifacts; -import java.util.ArrayList; - import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; +import com.hmdzl.spspd.actors.buffs.Bleeding; import com.hmdzl.spspd.actors.buffs.BloodAngry; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.effects.particles.ElmoParticle; import com.hmdzl.spspd.effects.particles.ShadowParticle; import com.hmdzl.spspd.items.Item; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Earthroot; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.utils.GLog; - import com.hmdzl.spspd.windows.WndOptions; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Random; +import java.util.ArrayList; + /** * Created by debenhame on 27/08/2014. */ @@ -73,8 +72,8 @@ public void execute(Hero hero, String action) { protected void onSelect(int index) { if (index == 0) prick(Dungeon.hero); - }; - }); + } + }); } else { prick(hero); @@ -96,7 +95,7 @@ protected void onSelect(int index) { } private void prick(Hero hero) { - int damage = 3 * (level * level); + int damage = 2 * (level * level); Earthroot.Armor armor = hero.buff(Earthroot.Armor.class); if (armor != null) { @@ -117,9 +116,10 @@ private void prick(Hero hero) { } hero.damage(damage, this); + Buff.affect(hero,Bleeding.class).set(level * level); if (!hero.isAlive()) { - Dungeon.fail(Messages.format(ResultDescriptions.ITEM)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n("The Chalice sucks your life essence dry..."); } else { upgrade(); diff --git a/java/com/hmdzl/spspd/items/artifacts/CloakOfShadows.java b/java/com/hmdzl/spspd/items/artifacts/CloakOfShadows.java index bd3a2527..6def6964 100644 --- a/java/com/hmdzl/spspd/items/artifacts/CloakOfShadows.java +++ b/java/com/hmdzl/spspd/items/artifacts/CloakOfShadows.java @@ -9,7 +9,7 @@ import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.effects.particles.ElmoParticle; import com.hmdzl.spspd.items.Item; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.ui.BuffIndicator; diff --git a/java/com/hmdzl/spspd/items/artifacts/DriedRose.java b/java/com/hmdzl/spspd/items/artifacts/DriedRose.java index 9006a929..3188ec52 100644 --- a/java/com/hmdzl/spspd/items/artifacts/DriedRose.java +++ b/java/com/hmdzl/spspd/items/artifacts/DriedRose.java @@ -1,8 +1,5 @@ package com.hmdzl.spspd.items.artifacts; -import java.util.ArrayList; -import java.util.HashSet; - import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; @@ -12,6 +9,7 @@ import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.Dewcharge; import com.hmdzl.spspd.actors.hero.Hero; +import com.hmdzl.spspd.actors.hero.HeroSubClass; import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.actors.mobs.RedWraith; import com.hmdzl.spspd.actors.mobs.npcs.Ghost; @@ -29,7 +27,7 @@ import com.hmdzl.spspd.items.weapon.missiles.ManyKnive; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.messages.Languages; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.GhostSprite; @@ -42,12 +40,14 @@ import com.hmdzl.spspd.windows.IconTitle; import com.hmdzl.spspd.windows.WndBag; import com.hmdzl.spspd.windows.WndBlacksmith; -import com.hmdzl.spspd.windows.WndQuest; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; import com.watabou.utils.PathFinder; import com.watabou.utils.Random; +import java.util.ArrayList; +import java.util.HashSet; + /** * Created by debenhame on 21/11/2014. */ @@ -60,17 +60,18 @@ public class DriedRose extends Artifact { level = 0; levelCap = 10; - charge = 100; - chargeCap = 100; + charge = 200; + chargeCap = 200; defaultAction = AC_SUMMON; } protected static boolean talkedTo = false; protected static boolean firstSummon = false; - + private GhostHero ghost = null; - private int ghostID = 0; + private SuperGhostHero spghost = null; + //private int ghostID = 0; private MeleeWeapon weapon = null; private Armor armor = null; @@ -112,8 +113,9 @@ public void execute( Hero hero, String action ) { if (action.equals(AC_SUMMON)) { - if (ghost != null) GLog.i( Messages.get(this, "spawned") ); - else if (!isEquipped( hero )) GLog.i( Messages.get(Artifact.class, "need_to_equip") ); + //if (ghost != null) GLog.i( Messages.get(this, "spawned") ); + //else + if (!isEquipped( hero )) GLog.i( Messages.get(Artifact.class, "need_to_equip") ); else if (charge != chargeCap) GLog.i( Messages.get(this, "no_charge") ); else if (cursed) GLog.i( Messages.get(this, "cursed") ); else { @@ -126,11 +128,15 @@ public void execute( Hero hero, String action ) { } if (spawnPoints.size() > 0) { + + spghost = new SuperGhostHero(this); ghost = new GhostHero( this ); - ghostID = ghost.id(); + //ghostID = ghost.id(); ghost.pos = Random.element(spawnPoints); - - GameScene.add(ghost, 1f); + spghost.pos = Random.element(spawnPoints); + if (Dungeon.hero.subClass == HeroSubClass.LEADER){ + GameScene.add(spghost, 1f); + } else GameScene.add(ghost, 1f); CellEmitter.get(ghost.pos).start( ShaftParticle.FACTORY, 0.3f, 4 ); CellEmitter.get(ghost.pos).start( Speck.factory(Speck.LIGHT), 0.2f, 3 ); @@ -138,18 +144,17 @@ public void execute( Hero hero, String action ) { hero.busy(); hero.sprite.operate(hero.pos); - if (!firstSummon) { - ghost.yell( Messages.get(GhostHero.class, "hello", Dungeon.hero.givenName()) ); - Sample.INSTANCE.play( Assets.SND_GHOST ); - firstSummon = true; - } else - ghost.saySpawned(); + //if (!firstSummon) { + // ghost.yell( Messages.get(GhostHero.class, "hello", Dungeon.hero.givenName()) ); + //Sample.INSTANCE.play( Assets.SND_GHOST ); + // firstSummon = true; + //} else + //ghost.saySpawned(); charge = 0; updateQuickslot(); - } else - GLog.i( Messages.get(this, "no_space") ); + } else GLog.i( Messages.get(this, "no_space") ); } } else if (action.equals(AC_OUTFIT)){ @@ -158,7 +163,7 @@ public void execute( Hero hero, String action ) { curUser = hero; Sample.INSTANCE.play(Assets.SND_BURNING); curUser.sprite.emitter().burst(ElmoParticle.FACTORY, 12); - Buff.affect(curUser, Dewcharge.class,level*100f); + Buff.affect(curUser, Dewcharge.class).level(level*100); curUser.spendAndNext(1f); detach(curUser.belongings.backpack); } @@ -166,7 +171,7 @@ public void execute( Hero hero, String action ) { } public int ghostStrength(){ - return 13 + level/2; + return 30; } @Override @@ -222,7 +227,7 @@ public void storeInBundle(Bundle bundle) { bundle.put(TALKEDTO, talkedTo); bundle.put(FIRSTSUMMON, firstSummon); - bundle.put( GHOSTID, ghostID ); + //bundle.put( GHOSTID, ghostID ); bundle.put( PETALS, droppedPetals ); if (weapon != null) bundle.put( WEAPON, weapon ); @@ -235,7 +240,7 @@ public void restoreFromBundle(Bundle bundle) { talkedTo = bundle.getBoolean(TALKEDTO); firstSummon = bundle.getBoolean(FIRSTSUMMON); - ghostID = bundle.getInt( GHOSTID ); + //ghostID = bundle.getInt( GHOSTID ); droppedPetals = bundle.getInt( PETALS ); if (bundle.contains(WEAPON)) weapon = (MeleeWeapon)bundle.get( WEAPON ); @@ -244,33 +249,33 @@ public void restoreFromBundle(Bundle bundle) { private static GhostHero heldGhost; - public static void holdGhostHero( Level level ){ - for (Mob mob : level.mobs.toArray( new Mob[0] )) { - if (mob instanceof DriedRose.GhostHero) { - level.mobs.remove( mob ); - heldGhost = (GhostHero) mob; - break; - } - } - } + //public static void holdGhostHero( Level level ){ + //for (Mob mob : level.mobs.toArray( new Mob[0] )) { + // if (mob instanceof DriedRose.GhostHero) { + // level.mobs.remove( mob ); + // heldGhost = (GhostHero) mob; + // break; + // } + //} + //} - public static void restoreGhostHero( Level level, int pos ){ - if (heldGhost != null){ - level.mobs.add( heldGhost ); + //public static void restoreGhostHero( Level level, int pos ){ + // if (heldGhost != null){ + // level.mobs.add( heldGhost ); - int ghostPos; - do { - ghostPos = pos + PathFinder.NEIGHBOURS8[Random.Int(8)]; - } while (Level.solid[ghostPos] || level.findMob(ghostPos) != null); - - heldGhost.pos = ghostPos; - heldGhost = null; - } - } + // int ghostPos; + // do { + // ghostPos = pos + PathFinder.NEIGHBOURS8[Random.Int(8)]; + // } while (Level.solid[ghostPos] || level.findMob(ghostPos) != null); + // + // heldGhost.pos = ghostPos; + // heldGhost = null; + // } + //} - public static void clearHeldGhostHero(){ - heldGhost = null; - } + //public static void clearHeldGhostHero(){ + //heldGhost = null; + //} public class roseRecharge extends ArtifactBuff { @@ -279,19 +284,19 @@ public boolean act() { spend( TICK ); - if (ghost == null && ghostID != 0){ - Actor a = Actor.findById(ghostID); - if (a != null){ - ghost = (GhostHero)a; - } else { - ghostID = 0; - } - } + //if (ghost == null && ghostID != 0){ + //Actor a = Actor.findById(ghostID); + //if (a != null){ + // ghost = (GhostHero)a; + //} else { + // ghostID = 0; + // } + //} //rose does not charge while ghost hero is alive - if (ghost != null){ - return true; - } + //if (ghost != null){ + //return true; + //} if (charge < chargeCap && !cursed ) { partialCharge += 2/5f; //250 turns to a full charge @@ -366,7 +371,7 @@ public static class GhostHero extends NPC { { //name = "sad ghost"; - spriteClass = NewGhostSprite.class; + spriteClass = GhostSprite.class; flying = true; @@ -376,7 +381,10 @@ public static class GhostHero extends NPC { ally = true; loot = new WraithBreath(); - lootChance = 0.3f; + lootChance = 0.2f; + + lootOther = new Petal(); + lootChance = 1f; } private DriedRose rose = null; @@ -397,9 +405,9 @@ private void updateRose(){ rose = Dungeon.hero.belongings.getItem(DriedRose.class); } - evadeSkill = (Dungeon.hero.lvl+4)*2; + evadeSkill = 5; if (rose == null) return; - HT = 50 + 20*rose.level; + HT = 20 + 10*rose.level; } public void saySpawned(){ @@ -438,12 +446,12 @@ public void sayBossBeaten(){ protected boolean act() { updateRose(); if (rose == null || !rose.isEquipped(Dungeon.hero)){ - damage(1, this); - } + damage(5, this); + } else damage(1,this); if (!isAlive()) return true; if (!Dungeon.hero.isAlive()) { - sayHeroKilled(); + //sayHeroKilled(); sprite.die(); destroy(); return true; @@ -454,7 +462,7 @@ protected boolean act() { @Override public int hitSkill(Char target) { //same accuracy as the hero. - int acc = Dungeon.hero.lvl + 9; + int acc = 10; if (rose != null && rose.weapon != null){ acc *= rose.weapon.ACU; @@ -475,7 +483,7 @@ protected float attackDelay() { @Override protected boolean canAttack(Char enemy) { if (rose != null && rose.weapon != null) { - return Dungeon.level.distance(pos, enemy.pos) <= rose.weapon.RCH; + return Level.distance(pos, enemy.pos) <= rose.weapon.RCH; } else { return super.canAttack(enemy); } @@ -523,7 +531,7 @@ public float speed() { @Override public int evadeSkill(Char enemy) { - int eva = Dungeon.hero.lvl + 4; + int eva = 5; if (rose != null && rose.armor != null){ eva *= rose.armor.DEX; @@ -572,11 +580,12 @@ public void add(Buff buff) { @Override public boolean interact() { - if (!DriedRose.talkedTo){ - DriedRose.talkedTo = true; - GameScene.show(new WndQuest(this, Messages.get(this, "introduce") )); - return false; - } else if (Dungeon.level.passable[pos] || Dungeon.hero.flying) { + //if (!DriedRose.talkedTo){ + //DriedRose.talkedTo = true; + //GameScene.show(new WndQuest(this, Messages.get(this, "introduce") )); + // return false; + //} else + if (Level.passable[pos] || Dungeon.hero.flying) { int curPos = pos; moveSprite( pos, Dungeon.hero.pos ); @@ -595,30 +604,14 @@ public boolean interact() { @Override public void die(Object cause) { - sayDefeated(); + //sayDefeated(); super.die(cause); } - @Override - public void destroy() { - updateRose(); - if (rose != null) { - rose.ghost = null; - rose.ghostID = -1; - } - super.destroy(); - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(ToxicGas.class); - IMMUNITIES.add( Burning.class ); - IMMUNITIES.add(ScrollOfPsionicBlast.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + { + immunities.add(ToxicGas.class); + immunities.add( Burning.class ); + immunities.add(ScrollOfPsionicBlast.class); } // ************************************************************************************ @@ -724,6 +717,223 @@ public HashSet> immunities() { public static final String[] VOICE_BLESSEDANKH = { "Incredible!...", "Wish I had one of those...", "How did you survive that?..." }; } + + public static class SuperGhostHero extends NPC { + + { + //name = "sad ghost"; + spriteClass = NewGhostSprite.class; + + flying = true; + + state = WANDERING; + enemy = null; + + ally = true; + + loot = new WraithBreath(); + lootChance = 0.2f; + + lootOther = new Petal(); + lootChance = 1f; + } + + private DriedRose rose = null; + + public SuperGhostHero() { + super(); + } + + public SuperGhostHero(DriedRose rose) { + this(); + this.rose = rose; + updateRose(); + HP = HT; + } + + private void updateRose(){ + if (rose == null) { + rose = Dungeon.hero.belongings.getItem(DriedRose.class); + } + + evadeSkill = 5; + if (rose == null) return; + HT = 40 + 15*rose.level; + } + + @Override + protected boolean act() { + updateRose(); + if (rose == null || !rose.isEquipped(Dungeon.hero)){ + damage( 5, this); + } + if (!isAlive()) + return true; + if (!Dungeon.hero.isAlive()) { + //sayHeroKilled(); + sprite.die(); + destroy(); + return true; + } + return super.act(); + } + + @Override + public int hitSkill(Char target) { + //same accuracy as the hero. + int acc = 25; + + if (rose != null && rose.weapon != null){ + acc *= rose.weapon.ACU; + } + + return acc; + } + + @Override + protected float attackDelay() { + if (rose != null && rose.weapon != null){ + return rose.weapon.DLY; + } else { + return super.attackDelay(); + } + } + + @Override + protected boolean canAttack(Char enemy) { + if (rose != null && rose.weapon != null) { + return Level.distance(pos, enemy.pos) <= rose.weapon.RCH; + } else { + return super.canAttack(enemy); + } + } + + @Override + public int damageRoll() { + int dmg = 0; + if (rose != null && rose.weapon != null){ + dmg += Random.NormalIntRange(rose.weapon.MIN, 2*rose.weapon.MAX); + } else { + dmg += Random.NormalIntRange(0, 10); + } + + return dmg; + } + + @Override + public int attackProc(Char enemy, int damage) { + if (rose != null && rose.weapon != null) { + rose.weapon.proc(this, enemy, damage); + return damage; + } else { + return super.attackProc(enemy, damage); + } + } + + @Override + public int defenseProc(Char enemy, int damage) { + return super.defenseProc(enemy, damage); + } + + @Override + public void damage(int dmg, Object src) { + //TODO improve this when I have proper damage source logic + super.damage( dmg, src ); + } + + @Override + public float speed() { + float speed = super.speed(); + return speed; + } + + @Override + public int evadeSkill(Char enemy) { + + int eva = 10; + + if (rose != null && rose.armor != null){ + eva *= rose.armor.DEX; + } + //int defense = super.evadeSkill(enemy); + return eva; + } + + @Override + public int drRoll() { + int block = 0; + if (rose != null && rose.armor != null){ + block += Random.NormalIntRange( 2*rose.armor.MIN, rose.armor.MAX); + } + return block; + } + + @Override + protected boolean getCloser(int target) { + if (state == WANDERING + || Level.distance(target, Dungeon.hero.pos) > 6) + this.target = target = Dungeon.hero.pos; + return super.getCloser(target); + } + + @Override + protected Char chooseEnemy() { + if (enemy == null || !enemy.isAlive() || state == WANDERING) { + + HashSet enemies = new HashSet(); + for (Mob mob : Dungeon.level.mobs) { + if (mob.hostile && Level.fieldOfView[mob.pos] + && mob.state != mob.PASSIVE) { + enemies.add(mob); + } + } + enemy = enemies.size() > 0 ? Random.element(enemies) : null; + } + return enemy; + } + + @Override + public void add(Buff buff) { + // in other words, can't be directly affected by buffs/debuffs. + } + + @Override + public boolean interact() { + //if (!DriedRose.talkedTo){ + //DriedRose.talkedTo = true; + //GameScene.show(new WndQuest(this, Messages.get(this, "introduce") )); + // return false; + //} else + if (Level.passable[pos] || Dungeon.hero.flying) { + int curPos = pos; + + moveSprite( pos, Dungeon.hero.pos ); + move( Dungeon.hero.pos ); + + Dungeon.hero.sprite.move( Dungeon.hero.pos, curPos ); + Dungeon.hero.move( curPos ); + + Dungeon.hero.spend( 1 / Dungeon.hero.speed() ); + Dungeon.hero.busy(); + return true; + } else { + return false; + } + } + + @Override + public void die(Object cause) { + //sayDefeated(); + super.die(cause); + } + + { + immunities.add(ToxicGas.class); + immunities.add( Burning.class ); + immunities.add(ScrollOfPsionicBlast.class); + } + } + private static class WndGhostHero extends Window { private static final int BTN_SIZE = 32; diff --git a/java/com/hmdzl/spspd/items/artifacts/EtherealChains.java b/java/com/hmdzl/spspd/items/artifacts/EtherealChains.java index 73434375..652c08db 100644 --- a/java/com/hmdzl/spspd/items/artifacts/EtherealChains.java +++ b/java/com/hmdzl/spspd/items/artifacts/EtherealChains.java @@ -36,7 +36,7 @@ import com.hmdzl.spspd.effects.particles.ElmoParticle; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; diff --git a/java/com/hmdzl/spspd/items/artifacts/EyeOfSkadi.java b/java/com/hmdzl/spspd/items/artifacts/EyeOfSkadi.java index bed8423a..4ddd8af5 100644 --- a/java/com/hmdzl/spspd/items/artifacts/EyeOfSkadi.java +++ b/java/com/hmdzl/spspd/items/artifacts/EyeOfSkadi.java @@ -19,7 +19,7 @@ import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.StoneOre; import com.hmdzl.spspd.items.nornstone.NornStone; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; diff --git a/java/com/hmdzl/spspd/items/artifacts/GlassTotem.java b/java/com/hmdzl/spspd/items/artifacts/GlassTotem.java index 49df67b8..e7286ded 100644 --- a/java/com/hmdzl/spspd/items/artifacts/GlassTotem.java +++ b/java/com/hmdzl/spspd/items/artifacts/GlassTotem.java @@ -10,7 +10,7 @@ import com.hmdzl.spspd.actors.buffs.GlassShield; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.effects.particles.ElmoParticle; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.audio.Sample; diff --git a/java/com/hmdzl/spspd/items/artifacts/HornOfPlenty.java b/java/com/hmdzl/spspd/items/artifacts/HornOfPlenty.java index ff6b526f..9aa8e7b1 100644 --- a/java/com/hmdzl/spspd/items/artifacts/HornOfPlenty.java +++ b/java/com/hmdzl/spspd/items/artifacts/HornOfPlenty.java @@ -18,7 +18,7 @@ import com.hmdzl.spspd.items.food.fruit.Blandfruit; import com.hmdzl.spspd.items.food.Food; import com.hmdzl.spspd.items.scrolls.ScrollOfRecharging; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; @@ -82,10 +82,10 @@ else if (charge == 0) // if you get at least 100 food energy from the horn if (charge >= 3) { - switch (hero.heroClass) { + /*switch (hero.heroClass) { case WARRIOR: - if (hero.HP < hero.HT) { - hero.HP = Math.min(hero.HP + 5, hero.HT); + if (hero.HP < hero.TRUE_HT) { + hero.HP = Math.min(hero.HP + 5, hero.TRUE_HT); hero.sprite.emitter().burst( Speck.factory(Speck.HEALING), 1); } @@ -100,7 +100,7 @@ else if (charge == 0) case SOLDIER: case FOLLOWER: break; - } + }*/ Statistics.foodEaten++; } diff --git a/java/com/hmdzl/spspd/items/artifacts/MasterThievesArmband.java b/java/com/hmdzl/spspd/items/artifacts/MasterThievesArmband.java index bab4035a..5bf6cbea 100644 --- a/java/com/hmdzl/spspd/items/artifacts/MasterThievesArmband.java +++ b/java/com/hmdzl/spspd/items/artifacts/MasterThievesArmband.java @@ -7,7 +7,7 @@ import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.effects.particles.ElmoParticle; import com.hmdzl.spspd.items.Generator; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/items/artifacts/Pylon.java b/java/com/hmdzl/spspd/items/artifacts/Pylon.java index 9dc0f118..a57b3a09 100644 --- a/java/com/hmdzl/spspd/items/artifacts/Pylon.java +++ b/java/com/hmdzl/spspd/items/artifacts/Pylon.java @@ -34,7 +34,7 @@ import com.hmdzl.spspd.items.scrolls.ScrollOfTeleportation; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.scenes.InterlevelScene; @@ -160,8 +160,8 @@ public void execute( Hero hero, String action ) { Buff buff = Dungeon.hero.buff(TimekeepersHourglass.timeFreeze.class); if (buff != null) buff.detach(); - for (Mob mob : Dungeon.level.mobs.toArray( new Mob[0] )) - if (mob instanceof DriedRose.GhostHero) mob.destroy(); + //for (Mob mob : Dungeon.level.mobs.toArray( new Mob[0] )) + //if (mob instanceof DriedRose.GhostHero) mob.destroy(); InterlevelScene.mode = InterlevelScene.Mode.RETURN; InterlevelScene.returnDepth = returnDepth; @@ -171,11 +171,12 @@ public void execute( Hero hero, String action ) { } else if (action == AC_RANKUP) { - hero.HT +=5; + hero.TRUE_HT +=5; hero.hitSkill++; hero.evadeSkill++; hero.magicSkill++; level = 0; + Dungeon.hero.updateHT(true); hero.sprite.showStatus(CharSprite.POSITIVE, Messages.get(this, "rankup")); }else { diff --git a/java/com/hmdzl/spspd/items/artifacts/RobotDMT.java b/java/com/hmdzl/spspd/items/artifacts/RobotDMT.java index 7b092d19..d431f0da 100644 --- a/java/com/hmdzl/spspd/items/artifacts/RobotDMT.java +++ b/java/com/hmdzl/spspd/items/artifacts/RobotDMT.java @@ -1,8 +1,5 @@ package com.hmdzl.spspd.items.artifacts; -import java.io.IOException; -import java.util.ArrayList; - import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.buffs.AttackUp; @@ -20,7 +17,7 @@ import com.hmdzl.spspd.items.wands.WandOfError; import com.hmdzl.spspd.items.weapon.melee.special.ErrorW; import com.hmdzl.spspd.items.weapon.missiles.ErrorAmmo; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.LoadSaveScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; @@ -29,6 +26,9 @@ import com.watabou.utils.Bundle; import com.watabou.utils.Random; +import java.io.IOException; +import java.util.ArrayList; + /** * Created by dachhack on 10/15/2015. */ @@ -105,7 +105,7 @@ else if (charge != chargeCap) GLog.w(Messages.get(this,"justice")); break; case 6: - Buff.affect(hero,Dewcharge.class, 100f); + Buff.affect(hero,Dewcharge.class).level(100); GLog.w(Messages.get(this,"soul")); break; case 7: diff --git a/java/com/hmdzl/spspd/items/artifacts/SandalsOfNature.java b/java/com/hmdzl/spspd/items/artifacts/SandalsOfNature.java index e13d6fc7..542403c7 100644 --- a/java/com/hmdzl/spspd/items/artifacts/SandalsOfNature.java +++ b/java/com/hmdzl/spspd/items/artifacts/SandalsOfNature.java @@ -15,7 +15,7 @@ import com.hmdzl.spspd.effects.particles.ElmoParticle; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Earthroot; import com.hmdzl.spspd.plants.Plant; import com.hmdzl.spspd.scenes.GameScene; diff --git a/java/com/hmdzl/spspd/items/artifacts/TalismanOfForesight.java b/java/com/hmdzl/spspd/items/artifacts/TalismanOfForesight.java index b2eb1a63..159b2c76 100644 --- a/java/com/hmdzl/spspd/items/artifacts/TalismanOfForesight.java +++ b/java/com/hmdzl/spspd/items/artifacts/TalismanOfForesight.java @@ -11,7 +11,7 @@ import com.hmdzl.spspd.effects.particles.ElmoParticle; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.ui.BuffIndicator; diff --git a/java/com/hmdzl/spspd/items/artifacts/TimekeepersHourglass.java b/java/com/hmdzl/spspd/items/artifacts/TimekeepersHourglass.java index e79759be..7133b6b0 100644 --- a/java/com/hmdzl/spspd/items/artifacts/TimekeepersHourglass.java +++ b/java/com/hmdzl/spspd/items/artifacts/TimekeepersHourglass.java @@ -1,7 +1,5 @@ package com.hmdzl.spspd.items.artifacts; -import java.util.ArrayList; - import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; @@ -14,7 +12,7 @@ import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.effects.particles.ElmoParticle; import com.hmdzl.spspd.items.Item; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; @@ -25,6 +23,8 @@ import com.watabou.utils.Bundle; import com.watabou.utils.Random; +import java.util.ArrayList; + /** * Created by debenhame on 01/12/2014. */ @@ -101,8 +101,8 @@ protected void onSelect(int index) { activeBuff = new timeFreeze(); activeBuff.attachTo(Dungeon.hero); } - }; - }); + } + }); } else if (action.equals(AC_RESTART)){ level--; diff --git a/java/com/hmdzl/spspd/items/artifacts/UnstableSpellbook.java b/java/com/hmdzl/spspd/items/artifacts/UnstableSpellbook.java index 1d4a5123..926fcdcb 100644 --- a/java/com/hmdzl/spspd/items/artifacts/UnstableSpellbook.java +++ b/java/com/hmdzl/spspd/items/artifacts/UnstableSpellbook.java @@ -42,7 +42,7 @@ import com.hmdzl.spspd.items.scrolls.ScrollOfMagicMapping; import com.hmdzl.spspd.items.scrolls.ScrollOfRemoveCurse; import com.hmdzl.spspd.items.scrolls.ScrollOfTeleportation; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; @@ -101,7 +101,7 @@ public ArrayList actions( Hero hero ) { actions.add(AC_READ); if (isEquipped( hero ) && level< levelCap && !cursed) actions.add(AC_ADD); - if (isEquipped(hero) && level > 3 && !cursed) + if (!isEquipped(hero) && level > 3 && !cursed ) actions.add(AC_SONG); return actions; } @@ -142,29 +142,49 @@ public void execute( Hero hero, String action ) { GameScene.selectItem(itemSelector, mode, Messages.get(this, "prompt")); } else if (action.equals( AC_SONG )) { curUser = hero; - switch (Random.Int(3)){ + switch (level){ case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + Buff.affect(hero, AttackUp.class,level*10f).level(25); + Buff.affect(hero, DefenceUp.class,level*10f).level(25); + Buff.affect(hero, Arcane.class,level*10f); + Buff.affect(hero, TargetShoot.class,level*10f); + break; + case 8: + case 9: + Buff.affect(hero, AttackUp.class,level*10f).level(25); + Buff.affect(hero, DefenceUp.class,level*10f).level(25); + Buff.affect(hero, Arcane.class,level*10f); + Buff.affect(hero, TargetShoot.class,level*10f); Dungeon.hero.hitSkill++; Dungeon.hero.evadeSkill++; GLog.w(Messages.get(SkillOfAtk.class, "skillup")); GLog.w(Messages.get(SkillOfDef.class, "skillup")); break; - case 1: + case 10: Buff.affect(hero, AttackUp.class,level*10f).level(25); Buff.affect(hero, DefenceUp.class,level*10f).level(25); Buff.affect(hero, Arcane.class,level*10f); Buff.affect(hero, TargetShoot.class,level*10f); - break; - case 2: + Dungeon.hero.hitSkill++; + Dungeon.hero.evadeSkill++; + GLog.w(Messages.get(SkillOfAtk.class, "skillup")); + GLog.w(Messages.get(SkillOfDef.class, "skillup")); Dungeon.hero.magicSkill++; Buff.affect(hero, Invisibility.class, level*10f ); Buff.affect(hero, HasteBuff.class, level*3f ); GLog.w(Messages.get(SkillOfMig.class, "skillup")); break; } - level-=4; - exp-=100; curUser.spendAndNext(1f); + detach(curUser.belongings.backpack); + Dungeon.level.drop(new UnstableSpellbook(),hero.pos); updateQuickslot(); Sample.INSTANCE.play(Assets.SND_BURNING); curUser.sprite.emitter().burst(ElmoParticle.FACTORY, 12); @@ -262,7 +282,7 @@ public void onSelect(Item item) { item.detach(hero.belongings.backpack); GLog.h(Messages.get(UnstableSpellbook.class, "exp",consumedpts)); - int levelChk = ((level*2)+1)*10; + int levelChk = (level+20); if (consumedpts > levelChk && level<10) { upgrade(); diff --git a/java/com/hmdzl/spspd/items/bags/Bag.java b/java/com/hmdzl/spspd/items/bags/Bag.java index ba12240c..d0f64b5e 100644 --- a/java/com/hmdzl/spspd/items/bags/Bag.java +++ b/java/com/hmdzl/spspd/items/bags/Bag.java @@ -131,8 +131,7 @@ public void restoreFromBundle(Bundle bundle) { if (item != null) ((Item) item).collect(this); } - ; - } + } public boolean contains(Item item) { for (Item i : items) { diff --git a/java/com/hmdzl/spspd/items/bags/HeartOfScarecrow.java b/java/com/hmdzl/spspd/items/bags/HeartOfScarecrow.java index ccc53d4c..beee318c 100644 --- a/java/com/hmdzl/spspd/items/bags/HeartOfScarecrow.java +++ b/java/com/hmdzl/spspd/items/bags/HeartOfScarecrow.java @@ -40,15 +40,11 @@ public class HeartOfScarecrow extends Bag { @Override public boolean grab(Item item) { - if (item instanceof MeleeWeapon - ||item instanceof MissileWeapon - ||item instanceof RelicMeleeWeapon - || item instanceof Armor - ||item instanceof ShadowEaterKey){ - return true; - } else { - return false; - } + return item instanceof MeleeWeapon + || item instanceof MissileWeapon + || item instanceof RelicMeleeWeapon + || item instanceof Armor + || item instanceof ShadowEaterKey; } @Override diff --git a/java/com/hmdzl/spspd/items/bags/KeyRing.java b/java/com/hmdzl/spspd/items/bags/KeyRing.java index d5804528..ef7dbfff 100644 --- a/java/com/hmdzl/spspd/items/bags/KeyRing.java +++ b/java/com/hmdzl/spspd/items/bags/KeyRing.java @@ -43,22 +43,17 @@ public class KeyRing extends Bag { @Override public boolean grab(Item item) { - if (item instanceof Key - || item instanceof TenguKey - || item instanceof PotKey - || item instanceof AncientCoin - || item instanceof ConchShell - || item instanceof Bone - || item instanceof TriForce - || item instanceof DolyaSlate - || item instanceof Ring - || item instanceof TreasureMap - || item instanceof ChallengeBook - ){ - return true; - } else { - return false; - } + return item instanceof Key + || item instanceof TenguKey + || item instanceof PotKey + || item instanceof AncientCoin + || item instanceof ConchShell + || item instanceof Bone + || item instanceof TriForce + || item instanceof DolyaSlate + || item instanceof Ring + || item instanceof TreasureMap + || item instanceof ChallengeBook; } @Override diff --git a/java/com/hmdzl/spspd/items/bags/PotionBandolier.java b/java/com/hmdzl/spspd/items/bags/PotionBandolier.java index f59f060b..4fad534a 100644 --- a/java/com/hmdzl/spspd/items/bags/PotionBandolier.java +++ b/java/com/hmdzl/spspd/items/bags/PotionBandolier.java @@ -22,15 +22,10 @@ public class PotionBandolier extends Bag { @Override public boolean grab(Item item) { - if (item instanceof Potion || - item instanceof Pill || - item instanceof Bomb || - item instanceof Egg - ){ - return true; - } else { - return false; - } + return item instanceof Potion || + item instanceof Pill || + item instanceof Bomb || + item instanceof Egg; } @Override diff --git a/java/com/hmdzl/spspd/items/bags/ScrollHolder.java b/java/com/hmdzl/spspd/items/bags/ScrollHolder.java index a9bc1469..45751d6e 100644 --- a/java/com/hmdzl/spspd/items/bags/ScrollHolder.java +++ b/java/com/hmdzl/spspd/items/bags/ScrollHolder.java @@ -46,19 +46,14 @@ public class ScrollHolder extends Bag { @Override public boolean grab(Item item) { - if (item instanceof Scroll - || item instanceof ActiveMrDestructo - || item instanceof CallCoconut - || item instanceof Mobile - || item instanceof FairyCard - || item instanceof OrbOfZot - || item instanceof JournalPage - || item instanceof ChallengeList - ){ - return true; - } else { - return false; - } + return item instanceof Scroll + || item instanceof ActiveMrDestructo + || item instanceof CallCoconut + || item instanceof Mobile + || item instanceof FairyCard + || item instanceof OrbOfZot + || item instanceof JournalPage + || item instanceof ChallengeList; } @Override diff --git a/java/com/hmdzl/spspd/items/bags/SeedPouch.java b/java/com/hmdzl/spspd/items/bags/SeedPouch.java index e7df5e3b..cd6206a3 100644 --- a/java/com/hmdzl/spspd/items/bags/SeedPouch.java +++ b/java/com/hmdzl/spspd/items/bags/SeedPouch.java @@ -36,13 +36,9 @@ public class SeedPouch extends Bag { @Override public boolean grab(Item item) { - if (item instanceof Plant.Seed - || item instanceof StoneOre - || item instanceof NornStone){ - return true; - } else { - return false; - } + return item instanceof Plant.Seed + || item instanceof StoneOre + || item instanceof NornStone; } @Override diff --git a/java/com/hmdzl/spspd/items/bags/WandHolster.java b/java/com/hmdzl/spspd/items/bags/WandHolster.java index a48ef7e4..5d8efddf 100644 --- a/java/com/hmdzl/spspd/items/bags/WandHolster.java +++ b/java/com/hmdzl/spspd/items/bags/WandHolster.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.items.weapon.guns.GunWeapon; import com.hmdzl.spspd.items.weapon.spammo.SpAmmo; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class WandHolster extends Bag { @@ -39,16 +39,12 @@ public class WandHolster extends Bag { @Override public boolean grab(Item item) { - if (item instanceof Wand - || item instanceof TriforceOfCourage - || item instanceof TriforceOfPower - || item instanceof TriforceOfWisdom - || item instanceof SpAmmo - || item instanceof GunWeapon){ - return true; - } else { - return false; - } + return item instanceof Wand + || item instanceof TriforceOfCourage + || item instanceof TriforceOfPower + || item instanceof TriforceOfWisdom + || item instanceof SpAmmo + || item instanceof GunWeapon; } diff --git a/java/com/hmdzl/spspd/items/bombs/Bomb.java b/java/com/hmdzl/spspd/items/bombs/Bomb.java index 4de7120c..900dc7c1 100644 --- a/java/com/hmdzl/spspd/items/bombs/Bomb.java +++ b/java/com/hmdzl/spspd/items/bombs/Bomb.java @@ -27,7 +27,8 @@ import com.hmdzl.spspd.effects.particles.BlastParticle; import com.hmdzl.spspd.items.Heap; import com.hmdzl.spspd.items.Item; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; @@ -86,7 +87,7 @@ public void execute(Hero hero, String action) { @Override protected void onThrow( int cell ) { - if (!Dungeon.level.pit[ cell ] && lightingFuse) { + if (!Level.pit[ cell ] && lightingFuse) { Actor.addDelayed(fuse = new Fuse().ignite(this), 2); } if (Actor.findChar( cell ) != null && !(Actor.findChar( cell ) instanceof Hero) ){ diff --git a/java/com/hmdzl/spspd/items/bombs/BuildBomb.java b/java/com/hmdzl/spspd/items/bombs/BuildBomb.java index b1f5152e..3f0711f9 100644 --- a/java/com/hmdzl/spspd/items/bombs/BuildBomb.java +++ b/java/com/hmdzl/spspd/items/bombs/BuildBomb.java @@ -26,7 +26,6 @@ import com.hmdzl.spspd.levels.Terrain; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; - import com.watabou.utils.Random; public class BuildBomb extends Bomb { @@ -47,7 +46,7 @@ public void explode(int cell) { CellEmitter.get(c).burst(SmokeParticle.FACTORY, 4); } - if (Level.flamable[c]) { + if (Level.flamable[c] || Dungeon.level.map[c] == Terrain.GLASS_WALL) { Level.set(c, Terrain.EMBERS); GameScene.updateMap(c); terrainAffected = true; @@ -57,11 +56,12 @@ public void explode(int cell) { if (ch != null) { // those not at the center of the blast take damage less // consistently. + + int minDamage = ch.HT/12; int maxDamage = ch.HT/5; - int dmg = Random.NormalIntRange(minDamage, maxDamage) - - Math.max(ch.drRoll(),0); + int dmg = Random.NormalIntRange(minDamage, maxDamage); if (dmg > 0) { ch.damage(dmg, this); } diff --git a/java/com/hmdzl/spspd/items/bombs/DangerousBomb.java b/java/com/hmdzl/spspd/items/bombs/DangerousBomb.java index 3bfdacc0..c39889c7 100644 --- a/java/com/hmdzl/spspd/items/bombs/DangerousBomb.java +++ b/java/com/hmdzl/spspd/items/bombs/DangerousBomb.java @@ -29,7 +29,6 @@ import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; - import com.watabou.utils.Random; public class DangerousBomb extends Bomb { @@ -56,7 +55,7 @@ public void explode(int cell) { terrainAffected = true; } - if (Dungeon.level.map[c] == Terrain.WALL && Level.insideMap(c)){ + if ((Dungeon.level.map[c] == Terrain.WALL || Dungeon.level.map[c] == Terrain.GLASS_WALL ) && Level.insideMap(c)){ Level.set(c, Terrain.EMPTY); GameScene.updateMap(c); terrainAffected = true; @@ -84,7 +83,7 @@ public void explode(int cell) { if (ch == Dungeon.hero && !ch.isAlive()) // constant is used here in the rare instance a player // is killed by a double bomb. - Dungeon.fail(Messages.format(ResultDescriptions.ITEM)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); } } } diff --git a/java/com/hmdzl/spspd/items/bombs/DarkBomb.java b/java/com/hmdzl/spspd/items/bombs/DarkBomb.java index 8ea5563b..02515de0 100644 --- a/java/com/hmdzl/spspd/items/bombs/DarkBomb.java +++ b/java/com/hmdzl/spspd/items/bombs/DarkBomb.java @@ -22,6 +22,7 @@ import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.ShadowCurse; import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.particles.SmokeParticle; @@ -50,6 +51,7 @@ public void explode(int cell) { Char ch = Actor.findChar(c); if (ch != null){ Buff.affect(ch, Terror.class, Terror.DURATION).object = curUser.id(); + Buff.affect(ch, ShadowCurse.class); if (ch.properties().contains(Char.Property.HUMAN) || ch.properties().contains(Char.Property.PLANT) || ch.properties().contains(Char.Property.ORC) diff --git a/java/com/hmdzl/spspd/items/bombs/DungeonBomb.java b/java/com/hmdzl/spspd/items/bombs/DungeonBomb.java index 36f6d930..e404c3a0 100644 --- a/java/com/hmdzl/spspd/items/bombs/DungeonBomb.java +++ b/java/com/hmdzl/spspd/items/bombs/DungeonBomb.java @@ -57,7 +57,7 @@ public void explode(int cell) { terrainAffected = true; } - if (Dungeon.level.map[c] == Terrain.WALL && Level.insideMap(c)){ + if ((Dungeon.level.map[c] == Terrain.WALL || Dungeon.level.map[c] == Terrain.GLASS_WALL )&& Level.insideMap(c)){ Level.set(c, Terrain.EMPTY); GameScene.updateMap(c); terrainAffected = true; diff --git a/java/com/hmdzl/spspd/items/bombs/EarthBomb.java b/java/com/hmdzl/spspd/items/bombs/EarthBomb.java index fcfa7f14..aeac5014 100644 --- a/java/com/hmdzl/spspd/items/bombs/EarthBomb.java +++ b/java/com/hmdzl/spspd/items/bombs/EarthBomb.java @@ -26,6 +26,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Ooze; import com.hmdzl.spspd.actors.buffs.Roots; +import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.BArray; import com.watabou.utils.PathFinder; @@ -42,7 +43,7 @@ public void explode(int cell) { super.explode(cell); ArrayList plantCandidates = new ArrayList<>(); - PathFinder.buildDistanceMap( cell, BArray.not( Dungeon.level.solid, null ), 2 ); + PathFinder.buildDistanceMap( cell, BArray.not(Level.solid, null ), 2 ); for (int i = 0; i < PathFinder.distance.length; i++) { if (PathFinder.distance[i] < Integer.MAX_VALUE) { Char ch = Actor.findChar(i); diff --git a/java/com/hmdzl/spspd/items/bombs/FireBomb.java b/java/com/hmdzl/spspd/items/bombs/FireBomb.java index 1faeb2cb..6345e26c 100644 --- a/java/com/hmdzl/spspd/items/bombs/FireBomb.java +++ b/java/com/hmdzl/spspd/items/bombs/FireBomb.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.blobs.Blob; import com.hmdzl.spspd.actors.blobs.Fire; import com.hmdzl.spspd.actors.blobs.TarGas; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.particles.SmokeParticle; import com.hmdzl.spspd.levels.Level; diff --git a/java/com/hmdzl/spspd/items/bombs/FishingBomb.java b/java/com/hmdzl/spspd/items/bombs/FishingBomb.java index 90953936..c4e888a7 100644 --- a/java/com/hmdzl/spspd/items/bombs/FishingBomb.java +++ b/java/com/hmdzl/spspd/items/bombs/FishingBomb.java @@ -28,7 +28,7 @@ import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class FishingBomb extends Bomb { diff --git a/java/com/hmdzl/spspd/items/bombs/HugeBomb.java b/java/com/hmdzl/spspd/items/bombs/HugeBomb.java index d4655346..d13888fd 100644 --- a/java/com/hmdzl/spspd/items/bombs/HugeBomb.java +++ b/java/com/hmdzl/spspd/items/bombs/HugeBomb.java @@ -54,7 +54,7 @@ public void explode(int cell) { terrainAffected = true; } - if (Dungeon.level.map[c] == Terrain.WALL && Level.insideMap(c)){ + if ((Dungeon.level.map[c] == Terrain.WALL || Dungeon.level.map[c] == Terrain.GLASS_WALL ) && Level.insideMap(c)){ Level.set(c, Terrain.EMPTY); GameScene.updateMap(c); terrainAffected = true; diff --git a/java/com/hmdzl/spspd/items/bombs/IceBomb.java b/java/com/hmdzl/spspd/items/bombs/IceBomb.java index 6a7dcc14..3656ca2c 100644 --- a/java/com/hmdzl/spspd/items/bombs/IceBomb.java +++ b/java/com/hmdzl/spspd/items/bombs/IceBomb.java @@ -22,12 +22,13 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Blob; import com.hmdzl.spspd.actors.blobs.FrostGas; +import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.FrostIce; import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.particles.SmokeParticle; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; - import com.watabou.utils.Random; public class IceBomb extends Bomb { @@ -47,12 +48,13 @@ public void explode(int cell) { CellEmitter.get(c).burst(SmokeParticle.FACTORY, 4); } GameScene.add(Blob.seed(c, 10, FrostGas.class)); - Char ch = Actor.findChar(c); if (ch != null) { // those not at the center of the blast take damage less // consistently. + Buff.affect(ch,FrostIce.class).level(10); + int minDamage = ch.HT/20; int maxDamage = ch.HT/10; diff --git a/java/com/hmdzl/spspd/items/bombs/LightBomb.java b/java/com/hmdzl/spspd/items/bombs/LightBomb.java index 9227a59e..2a7b5e0a 100644 --- a/java/com/hmdzl/spspd/items/bombs/LightBomb.java +++ b/java/com/hmdzl/spspd/items/bombs/LightBomb.java @@ -22,6 +22,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Blindness; import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.LightShootAttack; import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.particles.SmokeParticle; import com.hmdzl.spspd.levels.Level; @@ -48,6 +49,7 @@ public void explode(int cell) { Char ch = Actor.findChar(c); if (ch != null){ Buff.affect(ch, Blindness.class,10f ); + Buff.affect(ch,LightShootAttack.class).level(10); if ( ch.properties().contains(Char.Property.UNDEAD) || ch.properties().contains(Char.Property.UNKNOW) || ch.properties().contains(Char.Property.MECH) diff --git a/java/com/hmdzl/spspd/items/bombs/StormBomb.java b/java/com/hmdzl/spspd/items/bombs/StormBomb.java index 2fb2a88a..bd701d7c 100644 --- a/java/com/hmdzl/spspd/items/bombs/StormBomb.java +++ b/java/com/hmdzl/spspd/items/bombs/StormBomb.java @@ -19,13 +19,22 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.actors.Actor; +import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Blob; import com.hmdzl.spspd.actors.blobs.ElectriShock; +import com.hmdzl.spspd.actors.blobs.FrostGas; +import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.Shocked; +import com.hmdzl.spspd.effects.CellEmitter; +import com.hmdzl.spspd.effects.particles.SmokeParticle; +import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.BArray; import com.watabou.noosa.audio.Sample; import com.watabou.utils.PathFinder; +import com.watabou.utils.Random; public class StormBomb extends Bomb { @@ -38,12 +47,38 @@ public class StormBomb extends Bomb { @Override public void explode(int cell) { super.explode(cell); - PathFinder.buildDistanceMap( cell, BArray.not( Dungeon.level.solid, null ), 2 ); + PathFinder.buildDistanceMap( cell, BArray.not(Level.solid, null ), 2 ); for (int i = 0; i < PathFinder.distance.length; i++) { if (PathFinder.distance[i] < Integer.MAX_VALUE) { GameScene.add(Blob.seed(i, 20, ElectriShock.class)); } } + for (int n : Level.NEIGHBOURS9) { + int c = cell + n; + if (c >= 0 && c < Level.getLength()) { + if (Dungeon.visible[c]) { + CellEmitter.get(c).burst(SmokeParticle.FACTORY, 4); + } + GameScene.add(Blob.seed(c, 10, FrostGas.class)); + + Char ch = Actor.findChar(c); + if (ch != null) { + // those not at the center of the blast take damage less + // consistently. + Buff.affect(ch, Shocked.class,10f); + + int minDamage = ch.HT / 12; + int maxDamage = ch.HT / 6; + + int dmg = Random.NormalIntRange(minDamage, maxDamage) + - Math.max(ch.drRoll(), 0); + if (dmg > 0) { + ch.damage(dmg, this); + + } + } + } + } Sample.INSTANCE.play(Assets.SND_LIGHTNING); } diff --git a/java/com/hmdzl/spspd/items/eggs/BlueDragonEgg.java b/java/com/hmdzl/spspd/items/eggs/BlueDragonEgg.java index 6043cd30..17d8821f 100644 --- a/java/com/hmdzl/spspd/items/eggs/BlueDragonEgg.java +++ b/java/com/hmdzl/spspd/items/eggs/BlueDragonEgg.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.actors.mobs.pets.PET; import com.hmdzl.spspd.effects.Pushing; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/eggs/CocoCatEgg.java b/java/com/hmdzl/spspd/items/eggs/CocoCatEgg.java index 939b664c..78da87d8 100644 --- a/java/com/hmdzl/spspd/items/eggs/CocoCatEgg.java +++ b/java/com/hmdzl/spspd/items/eggs/CocoCatEgg.java @@ -27,7 +27,7 @@ import com.hmdzl.spspd.effects.Pushing; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/eggs/EasterEgg.java b/java/com/hmdzl/spspd/items/eggs/EasterEgg.java index e1512a7e..b6363402 100644 --- a/java/com/hmdzl/spspd/items/eggs/EasterEgg.java +++ b/java/com/hmdzl/spspd/items/eggs/EasterEgg.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.actors.mobs.pets.PET; import com.hmdzl.spspd.effects.Pushing; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/eggs/Egg.java b/java/com/hmdzl/spspd/items/eggs/Egg.java index 04db8b84..bf36a616 100644 --- a/java/com/hmdzl/spspd/items/eggs/Egg.java +++ b/java/com/hmdzl/spspd/items/eggs/Egg.java @@ -17,8 +17,6 @@ */ package com.hmdzl.spspd.items.eggs; -import java.util.ArrayList; - import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.Statistics; @@ -35,7 +33,6 @@ import com.hmdzl.spspd.actors.mobs.pets.Scorpion; import com.hmdzl.spspd.actors.mobs.pets.ShadowDragon; import com.hmdzl.spspd.actors.mobs.pets.Spider; - import com.hmdzl.spspd.actors.mobs.pets.Velocirooster; import com.hmdzl.spspd.actors.mobs.pets.VioletDragon; import com.hmdzl.spspd.effects.Pushing; @@ -50,6 +47,8 @@ import com.watabou.utils.Bundle; import com.watabou.utils.Random; +import java.util.ArrayList; + public class Egg extends Item { private static final String TXT_PREVENTING = "This is not the best place to try that."; diff --git a/java/com/hmdzl/spspd/items/eggs/GoldDragonEgg.java b/java/com/hmdzl/spspd/items/eggs/GoldDragonEgg.java index c38633ee..83418c03 100644 --- a/java/com/hmdzl/spspd/items/eggs/GoldDragonEgg.java +++ b/java/com/hmdzl/spspd/items/eggs/GoldDragonEgg.java @@ -23,7 +23,6 @@ import com.hmdzl.spspd.actors.mobs.pets.BugDragon; import com.hmdzl.spspd.actors.mobs.pets.GoldDragon; import com.hmdzl.spspd.actors.mobs.pets.PET; - import com.hmdzl.spspd.effects.Pushing; import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.scenes.GameScene; diff --git a/java/com/hmdzl/spspd/items/eggs/GreenDragonEgg.java b/java/com/hmdzl/spspd/items/eggs/GreenDragonEgg.java index 212c7c68..25a48fbc 100644 --- a/java/com/hmdzl/spspd/items/eggs/GreenDragonEgg.java +++ b/java/com/hmdzl/spspd/items/eggs/GreenDragonEgg.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.actors.mobs.pets.PET; import com.hmdzl.spspd.effects.Pushing; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/eggs/LeryFireEgg.java b/java/com/hmdzl/spspd/items/eggs/LeryFireEgg.java index 28969e4e..85a64cd2 100644 --- a/java/com/hmdzl/spspd/items/eggs/LeryFireEgg.java +++ b/java/com/hmdzl/spspd/items/eggs/LeryFireEgg.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.actors.mobs.pets.PET; import com.hmdzl.spspd.effects.Pushing; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/eggs/LightDragonEgg.java b/java/com/hmdzl/spspd/items/eggs/LightDragonEgg.java index e772288c..5030367e 100644 --- a/java/com/hmdzl/spspd/items/eggs/LightDragonEgg.java +++ b/java/com/hmdzl/spspd/items/eggs/LightDragonEgg.java @@ -24,7 +24,7 @@ import com.hmdzl.spspd.actors.mobs.pets.PET; import com.hmdzl.spspd.effects.Pushing; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/eggs/RandomEgg.java b/java/com/hmdzl/spspd/items/eggs/RandomEgg.java index c27ded71..28de82b4 100644 --- a/java/com/hmdzl/spspd/items/eggs/RandomEgg.java +++ b/java/com/hmdzl/spspd/items/eggs/RandomEgg.java @@ -41,7 +41,7 @@ import com.hmdzl.spspd.effects.Pushing; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/eggs/RedDragonEgg.java b/java/com/hmdzl/spspd/items/eggs/RedDragonEgg.java index 5883e42d..9d53c7c3 100644 --- a/java/com/hmdzl/spspd/items/eggs/RedDragonEgg.java +++ b/java/com/hmdzl/spspd/items/eggs/RedDragonEgg.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.actors.mobs.pets.RedDragon; import com.hmdzl.spspd.effects.Pushing; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/eggs/ScorpionEgg.java b/java/com/hmdzl/spspd/items/eggs/ScorpionEgg.java index ea192890..75e50b0e 100644 --- a/java/com/hmdzl/spspd/items/eggs/ScorpionEgg.java +++ b/java/com/hmdzl/spspd/items/eggs/ScorpionEgg.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.actors.mobs.pets.Scorpion; import com.hmdzl.spspd.effects.Pushing; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/eggs/ShadowDragonEgg.java b/java/com/hmdzl/spspd/items/eggs/ShadowDragonEgg.java index 6b9a24c2..7aca8fb8 100644 --- a/java/com/hmdzl/spspd/items/eggs/ShadowDragonEgg.java +++ b/java/com/hmdzl/spspd/items/eggs/ShadowDragonEgg.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.mobs.pets.PET; import com.hmdzl.spspd.actors.mobs.pets.ShadowDragon; import com.hmdzl.spspd.effects.Pushing; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/eggs/SpiderEgg.java b/java/com/hmdzl/spspd/items/eggs/SpiderEgg.java index 5f261506..c3bd1e4d 100644 --- a/java/com/hmdzl/spspd/items/eggs/SpiderEgg.java +++ b/java/com/hmdzl/spspd/items/eggs/SpiderEgg.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.actors.mobs.pets.Spider; import com.hmdzl.spspd.effects.Pushing; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/eggs/VelociroosterEgg.java b/java/com/hmdzl/spspd/items/eggs/VelociroosterEgg.java index faabad1b..5732a8cf 100644 --- a/java/com/hmdzl/spspd/items/eggs/VelociroosterEgg.java +++ b/java/com/hmdzl/spspd/items/eggs/VelociroosterEgg.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.actors.mobs.pets.Velocirooster; import com.hmdzl.spspd.effects.Pushing; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/eggs/VioletDragonEgg.java b/java/com/hmdzl/spspd/items/eggs/VioletDragonEgg.java index 8f69951a..83a1ae3a 100644 --- a/java/com/hmdzl/spspd/items/eggs/VioletDragonEgg.java +++ b/java/com/hmdzl/spspd/items/eggs/VioletDragonEgg.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.actors.mobs.pets.VioletDragon; import com.hmdzl.spspd.effects.Pushing; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/eggs/YearPetEgg.java b/java/com/hmdzl/spspd/items/eggs/YearPetEgg.java index edfea121..ffcecb47 100644 --- a/java/com/hmdzl/spspd/items/eggs/YearPetEgg.java +++ b/java/com/hmdzl/spspd/items/eggs/YearPetEgg.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.actors.mobs.pets.YearPet; import com.hmdzl.spspd.effects.Pushing; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/food/Food.java b/java/com/hmdzl/spspd/items/food/Food.java index 14a007bc..74e286c2 100644 --- a/java/com/hmdzl/spspd/items/food/Food.java +++ b/java/com/hmdzl/spspd/items/food/Food.java @@ -40,7 +40,7 @@ import com.hmdzl.spspd.items.scrolls.ScrollOfRecharging; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/items/food/Honey.java b/java/com/hmdzl/spspd/items/food/Honey.java index c84d0af2..101138ab 100644 --- a/java/com/hmdzl/spspd/items/food/Honey.java +++ b/java/com/hmdzl/spspd/items/food/Honey.java @@ -17,15 +17,7 @@ */ package com.hmdzl.spspd.items.food; -import com.hmdzl.spspd.actors.buffs.Bleeding; -import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Cripple; -import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.items.food.Food; -import com.hmdzl.spspd.items.food.completefood.CompleteFood; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.watabou.utils.Random; @@ -45,11 +37,12 @@ public void execute(Hero hero, String action) { super.execute(hero, action); if (action.equals(AC_EAT)) { - hero.HT = hero.HT + (Random.Int(4, 8)); - //hero.HP = hero.HP+Math.min(((hero.HT-hero.HP)/2), hero.HT-hero.HP); + hero.TRUE_HT = hero.TRUE_HT + (Random.Int(4, 8)); + hero.updateHT(true); + //hero.HP = hero.HP+Math.min(((hero.TRUE_HT-hero.HP)/2), hero.TRUE_HT-hero.HP); //Buff.detach(hero, Poison.class); //Buff.detach(hero, Cripple.class); - //Buff.detach(hero, Weakness.class); + //Buff.detach(hero, STRdown.class); //Buff.detach(hero, Bleeding.class); //hero.sprite.emitter().start(Speck.factory(Speck.HEALING), 0.4f, 4); diff --git a/java/com/hmdzl/spspd/items/food/Vegetable.java b/java/com/hmdzl/spspd/items/food/Vegetable.java index c4a470d2..81fd4178 100644 --- a/java/com/hmdzl/spspd/items/food/Vegetable.java +++ b/java/com/hmdzl/spspd/items/food/Vegetable.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Cripple; import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.sprites.ItemSpriteSheet; @@ -43,7 +43,7 @@ public void execute(Hero hero, String action) { if (action.equals(AC_EAT)){ Buff.detach(hero, Poison.class); Buff.detach(hero, Cripple.class); - Buff.detach(hero, Weakness.class); + Buff.detach(hero, STRdown.class); Buff.detach(hero, Bleeding.class); } } diff --git a/java/com/hmdzl/spspd/items/food/completefood/AflyFood.java b/java/com/hmdzl/spspd/items/food/completefood/AflyFood.java index b8e80f8d..d8c06fac 100644 --- a/java/com/hmdzl/spspd/items/food/completefood/AflyFood.java +++ b/java/com/hmdzl/spspd/items/food/completefood/AflyFood.java @@ -18,13 +18,8 @@ package com.hmdzl.spspd.items.food.completefood; import com.hmdzl.spspd.actors.buffs.AflyBless; -import com.hmdzl.spspd.actors.buffs.Bleeding; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Cripple; -import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.items.food.Food; import com.hmdzl.spspd.sprites.ItemSpriteSheet; public class AflyFood extends CompleteFood { diff --git a/java/com/hmdzl/spspd/items/food/completefood/Chocolate.java b/java/com/hmdzl/spspd/items/food/completefood/Chocolate.java index d0aaf469..e2018e2f 100644 --- a/java/com/hmdzl/spspd/items/food/completefood/Chocolate.java +++ b/java/com/hmdzl/spspd/items/food/completefood/Chocolate.java @@ -20,8 +20,6 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.ShieldArmor; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.items.food.Food; import com.hmdzl.spspd.sprites.ItemSpriteSheet; public class Chocolate extends CompleteFood { @@ -29,7 +27,7 @@ public class Chocolate extends CompleteFood { { //name = "Chocolate"; image = ItemSpriteSheet.CHOCOLATE; - energy = 600; + energy = 300; hornValue = 5; } diff --git a/java/com/hmdzl/spspd/items/food/completefood/Foamedbeverage.java b/java/com/hmdzl/spspd/items/food/completefood/Foamedbeverage.java index 928f37b8..8521c1bb 100644 --- a/java/com/hmdzl/spspd/items/food/completefood/Foamedbeverage.java +++ b/java/com/hmdzl/spspd/items/food/completefood/Foamedbeverage.java @@ -22,10 +22,8 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Cripple; import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.items.food.Food; import com.hmdzl.spspd.sprites.ItemSpriteSheet; public class Foamedbeverage extends CompleteFood { @@ -50,7 +48,7 @@ public void execute(Hero hero, String action) { if (action.equals(AC_EAT)){ Buff.detach(hero, Poison.class); Buff.detach(hero, Cripple.class); - Buff.detach(hero, Weakness.class); + Buff.detach(hero, STRdown.class); Buff.detach(hero, Bleeding.class); Buff.affect(hero, Bless.class, 50f); } diff --git a/java/com/hmdzl/spspd/items/food/completefood/Gel.java b/java/com/hmdzl/spspd/items/food/completefood/Gel.java index 897c81e2..59b105fe 100644 --- a/java/com/hmdzl/spspd/items/food/completefood/Gel.java +++ b/java/com/hmdzl/spspd/items/food/completefood/Gel.java @@ -17,17 +17,8 @@ */ package com.hmdzl.spspd.items.food.completefood; -import com.hmdzl.spspd.actors.buffs.Bleeding; -import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Cripple; -import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; -import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.items.food.Food; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.watabou.utils.Random; public class Gel extends CompleteFood { diff --git a/java/com/hmdzl/spspd/items/food/completefood/GoldenNut.java b/java/com/hmdzl/spspd/items/food/completefood/GoldenNut.java index 81833a0c..df80ca7a 100644 --- a/java/com/hmdzl/spspd/items/food/completefood/GoldenNut.java +++ b/java/com/hmdzl/spspd/items/food/completefood/GoldenNut.java @@ -41,17 +41,17 @@ public void execute(Hero hero, String action) { switch (Random.Int(2)) { case 0: - hero.HT+=40; + hero.TRUE_HT+=40; hero.STR+=1; hero.sprite.showStatus(CharSprite.POSITIVE, "+1 str, +60 ht"); - + hero.updateHT(true); Badges.validateStrengthAttained(); break; case 1: - hero.HT+=10; + hero.TRUE_HT+=10; hero.STR+=2; hero.sprite.showStatus(CharSprite.POSITIVE, "+2 str, +30 ht"); - + hero.updateHT(true); Badges.validateStrengthAttained(); break; } diff --git a/java/com/hmdzl/spspd/items/food/completefood/Herbmeat.java b/java/com/hmdzl/spspd/items/food/completefood/Herbmeat.java index 9aad497d..b310d18c 100644 --- a/java/com/hmdzl/spspd/items/food/completefood/Herbmeat.java +++ b/java/com/hmdzl/spspd/items/food/completefood/Herbmeat.java @@ -21,9 +21,8 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Cripple; import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.items.food.Food; import com.hmdzl.spspd.sprites.ItemSpriteSheet; public class Herbmeat extends CompleteFood { @@ -47,7 +46,7 @@ public void execute(Hero hero, String action) { if (action.equals(AC_EAT)){ Buff.detach(hero, Poison.class); Buff.detach(hero, Cripple.class); - Buff.detach(hero, Weakness.class); + Buff.detach(hero, STRdown.class); Buff.detach(hero, Bleeding.class); } } diff --git a/java/com/hmdzl/spspd/items/food/completefood/HoneyGel.java b/java/com/hmdzl/spspd/items/food/completefood/HoneyGel.java index 7a3b3c81..1644d8b5 100644 --- a/java/com/hmdzl/spspd/items/food/completefood/HoneyGel.java +++ b/java/com/hmdzl/spspd/items/food/completefood/HoneyGel.java @@ -17,14 +17,7 @@ */ package com.hmdzl.spspd.items.food.completefood; -import com.hmdzl.spspd.actors.buffs.Bleeding; -import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Cripple; -import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.items.food.Food; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.watabou.utils.Random; @@ -52,14 +45,15 @@ public void execute(Hero hero, String action) { super.execute(hero, action); if (action.equals(AC_EAT)) { - hero.HT = hero.HT + (Random.Int(2, 4)); - //hero.HP = hero.HP+Math.min(((hero.HT-hero.HP)/2), hero.HT-hero.HP); + hero.TRUE_HT = hero.TRUE_HT + (Random.Int(2, 4)); + //hero.HP = hero.HP+Math.min(((hero.TRUE_HT-hero.HP)/2), hero.TRUE_HT-hero.HP); //Buff.detach(hero, Poison.class); //Buff.detach(hero, Cripple.class); - //Buff.detach(hero, Weakness.class); + //Buff.detach(hero, STRdown.class); //Buff.detach(hero, Bleeding.class); //hero.sprite.emitter().start(Speck.factory(Speck.HEALING), 0.4f, 4); + hero.updateHT(true); } } diff --git a/java/com/hmdzl/spspd/items/food/completefood/HoneyWater.java b/java/com/hmdzl/spspd/items/food/completefood/HoneyWater.java index 2a3fa759..de89ca76 100644 --- a/java/com/hmdzl/spspd/items/food/completefood/HoneyWater.java +++ b/java/com/hmdzl/spspd/items/food/completefood/HoneyWater.java @@ -21,10 +21,9 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Cripple; import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.items.food.Food; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.watabou.utils.Random; @@ -44,13 +43,14 @@ public void execute(Hero hero, String action) { super.execute(hero, action); if (action.equals(AC_EAT)) { - hero.HT = hero.HT + (Random.Int(3, 5)); - //hero.HP = hero.HP+Math.min(((hero.HT-hero.HP)/2), hero.HT-hero.HP); + hero.TRUE_HT = hero.TRUE_HT + (Random.Int(3, 5)); + //hero.HP = hero.HP+Math.min(((hero.TRUE_HT-hero.HP)/2), hero.TRUE_HT-hero.HP); Buff.detach(hero, Poison.class); Buff.detach(hero, Cripple.class); - Buff.detach(hero, Weakness.class); + Buff.detach(hero, STRdown.class); Buff.detach(hero, Bleeding.class); hero.sprite.emitter().start(Speck.factory(Speck.HEALING), 0.4f, 4); + hero.updateHT(true); } } diff --git a/java/com/hmdzl/spspd/items/food/completefood/Honeymeat.java b/java/com/hmdzl/spspd/items/food/completefood/Honeymeat.java index 9acfd635..7e1ad399 100644 --- a/java/com/hmdzl/spspd/items/food/completefood/Honeymeat.java +++ b/java/com/hmdzl/spspd/items/food/completefood/Honeymeat.java @@ -18,7 +18,6 @@ package com.hmdzl.spspd.items.food.completefood; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.items.food.Food; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.watabou.utils.Random; @@ -37,13 +36,13 @@ public void execute(Hero hero, String action) { super.execute(hero, action); if (action.equals(AC_EAT)) { - hero.HT = hero.HT + (Random.Int(2, 5)); - //hero.HP = hero.HP+Math.min(((hero.HT-hero.HP)/2), hero.HT-hero.HP); + hero.TRUE_HT = hero.TRUE_HT + (Random.Int(2, 5)); + //hero.HP = hero.HP+Math.min(((hero.TRUE_HT-hero.HP)/2), hero.TRUE_HT-hero.HP); //Buff.detach(hero, Poison.class); //Buff.detach(hero, Cripple.class); - //Buff.detach(hero, Weakness.class); + //Buff.detach(hero, STRdown.class); //Buff.detach(hero, Bleeding.class); - +hero.updateHT(true); //hero.sprite.emitter().start(Speck.factory(Speck.HEALING), 0.4f, 4); } diff --git a/java/com/hmdzl/spspd/items/food/completefood/Honeyrice.java b/java/com/hmdzl/spspd/items/food/completefood/Honeyrice.java index 02c3384c..ed89dde2 100644 --- a/java/com/hmdzl/spspd/items/food/completefood/Honeyrice.java +++ b/java/com/hmdzl/spspd/items/food/completefood/Honeyrice.java @@ -18,7 +18,6 @@ package com.hmdzl.spspd.items.food.completefood; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.items.food.Food; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.watabou.utils.Random; @@ -46,13 +45,13 @@ public void execute(Hero hero, String action) { super.execute(hero, action); if (action.equals(AC_EAT)) { - hero.HT = hero.HT + (Random.Int(3, 6)); - //hero.HP = hero.HP+Math.min(((hero.HT-hero.HP)/2), hero.HT-hero.HP); + hero.TRUE_HT = hero.TRUE_HT + (Random.Int(3, 6)); + //hero.HP = hero.HP+Math.min(((hero.TRUE_HT-hero.HP)/2), hero.TRUE_HT-hero.HP); //Buff.detach(hero, Poison.class); //Buff.detach(hero, Cripple.class); - //Buff.detach(hero, Weakness.class); + //Buff.detach(hero, STRdown.class); //Buff.detach(hero, Bleeding.class); - +hero.updateHT(true); //hero.sprite.emitter().start(Speck.factory(Speck.HEALING), 0.4f, 4); } diff --git a/java/com/hmdzl/spspd/items/food/completefood/Icecream.java b/java/com/hmdzl/spspd/items/food/completefood/Icecream.java index 5222747e..45e127d4 100644 --- a/java/com/hmdzl/spspd/items/food/completefood/Icecream.java +++ b/java/com/hmdzl/spspd/items/food/completefood/Icecream.java @@ -20,10 +20,9 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.items.food.Food; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.watabou.utils.Random; @@ -42,13 +41,13 @@ public void execute(Hero hero, String action) { super.execute(hero, action); if (action.equals(AC_EAT)) { - hero.HT = hero.HT + (Random.Int(4, 8)); - hero.HP = hero.HP+Math.min(((hero.HT-hero.HP)/2), hero.HT-hero.HP); + hero.TRUE_HT = hero.TRUE_HT + (Random.Int(4, 8)); + hero.HP = hero.HP+Math.min(((hero.TRUE_HT-hero.HP)/2), hero.TRUE_HT-hero.HP); Buff.detach(hero, Poison.class); Buff.detach(hero, Burning.class); - Buff.detach(hero, Weakness.class); + Buff.detach(hero, STRdown.class); //Buff.detach(hero, Bleeding.class); - +hero.updateHT(true); hero.sprite.emitter().start(Speck.factory(Speck.HEALING), 0.4f, 4); } diff --git a/java/com/hmdzl/spspd/items/food/completefood/Meatroll.java b/java/com/hmdzl/spspd/items/food/completefood/Meatroll.java index 70c585a2..f136ca7f 100644 --- a/java/com/hmdzl/spspd/items/food/completefood/Meatroll.java +++ b/java/com/hmdzl/spspd/items/food/completefood/Meatroll.java @@ -17,17 +17,8 @@ */ package com.hmdzl.spspd.items.food.completefood; -import com.hmdzl.spspd.actors.buffs.Bleeding; -import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Cripple; -import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; -import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.items.food.Food; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.watabou.utils.Random; public class Meatroll extends CompleteFood { diff --git a/java/com/hmdzl/spspd/items/food/completefood/Honey.java b/java/com/hmdzl/spspd/items/food/completefood/MoonCake.java similarity index 56% rename from java/com/hmdzl/spspd/items/food/completefood/Honey.java rename to java/com/hmdzl/spspd/items/food/completefood/MoonCake.java index 52a7844f..74130698 100644 --- a/java/com/hmdzl/spspd/items/food/completefood/Honey.java +++ b/java/com/hmdzl/spspd/items/food/completefood/MoonCake.java @@ -17,46 +17,45 @@ */ package com.hmdzl.spspd.items.food.completefood; -import com.hmdzl.spspd.actors.buffs.Bleeding; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Cripple; -import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.MagicArmor; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.items.food.Food; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.watabou.utils.Random; -public class Honey extends CompleteFood { +public class MoonCake extends CompleteFood { { - //name = "Honey"; - image = ItemSpriteSheet.POTION_HONEY; - energy = 50; - hornValue = 0; + //name = "MoonCake"; + image = ItemSpriteSheet.MOON_CAKE; + energy = 360; + hornValue = 2; + } - @Override + //private static ItemSprite.Glowing BROWN = new ItemSprite.Glowing(0xA0522D); +// @Override + //public ItemSprite.Glowing glowing() { + //return BROWN; + //} + public void execute(Hero hero, String action) { super.execute(hero, action); if (action.equals(AC_EAT)) { - hero.HT = hero.HT + (Random.Int(1, 3)); - //hero.HP = hero.HP+Math.min(((hero.HT-hero.HP)/2), hero.HT-hero.HP); - //Buff.detach(hero, Poison.class); - //Buff.detach(hero, Cripple.class); - //Buff.detach(hero, Weakness.class); - //Buff.detach(hero, Bleeding.class); - - //hero.sprite.emitter().start(Speck.factory(Speck.HEALING), 0.4f, 4); - + //hero.TRUE_HT = hero.TRUE_HT + (Random.Int(4, 8)); + //hero.HP = hero.HP+Math.min(((hero.TRUE_HT-hero.HP)/2), hero.TRUE_HT-hero.HP); + Buff.affect(hero, MagicArmor.class).level(50); + //Buff.detach(hero, Bleeding.class); + //hero.updateHT(true); + //hero.sprite.emitter().start(Speck.factory(Speck.HEALING), 0.4f, 4); + } - } + } @Override public int price() { - return 500 * quantity; + return 3 * quantity; } -} + +} \ No newline at end of file diff --git a/java/com/hmdzl/spspd/items/food/ToastedNut.java b/java/com/hmdzl/spspd/items/food/completefood/NutCake.java similarity index 63% rename from java/com/hmdzl/spspd/items/food/ToastedNut.java rename to java/com/hmdzl/spspd/items/food/completefood/NutCake.java index 5a9716b9..8d1450f4 100644 --- a/java/com/hmdzl/spspd/items/food/ToastedNut.java +++ b/java/com/hmdzl/spspd/items/food/completefood/NutCake.java @@ -15,50 +15,43 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see */ -package com.hmdzl.spspd.items.food; +package com.hmdzl.spspd.items.food.completefood; -import com.hmdzl.spspd.actors.buffs.Barkskin; import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.ShieldArmor; import com.hmdzl.spspd.actors.hero.Hero; +import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.watabou.utils.Random; -public class ToastedNut extends Nut { +public class NutCake extends CompleteFood { { - //name = "toasted dungeon nut"; - image = ItemSpriteSheet.SEED_TOASTEDDUNGEONNUT; - energy = 20; - hornValue = 2; + //name = "NutCake"; + image = ItemSpriteSheet.NUT_CAKE; + energy = 450; + hornValue = 3; + } - @Override public void execute(Hero hero, String action) { super.execute(hero, action); if (action.equals(AC_EAT)) { + hero.TRUE_HT = hero.TRUE_HT + (Random.Int(4, 8)); + hero.HP = hero.HP+Math.min(((hero.TRUE_HT-hero.HP)/2), hero.TRUE_HT-hero.HP); + Buff.affect(hero, ShieldArmor.class).level(100); + //Buff.detach(hero, Bleeding.class); + hero.updateHT(true); + hero.sprite.emitter().start(Speck.factory(Speck.HEALING), 0.4f, 4); - switch (Random.Int(2)) { - case 0: - Buff.affect(hero, Barkskin.class).level(hero.lvl); - break; - case 1: - Buff.affect(hero, Barkskin.class).level(hero.lvl+2); - break; - } } - } - + } + @Override public int price() { return 1 * quantity; } - public static Food cook(Nut ingredient) { - ToastedNut result = new ToastedNut(); - result.quantity = ingredient.quantity(); - return result; - } -} - +} \ No newline at end of file diff --git a/java/com/hmdzl/spspd/items/food/completefood/PerfectFood.java b/java/com/hmdzl/spspd/items/food/completefood/PerfectFood.java index 6b293d8f..747c327c 100644 --- a/java/com/hmdzl/spspd/items/food/completefood/PerfectFood.java +++ b/java/com/hmdzl/spspd/items/food/completefood/PerfectFood.java @@ -44,16 +44,17 @@ public void execute(Hero hero, String action) { super.execute(hero, action); if (action.equals(AC_EAT)){ - hero.HT = hero.HT + (Random.Int(3, 7)); + hero.TRUE_HT = hero.TRUE_HT + (Random.Int(3, 7)); Buff.affect(hero, BerryRegeneration.class).level(10); Buff.affect(hero, Bless.class,10f); Buff.affect(hero, Light.class,50f); - hero.HP = Math.min(hero.HP + hero.HT/10, hero.HT); + hero.HP = Math.min(hero.HP + hero.TRUE_HT/10, hero.TRUE_HT); Buff.affect(hero, HasteBuff.class,5f); Buff.affect(hero, Levitation.class,5f); Buff.affect( hero, Recharging.class, 2f ); //half of a charge ScrollOfRecharging.charge( hero ); hero.sprite.emitter().start(Speck.factory(Speck.HEALING), 0.4f, 4); + hero.updateHT(true); } } diff --git a/java/com/hmdzl/spspd/items/food/completefood/Porksoup.java b/java/com/hmdzl/spspd/items/food/completefood/Porksoup.java index 259576d5..5f962140 100644 --- a/java/com/hmdzl/spspd/items/food/completefood/Porksoup.java +++ b/java/com/hmdzl/spspd/items/food/completefood/Porksoup.java @@ -21,9 +21,8 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Cripple; import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.items.food.Food; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; @@ -52,7 +51,7 @@ public void execute(Hero hero, String action) { if (action.equals(AC_EAT)){ Buff.detach(hero, Poison.class); Buff.detach(hero, Cripple.class); - Buff.detach(hero, Weakness.class); + Buff.detach(hero, STRdown.class); Buff.detach(hero, Bleeding.class); } } diff --git a/java/com/hmdzl/spspd/items/food/completefood/Vegetablekebab.java b/java/com/hmdzl/spspd/items/food/completefood/Vegetablekebab.java index 8aed51e2..f9efd2f9 100644 --- a/java/com/hmdzl/spspd/items/food/completefood/Vegetablekebab.java +++ b/java/com/hmdzl/spspd/items/food/completefood/Vegetablekebab.java @@ -21,9 +21,8 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Cripple; import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.items.food.Food; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; @@ -52,7 +51,7 @@ public void execute(Hero hero, String action) { if (action.equals(AC_EAT)){ Buff.detach(hero, Poison.class); Buff.detach(hero, Cripple.class); - Buff.detach(hero, Weakness.class); + Buff.detach(hero, STRdown.class); Buff.detach(hero, Bleeding.class); } } diff --git a/java/com/hmdzl/spspd/items/food/completefood/Vegetableroll.java b/java/com/hmdzl/spspd/items/food/completefood/Vegetableroll.java index dae73957..1ff65807 100644 --- a/java/com/hmdzl/spspd/items/food/completefood/Vegetableroll.java +++ b/java/com/hmdzl/spspd/items/food/completefood/Vegetableroll.java @@ -21,13 +21,10 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Cripple; import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.items.food.Food; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.watabou.utils.Random; public class Vegetableroll extends CompleteFood { @@ -53,7 +50,7 @@ public void execute(Hero hero, String action) { if (action.equals(AC_EAT)){ Buff.detach(hero, Poison.class); Buff.detach(hero, Cripple.class); - Buff.detach(hero, Weakness.class); + Buff.detach(hero, STRdown.class); Buff.detach(hero, Bleeding.class); } } diff --git a/java/com/hmdzl/spspd/items/food/completefood/Vegetablesoup.java b/java/com/hmdzl/spspd/items/food/completefood/Vegetablesoup.java index 9d32b943..113931cc 100644 --- a/java/com/hmdzl/spspd/items/food/completefood/Vegetablesoup.java +++ b/java/com/hmdzl/spspd/items/food/completefood/Vegetablesoup.java @@ -21,9 +21,8 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Cripple; import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.items.food.Food; import com.hmdzl.spspd.sprites.ItemSpriteSheet; public class Vegetablesoup extends CompleteFood { @@ -46,7 +45,7 @@ public void execute(Hero hero, String action) { if (action.equals(AC_EAT)){ Buff.detach(hero, Poison.class); Buff.detach(hero, Cripple.class); - Buff.detach(hero, Weakness.class); + Buff.detach(hero, STRdown.class); Buff.detach(hero, Bleeding.class); } } diff --git a/java/com/hmdzl/spspd/items/food/fruit/Blandfruit.java b/java/com/hmdzl/spspd/items/food/fruit/Blandfruit.java index 0aa95de7..018665be 100644 --- a/java/com/hmdzl/spspd/items/food/fruit/Blandfruit.java +++ b/java/com/hmdzl/spspd/items/food/fruit/Blandfruit.java @@ -34,7 +34,7 @@ import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; import com.watabou.utils.Random; @@ -60,12 +60,10 @@ public class Blandfruit extends Fruit { public boolean isSimilar(Item item) { if (item instanceof Blandfruit) { if (potionAttrib == null) { - if (((Blandfruit) item).potionAttrib == null) - return true; + return ((Blandfruit) item).potionAttrib == null; } else if (((Blandfruit) item).potionAttrib != null) { - if (((Blandfruit) item).potionAttrib.getClass() == potionAttrib - .getClass()) - return true; + return ((Blandfruit) item).potionAttrib.getClass() == potionAttrib + .getClass(); } } return false; @@ -114,10 +112,10 @@ public void execute(Hero hero, String action) { SpellSprite.show(hero, SpellSprite.FOOD); hero.sprite.operate(hero.pos); - switch (hero.heroClass) { + /*switch (hero.heroClass) { case WARRIOR: - if (hero.HP < hero.HT) { - hero.HP = Random.Int(hero.HP + 5, hero.HT); + if (hero.HP < hero.TRUE_HT) { + hero.HP = Random.Int(hero.HP + 5, hero.TRUE_HT); hero.sprite.emitter().burst( Speck.factory(Speck.HEALING), 1); } @@ -132,7 +130,7 @@ public void execute(Hero hero, String action) { case SOLDIER: case FOLLOWER: break; - } + }*/ } } else { super.execute(hero, action); diff --git a/java/com/hmdzl/spspd/items/food/fruit/Blueberry.java b/java/com/hmdzl/spspd/items/food/fruit/Blueberry.java index 4ca26986..50ef5f20 100644 --- a/java/com/hmdzl/spspd/items/food/fruit/Blueberry.java +++ b/java/com/hmdzl/spspd/items/food/fruit/Blueberry.java @@ -29,7 +29,7 @@ import com.hmdzl.spspd.levels.Terrain; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/items/food/fruit/Cherry.java b/java/com/hmdzl/spspd/items/food/fruit/Cherry.java new file mode 100644 index 00000000..2b5145a8 --- /dev/null +++ b/java/com/hmdzl/spspd/items/food/fruit/Cherry.java @@ -0,0 +1,50 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.items.food.fruit; + +import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.actors.hero.Hero; +import com.hmdzl.spspd.items.bombs.DungeonBomb; +import com.hmdzl.spspd.sprites.ItemSpriteSheet; + +public class Cherry extends Fruit { + + { + //name = "Cherry"; + image = ItemSpriteSheet.CHERRY; + energy = 30; + hornValue = 1; + + } + + @Override + public void execute(Hero hero, String action) { + + super.execute(hero, action); + + if (action.equals(AC_EAT)) { + Dungeon.level.drop(new DungeonBomb(), hero.pos).sprite.drop(); + } + } + + @Override + public int price() { + return 5 * quantity; + } + +} diff --git a/java/com/hmdzl/spspd/items/food/fruit/Strawberry.java b/java/com/hmdzl/spspd/items/food/fruit/Strawberry.java new file mode 100644 index 00000000..4d1b6523 --- /dev/null +++ b/java/com/hmdzl/spspd/items/food/fruit/Strawberry.java @@ -0,0 +1,51 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.items.food.fruit; + +import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.InfJump; +import com.hmdzl.spspd.actors.buffs.MindVision; +import com.hmdzl.spspd.actors.hero.Hero; +import com.hmdzl.spspd.sprites.ItemSpriteSheet; + +public class Strawberry extends Fruit { + + { + //name = "Strawberry"; + image = ItemSpriteSheet.STRAWBERRY; + energy = 30; + hornValue = 1; + + } + + @Override + public void execute(Hero hero, String action) { + + super.execute(hero, action); + + if (action.equals(AC_EAT)) { + Buff.affect(hero, InfJump.class, MindVision.DURATION); + } + } + + @Override + public int price() { + return 5 * quantity; + } + +} diff --git a/java/com/hmdzl/spspd/items/food/meatfood/FrozenCarpaccio.java b/java/com/hmdzl/spspd/items/food/meatfood/FrozenCarpaccio.java index ef006284..6309b63e 100644 --- a/java/com/hmdzl/spspd/items/food/meatfood/FrozenCarpaccio.java +++ b/java/com/hmdzl/spspd/items/food/meatfood/FrozenCarpaccio.java @@ -26,12 +26,12 @@ import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.actors.buffs.Slow; import com.hmdzl.spspd.actors.buffs.Vertigo; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.items.food.Food; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Random; @@ -57,9 +57,9 @@ public void execute(Hero hero, String action) { @Override public int price() { return 3 * quantity; - }; - - public static void effect(Hero hero){ + } + + public static void effect(Hero hero){ switch (Random.Int( 5 )) { case 0: GLog.i( Messages.get(FrozenCarpaccio.class, "invisbility") ); @@ -73,7 +73,7 @@ public static void effect(Hero hero){ GLog.i( Messages.get(FrozenCarpaccio.class, "refresh") ); Buff.detach( hero, Poison.class ); Buff.detach( hero, Cripple.class ); - Buff.detach( hero, Weakness.class ); + Buff.detach( hero, STRdown.class ); Buff.detach( hero, Bleeding.class ); Buff.detach( hero, Drowsy.class ); Buff.detach( hero, Slow.class ); diff --git a/java/com/hmdzl/spspd/items/food/meatfood/Meat.java b/java/com/hmdzl/spspd/items/food/meatfood/Meat.java index 76e093f1..c9422e55 100644 --- a/java/com/hmdzl/spspd/items/food/meatfood/Meat.java +++ b/java/com/hmdzl/spspd/items/food/meatfood/Meat.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Random; @@ -45,8 +45,7 @@ public void execute(Hero hero, String action) { switch (Random.Int(15)) { case 0: GLog.w(Messages.get(this,"bad")); - Buff.affect(hero, Poison.class).set( - Poison.durationFactor(hero) * hero.HT / 5); + Buff.affect(hero, Poison.class).set(hero.HT / 5); break; } } diff --git a/java/com/hmdzl/spspd/items/food/meatfood/MysteryMeat.java b/java/com/hmdzl/spspd/items/food/meatfood/MysteryMeat.java index 8e46375a..6a5b5cc0 100644 --- a/java/com/hmdzl/spspd/items/food/meatfood/MysteryMeat.java +++ b/java/com/hmdzl/spspd/items/food/meatfood/MysteryMeat.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.actors.buffs.Slow; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Random; @@ -56,12 +56,11 @@ public void execute(Hero hero, String action) { break; case 2: GLog.w(Messages.get(this,"bad")); - Buff.affect(hero, Poison.class).set( - Poison.durationFactor(hero) * hero.HT / 5); + Buff.affect(hero, Poison.class).set(hero.HT / 5); break; case 3: GLog.w(Messages.get(this,"stuffed")); - Buff.prolong(hero, Slow.class, Slow.duration(hero)); + Buff.prolong(hero, Slow.class, 10f); break; } } @@ -70,5 +69,5 @@ public void execute(Hero hero, String action) { @Override public int price() { return 2 * quantity; - }; + } } diff --git a/java/com/hmdzl/spspd/items/food/staplefood/Pasty.java b/java/com/hmdzl/spspd/items/food/staplefood/Pasty.java index f81b5bac..74a83342 100644 --- a/java/com/hmdzl/spspd/items/food/staplefood/Pasty.java +++ b/java/com/hmdzl/spspd/items/food/staplefood/Pasty.java @@ -32,7 +32,7 @@ import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.effects.particles.FlameParticle; import com.hmdzl.spspd.items.scrolls.ScrollOfRecharging; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; @@ -190,8 +190,9 @@ public void execute(Hero hero, String action) { GLog.p(Messages.get(Pasty.class,"worker")); break; case CHILD: - hero.HP = hero.HT; - hero.HT +=3; + hero.HP = hero.TRUE_HT; + hero.TRUE_HT +=3; + hero.updateHT(true); Buff.affect(hero,Blindness.class, 20f); Buff.affect(hero,Vertigo.class, 20f); break; diff --git a/java/com/hmdzl/spspd/items/food/vegetable/DreamLeaf.java b/java/com/hmdzl/spspd/items/food/vegetable/DreamLeaf.java index 5a1f6d85..5c076c13 100644 --- a/java/com/hmdzl/spspd/items/food/vegetable/DreamLeaf.java +++ b/java/com/hmdzl/spspd/items/food/vegetable/DreamLeaf.java @@ -19,11 +19,9 @@ import com.hmdzl.spspd.actors.buffs.ArmorBreak; import com.hmdzl.spspd.actors.buffs.AttackDown; -import com.hmdzl.spspd.actors.buffs.Bleeding; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Cripple; -import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.sprites.ItemSpriteSheet; @@ -43,10 +41,10 @@ public void execute(Hero hero, String action) { super.execute(hero, action); if (action.equals(AC_EAT)){ - Buff.detach(hero, Poison.class); + //Buff.detach(hero, Poison.class); Buff.detach(hero, Cripple.class); - Buff.detach(hero, Weakness.class); - Buff.detach(hero, Bleeding.class); + Buff.detach(hero, STRdown.class); + //Buff.detach(hero, Bleeding.class); Buff.detach(hero, AttackDown.class); Buff.detach(hero, ArmorBreak.class); } diff --git a/java/com/hmdzl/spspd/items/food/vegetable/HealGrass.java b/java/com/hmdzl/spspd/items/food/vegetable/HealGrass.java index 4e66ca9f..68a67cba 100644 --- a/java/com/hmdzl/spspd/items/food/vegetable/HealGrass.java +++ b/java/com/hmdzl/spspd/items/food/vegetable/HealGrass.java @@ -19,6 +19,7 @@ import com.hmdzl.spspd.actors.buffs.BerryRegeneration; import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.MagicArmor; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.sprites.ItemSpriteSheet; @@ -38,8 +39,9 @@ public void execute(Hero hero, String action) { super.execute(hero, action); if (action.equals(AC_EAT)){ - hero.HP = Math.min(hero.HP + hero.HT/5, hero.HT); + //hero.HP = Math.min(hero.HP + hero.HT/5, hero.HT); Buff.affect(hero, BerryRegeneration.class).level(20); + Buff.affect(hero,MagicArmor.class).level(hero.HT/5); } } diff --git a/java/com/hmdzl/spspd/items/food/vegetable/NutVegetable.java b/java/com/hmdzl/spspd/items/food/vegetable/NutVegetable.java index 51364cbf..d728b590 100644 --- a/java/com/hmdzl/spspd/items/food/vegetable/NutVegetable.java +++ b/java/com/hmdzl/spspd/items/food/vegetable/NutVegetable.java @@ -17,8 +17,8 @@ */ package com.hmdzl.spspd.items.food.vegetable; -import com.hmdzl.spspd.actors.buffs.Barkskin; import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.ShieldArmor; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.sprites.ItemSpriteSheet; @@ -38,7 +38,7 @@ public void execute(Hero hero, String action) { super.execute(hero, action); if (action.equals(AC_EAT)){ - Buff.affect(hero, Barkskin.class).level(hero.lvl-1); + Buff.affect(hero, ShieldArmor.class).level(hero.HT/5); } } diff --git a/java/com/hmdzl/spspd/items/medicine/BlueMilk.java b/java/com/hmdzl/spspd/items/medicine/BlueMilk.java index c1bf3865..ccc0264e 100644 --- a/java/com/hmdzl/spspd/items/medicine/BlueMilk.java +++ b/java/com/hmdzl/spspd/items/medicine/BlueMilk.java @@ -18,6 +18,7 @@ package com.hmdzl.spspd.items.medicine; import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.actors.buffs.AttackDown; import com.hmdzl.spspd.actors.buffs.BerryRegeneration; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.HasteBuff; @@ -25,10 +26,9 @@ import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.items.food.Food; -import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; -import com.watabou.utils.Random; public class BlueMilk extends Pill { @@ -51,25 +51,13 @@ public void execute(Hero hero, String action) { } if (action.equals(AC_EAT)) { - - switch (Random.Int(10)) { - case 1: - for (Mob mob : Dungeon.level.mobs.toArray(new Mob[0])) { - Buff.affect(mob, Slow.class, Slow.duration(mob)); - } - Buff.affect(hero, HasteBuff.class, 20f); - Buff.affect(hero, BerryRegeneration.class).level(hero.HP/2); - break; - case 0: case 2: case 3: case 4: case 5: - case 6: case 7: case 8: case 9: case 10: for (Mob mob : Dungeon.level.mobs.toArray(new Mob[0])) { - Buff.affect(mob, Slow.class, Slow.duration(mob)); - Buff.affect(mob, BerryRegeneration.class).level(mob.HP/2); + Buff.affect(mob, Slow.class, 50f); + Buff.affect(mob, AttackDown.class, 50f).level(50); } - Buff.affect(hero, HasteBuff.class, 20f); + Buff.affect(hero, HasteBuff.class, 10f); Buff.affect(hero, BerryRegeneration.class).level(hero.HP/2); - break; - } + } super.execute(hero, action); diff --git a/java/com/hmdzl/spspd/items/medicine/DeathCap.java b/java/com/hmdzl/spspd/items/medicine/DeathCap.java index f29500d1..032727bf 100644 --- a/java/com/hmdzl/spspd/items/medicine/DeathCap.java +++ b/java/com/hmdzl/spspd/items/medicine/DeathCap.java @@ -18,13 +18,15 @@ package com.hmdzl.spspd.items.medicine; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.actors.buffs.Blindness; +import com.hmdzl.spspd.actors.buffs.BeCorrupt; +import com.hmdzl.spspd.actors.buffs.BeOld; import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.Cripple; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.items.food.Food; -import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Random; @@ -49,24 +51,14 @@ public void execute(Hero hero, String action) { } if (action.equals(AC_EAT)) { - switch (Random.Int(10)) { - case 1: - for (Mob mob : Dungeon.level.mobs.toArray(new Mob[0])) { - mob.damage(Math.max(5,Math.round(mob.HP/2)), this); - } - hero.damage(Math.max(1,Math.round(hero.HP/4)), this); - Buff.prolong(hero, Blindness.class, Random.Int(5, 7)); - break; - case 0: case 2: case 3: case 4: case 5: - case 6: case 7: case 8: case 9: case 10: - for (Mob mob : Dungeon.level.mobs.toArray(new Mob[0])) { - mob.damage(Math.max(3,Math.round(mob.HP/2)), this); - mob.aggro(hero); - } - hero.damage(Math.max(1,Math.round(hero.HP/4)), this); - Buff.prolong(hero, Blindness.class, Random.Int(6, 9)); - break; - } + for (Mob mob : Dungeon.level.mobs.toArray(new Mob[0])) { + Buff.affect(mob, BeOld.class).set(50); + Buff.affect(mob, BeCorrupt.class).level(50); + } + int damage = Math.max(0,(Dungeon.depth) - Random.IntRange(0, hero.drRoll())); + hero.damage(Math.max(1,Math.round(hero.HP/2)), this); + Buff.prolong(hero, Cripple.class, Cripple.DURATION); + } super.execute(hero, action); diff --git a/java/com/hmdzl/spspd/items/medicine/Earthstar.java b/java/com/hmdzl/spspd/items/medicine/Earthstar.java index 483267aa..991546b0 100644 --- a/java/com/hmdzl/spspd/items/medicine/Earthstar.java +++ b/java/com/hmdzl/spspd/items/medicine/Earthstar.java @@ -19,13 +19,13 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.buffs.Bleeding; +import com.hmdzl.spspd.actors.buffs.Blindness; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Cripple; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.items.food.Food; -import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Random; @@ -51,31 +51,13 @@ public void execute(Hero hero, String action) { if (action.equals(AC_EAT)) { - switch (Random.Int(10)) { - case 1: - for (Mob mob : Dungeon.level.mobs.toArray(new Mob[0])) { - int damage = Math.max(0,(Dungeon.depth + 3) - Random.IntRange(0, mob.drRoll() / 2)); - Buff.affect(mob, Bleeding.class).set(damage); - Buff.prolong(mob, Cripple.class, Cripple.DURATION*2); - } - int damage = Math.max(0,(Dungeon.depth) - Random.IntRange(0, hero.drRoll())); - hero.damage(Math.max(1,Math.round(hero.HP/2)), this); - Buff.affect(hero, Bleeding.class).set(damage); - Buff.prolong(hero, Cripple.class, Cripple.DURATION); - break; - case 0: case 2: case 3: case 4: case 5: - case 6: case 7: case 8: case 9: case 10: - for (Mob mob : Dungeon.level.mobs.toArray(new Mob[0])) { - int mobdamage = Math.max(0,(Dungeon.depth + 3) - Random.IntRange(0, mob.drRoll() / 2)); - Buff.affect(mob, Bleeding.class).set(mobdamage); - Buff.prolong(mob, Cripple.class, Cripple.DURATION*2); - } - int herodamage = Math.max(0,(Dungeon.depth) - Random.IntRange(0, hero.drRoll()/2)); - hero.damage(Math.max(1,Math.round(hero.HP/2)), this); - Buff.affect(hero, Bleeding.class).set(herodamage); - Buff.prolong(hero, Cripple.class, Cripple.DURATION); - break; - } + for (Mob mob : Dungeon.level.mobs.toArray(new Mob[0])) { + mob.damage(Math.max(5,Math.round(mob.HP/2)), this); + Buff.affect(mob, Bleeding.class).set(Random.Int(mob.HP/8,mob.HP/4)); + + } + hero.damage(Math.max(1,Math.round(hero.HP/4)), this); + Buff.prolong(hero, Blindness.class, Random.Int(5, 7)); } super.execute(hero, action); diff --git a/java/com/hmdzl/spspd/items/medicine/GoldenJelly.java b/java/com/hmdzl/spspd/items/medicine/GoldenJelly.java index 427da137..ec55f722 100644 --- a/java/com/hmdzl/spspd/items/medicine/GoldenJelly.java +++ b/java/com/hmdzl/spspd/items/medicine/GoldenJelly.java @@ -19,15 +19,14 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Roots; +import com.hmdzl.spspd.actors.buffs.GrowSeed; import com.hmdzl.spspd.actors.buffs.Vertigo; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.items.food.Food; -import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; -import com.watabou.utils.Random; public class GoldenJelly extends Pill { @@ -50,22 +49,10 @@ public void execute(Hero hero, String action) { } if (action.equals(AC_EAT)) { - - switch (Random.Int(10)) { - case 1: for (Mob mob : Dungeon.level.mobs.toArray(new Mob[0])) { - Buff.prolong(mob, Roots.class, 20); + Buff.affect(mob, GrowSeed.class).reignite(mob,10f); } - Buff.affect(hero, Vertigo.class, 1f); - break; - case 0: case 2: case 3: case 4: case 5: - case 6: case 7: case 8: case 9: case 10: - for (Mob mob : Dungeon.level.mobs.toArray(new Mob[0])) { - Buff.prolong(mob, Roots.class, 10); - } - Buff.affect(hero, Vertigo.class, 3f); - break; - } + Buff.affect(hero, Vertigo.class, 10f); } super.execute(hero, action); } diff --git a/java/com/hmdzl/spspd/items/medicine/GreenSpore.java b/java/com/hmdzl/spspd/items/medicine/GreenSpore.java index c6b50943..09bbb948 100644 --- a/java/com/hmdzl/spspd/items/medicine/GreenSpore.java +++ b/java/com/hmdzl/spspd/items/medicine/GreenSpore.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.buffs.Dewcharge; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.utils.GLog; public class GreenSpore extends Pill { @@ -42,13 +42,13 @@ public void execute(Hero hero, String action) { GLog.w(Messages.get(this,"not_time")); return; } - else Buff.affect(hero, Dewcharge.class, 100f); + else Buff.affect(hero, Dewcharge.class).level(100); } } @Override public int price() { return 20 * quantity; - }; + } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/items/medicine/JackOLantern.java b/java/com/hmdzl/spspd/items/medicine/JackOLantern.java index c85fe3cf..dc401fa7 100644 --- a/java/com/hmdzl/spspd/items/medicine/JackOLantern.java +++ b/java/com/hmdzl/spspd/items/medicine/JackOLantern.java @@ -20,14 +20,15 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.blobs.Blob; import com.hmdzl.spspd.actors.blobs.Fire; +import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.DBurning; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.items.food.Food; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.utils.GLog; -import com.watabou.utils.Random; public class JackOLantern extends Pill { @@ -49,21 +50,11 @@ public void execute(Hero hero, String action) { } - if (action.equals(AC_EAT)) { - switch (Random.Int(10)) { - case 1: + if (action.equals(AC_EAT)) { for (Mob mob : Dungeon.level.mobs.toArray(new Mob[0])) { GameScene.add(Blob.seed(mob.pos, 3, Fire.class)); + Buff.affect(mob,DBurning.class).reignite(mob,6f); } - break; - case 0: case 2: case 3: case 4: case 5: - case 6: case 7: case 8: case 9: case 10: - for (Mob mob : Dungeon.level.mobs.toArray(new Mob[0])) { - if(Random.Int(2)==0){GameScene.add(Blob.seed(mob.pos, 3, Fire.class));} - } - if(Random.Int(5)==0){GameScene.add(Blob.seed(hero.pos, 2, Fire.class));} - break; - } } super.execute(hero, action); diff --git a/java/com/hmdzl/spspd/items/medicine/Pill.java b/java/com/hmdzl/spspd/items/medicine/Pill.java index be7018f1..389a97f0 100644 --- a/java/com/hmdzl/spspd/items/medicine/Pill.java +++ b/java/com/hmdzl/spspd/items/medicine/Pill.java @@ -31,7 +31,7 @@ import com.hmdzl.spspd.items.food.Food; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Random; @@ -70,8 +70,8 @@ public void execute(Hero hero, String action) { /*int healEnergy = Math.max(7, Math.round(energy / 40)); switch (hero.heroClass) { case WARRIOR: - if (hero.HP < hero.HT) { - hero.HP = Math.min(hero.HP + Random.Int(3, healEnergy), hero.HT); + if (hero.HP < hero.TRUE_HT) { + hero.HP = Math.min(hero.HP + Random.Int(3, healEnergy), hero.TRUE_HT); hero.sprite.emitter() .burst(Speck.factory(Speck.HEALING), 1); } @@ -79,28 +79,28 @@ public void execute(Hero hero, String action) { case MAGE: Buff.affect(hero, Recharging.class, 4f); ScrollOfRecharging.charge(hero); - if (hero.HP < hero.HT) { - hero.HP = Math.min((hero.HP + Random.Int(1, 3)), hero.HT); + if (hero.HP < hero.TRUE_HT) { + hero.HP = Math.min((hero.HP + Random.Int(1, 3)), hero.TRUE_HT); hero.sprite.emitter() .burst(Speck.factory(Speck.HEALING), 1); } break; case ROGUE: - if (hero.HP < hero.HT) { - hero.HP = Math.min((hero.HP + Random.Int(1, 3)), hero.HT); + if (hero.HP < hero.TRUE_HT) { + hero.HP = Math.min((hero.HP + Random.Int(1, 3)), hero.TRUE_HT); hero.sprite.emitter() .burst(Speck.factory(Speck.HEALING), 1); } case HUNTRESS: - if (hero.HP < hero.HT) { - hero.HP = Math.min((hero.HP + Random.Int(1, 3)), hero.HT); + if (hero.HP < hero.TRUE_HT) { + hero.HP = Math.min((hero.HP + Random.Int(1, 3)), hero.TRUE_HT); hero.sprite.emitter() .burst(Speck.factory(Speck.HEALING), 1); } break; case PERFORMER: - if (hero.HP < hero.HT) { - hero.HP = Math.min((hero.HP + Random.Int(1, 3)), hero.HT); + if (hero.HP < hero.TRUE_HT) { + hero.HP = Math.min((hero.HP + Random.Int(1, 3)), hero.TRUE_HT); hero.sprite.emitter() .burst(Speck.factory(Speck.HEALING), 1); } diff --git a/java/com/hmdzl/spspd/items/medicine/PixieParasol.java b/java/com/hmdzl/spspd/items/medicine/PixieParasol.java index 4990a37a..2606404d 100644 --- a/java/com/hmdzl/spspd/items/medicine/PixieParasol.java +++ b/java/com/hmdzl/spspd/items/medicine/PixieParasol.java @@ -18,17 +18,17 @@ package com.hmdzl.spspd.items.medicine; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.actors.buffs.BerryRegeneration; +import com.hmdzl.spspd.actors.buffs.ArmorBreak; +import com.hmdzl.spspd.actors.buffs.Bless; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Drowsy; import com.hmdzl.spspd.actors.buffs.Paralysis; -import com.hmdzl.spspd.actors.buffs.Vertigo; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.items.food.Food; -import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Random; @@ -53,26 +53,13 @@ public void execute(Hero hero, String action) { } if (action.equals(AC_EAT)) { - switch (Random.Int(10)) { - case 1: - for (Mob mob : Dungeon.level.mobs.toArray(new Mob[0])) { - Buff.affect(mob, Drowsy.class); - Buff.prolong(mob, Paralysis.class, Random.IntRange(10, 16)); - mob.sprite.centerEmitter().start(Speck.factory(Speck.NOTE), 0.3f, 5); - } - Buff.affect(hero, BerryRegeneration.class).level(hero.HP/2); - break; - case 0: case 2: case 3: case 4: case 5: - case 6: case 7: case 8: case 9: case 10: for (Mob mob : Dungeon.level.mobs.toArray(new Mob[0])) { Buff.affect(mob, Drowsy.class); Buff.prolong(mob, Paralysis.class, Random.IntRange(10, 16)); + Buff.affect(mob,ArmorBreak.class,50f).level(30); mob.sprite.centerEmitter().start(Speck.factory(Speck.NOTE), 0.3f, 5); } - Buff.affect(hero, Vertigo.class, 5f); - Buff.affect(hero, BerryRegeneration.class).level(hero.HP/2); - break; - } + Buff.affect(hero, Bless.class,20f); } super.execute(hero, action); diff --git a/java/com/hmdzl/spspd/items/medicine/Timepill.java b/java/com/hmdzl/spspd/items/medicine/Timepill.java new file mode 100644 index 00000000..83cd0ed6 --- /dev/null +++ b/java/com/hmdzl/spspd/items/medicine/Timepill.java @@ -0,0 +1,51 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.items.medicine; + +import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.HasteBuff; +import com.hmdzl.spspd.actors.hero.Hero; +import com.hmdzl.spspd.effects.Speck; +import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass.sandBag; +import com.hmdzl.spspd.sprites.ItemSpriteSheet; + +public class Timepill extends Pill { + + { + //name = "timepill"; + image = ItemSpriteSheet.SANDBAG; + + } + + @Override + public void execute(Hero hero, String action) { + super.execute(hero, action); + + if (action.equals(AC_EAT)){ + Buff.affect(hero, HasteBuff.class,200f); + hero.sprite.emitter().start(Speck.factory(Speck.UP), 0.4f, 4); + Dungeon.level.drop(new sandBag() ,hero.pos).sprite.drop(); + } + } + @Override + public int price() { + return 50 * quantity; + } + +} \ No newline at end of file diff --git a/java/com/hmdzl/spspd/items/misc/Ankhshield.java b/java/com/hmdzl/spspd/items/misc/Ankhshield.java index da5cf8a7..673a5984 100644 --- a/java/com/hmdzl/spspd/items/misc/Ankhshield.java +++ b/java/com/hmdzl/spspd/items/misc/Ankhshield.java @@ -27,7 +27,7 @@ import com.hmdzl.spspd.actors.buffs.Shieldblock; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Bundle; import com.hmdzl.spspd.Assets; @@ -123,7 +123,7 @@ public String info() { @Override public String status() { - return Messages.format("%d", (int)charge/120); + return Messages.format("%d", charge /120); } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/items/misc/AttackShield.java b/java/com/hmdzl/spspd/items/misc/AttackShield.java index bcb993e1..487de02f 100644 --- a/java/com/hmdzl/spspd/items/misc/AttackShield.java +++ b/java/com/hmdzl/spspd/items/misc/AttackShield.java @@ -28,7 +28,7 @@ import com.hmdzl.spspd.effects.Splash; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.weapon.missiles.MissileWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; diff --git a/java/com/hmdzl/spspd/items/misc/AttackShoes.java b/java/com/hmdzl/spspd/items/misc/AttackShoes.java index 95fb6608..74b6822a 100644 --- a/java/com/hmdzl/spspd/items/misc/AttackShoes.java +++ b/java/com/hmdzl/spspd/items/misc/AttackShoes.java @@ -33,7 +33,7 @@ import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Callback; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/items/misc/BShovel.java b/java/com/hmdzl/spspd/items/misc/BShovel.java index 900b2849..a16f0d6a 100644 --- a/java/com/hmdzl/spspd/items/misc/BShovel.java +++ b/java/com/hmdzl/spspd/items/misc/BShovel.java @@ -31,7 +31,7 @@ import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.ui.BuffIndicator; @@ -93,7 +93,7 @@ public void execute( final Hero hero, String action ) { int c = hero.pos + n; if (c >= 0 && c < Level.getLength()) { - if (Dungeon.level.map[c] == Terrain.WALL && Level.insideMap(c)) { + if ((Dungeon.level.map[c] == Terrain.WALL || Dungeon.level.map[c] == Terrain.GLASS_WALL) && Level.insideMap(c)) { Level.set(c, Terrain.DOOR); GameScene.updateMap(c); Dungeon.observe(); @@ -149,7 +149,7 @@ public void execute( final Hero hero, String action ) { @Override public String status() { - return Messages.format("%d", (int)charge/65); + return Messages.format("%d", charge /65); } @Override diff --git a/java/com/hmdzl/spspd/items/misc/CopyBall.java b/java/com/hmdzl/spspd/items/misc/CopyBall.java index abbf95d1..2a04609a 100644 --- a/java/com/hmdzl/spspd/items/misc/CopyBall.java +++ b/java/com/hmdzl/spspd/items/misc/CopyBall.java @@ -32,7 +32,7 @@ import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.bombs.DungeonBomb; import com.hmdzl.spspd.items.weapon.missiles.MissileWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; @@ -95,7 +95,7 @@ public void execute( final Hero hero, String action ) { @Override public String status() { - return Messages.format("%d", (int)charge/10); + return Messages.format("%d", charge /10); } @Override diff --git a/java/com/hmdzl/spspd/items/misc/DanceLion.java b/java/com/hmdzl/spspd/items/misc/DanceLion.java index f04d6dee..9eab071f 100644 --- a/java/com/hmdzl/spspd/items/misc/DanceLion.java +++ b/java/com/hmdzl/spspd/items/misc/DanceLion.java @@ -17,30 +17,29 @@ */ package com.hmdzl.spspd.items.misc; -import java.util.ArrayList; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.buffs.Arcane; import com.hmdzl.spspd.actors.buffs.AttackUp; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.DefenceUp; +import com.hmdzl.spspd.actors.buffs.EnergyArmor; import com.hmdzl.spspd.actors.buffs.GlassShield; import com.hmdzl.spspd.actors.buffs.Invisibility; import com.hmdzl.spspd.actors.buffs.Levitation; import com.hmdzl.spspd.actors.buffs.Recharging; import com.hmdzl.spspd.actors.buffs.Rhythm; import com.hmdzl.spspd.actors.buffs.Rhythm2; -import com.hmdzl.spspd.actors.buffs.ShieldArmor; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.hero.HeroSubClass; import com.hmdzl.spspd.items.Item; - import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.windows.WndItem; import com.watabou.utils.Bundle; +import java.util.ArrayList; + public class DanceLion extends Item { { @@ -109,7 +108,7 @@ public void execute(Hero hero, String action) { } else if (action.equals(AC_STAND)) { Buff.affect(curUser,DefenceUp.class,20f).level(30); if(hero.subClass == HeroSubClass.SUPERSTAR){ - Buff.affect(curUser,ShieldArmor.class).level(Dungeon.hero.lvl*2); + Buff.affect(curUser,EnergyArmor.class).level(Dungeon.hero.lvl*2); } charge -= 40; hero.spendAndNext(1f); @@ -157,6 +156,6 @@ public String desc() { } @Override public String status() { - return Messages.format("%d", (int)charge/40); + return Messages.format("%d", charge /40); } } diff --git a/java/com/hmdzl/spspd/items/misc/DemoScroll.java b/java/com/hmdzl/spspd/items/misc/DemoScroll.java index 41136870..ca4bf0a8 100644 --- a/java/com/hmdzl/spspd/items/misc/DemoScroll.java +++ b/java/com/hmdzl/spspd/items/misc/DemoScroll.java @@ -17,26 +17,25 @@ */ package com.hmdzl.spspd.items.misc; -import java.util.ArrayList; - import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Muscle; import com.hmdzl.spspd.actors.buffs.Recharging; import com.hmdzl.spspd.actors.buffs.Rhythm; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.Item; - -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Bundle; import com.watabou.utils.Random; +import java.util.ArrayList; + public class DemoScroll extends Item { public static final String AC_READ = "READ"; + public static final String AC_READ2 = "READ2"; { //name = "DemoScroll"; image = ItemSpriteSheet.DEMO_SCROLL; @@ -52,7 +51,8 @@ public class DemoScroll extends Item { @Override public ArrayList actions(Hero hero) { ArrayList actions = super.actions(hero); - if (charge < hero.lvl && hero.HT > hero.lvl) actions.add(AC_READ); + if (Dungeon.hero.spp < hero.lvl && hero.TRUE_HT > hero.lvl) actions.add(AC_READ); + if (charge>10 ) actions.add(AC_READ2); return actions; } @@ -92,23 +92,29 @@ public void execute(Hero hero, String action) { default: break; } - charge ++; + Dungeon.hero.spp ++; hero.sprite.operate(hero.pos); hero.busy(); hero.spend(2f); - int dmg = charge+1; + int dmg = Dungeon.hero.spp+1; hero.damage(dmg,this); if (!hero.isAlive()) { - Dungeon.fail(Messages.format(ResultDescriptions.ITEM)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n("The Chalice sucks your life essence dry..."); } - Dungeon.hero.HT-= Math.min(dmg,hero.HT-1); + Dungeon.hero.TRUE_HT-= Math.min(dmg,hero.TRUE_HT-1); + Dungeon.hero.updateHT(false); GLog.w(Messages.get(this, "htdown")); //hero.hitSkill++; //hero.evadeSkill++; //hero.magicSkill++; //detach(hero.belongings.backpack); + } else if (action.equals(AC_READ2)) { + charge -= 10; + Dungeon.hero.TRUE_HT++; + Dungeon.hero.updateHT(true); + GLog.w(Messages.get(this, "htup")); } else { super.execute(hero, action); @@ -122,7 +128,12 @@ public String info() { return info; } - + + @Override + public String status() { + return Messages.format("%d", charge); + } + @Override public boolean isUpgradable() { return false; diff --git a/java/com/hmdzl/spspd/items/misc/DiceTower.java b/java/com/hmdzl/spspd/items/misc/DiceTower.java index 105d8310..fd861c2c 100644 --- a/java/com/hmdzl/spspd/items/misc/DiceTower.java +++ b/java/com/hmdzl/spspd/items/misc/DiceTower.java @@ -20,21 +20,10 @@ import java.util.ArrayList; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.actors.Actor; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.actors.buffs.ArmorBreak; -import com.hmdzl.spspd.actors.buffs.AttackDown; -import com.hmdzl.spspd.actors.buffs.Bleeding; -import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Cripple; -import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.Item; -import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; @@ -42,8 +31,6 @@ import com.watabou.utils.Bundle; import com.watabou.utils.Random; -import static com.hmdzl.spspd.ui.ActionIndicator.action; - public class DiceTower extends Item { { @@ -141,7 +128,7 @@ public String desc() { @Override public String status() { - return Messages.format("%d", (int)charge/60); + return Messages.format("%d", charge /60); } } diff --git a/java/com/hmdzl/spspd/items/misc/GnollMark.java b/java/com/hmdzl/spspd/items/misc/GnollMark.java index cbf64d86..99a871b5 100644 --- a/java/com/hmdzl/spspd/items/misc/GnollMark.java +++ b/java/com/hmdzl/spspd/items/misc/GnollMark.java @@ -27,13 +27,13 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.DefenceUp; import com.hmdzl.spspd.actors.buffs.Disarm; +import com.hmdzl.spspd.actors.buffs.EnergyArmor; import com.hmdzl.spspd.actors.buffs.HighLight; import com.hmdzl.spspd.actors.buffs.Locked; import com.hmdzl.spspd.actors.buffs.Recharging; import com.hmdzl.spspd.actors.buffs.Rhythm; -import com.hmdzl.spspd.actors.buffs.ShieldArmor; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.buffs.Silent; -import com.hmdzl.spspd.actors.buffs.Weakness; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.effects.particles.ElmoParticle; import com.hmdzl.spspd.items.Item; @@ -51,6 +51,7 @@ public class GnollMark extends Item { public static final String AC_LIGHT = "LIGHT"; public static final String AC_DARK = "DARK"; public static final String AC_EARTH = "EARTH"; + public static final String AC_LIFE = "LIFE"; private static final String AC_CHOOSE = "CHOOSE"; private static final float TIME_TO_DIG = 1f; @@ -62,7 +63,7 @@ public class GnollMark extends Item { } - public final int fullCharge = 40; + public final int fullCharge = 60; public int charge = 0; private static final String CHARGE = "charge"; @@ -86,6 +87,9 @@ public ArrayList actions(Hero hero ) { actions.add(AC_DARK); actions.add(AC_EARTH); } + if (hero.HP > hero.HT/5) + actions.add(AC_LIFE); + actions.remove( AC_THROW ); actions.remove( AC_DROP ); return actions; @@ -108,26 +112,26 @@ public void execute( final Hero hero, String action ) { Sample.INSTANCE.play(Assets.SND_BURNING); hero.spendAndNext(1f); updateQuickslot(); - charge-=20; + charge-=30; } else if( action.equals( AC_DARK ) ) { curUser = hero; Buff.affect(hero, Recharging.class, 40f); Buff.affect(hero, Arcane.class, 40f); - Buff.affect(hero, Weakness.class, 40f); + Buff.affect(hero, STRdown.class, 40f); Buff.affect(hero, Disarm.class, 40f); hero.sprite.emitter().burst(ElmoParticle.FACTORY, 12); Sample.INSTANCE.play(Assets.SND_BURNING); hero.spendAndNext(1f); updateQuickslot(); - charge-=20; + charge-=30; } else if (action.equals( AC_EARTH )){ curUser = hero; - curUser.HP += curUser.HT/5; - Buff.affect(hero, ShieldArmor.class).level(hero.HT/5); + //curUser.HP += curUser.HT/5; + Buff.affect(hero, EnergyArmor.class).level(hero.HT/5); Buff.affect(hero, BerryRegeneration.class).level(hero.HT / 5); Buff.affect(hero, Rhythm.class, 40f); @@ -136,16 +140,31 @@ public void execute( final Hero hero, String action ) { Sample.INSTANCE.play(Assets.SND_BURNING); hero.spendAndNext(1f); updateQuickslot(); - charge-=20; + charge-=30; + + } else if (action.equals( AC_LIFE )){ + curUser = hero; + + curUser.HP -= curUser.HT/5; + curUser.TRUE_HT -= curUser.TRUE_HT/5; + + + + + hero.sprite.emitter().burst(ElmoParticle.FACTORY, 12); + Sample.INSTANCE.play(Assets.SND_BURNING); + hero.spendAndNext(1f); + updateQuickslot(); + charge+=curUser.HT/5; - } else super.execute(hero, action); + } else super.execute(hero, action); } @Override public String status() { - return Messages.format("%d", (int)charge/25); + return Messages.format("%d", charge /30); } @Override diff --git a/java/com/hmdzl/spspd/items/misc/GunOfSoldier.java b/java/com/hmdzl/spspd/items/misc/GunOfSoldier.java index 34c5ce9d..9522d9e2 100644 --- a/java/com/hmdzl/spspd/items/misc/GunOfSoldier.java +++ b/java/com/hmdzl/spspd/items/misc/GunOfSoldier.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.effects.Splash; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.weapon.missiles.MissileWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; @@ -90,7 +90,7 @@ public void execute( final Hero hero, String action ) { @Override public String status() { - return Messages.format("%d", (int)charge/75); + return Messages.format("%d", charge /75); } @Override diff --git a/java/com/hmdzl/spspd/items/misc/HealBag.java b/java/com/hmdzl/spspd/items/misc/HealBag.java index cf985303..ff36ffab 100644 --- a/java/com/hmdzl/spspd/items/misc/HealBag.java +++ b/java/com/hmdzl/spspd/items/misc/HealBag.java @@ -28,13 +28,13 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Cripple; import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Bundle; @@ -96,14 +96,14 @@ public void execute(Hero hero, String action) { int c = curUser.pos + n; Char mob = Actor.findChar(c); if (mob != null && mob.HP < mob.HT * 0.75) { - mob.HP += (int) (mob.HT / 2); + mob.HP += mob.HT / 2; } } charge -= 50; Buff.detach(hero, Poison.class); Buff.detach(hero, Cripple.class); - Buff.detach(hero, Weakness.class); + Buff.detach(hero, STRdown.class); Buff.detach(hero, Bleeding.class); Buff.detach(hero, AttackDown.class); Buff.detach(hero, ArmorBreak.class); @@ -146,6 +146,6 @@ public String desc() { } @Override public String status() { - return Messages.format("%d", (int)charge/40); + return Messages.format("%d", charge /40); } } diff --git a/java/com/hmdzl/spspd/items/misc/JumpA.java b/java/com/hmdzl/spspd/items/misc/JumpA.java new file mode 100644 index 00000000..506f5dee --- /dev/null +++ b/java/com/hmdzl/spspd/items/misc/JumpA.java @@ -0,0 +1,163 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.items.misc; + +import com.hmdzl.spspd.Assets; +import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.actors.buffs.Arcane; +import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.InfJump; +import com.hmdzl.spspd.actors.hero.Hero; +import com.hmdzl.spspd.effects.CellEmitter; +import com.hmdzl.spspd.effects.Speck; +import com.hmdzl.spspd.items.Item; +import com.hmdzl.spspd.items.scrolls.ScrollOfTeleportation; +import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; +import com.hmdzl.spspd.scenes.CellSelector; +import com.hmdzl.spspd.scenes.GameScene; +import com.hmdzl.spspd.sprites.ItemSpriteSheet; +import com.hmdzl.spspd.utils.GLog; +import com.watabou.noosa.audio.Sample; +import com.watabou.utils.Bundle; +import com.watabou.utils.Random; + +import java.util.ArrayList; + + +public class JumpA extends Item { + { + //name = "Jump Shoes"; + image = ItemSpriteSheet.JUMP; + defaultAction = AC_JUMP; + unique = true; + + } + + private static int JUMP_TIME = 1; + private static final String AC_JUMP = "JUMP"; + private static final String TXT_ERROR = "Too far away"; + public final int fullCharge = 40; + public int charge = 0; + private static final String CHARGE = "charge"; + + @Override + public void storeInBundle(Bundle bundle) { + super.storeInBundle(bundle); + bundle.put(CHARGE, charge); + } + + @Override + public void restoreFromBundle(Bundle bundle) { + super.restoreFromBundle(bundle); + charge = bundle.getInt(CHARGE); + } + + @Override + public ArrayList actions(Hero hero) { + ArrayList actions = super.actions(hero); + if (charge >= 20 || hero.buff(InfJump.class) != null){ + actions.add(AC_JUMP); + } + actions.remove(AC_DROP); + actions.remove(AC_THROW); + return actions; + } + + protected CellSelector.Listener jumper = new CellSelector.Listener() { + + @Override + public void onSelect(Integer target) { + if (target != null && target != curUser.pos) { + Ballistica route = new Ballistica(curUser.pos, target, (Ballistica.STOP_TARGET | Ballistica.STOP_TERRAIN)); + int cell = route.collisionPos; + int dist = Level.distance(curUser.pos, cell); + int range = 4; + //if (Actor.findChar( cell ) != null && cell != curUser.pos) + //cell = route.path.get(route.dist-1); + + if (dist > 4) { + range = dist - 4; + cell = route.path.get(route.dist - range); + } + + final int dest = cell; + ScrollOfTeleportation.appear( curUser, dest ); + CellEmitter.get(dest).burst(Speck.factory(Speck.WOOL), 10); + Sample.INSTANCE.play(Assets.SND_PUFF); + Dungeon.level.press( dest, curUser ); + Dungeon.observe(); + if (Random.Int(10) < 4 ){ + Buff.affect(curUser, Arcane.class, 10f); + } + if(curUser.buff(InfJump.class) == null){ + charge -= 20; + } + curUser.spendAndNext(JUMP_TIME); + updateQuickslot(); + + } + } + + + public String prompt() { + return Messages.get(Jumpshoes.class, "prompt"); + } + }; + + @Override + public void execute(final Hero hero, String action) { + if (action.equals(AC_JUMP)) { + if (charge < 20 && hero.buff(InfJump.class) == null) + GLog.i(Messages.get(Jumpshoes.class, "rest")); + else { + curUser = hero; + GameScene.selectCell(jumper); + } + } else { + + super.execute(hero, action); + } + } + + @Override + public boolean isUpgradable() { + return false; + } + + @Override + public boolean isIdentified() { + return true; + } + + + @Override + public String info() { + String info = desc(); + info += "\n\n" + Messages.get(Jumpshoes.class, "charge",charge,fullCharge); + return info; + } + + @Override + public String status() { + return Messages.format("%d", charge /20); + } + + +} \ No newline at end of file diff --git a/java/com/hmdzl/spspd/items/misc/JumpF.java b/java/com/hmdzl/spspd/items/misc/JumpF.java index 9d7020d3..e74ca15e 100644 --- a/java/com/hmdzl/spspd/items/misc/JumpF.java +++ b/java/com/hmdzl/spspd/items/misc/JumpF.java @@ -17,25 +17,26 @@ */ package com.hmdzl.spspd.items.misc; -import java.util.ArrayList; - import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.actors.buffs.InfJump; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Plant; import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.utils.GLog; -import com.watabou.utils.Callback; import com.watabou.utils.Bundle; +import com.watabou.utils.Callback; import com.watabou.utils.Random; +import java.util.ArrayList; + public class JumpF extends Item { { @@ -69,7 +70,7 @@ public void restoreFromBundle(Bundle bundle) { @Override public ArrayList actions(Hero hero) { ArrayList actions = super.actions(hero); - if (charge >= 8){ + if (charge >= 8|| hero.buff(InfJump.class) != null){ actions.add(AC_JUMP); } actions.remove(AC_DROP); @@ -124,7 +125,9 @@ public void call() { Plant.Seed seed = (Plant.Seed) Generator.random(Generator.Category.SEED3); Dungeon.level.plant(seed, dest); } + if(curUser.buff(InfJump.class) == null){ charge -= 8; + } Dungeon.observe(); updateQuickslot(); } @@ -141,7 +144,7 @@ public String prompt() { @Override public void execute(final Hero hero, String action) { if (action.equals(AC_JUMP)) { - if (charge < 8) + if (charge < 8&& hero.buff(InfJump.class) == null) GLog.i(Messages.get(Jumpshoes.class, "rest")); else { curUser = hero; @@ -173,7 +176,7 @@ public String info() { @Override public String status() { - return Messages.format("%d", (int)charge/8); + return Messages.format("%d", charge /8); } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/items/misc/JumpH.java b/java/com/hmdzl/spspd/items/misc/JumpH.java index a41da25e..285daf84 100644 --- a/java/com/hmdzl/spspd/items/misc/JumpH.java +++ b/java/com/hmdzl/spspd/items/misc/JumpH.java @@ -17,29 +17,30 @@ */ package com.hmdzl.spspd.items.misc; -import java.util.ArrayList; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; +import com.hmdzl.spspd.actors.buffs.InfJump; import com.hmdzl.spspd.actors.hero.Hero; +import com.hmdzl.spspd.actors.mobs.Mob; +import com.hmdzl.spspd.effects.CellEmitter; +import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.weapon.missiles.EscapeKnive; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.effects.CellEmitter; -import com.hmdzl.spspd.effects.Speck; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.sprites.MissileSprite; import com.hmdzl.spspd.utils.GLog; -import com.watabou.utils.Callback; import com.watabou.utils.Bundle; -import java.util.HashMap; -import com.hmdzl.spspd.actors.mobs.Mob; -import com.hmdzl.spspd.sprites.MissileSprite; +import com.watabou.utils.Callback; import com.watabou.utils.Random; +import java.util.ArrayList; +import java.util.HashMap; + public class JumpH extends Item { @@ -72,7 +73,7 @@ public void restoreFromBundle(Bundle bundle) { @Override public ArrayList actions(Hero hero) { ArrayList actions = super.actions(hero); - if (charge >= 15){ + if (charge >= 15|| hero.buff(InfJump.class) != null){ actions.add(AC_JUMP); } actions.remove(AC_DROP); @@ -117,7 +118,7 @@ public void call() { Item proto = new EscapeKnive(); for (Mob mob : Dungeon.level.mobs) { - if (Level.fieldOfView[mob.pos] && (Dungeon.level.distance(curUser.pos, mob.pos) <= 7) && mob.isAlive()) { + if (Level.fieldOfView[mob.pos] && (Level.distance(curUser.pos, mob.pos) <= 7) && mob.isAlive()) { Callback callback = new Callback() { @Override public void call() { @@ -139,7 +140,9 @@ public void call() { CellEmitter.center(dest).burst( Speck.factory(Speck.DUST), 10); curUser.spendAndNext(JUMP_TIME); + if(curUser.buff(InfJump.class) == null){ charge -= 15; + } updateQuickslot(); } @@ -158,7 +161,7 @@ public String prompt() { @Override public void execute(final Hero hero, String action) { if (action.equals(AC_JUMP)) { - if (charge < 15) + if (charge < 15&& hero.buff(InfJump.class) == null) GLog.i(Messages.get(Jumpshoes.class, "rest")); else { curUser = hero; @@ -190,7 +193,7 @@ public String info() { @Override public String status() { - return Messages.format("%d", (int)charge/15); + return Messages.format("%d", charge /15); } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/items/misc/JumpM.java b/java/com/hmdzl/spspd/items/misc/JumpM.java index f99f5fbb..f270a5c2 100644 --- a/java/com/hmdzl/spspd/items/misc/JumpM.java +++ b/java/com/hmdzl/spspd/items/misc/JumpM.java @@ -17,28 +17,29 @@ */ package com.hmdzl.spspd.items.misc; -import java.util.ArrayList; - import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.buffs.Arcane; -import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.InfJump; +import com.hmdzl.spspd.actors.hero.Hero; +import com.hmdzl.spspd.effects.CellEmitter; +import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.scrolls.ScrollOfTeleportation; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.effects.CellEmitter; -import com.hmdzl.spspd.effects.Speck; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; import com.watabou.utils.Random; +import java.util.ArrayList; + public class JumpM extends Item { { @@ -72,7 +73,7 @@ public void restoreFromBundle(Bundle bundle) { @Override public ArrayList actions(Hero hero) { ArrayList actions = super.actions(hero); - if (charge >= 15){ + if (charge >= 15 || hero.buff(InfJump.class) != null){ actions.add(AC_JUMP); } actions.remove(AC_DROP); @@ -106,7 +107,9 @@ public void onSelect(Integer target) { curUser.spendAndNext(JUMP_TIME); if (Random.Int(10) > 3 ){ Buff.affect(curUser, Arcane.class, 10f);} - charge -= 15; + if(curUser.buff(InfJump.class) == null){ + charge -= 15; + } updateQuickslot(); /*curUser.busy(); @@ -137,7 +140,7 @@ public String prompt() { @Override public void execute(final Hero hero, String action) { if (action.equals(AC_JUMP)) { - if (charge < 15) + if (charge < 15&& hero.buff(InfJump.class) == null) GLog.i(Messages.get(Jumpshoes.class, "rest")); else { curUser = hero; @@ -169,7 +172,7 @@ public String info() { @Override public String status() { - return Messages.format("%d", (int)charge/15); + return Messages.format("%d", charge /15); } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/items/misc/JumpP.java b/java/com/hmdzl/spspd/items/misc/JumpP.java index b79a4d34..d6333b86 100644 --- a/java/com/hmdzl/spspd/items/misc/JumpP.java +++ b/java/com/hmdzl/spspd/items/misc/JumpP.java @@ -17,26 +17,27 @@ */ package com.hmdzl.spspd.items.misc; -import java.util.ArrayList; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; +import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.GlassShield; +import com.hmdzl.spspd.actors.buffs.InfJump; import com.hmdzl.spspd.actors.buffs.Rhythm; import com.hmdzl.spspd.actors.buffs.Rhythm2; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.hero.HeroSubClass; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.utils.GLog; -import com.watabou.utils.Callback; import com.watabou.utils.Bundle; +import com.watabou.utils.Callback; + +import java.util.ArrayList; import static com.hmdzl.spspd.Dungeon.hero; @@ -72,7 +73,7 @@ public void restoreFromBundle(Bundle bundle) { @Override public ArrayList actions(Hero hero) { ArrayList actions = super.actions(hero); - if (charge >= 10){ + if (charge >= 10|| hero.buff(InfJump.class) != null){ actions.add(AC_JUMP); } actions.remove(AC_DROP); @@ -133,7 +134,7 @@ public String prompt() { @Override public void execute(final Hero hero, String action) { if (action.equals(AC_JUMP)) { - if (charge < 10) + if (charge < 10&& hero.buff(InfJump.class) == null) GLog.i(Messages.get(Jumpshoes.class, "rest")); else { curUser = hero; @@ -165,7 +166,7 @@ public String info() { @Override public String status() { - return Messages.format("%d", (int)charge/10); + return Messages.format("%d", charge /10); } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/items/misc/JumpR.java b/java/com/hmdzl/spspd/items/misc/JumpR.java index 96662326..fe74062e 100644 --- a/java/com/hmdzl/spspd/items/misc/JumpR.java +++ b/java/com/hmdzl/spspd/items/misc/JumpR.java @@ -17,26 +17,27 @@ */ package com.hmdzl.spspd.items.misc; -import java.util.ArrayList; - import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.actors.buffs.Levitation; -import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.InfJump; import com.hmdzl.spspd.actors.buffs.Invisibility; +import com.hmdzl.spspd.actors.buffs.Levitation; +import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.utils.GLog; -import com.watabou.utils.Callback; import com.watabou.utils.Bundle; +import com.watabou.utils.Callback; import com.watabou.utils.Random; +import java.util.ArrayList; + public class JumpR extends Item { { @@ -69,7 +70,7 @@ public void restoreFromBundle(Bundle bundle) { @Override public ArrayList actions(Hero hero) { ArrayList actions = super.actions(hero); - if (charge >= 10){ + if (charge >= 10|| hero.buff(InfJump.class) != null){ actions.add(AC_JUMP); } actions.remove(AC_DROP); @@ -115,7 +116,9 @@ public void call() { curUser.spendAndNext(JUMP_TIME); if (Random.Int(10) > 3 ){ Buff.prolong(curUser, Invisibility.class,5);} + if(curUser.buff(InfJump.class) == null){ charge -= 10; + } updateQuickslot(); } }); @@ -131,7 +134,7 @@ public String prompt() { @Override public void execute(final Hero hero, String action) { if (action.equals(AC_JUMP)) { - if (charge < 10) + if (charge < 10&& hero.buff(InfJump.class) == null) GLog.i(Messages.get(Jumpshoes.class, "rest")); else { curUser = hero; @@ -163,7 +166,7 @@ public String info() { @Override public String status() { - return Messages.format("%d", (int)charge/10); + return Messages.format("%d", charge /10); } diff --git a/java/com/hmdzl/spspd/items/misc/JumpS.java b/java/com/hmdzl/spspd/items/misc/JumpS.java index 43ff8e75..654775cd 100644 --- a/java/com/hmdzl/spspd/items/misc/JumpS.java +++ b/java/com/hmdzl/spspd/items/misc/JumpS.java @@ -17,23 +17,24 @@ */ package com.hmdzl.spspd.items.misc; -import java.util.ArrayList; - +import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.InfJump; import com.hmdzl.spspd.actors.buffs.TargetShoot; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.utils.GLog; -import com.watabou.utils.Callback; import com.watabou.utils.Bundle; +import com.watabou.utils.Callback; import com.watabou.utils.Random; +import java.util.ArrayList; + public class JumpS extends Item { { @@ -67,7 +68,7 @@ public void restoreFromBundle(Bundle bundle) { @Override public ArrayList actions(Hero hero) { ArrayList actions = super.actions(hero); - if (charge >= 15){ + if (charge >= 15|| hero.buff(InfJump.class) != null){ actions.add(AC_JUMP); } actions.remove(AC_DROP); @@ -115,7 +116,9 @@ public void call() { curUser.belongings.relord(); Buff.affect(curUser, TargetShoot.class, 10f); } + if(curUser.buff(InfJump.class) == null){ charge -= 10; + } updateQuickslot(); } }); @@ -131,7 +134,7 @@ public String prompt() { @Override public void execute(final Hero hero, String action) { if (action.equals(AC_JUMP)) { - if (charge < 10) + if (charge < 10&& hero.buff(InfJump.class) == null) GLog.i(Messages.get(Jumpshoes.class, "rest")); else { curUser = hero; @@ -163,7 +166,7 @@ public String info() { @Override public String status() { - return Messages.format("%d", (int)charge/10); + return Messages.format("%d", charge /10); } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/items/misc/JumpW.java b/java/com/hmdzl/spspd/items/misc/JumpW.java index eca3ae12..521f76fa 100644 --- a/java/com/hmdzl/spspd/items/misc/JumpW.java +++ b/java/com/hmdzl/spspd/items/misc/JumpW.java @@ -17,27 +17,28 @@ */ package com.hmdzl.spspd.items.misc; -import java.util.ArrayList; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.InfJump; import com.hmdzl.spspd.actors.buffs.Paralysis; +import com.hmdzl.spspd.actors.hero.Hero; +import com.hmdzl.spspd.effects.CellEmitter; +import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.effects.CellEmitter; -import com.hmdzl.spspd.effects.Speck; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.utils.GLog; +import com.watabou.utils.Bundle; import com.watabou.utils.Callback; import com.watabou.utils.Random; -import com.watabou.utils.Bundle; + +import java.util.ArrayList; public class JumpW extends Item { @@ -71,7 +72,7 @@ public void restoreFromBundle(Bundle bundle) { @Override public ArrayList actions(Hero hero) { ArrayList actions = super.actions(hero); - if (charge >= 25){ + if (charge >= 25|| hero.buff(InfJump.class) != null){ actions.add(AC_JUMP); } actions.remove(AC_DROP); @@ -117,7 +118,9 @@ public void call() { Speck.factory(Speck.DUST), 10); curUser.spendAndNext(JUMP_TIME); //Buff.affect(curUser, AttackUp.class, 10f).level(50); - charge -= 25; + if(curUser.buff(InfJump.class) == null){ + charge -= 25; + } updateQuickslot(); } }); @@ -134,7 +137,7 @@ public String prompt() { @Override public void execute(final Hero hero, String action) { if (action.equals(AC_JUMP)) { - if (charge < 25) + if (charge < 25&& hero.buff(InfJump.class) == null) GLog.i(Messages.get(Jumpshoes.class, "rest")); else { curUser = hero; @@ -166,7 +169,7 @@ public String info() { @Override public String status() { - return Messages.format("%d", (int)charge/25); + return Messages.format("%d", charge /25); } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/items/misc/Jumpshoes.java b/java/com/hmdzl/spspd/items/misc/Jumpshoes.java index af4db847..d19a1d88 100644 --- a/java/com/hmdzl/spspd/items/misc/Jumpshoes.java +++ b/java/com/hmdzl/spspd/items/misc/Jumpshoes.java @@ -17,24 +17,25 @@ */ package com.hmdzl.spspd.items.misc; -import java.util.ArrayList; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.buffs.InfJump; import com.hmdzl.spspd.actors.hero.Hero; +import com.hmdzl.spspd.effects.CellEmitter; +import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.effects.CellEmitter; -import com.hmdzl.spspd.effects.Speck; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.utils.GLog; -import com.watabou.utils.Callback; import com.watabou.utils.Bundle; +import com.watabou.utils.Callback; + +import java.util.ArrayList; public class Jumpshoes extends Item { @@ -68,7 +69,7 @@ public void restoreFromBundle(Bundle bundle) { @Override public ArrayList actions(Hero hero) { ArrayList actions = super.actions(hero); - if (charge >= 10){ + if (charge >= 10|| hero.buff(InfJump.class) != null){ actions.add(AC_JUMP); } actions.remove(AC_DROP); @@ -116,7 +117,9 @@ public void call() { CellEmitter.center(dest).burst( Speck.factory(Speck.DUST), 10); curUser.spendAndNext(JUMP_TIME); + if(curUser.buff(InfJump.class) == null){ charge -= 10; + } updateQuickslot(); } }); @@ -132,7 +135,7 @@ public String prompt() { @Override public void execute(final Hero hero, String action) { if (action.equals(AC_JUMP)) { - if (charge < 10) + if (charge < 10&& hero.buff(InfJump.class) == null) GLog.i(Messages.get(this, "rest")); else { curUser = hero; @@ -164,7 +167,7 @@ public String info() { @Override public String status() { - return Messages.format("%d", (int)charge/10); + return Messages.format("%d", charge /10); } } \ No newline at end of file diff --git a/java/com/hmdzl/spspd/items/misc/LeaderFlag.java b/java/com/hmdzl/spspd/items/misc/LeaderFlag.java index 17013b0d..e54cc0b7 100644 --- a/java/com/hmdzl/spspd/items/misc/LeaderFlag.java +++ b/java/com/hmdzl/spspd/items/misc/LeaderFlag.java @@ -22,13 +22,8 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.actors.buffs.Awareness; -import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.HasteBuff; -import com.hmdzl.spspd.actors.buffs.Hunger; -import com.hmdzl.spspd.actors.buffs.MechArmor; -import com.hmdzl.spspd.actors.buffs.MindVision; import com.hmdzl.spspd.actors.hero.Hero; +import com.hmdzl.spspd.effects.particles.ElmoParticle; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.weapon.missiles.buildblock.BookBlock; @@ -39,14 +34,12 @@ import com.hmdzl.spspd.items.weapon.missiles.buildblock.WoodenBlock; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.ui.BuffIndicator; import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; -import com.watabou.utils.Random; import java.util.ArrayList; @@ -57,7 +50,7 @@ public class LeaderFlag extends Item { public static final String AC_EXILE = "EXILE"; public static final String AC_LEVY = "LEVY"; - private static final float TIME_TO_DIG = 1f; + private static final float TIME_TO_USE = 1f; { //name = "LeaderFlag"; @@ -91,8 +84,12 @@ public ArrayList actions(Hero hero ) { if (charge >= 600){ actions.add(AC_RECRUIT); - actions.add(AC_EXILE); } + + if (hero.spp > hero.lvl && charge >= 600){ + actions.add(AC_EXILE); + } + if (charge >= 100){ actions.add(AC_REMOVE); } @@ -164,6 +161,12 @@ public void execute( final Hero hero, String action ) { Dungeon.observe(); } + if (Dungeon.level.map[c] == Terrain.GLASS_WALL && Level.insideMap(c)) { + Level.set(c, Terrain.EMPTY); + GameScene.updateMap(c); + Dungeon.observe(); + } + Level.set(c, Terrain.EMPTY); GameScene.updateMap(c); Dungeon.observe(); @@ -171,8 +174,10 @@ public void execute( final Hero hero, String action ) { } - hero.spend(TIME_TO_DIG); - hero.busy(); + curUser = hero; + Sample.INSTANCE.play(Assets.SND_BURNING); + curUser.sprite.emitter().burst(ElmoParticle.FACTORY, 12); + curUser.spendAndNext(1f); } charge -= 100; updateQuickslot(); @@ -182,26 +187,31 @@ public void execute( final Hero hero, String action ) { } else if( action.equals( AC_RECRUIT )){ charge-=600; - Dungeon.hero.spp += hero.lvl; - hero.spend(TIME_TO_DIG); - hero.busy(); + Dungeon.hero.spp += hero.lvl; + curUser = hero; + Sample.INSTANCE.play(Assets.SND_BURNING); + curUser.sprite.emitter().burst(ElmoParticle.FACTORY, 12); + curUser.spendAndNext(1f); } else if( action.equals( AC_EXILE )){ charge-=600; Dungeon.gold = Math.max(0, (hero.spp - hero.lvl)*10 ); Dungeon.hero.spp += hero.lvl; - hero.spend(TIME_TO_DIG); - hero.busy(); + curUser = hero; + Sample.INSTANCE.play(Assets.SND_BURNING); + curUser.sprite.emitter().burst(ElmoParticle.FACTORY, 12); + curUser.spendAndNext(1f); } else if( action.equals( AC_LEVY )){ charge-=1000; int c = Math.max((int)(hero.spp/50),1); - for (int i = 0; i < c ; i++ ){ - Dungeon.level.drop(Generator.random(), hero.pos).sprite.drop(); + if (c > 0) { + for (int i = 0; i < c; i++) { + Dungeon.level.drop(Generator.random(), hero.pos).sprite.drop(); + } } - hero.spend(TIME_TO_DIG); - hero.busy(); - Sample.INSTANCE.play(Assets.SND_DRINK); - - hero.sprite.operate(hero.pos); + curUser = hero; + Sample.INSTANCE.play(Assets.SND_BURNING); + curUser.sprite.emitter().burst(ElmoParticle.FACTORY, 12); + curUser.spendAndNext(1f); } else { super.execute(hero, action); diff --git a/java/com/hmdzl/spspd/items/misc/MKbox.java b/java/com/hmdzl/spspd/items/misc/MKbox.java index 35b3006c..ad65584a 100644 --- a/java/com/hmdzl/spspd/items/misc/MKbox.java +++ b/java/com/hmdzl/spspd/items/misc/MKbox.java @@ -30,7 +30,7 @@ import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.weapon.melee.zero.WoodenHammer; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/items/misc/MiscEquippable.java b/java/com/hmdzl/spspd/items/misc/MiscEquippable.java index a8e01549..6781d8a0 100644 --- a/java/com/hmdzl/spspd/items/misc/MiscEquippable.java +++ b/java/com/hmdzl/spspd/items/misc/MiscEquippable.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.KindofMisc; import com.hmdzl.spspd.items.artifacts.Artifact; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.utils.GLog; public class MiscEquippable extends KindofMisc { diff --git a/java/com/hmdzl/spspd/items/misc/MissileShield.java b/java/com/hmdzl/spspd/items/misc/MissileShield.java index ee8a7c0b..417f1a3c 100644 --- a/java/com/hmdzl/spspd/items/misc/MissileShield.java +++ b/java/com/hmdzl/spspd/items/misc/MissileShield.java @@ -28,7 +28,7 @@ import com.hmdzl.spspd.effects.Splash; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.weapon.missiles.MissileWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; diff --git a/java/com/hmdzl/spspd/items/misc/NeedPaper.java b/java/com/hmdzl/spspd/items/misc/NeedPaper.java index c9c75be9..13d5528b 100644 --- a/java/com/hmdzl/spspd/items/misc/NeedPaper.java +++ b/java/com/hmdzl/spspd/items/misc/NeedPaper.java @@ -20,8 +20,6 @@ import java.util.ArrayList; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.actors.Actor; -import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.ArmorBreak; import com.hmdzl.spspd.actors.buffs.AttackDown; import com.hmdzl.spspd.actors.buffs.Bleeding; @@ -29,22 +27,18 @@ import com.hmdzl.spspd.actors.buffs.Cripple; import com.hmdzl.spspd.actors.buffs.ForeverShadow; import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.Item; -import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; import com.hmdzl.spspd.windows.WndItem; -import com.watabou.utils.Bundle; import com.watabou.utils.Random; -import static com.hmdzl.spspd.ui.ActionIndicator.action; - public class NeedPaper extends Item { { @@ -89,7 +83,7 @@ public void execute(Hero hero, String action) { Buff.affect(hero, ForeverShadow.class, 15f); Buff.detach(hero, Poison.class); Buff.detach(hero, Cripple.class); - Buff.detach(hero, Weakness.class); + Buff.detach(hero, STRdown.class); Buff.detach(hero, Bleeding.class); Buff.detach(hero, AttackDown.class); Buff.detach(hero, ArmorBreak.class); diff --git a/java/com/hmdzl/spspd/items/misc/NmHealBag.java b/java/com/hmdzl/spspd/items/misc/NmHealBag.java index 6461f971..1ae905e2 100644 --- a/java/com/hmdzl/spspd/items/misc/NmHealBag.java +++ b/java/com/hmdzl/spspd/items/misc/NmHealBag.java @@ -20,30 +20,24 @@ import java.util.ArrayList; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.actors.Actor; -import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.ArmorBreak; import com.hmdzl.spspd.actors.buffs.AttackDown; import com.hmdzl.spspd.actors.buffs.Bleeding; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Cripple; import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.Item; -import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; import com.hmdzl.spspd.windows.WndItem; -import com.watabou.utils.Bundle; import com.watabou.utils.Random; -import static com.hmdzl.spspd.ui.ActionIndicator.action; - public class NmHealBag extends Item { { @@ -86,7 +80,7 @@ public void execute(Hero hero, String action) { Dungeon.hero.spp = 0; Buff.detach(hero, Poison.class); Buff.detach(hero, Cripple.class); - Buff.detach(hero, Weakness.class); + Buff.detach(hero, STRdown.class); Buff.detach(hero, Bleeding.class); Buff.detach(hero, AttackDown.class); Buff.detach(hero, ArmorBreak.class); @@ -108,7 +102,7 @@ public void execute(Hero hero, String action) { } else if (action.equals(AC_ADD)) { if (hero.HP > 10) { - Dungeon.hero.spp += (int)(hero.HP/4); + Dungeon.hero.spp += hero.HP/4; hero.HP = 1; } hero.spendAndNext(1f); diff --git a/java/com/hmdzl/spspd/items/misc/PPC.java b/java/com/hmdzl/spspd/items/misc/PPC.java index c38536f4..4e0508ec 100644 --- a/java/com/hmdzl/spspd/items/misc/PPC.java +++ b/java/com/hmdzl/spspd/items/misc/PPC.java @@ -20,33 +20,21 @@ */ package com.hmdzl.spspd.items.misc; -import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.buffs.Bless; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Hunger; -import com.hmdzl.spspd.actors.buffs.WarGroove; import com.hmdzl.spspd.actors.buffs.mindbuff.AmokMind; import com.hmdzl.spspd.actors.buffs.mindbuff.CrazyMind; import com.hmdzl.spspd.actors.buffs.mindbuff.LoseMind; import com.hmdzl.spspd.actors.buffs.mindbuff.TerrorMind; import com.hmdzl.spspd.actors.buffs.mindbuff.WeakMind; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.effects.CellEmitter; -import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.weapon.missiles.MindArrow; -import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.levels.Terrain; -import com.hmdzl.spspd.messages.Messages; -import com.hmdzl.spspd.scenes.GameScene; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.ui.BuffIndicator; import com.hmdzl.spspd.utils.GLog; -import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; -import com.watabou.utils.Callback; import com.watabou.utils.Random; import java.util.ArrayList; @@ -116,17 +104,17 @@ public void execute( final Hero hero, String action ) { hero.sprite.operate(hero.pos); hero.busy(); charge -= 20; - if (Dungeon.hero.buff(WeakMind.class) != null) { - Buff.detach(Dungeon.hero, WeakMind.class); - } else if (Dungeon.hero.buff(AmokMind.class) != null) { - Buff.detach(Dungeon.hero, AmokMind.class); - } else if (Dungeon.hero.buff(CrazyMind.class) != null) { - Buff.detach(Dungeon.hero, CrazyMind.class); - } else if (Dungeon.hero.buff(TerrorMind.class) != null) { - Buff.detach(Dungeon.hero, TerrorMind.class); - } else if (Dungeon.hero.buff(LoseMind.class) != null) { - Buff.detach(Dungeon.hero, LoseMind.class); - } + if (Dungeon.hero.buff(CrazyMind.class) != null) { + Buff.detach(Dungeon.hero, CrazyMind.class); + } else if (Dungeon.hero.buff(WeakMind.class) != null) { + Buff.detach(Dungeon.hero, WeakMind.class); + } else if (Dungeon.hero.buff(AmokMind.class) != null) { + Buff.detach(Dungeon.hero, AmokMind.class); + } else if (Dungeon.hero.buff(TerrorMind.class) != null) { + Buff.detach(Dungeon.hero, TerrorMind.class); + } else if (Dungeon.hero.buff(LoseMind.class) != null) { + Buff.detach(Dungeon.hero, LoseMind.class); + } Dungeon.hero.HP += Dungeon.hero.HT / 5; Dungeon.hero.spp = 0; @@ -134,7 +122,7 @@ public void execute( final Hero hero, String action ) { if (action.equals(AC_MIND)) { hero.sprite.operate(hero.pos); hero.busy(); - charge -= 5; + charge -= 2; Dungeon.level.drop(new MindArrow(5), hero.pos).sprite.drop(); } else { super.execute(hero, action); diff --git a/java/com/hmdzl/spspd/items/misc/PPC2.java b/java/com/hmdzl/spspd/items/misc/PPC2.java new file mode 100644 index 00000000..f666699c --- /dev/null +++ b/java/com/hmdzl/spspd/items/misc/PPC2.java @@ -0,0 +1,402 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2015 Oleg Dolya + * + * Yet Another Pixel Dungeon + * Copyright (C) 2015-2016 Considered Hamster + * + * 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 + */ +package com.hmdzl.spspd.items.misc; + +import com.hmdzl.spspd.Assets; +import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.actors.buffs.Bless; +import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.Hunger; +import com.hmdzl.spspd.actors.buffs.mindbuff.AmokMind; +import com.hmdzl.spspd.actors.buffs.mindbuff.CrazyMind; +import com.hmdzl.spspd.actors.buffs.mindbuff.HopeMind; +import com.hmdzl.spspd.actors.buffs.mindbuff.KeepMind; +import com.hmdzl.spspd.actors.buffs.mindbuff.LoseMind; +import com.hmdzl.spspd.actors.buffs.mindbuff.TerrorMind; +import com.hmdzl.spspd.actors.buffs.mindbuff.WeakMind; +import com.hmdzl.spspd.actors.hero.Hero; +import com.hmdzl.spspd.effects.CellEmitter; +import com.hmdzl.spspd.effects.Speck; +import com.hmdzl.spspd.items.Generator; +import com.hmdzl.spspd.items.Gold; +import com.hmdzl.spspd.items.Item; +import com.hmdzl.spspd.items.weapon.missiles.buildblock.BookBlock; +import com.hmdzl.spspd.items.weapon.missiles.buildblock.DoorBlock; +import com.hmdzl.spspd.items.weapon.missiles.buildblock.StoneBlock; +import com.hmdzl.spspd.items.weapon.missiles.buildblock.WallBlock; +import com.hmdzl.spspd.items.weapon.missiles.buildblock.WaterBlock; +import com.hmdzl.spspd.items.weapon.missiles.buildblock.WoodenBlock; +import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.levels.Terrain; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; +import com.hmdzl.spspd.scenes.GameScene; +import com.hmdzl.spspd.sprites.ItemSpriteSheet; +import com.hmdzl.spspd.ui.BuffIndicator; +import com.hmdzl.spspd.utils.GLog; +import com.watabou.noosa.audio.Sample; +import com.watabou.utils.Callback; +import com.watabou.utils.Random; + +import java.util.ArrayList; + +public class PPC2 extends Item { + + public static final String AC_TRY = "TRY"; + public static final String AC_HEAL = "HEAL"; + public static final String AC_MIND = "MIND"; + + public static final float TIME_TO_MINE = 3; + { + //name = "PPC2"; + image = ItemSpriteSheet.PPC; + defaultAction = AC_TRY; + unique = true; + + } + + @Override + public ArrayList actions(Hero hero ) { + ArrayList actions = super.actions( hero ); + + actions.add(AC_TRY); + if (hero.spp > hero.lvl*2) + actions.add(AC_HEAL); + actions.add(AC_MIND); + + actions.remove( AC_THROW ); + actions.remove( AC_DROP ); + return actions; + } + + + + @Override + public void execute( final Hero hero, String action ) { + if (action.equals(AC_TRY)) { + if (Dungeon.hero.isHungry() || Dungeon.hero.isStarving()){ + GLog.i(Messages.get(this, "break")); + return; + } + + for (int i = 0; i < Level.NEIGHBOURS4.length; i++) { + + final int pos = hero.pos + Level.NEIGHBOURS8[i]; + if (Dungeon.level.map[pos] == Terrain.WALL && Level.insideMap(pos)) { + + hero.spend(TIME_TO_MINE); + hero.busy(); + + hero.sprite.attack(pos, new Callback() { + + @Override + public void call() { + + CellEmitter.center(pos).burst( + Speck.factory(Speck.STAR), 7); + Sample.INSTANCE.play(Assets.SND_EVOKE); + + Level.set(pos, Terrain.EMBERS); + GameScene.updateMap(pos); + + WallBlock wall = new WallBlock(); + + + if (Random.Int(30)==1){ + Dungeon.level.drop(new Gold(50), hero.pos).sprite.drop(); + Dungeon.level.drop(wall, hero.pos).sprite.drop(); + } + Hunger hunger = hero.buff(Hunger.class); + if (hunger != null && !hunger.isStarving()) { + hunger.satisfy(-10); + BuffIndicator.refreshHero(); + } + + hero.onOperateComplete(); + } + }); + + return; + } else if (Dungeon.level.map[pos] == Terrain.DOOR && Level.insideMap(pos)) { + + hero.spend(TIME_TO_MINE); + hero.busy(); + + hero.sprite.attack(pos, new Callback() { + + @Override + public void call() { + + CellEmitter.center(pos).burst( + Speck.factory(Speck.STAR), 7); + Sample.INSTANCE.play(Assets.SND_EVOKE); + + Level.set(pos, Terrain.EMBERS); + GameScene.updateMap(pos); + + DoorBlock door = new DoorBlock(); + + if (Random.Int(30)==1){ + Dungeon.level.drop(Generator.random(Generator.Category.SEED), hero.pos).sprite.drop(); + Dungeon.level.drop(door, hero.pos).sprite.drop(); + } + + Hunger hunger = hero.buff(Hunger.class); + if (hunger != null && !hunger.isStarving()) { + hunger.satisfy(-10); + BuffIndicator.refreshHero(); + } + + hero.onOperateComplete(); + } + }); + + return; + } else if (Dungeon.level.map[pos] == Terrain.BOOKSHELF && Level.insideMap(pos)) { + + hero.spend(TIME_TO_MINE); + hero.busy(); + + hero.sprite.attack(pos, new Callback() { + + @Override + public void call() { + + CellEmitter.center(pos).burst( + Speck.factory(Speck.STAR), 7); + Sample.INSTANCE.play(Assets.SND_EVOKE); + + Level.set(pos, Terrain.EMBERS); + GameScene.updateMap(pos); + + BookBlock book = new BookBlock(); + + if (Random.Int(30)==1){ + Dungeon.level.drop(Generator.random(Generator.Category.SCROLL), hero.pos).sprite.drop(); + Dungeon.level.drop(book, hero.pos).sprite.drop(); + } + + Hunger hunger = hero.buff(Hunger.class); + if (hunger != null && !hunger.isStarving()) { + hunger.satisfy(-10); + BuffIndicator.refreshHero(); + } + + hero.onOperateComplete(); + } + }); + + return; + } else if (Dungeon.level.map[pos] == Terrain.BARRICADE && Level.insideMap(pos)) { + + hero.spend(TIME_TO_MINE); + hero.busy(); + + hero.sprite.attack(pos, new Callback() { + + @Override + public void call() { + + CellEmitter.center(pos).burst( + Speck.factory(Speck.STAR), 7); + Sample.INSTANCE.play(Assets.SND_EVOKE); + + Level.set(pos, Terrain.EMBERS); + GameScene.updateMap(pos); + + WoodenBlock wooden = new WoodenBlock(); + + if (Random.Int(15)==1){ + Dungeon.level.drop(Generator.random(Generator.Category.MUSHROOM), hero.pos).sprite.drop(); + Dungeon.level.drop(wooden, hero.pos).sprite.drop(); + } + + Hunger hunger = hero.buff(Hunger.class); + if (hunger != null && !hunger.isStarving()) { + hunger.satisfy(-10); + BuffIndicator.refreshHero(); + } + + hero.onOperateComplete(); + } + }); + + return; + } else if (Dungeon.level.map[pos] == Terrain.WATER && Level.insideMap(pos)) { + + hero.spend(TIME_TO_MINE); + hero.busy(); + + hero.sprite.attack(pos, new Callback() { + + @Override + public void call() { + + CellEmitter.center(pos).burst( + Speck.factory(Speck.STAR), 7); + Sample.INSTANCE.play(Assets.SND_EVOKE); + + Level.set(pos, Terrain.EMBERS); + GameScene.updateMap(pos); + + WaterBlock water = new WaterBlock(); + + if (Random.Int(30)==1){ + Dungeon.level.drop(Generator.random(Generator.Category.SEED), hero.pos).sprite.drop(); + Dungeon.level.drop(water, hero.pos).sprite.drop(); + } + + Hunger hunger = hero.buff(Hunger.class); + if (hunger != null && !hunger.isStarving()) { + hunger.satisfy(-10); + BuffIndicator.refreshHero(); + } + + hero.onOperateComplete(); + } + }); + + return; + } else if (Dungeon.level.map[pos] == Terrain.STATUE && Level.insideMap(pos)) { + + hero.spend(TIME_TO_MINE); + hero.busy(); + + hero.sprite.attack(pos, new Callback() { + + @Override + public void call() { + + CellEmitter.center(pos).burst( + Speck.factory(Speck.STAR), 7); + Sample.INSTANCE.play(Assets.SND_EVOKE); + + Level.set(pos, Terrain.EMBERS); + GameScene.updateMap(pos); + + StoneBlock stone = new StoneBlock(); + + if (Random.Int(30)==1){ + Dungeon.level.drop(Generator.random(), hero.pos).sprite.drop(); + Dungeon.level.drop(stone, hero.pos).sprite.drop(); + } + + Hunger hunger = hero.buff(Hunger.class); + if (hunger != null && !hunger.isStarving()) { + hunger.satisfy(-10); + BuffIndicator.refreshHero(); + } + + hero.onOperateComplete(); + } + }); + + return; + } + } + GLog.w(Messages.get(this,"no_thing")); + + } + + if (action.equals(AC_HEAL)) { + + switch (Random.Int(8)){ + case 0: + if (Dungeon.hero.buff(HopeMind.class) != null); + else {Buff.affect(Dungeon.hero,HopeMind.class); + break;} + case 1: + if (Dungeon.hero.buff(KeepMind.class) != null); + else {Buff.affect(Dungeon.hero,KeepMind.class); + break;} + case 2: + if (Dungeon.hero.buff(AmokMind.class) != null); + else {Buff.affect(Dungeon.hero,AmokMind.class); + break;} + case 3: + if (Dungeon.hero.buff(CrazyMind.class) != null); + else {Buff.affect(Dungeon.hero,CrazyMind.class); + break;} + case 4: + if (Dungeon.hero.buff(WeakMind.class) != null); + else {Buff.affect(Dungeon.hero,WeakMind.class); + break;} + case 5: + if (Dungeon.hero.buff(LoseMind.class) != null); + else {Buff.affect(Dungeon.hero,LoseMind.class); + break;} + case 6: + if (Dungeon.hero.buff(TerrorMind.class) != null); + else {Buff.affect(Dungeon.hero,TerrorMind.class); + break;} + case 7: + Buff.affect(Dungeon.hero,Bless.class,20f); + break; + } + hero.sprite.operate(hero.pos); + hero.busy(); + hero.spp -= hero.lvl*2; + } + + + if (action.equals(AC_MIND)) { + hero.sprite.operate(hero.pos); + hero.busy(); + if (Dungeon.hero.buff(CrazyMind.class) != null) { + Buff.detach(Dungeon.hero, CrazyMind.class); + Dungeon.hero.HP += Dungeon.hero.HT / 5; + Dungeon.hero.spp += Dungeon.hero.lvl-1; + } else if (Dungeon.hero.buff(WeakMind.class) != null) { + Buff.detach(Dungeon.hero, WeakMind.class); + Dungeon.hero.HP += Dungeon.hero.HT / 5; + Dungeon.hero.spp += Dungeon.hero.lvl-1; + } else if (Dungeon.hero.buff(AmokMind.class) != null) { + Buff.detach(Dungeon.hero, AmokMind.class); + Dungeon.hero.HP += Dungeon.hero.HT / 5; + Dungeon.hero.spp += Dungeon.hero.lvl-1; + } else if (Dungeon.hero.buff(TerrorMind.class) != null) { + Buff.detach(Dungeon.hero, TerrorMind.class); + Dungeon.hero.HP += Dungeon.hero.HT / 5; + Dungeon.hero.spp += Dungeon.hero.lvl-1; + } else if (Dungeon.hero.buff(LoseMind.class) != null) { + Buff.detach(Dungeon.hero, LoseMind.class); + Dungeon.hero.HP += Dungeon.hero.HT / 5; + Dungeon.hero.spp += Dungeon.hero.lvl-1; + } + //Dungeon.level.drop(new MindArrow(5), hero.pos).sprite.drop(); + } else { + super.execute(hero, action); + + } + + } + + @Override + public boolean isUpgradable() { + return false; + } + + @Override + public boolean isIdentified() { + return true; + } + + +} diff --git a/java/com/hmdzl/spspd/items/misc/PotionOfMage.java b/java/com/hmdzl/spspd/items/misc/PotionOfMage.java index 12052139..e86c25eb 100644 --- a/java/com/hmdzl/spspd/items/misc/PotionOfMage.java +++ b/java/com/hmdzl/spspd/items/misc/PotionOfMage.java @@ -51,7 +51,7 @@ import com.hmdzl.spspd.effects.particles.ElmoParticle; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.weapon.missiles.MissileWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; @@ -165,7 +165,7 @@ public void execute( final Hero hero, String action ) { @Override public String status() { - return Messages.format("%d", (int)charge/70); + return Messages.format("%d", charge /70); } @Override diff --git a/java/com/hmdzl/spspd/items/misc/RangeBag.java b/java/com/hmdzl/spspd/items/misc/RangeBag.java index 07900191..bf386f14 100644 --- a/java/com/hmdzl/spspd/items/misc/RangeBag.java +++ b/java/com/hmdzl/spspd/items/misc/RangeBag.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.Generator; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/misc/RewardPaper.java b/java/com/hmdzl/spspd/items/misc/RewardPaper.java index a4c00c42..f033d234 100644 --- a/java/com/hmdzl/spspd/items/misc/RewardPaper.java +++ b/java/com/hmdzl/spspd/items/misc/RewardPaper.java @@ -21,33 +21,19 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.actors.Actor; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.actors.buffs.ArmorBreak; -import com.hmdzl.spspd.actors.buffs.AttackDown; -import com.hmdzl.spspd.actors.buffs.Bleeding; -import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Cripple; -import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.effects.particles.ElmoParticle; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.potions.PotionOfMixing; -import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; import com.hmdzl.spspd.windows.WndBag; import com.hmdzl.spspd.windows.WndItem; import com.watabou.noosa.audio.Sample; -import com.watabou.utils.Bundle; -import com.watabou.utils.Random; - -import static com.hmdzl.spspd.ui.ActionIndicator.action; public class RewardPaper extends Item { diff --git a/java/com/hmdzl/spspd/items/misc/SeriousPunch.java b/java/com/hmdzl/spspd/items/misc/SeriousPunch.java new file mode 100644 index 00000000..9470f2ab --- /dev/null +++ b/java/com/hmdzl/spspd/items/misc/SeriousPunch.java @@ -0,0 +1,101 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.items.misc; + +import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.OnePunch; +import com.hmdzl.spspd.actors.hero.Hero; +import com.hmdzl.spspd.items.Item; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; +import com.hmdzl.spspd.sprites.ItemSpriteSheet; +import com.watabou.utils.Bundle; + +import java.util.ArrayList; + +public class SeriousPunch extends Item { + + { + //name = "SeriousPunch"; + image = ItemSpriteSheet.REDHAND; + + stackable = false; + unique = true; + defaultAction = AC_CAST; + + } + + private static final String AC_CAST = "CAST"; + public int charge = 0; + private static final String CHARGE = "charge"; + + @Override + public void storeInBundle(Bundle bundle) { + super.storeInBundle(bundle); + bundle.put(CHARGE, charge); + } + + @Override + public void restoreFromBundle(Bundle bundle) { + super.restoreFromBundle(bundle); + charge = bundle.getInt(CHARGE); + } + @Override + public ArrayList actions(Hero hero) { + ArrayList actions = super.actions( hero ); + actions.add(AC_CAST); + actions.remove( AC_THROW ); + actions.remove( AC_DROP ); + return actions; + } + + @Override + public void execute(final Hero hero, String action) { + super.execute(hero, action); + if (action.equals(AC_CAST)) { + Buff.affect(hero, OnePunch.class).level(charge); + charge = 0; + } + } + + @Override + public String status() { + return Messages.format("%d", charge); + } + + @Override + public String desc() { + String info = super.desc(); + info += "\n\n" + Messages.get(SeriousPunch.class, "charge",charge); + return info; + } + + + @Override + public boolean isUpgradable() { + return false; + } + + @Override + public boolean isIdentified() { + return true; + } + + + +} + diff --git a/java/com/hmdzl/spspd/items/misc/Shovel.java b/java/com/hmdzl/spspd/items/misc/Shovel.java index 402449f5..1c9cd423 100644 --- a/java/com/hmdzl/spspd/items/misc/Shovel.java +++ b/java/com/hmdzl/spspd/items/misc/Shovel.java @@ -31,7 +31,7 @@ import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.ui.BuffIndicator; @@ -96,7 +96,7 @@ public void execute( final Hero hero, String action ) { if(charge < 40){ GLog.i(Messages.get(Shovel.class, "break")); return; - } else if (Dungeon.level.map[pos] == Terrain.WALL && Level.insideMap(pos)) { + } else if ((Dungeon.level.map[pos] == Terrain.WALL || Dungeon.level.map[pos] == Terrain.GLASS_WALL)&& Level.insideMap(pos)) { hero.spend(TIME_TO_DIG); hero.busy(); hero.sprite.attack(pos, new Callback() { @@ -155,7 +155,7 @@ public void call() { @Override public String status() { - return Messages.format("%d", (int)charge/40); + return Messages.format("%d", charge /40); } @Override diff --git a/java/com/hmdzl/spspd/items/misc/SkillOfAtk.java b/java/com/hmdzl/spspd/items/misc/SkillOfAtk.java index c239b154..32972819 100644 --- a/java/com/hmdzl/spspd/items/misc/SkillOfAtk.java +++ b/java/com/hmdzl/spspd/items/misc/SkillOfAtk.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.Item; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/misc/SkillOfDef.java b/java/com/hmdzl/spspd/items/misc/SkillOfDef.java index 71d9db2f..a8148747 100644 --- a/java/com/hmdzl/spspd/items/misc/SkillOfDef.java +++ b/java/com/hmdzl/spspd/items/misc/SkillOfDef.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.Item; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/misc/SkillOfMig.java b/java/com/hmdzl/spspd/items/misc/SkillOfMig.java index 3c897ad5..aee89ce6 100644 --- a/java/com/hmdzl/spspd/items/misc/SkillOfMig.java +++ b/java/com/hmdzl/spspd/items/misc/SkillOfMig.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.Item; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/misc/UndeadBook.java b/java/com/hmdzl/spspd/items/misc/UndeadBook.java index 86859992..d9e96e7e 100644 --- a/java/com/hmdzl/spspd/items/misc/UndeadBook.java +++ b/java/com/hmdzl/spspd/items/misc/UndeadBook.java @@ -17,23 +17,38 @@ */ package com.hmdzl.spspd.items.misc; -import java.util.ArrayList; - +import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Dewcharge; +import com.hmdzl.spspd.actors.buffs.EnergyArmor; +import com.hmdzl.spspd.actors.buffs.GlassShield; +import com.hmdzl.spspd.actors.buffs.HighLight; +import com.hmdzl.spspd.actors.buffs.Levitation; import com.hmdzl.spspd.actors.hero.Hero; +import com.hmdzl.spspd.actors.mobs.Mob; +import com.hmdzl.spspd.effects.particles.ElmoParticle; import com.hmdzl.spspd.items.Ankh; import com.hmdzl.spspd.items.Item; - +import com.hmdzl.spspd.items.summon.FairyCard; +import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; +import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; +import com.watabou.utils.PathFinder; +import com.watabou.utils.Random; + +import java.util.ArrayList; public class UndeadBook extends Item { public static final String AC_READ = "READ"; + + public static final String AC_READ2 = "READ2"; public static final String AC_BLESS = "BLESS"; @@ -52,8 +67,9 @@ public class UndeadBook extends Item { @Override public ArrayList actions(Hero hero) { ArrayList actions = super.actions(hero); - if (hero.HT > 10) actions.add(AC_READ); - if (charge < hero.lvl) actions.add(AC_BLESS); + if (charge > 10) actions.add(AC_READ); + if (hero.TRUE_HT > 10) actions.add(AC_READ2); + if (Dungeon.hero.spp < hero.lvl) actions.add(AC_BLESS); return actions; } @@ -74,13 +90,61 @@ public void restoreFromBundle(Bundle bundle) { public void execute(Hero hero, String action) { if (action.equals(AC_READ)) { - hero.HT -= 5; - Buff.affect(hero, Dewcharge.class, 100f); + charge-=10; + switch (Random.Int(4)) { + case 0: + Buff.affect(hero, Levitation.class, 10f); + Buff.affect(hero, HighLight.class, 10f); + break; + case 1: + Buff.affect(hero, GlassShield.class).turns(2); + Buff.affect(hero, EnergyArmor.class).level(hero.lvl*2); + break; + case 2: + for (Mob mob : Dungeon.level.mobs.toArray( new Mob[0] )) { + if (Level.fieldOfView[mob.pos]) { + mob.damage(mob.HT/2, this ); + } + } + break; + case 3: + ArrayList spawnPoints = new ArrayList(); + for (int i = 0; i < PathFinder.NEIGHBOURS8.length; i++) { + int p = curUser.pos + PathFinder.NEIGHBOURS8[i]; + if (Actor.findChar(p) == null && (Level.passable[p] || Level.avoid[p])) { + spawnPoints.add(p); + } + } + + if (spawnPoints.size() > 0) { + FairyCard.Fairy fairy = new FairyCard.Fairy(); + fairy.HP = Dungeon.hero.lvl*3; + fairy.pos = Random.element(spawnPoints); + GameScene.add(fairy); + } + break; + default: + break; + } + hero.sprite.emitter().burst(ElmoParticle.FACTORY, 12); + Sample.INSTANCE.play(Assets.SND_BURNING); + hero.spendAndNext(1f); + updateQuickslot(); + + } + + if (action.equals(AC_READ2)) { + if (charge>50) charge-=50; + else hero.TRUE_HT -= 5; + + Dungeon.hero.updateHT(false); + Buff.affect(hero, Dewcharge.class).level(100); GLog.p(Messages.get(this, "bless")); + } - + if (action.equals(AC_BLESS)) { - charge ++; + Dungeon.hero.spp ++; Dungeon.level.drop(new Ankh(), Dungeon.hero.pos).sprite.drop(Dungeon.hero.pos); GLog.p(Messages.get(this, "1up")); } else { @@ -88,7 +152,21 @@ public void execute(Hero hero, String action) { } } - + + @Override + public String info() { + String info = desc(); + info += "\n\n" + Messages.get(this, "charge",charge); + return info; + } + + + @Override + public String status() { + return Messages.format("%d", charge); + } + + @Override public boolean isUpgradable() { return false; diff --git a/java/com/hmdzl/spspd/items/potions/Potion.java b/java/com/hmdzl/spspd/items/potions/Potion.java index 919cb191..a26e8d37 100644 --- a/java/com/hmdzl/spspd/items/potions/Potion.java +++ b/java/com/hmdzl/spspd/items/potions/Potion.java @@ -43,7 +43,7 @@ import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; import com.hmdzl.spspd.windows.WndOptions; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; import com.watabou.utils.Random; @@ -116,9 +116,9 @@ public void sync() { super.sync(); image = handler.image(this); color = handler.label(this); - }; + } - @Override + @Override public ArrayList actions(Hero hero) { ArrayList actions = super.actions(hero); actions.add(AC_DRINK); @@ -146,8 +146,7 @@ protected void onSelect(int index) { } } - ; - }); + }); } else { drink(hero); @@ -182,8 +181,8 @@ protected void onSelect(int index) { if (index == 0) { Potion.super.doThrow(hero); } - }; - }); + } + }); } else { super.doThrow(hero); @@ -205,7 +204,7 @@ protected void drink(Hero hero) { @Override protected void onThrow(int cell) { - if (Dungeon.level.map[cell] == Terrain.WELL || Level.pit[cell] || Plant.checkPhase(cell)) { + if (Dungeon.level.map[cell] == Terrain.WELL || Level.pit[cell] ) { super.onThrow(cell); diff --git a/java/com/hmdzl/spspd/items/potions/PotionOfFrost.java b/java/com/hmdzl/spspd/items/potions/PotionOfFrost.java index 5363ff01..f55a9890 100644 --- a/java/com/hmdzl/spspd/items/potions/PotionOfFrost.java +++ b/java/com/hmdzl/spspd/items/potions/PotionOfFrost.java @@ -19,9 +19,12 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.actors.blobs.Blob; import com.hmdzl.spspd.actors.blobs.Fire; import com.hmdzl.spspd.actors.blobs.Freezing; +import com.hmdzl.spspd.actors.blobs.FrostCloud; import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.utils.BArray; import com.watabou.noosa.audio.Sample; import com.watabou.utils.PathFinder; @@ -50,6 +53,14 @@ public void shatter(int cell) { } } + for (int offset : PathFinder.NEIGHBOURS9){ + if (!Dungeon.level.solid[cell+offset]) { + + GameScene.add(Blob.seed(cell + offset, 10, FrostCloud.class)); + + } + } + if (visible) { splash(cell); Sample.INSTANCE.play(Assets.SND_SHATTER); diff --git a/java/com/hmdzl/spspd/items/potions/PotionOfHealing.java b/java/com/hmdzl/spspd/items/potions/PotionOfHealing.java index 20bc384d..4bbc7bc9 100644 --- a/java/com/hmdzl/spspd/items/potions/PotionOfHealing.java +++ b/java/com/hmdzl/spspd/items/potions/PotionOfHealing.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Cripple; import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.hero.HeroSubClass; import com.hmdzl.spspd.effects.Speck; @@ -51,7 +51,7 @@ public static void heal(Hero hero) { hero.HP = hero.HP+Math.min(hero.HT, hero.HT-hero.HP); Buff.detach(hero, Poison.class); Buff.detach(hero, Cripple.class); - Buff.detach(hero, Weakness.class); + Buff.detach(hero, STRdown.class); Buff.detach(hero, Bleeding.class); hero.sprite.emitter().start(Speck.factory(Speck.HEALING), 0.4f, 4); diff --git a/java/com/hmdzl/spspd/items/potions/PotionOfInvisibility.java b/java/com/hmdzl/spspd/items/potions/PotionOfInvisibility.java index 1cc7514b..f2283315 100644 --- a/java/com/hmdzl/spspd/items/potions/PotionOfInvisibility.java +++ b/java/com/hmdzl/spspd/items/potions/PotionOfInvisibility.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.misc.AutoPotion.AutoHealPotion; import com.hmdzl.spspd.utils.GLog; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.audio.Sample; import com.watabou.noosa.tweeners.AlphaTweener; diff --git a/java/com/hmdzl/spspd/items/potions/PotionOfLevitation.java b/java/com/hmdzl/spspd/items/potions/PotionOfLevitation.java index 02683765..963beb6c 100644 --- a/java/com/hmdzl/spspd/items/potions/PotionOfLevitation.java +++ b/java/com/hmdzl/spspd/items/potions/PotionOfLevitation.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.actors.buffs.Levitation; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.scenes.GameScene; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.audio.Sample; diff --git a/java/com/hmdzl/spspd/items/potions/PotionOfMending.java b/java/com/hmdzl/spspd/items/potions/PotionOfMending.java index 7ca60778..4683c66a 100644 --- a/java/com/hmdzl/spspd/items/potions/PotionOfMending.java +++ b/java/com/hmdzl/spspd/items/potions/PotionOfMending.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Cripple; import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.scenes.GameScene; @@ -51,7 +51,7 @@ public static void heal(Hero hero) { Buff.affect(hero, BerryRegeneration.class).level(Math.max(0,hero.HT - hero.HP)); Buff.detach(hero, Poison.class); Buff.detach(hero, Cripple.class); - Buff.detach(hero, Weakness.class); + Buff.detach(hero, STRdown.class); Buff.detach(hero, Bleeding.class); hero.sprite.emitter().start(Speck.factory(Speck.HEALING), 0.4f, 4); diff --git a/java/com/hmdzl/spspd/items/potions/PotionOfMight.java b/java/com/hmdzl/spspd/items/potions/PotionOfMight.java index 84b4d070..00bd6bd5 100644 --- a/java/com/hmdzl/spspd/items/potions/PotionOfMight.java +++ b/java/com/hmdzl/spspd/items/potions/PotionOfMight.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.items.potions; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; public class PotionOfMight extends Potion { @@ -33,8 +33,9 @@ public class PotionOfMight extends Potion { public void apply(Hero hero) { setKnown(); - hero.HT += 10; + hero.TRUE_HT += 10; hero.HP += 10; + hero.updateHT(true); hero.sprite.showStatus(CharSprite.POSITIVE, Messages.get(this, "msg_1")); } diff --git a/java/com/hmdzl/spspd/items/potions/PotionOfMindVision.java b/java/com/hmdzl/spspd/items/potions/PotionOfMindVision.java index 243c99e2..8a5c32d1 100644 --- a/java/com/hmdzl/spspd/items/potions/PotionOfMindVision.java +++ b/java/com/hmdzl/spspd/items/potions/PotionOfMindVision.java @@ -24,7 +24,7 @@ import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.misc.Spectacles.MagicSight; import com.hmdzl.spspd.utils.GLog; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class PotionOfMindVision extends Potion { diff --git a/java/com/hmdzl/spspd/items/potions/PotionOfMixing.java b/java/com/hmdzl/spspd/items/potions/PotionOfMixing.java index cec9f0e6..0bf173bf 100644 --- a/java/com/hmdzl/spspd/items/potions/PotionOfMixing.java +++ b/java/com/hmdzl/spspd/items/potions/PotionOfMixing.java @@ -18,15 +18,9 @@ package com.hmdzl.spspd.items.potions; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.actors.buffs.Bleeding; -import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Cripple; -import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.actors.hero.HeroSubClass; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/potions/PotionOfOverHealing.java b/java/com/hmdzl/spspd/items/potions/PotionOfOverHealing.java index cb3fd3b8..62ddaa24 100644 --- a/java/com/hmdzl/spspd/items/potions/PotionOfOverHealing.java +++ b/java/com/hmdzl/spspd/items/potions/PotionOfOverHealing.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Cripple; import com.hmdzl.spspd.actors.buffs.Poison; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.effects.Speck; @@ -45,10 +45,10 @@ public void apply(Hero hero) { public static void heal(Hero hero) { hero.HP = hero.HT+(hero.lvl*2); - Buff.affect(hero, BerryRegeneration.class).level(hero.HT); + Buff.affect(hero, BerryRegeneration.class).level(hero.TRUE_HT); Buff.detach(hero, Poison.class); Buff.detach(hero, Cripple.class); - Buff.detach(hero, Weakness.class); + Buff.detach(hero, STRdown.class); Buff.detach(hero, Bleeding.class); hero.sprite.emitter().start(Speck.factory(Speck.HEALING), 0.4f, 4); } diff --git a/java/com/hmdzl/spspd/items/potions/PotionOfPurity.java b/java/com/hmdzl/spspd/items/potions/PotionOfPurity.java index 64b82577..37320c3b 100644 --- a/java/com/hmdzl/spspd/items/potions/PotionOfPurity.java +++ b/java/com/hmdzl/spspd/items/potions/PotionOfPurity.java @@ -33,7 +33,7 @@ import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.utils.BArray; import com.hmdzl.spspd.utils.GLog; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.audio.Sample; import com.watabou.utils.PathFinder; diff --git a/java/com/hmdzl/spspd/items/potions/PotionOfShield.java b/java/com/hmdzl/spspd/items/potions/PotionOfShield.java index 1338ed50..85a279f5 100644 --- a/java/com/hmdzl/spspd/items/potions/PotionOfShield.java +++ b/java/com/hmdzl/spspd/items/potions/PotionOfShield.java @@ -18,9 +18,13 @@ package com.hmdzl.spspd.items.potions; import com.hmdzl.spspd.Assets; +import com.hmdzl.spspd.actors.Actor; +import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.DefenceUp; +import com.hmdzl.spspd.actors.buffs.MagicArmor; import com.hmdzl.spspd.actors.buffs.ShieldArmor; +import com.hmdzl.spspd.actors.buffs.Shieldblock; import com.hmdzl.spspd.actors.hero.Hero; import com.watabou.noosa.audio.Sample; @@ -28,6 +32,8 @@ public class PotionOfShield extends Potion { //private static final float ALPHA = 0.4f; + private static final int DISTANCE = 2; + { //name = "Potion of shield"; initials = 2; @@ -36,9 +42,10 @@ public class PotionOfShield extends Potion { @Override public void apply(Hero hero) { setKnown(); - if (hero.buff(ShieldArmor.class) == null){ - Buff.affect(hero, ShieldArmor.class).level(hero.HT/2); - } else Buff.affect(hero, DefenceUp.class,50f).level(50); + if (hero.buff(ShieldArmor.class) == null && hero.buff(MagicArmor.class) == null){ + Buff.affect(hero, ShieldArmor.class).level(hero.HT/3); + Buff.affect(hero, MagicArmor.class).level(hero.HT/3); + } else Buff.affect(hero, DefenceUp.class,30f).level(50); Sample.INSTANCE.play(Assets.SND_MELD); } @@ -47,6 +54,16 @@ public String desc() { return "Drinking this potion will temporarily speed up your actions."; }*/ + @Override + public void shatter(int cell) { + + Char ch = Actor.findChar(cell); + if (ch != null) { + Buff.prolong(ch, Shieldblock.class,3f); + } + + } + @Override public int price() { return isKnown() ? 40 * quantity : super.price(); diff --git a/java/com/hmdzl/spspd/items/potions/PotionOfStrength.java b/java/com/hmdzl/spspd/items/potions/PotionOfStrength.java index 625255f5..1d1c5718 100644 --- a/java/com/hmdzl/spspd/items/potions/PotionOfStrength.java +++ b/java/com/hmdzl/spspd/items/potions/PotionOfStrength.java @@ -19,7 +19,7 @@ import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; public class PotionOfStrength extends Potion { diff --git a/java/com/hmdzl/spspd/items/quest/Pickaxe.java b/java/com/hmdzl/spspd/items/quest/Pickaxe.java index c5b1ab13..8719d4fa 100644 --- a/java/com/hmdzl/spspd/items/quest/Pickaxe.java +++ b/java/com/hmdzl/spspd/items/quest/Pickaxe.java @@ -17,18 +17,15 @@ */ package com.hmdzl.spspd.items.quest; -import java.util.ArrayList; - import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.buffs.Bleeding; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Hunger; -import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.actors.buffs.Ooze; -import com.hmdzl.spspd.actors.buffs.Bleeding; +import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.actors.mobs.Bat; import com.hmdzl.spspd.actors.mobs.ElderAvatar; import com.hmdzl.spspd.actors.mobs.King; import com.hmdzl.spspd.actors.mobs.LichDancer; @@ -40,15 +37,15 @@ import com.hmdzl.spspd.levels.Terrain; import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.scenes.GameScene; -import com.hmdzl.spspd.sprites.ItemSprite.Glowing; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.ui.BuffIndicator; import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.audio.Sample; -import com.watabou.utils.Bundle; import com.watabou.utils.Callback; import com.watabou.utils.Random; +import java.util.ArrayList; + public class Pickaxe extends Weapon { public static final String AC_MINE = "MINE"; @@ -57,7 +54,7 @@ public class Pickaxe extends Weapon { private static final String TXT_NO_VEIN = "There is no dark gold vein near you to mine"; - private static final Glowing BLOODY = new Glowing(0x550000); + //private static final Glowing BLOODY = new Glowing(0x550000); { //name = "pickaxe"; @@ -72,7 +69,7 @@ public class Pickaxe extends Weapon { MAX = 22; } - public boolean bloodStained = false; + //public boolean bloodStained = false; @@ -176,10 +173,10 @@ public boolean isIdentified() { @Override public void proc(Char attacker, Char defender, int damage) { - if (!bloodStained && defender instanceof Bat ) { - bloodStained = true; - updateQuickslot(); - } + //if (!bloodStained && defender instanceof Bat ) { + // bloodStained = true; + // updateQuickslot(); + // } if (defender instanceof King.DwarfKingTomb || defender instanceof ElderAvatar.Obelisk || defender instanceof LichDancer.BatteryTomb){ defender.damage(Random.Int(100,200), this); } @@ -193,7 +190,7 @@ public void proc(Char attacker, Char defender, int damage) { break; case 3 : Buff.affect(defender, Poison.class).set( - Random.Int(7, 10) * Poison.durationFactor(defender) ); + Random.Int(7, 10) ); break; default: break; @@ -204,26 +201,26 @@ public void proc(Char attacker, Char defender, int damage) { } } - private static final String BLOODSTAINED = "bloodStained"; + //private static final String BLOODSTAINED = "bloodStained"; - @Override - public void storeInBundle(Bundle bundle) { - super.storeInBundle(bundle); + //@Override + //public void storeInBundle(Bundle bundle) { + // super.storeInBundle(bundle); - bundle.put(BLOODSTAINED, bloodStained); - } + // bundle.put(BLOODSTAINED, bloodStained); + //} - @Override - public void restoreFromBundle(Bundle bundle) { - super.restoreFromBundle(bundle); + //@Override + //public void restoreFromBundle(Bundle bundle) { + // super.restoreFromBundle(bundle); - bloodStained = bundle.getBoolean(BLOODSTAINED); - } + // bloodStained = bundle.getBoolean(BLOODSTAINED); + //} - @Override - public Glowing glowing() { - return bloodStained ? BLOODY : null; - } + //@Override +// public Glowing glowing() { + // return bloodStained ? BLOODY : null; + //} /*@Override public String info() { diff --git a/java/com/hmdzl/spspd/items/rings/Ring.java b/java/com/hmdzl/spspd/items/rings/Ring.java index 45034a08..f382fba7 100644 --- a/java/com/hmdzl/spspd/items/rings/Ring.java +++ b/java/com/hmdzl/spspd/items/rings/Ring.java @@ -28,7 +28,7 @@ import com.hmdzl.spspd.items.ItemStatusHandler; import com.hmdzl.spspd.items.KindofMisc; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Bundle; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/items/rings/RingOfAccuracy.java b/java/com/hmdzl/spspd/items/rings/RingOfAccuracy.java index 9d91c33f..808dc5c3 100644 --- a/java/com/hmdzl/spspd/items/rings/RingOfAccuracy.java +++ b/java/com/hmdzl/spspd/items/rings/RingOfAccuracy.java @@ -17,9 +17,7 @@ */ package com.hmdzl.spspd.items.rings; -import com.hmdzl.spspd.messages.Messages; - -import java.text.DecimalFormat; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class RingOfAccuracy extends Ring { @@ -30,7 +28,7 @@ public class RingOfAccuracy extends Ring { public String statsInfo() { if (isIdentified()){ - return Messages.get(this, "stats",level,level/10); + return Messages.get(this, "stats",level,Math.min(3,(int)(level/10))); } else { return "???"; } diff --git a/java/com/hmdzl/spspd/items/rings/RingOfElements.java b/java/com/hmdzl/spspd/items/rings/RingOfElements.java index 5ce213da..1872e592 100644 --- a/java/com/hmdzl/spspd/items/rings/RingOfElements.java +++ b/java/com/hmdzl/spspd/items/rings/RingOfElements.java @@ -17,8 +17,7 @@ */ package com.hmdzl.spspd.items.rings; -import java.util.HashSet; - +import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.ConfusionGas; import com.hmdzl.spspd.actors.blobs.CorruptGas; import com.hmdzl.spspd.actors.blobs.DarkGas; @@ -34,25 +33,49 @@ import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSand; import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSnow; import com.hmdzl.spspd.actors.blobs.weather.WeatherOfSun; +import com.hmdzl.spspd.actors.buffs.AflyBless; +import com.hmdzl.spspd.actors.buffs.Arcane; +import com.hmdzl.spspd.actors.buffs.Awareness; import com.hmdzl.spspd.actors.buffs.Blindness; +import com.hmdzl.spspd.actors.buffs.BloodImbue; import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.Disarm; +import com.hmdzl.spspd.actors.buffs.EarthImbue; +import com.hmdzl.spspd.actors.buffs.Feed; +import com.hmdzl.spspd.actors.buffs.ForeverShadow; +import com.hmdzl.spspd.actors.buffs.FrostImbue; +import com.hmdzl.spspd.actors.buffs.GasesImmunity; +import com.hmdzl.spspd.actors.buffs.GoldTouch; +import com.hmdzl.spspd.actors.buffs.HasteBuff; +import com.hmdzl.spspd.actors.buffs.Invisibility; +import com.hmdzl.spspd.actors.buffs.Levitation; import com.hmdzl.spspd.actors.buffs.Locked; +import com.hmdzl.spspd.actors.buffs.MagicImmunity; +import com.hmdzl.spspd.actors.buffs.Muscle; +import com.hmdzl.spspd.actors.buffs.Needling; +import com.hmdzl.spspd.actors.buffs.Notice; import com.hmdzl.spspd.actors.buffs.Poison; +import com.hmdzl.spspd.actors.buffs.Recharging; +import com.hmdzl.spspd.actors.buffs.Rhythm; +import com.hmdzl.spspd.actors.buffs.Rhythm2; import com.hmdzl.spspd.actors.buffs.Silent; +import com.hmdzl.spspd.actors.buffs.Slow; +import com.hmdzl.spspd.actors.buffs.TargetShoot; import com.hmdzl.spspd.actors.mobs.BrokenRobot; import com.hmdzl.spspd.actors.mobs.DM300; import com.hmdzl.spspd.actors.mobs.Eye; +import com.hmdzl.spspd.actors.mobs.GnollShaman; import com.hmdzl.spspd.actors.mobs.LitTower; import com.hmdzl.spspd.actors.mobs.Otiluke; -import com.hmdzl.spspd.actors.mobs.GnollShaman; import com.hmdzl.spspd.actors.mobs.Shell; import com.hmdzl.spspd.actors.mobs.Warlock; import com.hmdzl.spspd.actors.mobs.Yog; import com.hmdzl.spspd.levels.traps.LightningTrap; import com.hmdzl.spspd.levels.traps.SpearTrap; import com.hmdzl.spspd.messages.Messages; -import com.watabou.utils.Random; + +import java.text.DecimalFormat; +import java.util.HashSet; public class RingOfElements extends Ring { @@ -63,7 +86,9 @@ public class RingOfElements extends Ring { public String statsInfo() { if (isIdentified()){ - return Messages.get(this, "stats"); + return Messages.get(this, "stats", + new DecimalFormat("#.##").format(Math.min(300,100+100*level/15)), + new DecimalFormat("#.##").format(Math.max(40,(100-level*2)))); } else { return "???"; } @@ -72,54 +97,97 @@ public String statsInfo() { @Override protected RingBuff buff() { - return new Resistance(); + return new RingResistance(); + } + + public static float Rresist(Char target, Class effect ){ + if (getBonus(target, RingResistance.class) == 0) return 1f; + + for (Class c : RESISTS){ + if (c.isAssignableFrom(effect)){ + return (float)Math.max(0.40, ((100-getBonus(target, RingResistance.class)*2)/100)); + } + } + + for (Class c : WEAKS){ + if (c.isAssignableFrom(effect)){ + return (float)Math.min(3.00,((15+getBonus(target, RingResistance.class))/15)); + } + } + + return 1f; } - private static final HashSet> EMPTY = new HashSet>(); - private static final HashSet> FULL; + //private static final HashSet> EMPTY = new HashSet>(); + //private static final HashSet> FULLA = new HashSet>(); + //private static final HashSet> FULLB = new HashSet>(); + public static final HashSet RESISTS = new HashSet<>(); + public static final HashSet WEAKS = new HashSet<>(); + static { - FULL = new HashSet>(); - FULL.add(Burning.class); - FULL.add(ToxicGas.class); - FULL.add(VenomGas.class); - FULL.add(SpearTrap.class); - FULL.add(ParalyticGas.class); - FULL.add(CorruptGas.class); - FULL.add(DarkGas.class); - FULL.add(ElectriShock.class); - FULL.add(FrostGas.class); - FULL.add(ConfusionGas.class); - FULL.add(ShockWeb.class); - FULL.add(SlowWeb.class); - FULL.add(Web.class); - FULL.add(Blindness.class); - FULL.add(Disarm.class); - FULL.add(Locked.class); - FULL.add(Silent.class); - FULL.add(WeatherOfRain.class); - FULL.add(WeatherOfSand.class); - FULL.add(WeatherOfSnow.class); - FULL.add(WeatherOfSun.class); - FULL.add(Poison.class); - FULL.add(LightningTrap.Electricity.class); - FULL.add(Warlock.class); - FULL.add(GnollShaman.class); - FULL.add(BrokenRobot.class); - FULL.add(DM300.class); - FULL.add(Eye.class); - FULL.add(Otiluke.class); - FULL.add(LitTower.class); - FULL.add(Shell.class); - FULL.add(Yog.BurningFist.class); - FULL.add(Yog.PinningFist.class); + RESISTS.add(Burning.class); + RESISTS.add(Slow.class); + RESISTS.add(ToxicGas.class); + RESISTS.add(VenomGas.class); + RESISTS.add(SpearTrap.class); + RESISTS.add(ParalyticGas.class); + RESISTS.add(CorruptGas.class); + RESISTS.add(DarkGas.class); + RESISTS.add(ElectriShock.class); + RESISTS.add(FrostGas.class); + RESISTS.add(ConfusionGas.class); + RESISTS.add(ShockWeb.class); + RESISTS.add(SlowWeb.class); + RESISTS.add(Web.class); + RESISTS.add(Blindness.class); + RESISTS.add(Disarm.class); + RESISTS.add(Locked.class); + RESISTS.add(Silent.class); + RESISTS.add(WeatherOfRain.class); + RESISTS.add(WeatherOfSand.class); + RESISTS.add(WeatherOfSnow.class); + RESISTS.add(WeatherOfSun.class); + RESISTS.add(Poison.class); + RESISTS.add(LightningTrap.Electricity.class); + RESISTS.add(Warlock.class); + RESISTS.add(GnollShaman.class); + RESISTS.add(BrokenRobot.class); + RESISTS.add(DM300.class); + RESISTS.add(Eye.class); + RESISTS.add(Otiluke.class); + RESISTS.add(LitTower.class); + RESISTS.add(Shell.class); + RESISTS.add(Yog.BurningFist.class); + RESISTS.add(Yog.PinningFist.class); + WEAKS.add(AflyBless.class); + WEAKS.add(Arcane.class); + WEAKS.add(Awareness.class); + WEAKS.add(BloodImbue.class); + WEAKS.add(EarthImbue.class); + WEAKS.add(Feed.class); + WEAKS.add(ForeverShadow.class); + WEAKS.add(FrostImbue.class); + WEAKS.add(GasesImmunity.class); + WEAKS.add(GoldTouch.class); + WEAKS.add(HasteBuff.class); + WEAKS.add(Invisibility.class); + WEAKS.add(Levitation.class); + WEAKS.add(MagicImmunity.class); + WEAKS.add(Muscle.class); + WEAKS.add(Needling.class); + WEAKS.add(Notice.class); + WEAKS.add(Recharging.class); + WEAKS.add(Rhythm.class); + WEAKS.add(Rhythm2.class); + WEAKS.add(TargetShoot.class); } - public class Resistance extends RingBuff { + public class RingResistance extends RingBuff { - public HashSet> resistances() { + /*public HashSet> resistances() { if (Random.Int(level + 2) >= 2) { - return FULL; + return FULLA; } else { return EMPTY; } @@ -128,5 +196,19 @@ public HashSet> resistances() { public float durationFactor() { return level < 0 ? 1 : (1 + 0.5f * level) / (1 + level); } + + public HashSet> weakness() { + if (Random.Int(level + 2) >= 2) { + return FULLB; + } else { + return EMPTY; + } + } + public float durationFactor2() { + return level < 0 ? 1 : (1 + (int)(level / 10)); + }*/ } + + + } diff --git a/java/com/hmdzl/spspd/items/rings/RingOfEnergy.java b/java/com/hmdzl/spspd/items/rings/RingOfEnergy.java index 110eeda1..a27a3de9 100644 --- a/java/com/hmdzl/spspd/items/rings/RingOfEnergy.java +++ b/java/com/hmdzl/spspd/items/rings/RingOfEnergy.java @@ -1,8 +1,6 @@ package com.hmdzl.spspd.items.rings; -import com.hmdzl.spspd.messages.Messages; - -import java.text.DecimalFormat; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; /** * Created by debenhame on 10/09/2014. @@ -17,7 +15,7 @@ public class RingOfEnergy extends Ring { public String statsInfo() { if (isIdentified()){ - return Messages.get(this, "stats", new DecimalFormat("#.##").format(100f * (Math.pow(1.05f, level) - 1f))); + return Messages.get(this, "stats", 1.25*level); } else { return "???"; } diff --git a/java/com/hmdzl/spspd/items/rings/RingOfEvasion.java b/java/com/hmdzl/spspd/items/rings/RingOfEvasion.java index b62543d9..27285e89 100644 --- a/java/com/hmdzl/spspd/items/rings/RingOfEvasion.java +++ b/java/com/hmdzl/spspd/items/rings/RingOfEvasion.java @@ -17,7 +17,7 @@ */ package com.hmdzl.spspd.items.rings; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class RingOfEvasion extends Ring { @@ -28,7 +28,7 @@ public class RingOfEvasion extends Ring { public String statsInfo() { if (isIdentified()){ - return Messages.get(this, "stats",level,level/5); + return Messages.get(this, "stats",level,Math.min(6,(int)(level/5))); } else { return "???"; } diff --git a/java/com/hmdzl/spspd/items/rings/RingOfForce.java b/java/com/hmdzl/spspd/items/rings/RingOfForce.java index cdeb0a20..81d8608e 100644 --- a/java/com/hmdzl/spspd/items/rings/RingOfForce.java +++ b/java/com/hmdzl/spspd/items/rings/RingOfForce.java @@ -1,6 +1,7 @@ package com.hmdzl.spspd.items.rings; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import java.text.DecimalFormat; @@ -13,10 +14,10 @@ public class RingOfForce extends Ring { //name = "Ring of Force"; initials = 3; } - + ; public String statsInfo() { if (isIdentified()){ - return Messages.get(this, "stats", new DecimalFormat("#.##").format(100 * Math.min(3f,((level*1.00/10)*1f))), 3 + level, 3 * level + 12); + return Messages.get(this, "stats", new DecimalFormat("#.##").format(100 * Math.min(3f,((level*1.00/10)*1f))), Dungeon.hero.STR/2 + level, Dungeon.hero.STR/2 * level + Dungeon.hero.STR/2); } else { return "???"; } diff --git a/java/com/hmdzl/spspd/items/rings/RingOfFuror.java b/java/com/hmdzl/spspd/items/rings/RingOfFuror.java index 80475f23..737adf5e 100644 --- a/java/com/hmdzl/spspd/items/rings/RingOfFuror.java +++ b/java/com/hmdzl/spspd/items/rings/RingOfFuror.java @@ -1,6 +1,6 @@ package com.hmdzl.spspd.items.rings; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import java.text.DecimalFormat; diff --git a/java/com/hmdzl/spspd/items/rings/RingOfHaste.java b/java/com/hmdzl/spspd/items/rings/RingOfHaste.java index b171da89..9119e476 100644 --- a/java/com/hmdzl/spspd/items/rings/RingOfHaste.java +++ b/java/com/hmdzl/spspd/items/rings/RingOfHaste.java @@ -17,7 +17,7 @@ */ package com.hmdzl.spspd.items.rings; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import java.text.DecimalFormat; diff --git a/java/com/hmdzl/spspd/items/rings/RingOfMagic.java b/java/com/hmdzl/spspd/items/rings/RingOfMagic.java index eb6bd77e..9e706ce6 100644 --- a/java/com/hmdzl/spspd/items/rings/RingOfMagic.java +++ b/java/com/hmdzl/spspd/items/rings/RingOfMagic.java @@ -17,7 +17,7 @@ */ package com.hmdzl.spspd.items.rings; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class RingOfMagic extends Ring { diff --git a/java/com/hmdzl/spspd/items/rings/RingOfMight.java b/java/com/hmdzl/spspd/items/rings/RingOfMight.java index e5d2a360..ad5631cb 100644 --- a/java/com/hmdzl/spspd/items/rings/RingOfMight.java +++ b/java/com/hmdzl/spspd/items/rings/RingOfMight.java @@ -1,5 +1,6 @@ package com.hmdzl.spspd.items.rings; +import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.messages.Messages; /** @@ -14,7 +15,7 @@ public class RingOfMight extends Ring { public String statsInfo() { if (isIdentified()){ - return Messages.get(this, "stats",level/5,level*8); + return Messages.get(this, "stats",(int)(level/5),Math.min(0,level*100/15)); } else { return "???"; } @@ -27,6 +28,10 @@ protected RingBuff buff() { return new Might(); } + public static int strengthBonus( Char target ){ + return getBonus( target, Might.class ); + } + public class Might extends RingBuff { } diff --git a/java/com/hmdzl/spspd/items/rings/RingOfSharpshooting.java b/java/com/hmdzl/spspd/items/rings/RingOfSharpshooting.java index e479c205..5c9f8869 100644 --- a/java/com/hmdzl/spspd/items/rings/RingOfSharpshooting.java +++ b/java/com/hmdzl/spspd/items/rings/RingOfSharpshooting.java @@ -1,6 +1,6 @@ package com.hmdzl.spspd.items.rings; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import java.text.DecimalFormat; diff --git a/java/com/hmdzl/spspd/items/rings/RingOfTenacity.java b/java/com/hmdzl/spspd/items/rings/RingOfTenacity.java index 01a13597..a2b6324f 100644 --- a/java/com/hmdzl/spspd/items/rings/RingOfTenacity.java +++ b/java/com/hmdzl/spspd/items/rings/RingOfTenacity.java @@ -1,6 +1,6 @@ package com.hmdzl.spspd.items.rings; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import java.text.DecimalFormat; diff --git a/java/com/hmdzl/spspd/items/scrolls/InventoryScroll.java b/java/com/hmdzl/spspd/items/scrolls/InventoryScroll.java index d21df0b2..e93636d1 100644 --- a/java/com/hmdzl/spspd/items/scrolls/InventoryScroll.java +++ b/java/com/hmdzl/spspd/items/scrolls/InventoryScroll.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.windows.WndBag; import com.hmdzl.spspd.windows.WndOptions; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.audio.Sample; public abstract class InventoryScroll extends Scroll { @@ -51,7 +51,7 @@ private void confirmCancelation() { protected void onSelect( int index ) { switch (index) { case 0: - curUser.spendAndNext( TIME_TO_READ ); + //curUser.spendAndNext( TIME_TO_READ ); identifiedByUse = false; break; case 1: @@ -59,8 +59,8 @@ protected void onSelect( int index ) { break; } } - public void onBackPressed() {}; - } ); + public void onBackPressed() {} + } ); } protected abstract void onItemSelected( Item item ); diff --git a/java/com/hmdzl/spspd/items/scrolls/Scroll.java b/java/com/hmdzl/spspd/items/scrolls/Scroll.java index 87bbdd6f..7e244aa6 100644 --- a/java/com/hmdzl/spspd/items/scrolls/Scroll.java +++ b/java/com/hmdzl/spspd/items/scrolls/Scroll.java @@ -34,7 +34,7 @@ import com.hmdzl.spspd.items.artifacts.UnstableSpellbook; import com.hmdzl.spspd.sprites.HeroSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Bundle; import com.watabou.utils.Random; @@ -101,9 +101,9 @@ public void sync() { super.sync(); image = handler.image(this); rune = handler.label(this); - }; + } - @Override + @Override public ArrayList actions(Hero hero) { ArrayList actions = super.actions(hero); actions.add(AC_READ); @@ -147,7 +147,7 @@ public void execute(Hero hero, String action) { public abstract void empoweredRead(); protected void readAnimation() { - curUser.spend( TIME_TO_READ ); + //curUser.spend( TIME_TO_READ ); curUser.busy(); ((HeroSprite)curUser.sprite).read(); if (Dungeon.isChallenged(Challenges.ITEM_PHOBIA)){ diff --git a/java/com/hmdzl/spspd/items/scrolls/ScrollOfIdentify.java b/java/com/hmdzl/spspd/items/scrolls/ScrollOfIdentify.java index 01f443a3..cc27dbd8 100644 --- a/java/com/hmdzl/spspd/items/scrolls/ScrollOfIdentify.java +++ b/java/com/hmdzl/spspd/items/scrolls/ScrollOfIdentify.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.utils.GLog; import com.hmdzl.spspd.windows.WndBag; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/items/scrolls/ScrollOfLullaby.java b/java/com/hmdzl/spspd/items/scrolls/ScrollOfLullaby.java index f18f5191..b3f67321 100644 --- a/java/com/hmdzl/spspd/items/scrolls/ScrollOfLullaby.java +++ b/java/com/hmdzl/spspd/items/scrolls/ScrollOfLullaby.java @@ -28,7 +28,7 @@ import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.utils.GLog; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.audio.Sample; public class ScrollOfLullaby extends Scroll { diff --git a/java/com/hmdzl/spspd/items/scrolls/ScrollOfMagicMapping.java b/java/com/hmdzl/spspd/items/scrolls/ScrollOfMagicMapping.java index 7ded8048..11bccfae 100644 --- a/java/com/hmdzl/spspd/items/scrolls/ScrollOfMagicMapping.java +++ b/java/com/hmdzl/spspd/items/scrolls/ScrollOfMagicMapping.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; import com.hmdzl.spspd.scenes.GameScene; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.audio.Sample; diff --git a/java/com/hmdzl/spspd/items/scrolls/ScrollOfMagicalInfusion.java b/java/com/hmdzl/spspd/items/scrolls/ScrollOfMagicalInfusion.java index c7685c0c..825b8bd7 100644 --- a/java/com/hmdzl/spspd/items/scrolls/ScrollOfMagicalInfusion.java +++ b/java/com/hmdzl/spspd/items/scrolls/ScrollOfMagicalInfusion.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.items.weapon.Weapon; import com.hmdzl.spspd.utils.GLog; import com.hmdzl.spspd.windows.WndBag; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class ScrollOfMagicalInfusion extends InventoryScroll { @@ -42,7 +42,7 @@ public class ScrollOfMagicalInfusion extends InventoryScroll { @Override protected void onItemSelected(Item item) { - ScrollOfRemoveCurse.uncurse(Dungeon.hero, item); + //ScrollOfRemoveCurse.uncurse(Dungeon.hero, item); if (item instanceof Weapon) ((Weapon) item).upgrade(true); else diff --git a/java/com/hmdzl/spspd/items/scrolls/ScrollOfMirrorImage.java b/java/com/hmdzl/spspd/items/scrolls/ScrollOfMirrorImage.java index e2f6d85e..8b505bb7 100644 --- a/java/com/hmdzl/spspd/items/scrolls/ScrollOfMirrorImage.java +++ b/java/com/hmdzl/spspd/items/scrolls/ScrollOfMirrorImage.java @@ -30,7 +30,7 @@ import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.utils.GLog; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; import com.watabou.utils.PathFinder; @@ -114,7 +114,7 @@ public static int spawnImages(Hero hero, int nImages ){ for (int i = 0; i < PathFinder.NEIGHBOURS8.length; i++) { int p = hero.pos + PathFinder.NEIGHBOURS8[i]; - if (Actor.findChar( p ) == null && (Dungeon.level.passable[p] || Dungeon.level.avoid[p])) { + if (Actor.findChar( p ) == null && (Level.passable[p] || Level.avoid[p])) { respawnPoints.add( p ); } } diff --git a/java/com/hmdzl/spspd/items/scrolls/ScrollOfPsionicBlast.java b/java/com/hmdzl/spspd/items/scrolls/ScrollOfPsionicBlast.java index 45f27034..aec7925e 100644 --- a/java/com/hmdzl/spspd/items/scrolls/ScrollOfPsionicBlast.java +++ b/java/com/hmdzl/spspd/items/scrolls/ScrollOfPsionicBlast.java @@ -19,17 +19,14 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.actors.buffs.Blindness; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Invisibility; -import com.hmdzl.spspd.actors.buffs.Paralysis; +import com.hmdzl.spspd.actors.buffs.SuperArcane; import com.hmdzl.spspd.actors.mobs.Mob; +import com.hmdzl.spspd.actors.mobs.npcs.NPC; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.scenes.GameScene; - import com.watabou.noosa.audio.Sample; -import com.watabou.utils.Random; public class ScrollOfPsionicBlast extends Scroll { @@ -49,15 +46,15 @@ public void doRead() { Sample.INSTANCE.play(Assets.SND_BLAST); Invisibility.dispel(); + int people = 0; for (Mob mob : Dungeon.level.mobs.toArray(new Mob[0])) { - if (Level.fieldOfView[mob.pos] && !mob.properties().contains(Char.Property.BOSS)) { - mob.damage(mob.HT, this); - } else mob.damage(1, this); + mob.beckon(curUser.pos); + if (mob instanceof Mob && !(mob instanceof NPC)){ + people++; + } } + Buff.prolong(curUser, SuperArcane.class, 30f).level(people); - curUser.damage(Math.max(curUser.HT / 5, curUser.HP / 2), this); - Buff.prolong(curUser, Paralysis.class, Random.Int(4, 6)); - Buff.prolong(curUser, Blindness.class, Random.Int(6, 9)); Dungeon.observe(); setKnown(); diff --git a/java/com/hmdzl/spspd/items/scrolls/ScrollOfRage.java b/java/com/hmdzl/spspd/items/scrolls/ScrollOfRage.java index 288b041a..4e624a2a 100644 --- a/java/com/hmdzl/spspd/items/scrolls/ScrollOfRage.java +++ b/java/com/hmdzl/spspd/items/scrolls/ScrollOfRage.java @@ -29,7 +29,7 @@ import com.hmdzl.spspd.items.Heap; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.utils.GLog; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.audio.Sample; public class ScrollOfRage extends Scroll { diff --git a/java/com/hmdzl/spspd/items/scrolls/ScrollOfRecharging.java b/java/com/hmdzl/spspd/items/scrolls/ScrollOfRecharging.java index ba9a6596..f84a9245 100644 --- a/java/com/hmdzl/spspd/items/scrolls/ScrollOfRecharging.java +++ b/java/com/hmdzl/spspd/items/scrolls/ScrollOfRecharging.java @@ -18,16 +18,20 @@ package com.hmdzl.spspd.items.scrolls; import com.hmdzl.spspd.Assets; +import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.buffs.Arcane; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Recharging; import com.hmdzl.spspd.actors.buffs.Invisibility; +import com.hmdzl.spspd.actors.buffs.Recharging; +import com.hmdzl.spspd.actors.buffs.Shocked; import com.hmdzl.spspd.actors.hero.Hero; +import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.effects.SpellSprite; import com.hmdzl.spspd.effects.particles.EnergyParticle; +import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.audio.Sample; -import com.hmdzl.spspd.messages.Messages; public class ScrollOfRecharging extends Scroll { @@ -51,7 +55,13 @@ public void doRead() { GLog.i(Messages.get(this, "surge")); SpellSprite.show( curUser, SpellSprite.CHARGE ); setKnown(); - + + for (Mob mob : Dungeon.level.mobs.toArray( new Mob[0] )) { + if (Level.fieldOfView[mob.pos]) { + Buff.affect(mob,Shocked.class,6f); + } + } + readAnimation(); } diff --git a/java/com/hmdzl/spspd/items/scrolls/ScrollOfRegrowth.java b/java/com/hmdzl/spspd/items/scrolls/ScrollOfRegrowth.java index 16de7da0..1e7a3e5c 100644 --- a/java/com/hmdzl/spspd/items/scrolls/ScrollOfRegrowth.java +++ b/java/com/hmdzl/spspd/items/scrolls/ScrollOfRegrowth.java @@ -22,12 +22,12 @@ import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Blob; -import com.hmdzl.spspd.actors.blobs.Regrowth; import com.hmdzl.spspd.actors.blobs.Water; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Dewcharge; +import com.hmdzl.spspd.actors.buffs.GrowSeed; import com.hmdzl.spspd.actors.buffs.Invisibility; -import com.hmdzl.spspd.actors.buffs.Recharging; +import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; @@ -56,7 +56,7 @@ public void doRead() { ArrayList plantCandidates = new ArrayList<>(); - PathFinder.buildDistanceMap( Dungeon.hero.pos, BArray.not( Dungeon.level.solid, null ), 2 ); + PathFinder.buildDistanceMap( Dungeon.hero.pos, BArray.not(Level.solid, null ), 2 ); for (int i = 0; i < PathFinder.distance.length; i++) { if (PathFinder.distance[i] < Integer.MAX_VALUE) { Char ch = Actor.findChar(i); @@ -99,6 +99,12 @@ public void doRead() { Dungeon.level.plant( plant, plantPos); } + for (Mob mob : Dungeon.level.mobs.toArray( new Mob[0] )) { + if (Level.fieldOfView[mob.pos]) { + Buff.affect(mob,GrowSeed.class).reignite(mob,6f); + } + } + Sample.INSTANCE.play(Assets.SND_READ); Invisibility.dispel(); @@ -111,7 +117,7 @@ public void doRead() { @Override public void empoweredRead() { doRead(); - Buff.affect(curUser, Dewcharge.class,50f); + Buff.affect(curUser, Dewcharge.class).level(50); } @Override diff --git a/java/com/hmdzl/spspd/items/scrolls/ScrollOfRemoveCurse.java b/java/com/hmdzl/spspd/items/scrolls/ScrollOfRemoveCurse.java index d3bcd90e..4240a840 100644 --- a/java/com/hmdzl/spspd/items/scrolls/ScrollOfRemoveCurse.java +++ b/java/com/hmdzl/spspd/items/scrolls/ScrollOfRemoveCurse.java @@ -18,16 +18,20 @@ package com.hmdzl.spspd.items.scrolls; import com.hmdzl.spspd.Assets; +import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Invisibility; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.LightShootAttack; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.hero.Hero; +import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.effects.Flare; import com.hmdzl.spspd.effects.particles.ShadowParticle; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.bags.Bag; -import com.hmdzl.spspd.utils.GLog; +import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.audio.Sample; public class ScrollOfRemoveCurse extends Scroll { @@ -52,7 +56,7 @@ public void doRead() { curUser.belongings.misc2, curUser.belongings.misc3 ) || procced; - Buff.detach(curUser, Weakness.class); + Buff.detach(curUser, STRdown.class); if (procced) { GLog.p(Messages.get(this, "cleansed") ); @@ -86,6 +90,12 @@ public static boolean uncurse(Hero hero, Item... items) { } } + for (Mob mob : Dungeon.level.mobs.toArray( new Mob[0] )) { + if (Level.fieldOfView[mob.pos]) { + Buff.affect(mob,LightShootAttack.class).level(6); + } + } + if (procced) { hero.sprite.emitter().start(ShadowParticle.UP, 0.05f, 10); } diff --git a/java/com/hmdzl/spspd/items/scrolls/ScrollOfSacrifice.java b/java/com/hmdzl/spspd/items/scrolls/ScrollOfSacrifice.java index 68313f3a..f8985920 100644 --- a/java/com/hmdzl/spspd/items/scrolls/ScrollOfSacrifice.java +++ b/java/com/hmdzl/spspd/items/scrolls/ScrollOfSacrifice.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.items.scrolls; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Random; @@ -34,18 +34,22 @@ public class ScrollOfSacrifice extends Scroll { @Override public void doRead() { - if(Dungeon.sacrifice==0){Dungeon.hero.HT +=5; + if(Dungeon.sacrifice==0){Dungeon.hero.TRUE_HT +=5; Dungeon.hero.sprite.showStatus(CharSprite.POSITIVE, Messages.get(this, "use_1")); + Dungeon.hero.updateHT(true); + } else if(Dungeon.sacrifice > 0){Dungeon.hero.STR++; Dungeon.hero.sprite.showStatus(CharSprite.POSITIVE, Messages.get(this, "use_2")); } - if(Dungeon.sacrifice > 1) {Dungeon.hero.HT-= Random.Int(5*Dungeon.sacrifice,Dungeon.hero.HT/5); + if(Dungeon.sacrifice > 1) { + Dungeon.hero.TRUE_HT-= Random.Int(5*Dungeon.sacrifice,Dungeon.hero.TRUE_HT/5); + Dungeon.hero.updateHT(true); GLog.w(Messages.get(this, "use_lot")); } - if(Dungeon.hero.HP > Dungeon.hero.HT) - {Dungeon.hero.HP = Dungeon.hero.HT;} + if(Dungeon.hero.HP > Dungeon.hero.TRUE_HT) + {Dungeon.hero.HP = Dungeon.hero.TRUE_HT;} setKnown(); diff --git a/java/com/hmdzl/spspd/items/scrolls/ScrollOfTeleportation.java b/java/com/hmdzl/spspd/items/scrolls/ScrollOfTeleportation.java index d0a6f551..72585c52 100644 --- a/java/com/hmdzl/spspd/items/scrolls/ScrollOfTeleportation.java +++ b/java/com/hmdzl/spspd/items/scrolls/ScrollOfTeleportation.java @@ -34,7 +34,7 @@ import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.utils.GLog; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.Camera; import com.watabou.noosa.audio.Sample; import com.hmdzl.spspd.effects.Speck; diff --git a/java/com/hmdzl/spspd/items/scrolls/ScrollOfTerror.java b/java/com/hmdzl/spspd/items/scrolls/ScrollOfTerror.java index 6a85a4a5..2840670b 100644 --- a/java/com/hmdzl/spspd/items/scrolls/ScrollOfTerror.java +++ b/java/com/hmdzl/spspd/items/scrolls/ScrollOfTerror.java @@ -23,12 +23,13 @@ import com.hmdzl.spspd.actors.buffs.HasteBuff; import com.hmdzl.spspd.actors.buffs.Invisibility; import com.hmdzl.spspd.actors.buffs.Paralysis; +import com.hmdzl.spspd.actors.buffs.ShadowCurse; import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.effects.Flare; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.utils.GLog; import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.audio.Sample; public class ScrollOfTerror extends Scroll { @@ -53,7 +54,7 @@ public void doRead() { Buff.affect(mob, Terror.class, Terror.DURATION).object = curUser .id(); Buff.affect(mob, HasteBuff.class, Terror.DURATION*.5f); - + Buff.affect(mob,ShadowCurse.class); count++; affected = mob; } diff --git a/java/com/hmdzl/spspd/items/scrolls/ScrollOfUpgrade.java b/java/com/hmdzl/spspd/items/scrolls/ScrollOfUpgrade.java index 203ab614..9b93e864 100644 --- a/java/com/hmdzl/spspd/items/scrolls/ScrollOfUpgrade.java +++ b/java/com/hmdzl/spspd/items/scrolls/ScrollOfUpgrade.java @@ -39,7 +39,7 @@ public class ScrollOfUpgrade extends InventoryScroll { @Override protected void onItemSelected(Item item) { - ScrollOfRemoveCurse.uncurse(Dungeon.hero, item); + //ScrollOfRemoveCurse.uncurse(Dungeon.hero, item); item.upgrade(); upgrade(curUser); diff --git a/java/com/hmdzl/spspd/items/skills/ClassSkill.java b/java/com/hmdzl/spspd/items/skills/ClassSkill.java index 2e2cac80..6c64e251 100644 --- a/java/com/hmdzl/spspd/items/skills/ClassSkill.java +++ b/java/com/hmdzl/spspd/items/skills/ClassSkill.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.bags.Bag; import com.hmdzl.spspd.scenes.GameScene; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.windows.WndItem; import com.watabou.utils.Bundle; @@ -77,7 +77,7 @@ public static ClassSkill upgrade(Hero owner) { classSkill = new FollowerSkill(); break; } - classSkill.charge = 0; + charge = 0; return classSkill; } diff --git a/java/com/hmdzl/spspd/items/skills/FollowerSkill.java b/java/com/hmdzl/spspd/items/skills/FollowerSkill.java index a761575c..b4fedcd0 100644 --- a/java/com/hmdzl/spspd/items/skills/FollowerSkill.java +++ b/java/com/hmdzl/spspd/items/skills/FollowerSkill.java @@ -36,7 +36,7 @@ import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.windows.WndBag; import com.watabou.utils.Callback; import com.watabou.noosa.audio.Sample; @@ -82,7 +82,7 @@ public void doSpecial2() { people++; } } - int goldearn = (int)(people*(Dungeon.hero.lvl/10+100)); + int goldearn = people*(Dungeon.hero.lvl/10+100); Dungeon.gold+= goldearn; Dungeon.hero.sprite.showStatus(CharSprite.NEUTRAL, TXT_VALUE, goldearn); } @@ -91,7 +91,7 @@ public void doSpecial2() { public void doSpecial3() { for (Mob mob : Dungeon.level.mobs) { - if (Level.fieldOfView[mob.pos] && (Dungeon.level.distance(curUser.pos, mob.pos) <= 10)) { + if (Level.fieldOfView[mob.pos] && (Level.distance(curUser.pos, mob.pos) <= 10)) { Buff.affect(mob, Terror.class, 10f).object = curUser.id(); Buff.prolong(mob, Blindness.class, 10f); } diff --git a/java/com/hmdzl/spspd/items/skills/HuntressSkill.java b/java/com/hmdzl/spspd/items/skills/HuntressSkill.java index 7360615a..8678635b 100644 --- a/java/com/hmdzl/spspd/items/skills/HuntressSkill.java +++ b/java/com/hmdzl/spspd/items/skills/HuntressSkill.java @@ -38,7 +38,7 @@ import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.effects.particles.ElmoParticle; import com.watabou.utils.PathFinder; import com.watabou.utils.Random; @@ -159,7 +159,7 @@ public void doSpecial3() { public void doSpecial4() { for (Mob mob : Dungeon.level.mobs) { - if (Level.fieldOfView[mob.pos] && (Dungeon.level.distance(curUser.pos, mob.pos) <= 10)) { + if (Level.fieldOfView[mob.pos] && (Level.distance(curUser.pos, mob.pos) <= 10)) { Buff.prolong(mob, Roots.class, 8); Buff.affect(mob, GrowSeed.class); } diff --git a/java/com/hmdzl/spspd/items/skills/MageSkill.java b/java/com/hmdzl/spspd/items/skills/MageSkill.java index 18272769..7b038e8e 100644 --- a/java/com/hmdzl/spspd/items/skills/MageSkill.java +++ b/java/com/hmdzl/spspd/items/skills/MageSkill.java @@ -23,11 +23,12 @@ import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.CountDown; import com.hmdzl.spspd.actors.buffs.Frost; +import com.hmdzl.spspd.actors.buffs.Ooze; import com.hmdzl.spspd.actors.buffs.Recharging; +import com.hmdzl.spspd.actors.buffs.Roots; import com.hmdzl.spspd.actors.buffs.Shocked; import com.hmdzl.spspd.actors.buffs.Slow; -import com.hmdzl.spspd.actors.buffs.Ooze; -import com.hmdzl.spspd.actors.buffs.Roots; +import com.hmdzl.spspd.actors.mobs.FireElemental; import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.particles.ElmoParticle; @@ -49,7 +50,7 @@ public class MageSkill extends ClassSkill { public void doSpecial() { for (Mob mob : Dungeon.level.mobs) { - if (Level.fieldOfView[mob.pos] && (Dungeon.level.distance(curUser.pos, mob.pos) <= 10)) { + if (Level.fieldOfView[mob.pos] && (Level.distance(curUser.pos, mob.pos) <= 10)) { Buff.affect(mob, Burning.class).reignite(mob); Buff.affect(mob, Ooze.class); Buff.affect(mob, Slow.class, 8); @@ -71,7 +72,7 @@ public void doSpecial() { @Override public void doSpecial2() { for (Mob mob : Dungeon.level.mobs) { - if (Level.fieldOfView[mob.pos] && (Dungeon.level.distance(curUser.pos, mob.pos) <= 10)) { + if (Level.fieldOfView[mob.pos] && (Level.distance(curUser.pos, mob.pos) <= 10)) { Buff.affect(mob, CountDown.class); for (int n : Level.NEIGHBOURS4) { int c = mob.pos + n; @@ -104,9 +105,11 @@ public void doSpecial2() { public void doSpecial3() { for (Mob mob : Dungeon.level.mobs) { - if (Level.fieldOfView[mob.pos] && (Dungeon.level.distance(curUser.pos, mob.pos) <= 10)) { + + if (Level.fieldOfView[mob.pos] && (Level.distance(curUser.pos, mob.pos) <= 10)) { int dmg = (int) (Dungeon.hero.lvl * (1 + 0.1 * Dungeon.hero.magicSkill())) ; mob.damage(Math.min(mob.HP-10,mob.HT/10 + dmg), this ); + if (!(mob instanceof FireElemental)) Buff.prolong(mob, Frost.class, 8); } } @@ -125,7 +128,7 @@ public void doSpecial3() { @Override public void doSpecial4() { for (Mob mob : Dungeon.level.mobs) { - if (Level.fieldOfView[mob.pos] && (Dungeon.level.distance(curUser.pos, mob.pos) <= 4)) { + if (Level.fieldOfView[mob.pos] && (Level.distance(curUser.pos, mob.pos) <= 4)) { Buff.prolong(mob, Shocked.class, 8); } } diff --git a/java/com/hmdzl/spspd/items/skills/PerformerSkill.java b/java/com/hmdzl/spspd/items/skills/PerformerSkill.java index 982a3109..d9dcce3b 100644 --- a/java/com/hmdzl/spspd/items/skills/PerformerSkill.java +++ b/java/com/hmdzl/spspd/items/skills/PerformerSkill.java @@ -41,7 +41,7 @@ import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.windows.WndBag; import com.hmdzl.spspd.effects.particles.ElmoParticle; import com.watabou.noosa.audio.Sample; @@ -58,7 +58,7 @@ public void doSpecial() { for (Mob mob : Dungeon.level.mobs) { if (Level.fieldOfView[mob.pos]) { - Buff.affect(mob, Charm.class,Charm.durationFactor(mob)*5f).object = curUser.id(); + Buff.affect(mob, Charm.class,5f).object = curUser.id(); mob.sprite.centerEmitter().start(Speck.factory(Speck.HEART),0.2f, 5); Buff.affect(mob, Amok.class, 10f); Buff.prolong(mob, HasteBuff.class, 5f); diff --git a/java/com/hmdzl/spspd/items/skills/RogueSkill.java b/java/com/hmdzl/spspd/items/skills/RogueSkill.java index a3097875..c9684ed1 100644 --- a/java/com/hmdzl/spspd/items/skills/RogueSkill.java +++ b/java/com/hmdzl/spspd/items/skills/RogueSkill.java @@ -89,7 +89,7 @@ public void doSpecial2() { public void doSpecial3() { for (Mob mob : Dungeon.level.mobs) { - if (Level.fieldOfView[mob.pos] && (Dungeon.level.distance(curUser.pos, mob.pos) <= 10)) { + if (Level.fieldOfView[mob.pos] && (Level.distance(curUser.pos, mob.pos) <= 10)) { Buff.affect(mob, Silent.class,9999f); Buff.affect(mob, Disarm.class,5f); Buff.affect(mob, ArmorBreak.class, 10f).level(50); diff --git a/java/com/hmdzl/spspd/items/skills/SoldierSkill.java b/java/com/hmdzl/spspd/items/skills/SoldierSkill.java index 2dc7caf9..3bbb64d3 100644 --- a/java/com/hmdzl/spspd/items/skills/SoldierSkill.java +++ b/java/com/hmdzl/spspd/items/skills/SoldierSkill.java @@ -34,7 +34,7 @@ import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.actors.buffs.ShieldArmor; import com.hmdzl.spspd.actors.buffs.Terror; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Awareness; import com.hmdzl.spspd.actors.hero.HeroSubClass; @@ -86,7 +86,7 @@ public void doSpecial() { SoldierSkill.charge += 12; Buff.detach(curUser, Poison.class); Buff.detach(curUser, Cripple.class); - Buff.detach(curUser, Weakness.class); + Buff.detach(curUser, STRdown.class); Buff.detach(curUser, Burning.class); Buff.detach(curUser, Ooze.class); Buff.detach(curUser, Chill.class); @@ -235,16 +235,11 @@ public void die(Object cause) { super.die(cause); } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(ToxicGas.class); + { + immunities.add(Terror.class); + immunities.add(ToxicGas.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } public static class SeekingHugeBomb extends Mob { { @@ -307,16 +302,11 @@ public void die(Object cause) { super.die(cause); } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(ToxicGas.class); + { + immunities.add(Terror.class); + immunities.add(ToxicGas.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } } diff --git a/java/com/hmdzl/spspd/items/skills/WarriorSkill.java b/java/com/hmdzl/spspd/items/skills/WarriorSkill.java index 6fac52b1..dd3306d8 100644 --- a/java/com/hmdzl/spspd/items/skills/WarriorSkill.java +++ b/java/com/hmdzl/spspd/items/skills/WarriorSkill.java @@ -66,7 +66,7 @@ public void doSpecial2() { for (Mob mob : Dungeon.level.mobs) { if (Level.fieldOfView[mob.pos]) { - if (Dungeon.level.distance(curUser.pos, mob.pos) <= 3){ + if (Level.distance(curUser.pos, mob.pos) <= 3){ Buff.affect(mob, AttackUp.class).level(10); } else { Buff.affect(mob, Disarm.class, curUser.STR); @@ -88,7 +88,7 @@ public void doSpecial3() { for (Mob mob : Dungeon.level.mobs) { if (mob instanceof PET) { - mob.HP += (int)mob.HT/2; + mob.HP += mob.HT /2; } } Buff.affect(curUser,ShieldArmor.class).level(curUser.HT/2); @@ -96,7 +96,7 @@ public void doSpecial3() { Char mob = Actor.findChar(curUser.pos + Level.NEIGHBOURS8[i]); if (mob != null && mob != curUser && !(mob instanceof PET ) ) { - mob.damage((int)curUser.HT/2, this); + mob.damage(curUser.HT /2, this); } } diff --git a/java/com/hmdzl/spspd/items/summon/ActiveMrDestructo.java b/java/com/hmdzl/spspd/items/summon/ActiveMrDestructo.java index e4239a33..e39b7ef8 100644 --- a/java/com/hmdzl/spspd/items/summon/ActiveMrDestructo.java +++ b/java/com/hmdzl/spspd/items/summon/ActiveMrDestructo.java @@ -17,14 +17,13 @@ */ package com.hmdzl.spspd.items.summon; -import java.util.ArrayList; -import java.util.HashSet; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.ToxicGas; +import com.hmdzl.spspd.actors.buffs.ArmorBreak; +import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.hero.HeroSubClass; @@ -43,6 +42,9 @@ import com.hmdzl.spspd.sprites.MrDestructoSprite; import com.watabou.utils.Random; +import java.util.ArrayList; +import java.util.HashSet; + public class ActiveMrDestructo extends Item { { @@ -247,6 +249,7 @@ public boolean attack(Char enemy) { if (hit(this, ch, true)) { ch.damage(Random.NormalIntRange(Dungeon.depth, Dungeon.depth+12), this); damage(Random.NormalIntRange(5, 10), this); + Buff.affect(ch,ArmorBreak.class,3f).level(30); if (Dungeon.visible[pos]) { ch.sprite.flash(); @@ -255,7 +258,7 @@ public boolean attack(Char enemy) { } if (!ch.isAlive() && ch == Dungeon.hero) { - Dungeon.fail(Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(Messages.get(this, "kill")); } } else { @@ -270,27 +273,12 @@ public boolean attack(Char enemy) { public void beckon(int cell) { } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(EnchantmentDark.class); - - } - - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(ToxicGas.class); + { + resistances.add(EnchantmentDark.class); + immunities.add(Terror.class); + immunities.add(ToxicGas.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } public static class MrDestructo2dot0 extends Mob { @@ -413,6 +401,7 @@ public boolean attack(Char enemy) { } if (hit(this, ch, true)) { + Buff.affect(ch,ArmorBreak.class,3f).level(50); ch.damage(Random.NormalIntRange(Dungeon.depth+20, Dungeon.depth+32), this); damage(Random.NormalIntRange(5, 10), this); @@ -423,7 +412,7 @@ public boolean attack(Char enemy) { } if (!ch.isAlive() && ch == Dungeon.hero) { - Dungeon.fail(Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(Messages.get(this, "kill")); } } else { @@ -438,27 +427,12 @@ public boolean attack(Char enemy) { public void beckon(int cell) { } - private static final HashSet> RESISTANCES = new HashSet>(); - static { - RESISTANCES.add(EnchantmentDark.class); - + { + resistances.add(EnchantmentDark.class); + immunities.add(Terror.class); + immunities.add(ToxicGas.class); } - @Override - public HashSet> resistances() { - return RESISTANCES; - } - - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Terror.class); - IMMUNITIES.add(ToxicGas.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } } diff --git a/java/com/hmdzl/spspd/items/summon/CallCoconut.java b/java/com/hmdzl/spspd/items/summon/CallCoconut.java index 4336626c..f10248bc 100644 --- a/java/com/hmdzl/spspd/items/summon/CallCoconut.java +++ b/java/com/hmdzl/spspd/items/summon/CallCoconut.java @@ -174,7 +174,7 @@ public static Scococat spawnAt(int pos) { @Override protected boolean canAttack(Char enemy) { - return Dungeon.level.distance(pos, enemy.pos) <= 4; + return Level.distance(pos, enemy.pos) <= 4; } @@ -265,7 +265,7 @@ public static EXcococat spawnAt(int pos) { @Override protected boolean canAttack(Char enemy) { - return Dungeon.level.distance(pos, enemy.pos) <= 4; + return Level.distance(pos, enemy.pos) <= 4; } diff --git a/java/com/hmdzl/spspd/items/summon/FairyCard.java b/java/com/hmdzl/spspd/items/summon/FairyCard.java index 7804f8cd..84c73616 100644 --- a/java/com/hmdzl/spspd/items/summon/FairyCard.java +++ b/java/com/hmdzl/spspd/items/summon/FairyCard.java @@ -259,7 +259,7 @@ public static SugarplumFairy spawnAt(int pos) { @Override protected boolean canAttack(Char enemy) { - return Dungeon.level.distance(pos, enemy.pos) <= 4; + return Level.distance(pos, enemy.pos) <= 4; } diff --git a/java/com/hmdzl/spspd/items/summon/Honeypot.java b/java/com/hmdzl/spspd/items/summon/Honeypot.java index a33098ad..9e73273c 100644 --- a/java/com/hmdzl/spspd/items/summon/Honeypot.java +++ b/java/com/hmdzl/spspd/items/summon/Honeypot.java @@ -366,16 +366,11 @@ protected boolean getCloser(int target) { return super.getCloser(target); } - private static final HashSet> IMMUNITIES = new HashSet>(); - static { - IMMUNITIES.add(Poison.class); - IMMUNITIES.add(Amok.class); + { + immunities.add(Poison.class); + immunities.add(Amok.class); } - @Override - public HashSet> immunities() { - return IMMUNITIES; - } } public static class SteelBee extends NPC { @@ -450,7 +445,7 @@ protected Char chooseEnemy() { @Override public boolean interact() { - if (Dungeon.level.passable[pos] || Dungeon.hero.flying) { + if (Level.passable[pos] || Dungeon.hero.flying) { int curPos = pos; moveSprite(pos, Dungeon.hero.pos); @@ -467,16 +462,8 @@ public boolean interact() { } } - private static final HashSet> IMMUNITIES = new HashSet>(); - - static { - IMMUNITIES.add(Poison.class); - } - - @Override - public HashSet> immunities() { - return IMMUNITIES; + { + immunities.add(Poison.class); } - } } diff --git a/java/com/hmdzl/spspd/items/summon/Mobile.java b/java/com/hmdzl/spspd/items/summon/Mobile.java index 7ed28c79..f7b9db44 100644 --- a/java/com/hmdzl/spspd/items/summon/Mobile.java +++ b/java/com/hmdzl/spspd/items/summon/Mobile.java @@ -17,9 +17,6 @@ */ package com.hmdzl.spspd.items.summon; -import java.util.ArrayList; -import java.util.HashSet; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; @@ -36,6 +33,9 @@ import com.hmdzl.spspd.sprites.MobileSprite; import com.watabou.utils.Random; +import java.util.ArrayList; +import java.util.HashSet; + public class Mobile extends Item { { @@ -124,6 +124,7 @@ public static class MobileSatellite extends Mob { state = HUNTING; HP = HT= 100; evadeSkill = 0; + baseSpeed=2; ally=true; properties.add(Property.MECH); } @@ -190,7 +191,7 @@ public static MobileSatellite spawnAt(int pos) { @Override protected boolean canAttack(Char enemy) { - return Dungeon.level.distance( pos, enemy.pos ) <= 6 ; + return Level.distance( pos, enemy.pos ) <= 6 ; } @Override @@ -215,6 +216,7 @@ public static class EXMobileSatellite extends Mob { state = HUNTING; HP = HT = 300; evadeSkill = 35; + baseSpeed=2; ally=true; properties.add(Property.MECH); } @@ -280,7 +282,7 @@ public static EXMobileSatellite spawnAt(int pos) { @Override protected boolean canAttack(Char enemy) { - return Dungeon.level.distance(pos, enemy.pos) <= 6; + return Level.distance(pos, enemy.pos) <= 6; } @Override diff --git a/java/com/hmdzl/spspd/items/wands/DamageWand.java b/java/com/hmdzl/spspd/items/wands/DamageWand.java index ffb664f1..fa9948b0 100644 --- a/java/com/hmdzl/spspd/items/wands/DamageWand.java +++ b/java/com/hmdzl/spspd/items/wands/DamageWand.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.actors.hero.HeroClass; import com.hmdzl.spspd.actors.hero.HeroSubClass; import com.hmdzl.spspd.items.rings.RingOfMagic; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; //for wands that directly damage a target diff --git a/java/com/hmdzl/spspd/items/wands/Wand.java b/java/com/hmdzl/spspd/items/wands/Wand.java index 2300f7f6..682966cd 100644 --- a/java/com/hmdzl/spspd/items/wands/Wand.java +++ b/java/com/hmdzl/spspd/items/wands/Wand.java @@ -20,38 +20,38 @@ */ package com.hmdzl.spspd.items.wands; -import java.util.ArrayList; - +import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Challenges; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.actors.buffs.Recharging; -import com.hmdzl.spspd.actors.buffs.Silent; -import com.hmdzl.spspd.actors.buffs.SoulMark; -import com.hmdzl.spspd.actors.hero.HeroClass; -import com.hmdzl.spspd.actors.hero.HeroSubClass; -import com.hmdzl.spspd.items.misc.GnollMark; -import com.hmdzl.spspd.items.rings.Ring; -import com.hmdzl.spspd.items.rings.RingOfEnergy; -import com.hmdzl.spspd.messages.Messages; -import com.watabou.noosa.audio.Sample; -import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Invisibility; +import com.hmdzl.spspd.actors.buffs.Recharging; +import com.hmdzl.spspd.actors.buffs.Silent; +import com.hmdzl.spspd.actors.buffs.SoulMark; import com.hmdzl.spspd.actors.hero.Hero; +import com.hmdzl.spspd.actors.hero.HeroClass; +import com.hmdzl.spspd.actors.hero.HeroSubClass; import com.hmdzl.spspd.effects.MagicMissile; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.bags.Bag; +import com.hmdzl.spspd.items.misc.GnollMark; +import com.hmdzl.spspd.items.rings.Ring; +import com.hmdzl.spspd.items.rings.RingOfEnergy; import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.ui.QuickSlotButton; import com.hmdzl.spspd.utils.GLog; +import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundle; import com.watabou.utils.Callback; import com.watabou.utils.Random; +import java.util.ArrayList; + public abstract class Wand extends Item { private static final int USAGES_TO_KNOW = 20; @@ -200,9 +200,9 @@ public String info() { public String statsDesc(){ return Messages.get(this, "stats_desc"); - }; - - @Override + } + + @Override public boolean isIdentified() { return super.isIdentified() && curChargeKnown; } @@ -403,7 +403,7 @@ public String prompt() { protected class Charger extends Buff { private static final float BASE_CHARGE_DELAY = 10f; - private static final float SCALING_CHARGE_ADDITION = 50f; + private static final float SCALING_CHARGE_ADDITION = 40f; private static final float NORMAL_SCALE_FACTOR = 0.95f; private static final float CHARGE_BUFF_BONUS = 0.25f; @@ -434,16 +434,20 @@ public boolean act() { } private void gainCharge(){ - int missingCharges = maxCharges - curCharges; - - missingCharges += Ring.getBonus(target, RingOfEnergy.Energy.class); - missingCharges = Math.max(0, missingCharges); + int missingCharges = 0; + missingCharges += Math.min(0.75f, 0.25f * Ring.getBonus(target, RingOfEnergy.Energy.class)/10); + //missingCharges = Math.max(0, missingCharges); if (Dungeon.hero.heroClass==HeroClass.MAGE && Dungeon.skins==2){ - missingCharges+=2; + missingCharges+=0.05f; } + if (partialCharge < missingCharges) + partialCharge = missingCharges; float turnsToCharge = (float) (BASE_CHARGE_DELAY - + (SCALING_CHARGE_ADDITION * Math.pow(scalingFactor, missingCharges))); - partialCharge += 1f/turnsToCharge; + + (SCALING_CHARGE_ADDITION - Math.max(1, missingCharges))); + + partialCharge += 0.02f; + //partialCharge += 0.01f*Math.min(1,missingCharges/10); + Recharging bonus = target.buff(Recharging.class); if (bonus != null && bonus.remainder() > 0f){ partialCharge += CHARGE_BUFF_BONUS * bonus.remainder(); diff --git a/java/com/hmdzl/spspd/items/wands/WandOfCharm.java b/java/com/hmdzl/spspd/items/wands/WandOfCharm.java index e01ab34f..33f6074d 100644 --- a/java/com/hmdzl/spspd/items/wands/WandOfCharm.java +++ b/java/com/hmdzl/spspd/items/wands/WandOfCharm.java @@ -49,11 +49,10 @@ protected void onZap(Ballistica bolt) { processSoulMark(ch, chargesPerCast()); if (ch == Dungeon.hero) { - Buff.affect(ch, Vertigo.class, Vertigo.duration(ch)); + Buff.affect(ch, Vertigo.class,5f); } else { Buff.affect(ch, Amok.class, chargesPerCast() + level()); - Buff.affect(ch, Charm.class, Charm.durationFactor(ch) - * Random.IntRange(chargesPerCast(), 3*level())).object = curUser.id(); + Buff.affect(ch, Charm.class, Random.IntRange(chargesPerCast(), 3*level())).object = curUser.id(); ch.sprite.centerEmitter().start(Speck.factory(Speck.HEART), 0.2f, 5); Sample.INSTANCE.play(Assets.SND_CHARMS); diff --git a/java/com/hmdzl/spspd/items/wands/WandOfFlock.java b/java/com/hmdzl/spspd/items/wands/WandOfFlock.java index 8a50f5db..bb636b62 100644 --- a/java/com/hmdzl/spspd/items/wands/WandOfFlock.java +++ b/java/com/hmdzl/spspd/items/wands/WandOfFlock.java @@ -32,7 +32,7 @@ import com.hmdzl.spspd.items.Heap; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.BaBaSprite; import com.hmdzl.spspd.sprites.SheepSprite; diff --git a/java/com/hmdzl/spspd/items/wands/WandOfLightning.java b/java/com/hmdzl/spspd/items/wands/WandOfLightning.java index a5302465..03763608 100644 --- a/java/com/hmdzl/spspd/items/wands/WandOfLightning.java +++ b/java/com/hmdzl/spspd/items/wands/WandOfLightning.java @@ -17,8 +17,6 @@ */ package com.hmdzl.spspd.items.wands; -import java.util.ArrayList; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Actor; @@ -31,11 +29,12 @@ import com.hmdzl.spspd.mechanics.Ballistica; import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.sprites.ItemSpriteSheet; - import com.watabou.noosa.Camera; import com.watabou.utils.Callback; import com.watabou.utils.Random; +import java.util.ArrayList; + public class WandOfLightning extends DamageWand { { @@ -74,7 +73,7 @@ protected void onZap( Ballistica bolt ) { } // Everything is processed in fx() method if (!curUser.isAlive()) { - Dungeon.fail(Messages.format(ResultDescriptions.ITEM)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n("You killed yourself with your own Wand of Lightning..."); } @@ -87,7 +86,7 @@ private void arc( Char ch ) { affected.add( ch ); - for (int i : Level.NEIGHBOURS8) { + for (int i : Level.NEIGHBOURS4) { int cell = ch.pos + i; Char n = Actor.findChar( cell ); diff --git a/java/com/hmdzl/spspd/items/wands/WandOfMeteorite.java b/java/com/hmdzl/spspd/items/wands/WandOfMeteorite.java index 97a2f188..7b37f6a4 100644 --- a/java/com/hmdzl/spspd/items/wands/WandOfMeteorite.java +++ b/java/com/hmdzl/spspd/items/wands/WandOfMeteorite.java @@ -35,7 +35,6 @@ import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; - import com.watabou.noosa.Camera; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Callback; @@ -95,7 +94,7 @@ protected void onZap(Ballistica bolt) { CellEmitter.get(c).burst(SmokeParticle.FACTORY, 2); } - if (Level.flamable[c]) { + if ((Level.flamable[c] || Dungeon.level.map[c] == Terrain.GLASS_WALL ) && Level.insideMap(c)) { Level.set(c, Terrain.EMBERS); GameScene.updateMap(c); } @@ -112,7 +111,7 @@ protected void onZap(Ballistica bolt) { if (!curUser.isAlive()) { - Dungeon.fail(Messages.format(ResultDescriptions.ITEM)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n("You killed yourself with your own Wand of Avalanche..."); } } diff --git a/java/com/hmdzl/spspd/items/wands/WandOfPoison.java b/java/com/hmdzl/spspd/items/wands/WandOfSwamp.java similarity index 94% rename from java/com/hmdzl/spspd/items/wands/WandOfPoison.java rename to java/com/hmdzl/spspd/items/wands/WandOfSwamp.java index 07d18570..d400dc1d 100644 --- a/java/com/hmdzl/spspd/items/wands/WandOfPoison.java +++ b/java/com/hmdzl/spspd/items/wands/WandOfSwamp.java @@ -23,8 +23,6 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Blob; import com.hmdzl.spspd.actors.blobs.PoisonGas; -import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.effects.MagicMissile; import com.hmdzl.spspd.items.Heap; import com.hmdzl.spspd.mechanics.Ballistica; @@ -33,7 +31,7 @@ import com.watabou.noosa.audio.Sample; import com.watabou.utils.Callback; -public class WandOfPoison extends DamageWand { +public class WandOfSwamp extends DamageWand { { image = ItemSpriteSheet.WAND_POISON; diff --git a/java/com/hmdzl/spspd/items/wands/WandOfTCloud.java b/java/com/hmdzl/spspd/items/wands/WandOfTCloud.java index 1b26ad70..03ed1b66 100644 --- a/java/com/hmdzl/spspd/items/wands/WandOfTCloud.java +++ b/java/com/hmdzl/spspd/items/wands/WandOfTCloud.java @@ -19,7 +19,6 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Blob; @@ -38,7 +37,7 @@ import com.hmdzl.spspd.items.Heap; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; @@ -246,7 +245,7 @@ protected boolean doAttack(Char enemy) { boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos]; if (visible) { - ((TCloudSprite) sprite).zap(enemy.pos); + sprite.zap(enemy.pos); } spend(TIME_TO_ZAP); @@ -266,7 +265,7 @@ protected boolean doAttack(Char enemy) { Camera.main.shake(2, 0.3f); if (!enemy.isAlive()) { - Dungeon.fail( Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(Messages.get(this, "zap_kill")); } } @@ -432,7 +431,7 @@ protected boolean doAttack(Char enemy) { boolean visible = Level.fieldOfView[pos] || Level.fieldOfView[enemy.pos]; if (visible) { - ((KeKeSprite) sprite).zap(enemy.pos); + sprite.zap(enemy.pos); } spend(TIME_TO_ZAP); @@ -452,7 +451,7 @@ protected boolean doAttack(Char enemy) { Camera.main.shake(2, 0.3f); if (!enemy.isAlive()) { - Dungeon.fail( Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n(Messages.get(this, "zap_kill")); } } diff --git a/java/com/hmdzl/spspd/items/weapon/Weapon.java b/java/com/hmdzl/spspd/items/weapon/Weapon.java index ebe352c4..6bd7449f 100644 --- a/java/com/hmdzl/spspd/items/weapon/Weapon.java +++ b/java/com/hmdzl/spspd/items/weapon/Weapon.java @@ -39,7 +39,7 @@ import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentLight2; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentShock; import com.hmdzl.spspd.items.weapon.enchantments.EnchantmentShock2; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.hero.HeroClass; import com.hmdzl.spspd.items.Item; @@ -184,7 +184,7 @@ public int reachFactor(Hero hero) { int bonus = 0; for (Buff buff : hero.buffs(RingOfAccuracy.Accuracy.class)) { - bonus += ((RingOfAccuracy.Accuracy) buff).level; + bonus += Math.min(((RingOfAccuracy.Accuracy) buff).level,30); } if (Dungeon.hero.subClass == HeroSubClass.JOKER){ bonus += 10; @@ -192,7 +192,7 @@ public int reachFactor(Hero hero) { if (hero.buff(MechArmor.class) != null){ bonus += 10; } - RCH += (int)(bonus/10); + RCH += bonus/10; return RCH; } diff --git a/java/com/hmdzl/spspd/items/weapon/enchantments/AresLeech.java b/java/com/hmdzl/spspd/items/weapon/enchantments/AresLeech.java index 58cc387e..008e03a0 100644 --- a/java/com/hmdzl/spspd/items/weapon/enchantments/AresLeech.java +++ b/java/com/hmdzl/spspd/items/weapon/enchantments/AresLeech.java @@ -24,7 +24,7 @@ import com.hmdzl.spspd.items.weapon.Weapon; import com.hmdzl.spspd.items.weapon.melee.relic.RelicMeleeWeapon; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.sprites.ItemSprite.Glowing; import com.hmdzl.spspd.ui.BuffIndicator; @@ -109,9 +109,9 @@ public boolean attachTo(Char target) { public void prolong(int damage) { this.damage = damage; - }; + } - @Override + @Override public int icon() { return BuffIndicator.DEFERRED; } diff --git a/java/com/hmdzl/spspd/items/weapon/enchantments/BuzzSaw.java b/java/com/hmdzl/spspd/items/weapon/enchantments/BuzzSaw.java index afa1b4fa..30ee7af0 100644 --- a/java/com/hmdzl/spspd/items/weapon/enchantments/BuzzSaw.java +++ b/java/com/hmdzl/spspd/items/weapon/enchantments/BuzzSaw.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.items.weapon.Weapon; import com.hmdzl.spspd.items.weapon.melee.special.Handcannon; import com.hmdzl.spspd.items.weapon.melee.relic.RelicMeleeWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.sprites.ItemSprite.Glowing; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentDark.java b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentDark.java index 58e9b9b4..251a974f 100644 --- a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentDark.java +++ b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentDark.java @@ -43,19 +43,17 @@ public boolean proc(Weapon weapon, Char attacker, Char defender, int damage) { // lvl 1 ~ 9% // lvl 2 ~ 10% FourClover.FourCloverBless fcb = attacker.buff(FourClover.FourCloverBless.class); - int level = Math.max(0, weapon.level); - int dmg = damage; - defender.damage(Random.Int(dmg/6), this); - if(fcb != null && Random.Int(2) == 1){ - defender.damage(Random.Int(dmg/6), this); + int level = Math.min(20, attacker.HT/10); + int maxdmg = level + weapon.level; + defender.damage((int)(Random.Int(level,maxdmg)*0.75), this); + if(fcb != null && Random.Int(2) == 1){ + defender.damage((int)(Random.Int(level,maxdmg)*0.50), this); } - if (Random.Int(level + 15) >= 15) { - Buff.prolong(defender, Terror.class,5f); + if (Random.Int(4) == 1) { + Buff.prolong(defender, Terror.class,3f); defender.sprite.emitter().burst(ShadowParticle.UP, 5); - return true; - } else { - return false; } + return true; } @Override diff --git a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentDark2.java b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentDark2.java index c6fedcd3..707a91e3 100644 --- a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentDark2.java +++ b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentDark2.java @@ -18,8 +18,8 @@ package com.hmdzl.spspd.items.weapon.enchantments; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.actors.buffs.AttackDown; import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.ShadowCurse; import com.hmdzl.spspd.effects.particles.ShadowParticle; import com.hmdzl.spspd.items.misc.FourClover; import com.hmdzl.spspd.items.weapon.Weapon; @@ -43,10 +43,12 @@ public boolean proc(Weapon weapon, Char attacker, Char defender, int damage) { // lvl 1 ~ 9% // lvl 2 ~ 10% FourClover.FourCloverBless fcb = attacker.buff(FourClover.FourCloverBless.class); - int lvl = Math.max(0, weapon.level); - Buff.prolong(defender, AttackDown.class,5f).level(Math.min(50,lvl+5)); - if(fcb != null && Random.Int(2) == 1){ - defender.damage(Random.Int(damage/6), this); + int level = Math.min(20, attacker.HT/10); + int maxdmg = level + weapon.level; + Buff.affect(defender, ShadowCurse.class); + defender.damage((int)(Random.Int(level,maxdmg)*0.25), this); + if(fcb != null && Random.Int(2) == 1){ + defender.damage((int)(Random.Int(level,maxdmg)*0.50), this); } defender.sprite.emitter().burst(ShadowParticle.UP, 5); return true; diff --git a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentEarth.java b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentEarth.java index 6af22bba..ce326aaf 100644 --- a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentEarth.java +++ b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentEarth.java @@ -20,11 +20,8 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.GrowSeed; -import com.hmdzl.spspd.actors.buffs.Roots; -import com.hmdzl.spspd.actors.buffs.Weakness; import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.particles.EarthParticle; -import com.hmdzl.spspd.effects.particles.ShadowParticle; import com.hmdzl.spspd.items.misc.FourClover; import com.hmdzl.spspd.items.weapon.Weapon; import com.hmdzl.spspd.items.weapon.melee.relic.RelicMeleeWeapon; @@ -47,15 +44,14 @@ public boolean proc(Weapon weapon, Char attacker, Char defender, int damage) { // lvl 1 - 50% // lvl 2 - 60% FourClover.FourCloverBless fcb = attacker.buff(FourClover.FourCloverBless.class); - int level = Math.max(0, weapon.level); - - int dmg = damage; - defender.damage(Random.Int(dmg/6), this); - if(fcb != null && Random.Int(2) == 1){ - defender.damage(Random.Int(dmg/6), this); + int level = Math.min(20, attacker.HT/10); + int maxdmg = level + weapon.level; + defender.damage((int)(Random.Int(level,maxdmg)*0.75), this); + if(fcb != null && Random.Int(2) == 1){ + defender.damage((int)(Random.Int(level,maxdmg)*0.50), this); } - if (Random.Int(level + 15) >= 30) { + if (Random.Int(10) == 1) { Buff.affect(defender, GrowSeed.class).reignite(defender); CellEmitter.bottom(defender.pos).start(EarthParticle.FACTORY, 0.05f, 8); return true; diff --git a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentEarth2.java b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentEarth2.java index 4332cd5e..73e1a6b1 100644 --- a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentEarth2.java +++ b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentEarth2.java @@ -21,10 +21,8 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Ooze; import com.hmdzl.spspd.actors.buffs.Roots; -import com.hmdzl.spspd.actors.buffs.Weakness; import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.particles.EarthParticle; -import com.hmdzl.spspd.effects.particles.ShadowParticle; import com.hmdzl.spspd.items.misc.FourClover; import com.hmdzl.spspd.items.weapon.Weapon; import com.hmdzl.spspd.items.weapon.melee.relic.RelicMeleeWeapon; @@ -47,9 +45,15 @@ public boolean proc(Weapon weapon, Char attacker, Char defender, int damage) { // lvl 1 - 50% // lvl 2 - 60% FourClover.FourCloverBless fcb = attacker.buff(FourClover.FourCloverBless.class); - int level = Math.max(0, weapon.level); - if ((Random.Int(level + 15) >= 15 || (fcb != null && Random.Int(level + 15) >= 10) )&& defender.isAlive()) { - Buff.prolong(defender, Roots.class,5f); + int level = Math.min(20, attacker.HT/10); + int maxdmg = level + weapon.level; + + defender.damage((int)(Random.Int(level,maxdmg)*0.25), this); + if(fcb != null && Random.Int(2) == 1){ + defender.damage((int)(Random.Int(level,maxdmg)*0.50), this); + } + if ((Random.Int(4) == 1 )&& defender.isAlive()) { + Buff.prolong(defender, Roots.class,3f); Buff.affect(defender, Ooze.class); CellEmitter.bottom(defender.pos).start(EarthParticle.FACTORY, 0.05f, 8); return true; diff --git a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentEnergy.java b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentEnergy.java index a1682022..ce506853 100644 --- a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentEnergy.java +++ b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentEnergy.java @@ -18,15 +18,13 @@ package com.hmdzl.spspd.items.weapon.enchantments; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.actors.buffs.AttackUp; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.Cripple; +import com.hmdzl.spspd.actors.buffs.DamageUp; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.effects.particles.ShadowParticle; import com.hmdzl.spspd.items.misc.FourClover; import com.hmdzl.spspd.items.weapon.Weapon; import com.hmdzl.spspd.items.weapon.melee.relic.RelicMeleeWeapon; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.sprites.ItemSprite.Glowing; import com.watabou.utils.Random; @@ -46,21 +44,23 @@ public boolean proc(Weapon weapon, Char attacker, Char defender, int damage) { // lvl 1 - 22% // lvl 2 - 30% FourClover.FourCloverBless fcb = attacker.buff(FourClover.FourCloverBless.class); - int level = Math.max(0, weapon.level); - - int dmg = damage; - defender.damage(Random.Int(dmg/6), this); + int level = Math.min(20, attacker.HT/10); + int maxdmg = level + weapon.level; + defender.damage((int)(Random.Int(level,maxdmg)*0.25), this); + if(fcb != null && Random.Int(2) == 1){ - defender.damage(Random.Int(dmg/6), this); + defender.damage((int)(Random.Int(level,maxdmg)*0.50), this); } - if (Random.Int(level + 15) >= 15) { - Buff.prolong(attacker, AttackUp.class,10f).level(15); - attacker.sprite.emitter().start(Speck.factory(Speck.UP), 0.2f, 3); - return true; - } else { - return false; - } + if (attacker.buff(DamageUp.class) == null) { + Buff.affect(attacker, DamageUp.class).level(Random.Int(level,maxdmg)); + } else Buff.affect(defender, Cripple.class,3f); + + attacker.sprite.emitter().start(Speck.factory(Speck.UP), 0.2f, 3); + return true; + //} else { + //return false; + //} } @Override diff --git a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentEnergy2.java b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentEnergy2.java index 16d20615..5b3d4e50 100644 --- a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentEnergy2.java +++ b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentEnergy2.java @@ -18,16 +18,13 @@ package com.hmdzl.spspd.items.weapon.enchantments; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.actors.buffs.AttackUp; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.DefenceUp; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.ShieldArmor; +import com.hmdzl.spspd.actors.buffs.Vertigo; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.effects.particles.ShadowParticle; import com.hmdzl.spspd.items.misc.FourClover; import com.hmdzl.spspd.items.weapon.Weapon; import com.hmdzl.spspd.items.weapon.melee.relic.RelicMeleeWeapon; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.sprites.ItemSprite.Glowing; import com.watabou.utils.Random; @@ -47,16 +44,16 @@ public boolean proc(Weapon weapon, Char attacker, Char defender, int damage) { // lvl 1 - 22% // lvl 2 - 30% FourClover.FourCloverBless fcb = attacker.buff(FourClover.FourCloverBless.class); - int lvl = Math.max(0, weapon.level); - - //int dmg = damage; - //defender.damage(Random.Int(dmg/6), this); - - //if (Random.Int(level + 15) >= 15) { + int level = Math.min(20, attacker.HT/10); + int maxdmg = level + weapon.level; + defender.damage((int)(Random.Int(level,maxdmg)*0.75), this); if(fcb != null && Random.Int(2) == 1){ - defender.damage(Random.Int(damage/6), this); + defender.damage((int)(Random.Int(level,maxdmg)*0.50), this); } - Buff.prolong(attacker, DefenceUp.class,5f).level(Math.min(30,lvl+1)); + if (attacker.buff(ShieldArmor.class) == null) { + Buff.affect(attacker, ShieldArmor.class).level(Random.Int(level,maxdmg)); + } else Buff.prolong(defender, Vertigo.class,3f); + //Buff.prolong(attacker, DefenceUp.class,5f).level(Math.min(30,lvl+1)); attacker.sprite.emitter().start(Speck.factory(Speck.UP), 0.2f, 3); return true; //} else { diff --git a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentFire.java b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentFire.java index c5332dc0..a752ba18 100644 --- a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentFire.java +++ b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentFire.java @@ -20,9 +20,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Burning; -import com.hmdzl.spspd.actors.buffs.Weakness; import com.hmdzl.spspd.effects.particles.FlameParticle; -import com.hmdzl.spspd.effects.particles.ShadowParticle; import com.hmdzl.spspd.items.misc.FourClover; import com.hmdzl.spspd.items.weapon.Weapon; import com.hmdzl.spspd.items.weapon.melee.relic.RelicMeleeWeapon; @@ -45,15 +43,14 @@ public boolean proc(Weapon weapon, Char attacker, Char defender, int damage) { // lvl 1 - 50% // lvl 2 - 60% FourClover.FourCloverBless fcb = attacker.buff(FourClover.FourCloverBless.class); - int level = Math.max(0, weapon.level); - - int dmg = damage; - defender.damage(Random.Int(dmg/6), this); - if(fcb != null && Random.Int(2) == 1){ - defender.damage(Random.Int(dmg/6), this); + int level = Math.min(20, attacker.HT/10); + int maxdmg = level + weapon.level; + defender.damage((int)(Random.Int(level,maxdmg)*0.25), this); + if(fcb != null && Random.Int(2) == 1){ + defender.damage((int)(Random.Int(level,maxdmg)*0.50), this); } - if (Random.Int(level + 15) >= 15) { + if (Random.Int(4) >= 1) { Buff.affect(defender, Burning.class).reignite( defender ); defender.sprite.emitter().burst(FlameParticle.FACTORY, 5); return true; diff --git a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentFire2.java b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentFire2.java index e719eee9..372036e5 100644 --- a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentFire2.java +++ b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentFire2.java @@ -19,12 +19,9 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.Hot; import com.hmdzl.spspd.actors.buffs.Tar; -import com.hmdzl.spspd.actors.buffs.Weakness; import com.hmdzl.spspd.effects.particles.FlameParticle; -import com.hmdzl.spspd.effects.particles.ShadowParticle; import com.hmdzl.spspd.items.misc.FourClover; import com.hmdzl.spspd.items.weapon.Weapon; import com.hmdzl.spspd.items.weapon.melee.relic.RelicMeleeWeapon; @@ -47,13 +44,16 @@ public boolean proc(Weapon weapon, Char attacker, Char defender, int damage) { // lvl 1 - 50% // lvl 2 - 60% FourClover.FourCloverBless fcb = attacker.buff(FourClover.FourCloverBless.class); - int lvl = Math.max(0, weapon.level); - if(fcb != null && Random.Int(2) == 1){ - defender.damage(Random.Int(damage/6), this); + int level = Math.min(20, attacker.HT/10); + int maxdmg = level + weapon.level; + defender.damage((int)(Random.Int(level,maxdmg)*0.75), this); + if(fcb != null && Random.Int(2) == 1){ + defender.damage((int)(Random.Int(level,maxdmg)*0.50), this); } if (defender.isAlive()){ - Buff.prolong(defender, Hot.class,Math.min(30,lvl+1)); - Buff.affect(defender, Tar.class); + Buff.prolong(defender, Hot.class,3f); + if (Random.Int(3)==1) + Buff.affect(defender, Tar.class); defender.sprite.emitter().burst(FlameParticle.FACTORY, 5); return true; } else { diff --git a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentIce.java b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentIce.java index 677a0b0a..ee9ab543 100644 --- a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentIce.java +++ b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentIce.java @@ -19,10 +19,9 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Chill; +import com.hmdzl.spspd.actors.buffs.Cold; import com.hmdzl.spspd.actors.buffs.Frost; -import com.hmdzl.spspd.actors.buffs.Weakness; -import com.hmdzl.spspd.effects.particles.ShadowParticle; +import com.hmdzl.spspd.actors.buffs.Wet; import com.hmdzl.spspd.effects.particles.SnowParticle; import com.hmdzl.spspd.items.misc.FourClover; import com.hmdzl.spspd.items.weapon.Weapon; @@ -46,19 +45,20 @@ public boolean proc(Weapon weapon, Char attacker, Char defender, int damage) { // lvl 1 - 40% // lvl 2 - 50% FourClover.FourCloverBless fcb = attacker.buff(FourClover.FourCloverBless.class); - int level = Math.max(0, weapon.level); - int dmg = damage; - defender.damage(Random.Int(dmg/6), this); + int level = Math.min(20, attacker.HT/10); + int maxdmg = level + weapon.level; + defender.damage((int)(Random.Int(level,maxdmg)*0.75), this); if(fcb != null && Random.Int(2) == 1){ - defender.damage(Random.Int(dmg/6), this); + defender.damage((int)(Random.Int(level,maxdmg)*0.50), this); } - if (Random.Int(level + 15) >= 15) { - Buff.affect(defender, Frost.class, Frost.duration(defender)*Random.Float(2f, 4f)); + Buff.prolong(defender, Wet.class, 3f); + Buff.prolong(defender, Cold.class, 3f); + if (Random.Int(3) == 1) { + Buff.affect(defender, Frost.class, Frost.duration(defender) * Random.Float(2f, 4f)); defender.sprite.emitter().burst(SnowParticle.FACTORY, 5); - return true; - } else { - return false; } + return true; + } @Override diff --git a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentIce2.java b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentIce2.java index 6a95d7db..f5ef51d5 100644 --- a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentIce2.java +++ b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentIce2.java @@ -19,12 +19,9 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Chill; import com.hmdzl.spspd.actors.buffs.Cold; -import com.hmdzl.spspd.actors.buffs.Frost; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.FrostIce; import com.hmdzl.spspd.actors.buffs.Wet; -import com.hmdzl.spspd.effects.particles.ShadowParticle; import com.hmdzl.spspd.effects.particles.SnowParticle; import com.hmdzl.spspd.items.misc.FourClover; import com.hmdzl.spspd.items.weapon.Weapon; @@ -48,12 +45,16 @@ public boolean proc(Weapon weapon, Char attacker, Char defender, int damage) { // lvl 1 - 40% // lvl 2 - 50% FourClover.FourCloverBless fcb = attacker.buff(FourClover.FourCloverBless.class); - int lvl = Math.max(0, weapon.level); - if(fcb != null && Random.Int(2) == 1){ - defender.damage(Random.Int(damage/6), this); + int level = Math.min(20, attacker.HT/10); + int maxdmg = level + weapon.level; + defender.damage((int)(Random.Int(level,maxdmg)*0.25), this); + if(fcb != null && Random.Int(2) == 1){ + defender.damage((int)(Random.Int(level,maxdmg)*0.50), this); + } + + if (Random.Int(3) >= 1) { + Buff.affect(defender, FrostIce.class).level(Random.Int(level,maxdmg)); } - Buff.prolong(defender, Wet.class, Math.min(30,lvl+2)); - Buff.prolong(defender, Cold.class, Math.min(30,lvl+2)); defender.sprite.emitter().burst(SnowParticle.FACTORY, 5); return true; diff --git a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentLight.java b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentLight.java index 7cb6724f..6ba6604f 100644 --- a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentLight.java +++ b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentLight.java @@ -18,6 +18,8 @@ package com.hmdzl.spspd.items.weapon.enchantments; import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.buffs.Blindness; +import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.items.misc.FourClover; import com.hmdzl.spspd.items.weapon.Weapon; import com.hmdzl.spspd.items.weapon.melee.relic.RelicMeleeWeapon; @@ -27,41 +29,40 @@ public class EnchantmentLight extends Weapon.Enchantment { -private static ItemSprite.Glowing YELLOW = new ItemSprite.Glowing( 0xFFFF44 ); + private static ItemSprite.Glowing YELLOW = new ItemSprite.Glowing(0xFFFF44); @Override public boolean proc(RelicMeleeWeapon weapon, Char attacker, Char defender, int damage) { return false; } - + @Override public boolean proc(Weapon weapon, Char attacker, Char defender, int damage) { // lvl 0 - 20% // lvl 1 - 33% // lvl 2 - 43% FourClover.FourCloverBless fcb = attacker.buff(FourClover.FourCloverBless.class); - int level = Math.max(0, weapon.level); - - int dmg = damage; - defender.damage(Random.Int(dmg/6), this); - if(fcb != null && Random.Int(2) == 1){ - defender.damage(Random.Int(dmg/6), this); + int level = Math.min(20, attacker.HT / 10); + int maxdmg = level + weapon.level; + defender.damage((int) (Random.Int(level, maxdmg) * 0.75), this); + if (fcb != null && Random.Int(2) == 1) { + defender.damage((int) (Random.Int(level, maxdmg) * 0.50), this); } - if (Random.Int(level + 15) >= 30) { - if (defender.properties().contains(Char.Property.DEMONIC) || defender.properties().contains(Char.Property.UNDEAD)){ - defender.damage((int)(damage*0.5),this); - } + if (Random.Int(3) >= 1) { + Buff.prolong(defender, Blindness.class, 4f); + } + //if (Random.Int(level + 15) >= 15) { - //Buff.prolong(defender, Blindness.class,5f); - //defender.sprite.emitter().burst(Speck.factory(Speck.LIGHT), 6); - return true; + //Buff.prolong(defender, Blindness.class,5f); + //defender.sprite.emitter().burst(Speck.factory(Speck.LIGHT), 6); + //} else { - //return false; + return false; //} - } + } @Override public Glowing glowing() { return YELLOW; diff --git a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentLight2.java b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentLight2.java index 0ff6ffab..e805f2b6 100644 --- a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentLight2.java +++ b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentLight2.java @@ -19,7 +19,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Blindness; +import com.hmdzl.spspd.actors.buffs.LightShootAttack; import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.items.misc.FourClover; import com.hmdzl.spspd.items.weapon.Weapon; @@ -43,11 +43,15 @@ public boolean proc(Weapon weapon, Char attacker, Char defender, int damage) { // lvl 1 - 33% // lvl 2 - 43% FourClover.FourCloverBless fcb = attacker.buff(FourClover.FourCloverBless.class); - int lvl = Math.max(0, weapon.level); - Buff.prolong(defender, Blindness.class,Math.min(50,lvl+5)); + int level = Math.min(20, attacker.HT/10); + int maxdmg = level + weapon.level; + defender.damage((int)(Random.Int(level,maxdmg)*0.25), this); if(fcb != null && Random.Int(2) == 1){ - defender.damage(Random.Int(damage/6), this); + defender.damage((int)(Random.Int(level,maxdmg)*0.50), this); } + if (Random.Int(3) == 1) { + Buff.affect(defender, LightShootAttack.class).level(5); + } defender.sprite.emitter().burst(Speck.factory(Speck.LIGHT), 6); return true; diff --git a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentShock.java b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentShock.java index 202101a6..a39a7522 100644 --- a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentShock.java +++ b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentShock.java @@ -17,9 +17,6 @@ */ package com.hmdzl.spspd.items.weapon.enchantments; -import java.util.ArrayList; -import java.util.HashSet; - import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.effects.Lightning; @@ -28,11 +25,13 @@ import com.hmdzl.spspd.items.weapon.Weapon; import com.hmdzl.spspd.items.weapon.melee.relic.RelicMeleeWeapon; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.levels.traps.LightningTrap; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.sprites.ItemSprite.Glowing; import com.watabou.utils.Random; +import java.util.ArrayList; +import java.util.HashSet; + public class EnchantmentShock extends Weapon.Enchantment { private static ItemSprite.Glowing GREEN = new ItemSprite.Glowing( 0x00FF00 ); @@ -47,7 +46,8 @@ public boolean proc(Weapon weapon, Char attacker, Char defender, int damage) { // lvl 1 - 40% // lvl 2 - 50% FourClover.FourCloverBless fcb = attacker.buff(FourClover.FourCloverBless.class); - int level = Math.max(0, weapon.level); + int level = Math.min(20, attacker.HT/10); + int maxdmg = level + weapon.level; if (Random.Int(level + 4) >= 3) { @@ -57,10 +57,10 @@ public boolean proc(Weapon weapon, Char attacker, Char defender, int damage) { affected.clear(); affected.add(attacker); - hit(defender, Random.Int(1, damage / 2)); + hit(defender, (int)(Random.Int(level,maxdmg)*0.75)); - if(fcb != null && Random.Int(2) == 1){ - hit(defender, Random.Int(1, damage / 2)); + if(fcb != null){ + defender.damage((int)(Random.Int(level,maxdmg)*0.50), this); } attacker.sprite.parent.add(new Lightning( attacker.pos, defender.pos, null )); @@ -86,7 +86,7 @@ private void hit(Char ch, int damage) { } affected.add(ch); - ch.damage(Level.water[ch.pos] && !ch.flying ? (int) (damage * 2) + ch.damage(Level.water[ch.pos] && !ch.flying ? damage * 2 : damage, this); ch.sprite.centerEmitter().burst(SparkParticle.FACTORY, 3); diff --git a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentShock2.java b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentShock2.java index 468adea0..93911e85 100644 --- a/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentShock2.java +++ b/java/com/hmdzl/spspd/items/weapon/enchantments/EnchantmentShock2.java @@ -50,14 +50,16 @@ public boolean proc(Weapon weapon, Char attacker, Char defender, int damage) { // lvl 1 - 40% // lvl 2 - 50% FourClover.FourCloverBless fcb = attacker.buff(FourClover.FourCloverBless.class); - int level = Math.max(0, weapon.level); - - if (Random.Int(level + 15) >= 15 || (fcb != null && Random.Int(level + 15) >= 10)) { - Buff.prolong(defender, Shocked.class,2f); - return true; - } else { - return false; + int level = Math.min(20, attacker.HT/10); + int maxdmg = level + weapon.level; + defender.damage((int)(Random.Int(level,maxdmg)*0.25), this); + if(fcb != null && Random.Int(2) == 1){ + defender.damage((int)(Random.Int(level,maxdmg)*0.50), this); + } + if (Random.Int(4) == 1) { + Buff.prolong(defender, Shocked.class,3f); } + return true; } @Override public Glowing glowing() { diff --git a/java/com/hmdzl/spspd/items/weapon/enchantments/JupitersHorror.java b/java/com/hmdzl/spspd/items/weapon/enchantments/JupitersHorror.java index 7d73d798..a54e49c9 100644 --- a/java/com/hmdzl/spspd/items/weapon/enchantments/JupitersHorror.java +++ b/java/com/hmdzl/spspd/items/weapon/enchantments/JupitersHorror.java @@ -53,7 +53,7 @@ public boolean proc(Weapon weapon, Char attacker, Char defender, int damage) { if (Random.Int(level + 5) >= 4) { if (defender == Dungeon.hero) { - Buff.affect(defender, Vertigo.class, Vertigo.duration(defender)); + Buff.affect(defender, Vertigo.class,10f); } else { Buff.affect(defender, Terror.class, Terror.DURATION).object = attacker .id(); diff --git a/java/com/hmdzl/spspd/items/weapon/enchantments/NeptuneShock.java b/java/com/hmdzl/spspd/items/weapon/enchantments/NeptuneShock.java index 5133db70..bc10f4b4 100644 --- a/java/com/hmdzl/spspd/items/weapon/enchantments/NeptuneShock.java +++ b/java/com/hmdzl/spspd/items/weapon/enchantments/NeptuneShock.java @@ -87,7 +87,7 @@ private void hit(Char ch, int damage) { } affected.add(ch); - ch.damage(Level.water[ch.pos] && !ch.flying ? (int) (damage * 2) + ch.damage(Level.water[ch.pos] && !ch.flying ? damage * 2 : damage, this); ch.sprite.centerEmitter().burst(SparkParticle.FACTORY, 3); diff --git a/java/com/hmdzl/spspd/items/weapon/guns/GunWeapon.java b/java/com/hmdzl/spspd/items/weapon/guns/GunWeapon.java index bc08730f..54d56ebe 100644 --- a/java/com/hmdzl/spspd/items/weapon/guns/GunWeapon.java +++ b/java/com/hmdzl/spspd/items/weapon/guns/GunWeapon.java @@ -19,7 +19,7 @@ import com.hmdzl.spspd.items.weapon.missiles.MissileWeapon; import com.hmdzl.spspd.items.weapon.spammo.SpAmmo; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.CharSprite; @@ -93,7 +93,7 @@ private int min() { } private int max() { - return (int) (tier * tier - tier + 8); + return tier * tier - tier + 8; } public int typicalSTR() { @@ -102,7 +102,7 @@ public int typicalSTR() { public Item upgrade() { MIN += 2; - MAX += 2 + tier/2; + MAX += 3 + tier/2; maxammo += 10; return super.upgrade(); @@ -315,6 +315,10 @@ public class NormalAmmo extends MissileWeapon { image = ItemSpriteSheet.AMMO; STR = Math.max(typicalSTR(),Dungeon.hero.STR); ACU = 1.3f; + + DLY = (Dungeon.hero.subClass == HeroSubClass.AGENT && Dungeon.hero.justMoved) ? + 0.1f : 1f; + } public int damageRoll(Hero owner) { diff --git a/java/com/hmdzl/spspd/items/weapon/guns/ToyGun.java b/java/com/hmdzl/spspd/items/weapon/guns/ToyGun.java index c56e1538..835d2a72 100644 --- a/java/com/hmdzl/spspd/items/weapon/guns/ToyGun.java +++ b/java/com/hmdzl/spspd/items/weapon/guns/ToyGun.java @@ -33,7 +33,7 @@ import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Bundle; import com.watabou.utils.Random; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import java.util.ArrayList; diff --git a/java/com/hmdzl/spspd/items/weapon/melee/AssassinsBlade.java b/java/com/hmdzl/spspd/items/weapon/melee/AssassinsBlade.java index a28d3cce..8885bada 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/AssassinsBlade.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/AssassinsBlade.java @@ -24,7 +24,7 @@ import com.watabou.utils.Random; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class AssassinsBlade extends MeleeWeapon { diff --git a/java/com/hmdzl/spspd/items/weapon/melee/BattleAxe.java b/java/com/hmdzl/spspd/items/weapon/melee/BattleAxe.java index d100bdc1..61798c03 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/BattleAxe.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/BattleAxe.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/items/weapon/melee/Club.java b/java/com/hmdzl/spspd/items/weapon/melee/Club.java index e6e0fba1..34bebf7c 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/Club.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/Club.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.actors.buffs.Paralysis; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class Club extends MeleeWeapon { diff --git a/java/com/hmdzl/spspd/items/weapon/melee/Dagger.java b/java/com/hmdzl/spspd/items/weapon/melee/Dagger.java index 8058b708..ee95c2c1 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/Dagger.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/Dagger.java @@ -19,7 +19,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.actors.Char; diff --git a/java/com/hmdzl/spspd/items/weapon/melee/Dualknive.java b/java/com/hmdzl/spspd/items/weapon/melee/Dualknive.java index 8eca20b7..a946dd4f 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/Dualknive.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/Dualknive.java @@ -19,7 +19,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.actors.Char; @@ -53,7 +53,7 @@ public Item upgrade(boolean enchant) { RCH++; } - MIN+=2; + MIN+=1; MAX+=1; return super.upgrade(enchant); diff --git a/java/com/hmdzl/spspd/items/weapon/melee/FightGloves.java b/java/com/hmdzl/spspd/items/weapon/melee/FightGloves.java index de17b544..41c19687 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/FightGloves.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/FightGloves.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.actors.buffs.Paralysis; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; diff --git a/java/com/hmdzl/spspd/items/weapon/melee/Flute.java b/java/com/hmdzl/spspd/items/weapon/melee/Flute.java index e2b04bfa..bc79e453 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/Flute.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/Flute.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.KindOfWeapon; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.actors.Char; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/items/weapon/melee/Glaive.java b/java/com/hmdzl/spspd/items/weapon/melee/Glaive.java index e86e991b..69086b0c 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/Glaive.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/Glaive.java @@ -19,7 +19,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.actors.Char; diff --git a/java/com/hmdzl/spspd/items/weapon/melee/Gsword.java b/java/com/hmdzl/spspd/items/weapon/melee/Gsword.java index 89aabc14..44f012e7 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/Gsword.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/Gsword.java @@ -19,7 +19,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/weapon/melee/Halberd.java b/java/com/hmdzl/spspd/items/weapon/melee/Halberd.java index 5c01e290..6afc8273 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/Halberd.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/Halberd.java @@ -26,7 +26,7 @@ import com.watabou.utils.Random; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class Halberd extends MeleeWeapon { diff --git a/java/com/hmdzl/spspd/items/weapon/melee/Handaxe.java b/java/com/hmdzl/spspd/items/weapon/melee/Handaxe.java index 3f705d58..9321b0b1 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/Handaxe.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/Handaxe.java @@ -26,7 +26,7 @@ import com.watabou.utils.Random; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class Handaxe extends MeleeWeapon { diff --git a/java/com/hmdzl/spspd/items/weapon/melee/Harp.java b/java/com/hmdzl/spspd/items/weapon/melee/Harp.java index 7465a512..bec45d74 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/Harp.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/Harp.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.utils.GLog; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class Harp extends MeleeWeapon { @@ -42,7 +42,8 @@ public Harp() { @Override public Item upgrade(boolean enchant) { - MIN+=4; + MIN+=3; + MAX+=1; return super.upgrade(enchant); } diff --git a/java/com/hmdzl/spspd/items/weapon/melee/HolyWater.java b/java/com/hmdzl/spspd/items/weapon/melee/HolyWater.java index 329561df..39edda01 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/HolyWater.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/HolyWater.java @@ -25,7 +25,7 @@ import com.watabou.utils.Bundle; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class HolyWater extends MeleeWeapon { diff --git a/java/com/hmdzl/spspd/items/weapon/melee/Knuckles.java b/java/com/hmdzl/spspd/items/weapon/melee/Knuckles.java index cedeeb30..c334ea5d 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/Knuckles.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/Knuckles.java @@ -26,7 +26,7 @@ import com.watabou.utils.Random; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class Knuckles extends MeleeWeapon { diff --git a/java/com/hmdzl/spspd/items/weapon/melee/Lance.java b/java/com/hmdzl/spspd/items/weapon/melee/Lance.java index f54c22a8..a71d4a32 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/Lance.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/Lance.java @@ -24,7 +24,7 @@ import com.watabou.utils.Random; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class Lance extends MeleeWeapon { diff --git a/java/com/hmdzl/spspd/items/weapon/melee/Mace.java b/java/com/hmdzl/spspd/items/weapon/melee/Mace.java index a31018e0..c57086ee 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/Mace.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/Mace.java @@ -25,7 +25,7 @@ import com.watabou.utils.Bundle; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class Mace extends MeleeWeapon { diff --git a/java/com/hmdzl/spspd/items/weapon/melee/MageBook.java b/java/com/hmdzl/spspd/items/weapon/melee/MageBook.java index 8c48df61..e2128a5c 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/MageBook.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/MageBook.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.utils.GLog; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class MageBook extends MeleeWeapon { diff --git a/java/com/hmdzl/spspd/items/weapon/melee/MeleeWeapon.java b/java/com/hmdzl/spspd/items/weapon/melee/MeleeWeapon.java index f1104871..4798ef89 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/MeleeWeapon.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/MeleeWeapon.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.weapon.Weapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; @@ -72,7 +72,7 @@ public Item upgrade() { public Item upgrade(boolean enchant) { MIN++; - MAX += tier; + MAX += 1 + tier/2; durable += 10; return super.upgrade(enchant); diff --git a/java/com/hmdzl/spspd/items/weapon/melee/Nunchakus.java b/java/com/hmdzl/spspd/items/weapon/melee/Nunchakus.java index ef5ff36d..112950e8 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/Nunchakus.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/Nunchakus.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class Nunchakus extends MeleeWeapon { @@ -46,7 +46,7 @@ public Item upgrade(boolean enchant) { DLY-=0.05f; } - MIN+=3; + MIN+=2; MAX+=1; return super.upgrade(enchant); diff --git a/java/com/hmdzl/spspd/items/weapon/melee/PrayerWheel.java b/java/com/hmdzl/spspd/items/weapon/melee/PrayerWheel.java index 1fa93d21..afd2709d 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/PrayerWheel.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/PrayerWheel.java @@ -25,7 +25,7 @@ import com.watabou.utils.Bundle; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class PrayerWheel extends MeleeWeapon { diff --git a/java/com/hmdzl/spspd/items/weapon/melee/Rapier.java b/java/com/hmdzl/spspd/items/weapon/melee/Rapier.java index 06dcc796..3512ab43 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/Rapier.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/Rapier.java @@ -29,7 +29,7 @@ import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Random; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class Rapier extends MeleeWeapon { diff --git a/java/com/hmdzl/spspd/items/weapon/melee/Scimitar.java b/java/com/hmdzl/spspd/items/weapon/melee/Scimitar.java index 844a2c84..778dfbeb 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/Scimitar.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/Scimitar.java @@ -27,7 +27,7 @@ import com.watabou.utils.Random; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class Scimitar extends MeleeWeapon { diff --git a/java/com/hmdzl/spspd/items/weapon/melee/ShortSword.java b/java/com/hmdzl/spspd/items/weapon/melee/ShortSword.java index e5d20a2f..ca876e08 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/ShortSword.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/ShortSword.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Bleeding; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class ShortSword extends MeleeWeapon { diff --git a/java/com/hmdzl/spspd/items/weapon/melee/Spear.java b/java/com/hmdzl/spspd/items/weapon/melee/Spear.java index cee84dac..158d001d 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/Spear.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/Spear.java @@ -26,7 +26,7 @@ import com.watabou.utils.Random; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class Spear extends MeleeWeapon { diff --git a/java/com/hmdzl/spspd/items/weapon/melee/StoneCross.java b/java/com/hmdzl/spspd/items/weapon/melee/StoneCross.java index 85d8ebab..74865a17 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/StoneCross.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/StoneCross.java @@ -25,7 +25,7 @@ import com.watabou.utils.Bundle; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class StoneCross extends MeleeWeapon { diff --git a/java/com/hmdzl/spspd/items/weapon/melee/Triangolo.java b/java/com/hmdzl/spspd/items/weapon/melee/Triangolo.java index c80d34f6..ebcd8950 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/Triangolo.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/Triangolo.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.utils.GLog; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class Triangolo extends MeleeWeapon { diff --git a/java/com/hmdzl/spspd/items/weapon/melee/TrickSand.java b/java/com/hmdzl/spspd/items/weapon/melee/TrickSand.java new file mode 100644 index 00000000..380bc65d --- /dev/null +++ b/java/com/hmdzl/spspd/items/weapon/melee/TrickSand.java @@ -0,0 +1,59 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.items.weapon.melee; + +import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.Silent; +import com.hmdzl.spspd.items.Item; +import com.hmdzl.spspd.sprites.ItemSpriteSheet; + +public class TrickSand extends MeleeWeapon { + + + { + //name = "TrickSand"; + image = ItemSpriteSheet.TRICK_SAND; + } + + public TrickSand() { + super(1, 1f, 1f, 2); + MIN = 1; + MAX = 10; + } + + public Item upgrade(boolean enchant) { + + MIN+=1; + MAX+=1; + super.upgrade(enchant); + return this; + } + + @Override + public void proc(Char attacker, Char defender, int damage) { + + if (defender.buff(Silent.class) != null) { + damage = (int) (damage * 1.5); + } else Buff.affect(defender,Silent.class,6f); + if (enchantment != null) { + enchantment.proc(this, attacker, defender, damage); + } + } + +} diff --git a/java/com/hmdzl/spspd/items/weapon/melee/Trumpet.java b/java/com/hmdzl/spspd/items/weapon/melee/Trumpet.java index 003eb485..b9629c92 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/Trumpet.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/Trumpet.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.actors.Char; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/items/weapon/melee/WarHammer.java b/java/com/hmdzl/spspd/items/weapon/melee/WarHammer.java index ce7575c7..e09a83eb 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/WarHammer.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/WarHammer.java @@ -17,7 +17,7 @@ */ package com.hmdzl.spspd.items.weapon.melee; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.actors.Char; diff --git a/java/com/hmdzl/spspd/items/weapon/melee/Wardurm.java b/java/com/hmdzl/spspd/items/weapon/melee/Wardrum.java similarity index 93% rename from java/com/hmdzl/spspd/items/weapon/melee/Wardurm.java rename to java/com/hmdzl/spspd/items/weapon/melee/Wardrum.java index d988b143..709551a3 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/Wardurm.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/Wardrum.java @@ -24,21 +24,21 @@ import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.buffs.Terror; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.watabou.utils.Random; import com.hmdzl.spspd.utils.GLog; -public class Wardurm extends MeleeWeapon { +public class Wardrum extends MeleeWeapon { { - //name = "Wardurm"; + //name = "Wardrum"; image = ItemSpriteSheet.WARDURM; } - public Wardurm() { + public Wardrum() { super(3, 1f, 1f, 2); } diff --git a/java/com/hmdzl/spspd/items/weapon/melee/Whip.java b/java/com/hmdzl/spspd/items/weapon/melee/Whip.java index e479feb9..30925137 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/Whip.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/Whip.java @@ -17,7 +17,7 @@ */ package com.hmdzl.spspd.items.weapon.melee; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/weapon/melee/WoodenStaff.java b/java/com/hmdzl/spspd/items/weapon/melee/WoodenStaff.java index 1a2cedd6..3a59ded7 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/WoodenStaff.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/WoodenStaff.java @@ -25,7 +25,7 @@ import com.watabou.utils.Bundle; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class WoodenStaff extends MeleeWeapon { diff --git a/java/com/hmdzl/spspd/items/weapon/melee/block/GoblinShield.java b/java/com/hmdzl/spspd/items/weapon/melee/block/GoblinShield.java index 58eb5d71..aaa4be1e 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/block/GoblinShield.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/block/GoblinShield.java @@ -17,10 +17,8 @@ */ package com.hmdzl.spspd.items.weapon.melee.block; -import java.util.ArrayList; - import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.actors.Actor; +import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Blob; import com.hmdzl.spspd.actors.blobs.ConfusionGas; import com.hmdzl.spspd.actors.blobs.ParalyticGas; @@ -28,39 +26,23 @@ import com.hmdzl.spspd.actors.blobs.ToxicGas; import com.hmdzl.spspd.actors.buffs.Amok; import com.hmdzl.spspd.actors.buffs.Blindness; +import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Burning; -import com.hmdzl.spspd.actors.buffs.Cripple; import com.hmdzl.spspd.actors.buffs.Drowsy; +import com.hmdzl.spspd.actors.buffs.EnergyArmor; import com.hmdzl.spspd.actors.buffs.Frost; -import com.hmdzl.spspd.actors.buffs.MirrorShield; import com.hmdzl.spspd.actors.buffs.Paralysis; import com.hmdzl.spspd.actors.buffs.Recharging; -import com.hmdzl.spspd.actors.buffs.ShieldArmor; import com.hmdzl.spspd.actors.buffs.Terror; -import com.hmdzl.spspd.actors.buffs.Vertigo; -import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.effects.particles.PurpleParticle; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.Item; -import com.hmdzl.spspd.items.wands.Wand; import com.hmdzl.spspd.items.weapon.melee.MeleeWeapon; -import com.hmdzl.spspd.items.weapon.missiles.Boomerang; -import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.plants.Plant; -import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.sprites.MissileSprite; -import com.hmdzl.spspd.ui.QuickSlotButton; -import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Bundle; -import com.watabou.utils.Callback; import com.watabou.utils.Random; -import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Bleeding; -import com.hmdzl.spspd.messages.Messages; public class GoblinShield extends MeleeWeapon { @@ -101,8 +83,8 @@ public void proc(Char attacker, Char defender, int damage) { int DMG = damage; - if (attacker.buff(ShieldArmor.class) == null){ - Buff.affect(attacker, ShieldArmor.class).level((int)(attacker.HT/8)); + if (attacker.buff(EnergyArmor.class) == null){ + Buff.affect(attacker, EnergyArmor.class).level(attacker.HT/8); } charge ++; diff --git a/java/com/hmdzl/spspd/items/weapon/melee/block/SpKnuckles.java b/java/com/hmdzl/spspd/items/weapon/melee/block/SpKnuckles.java index e32039e9..aac3249b 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/block/SpKnuckles.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/block/SpKnuckles.java @@ -29,7 +29,7 @@ import com.watabou.utils.Random; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class SpKnuckles extends MeleeWeapon { @@ -63,7 +63,7 @@ public void proc(Char attacker, Char defender, int damage) { } if (attacker.buff(ShieldArmor.class) == null){ - Buff.affect(attacker, ShieldArmor.class).level((int)(attacker.HT/10)); + Buff.affect(attacker, ShieldArmor.class).level(attacker.HT/10); } diff --git a/java/com/hmdzl/spspd/items/weapon/melee/block/TenguSword.java b/java/com/hmdzl/spspd/items/weapon/melee/block/TenguSword.java index c6efd98b..b3026c97 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/block/TenguSword.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/block/TenguSword.java @@ -47,7 +47,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Bleeding; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class TenguSword extends MeleeWeapon { diff --git a/java/com/hmdzl/spspd/items/weapon/melee/relic/NeptunusTrident.java b/java/com/hmdzl/spspd/items/weapon/melee/relic/NeptunusTrident.java index 9be42546..ac453333 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/relic/NeptunusTrident.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/relic/NeptunusTrident.java @@ -17,8 +17,6 @@ */ package com.hmdzl.spspd.items.weapon.melee.relic; -import java.util.ArrayList; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; @@ -31,6 +29,8 @@ import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.ui.BuffIndicator; +import java.util.ArrayList; + public class NeptunusTrident extends RelicMeleeWeapon { public NeptunusTrident() { @@ -89,7 +89,7 @@ private void flood(int distance, Hero hero) { Char ch = Actor.findChar(n); if (ch != null && ch != hero) { - Buff.affect(ch, Slow.class, Slow.duration(ch) / 3 + level); + Buff.affect(ch, Slow.class, level/10); } Dungeon.level.map[n] = t; diff --git a/java/com/hmdzl/spspd/items/weapon/melee/relic/RelicMeleeWeapon.java b/java/com/hmdzl/spspd/items/weapon/melee/relic/RelicMeleeWeapon.java index 457e78a7..aed653bd 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/relic/RelicMeleeWeapon.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/relic/RelicMeleeWeapon.java @@ -24,7 +24,7 @@ import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.weapon.Weapon; import com.hmdzl.spspd.items.weapon.melee.MeleeWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Bundle; @@ -187,7 +187,7 @@ public String info() { if (levelKnown) { info += "\n\n" + Messages.get(MeleeWeapon.class, "stats_known", tier, MIN, MAX, STR); info += "\n\n" + Messages.get(MeleeWeapon.class, "stats_known2", ACU, DLY, RCH); -; if (Dungeon.hero.STR() > typicalSTR()){ + if (Dungeon.hero.STR() > typicalSTR()){ info += " " + Messages.get(MeleeWeapon.class, "excess_str", Dungeon.hero.STR() - typicalSTR()); } } else { diff --git a/java/com/hmdzl/spspd/items/weapon/melee/special/Brick.java b/java/com/hmdzl/spspd/items/weapon/melee/special/Brick.java index 28604fa8..2525df71 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/special/Brick.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/special/Brick.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.KindOfWeapon; import com.hmdzl.spspd.items.weapon.melee.MeleeWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; diff --git a/java/com/hmdzl/spspd/items/weapon/melee/special/DemonBlade.java b/java/com/hmdzl/spspd/items/weapon/melee/special/DemonBlade.java index a63726a6..158fe0c7 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/special/DemonBlade.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/special/DemonBlade.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.buffs.DBurning; import com.hmdzl.spspd.items.KindOfWeapon; import com.hmdzl.spspd.items.weapon.melee.MeleeWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.actors.Char; diff --git a/java/com/hmdzl/spspd/items/weapon/melee/special/DiamondPickaxe.java b/java/com/hmdzl/spspd/items/weapon/melee/special/DiamondPickaxe.java index 3ef22af6..7272e05e 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/special/DiamondPickaxe.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/special/DiamondPickaxe.java @@ -17,10 +17,7 @@ */ package com.hmdzl.spspd.items.weapon.melee.special; -import java.util.ArrayList; - import com.hmdzl.spspd.Assets; -import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Hunger; @@ -28,11 +25,9 @@ import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.effects.particles.ShadowParticle; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.Gold; import com.hmdzl.spspd.items.Item; -import com.hmdzl.spspd.items.misc.Shovel; import com.hmdzl.spspd.items.weapon.melee.MeleeWeapon; import com.hmdzl.spspd.items.weapon.missiles.buildblock.BookBlock; import com.hmdzl.spspd.items.weapon.missiles.buildblock.DoorBlock; @@ -41,7 +36,7 @@ import com.hmdzl.spspd.items.weapon.missiles.buildblock.WoodenBlock; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.ui.BuffIndicator; @@ -50,6 +45,8 @@ import com.watabou.utils.Callback; import com.watabou.utils.Random; +import java.util.ArrayList; + public class DiamondPickaxe extends MeleeWeapon { public static final String AC_MINE = "MINE"; @@ -196,6 +193,34 @@ public void call() { } }); + return; + } else if (Dungeon.level.map[pos] == Terrain.GLASS_WALL && Level.insideMap(pos)) { + + hero.spend(TIME_TO_MINE); + hero.busy(); + + hero.sprite.attack(pos, new Callback() { + + @Override + public void call() { + + CellEmitter.center(pos).burst( + Speck.factory(Speck.STAR), 7); + Sample.INSTANCE.play(Assets.SND_EVOKE); + + Level.set(pos, Terrain.EMBERS); + GameScene.updateMap(pos); + + Hunger hunger = hero.buff(Hunger.class); + if (hunger != null && !hunger.isStarving()) { + hunger.satisfy(-10); + BuffIndicator.refreshHero(); + } + + hero.onOperateComplete(); + } + }); + return; } else if (Dungeon.level.map[pos] == Terrain.BARRICADE && Level.insideMap(pos)) { @@ -230,6 +255,40 @@ public void call() { } }); + return; + } else if(Dungeon.level.map[pos] == Terrain.BARRICADE && Level.insideMap(pos)) { + + hero.spend(TIME_TO_MINE); + hero.busy(); + + hero.sprite.attack(pos, new Callback() { + + @Override + public void call() { + + CellEmitter.center(pos).burst( + Speck.factory(Speck.STAR), 7); + Sample.INSTANCE.play(Assets.SND_EVOKE); + + Level.set(pos, Terrain.EMBERS); + GameScene.updateMap(pos); + + WoodenBlock wooden = new WoodenBlock(); + + if (Random.Int(60)==1){ + Dungeon.level.drop(Generator.random(Generator.Category.MUSHROOM), hero.pos).sprite.drop(); + } else Dungeon.level.drop(wooden, hero.pos).sprite.drop(); + + Hunger hunger = hero.buff(Hunger.class); + if (hunger != null && !hunger.isStarving()) { + hunger.satisfy(-10); + BuffIndicator.refreshHero(); + } + + hero.onOperateComplete(); + } + }); + return; } else if (Dungeon.level.map[pos] == Terrain.STATUE && Level.insideMap(pos)) { @@ -286,12 +345,8 @@ public Item upgrade(boolean enchant) { @Override public void proc(Char attacker, Char defender, int damage) { - if (Random.Int(10) < 1 && !(defender.properties().contains(Char.Property.BOSS)) && !(defender.properties().contains(Char.Property.MINIBOSS))) { - defender.damage(Random.Int(defender.HP/4, defender.HP/2), this); - defender.sprite.emitter().burst(ShadowParticle.UP, 5); - if (!defender.isAlive() && attacker instanceof Hero) { - Badges.validateGrimWeapon(); - } + if (Random.Int(10) < 1 && defender.isAlive() ) { + defender.damage(damage, attacker); } if (enchantment != null) { enchantment.proc(this, attacker, defender, damage); diff --git a/java/com/hmdzl/spspd/items/weapon/melee/special/DragonBoat.java b/java/com/hmdzl/spspd/items/weapon/melee/special/DragonBoat.java index 79f499da..6c638e85 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/special/DragonBoat.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/special/DragonBoat.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.KindOfWeapon; import com.hmdzl.spspd.items.weapon.melee.MeleeWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; diff --git a/java/com/hmdzl/spspd/items/weapon/melee/special/EleKatana.java b/java/com/hmdzl/spspd/items/weapon/melee/special/EleKatana.java new file mode 100644 index 00000000..dd2be2ca --- /dev/null +++ b/java/com/hmdzl/spspd/items/weapon/melee/special/EleKatana.java @@ -0,0 +1,226 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.items.weapon.melee.special; + +import com.hmdzl.spspd.Assets; +import com.hmdzl.spspd.DungeonTilemap; +import com.hmdzl.spspd.actors.Actor; +import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.Invisibility; +import com.hmdzl.spspd.actors.buffs.Shocked; +import com.hmdzl.spspd.actors.buffs.Shocked2; +import com.hmdzl.spspd.actors.buffs.Silent; +import com.hmdzl.spspd.actors.hero.Hero; +import com.hmdzl.spspd.effects.Beam; +import com.hmdzl.spspd.effects.particles.PurpleParticle; +import com.hmdzl.spspd.items.Item; +import com.hmdzl.spspd.items.wands.Wand; +import com.hmdzl.spspd.items.weapon.Weapon; +import com.hmdzl.spspd.items.weapon.melee.MeleeWeapon; +import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; +import com.hmdzl.spspd.scenes.CellSelector; +import com.hmdzl.spspd.scenes.GameScene; +import com.hmdzl.spspd.sprites.ItemSpriteSheet; +import com.hmdzl.spspd.utils.GLog; +import com.watabou.noosa.audio.Sample; +import com.watabou.utils.Bundle; +import com.watabou.utils.Callback; +import com.watabou.utils.Random; + +import java.util.ArrayList; + +public class EleKatana extends MeleeWeapon { + + public static final String AC_ZAP = "ZAP"; + private static final float TIME_TO_ZAP = 1f; + protected int collisionProperties =(Ballistica.STOP_TARGET | Ballistica.STOP_TERRAIN); + + { + //name = "EleKatana"; + image = ItemSpriteSheet.ELEKATANA; + defaultAction = AC_ZAP; + } + + public int charge = 0; + private static final String CHARGE = "charge"; + + @Override + public void storeInBundle(Bundle bundle) { + super.storeInBundle(bundle); + bundle.put(CHARGE, charge); + } + @Override + public void restoreFromBundle(Bundle bundle) { + super.restoreFromBundle(bundle); + charge = bundle.getInt(CHARGE); + } + + public EleKatana() { + super(2, 2f, 1f, 1); + MIN = 5; + MAX = 20; + unique = true; + reinforced = true; + cursed = true; + } + + @Override + public Item uncurse(){ + //cursed=false; + return this; + } + + @Override + public ArrayList actions(Hero hero) { + ArrayList actions = super.actions(hero); + actions.add(AC_ZAP); + return actions; + } + + @Override + public void execute(final Hero hero, String action) { + if (action.equals( AC_ZAP )) { + if (hero.buff(Silent.class) != null) { + GLog.w(Messages.get(EleKatana.class, "silent")); + } else{ + curUser = hero; + curItem = this; + GameScene.selectCell( zapper ); + } + + } else { + + super.execute( hero, action ); + + } + + super.execute(hero, action); + } + + public Item upgrade(boolean enchant) { + + MIN+=1; + MAX+=1; + super.upgrade(enchant); + return this; + } + + @Override + public void proc(Char attacker, Char defender, int damage) { + + int DMG = damage; + defender.damage(Random.Int(DMG / 4, DMG / 2), this); + charge++; + if (defender.buff(Shocked2.class) != null) { + damage = (int) (damage * 1.5); + } + Buff.affect(defender,Shocked2.class).level(2); + if (enchantment != null) { + enchantment.proc(this, attacker, defender, damage); + } + } + + @Override + public String desc() { + String info = super.desc(); + + info += "\n\n" + Messages.get(Weapon.class, "charge",charge,10); + return info; + } + + protected static CellSelector.Listener zapper = new CellSelector.Listener() { + + @Override + public void onSelect( Integer target ) { + + if (target != null) { + + final EleKatana curWand = (EleKatana) EleKatana.curItem; + + final Ballistica shot = new Ballistica( curUser.pos, target, curWand.collisionProperties); + int cell = shot.collisionPos; + + if (target == curUser.pos || cell == curUser.pos) { + GLog.i( Messages.get(Wand.class, "self_target") ); + return; + } + + curUser.sprite.zap(cell); + + if (curWand.charge >= 10) { + + curUser.busy(); + + curWand.fx(shot, new Callback() { + @Override + public void call() { + curWand.onZap(shot); + curWand.wandUsed(); + curUser.pos = shot.collisionPos; + curUser.sprite.place(curUser.pos); + //curUser.sprite.visible = Dungeon.visible[shot.collisionPos]; + } + }); + + Invisibility.dispel(); + + } else { + + GLog.w( Messages.get(EleKatana.class, "no") ); + + } + + } + } + + @Override + public String prompt() { + return Messages.get(EleKatana.class, "prompt"); + } + }; + + protected void onZap(Ballistica beam) { + ArrayList chars = new ArrayList<>(); + for (int c : beam.path) { + Char ch; + if ((ch = Actor.findChar( c )) != null && ch != curUser) { + chars.add( ch ); + } + } + for (Char ch : chars) { + Buff.affect(ch,Shocked.class,5f); + Buff.affect(ch,Shocked2.class).level(5); + ch.sprite.centerEmitter().burst( PurpleParticle.BURST, Random.IntRange( 1, 2 ) ); + ch.sprite.flash(); + } + } + protected void fx(Ballistica beam, Callback callback) { + curUser.sprite.parent.add( + new Beam.LightRay(curUser.sprite.center(), DungeonTilemap.tileCenterToWorld(beam.collisionPos))); + callback.call(); + Sample.INSTANCE.play(Assets.SND_ZAP); + } + + protected void wandUsed() { + charge -= 10; + updateQuickslot(); + curUser.spendAndNext(TIME_TO_ZAP); + } +} diff --git a/java/com/hmdzl/spspd/items/weapon/melee/special/ErrorW.java b/java/com/hmdzl/spspd/items/weapon/melee/special/ErrorW.java index 260749fb..4ce02422 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/special/ErrorW.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/special/ErrorW.java @@ -90,7 +90,7 @@ public void proc(Char attacker, Char defender, int damage) { Buff.affect(defender, Bleeding.class).set(5); break; case 3 : - Buff.affect(defender, Vertigo.class, Vertigo.duration(defender)); + Buff.affect(defender, Vertigo.class,5f); Buff.affect(defender, Terror.class, Terror.DURATION).object = attacker.id(); break; case 4 : @@ -101,7 +101,7 @@ public void proc(Char attacker, Char defender, int damage) { break; case 6 : if (attacker.HP < attacker.HT){ - attacker.HP += (int)((attacker.HT)/10); + attacker.HP += (attacker.HT)/10; attacker.sprite.emitter().start(Speck.factory(Speck.HEALING), 0.4f,1);} break; case 7 : diff --git a/java/com/hmdzl/spspd/items/weapon/melee/special/Goei.java b/java/com/hmdzl/spspd/items/weapon/melee/special/Goei.java index c6c909dc..6187f247 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/special/Goei.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/special/Goei.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.weapon.Weapon; import com.hmdzl.spspd.items.weapon.melee.MeleeWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; diff --git a/java/com/hmdzl/spspd/items/weapon/melee/special/Handcannon.java b/java/com/hmdzl/spspd/items/weapon/melee/special/Handcannon.java index 302cff77..71241a1a 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/special/Handcannon.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/special/Handcannon.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.weapon.melee.MeleeWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Bundle; diff --git a/java/com/hmdzl/spspd/items/weapon/melee/special/LinkSword.java b/java/com/hmdzl/spspd/items/weapon/melee/special/LinkSword.java index 4d96543c..ce2a97dc 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/special/LinkSword.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/special/LinkSword.java @@ -47,7 +47,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Bleeding; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class LinkSword extends MeleeWeapon { public Buff passiveBuff; @@ -229,7 +229,7 @@ public void proc(Char attacker, Char defender, int damage) { break; case 5: if (attacker.buff(ShieldArmor.class) == null){ - Buff.affect(attacker, ShieldArmor.class).level((int)(attacker.HT/10)); + Buff.affect(attacker, ShieldArmor.class).level(attacker.HT/10); } break; case 6: @@ -295,7 +295,7 @@ public void call() { if (ch.isAlive() && Random.Int(2) == 0) { Buff.affect(ch, Vertigo.class, 5f); } - ch.damage((int) (ch.HT / 20), this); + ch.damage(ch.HT / 20, this); } } }; diff --git a/java/com/hmdzl/spspd/items/weapon/melee/special/Lollipop.java b/java/com/hmdzl/spspd/items/weapon/melee/special/Lollipop.java index 6778520c..9692285f 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/special/Lollipop.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/special/Lollipop.java @@ -20,10 +20,10 @@ import com.hmdzl.spspd.actors.buffs.Charm; import com.hmdzl.spspd.actors.buffs.Shieldblock; import com.hmdzl.spspd.actors.buffs.Tar; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.items.KindOfWeapon; import com.hmdzl.spspd.items.weapon.melee.MeleeWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; @@ -63,7 +63,7 @@ public void proc(Char attacker, Char defender, int damage) { } if (Random.Int(50) == 1 ){ Buff.prolong(attacker, Shieldblock.class, 5f); - Buff.prolong(attacker, Weakness.class, 20f); + Buff.prolong(attacker, STRdown.class, 20f); attacker.HT -= Math.min(15,attacker.HT-1); Dungeon.hero.belongings.weapon = null; GLog.n(Messages.get(KindOfWeapon.class,"destory")); diff --git a/java/com/hmdzl/spspd/items/weapon/melee/special/RunicBlade.java b/java/com/hmdzl/spspd/items/weapon/melee/special/RunicBlade.java index 6c15cd72..8176805b 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/special/RunicBlade.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/special/RunicBlade.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.items.scrolls.ScrollOfUpgrade; import com.hmdzl.spspd.items.weapon.melee.MeleeWeapon; import com.hmdzl.spspd.items.weapon.missiles.Boomerang; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/weapon/melee/special/SJRBMusic.java b/java/com/hmdzl/spspd/items/weapon/melee/special/SJRBMusic.java index 61856fac..6b40d89c 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/special/SJRBMusic.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/special/SJRBMusic.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.items.weapon.melee.MeleeWeapon; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.mechanics.Ballistica; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.actors.Char; diff --git a/java/com/hmdzl/spspd/items/weapon/melee/special/ShadowEater.java b/java/com/hmdzl/spspd/items/weapon/melee/special/ShadowEater.java index 11d025ca..7ce7a9af 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/special/ShadowEater.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/special/ShadowEater.java @@ -32,7 +32,7 @@ import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.weapon.melee.MeleeWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/items/weapon/melee/special/WraithBreath.java b/java/com/hmdzl/spspd/items/weapon/melee/special/WraithBreath.java index e1448759..5038c18e 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/special/WraithBreath.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/special/WraithBreath.java @@ -39,8 +39,8 @@ public WraithBreath() { @Override public Item upgrade(boolean enchant) { - MAX+= 2; - MIN+= 2; + MAX+= 1; + MIN+= 1; return super.upgrade(enchant); } @@ -48,7 +48,7 @@ public Item upgrade(boolean enchant) { public void proc(Char attacker, Char defender, int damage) { if (Random.Int(100) < 50) { - Buff.affect(defender, Vertigo.class, Vertigo.duration(defender)); + Buff.affect(defender, Vertigo.class, 10f); Buff.affect(defender, Terror.class, Terror.DURATION).object = attacker.id(); } diff --git a/java/com/hmdzl/spspd/items/weapon/melee/zero/EmptyPotion.java b/java/com/hmdzl/spspd/items/weapon/melee/zero/EmptyPotion.java index da157d9c..1271bf24 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/zero/EmptyPotion.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/zero/EmptyPotion.java @@ -27,7 +27,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.utils.GLog; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class EmptyPotion extends MeleeWeapon { diff --git a/java/com/hmdzl/spspd/items/weapon/melee/zero/WoodenHammer.java b/java/com/hmdzl/spspd/items/weapon/melee/zero/WoodenHammer.java index 44becd17..473ad9cb 100644 --- a/java/com/hmdzl/spspd/items/weapon/melee/zero/WoodenHammer.java +++ b/java/com/hmdzl/spspd/items/weapon/melee/zero/WoodenHammer.java @@ -27,7 +27,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.utils.GLog; import com.hmdzl.spspd.items.KindOfWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class WoodenHammer extends MeleeWeapon { diff --git a/java/com/hmdzl/spspd/items/weapon/missiles/Boomerang.java b/java/com/hmdzl/spspd/items/weapon/missiles/Boomerang.java index 9ff6643b..b8ca48be 100644 --- a/java/com/hmdzl/spspd/items/weapon/missiles/Boomerang.java +++ b/java/com/hmdzl/spspd/items/weapon/missiles/Boomerang.java @@ -24,7 +24,7 @@ import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.weapon.guns.GunWeapon; import com.hmdzl.spspd.items.weapon.spammo.SpAmmo; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.sprites.MissileSprite; @@ -165,8 +165,8 @@ public String desc() { } if(reinforced){ - info += "\n\n" + Messages.get(Item.class, "reinforced");; - } + info += "\n\n" + Messages.get(Item.class, "reinforced"); + } return info; } diff --git a/java/com/hmdzl/spspd/items/weapon/missiles/ElfBow.java b/java/com/hmdzl/spspd/items/weapon/missiles/ElfBow.java index 99e96d98..4facc4a7 100644 --- a/java/com/hmdzl/spspd/items/weapon/missiles/ElfBow.java +++ b/java/com/hmdzl/spspd/items/weapon/missiles/ElfBow.java @@ -42,7 +42,7 @@ import com.watabou.utils.Random; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import java.util.ArrayList; diff --git a/java/com/hmdzl/spspd/items/weapon/missiles/EmpBola.java b/java/com/hmdzl/spspd/items/weapon/missiles/EmpBola.java index 7266af1a..294a572f 100644 --- a/java/com/hmdzl/spspd/items/weapon/missiles/EmpBola.java +++ b/java/com/hmdzl/spspd/items/weapon/missiles/EmpBola.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Cripple; -import com.hmdzl.spspd.actors.buffs.ShieldArmor; +import com.hmdzl.spspd.actors.buffs.EnergyArmor; import com.hmdzl.spspd.actors.buffs.Shocked; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.sprites.ItemSpriteSheet; @@ -52,7 +52,7 @@ public void proc(Char attacker, Char defender, int damage) { super.proc(attacker, defender, damage); Buff.prolong(defender, Cripple.class, Cripple.DURATION); Buff.prolong(defender, Shocked.class, 5f); - Buff.detach(defender, ShieldArmor.class); + Buff.detach(defender, EnergyArmor.class); if(defender.properties().contains(Char.Property.MECH)){ defender.damage(defender.HT/3,this); } diff --git a/java/com/hmdzl/spspd/items/weapon/missiles/ForestDart.java b/java/com/hmdzl/spspd/items/weapon/missiles/ForestDart.java index 603c8255..939d829a 100644 --- a/java/com/hmdzl/spspd/items/weapon/missiles/ForestDart.java +++ b/java/com/hmdzl/spspd/items/weapon/missiles/ForestDart.java @@ -18,17 +18,6 @@ package com.hmdzl.spspd.items.weapon.missiles; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.actors.mobs.Assassin; -import com.hmdzl.spspd.actors.mobs.Bat; -import com.hmdzl.spspd.actors.mobs.Brute; -import com.hmdzl.spspd.actors.mobs.Gnoll; -import com.hmdzl.spspd.actors.mobs.GoldThief; -import com.hmdzl.spspd.actors.mobs.Rat; -import com.hmdzl.spspd.actors.mobs.RatBoss; -import com.hmdzl.spspd.actors.mobs.GnollShaman; -import com.hmdzl.spspd.actors.mobs.Fiend; -import com.hmdzl.spspd.actors.mobs.Thief; -import com.hmdzl.spspd.actors.mobs.GnollArcher; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.sprites.ItemSprite.Glowing; import com.hmdzl.spspd.sprites.ItemSpriteSheet; @@ -62,10 +51,10 @@ public void proc(Char attacker, Char defender, int damage) { if ( defender.properties().contains(Char.Property.BOSS) || defender.properties().contains(Char.Property.HUMAN) - //|| defender.properties().contains(Char.Property.GNOLL) || defender.properties().contains(Char.Property.ORC) || defender.properties().contains(Char.Property.BEAST) || defender.properties().contains(Char.Property.PLANT) + || defender.properties().contains(Char.Property.FISHER) ){ defender.damage(Random.Int(damage*5,damage*8), this); } else { diff --git a/java/com/hmdzl/spspd/items/weapon/missiles/HugeShuriken.java b/java/com/hmdzl/spspd/items/weapon/missiles/HugeShuriken.java index 43c16d69..0e34832a 100644 --- a/java/com/hmdzl/spspd/items/weapon/missiles/HugeShuriken.java +++ b/java/com/hmdzl/spspd/items/weapon/missiles/HugeShuriken.java @@ -19,6 +19,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.AttackDown; +import com.hmdzl.spspd.actors.buffs.BeOld; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.sprites.ItemSpriteSheet; @@ -48,6 +49,7 @@ public HugeShuriken(int number) { @Override public void proc(Char attacker, Char defender, int damage) { Buff.affect(defender, AttackDown.class,10f).level(70); + Buff.affect(defender, BeOld.class).set(10f); super.proc(attacker, defender, damage); } @Override diff --git a/java/com/hmdzl/spspd/items/weapon/missiles/ManyKnive.java b/java/com/hmdzl/spspd/items/weapon/missiles/ManyKnive.java index de0010a8..f6ca0b91 100644 --- a/java/com/hmdzl/spspd/items/weapon/missiles/ManyKnive.java +++ b/java/com/hmdzl/spspd/items/weapon/missiles/ManyKnive.java @@ -40,7 +40,7 @@ import com.watabou.utils.Random; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import java.util.ArrayList; diff --git a/java/com/hmdzl/spspd/items/weapon/missiles/MindArrow.java b/java/com/hmdzl/spspd/items/weapon/missiles/MindArrow.java index ba3eaf91..a0d229d1 100644 --- a/java/com/hmdzl/spspd/items/weapon/missiles/MindArrow.java +++ b/java/com/hmdzl/spspd/items/weapon/missiles/MindArrow.java @@ -19,11 +19,10 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.buffs.BeCorrupt; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Shieldblock; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.watabou.utils.Random; public class MindArrow extends MissileWeapon { @@ -52,6 +51,7 @@ public MindArrow(int number) { public void proc(Char attacker, Char defender, int damage) { super.proc(attacker, defender, damage); defender.damage(Dungeon.hero.spp,this); + Buff.affect(defender,BeCorrupt.class).level(Dungeon.hero.spp); } @Override diff --git a/java/com/hmdzl/spspd/items/weapon/missiles/MiniMoai.java b/java/com/hmdzl/spspd/items/weapon/missiles/MiniMoai.java index 05a807a0..679d95d8 100644 --- a/java/com/hmdzl/spspd/items/weapon/missiles/MiniMoai.java +++ b/java/com/hmdzl/spspd/items/weapon/missiles/MiniMoai.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.buffs.Charm; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.Item; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/items/weapon/missiles/MissileWeapon.java b/java/com/hmdzl/spspd/items/weapon/missiles/MissileWeapon.java index 74425a9c..be5d1402 100644 --- a/java/com/hmdzl/spspd/items/weapon/missiles/MissileWeapon.java +++ b/java/com/hmdzl/spspd/items/weapon/missiles/MissileWeapon.java @@ -31,7 +31,7 @@ import com.hmdzl.spspd.items.weapon.Weapon; import com.hmdzl.spspd.items.weapon.guns.GunWeapon; import com.hmdzl.spspd.items.weapon.melee.MeleeWeapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class MissileWeapon extends Weapon { diff --git a/java/com/hmdzl/spspd/items/weapon/missiles/NormalBomb.java b/java/com/hmdzl/spspd/items/weapon/missiles/NormalBomb.java index 033417d9..73d179f4 100644 --- a/java/com/hmdzl/spspd/items/weapon/missiles/NormalBomb.java +++ b/java/com/hmdzl/spspd/items/weapon/missiles/NormalBomb.java @@ -17,10 +17,13 @@ */ package com.hmdzl.spspd.items.weapon.missiles; +import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.buffs.Blindness; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Paralysis; +import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.items.Item; +import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.watabou.utils.Random; @@ -53,7 +56,19 @@ public NormalBomb(int number) { public ItemSprite.Glowing glowing() { return BROWN; } - + + + @Override + protected void onThrow(int cell) { + + for (Mob mob : Dungeon.level.mobs.toArray( new Mob[0] )) { + if (Level.fieldOfView[mob.pos]) { + Buff.affect(mob,Blindness.class,5f); + mob.beckon(cell); + } + } + } + @Override public void proc(Char attacker, Char defender, int damage) { super.proc(attacker, defender, damage); diff --git a/java/com/hmdzl/spspd/items/weapon/missiles/PocketBall.java b/java/com/hmdzl/spspd/items/weapon/missiles/PocketBall.java index 38c36935..8f7bdb91 100644 --- a/java/com/hmdzl/spspd/items/weapon/missiles/PocketBall.java +++ b/java/com/hmdzl/spspd/items/weapon/missiles/PocketBall.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.mobs.pets.PET; import com.hmdzl.spspd.items.PocketBallFull; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.audio.Sample; import com.hmdzl.spspd.Assets; @@ -67,7 +67,7 @@ protected void onThrow( int cell ) { ); Dungeon.level.drop( pbf, cell ).sprite.drop(); ((PET) Actor.findChar(cell)).sprite.killAndErase(); - ((PET) Actor.findChar(cell)).destroy(); + Actor.findChar(cell).destroy(); Dungeon.hero.haspet=false; GLog.n(Messages.get(this, "get_pet")); } else diff --git a/java/com/hmdzl/spspd/items/weapon/missiles/PoisonDart.java b/java/com/hmdzl/spspd/items/weapon/missiles/PoisonDart.java index 03cfbb85..08fafc4f 100644 --- a/java/com/hmdzl/spspd/items/weapon/missiles/PoisonDart.java +++ b/java/com/hmdzl/spspd/items/weapon/missiles/PoisonDart.java @@ -19,7 +19,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.actors.buffs.Paralysis; +import com.hmdzl.spspd.actors.buffs.FrostIce; import com.hmdzl.spspd.actors.buffs.Poison; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.sprites.ItemSpriteSheet; @@ -50,8 +50,8 @@ public PoisonDart(int number) { @Override public void proc(Char attacker, Char defender, int damage) { - Buff.affect(defender, Poison.class).set( - Poison.durationFactor(defender) * (10)); + Buff.affect(defender, Poison.class).set(10); + Buff.affect(defender, FrostIce.class).level(10); super.proc(attacker, defender, damage); } diff --git a/java/com/hmdzl/spspd/items/weapon/missiles/RiceBall.java b/java/com/hmdzl/spspd/items/weapon/missiles/RiceBall.java index 160e327d..3cbbfeee 100644 --- a/java/com/hmdzl/spspd/items/weapon/missiles/RiceBall.java +++ b/java/com/hmdzl/spspd/items/weapon/missiles/RiceBall.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.scrolls.ScrollOfTeleportation; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.utils.GLog; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/items/weapon/missiles/ShootGun.java b/java/com/hmdzl/spspd/items/weapon/missiles/ShootGun.java new file mode 100644 index 00000000..0c4b9c27 --- /dev/null +++ b/java/com/hmdzl/spspd/items/weapon/missiles/ShootGun.java @@ -0,0 +1,314 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.items.weapon.missiles; + +import com.hmdzl.spspd.actors.Actor; +import com.hmdzl.spspd.actors.Char; +import com.hmdzl.spspd.actors.buffs.ArmorBreak; +import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.hero.Hero; +import com.hmdzl.spspd.effects.Splash; +import com.hmdzl.spspd.items.Item; +import com.hmdzl.spspd.items.wands.WandOfFlow; +import com.hmdzl.spspd.items.weapon.Weapon; +import com.hmdzl.spspd.items.weapon.guns.ToyGun; +import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.mechanics.Ballistica; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; +import com.hmdzl.spspd.scenes.CellSelector; +import com.hmdzl.spspd.scenes.GameScene; +import com.hmdzl.spspd.sprites.CharSprite; +import com.hmdzl.spspd.sprites.ItemSpriteSheet; +import com.hmdzl.spspd.utils.GLog; +import com.watabou.utils.Bundle; +import com.watabou.utils.Random; + +import java.util.ArrayList; + +public class ShootGun extends Weapon { + + public static final String AC_SHOOT = "SHOOT"; + public static final String AC_ENDSHOOT = "ENDSHOOT"; + public static final String AC_RELOAD = "RELOAD"; + + public int charge = 0; + public int fullcharge = 3; + + public ShootGun() { + super(); + + STR = 10; + + MIN = 5; + MAX = 10; + + stackable = false; + + unique = true; + + defaultAction = AC_SHOOT; + usesTargeting = true; + reinforced = true; + } + + public Item upgrade() { + MIN += 3; + MAX += 5; + return super.upgrade(); + } + + + { + image = ItemSpriteSheet.SHOOTGUN ; + + defaultAction = AC_SHOOT; + usesTargeting = true; + + + } + + @Override + public ArrayList actions(Hero hero) { + ArrayList actions = super.actions(hero); + //actions.remove(AC_EQUIP); + actions.add(AC_SHOOT); + actions.add(AC_ENDSHOOT); + actions.add(AC_RELOAD); + return actions; + } + + @Override + public void execute(Hero hero, String action) { + super.execute(hero, action); + if (action.equals(AC_SHOOT)) { + if (charge<1){ + charge = fullcharge; + hero.sprite.showStatus(CharSprite.DEFAULT, Messages.get(this, "reloading")); + hero.spendAndNext(1.5f); + } else GameScene.selectCell( shooter ); + } else if (action.equals(AC_ENDSHOOT)) { + if (charge<1){ + charge = fullcharge; + hero.sprite.showStatus(CharSprite.DEFAULT, Messages.get(this, "reloading")); + hero.spendAndNext(1.5f); + } else GameScene.selectCell( shooter2 ); + } else if(action.equals(AC_RELOAD)){ + if (charge == fullcharge){ + GLog.n(Messages.get(ToyGun.class,"full")); + } else { + float reloadtime = (fullcharge - charge)/2; + hero.spendAndNext(reloadtime*1f); + hero.sprite.showStatus(CharSprite.DEFAULT, Messages.get(this, "reloading")); + charge = fullcharge; + + } + } + } + + private static final String CHARGE = "charge"; + + @Override + public void storeInBundle(Bundle bundle) { + super.storeInBundle(bundle); + bundle.put( CHARGE, charge ); + } + + @Override + public void restoreFromBundle(Bundle bundle) { + super.restoreFromBundle(bundle); + charge = bundle.getInt( CHARGE ); + } + + @Override + public int damageRoll(Hero owner) { + return 0; + } + + public int damageRoll2(Hero owner) { + return Random.Int(MAX,MIN); + } + + @Override + public void proc(Char attacker, Char defender, int damage) { + + int oppositeDefender = defender.pos + (defender.pos - attacker.pos); + Ballistica trajectory = new Ballistica(defender.pos, oppositeDefender, Ballistica.MAGIC_BOLT); + WandOfFlow.throwChar(defender, trajectory, 1); + } + + @Override + public String info() { + String info = desc(); + + + if (reinforced) { + info += "\n" + Messages.get(Item.class, "reinforced"); + } + info += "\n\n" + Messages.get(this, "damage",MIN,MAX); + info += "\n\n" + Messages.get(this, "charge",charge,3); + + return info; + } + + @Override + public String status() { + if (levelKnown) { + return charge + "/" + fullcharge; + } else { + return null; + } + } + + private int targetPos; + + @Override + public boolean isUpgradable() { + return true; + } + + public ShootAmmo Ammo(){ + return new ShootAmmo(); + } + + public ShootEndAmmo Ammo2(){ + return new ShootEndAmmo(); + } + + public class ShootAmmo extends MissileWeapon { + + { + image = ItemSpriteSheet.AMMO; + } + + public int damageRoll(Hero owner) { + return ShootGun.this.damageRoll2(owner); + } + + @Override + protected void onThrow( int cell ) { + Char enemy = Actor.findChar( cell ); + if (enemy == null || enemy == curUser) { + parent = null; + Splash.at( cell, 0xCC99FFFF, 1 ); + } else { + if (!curUser.shoot( enemy, this )) { + Splash.at(cell, 0xCC99FFFF, 1); + } + } + } + + @Override + public void proc(Char attacker, Char defender, int damage) { + Buff.affect(defender,ArmorBreak.class, 5f).level(30); + super.proc(attacker, defender, damage); + } + + int flurryCount = -1; + + @Override + public void cast(final Hero user, final int dst) { + final int cell = throwPos( user, dst ); + ShootGun.this.targetPos = cell; + charge--; + super.cast(user, dst); + } + } + + public class ShootEndAmmo extends MissileWeapon { + + { + image = ItemSpriteSheet.COPY_BALL; + ACU = 1000; + } + + public int damageRoll(Hero owner) { + return ShootGun.this.damageRoll2(owner); + } + + @Override + protected void onThrow( int cell ) { + Char enemy = Actor.findChar( cell ); + if (enemy == null || enemy == curUser) { + parent = null; + Splash.at( cell, 0xCC99FFFF, 1 ); + } else { + if (!curUser.shoot( enemy, this )) { + Splash.at(cell, 0xCC99FFFF, 1); + } + } + } + + @Override + public void proc(Char attacker, Char defender, int damage) { + int p = defender.pos; + for (int n : Level.NEIGHBOURS8) { + Char ch = Actor.findChar(n+p); + if (ch != null && ch != defender && ch != attacker && ch.isAlive()) { + + int dr = Random.IntRange( 0, 1 ); + int dmg = Random.Int( MIN, MAX ); + int effectiveDamage = Math.max( dmg - dr, 0 ); + Buff.affect(ch,ArmorBreak.class, 5f).level(30); + ch.damage( effectiveDamage, attacker ); + } + } + if (defender.properties().contains(Char.Property.BOSS) || defender.properties().contains(Char.Property.MINIBOSS)){ + defender.damage(Math.min(defender.HT - defender.HP,defender.HT/6),this); + } else { + defender.damage(Math.min(defender.HT - defender.HP,defender.HT/3),this); + } + super.proc(attacker, defender, damage); + } + + int flurryCount = -1; + + @Override + public void cast(final Hero user, final int dst) { + final int cell = throwPos( user, dst ); + ShootGun.this.targetPos = cell; + charge = 0; + super.cast(user, dst); + } + } + + private CellSelector.Listener shooter = new CellSelector.Listener() { + @Override + public void onSelect( Integer target ) { + if (target != null) { + Ammo().cast(curUser, target); + } + } + @Override + public String prompt() { + return Messages.get(ToyGun.class, "prompt"); + } + }; + private CellSelector.Listener shooter2 = new CellSelector.Listener() { + @Override + public void onSelect( Integer target ) { + if (target != null) { + Ammo2().cast(curUser, target); + } + } + @Override + public String prompt() { + return Messages.get(ToyGun.class, "prompt"); + } + }; + +} \ No newline at end of file diff --git a/java/com/hmdzl/spspd/items/weapon/missiles/TaurcenBow.java b/java/com/hmdzl/spspd/items/weapon/missiles/TaurcenBow.java index 14d9af00..53e0833f 100644 --- a/java/com/hmdzl/spspd/items/weapon/missiles/TaurcenBow.java +++ b/java/com/hmdzl/spspd/items/weapon/missiles/TaurcenBow.java @@ -17,9 +17,12 @@ */ package com.hmdzl.spspd.items.weapon.missiles; +import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; +import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.ArmorBreak; import com.hmdzl.spspd.actors.buffs.AttackUp; +import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Burning; import com.hmdzl.spspd.actors.buffs.MechArmor; import com.hmdzl.spspd.actors.buffs.Ooze; @@ -33,15 +36,12 @@ import com.hmdzl.spspd.items.rings.RingOfSharpshooting; import com.hmdzl.spspd.items.weapon.Weapon; import com.hmdzl.spspd.items.weapon.guns.ToyGun; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.scenes.CellSelector; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.actors.Char; import com.watabou.utils.Bundle; import com.watabou.utils.Random; -import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.messages.Messages; import java.util.ArrayList; @@ -277,6 +277,38 @@ public void proc(Char attacker, Char defender, int damage) { TaurcenBow.charge = 0; } + if (Random.Int(8) == 0) { + if (arrow == Arrow.NONE) { + if (defender.isAlive()) + Buff.affect(defender, ArmorBreak.class, 5f).level(40); + defender.damage(DMG, this); + } + if (arrow == Arrow.FIRE) { + if (defender.isAlive()) + Buff.affect(defender, Burning.class).reignite(defender); + defender.damage(DMG / 2, this); + + } + if (arrow == Arrow.ICE) { + defender.damage(DMG / 2, this); + if (defender.isAlive()) { + Buff.prolong(defender, Wet.class, 5f); + Buff.prolong(defender, Slow.class, 5f); + } + + } + if (arrow == Arrow.POSION) { + defender.damage(DMG / 4, this); + if (defender.isAlive()) Buff.affect(defender, Ooze.class); + + } + if (arrow == Arrow.ELE) { + if (defender.isAlive()) Buff.affect(defender, Shocked.class, 3f); + Buff.affect(attacker, AttackUp.class, 10f).level(30); + defender.damage(DMG / 3, this); + + } + } } if (enchantment != null) { diff --git a/java/com/hmdzl/spspd/items/weapon/missiles/Wave.java b/java/com/hmdzl/spspd/items/weapon/missiles/Wave.java index b10c94c1..57d00421 100644 --- a/java/com/hmdzl/spspd/items/weapon/missiles/Wave.java +++ b/java/com/hmdzl/spspd/items/weapon/missiles/Wave.java @@ -19,8 +19,8 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Amok; -import com.hmdzl.spspd.actors.buffs.Blindness; import com.hmdzl.spspd.actors.buffs.Buff; +import com.hmdzl.spspd.actors.buffs.Charm; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.watabou.utils.Random; @@ -52,7 +52,7 @@ public Wave(int number) { public void proc(Char attacker, Char defender, int damage) { super.proc(attacker, defender, damage); Buff.affect(defender, Amok.class,10f); - Buff.affect(defender, Blindness.class,2f); + Buff.affect(defender, Charm.class,5f).object=attacker.id(); } @Override diff --git a/java/com/hmdzl/spspd/levels/BattleLevel.java b/java/com/hmdzl/spspd/levels/BattleLevel.java index 235370f7..49bd0675 100644 --- a/java/com/hmdzl/spspd/levels/BattleLevel.java +++ b/java/com/hmdzl/spspd/levels/BattleLevel.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.items.Heap; import com.hmdzl.spspd.items.bombs.LightBomb; import com.hmdzl.spspd.levels.painters.Painter; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.watabou.noosa.Scene; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/levels/BossRushLevel.java b/java/com/hmdzl/spspd/levels/BossRushLevel.java index ba80b1a5..aed21328 100644 --- a/java/com/hmdzl/spspd/levels/BossRushLevel.java +++ b/java/com/hmdzl/spspd/levels/BossRushLevel.java @@ -28,7 +28,7 @@ import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.keys.SkeletonKey; import com.hmdzl.spspd.levels.painters.Painter; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.watabou.noosa.Scene; import com.watabou.utils.Bundle; diff --git a/java/com/hmdzl/spspd/levels/CatacombLevel.java b/java/com/hmdzl/spspd/levels/CatacombLevel.java index 1b71681d..02134e4e 100644 --- a/java/com/hmdzl/spspd/levels/CatacombLevel.java +++ b/java/com/hmdzl/spspd/levels/CatacombLevel.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.DungeonTilemap; import com.hmdzl.spspd.items.TriforceOfCourage; import com.hmdzl.spspd.levels.Room.Type; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.watabou.noosa.Game; import com.watabou.noosa.Scene; diff --git a/java/com/hmdzl/spspd/levels/CavesBossLevel.java b/java/com/hmdzl/spspd/levels/CavesBossLevel.java index 07c44d37..8f2be0fd 100644 --- a/java/com/hmdzl/spspd/levels/CavesBossLevel.java +++ b/java/com/hmdzl/spspd/levels/CavesBossLevel.java @@ -28,7 +28,7 @@ import com.hmdzl.spspd.levels.painters.Painter; import com.hmdzl.spspd.levels.traps.ToxicTrap; import com.hmdzl.spspd.levels.traps.Trap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.watabou.noosa.Camera; import com.watabou.noosa.Scene; diff --git a/java/com/hmdzl/spspd/levels/CavesLevel.java b/java/com/hmdzl/spspd/levels/CavesLevel.java index cef6711a..297d7e7a 100644 --- a/java/com/hmdzl/spspd/levels/CavesLevel.java +++ b/java/com/hmdzl/spspd/levels/CavesLevel.java @@ -29,7 +29,7 @@ import com.hmdzl.spspd.levels.Room.Type; import com.hmdzl.spspd.levels.painters.Painter; import com.hmdzl.spspd.levels.traps.*; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.Game; import com.watabou.noosa.Group; import com.watabou.noosa.Scene; @@ -123,11 +123,8 @@ protected void createItems() { protected boolean assignRoomType() { super.assignRoomType(); - if (!Blacksmith.Quest.spawn(rooms) && Dungeon.depth == 14) - return false; - - return true; - } + return Blacksmith.Quest.spawn(rooms) || Dungeon.depth != 14; + } @Override protected void decorate() { @@ -210,6 +207,14 @@ protected void decorate() { } } + for (int i = getWidth(); i < getLength() - getWidth(); i++) { + if (map[i] == Terrain.WALL && feeling == Feeling.SPECIAL_FLOOR && Level.insideMap(i)) { + + map[i] = Terrain.GLASS_WALL; + } + } + + while (true) { int pos = roomEntrance.random(); if (pos != entrance) { diff --git a/java/com/hmdzl/spspd/levels/ChaosLevel.java b/java/com/hmdzl/spspd/levels/ChaosLevel.java index c992503e..375c9903 100644 --- a/java/com/hmdzl/spspd/levels/ChaosLevel.java +++ b/java/com/hmdzl/spspd/levels/ChaosLevel.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.DungeonTilemap; import com.hmdzl.spspd.levels.traps.*; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.Game; import com.watabou.noosa.Group; import com.watabou.noosa.Scene; diff --git a/java/com/hmdzl/spspd/levels/ChasmLevel.java b/java/com/hmdzl/spspd/levels/ChasmLevel.java index 236abd3e..1c80ccad 100644 --- a/java/com/hmdzl/spspd/levels/ChasmLevel.java +++ b/java/com/hmdzl/spspd/levels/ChasmLevel.java @@ -27,7 +27,7 @@ import com.hmdzl.spspd.items.TriforceOfWisdom; import com.hmdzl.spspd.items.potions.PotionOfLevitation; import com.hmdzl.spspd.levels.Room.Type; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Phaseshift; import com.hmdzl.spspd.scenes.GameScene; import com.watabou.noosa.Game; diff --git a/java/com/hmdzl/spspd/levels/CityBossLevel.java b/java/com/hmdzl/spspd/levels/CityBossLevel.java index d3758c1b..5d98e704 100644 --- a/java/com/hmdzl/spspd/levels/CityBossLevel.java +++ b/java/com/hmdzl/spspd/levels/CityBossLevel.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.levels.painters.Painter; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.watabou.noosa.Camera; import com.watabou.noosa.Scene; diff --git a/java/com/hmdzl/spspd/levels/CityLevel.java b/java/com/hmdzl/spspd/levels/CityLevel.java index a2ace297..6ba8d65b 100644 --- a/java/com/hmdzl/spspd/levels/CityLevel.java +++ b/java/com/hmdzl/spspd/levels/CityLevel.java @@ -27,7 +27,7 @@ import com.hmdzl.spspd.items.bombs.DungeonBomb; import com.hmdzl.spspd.levels.Room.Type; import com.hmdzl.spspd.levels.traps.*; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.Scene; import com.watabou.noosa.particles.Emitter; import com.watabou.noosa.particles.PixelParticle; @@ -106,6 +106,14 @@ protected void decorate() { } } + for (int i = getWidth(); i < getLength() - getWidth(); i++) { + if (map[i] == Terrain.WALL && feeling == Feeling.SPECIAL_FLOOR && Level.insideMap(i)) { + + map[i] = Terrain.GLASS_WALL; + } + } + + while (true) { int pos = roomEntrance.random(); if (pos != entrance) { diff --git a/java/com/hmdzl/spspd/levels/DeadEndLevel.java b/java/com/hmdzl/spspd/levels/DeadEndLevel.java index e3ea02cf..20d58f25 100644 --- a/java/com/hmdzl/spspd/levels/DeadEndLevel.java +++ b/java/com/hmdzl/spspd/levels/DeadEndLevel.java @@ -20,7 +20,7 @@ import java.util.Arrays; import com.hmdzl.spspd.Assets; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.utils.Random; public class DeadEndLevel extends Level { diff --git a/java/com/hmdzl/spspd/levels/FortressLevel.java b/java/com/hmdzl/spspd/levels/FortressLevel.java index 3ddfe4b2..e0a27ef9 100644 --- a/java/com/hmdzl/spspd/levels/FortressLevel.java +++ b/java/com/hmdzl/spspd/levels/FortressLevel.java @@ -17,18 +17,18 @@ */ package com.hmdzl.spspd.levels; -import java.util.ArrayList; -import java.util.HashSet; - import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.mobs.npcs.Tinkerer3; -import com.hmdzl.spspd.items.quest.Mushroom; import com.hmdzl.spspd.items.TriforceOfPower; +import com.hmdzl.spspd.items.quest.Mushroom; import com.hmdzl.spspd.levels.Room.Type; import com.watabou.utils.Random; +import java.util.ArrayList; +import java.util.HashSet; + public class FortressLevel extends RegularLevel { { @@ -171,26 +171,29 @@ protected void decorate() { } @Override - protected void createItems() { + protected void createItems() { addItemToSpawn(new Mushroom()); - Tinkerer3 npc = new Tinkerer3(); - do { - npc.pos = randomRespawnCell(); - } while (npc.pos == -1 || heaps.get(npc.pos) != null); - mobs.add(npc); - Actor.occupyCell(npc); + super.createItems(); - - super.createItems(); - - spawn(this, roomEntrance); + spawnnpc(this, roomEntrance); + } + + public static void spawnnpc(FortressLevel level,Room room) { - - } + Tinkerer3 npc = new Tinkerer3(); + do { + npc.pos = room.random(); + } while (level.map[npc.pos] == Terrain.ENTRANCE + || level.map[npc.pos] == Terrain.SIGN); + level.mobs.add(npc); + Actor.occupyCell(npc); + } + + public static void spawn(FortressLevel level, Room room) { int pos; do {pos = room.random();} diff --git a/java/com/hmdzl/spspd/levels/HallsBossLevel.java b/java/com/hmdzl/spspd/levels/HallsBossLevel.java index b68664ef..c8e38275 100644 --- a/java/com/hmdzl/spspd/levels/HallsBossLevel.java +++ b/java/com/hmdzl/spspd/levels/HallsBossLevel.java @@ -28,7 +28,7 @@ import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.keys.SkeletonKey; import com.hmdzl.spspd.levels.painters.Painter; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.watabou.noosa.Scene; import com.watabou.utils.Bundle; diff --git a/java/com/hmdzl/spspd/levels/HallsLevel.java b/java/com/hmdzl/spspd/levels/HallsLevel.java index 5d43e67f..8927f063 100644 --- a/java/com/hmdzl/spspd/levels/HallsLevel.java +++ b/java/com/hmdzl/spspd/levels/HallsLevel.java @@ -17,18 +17,32 @@ */ package com.hmdzl.spspd.levels; -import javax.microedition.khronos.opengles.GL10; - import android.opengl.GLES20; import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.DungeonTilemap; -import com.hmdzl.spspd.actors.mobs.Sentinel; -import com.hmdzl.spspd.items.DwarfHammer; import com.hmdzl.spspd.items.Torch; -import com.hmdzl.spspd.levels.traps.*; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.items.keys.SkeletonKey; +import com.hmdzl.spspd.levels.traps.BlazingTrap; +import com.hmdzl.spspd.levels.traps.CursingTrap; +import com.hmdzl.spspd.levels.traps.DisarmingTrap; +import com.hmdzl.spspd.levels.traps.DisintegrationTrap; +import com.hmdzl.spspd.levels.traps.ExplosiveTrap; +import com.hmdzl.spspd.levels.traps.FlockTrap; +import com.hmdzl.spspd.levels.traps.FrostTrap; +import com.hmdzl.spspd.levels.traps.GrimTrap; +import com.hmdzl.spspd.levels.traps.GrippingTrap; +import com.hmdzl.spspd.levels.traps.GuardianTrap; +import com.hmdzl.spspd.levels.traps.LightningTrap; +import com.hmdzl.spspd.levels.traps.OozeTrap; +import com.hmdzl.spspd.levels.traps.SpearTrap; +import com.hmdzl.spspd.levels.traps.StormTrap; +import com.hmdzl.spspd.levels.traps.SummoningTrap; +import com.hmdzl.spspd.levels.traps.TeleportationTrap; +import com.hmdzl.spspd.levels.traps.VenomTrap; +import com.hmdzl.spspd.levels.traps.WeakeningTrap; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.Game; import com.watabou.noosa.Group; import com.watabou.noosa.Scene; @@ -36,10 +50,12 @@ import com.watabou.utils.PointF; import com.watabou.utils.Random; +import javax.microedition.khronos.opengles.GL10; + public class HallsLevel extends RegularLevel { { - minRoomSize = 6; + minRoomSize = 7; viewDistance = Math.max(25 - Dungeon.depth, 1); @@ -121,6 +137,14 @@ protected void decorate() { } } + for (int i = getWidth(); i < getLength() - getWidth(); i++) { + if (map[i] == Terrain.WALL && feeling == Feeling.SPECIAL_FLOOR && Level.insideMap(i)) { + + map[i] = Terrain.GLASS_WALL; + } + } + + while (true) { int pos = roomEntrance.random(); if (pos != entrance) { @@ -131,12 +155,12 @@ protected void decorate() { for (int i = 0; i < getLength(); i++) { - if (map[i]==Terrain.EXIT){map[i] = Terrain.PEDESTAL; - sealedlevel=true; - if(Dungeon.depth==24){ - Sentinel sentinel = new Sentinel(); - sentinel.pos = i; - mobs.add(sentinel);} + if (map[i]==Terrain.EXIT){map[i] = Terrain.LOCKED_EXIT; + //sealedlevel=true; + // if(Dungeon.depth==24){ + // Sentinel sentinel = new Sentinel(); + // sentinel.pos = i; + // mobs.add(sentinel);} } } @@ -148,7 +172,7 @@ protected void decorate() { @Override protected void createItems() { - if (Dungeon.depth!=25){addItemToSpawn(new DwarfHammer());} + if (Dungeon.depth!=25){addItemToSpawn(new SkeletonKey(Dungeon.depth));} super.createItems(); } diff --git a/java/com/hmdzl/spspd/levels/InfestBossLevel.java b/java/com/hmdzl/spspd/levels/InfestBossLevel.java index 9c8108c3..b5a333bd 100644 --- a/java/com/hmdzl/spspd/levels/InfestBossLevel.java +++ b/java/com/hmdzl/spspd/levels/InfestBossLevel.java @@ -28,7 +28,7 @@ import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.levels.painters.Painter; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.Camera; diff --git a/java/com/hmdzl/spspd/levels/LastLevel.java b/java/com/hmdzl/spspd/levels/LastLevel.java index a15011fe..886e56b4 100644 --- a/java/com/hmdzl/spspd/levels/LastLevel.java +++ b/java/com/hmdzl/spspd/levels/LastLevel.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.items.PuddingCup; import com.hmdzl.spspd.levels.painters.Painter; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.Scene; import com.watabou.utils.Bundle; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/levels/LastShopLevel.java b/java/com/hmdzl/spspd/levels/LastShopLevel.java index 3cb3d282..bc7fa29a 100644 --- a/java/com/hmdzl/spspd/levels/LastShopLevel.java +++ b/java/com/hmdzl/spspd/levels/LastShopLevel.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.levels.Room.Type; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.Scene; import com.watabou.utils.Graph; import com.watabou.utils.Random; diff --git a/java/com/hmdzl/spspd/levels/Level.java b/java/com/hmdzl/spspd/levels/Level.java index d88e154f..d63e2ef3 100644 --- a/java/com/hmdzl/spspd/levels/Level.java +++ b/java/com/hmdzl/spspd/levels/Level.java @@ -17,12 +17,6 @@ */ package com.hmdzl.spspd.levels; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; - import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Challenges; import com.hmdzl.spspd.Dungeon; @@ -72,10 +66,8 @@ import com.hmdzl.spspd.actors.mobs.pets.Snake; import com.hmdzl.spspd.actors.mobs.pets.Spider; import com.hmdzl.spspd.actors.mobs.pets.Stone; - import com.hmdzl.spspd.actors.mobs.pets.Velocirooster; import com.hmdzl.spspd.actors.mobs.pets.VioletDragon; - import com.hmdzl.spspd.actors.mobs.pets.YearPet; import com.hmdzl.spspd.effects.Pushing; import com.hmdzl.spspd.effects.particles.FlowParticle; @@ -83,15 +75,14 @@ import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.Heap; import com.hmdzl.spspd.items.Item; +import com.hmdzl.spspd.items.StoneOre; import com.hmdzl.spspd.items.Stylus; import com.hmdzl.spspd.items.Torch; -import com.hmdzl.spspd.items.StoneOre; import com.hmdzl.spspd.items.Weightstone; import com.hmdzl.spspd.items.armor.Armor; import com.hmdzl.spspd.items.artifacts.DriedRose; import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; import com.hmdzl.spspd.items.misc.LuckyBadge; -import com.hmdzl.spspd.items.potions.PotionOfMight; import com.hmdzl.spspd.items.potions.PotionOfOverHealing; import com.hmdzl.spspd.items.potions.PotionOfStrength; import com.hmdzl.spspd.items.scrolls.ScrollOfMagicalInfusion; @@ -100,16 +91,17 @@ import com.hmdzl.spspd.levels.features.Door; import com.hmdzl.spspd.levels.features.HighGrass; import com.hmdzl.spspd.levels.painters.Painter; +import com.hmdzl.spspd.levels.traps.AirTrap; import com.hmdzl.spspd.levels.traps.ChangeSheepTrap; import com.hmdzl.spspd.levels.traps.FleecingTrap; import com.hmdzl.spspd.levels.traps.HeapGenTrap; -import com.hmdzl.spspd.levels.traps.*; -import com.hmdzl.spspd.sprites.ItemSprite; -import com.hmdzl.spspd.ui.CustomTileVisual; +import com.hmdzl.spspd.levels.traps.Trap; import com.hmdzl.spspd.mechanics.ShadowCaster; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Plant; import com.hmdzl.spspd.scenes.GameScene; +import com.hmdzl.spspd.sprites.ItemSprite; +import com.hmdzl.spspd.ui.CustomTileVisual; import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.Scene; import com.watabou.noosa.audio.Sample; @@ -118,15 +110,21 @@ import com.watabou.utils.Random; import com.watabou.utils.SparseArray; -public abstract class Level implements Bundlable { +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; - public static enum Feeling { - NONE, CHASM, WATER, GRASS, DARK, TRAP - }; +public abstract class Level implements Bundlable { - - - /* -W-1 -W -W+1 + public enum Feeling { + NONE, CHASM, WATER, GRASS, DARK, TRAP, SPECIAL_FLOOR + } + + + + /* -W-1 -W -W+1 * -1 P +1 * W-1 W W+1 * @@ -192,6 +190,7 @@ public static enum Feeling { public static boolean[] losBlockHigh = new boolean[getLength()]; public static boolean[] losBlockLow = new boolean[getLength()]; public static boolean[] flamable = new boolean[getLength()]; + //public static boolean[] crashable = new boolean[getLength()]; public static boolean[] shockable = new boolean[getLength()]; public static boolean[] secret = new boolean[getLength()]; public static boolean[] solid = new boolean[getLength()]; @@ -213,7 +212,7 @@ public static enum Feeling { public boolean special = false; public boolean cleared = false; public boolean forcedone = false; - public boolean sealedlevel = false; + //public boolean sealedlevel = false; public HashSet mobs; public SparseArray heaps; @@ -250,7 +249,7 @@ public static enum Feeling { private static final String RESET = "reset"; private static final String FORCEDONE = "forcedone"; private static final String GENPETNEXT = "genpetnext"; - private static final String SEALEDLEVEL = "sealedlevel"; + //private static final String SEALEDLEVEL = "sealedlevel"; public void create() { @@ -326,7 +325,7 @@ public void create() { if (Dungeon.depth == 4 && !Dungeon.earlygrass) { feeling = Feeling.GRASS; } else { - switch (Random.Int(10)) { + switch (Random.Int(8)) { case 0: if (!Dungeon.bossLevel(Dungeon.depth + 1)) { feeling = Feeling.CHASM; @@ -335,14 +334,18 @@ public void create() { case 1: feeling = Feeling.WATER; break; - case 2: case 3: case 4: + case 2: case 3: feeling = Feeling.GRASS; Dungeon.earlygrass = true; break; + case 4: case 5: + feeling = Feeling.SPECIAL_FLOOR; + break; + } } } else if (Dungeon.depth > 5 && Dungeon.depth < 21) { - switch (Random.Int(10)) { + switch (Random.Int(8)) { case 0: if (!Dungeon.bossLevel(Dungeon.depth + 1)) { feeling = Feeling.CHASM; @@ -361,16 +364,22 @@ public void create() { addItemToSpawn(new Torch()); viewDistance = (int) Math.ceil(viewDistance / 3f); break; + case 4: + feeling = Feeling.SPECIAL_FLOOR; + break; } } else if (Dungeon.depth > 20 && Dungeon.depth < 27) { - switch (Random.Int(10)) { + switch (Random.Int(8)) { case 1: feeling = Feeling.WATER; break; case 2: feeling = Feeling.GRASS; break; - case 3: + + case 3: + feeling = Feeling.SPECIAL_FLOOR; + break; case 0: feeling = Feeling.DARK; addItemToSpawn(new Torch()); @@ -407,6 +416,7 @@ public void create() { do { Arrays.fill(map, feeling == Feeling.CHASM ? Terrain.CHASM : (feeling == Feeling.TRAP ? Terrain.TRAP_AIR : Terrain.WALL)); + //: (feeling == Feeling.SPECIAL_FLOOR ? Terrain.GLASS_WALL : Terrain.WALL))); pitRoomNeeded = pitNeeded; weakFloorCreated = false; @@ -457,7 +467,7 @@ public void restoreFromBundle(Bundle bundle) { reset = bundle.getBoolean(RESET); forcedone = bundle.getBoolean(FORCEDONE); genpetnext = bundle.getBoolean(GENPETNEXT); - sealedlevel = bundle.getBoolean(SEALEDLEVEL); + //sealedlevel = bundle.getBoolean(SEALEDLEVEL); weakFloorCreated = false; @@ -546,7 +556,7 @@ public void storeInBundle(Bundle bundle) { bundle.put(RESET, reset); bundle.put(FORCEDONE, forcedone); bundle.put(GENPETNEXT, genpetnext); - bundle.put(SEALEDLEVEL, sealedlevel); + //bundle.put(SEALEDLEVEL, sealedlevel); } public int tunnelTile() { @@ -1103,6 +1113,7 @@ protected void buildFlagMaps() { losBlockHigh[i] = losBlockLow[i] && (flags & Terrain.SOLID) != 0 ; flamable[i] = (flags & Terrain.FLAMABLE) != 0; //shockable[i] = (flags & Terrain.SHOCKABLE) != 0; + //crashable[i] = (flags & Terrain.CRASHABLE) != 0; secret[i] = (flags & Terrain.SECRET) != 0; solid[i] = (flags & Terrain.SOLID) != 0; avoid[i] = (flags & Terrain.AVOID) != 0; @@ -1220,6 +1231,7 @@ public static void set(int cell, int terrain) { losBlockHigh[cell] = losBlockLow[cell] && (flags & Terrain.SOLID) != 0; flamable[cell] = (flags & Terrain.FLAMABLE) != 0; //shockable[cell] = (flags & Terrain.SHOCKABLE) != 0; + //crashable[cell] = (flags & Terrain.CRASHABLE) != 0; secret[cell] = (flags & Terrain.SECRET) != 0; solid[cell] = (flags & Terrain.SOLID) != 0; avoid[cell] = (flags & Terrain.AVOID) != 0; @@ -1755,7 +1767,7 @@ public boolean[] updateFieldOfView(Char c) { } } - if ((sighted && sense > 1) || !sighted) { + if (!sighted || sense > 1) { int ax = Math.max(0, cx - sense); int bx = Math.min(cx + sense, getWidth() - 1); @@ -1968,6 +1980,8 @@ public String tileName(int tile) { return Messages.get(Level.class, "alchemy_name"); case Terrain.SHRUB: return Messages.get(Level.class, "shrub_name"); + case Terrain.GLASS_WALL: + return Messages.get(Level.class, "glass_name"); default: return Messages.get(Level.class, "default_name"); } @@ -2031,6 +2045,8 @@ public String tileDesc(int tile) { return Messages.get(Level.class, "alchemy_desc"); case Terrain.EMPTY_WELL: return Messages.get(Level.class, "empty_well_desc"); + case Terrain.GLASS_WALL: + return Messages.get(Level.class, "glass_desc"); case Terrain.WOOL_RUG: return Messages.get(Level.class, "wool_rug_desc"); default: @@ -2061,6 +2077,11 @@ public String tileDesc(int tile) { public boolean darkness(){ return (Dungeon.isChallenged(Challenges.DARKNESS) || Dungeon.level.feeling == Feeling.DARK); } + + public boolean glasstown(){ + return Dungeon.level.feeling == Feeling.SPECIAL_FLOOR; + } + public static int getWidth() { return WIDTH; } diff --git a/java/com/hmdzl/spspd/levels/MinesBossLevel.java b/java/com/hmdzl/spspd/levels/MinesBossLevel.java index e021c640..47e60e59 100644 --- a/java/com/hmdzl/spspd/levels/MinesBossLevel.java +++ b/java/com/hmdzl/spspd/levels/MinesBossLevel.java @@ -39,7 +39,7 @@ import com.hmdzl.spspd.levels.features.HighGrass; import com.hmdzl.spspd.levels.traps.ChangeSheepTrap; import com.hmdzl.spspd.levels.traps.FleecingTrap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Plant; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.windows.WndOtilukeMessage; diff --git a/java/com/hmdzl/spspd/levels/Patch.java b/java/com/hmdzl/spspd/levels/Patch.java index f2b702dc..e7796234 100644 --- a/java/com/hmdzl/spspd/levels/Patch.java +++ b/java/com/hmdzl/spspd/levels/Patch.java @@ -67,11 +67,7 @@ public static boolean[] generate(float seed, int nGen) { if (!off[pos] && count >= 5) { cur[pos] = true; - } else if (off[pos] && count >= 4) { - cur[pos] = true; - } else { - cur[pos] = false; - } + } else cur[pos] = off[pos] && count >= 4; } } diff --git a/java/com/hmdzl/spspd/levels/PotLevel.java b/java/com/hmdzl/spspd/levels/PotLevel.java index 34ad93a0..bc80faf1 100644 --- a/java/com/hmdzl/spspd/levels/PotLevel.java +++ b/java/com/hmdzl/spspd/levels/PotLevel.java @@ -143,7 +143,7 @@ import com.hmdzl.spspd.levels.traps.SokobanPortalTrap; import com.hmdzl.spspd.levels.traps.ToxicTrap; import com.hmdzl.spspd.levels.traps.Trap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Phaseshift; import com.hmdzl.spspd.plants.Plant; import com.hmdzl.spspd.plants.Starflower; diff --git a/java/com/hmdzl/spspd/levels/PrisonBossLevel.java b/java/com/hmdzl/spspd/levels/PrisonBossLevel.java index ac5c28b3..333f378b 100644 --- a/java/com/hmdzl/spspd/levels/PrisonBossLevel.java +++ b/java/com/hmdzl/spspd/levels/PrisonBossLevel.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.mobs.Bestiary; import com.hmdzl.spspd.actors.mobs.Mob; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.watabou.noosa.Scene; import com.watabou.utils.Bundle; diff --git a/java/com/hmdzl/spspd/levels/PrisonBossLevel2.java b/java/com/hmdzl/spspd/levels/PrisonBossLevel2.java index 705303cc..cefbb593 100644 --- a/java/com/hmdzl/spspd/levels/PrisonBossLevel2.java +++ b/java/com/hmdzl/spspd/levels/PrisonBossLevel2.java @@ -33,7 +33,7 @@ import com.hmdzl.spspd.levels.painters.Painter; import com.hmdzl.spspd.levels.traps.SpearTrap; import com.hmdzl.spspd.levels.traps.Trap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.watabou.noosa.Scene; import com.watabou.utils.Bundle; diff --git a/java/com/hmdzl/spspd/levels/PrisonLevel.java b/java/com/hmdzl/spspd/levels/PrisonLevel.java index 740a5c7f..7e1c69a3 100644 --- a/java/com/hmdzl/spspd/levels/PrisonLevel.java +++ b/java/com/hmdzl/spspd/levels/PrisonLevel.java @@ -29,7 +29,7 @@ import com.hmdzl.spspd.items.bombs.DungeonBomb; import com.hmdzl.spspd.levels.Room.Type; import com.hmdzl.spspd.levels.traps.*; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.Scene; import com.watabou.noosa.particles.Emitter; import com.watabou.utils.PointF; @@ -168,6 +168,14 @@ protected void decorate() { } } + for (int i = getWidth(); i < getLength() - getWidth(); i++) { + if (map[i] == Terrain.WALL && feeling == Feeling.SPECIAL_FLOOR && Level.insideMap(i)) { + + map[i] = Terrain.GLASS_WALL; + } + } + + while (true) { int pos = roomEntrance.random(); if (pos != entrance) { diff --git a/java/com/hmdzl/spspd/levels/RegularLevel.java b/java/com/hmdzl/spspd/levels/RegularLevel.java index 563346a9..6012b7bd 100644 --- a/java/com/hmdzl/spspd/levels/RegularLevel.java +++ b/java/com/hmdzl/spspd/levels/RegularLevel.java @@ -17,13 +17,6 @@ */ package com.hmdzl.spspd.levels; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.Statistics; import com.hmdzl.spspd.actors.Actor; @@ -41,12 +34,21 @@ import com.hmdzl.spspd.levels.Room.Type; import com.hmdzl.spspd.levels.painters.Painter; import com.hmdzl.spspd.levels.painters.ShopPainter; -import com.hmdzl.spspd.levels.traps.*; +import com.hmdzl.spspd.levels.traps.FireTrap; +import com.hmdzl.spspd.levels.traps.Trap; +import com.hmdzl.spspd.levels.traps.WornTrap; import com.watabou.utils.Bundle; import com.watabou.utils.Graph; import com.watabou.utils.Random; import com.watabou.utils.Rect; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; + public abstract class RegularLevel extends Level { protected HashSet rooms; @@ -84,7 +86,7 @@ protected boolean build() { Graph.buildDistanceMap(rooms, roomExit); distance = roomEntrance.distance(); - if (retry++ > 10) { + if (retry++ > 15) { return false; } @@ -146,38 +148,39 @@ protected boolean build() { } else { shop.type = Room.Type.SHOP; } - } + } + specials = new ArrayList(Room.SPECIALS); if (Dungeon.bossLevel(Dungeon.depth + 1)) { specials.remove(Room.Type.WEAK_FLOOR); } if (Dungeon.skins == 5) { // no sense in giving an armor reward room on a run with no armor. - specials.remove(Room.Type.CRYPT); + //specials.remove(Room.Type.CRYPT); } //if (Dungeon.isChallenged(Challenges.NO_HERBALISM)) { // sorry warden, no lucky sungrass or blandfruit seeds for you! //specials.remove(Room.Type.GARDEN); //} - if (Dungeon.depth > 21 && Dungeon.depth < 25) { + if ((Dungeon.depth > 21 && Dungeon.depth < 25) || Dungeon.depth == 1 ) { specials.remove(Room.Type.WEAK_FLOOR); } if (Dungeon.depth > 50 && Dungeon.depth < 100) { specials.remove(Room.Type.WEAK_FLOOR); - specials.remove(Room.Type.ARMORY); + specials.remove(Room.Type.MATERIAL); specials.remove(Room.Type.CRYPT); specials.remove(Room.Type.GARDEN); - specials.remove(Room.Type.LABORATORY); + specials.remove(Room.Type.COOKING); specials.remove(Room.Type.LIBRARY); specials.remove(Room.Type.MAGIC_WELL); specials.remove(Room.Type.POOL); specials.remove(Room.Type.STATUE); specials.remove(Room.Type.STORAGE); specials.remove(Room.Type.TRAPS); - specials.remove(Room.Type.TREASURY); + specials.remove(Room.Type.JUNGLE); specials.remove(Room.Type.VAULT); } @@ -239,9 +242,9 @@ protected boolean assignRoomType() { pitRoomNeeded = false; } else if (Dungeon.depth % 5 == 2 - && specials.contains(Type.LABORATORY)) { + && specials.contains(Type.COOKING)) { - r.type = Type.LABORATORY; + r.type = Type.COOKING; } else if (specials.contains(Type.MAGIC_WELL)) { @@ -404,7 +407,7 @@ protected float[] trapChances() { } protected int minRoomSize = 7; - protected int maxRoomSize = 9; + protected int maxRoomSize = 10; protected void split(Rect rect) { diff --git a/java/com/hmdzl/spspd/levels/Room.java b/java/com/hmdzl/spspd/levels/Room.java index 9506b32e..2cf9a0a3 100644 --- a/java/com/hmdzl/spspd/levels/Room.java +++ b/java/com/hmdzl/spspd/levels/Room.java @@ -17,25 +17,21 @@ */ package com.hmdzl.spspd.levels; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; - import com.hmdzl.spspd.ShatteredPixelDungeon; -import com.hmdzl.spspd.levels.painters.ArmoryPainter; import com.hmdzl.spspd.levels.painters.BarricadedPainter; import com.hmdzl.spspd.levels.painters.BlacksmithPainter; import com.hmdzl.spspd.levels.painters.BossExitPainter; +import com.hmdzl.spspd.levels.painters.CookingPainter; import com.hmdzl.spspd.levels.painters.CryptPainter; import com.hmdzl.spspd.levels.painters.EntrancePainter; import com.hmdzl.spspd.levels.painters.ExitPainter; import com.hmdzl.spspd.levels.painters.GardenPainter; -import com.hmdzl.spspd.levels.painters.LaboratoryPainter; +import com.hmdzl.spspd.levels.painters.secrets.GlassRoomPainter; +import com.hmdzl.spspd.levels.painters.JunglePainter; import com.hmdzl.spspd.levels.painters.LibraryPainter; import com.hmdzl.spspd.levels.painters.MagicWellPainter; +import com.hmdzl.spspd.levels.painters.MaterialPainter; +import com.hmdzl.spspd.levels.painters.MemoryPainter; import com.hmdzl.spspd.levels.painters.Painter; import com.hmdzl.spspd.levels.painters.PassagePainter; import com.hmdzl.spspd.levels.painters.PitPainter; @@ -47,11 +43,9 @@ import com.hmdzl.spspd.levels.painters.StatuePainter; import com.hmdzl.spspd.levels.painters.StoragePainter; import com.hmdzl.spspd.levels.painters.TrapsPainter; -import com.hmdzl.spspd.levels.painters.TreasuryPainter; import com.hmdzl.spspd.levels.painters.TunnelPainter; import com.hmdzl.spspd.levels.painters.VaultPainter; import com.hmdzl.spspd.levels.painters.WeakFloorPainter; -import com.hmdzl.spspd.levels.painters.MemoryPainter; import com.watabou.utils.Bundlable; import com.watabou.utils.Bundle; import com.watabou.utils.Graph; @@ -59,6 +53,13 @@ import com.watabou.utils.Random; import com.watabou.utils.Rect; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; + public class Room extends Rect implements Graph.Node, Bundlable { public HashSet neigbours = new HashSet(); @@ -67,7 +68,7 @@ public class Room extends Rect implements Graph.Node, Bundlable { public int distance; public int price = 1; - public static enum Type { + public enum Type { NULL(null), STANDARD(StandardPainter.class), ENTRANCE(EntrancePainter.class), @@ -77,14 +78,14 @@ public static enum Type { PASSAGE(PassagePainter.class), SHOP(ShopPainter.class), BLACKSMITH(BlacksmithPainter.class), - TREASURY(TreasuryPainter.class), - ARMORY(ArmoryPainter.class), + JUNGLE(JunglePainter.class), + MATERIAL(MaterialPainter.class), LIBRARY(LibraryPainter.class), - LABORATORY(LaboratoryPainter.class), + COOKING(CookingPainter.class), VAULT(VaultPainter.class), TRAPS(TrapsPainter.class), STORAGE(StoragePainter.class), - BARRICADED ( BarricadedPainter.class ), + BARRICADED (BarricadedPainter.class ), MAGIC_WELL(MagicWellPainter.class), GARDEN(GardenPainter.class), CRYPT(CryptPainter.class), @@ -94,11 +95,12 @@ public static enum Type { WEAK_FLOOR(WeakFloorPainter.class), PIT(PitPainter.class), RAT_KING2(RatKingPainter2.class), - MEMORY(MemoryPainter.class); + MEMORY(MemoryPainter.class), + GLASSROOM(GlassRoomPainter .class); private Method paint; - private Type(Class painter) { + Type(Class painter) { try { paint = painter.getMethod("paint", Level.class, Room.class); } catch (Exception e) { @@ -113,13 +115,13 @@ public void paint(Level level, Room room) { ShatteredPixelDungeon.reportException(e); } } - }; + } - public static final ArrayList SPECIALS = new ArrayList( + public static final ArrayList SPECIALS = new ArrayList( Arrays.asList(Type.WEAK_FLOOR, Type.MAGIC_WELL, Type.CRYPT, - Type.POOL, Type.GARDEN, Type.LIBRARY, Type.ARMORY, - Type.TREASURY, Type.TRAPS, Type.STORAGE, Type.STATUE, - Type.LABORATORY, Type.VAULT, Type.MEMORY, Type.BARRICADED)); + Type.POOL, Type.GARDEN, Type.LIBRARY, Type.MATERIAL, + Type.JUNGLE, Type.TRAPS, Type.STORAGE, Type.STATUE, + Type.COOKING, Type.VAULT, Type.MEMORY, Type.BARRICADED)); public static final ArrayList SPECIALSFORT = new ArrayList( Arrays.asList(Type.GARDEN, Type.GARDEN, Type.GARDEN, Type.GARDEN, @@ -146,8 +148,8 @@ public int random(int m) { public void addNeigbour(Room other) { Rect i = intersect(other); - if ((i.width() == 0 && i.height() >= 3) - || (i.height() == 0 && i.width() >= 3)) { + if ((i.width() == 0 && i.height() >= 2) + || (i.height() == 0 && i.width() >= 2)) { neigbours.add(other); other.neigbours.add(this); } @@ -272,7 +274,7 @@ public static void storeRoomsInBundle(Bundle bundle) { public static class Door extends Point { - public static enum Type { + public enum Type { EMPTY, TUNNEL, REGULAR, UNLOCKED, HIDDEN, BARRICADE, LOCKED, ONEWAY } diff --git a/java/com/hmdzl/spspd/levels/RoomOfZotLevel.java b/java/com/hmdzl/spspd/levels/RoomOfZotLevel.java index d4b31024..ac38c43a 100644 --- a/java/com/hmdzl/spspd/levels/RoomOfZotLevel.java +++ b/java/com/hmdzl/spspd/levels/RoomOfZotLevel.java @@ -43,7 +43,7 @@ import com.hmdzl.spspd.levels.traps.ChangeSheepTrap; import com.hmdzl.spspd.levels.traps.FleecingTrap; import com.hmdzl.spspd.levels.traps.SokobanPortalTrap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Plant; import com.hmdzl.spspd.scenes.GameScene; import com.watabou.noosa.audio.Sample; diff --git a/java/com/hmdzl/spspd/levels/SafeLevel.java b/java/com/hmdzl/spspd/levels/SafeLevel.java index 29993e00..2fcc69cc 100644 --- a/java/com/hmdzl/spspd/levels/SafeLevel.java +++ b/java/com/hmdzl/spspd/levels/SafeLevel.java @@ -43,7 +43,7 @@ import com.hmdzl.spspd.levels.traps.ChangeSheepTrap; import com.hmdzl.spspd.levels.traps.FleecingTrap; import com.hmdzl.spspd.levels.traps.SokobanPortalTrap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Plant; import com.hmdzl.spspd.scenes.GameScene; import com.watabou.noosa.audio.Sample; diff --git a/java/com/hmdzl/spspd/levels/SewerBossLevel.java b/java/com/hmdzl/spspd/levels/SewerBossLevel.java index c057d914..a2f4f714 100644 --- a/java/com/hmdzl/spspd/levels/SewerBossLevel.java +++ b/java/com/hmdzl/spspd/levels/SewerBossLevel.java @@ -17,22 +17,22 @@ */ package com.hmdzl.spspd.levels; -import java.util.ArrayList; -import java.util.List; - import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.mobs.Bestiary; import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.levels.Room.Type; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.watabou.noosa.Scene; import com.watabou.utils.Bundle; import com.watabou.utils.Graph; import com.watabou.utils.Random; +import java.util.ArrayList; +import java.util.List; + public class SewerBossLevel extends RegularLevel { { @@ -66,7 +66,7 @@ protected boolean build() { // the room must be at least 4x4 and be nearer the top of the map(so // that it is less likely something connects to the top) do { - if (retry++ > 20) { + if (retry++ > 6) { return false; } roomEntrance = Random.element(rooms); @@ -80,14 +80,14 @@ protected boolean build() { Room curRoom = null; Room lastRoom = roomEntrance; // we make 4 rooms, last iteration is tieing the final room to the start - for (int i = 0; i <= 4; i++) { + for (int i = 0; i <= 9; i++) { retry = 0; // find a suitable room the first four times // suitable room should be empty, have a distance of 2 from the // current room, and not touch the entrance. - if (i < 4) { + if (i < 9) { do { - if (retry++ > 20) { + if (retry++ > 12) { return false; } curRoom = Random.element(rooms); diff --git a/java/com/hmdzl/spspd/levels/SewerLevel.java b/java/com/hmdzl/spspd/levels/SewerLevel.java index 03aead64..48375010 100644 --- a/java/com/hmdzl/spspd/levels/SewerLevel.java +++ b/java/com/hmdzl/spspd/levels/SewerLevel.java @@ -18,21 +18,20 @@ package com.hmdzl.spspd.levels; import com.hmdzl.spspd.Assets; -import com.hmdzl.spspd.Challenges; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.DungeonTilemap; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.hero.HeroClass; -import com.hmdzl.spspd.actors.mobs.npcs.Ghost; import com.hmdzl.spspd.actors.mobs.GnollArcher; +import com.hmdzl.spspd.actors.mobs.npcs.Ghost; import com.hmdzl.spspd.actors.mobs.npcs.Tinkerer1; import com.hmdzl.spspd.items.DewVial; import com.hmdzl.spspd.items.bombs.DungeonBomb; -import com.hmdzl.spspd.items.quest.Mushroom; import com.hmdzl.spspd.items.food.fruit.Blackberry; import com.hmdzl.spspd.items.food.fruit.Blueberry; import com.hmdzl.spspd.items.food.fruit.Cloudberry; import com.hmdzl.spspd.items.food.fruit.Moonberry; +import com.hmdzl.spspd.items.quest.Mushroom; import com.hmdzl.spspd.levels.traps.AlarmTrap; import com.hmdzl.spspd.levels.traps.ChillingTrap; import com.hmdzl.spspd.levels.traps.FlockTrap; @@ -42,7 +41,7 @@ import com.hmdzl.spspd.levels.traps.TeleportationTrap; import com.hmdzl.spspd.levels.traps.ToxicTrap; import com.hmdzl.spspd.levels.traps.WornTrap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.watabou.noosa.Game; import com.watabou.noosa.Scene; @@ -122,6 +121,13 @@ protected void decorate() { } } + for (int i = getWidth(); i < getLength() - getWidth(); i++) { + if (map[i] == Terrain.WALL && feeling == Feeling.SPECIAL_FLOOR && Level.insideMap(i)) { + + map[i] = Terrain.GLASS_WALL; + } + } + for (int i = getWidth() + 1; i < getLength() - getWidth() - 1; i++) { if (map[i] == Terrain.EMPTY) { @@ -142,9 +148,16 @@ protected void decorate() { map[pos] = Terrain.SIGN; break; } - } - - setPar(); + } + + for (int i = 0; i < getLength(); i++) { + + if (map[i] == Terrain.EXIT && Dungeon.depth == 1) { + map[i] = Terrain.LOCKED_EXIT; + //sealedlevel = true; + } + } + setPar(); } @@ -158,7 +171,7 @@ protected void createItems() { addItemToSpawn(new Blueberry()); addItemToSpawn(new Cloudberry()); addItemToSpawn(new Blackberry()); - + addItemToSpawn(new Mushroom()); //addItemToSpawn(new Spectacles()); //addItemToSpawn(new Towel()); @@ -174,9 +187,9 @@ protected void createItems() { Actor.occupyCell(npc); } - if (Dungeon.depth == 2){ - addItemToSpawn(new Mushroom()); - } + //if (Dungeon.depth == 2){ + // + //} Ghost.Quest.spawn(this); spawnGnoll(this); diff --git a/java/com/hmdzl/spspd/levels/ShadowEaterLevel.java b/java/com/hmdzl/spspd/levels/ShadowEaterLevel.java index 89a09d42..8c64bd8d 100644 --- a/java/com/hmdzl/spspd/levels/ShadowEaterLevel.java +++ b/java/com/hmdzl/spspd/levels/ShadowEaterLevel.java @@ -124,7 +124,7 @@ import com.hmdzl.spspd.levels.features.Chasm; import com.hmdzl.spspd.levels.features.Door; import com.hmdzl.spspd.levels.features.HighGrass; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Phaseshift; import com.hmdzl.spspd.plants.Plant; import com.hmdzl.spspd.plants.Starflower; diff --git a/java/com/hmdzl/spspd/levels/SokobanCastle.java b/java/com/hmdzl/spspd/levels/SokobanCastle.java index 90a2319f..806e7020 100644 --- a/java/com/hmdzl/spspd/levels/SokobanCastle.java +++ b/java/com/hmdzl/spspd/levels/SokobanCastle.java @@ -52,7 +52,7 @@ import com.hmdzl.spspd.levels.traps.FleecingTrap; import com.hmdzl.spspd.levels.traps.HeapGenTrap; import com.hmdzl.spspd.levels.traps.SokobanPortalTrap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Phaseshift; import com.hmdzl.spspd.plants.Plant; import com.hmdzl.spspd.plants.Starflower; diff --git a/java/com/hmdzl/spspd/levels/SokobanIntroLevel.java b/java/com/hmdzl/spspd/levels/SokobanIntroLevel.java index 2d48d95c..4cb549e8 100644 --- a/java/com/hmdzl/spspd/levels/SokobanIntroLevel.java +++ b/java/com/hmdzl/spspd/levels/SokobanIntroLevel.java @@ -48,7 +48,7 @@ import com.hmdzl.spspd.levels.traps.FleecingTrap; import com.hmdzl.spspd.levels.traps.HeapGenTrap; import com.hmdzl.spspd.levels.traps.SokobanPortalTrap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Plant; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/levels/SokobanPuzzlesLevel.java b/java/com/hmdzl/spspd/levels/SokobanPuzzlesLevel.java index 3fcd61e6..9b5e0009 100644 --- a/java/com/hmdzl/spspd/levels/SokobanPuzzlesLevel.java +++ b/java/com/hmdzl/spspd/levels/SokobanPuzzlesLevel.java @@ -52,7 +52,7 @@ import com.hmdzl.spspd.levels.traps.FleecingTrap; import com.hmdzl.spspd.levels.traps.HeapGenTrap; import com.hmdzl.spspd.levels.traps.SokobanPortalTrap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Flytrap; import com.hmdzl.spspd.plants.Phaseshift; import com.hmdzl.spspd.plants.Plant; diff --git a/java/com/hmdzl/spspd/levels/SokobanSPLevel.java b/java/com/hmdzl/spspd/levels/SokobanSPLevel.java index ad26eafc..22b7ad45 100644 --- a/java/com/hmdzl/spspd/levels/SokobanSPLevel.java +++ b/java/com/hmdzl/spspd/levels/SokobanSPLevel.java @@ -53,7 +53,7 @@ import com.hmdzl.spspd.levels.features.Chasm; import com.hmdzl.spspd.levels.features.Door; import com.hmdzl.spspd.levels.features.HighGrass; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Plant; import com.hmdzl.spspd.scenes.GameScene; import com.watabou.noosa.audio.Sample; @@ -123,8 +123,8 @@ public Item storeItem (){ Item prize; switch (Random.Int(2)) { case 0: - prize = Generator.random(Generator.Category.ARTIFACT);; - break; + prize = Generator.random(Generator.Category.ARTIFACT); + break; case 1: prize = Generator.random(Generator.Category.RING); break; @@ -316,8 +316,8 @@ protected void createItems() { mobs.add(REN); Mob KOSTIS = new Kostis12345(); - KOSTIS.pos = 7 + WIDTH * 9;; - mobs.add(KOSTIS); + KOSTIS.pos = 7 + WIDTH * 9; + mobs.add(KOSTIS); TestMob test4 = new TestMob(); test4.pos = 15 + WIDTH * 3; diff --git a/java/com/hmdzl/spspd/levels/SokobanTeleportLevel.java b/java/com/hmdzl/spspd/levels/SokobanTeleportLevel.java index e17920b8..f5e7224d 100644 --- a/java/com/hmdzl/spspd/levels/SokobanTeleportLevel.java +++ b/java/com/hmdzl/spspd/levels/SokobanTeleportLevel.java @@ -51,7 +51,7 @@ import com.hmdzl.spspd.levels.traps.FleecingTrap; import com.hmdzl.spspd.levels.traps.HeapGenTrap; import com.hmdzl.spspd.levels.traps.SokobanPortalTrap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Phaseshift; import com.hmdzl.spspd.plants.Plant; import com.hmdzl.spspd.plants.Starflower; diff --git a/java/com/hmdzl/spspd/levels/SokobanVaultLevel.java b/java/com/hmdzl/spspd/levels/SokobanVaultLevel.java index dd6bdf43..2ce0ac30 100644 --- a/java/com/hmdzl/spspd/levels/SokobanVaultLevel.java +++ b/java/com/hmdzl/spspd/levels/SokobanVaultLevel.java @@ -45,7 +45,7 @@ import com.hmdzl.spspd.levels.traps.ChangeSheepTrap; import com.hmdzl.spspd.levels.traps.FleecingTrap; import com.hmdzl.spspd.levels.traps.SokobanPortalTrap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Plant; import com.hmdzl.spspd.scenes.GameScene; import com.watabou.noosa.audio.Sample; diff --git a/java/com/hmdzl/spspd/levels/TenguDenLevel.java b/java/com/hmdzl/spspd/levels/TenguDenLevel.java index 57b9cbab..4fdc5021 100644 --- a/java/com/hmdzl/spspd/levels/TenguDenLevel.java +++ b/java/com/hmdzl/spspd/levels/TenguDenLevel.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.actors.mobs.Bestiary; import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.levels.Room.Type; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.watabou.noosa.Scene; import com.watabou.utils.Bundle; diff --git a/java/com/hmdzl/spspd/levels/Terrain.java b/java/com/hmdzl/spspd/levels/Terrain.java index 2ee1e26b..5c5ba8e6 100644 --- a/java/com/hmdzl/spspd/levels/Terrain.java +++ b/java/com/hmdzl/spspd/levels/Terrain.java @@ -17,9 +17,6 @@ */ package com.hmdzl.spspd.levels; -import com.hmdzl.spspd.levels.traps.*; -import com.watabou.utils.SparseArray; - public class Terrain { public static final int CHASM = 0; @@ -52,7 +49,7 @@ public class Terrain { public static final int SIGN = 29; public static final int TRAP_AIR = 30; - public static final int EMPTY_AIR = 31; + public static final int GLASS_WALL = 31; public static final int WELL = 34; public static final int STATUE = 35; @@ -109,6 +106,7 @@ public class Terrain { public static final int AVOID = 0x20; public static final int LIQUID = 0x40; public static final int PIT = 0x80; + //public static final int CRASHABLE = 0x03; //public static final int SHOCKABLE = 0x200; public static final int UNSTITCHABLE = 0x100; @@ -122,6 +120,7 @@ public class Terrain { flags[WATER] = PASSABLE | LIQUID | UNSTITCHABLE /*SHOCKABLE*/; flags[WALL] = LOS_BLOCKING | SOLID | UNSTITCHABLE; flags[UNBREAK_WALL] = flags[WALL]; + flags[GLASS_WALL] = flags[STATUE] ; flags[DOOR] = PASSABLE | LOS_BLOCKING | FLAMABLE | SOLID | UNSTITCHABLE; flags[OPEN_DOOR] = PASSABLE | FLAMABLE | UNSTITCHABLE; flags[ENTRANCE] = PASSABLE/* | SOLID */; @@ -154,9 +153,9 @@ public class Terrain { flags[BOOKSHELF] = flags[BARRICADE] | UNSTITCHABLE; flags[ALCHEMY] = PASSABLE; //flags[ALCHEMY] = SOLID; - flags[SHRUB] = FLAMABLE | SOLID | LOS_BLOCKING;; + flags[SHRUB] = FLAMABLE | SOLID | LOS_BLOCKING; - flags[CHASM_WALL] = flags[CHASM]; + flags[CHASM_WALL] = flags[CHASM]; flags[CHASM_FLOOR] = flags[CHASM]; flags[CHASM_FLOOR_SP] = flags[CHASM]; flags[CHASM_WATER] = flags[CHASM]; @@ -195,9 +194,9 @@ public class Terrain { for (int i = WATER_TILES; i < WATER_TILES + 16; i++) { flags[i] = flags[WATER]; } - }; + } - public static int discover(int terr) { + public static int discover(int terr) { switch (terr) { case SECRET_DOOR: return DOOR; diff --git a/java/com/hmdzl/spspd/levels/ThiefCatchLevel.java b/java/com/hmdzl/spspd/levels/ThiefCatchLevel.java index 03638c3c..a53a2c8f 100644 --- a/java/com/hmdzl/spspd/levels/ThiefCatchLevel.java +++ b/java/com/hmdzl/spspd/levels/ThiefCatchLevel.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.actors.mobs.Bestiary; import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.levels.Room.Type; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.watabou.noosa.Scene; import com.watabou.utils.Bundle; diff --git a/java/com/hmdzl/spspd/levels/TownLayouts.java b/java/com/hmdzl/spspd/levels/TownLayouts.java index 3182ea56..c95cbe5a 100644 --- a/java/com/hmdzl/spspd/levels/TownLayouts.java +++ b/java/com/hmdzl/spspd/levels/TownLayouts.java @@ -17,8 +17,6 @@ */ package com.hmdzl.spspd.levels; -import com.watabou.utils.Random; - public class TownLayouts { //32X32 @@ -46,6 +44,7 @@ public class TownLayouts { private static final int C = Terrain.TENT; private static final int H = Terrain.BED; private static final int I = Terrain.EMBERS; + private static final int J = Terrain.GLASS_WALL; //private static final int V = Terrain.TRAP_AIR; @@ -54,29 +53,29 @@ public class TownLayouts { M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, O, O, O, M, M, M, M, M, E, M, T, M, M, M, M, M, E, E, M, M, M, M, M, R, R, R, A, W, W, W, W, W, W, E, E, W, W, W, W, W, W, W, W, M, M, M, M, M, O, E, O, M, - M, M, M, E, E, E, W, S, W, W, W, E, E, E, E, E, E, E, T, C, E, E, E, W, O, O, O, O, W, E, E, G, O, O, G, O, O, O, W, W, W, W, W, W, O, O, O, M, + M, M, M, E, E, E, W, S, W, W, W, E, E, E, E, E, E, E, T, C, E, E, E, W, O, O, O, O, W, E, E, J, O, O, G, O, O, O, W, W, W, W, W, W, O, O, O, M, M, M, O, E, E, E, L, O, O, O, W, E, E, E, E, E, E, E, T, E, E, E, E, W, O, O, O, O, W, E, E, W, O, O, G, G, G, O, W, O, O, O, O, W, M, M, D, M, - M, M, O, E, T, E, G, O, O, O, W, E, E, E, E, E, E, E, T, W, W, S, W, W, O, G, G, G, W, E, E, D, O, O, O, O, O, O, W, O, O, O, H, W, M, M, E, M, + M, M, O, E, T, E, J, O, O, O, W, E, E, E, E, E, E, E, T, W, W, S, W, W, O, G, G, G, W, E, E, D, O, O, O, O, O, O, W, O, O, O, H, W, M, M, E, M, M, M, O, E, E, E, W, W, W, W, W, W, W, W, W, W, E, E, E, W, O, O, O, O, O, O, O, O, E, E, E, W, O, O, O, O, O, O, L, O, O, O, O, W, M, M, E, M, - M, M, M, E, E, E, W, O, O, O, O, O, O, O, O, W, E, E, E, W, O, O, O, O, O, O, O, O, E, E, E, W, O, O, O, O, O, O, W, W, W, G, W, W, M, M, E, M, - M, M, M, E, E, E, W, O, O, O, O, G, G, G, O, W, E, E, E, W, O, O, O, O, O, O, O, O, E, E, E, W, W, W, O, O, O, O, W, R, R, R, R, R, R, M, E, M, - M, M, M, E, E, E, W, O, O, O, O, G, O, O, O, W, E, E, E, W, O, O, O, O, O, O, O, O, E, E, E, E, E, W, O, O, O, O, G, R, R, R, R, R, R, M, E, M, - M, M, M, E, E, E, W, O, O, O, O, G, O, O, O, G, E, E, E, W, O, O, O, O, O, O, O, O, W, E, E, E, E, W, W, W, D, W, W, R, R, R, R, R, U, T, E, M, - M, M, M, M, E, E, W, W, W, D, W, W, O, O, O, W, E, E, E, W, O, O, O, O, O, O, O, O, W, E, E, E, E, W, O, O, O, O, W, E, E, E, R, R, R, M, M, M, - M, M, M, M, E, E, E, E, E, E, E, W, O, O, O, W, E, E, E, W, E, E, E, W, O, O, O, O, W, E, E, E, E, W, O, O, O, O, G, E, E, E, R, R, R, M, M, M, - M, M, M, M, E, E, E, E, E, E, E, W, O, O, O, W, E, E, E, E, E, E, E, W, W, Y, O, O, W, E, E, E, E, W, O, H, O, H, W, W, D, W, W, W, W, M, M, M, + M, M, M, E, E, E, W, O, O, O, O, O, O, O, O, W, E, E, E, W, O, O, O, O, O, O, O, O, E, E, E, W, O, O, O, O, O, O, W, W, W, J, W, W, M, M, E, M, + M, M, M, E, E, E, W, O, O, O, O, G, G, G, O, W, E, E, W, W, J, O, O, O, O, O, O, O, E, E, E, W, W, W, O, O, O, O, W, R, R, R, R, R, R, M, E, M, + M, M, M, E, E, E, W, O, O, O, O, G, O, O, O, W, E, E, W, R, J, O, O, O, O, O, O, O, E, E, E, E, E, W, O, O, O, O, J, R, R, R, R, R, R, M, E, M, + M, M, M, E, E, E, W, O, O, O, O, G, O, O, O, J, E, E, W, R, J, O, O, O, O, O, O, O, W, E, E, E, E, W, W, W, D, W, W, R, R, R, R, R, U, T, E, M, + M, M, M, M, E, E, W, W, W, D, W, W, O, O, O, W, E, E, W, W, J, O, O, O, O, O, O, O, W, E, E, E, E, W, O, O, O, O, W, E, E, E, R, R, R, M, M, M, + M, M, M, M, E, E, E, E, E, E, E, W, O, O, O, W, E, E, E, W, O, O, O, W, O, O, O, O, W, E, E, E, E, W, O, O, O, O, J, E, E, E, R, R, R, M, M, M, + M, M, M, M, E, E, E, E, E, E, E, W, O, O, O, W, E, E, E, W, E, E, E, W, W, Y, O, O, W, E, E, E, E, W, O, H, O, H, W, W, D, W, W, W, W, M, M, M, M, M, M, E, E, E, E, E, E, E, E, W, W, W, W, W, E, E, E, E, E, E, E, E, W, W, W, W, W, E, E, E, E, W, W, W, W, W, W, W, O, O, O, O, W, M, M, M, M, M, M, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, W, O, O, O, O, W, M, M, M, - M, M, M, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, G, O, P, P, O, W, M, M, M, + M, M, M, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, J, O, P, P, O, W, M, M, M, M, M, M, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, U, W, O, O, O, O, W, M, M, M, M, M, M, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, D, O, O, O, O, W, M, M, M, M, M, M, M, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, U, W, O, O, O, O, W, M, M, M, M, M, M, M, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, W, O, O, O, O, W, M, M, M, - M, M, M, W, W, W, W, W, G, W, W, W, E, E, E, E, O, O, O, O, O, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, W, W, W, W, W, W, M, M, M, + M, M, M, W, W, W, W, W, J, W, W, W, E, E, E, E, O, O, O, O, O, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, W, W, W, W, W, W, M, M, M, M, M, M, W, O, O, G, O, O, O, O, W, E, E, E, E, O, R, R, R, O, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, W, O, O, O, O, W, M, M, M, M, M, M, W, O, O, O, O, O, O, O, W, E, E, E, E, O, R, U, R, O, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, W, O, O, O, O, W, M, M, M, - M, M, M, W, O, O, G, G, G, G, G, W, E, E, E, E, O, R, R, R, O, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, G, O, O, O, O, W, M, M, M, - M, M, M, W, O, O, O, O, O, O, O, W, E, E, E, E, O, O, O, O, O, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, G, O, O, O, O, W, M, M, M, + M, M, M, W, O, O, G, G, G, G, G, W, E, E, E, E, O, R, R, R, O, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, J, O, O, O, O, W, M, M, M, + M, M, M, W, O, O, O, O, O, O, O, W, E, E, E, E, O, O, O, O, O, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, J, O, O, O, O, W, M, M, M, M, M, M, W, O, O, O, O, O, O, O, W, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, U, O, U, W, W, W, W, W, E, E, E, E, W, O, O, O, O, W, M, M, M, M, M, M, W, O, O, O, O, O, O, O, W, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, O, O, O, W, B, B, B, W, E, E, E, E, W, O, O, O, O, W, M, M, M, M, M, M, W, W, W, W, W, D, W, W, W, E, E, E, E, E, E, E, E, E, E, E, E, E, E, E, U, O, U, W, O, O, O, W, E, E, E, E, W, W, D, W, W, W, M, M, M, diff --git a/java/com/hmdzl/spspd/levels/TownLevel.java b/java/com/hmdzl/spspd/levels/TownLevel.java index bd35f2ad..415d1cb3 100644 --- a/java/com/hmdzl/spspd/levels/TownLevel.java +++ b/java/com/hmdzl/spspd/levels/TownLevel.java @@ -21,34 +21,49 @@ import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Challenges; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.Statistics; import com.hmdzl.spspd.actors.Actor; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.blobs.Alchemy; import com.hmdzl.spspd.actors.blobs.Alter; import com.hmdzl.spspd.actors.blobs.WellWater; import com.hmdzl.spspd.actors.mobs.AdultDragonViolet; -import com.hmdzl.spspd.actors.mobs.BambooMob; -import com.hmdzl.spspd.actors.mobs.BombBug; -import com.hmdzl.spspd.actors.mobs.Piranha; import com.hmdzl.spspd.actors.mobs.Mob; +import com.hmdzl.spspd.actors.mobs.Piranha; import com.hmdzl.spspd.actors.mobs.TestMob; import com.hmdzl.spspd.actors.mobs.TestMob2; import com.hmdzl.spspd.actors.mobs.npcs.AFly; import com.hmdzl.spspd.actors.mobs.npcs.ARealMan; import com.hmdzl.spspd.actors.mobs.npcs.ATV9; +import com.hmdzl.spspd.actors.mobs.npcs.AliveFish; import com.hmdzl.spspd.actors.mobs.npcs.Apostle; import com.hmdzl.spspd.actors.mobs.npcs.AshWolf; +import com.hmdzl.spspd.actors.mobs.npcs.Bilboldev; import com.hmdzl.spspd.actors.mobs.npcs.BlackMeow; import com.hmdzl.spspd.actors.mobs.npcs.CatSheep; +import com.hmdzl.spspd.actors.mobs.npcs.Coconut; +import com.hmdzl.spspd.actors.mobs.npcs.ConsideredHamster; +import com.hmdzl.spspd.actors.mobs.npcs.Dachhack; import com.hmdzl.spspd.actors.mobs.npcs.DreamPlayer; +import com.hmdzl.spspd.actors.mobs.npcs.Evan; +import com.hmdzl.spspd.actors.mobs.npcs.FruitCat; +import com.hmdzl.spspd.actors.mobs.npcs.G2159687; import com.hmdzl.spspd.actors.mobs.npcs.GoblinPlayer; +import com.hmdzl.spspd.actors.mobs.npcs.HBB; +import com.hmdzl.spspd.actors.mobs.npcs.HateSokoban; +import com.hmdzl.spspd.actors.mobs.npcs.HeXA; import com.hmdzl.spspd.actors.mobs.npcs.HoneyPoooot; import com.hmdzl.spspd.actors.mobs.npcs.Ice13; +import com.hmdzl.spspd.actors.mobs.npcs.Jinkeloid; import com.hmdzl.spspd.actors.mobs.npcs.Juh9870; import com.hmdzl.spspd.actors.mobs.npcs.Kostis12345; +import com.hmdzl.spspd.actors.mobs.npcs.LaJi; +import com.hmdzl.spspd.actors.mobs.npcs.Lery; +import com.hmdzl.spspd.actors.mobs.npcs.Locastan; +import com.hmdzl.spspd.actors.mobs.npcs.Lyn; import com.hmdzl.spspd.actors.mobs.npcs.Lynn; +import com.hmdzl.spspd.actors.mobs.npcs.MemoryOfSand; import com.hmdzl.spspd.actors.mobs.npcs.Millilitre; +import com.hmdzl.spspd.actors.mobs.npcs.NYRDS; import com.hmdzl.spspd.actors.mobs.npcs.NutPainter; import com.hmdzl.spspd.actors.mobs.npcs.OldNewStwist; import com.hmdzl.spspd.actors.mobs.npcs.Omicronrg9; @@ -56,63 +71,43 @@ import com.hmdzl.spspd.actors.mobs.npcs.RENnpc; import com.hmdzl.spspd.actors.mobs.npcs.RainTrainer; import com.hmdzl.spspd.actors.mobs.npcs.Ravenwolf; +import com.hmdzl.spspd.actors.mobs.npcs.Rustyblade; +import com.hmdzl.spspd.actors.mobs.npcs.SFB; +import com.hmdzl.spspd.actors.mobs.npcs.SP931; import com.hmdzl.spspd.actors.mobs.npcs.SadSaltan; import com.hmdzl.spspd.actors.mobs.npcs.SaidbySun; import com.hmdzl.spspd.actors.mobs.npcs.Shopkeeper; import com.hmdzl.spspd.actors.mobs.npcs.Shower; +import com.hmdzl.spspd.actors.mobs.npcs.StormAndRain; +import com.hmdzl.spspd.actors.mobs.npcs.Tempest102; import com.hmdzl.spspd.actors.mobs.npcs.Tinkerer4; import com.hmdzl.spspd.actors.mobs.npcs.Tinkerer5; -import com.hmdzl.spspd.actors.mobs.npcs.Udawos; import com.hmdzl.spspd.actors.mobs.npcs.TypedScroll; -import com.hmdzl.spspd.actors.mobs.npcs.G2159687; -import com.hmdzl.spspd.actors.mobs.npcs.ConsideredHamster; -import com.hmdzl.spspd.actors.mobs.npcs.NYRDS; -import com.hmdzl.spspd.actors.mobs.npcs.Evan; +import com.hmdzl.spspd.actors.mobs.npcs.Udawos; import com.hmdzl.spspd.actors.mobs.npcs.UncleS; import com.hmdzl.spspd.actors.mobs.npcs.Watabou; -import com.hmdzl.spspd.actors.mobs.npcs.Bilboldev; -import com.hmdzl.spspd.actors.mobs.npcs.HBB; -import com.hmdzl.spspd.actors.mobs.npcs.SFB; -import com.hmdzl.spspd.actors.mobs.npcs.Jinkeloid; -import com.hmdzl.spspd.actors.mobs.npcs.Rustyblade; -import com.hmdzl.spspd.actors.mobs.npcs.HeXA; -import com.hmdzl.spspd.actors.mobs.npcs.SP931; -import com.hmdzl.spspd.actors.mobs.npcs.Lery; -import com.hmdzl.spspd.actors.mobs.npcs.Lyn; -import com.hmdzl.spspd.actors.mobs.npcs.Coconut; -import com.hmdzl.spspd.actors.mobs.npcs.FruitCat; -import com.hmdzl.spspd.actors.mobs.npcs.Locastan; -import com.hmdzl.spspd.actors.mobs.npcs.Tempest102; -import com.hmdzl.spspd.actors.mobs.npcs.Dachhack; -import com.hmdzl.spspd.actors.mobs.npcs.MemoryOfSand; -import com.hmdzl.spspd.actors.mobs.npcs.StormAndRain; -import com.hmdzl.spspd.actors.mobs.npcs.HateSokoban; -import com.hmdzl.spspd.actors.mobs.npcs.AliveFish; -import com.hmdzl.spspd.actors.mobs.npcs.LaJi; import com.hmdzl.spspd.actors.mobs.npcs.WhiteGhost; import com.hmdzl.spspd.actors.mobs.npcs.XixiZero; -import com.hmdzl.spspd.items.food.Nut; -import com.hmdzl.spspd.items.food.vegetable.NutVegetable; -import com.hmdzl.spspd.items.eggs.Egg; -import com.hmdzl.spspd.items.Generator; -import com.hmdzl.spspd.items.Heap; -import com.hmdzl.spspd.items.Item; -import com.hmdzl.spspd.items.Ankh; import com.hmdzl.spspd.items.AdamantArmor; import com.hmdzl.spspd.items.AdamantRing; import com.hmdzl.spspd.items.AdamantWand; import com.hmdzl.spspd.items.AdamantWeapon; +import com.hmdzl.spspd.items.Ankh; +import com.hmdzl.spspd.items.Generator; +import com.hmdzl.spspd.items.Heap; +import com.hmdzl.spspd.items.Item; +import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; +import com.hmdzl.spspd.items.eggs.Egg; +import com.hmdzl.spspd.items.food.Nut; import com.hmdzl.spspd.items.food.completefood.PetFood; +import com.hmdzl.spspd.items.food.vegetable.NutVegetable; import com.hmdzl.spspd.items.misc.SkillOfAtk; import com.hmdzl.spspd.items.misc.SkillOfDef; import com.hmdzl.spspd.items.misc.SkillOfMig; import com.hmdzl.spspd.items.quest.DarkGold; - - -import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; -import com.hmdzl.spspd.items.scrolls.ScrollOfUpgrade; import com.hmdzl.spspd.items.scrolls.ScrollOfMagicalInfusion; import com.hmdzl.spspd.items.scrolls.ScrollOfRegrowth; +import com.hmdzl.spspd.items.scrolls.ScrollOfUpgrade; import com.hmdzl.spspd.items.weapon.guns.ToyGun; import com.hmdzl.spspd.items.weapon.melee.special.Brick; import com.hmdzl.spspd.items.weapon.melee.special.DragonBoat; @@ -125,14 +120,13 @@ import com.hmdzl.spspd.items.weapon.melee.special.SJRBMusic; import com.hmdzl.spspd.items.weapon.melee.special.TestWeapon; import com.hmdzl.spspd.items.weapon.melee.special.Tree; -import com.hmdzl.spspd.items.weapon.melee.zero.Bamboo; import com.hmdzl.spspd.items.weapon.missiles.MiniMoai; import com.hmdzl.spspd.items.weapon.missiles.MoneyPack; import com.hmdzl.spspd.items.weapon.missiles.PocketBall; import com.hmdzl.spspd.levels.features.Chasm; import com.hmdzl.spspd.levels.features.Door; import com.hmdzl.spspd.levels.features.HighGrass; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Phaseshift; import com.hmdzl.spspd.plants.Plant; import com.hmdzl.spspd.plants.Starflower; @@ -655,8 +649,8 @@ protected void createItems() { mobs.add(lyn); Mob saidbysun = new SaidbySun(); - saidbysun.pos = 42 + WIDTH * 45;; - mobs.add(saidbysun); + saidbysun.pos = 42 + WIDTH * 45; + mobs.add(saidbysun); } Mob sp931 = new SP931(); @@ -724,6 +718,10 @@ protected void createItems() { Afly.pos = 27 + WIDTH * 17; mobs.add(Afly); + Piranha mob6 = new Piranha(); + mob6.pos = 19 + WIDTH * 9; + mobs.add(mob6); + } diff --git a/java/com/hmdzl/spspd/levels/ZotBossLevel.java b/java/com/hmdzl/spspd/levels/ZotBossLevel.java index 8d602cbc..2b937185 100644 --- a/java/com/hmdzl/spspd/levels/ZotBossLevel.java +++ b/java/com/hmdzl/spspd/levels/ZotBossLevel.java @@ -24,7 +24,7 @@ import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.levels.painters.Painter; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.Camera; diff --git a/java/com/hmdzl/spspd/levels/features/Chasm.java b/java/com/hmdzl/spspd/levels/features/Chasm.java index f17b1f16..1976b771 100644 --- a/java/com/hmdzl/spspd/levels/features/Chasm.java +++ b/java/com/hmdzl/spspd/levels/features/Chasm.java @@ -20,7 +20,6 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Cripple; import com.hmdzl.spspd.actors.hero.Hero; @@ -28,7 +27,7 @@ import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; import com.hmdzl.spspd.levels.RegularLevel; import com.hmdzl.spspd.levels.Room; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.scenes.InterlevelScene; import com.hmdzl.spspd.sprites.MobSprite; @@ -58,8 +57,8 @@ protected void onSelect(int index) { jumpConfirmed = true; hero.resume(); } - }; - }); + } + }); } @@ -106,7 +105,7 @@ public static void heroLand() { public void onDeath() { Badges.validateDeathFromFalling(); - Dungeon.fail(Messages.format(ResultDescriptions.FALL)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n("You fell to death..."); } }); diff --git a/java/com/hmdzl/spspd/levels/features/Sign.java b/java/com/hmdzl/spspd/levels/features/Sign.java index e11e5b98..bd04fbbd 100644 --- a/java/com/hmdzl/spspd/levels/features/Sign.java +++ b/java/com/hmdzl/spspd/levels/features/Sign.java @@ -24,7 +24,7 @@ import com.hmdzl.spspd.levels.DeadEndLevel; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.utils.GLog; import com.hmdzl.spspd.windows.WndMessage; diff --git a/java/com/hmdzl/spspd/levels/painters/LaboratoryPainter.java b/java/com/hmdzl/spspd/levels/painters/CookingPainter.java similarity index 98% rename from java/com/hmdzl/spspd/levels/painters/LaboratoryPainter.java rename to java/com/hmdzl/spspd/levels/painters/CookingPainter.java index 42d39f16..0d92ffab 100644 --- a/java/com/hmdzl/spspd/levels/painters/LaboratoryPainter.java +++ b/java/com/hmdzl/spspd/levels/painters/CookingPainter.java @@ -29,7 +29,7 @@ import com.watabou.utils.Point; import com.watabou.utils.Random; -public class LaboratoryPainter extends Painter { +public class CookingPainter extends Painter { public static void paint(Level level, Room room) { diff --git a/java/com/hmdzl/spspd/levels/painters/GardenPainter.java b/java/com/hmdzl/spspd/levels/painters/GardenPainter.java index 6c08af17..8bd13414 100644 --- a/java/com/hmdzl/spspd/levels/painters/GardenPainter.java +++ b/java/com/hmdzl/spspd/levels/painters/GardenPainter.java @@ -70,7 +70,7 @@ public static void paint(Level level, Room room) { Dungeon.limitedDrops.shopcart.drop(); } - if (Random.Int(100)==0 && (Dungeon.getMonth()==4 || Dungeon.getMonth()==5)){ + if (Random.Int(50)==0 && (Dungeon.getMonth()==4 || Dungeon.getMonth()==5)){ int pos; do {pos = room.random();} while (level.heaps.get(pos) != null); diff --git a/java/com/hmdzl/spspd/levels/painters/TreasuryPainter.java b/java/com/hmdzl/spspd/levels/painters/JunglePainter.java similarity index 98% rename from java/com/hmdzl/spspd/levels/painters/TreasuryPainter.java rename to java/com/hmdzl/spspd/levels/painters/JunglePainter.java index 05748f23..451736da 100644 --- a/java/com/hmdzl/spspd/levels/painters/TreasuryPainter.java +++ b/java/com/hmdzl/spspd/levels/painters/JunglePainter.java @@ -32,7 +32,7 @@ import com.hmdzl.spspd.plants.Seedpod; import com.watabou.utils.Random; -public class TreasuryPainter extends Painter { +public class JunglePainter extends Painter { public static void paint(Level level, Room room) { diff --git a/java/com/hmdzl/spspd/levels/painters/ArmoryPainter.java b/java/com/hmdzl/spspd/levels/painters/MaterialPainter.java similarity index 98% rename from java/com/hmdzl/spspd/levels/painters/ArmoryPainter.java rename to java/com/hmdzl/spspd/levels/painters/MaterialPainter.java index 5ee75dee..33196de8 100644 --- a/java/com/hmdzl/spspd/levels/painters/ArmoryPainter.java +++ b/java/com/hmdzl/spspd/levels/painters/MaterialPainter.java @@ -29,7 +29,7 @@ import com.watabou.utils.Point; import com.watabou.utils.Random; -public class ArmoryPainter extends Painter { +public class MaterialPainter extends Painter { public static void paint(Level level, Room room) { diff --git a/java/com/hmdzl/spspd/levels/painters/ShopPainter.java b/java/com/hmdzl/spspd/levels/painters/ShopPainter.java index be06c43f..ddc6670c 100644 --- a/java/com/hmdzl/spspd/levels/painters/ShopPainter.java +++ b/java/com/hmdzl/spspd/levels/painters/ShopPainter.java @@ -17,46 +17,38 @@ */ package com.hmdzl.spspd.levels.painters; -import java.util.ArrayList; -import java.util.Collections; - import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.hero.Belongings; import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.actors.mobs.npcs.ImpShopkeeper; import com.hmdzl.spspd.actors.mobs.npcs.Shopkeeper; import com.hmdzl.spspd.items.Ankh; +import com.hmdzl.spspd.items.DolyaSlate; import com.hmdzl.spspd.items.Generator; import com.hmdzl.spspd.items.Heap; -import com.hmdzl.spspd.items.armor.normalarmor.PlateArmor; -import com.hmdzl.spspd.items.eggs.Egg; -import com.hmdzl.spspd.items.eggs.RandomEgg; -import com.hmdzl.spspd.items.summon.ActiveMrDestructo; -import com.hmdzl.spspd.items.summon.FairyCard; -import com.hmdzl.spspd.items.summon.Honeypot; import com.hmdzl.spspd.items.Item; -import com.hmdzl.spspd.items.DolyaSlate; import com.hmdzl.spspd.items.Stylus; import com.hmdzl.spspd.items.Torch; -import com.hmdzl.spspd.items.Weightstone; -import com.hmdzl.spspd.items.challengelists.CourageChallenge; -import com.hmdzl.spspd.items.challengelists.PowerChallenge; -import com.hmdzl.spspd.items.challengelists.WisdomChallenge; -import com.hmdzl.spspd.items.food.staplefood.Pasty; -import com.hmdzl.spspd.items.journalpages.Town; -import com.hmdzl.spspd.items.journalpages.SafeSpotPage; -import com.hmdzl.spspd.items.armor.normalarmor.DiscArmor; -import com.hmdzl.spspd.items.armor.normalarmor.MailArmor; -import com.hmdzl.spspd.items.armor.normalarmor.ScaleArmor; import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; import com.hmdzl.spspd.items.bags.PotionBandolier; import com.hmdzl.spspd.items.bags.ScrollHolder; import com.hmdzl.spspd.items.bags.SeedPouch; import com.hmdzl.spspd.items.bags.WandHolster; +import com.hmdzl.spspd.items.challengelists.CourageChallenge; +import com.hmdzl.spspd.items.challengelists.PowerChallenge; +import com.hmdzl.spspd.items.challengelists.WisdomChallenge; +import com.hmdzl.spspd.items.eggs.Egg; +import com.hmdzl.spspd.items.eggs.RandomEgg; +import com.hmdzl.spspd.items.food.staplefood.Pasty; +import com.hmdzl.spspd.items.journalpages.SafeSpotPage; +import com.hmdzl.spspd.items.journalpages.Town; import com.hmdzl.spspd.items.potions.Potion; import com.hmdzl.spspd.items.potions.PotionOfHealing; import com.hmdzl.spspd.items.scrolls.Scroll; import com.hmdzl.spspd.items.scrolls.ScrollOfMagicMapping; +import com.hmdzl.spspd.items.summon.ActiveMrDestructo; +import com.hmdzl.spspd.items.summon.FairyCard; +import com.hmdzl.spspd.items.summon.Honeypot; import com.hmdzl.spspd.items.summon.Mobile; import com.hmdzl.spspd.items.wands.Wand; import com.hmdzl.spspd.items.weapon.guns.GunA; @@ -65,12 +57,8 @@ import com.hmdzl.spspd.items.weapon.guns.GunD; import com.hmdzl.spspd.items.weapon.guns.GunE; import com.hmdzl.spspd.items.weapon.melee.special.Brick; -import com.hmdzl.spspd.items.weapon.melee.special.DragonBoat; -import com.hmdzl.spspd.items.weapon.melee.special.KeyWeapon; -import com.hmdzl.spspd.items.weapon.melee.special.Pumpkin; import com.hmdzl.spspd.items.weapon.missiles.PocketBall; import com.hmdzl.spspd.levels.HallsLevel; -import com.hmdzl.spspd.levels.LastShopLevel; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Room; import com.hmdzl.spspd.levels.Terrain; @@ -78,6 +66,9 @@ import com.watabou.utils.Point; import com.watabou.utils.Random; +import java.util.ArrayList; +import java.util.Collections; + public class ShopPainter extends Painter { private static int pasWidth; @@ -131,7 +122,7 @@ private static void generateItems() { case 1: itemsToSpawn.add(new GunA().identify()); //itemsToSpawn.add(new MiniMoai().identify()); - itemsToSpawn.add(new Pumpkin()); + itemsToSpawn.add(new Brick()); itemsToSpawn.add(new DolyaSlate().identify()); itemsToSpawn.add(new Pasty()); //itemsToSpawn.add(new UnstableSpellbook()); diff --git a/java/com/hmdzl/spspd/levels/painters/StandardPainter.java b/java/com/hmdzl/spspd/levels/painters/StandardPainter.java index ddb7e324..008d5adc 100644 --- a/java/com/hmdzl/spspd/levels/painters/StandardPainter.java +++ b/java/com/hmdzl/spspd/levels/painters/StandardPainter.java @@ -39,7 +39,8 @@ public class StandardPainter extends Painter { public static void paint(Level level, Room room) { - fill(level, room, Terrain.WALL); + fill(level, room, Terrain.WALL ); + for (Room.Door door : room.connected.values()) { door.set(Room.Door.Type.REGULAR); } @@ -66,63 +67,74 @@ public static void paint(Level level, Room room) { } } - if (!Dungeon.bossLevel() && Random.Int(5) == 0) { - switch (Random.Int(7)) { - case 0: - if (level.feeling != Level.Feeling.GRASS) { - if (Math.min(room.width(), room.height()) >= 4 - && Math.max(room.width(), room.height()) >= 6) { - paintGraveyard(level, room); + if (!Dungeon.bossLevel() && Random.Int(4) == 0) { + switch (Random.Int(8)) { + case 0: + if (level.feeling != Level.Feeling.GRASS) { + if (Math.min(room.width(), room.height()) >= 5 + && Math.max(room.width(), room.height()) >= 6) { + paintGraveyard(level, room); + return; + } + break; + } else { + // Burned room + } + case 1: + if (Dungeon.depth > 1) { + paintBurned(level, room); return; } break; - } else { - // Burned room - } - case 1: - if (Dungeon.depth > 1) { - paintBurned(level, room); - return; - } - break; - case 2: - if (Math.max(room.width(), room.height()) >= 4) { - paintStriped(level, room); - return; - } - break; - case 3: - if (room.width() >= 6 && room.height() >= 6) { - paintStudy(level, room); - return; - } - break; - case 4: - if (room.width() >= 6 && room.height() >= 6) { - paintStudy2(level, room); - return; - } - break; - case 5: - if (level.feeling != Level.Feeling.WATER) { - if (room.connected.size() == 2 && room.width() >= 4 - && room.height() >= 4) { - paintBridge(level, room); + case 2: + if (Math.max(room.width(), room.height()) >= 4) { + paintStriped(level, room); return; } break; - } else { - // Fissure - } - case 6: - if (!Dungeon.bossLevel() - && !Dungeon.bossLevel(Dungeon.depth + 1) - && (Dungeon.depth < 22 || Dungeon.depth > 100) - && Math.min(room.width(), room.height()) >= 5) { - paintFissure(level, room); - return; - } - break; + case 3: + if (room.width() >= 6 && room.height() >= 6) { + paintStudy(level, room); + return; + } + break; + case 4: + if (room.width() >= 6 && room.height() >= 6) { + paintStudy2(level, room); + return; + } + break; + case 5: + if (level.feeling != Level.Feeling.WATER) { + if (room.connected.size() == 2 && room.width() >= 4 + && room.height() >= 4) { + paintBridge(level, room); + return; + } + break; + } else { + // Fissure + } + case 6: + if (!Dungeon.bossLevel() + && !Dungeon.bossLevel(Dungeon.depth + 1) + && (Dungeon.depth < 22 || Dungeon.depth > 100) + && Math.min(room.width(), room.height()) >= 5) { + paintFissure(level, room); + return; + } + break; + case 7: + if (level.feeling != Level.Feeling.SPECIAL_FLOOR) { + if (Math.min(room.width(), room.height()) >= 6 + && Math.max(room.width(), room.height()) >= 6) { + paintGlassN(level, room); + return; + } + break; + } else { + // Burned room + } } } @@ -354,6 +366,36 @@ private static void paintStudy2( Level level, Room room ) { // set( bonus, room.center(), Terrain.PEDESTAL ); } + + private static void paintGlassN( Level level, Room room ) { + + fill(level, room.left + 1, room.top + 1, room.width() - 1, + room.height() - 1, Terrain.EMPTY_SP); + fill(level, room.left + 2, room.top + 2, room.width() - 3, + room.height() - 3, Terrain.GLASS_WALL); + + for (Point door : room.connected.values()) { + if (door.x == room.left) { + set(level, door.x + 1, door.y, Terrain.EMPTY); + } else if (door.x == room.right) { + set(level, door.x - 1, door.y, Terrain.EMPTY); + } else if (door.y == room.top) { + set(level, door.x, door.y + 1, Terrain.EMPTY); + } else if (door.y == room.bottom) { + set(level, door.x, door.y - 1, Terrain.EMPTY); + } + } + Point center = room.center(); + set(level, center, Terrain.PEDESTAL); + level.drop(Generator.random(Random.oneOf(Generator.Category.ARTIFACT, + Generator.Category.RING)), (room.center().x + center.y + * Level.getWidth())); + + +// + + } + private static void paintBridge(Level level, Room room) { diff --git a/java/com/hmdzl/spspd/levels/painters/TrapsPainter.java b/java/com/hmdzl/spspd/levels/painters/TrapsPainter.java index 207ab1e5..965b96d5 100644 --- a/java/com/hmdzl/spspd/levels/painters/TrapsPainter.java +++ b/java/com/hmdzl/spspd/levels/painters/TrapsPainter.java @@ -83,7 +83,7 @@ public static void paint(Level level, Room room) { for(int cell : room.getCells()) { if (level.map[cell] == Terrain.TRAP){ try { - level.setTrap(((Trap) trapClass.newInstance()).reveal(), cell); + level.setTrap(trapClass.newInstance().reveal(), cell); } catch (Exception e) { ShatteredPixelDungeon.reportException(e); } diff --git a/java/com/hmdzl/spspd/levels/painters/WeakFloorPainter.java b/java/com/hmdzl/spspd/levels/painters/WeakFloorPainter.java index 2be53650..648cbd81 100644 --- a/java/com/hmdzl/spspd/levels/painters/WeakFloorPainter.java +++ b/java/com/hmdzl/spspd/levels/painters/WeakFloorPainter.java @@ -24,7 +24,7 @@ import com.watabou.utils.Random; import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.CustomTileVisual; public class WeakFloorPainter extends Painter { diff --git a/java/com/hmdzl/spspd/levels/painters/secrets/GlassRoomPainter.java b/java/com/hmdzl/spspd/levels/painters/secrets/GlassRoomPainter.java new file mode 100644 index 00000000..88acae81 --- /dev/null +++ b/java/com/hmdzl/spspd/levels/painters/secrets/GlassRoomPainter.java @@ -0,0 +1,53 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.levels.painters.secrets; + +import com.hmdzl.spspd.items.Item; +import com.hmdzl.spspd.items.artifacts.GlassTotem; +import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.levels.Room; +import com.hmdzl.spspd.levels.Terrain; +import com.hmdzl.spspd.levels.painters.Painter; + +public class GlassRoomPainter extends Painter { + + public static void paint(Level level, Room room) { + + fill(level, room, Terrain.WALL); + fill(level, room, 1, Terrain.EMPTY_SP); + fill( level, room, 2, Terrain.GLASS_WALL); + + int cx = (room.left + room.right) / 2; + int cy = (room.top + room.bottom) / 2; + int c = cx + cy * Level.getWidth(); + + + level.drop(prize(level), c); + set(level, c, Terrain.PEDESTAL); + + + + for (Room.Door door : room.connected.values()) { + door.set(Room.Door.Type.REGULAR); + } + + } + private static Item prize(Level level) { + return new GlassTotem(); + } +} diff --git a/java/com/hmdzl/spspd/levels/traps/AirTrap.java b/java/com/hmdzl/spspd/levels/traps/AirTrap.java index b42c0523..6ea0c8eb 100644 --- a/java/com/hmdzl/spspd/levels/traps/AirTrap.java +++ b/java/com/hmdzl/spspd/levels/traps/AirTrap.java @@ -23,9 +23,7 @@ import com.hmdzl.spspd.actors.buffs.Bleeding; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.effects.Wound; - import com.hmdzl.spspd.messages.Messages; - import com.watabou.utils.Random; public class AirTrap { @@ -35,10 +33,10 @@ public static void trigger( int pos, Char ch ) { if (ch != null) { int damage = Random.NormalIntRange(Dungeon.depth, Dungeon.depth*2); //ch.damage(damage,Bleeding.class); - Buff.affect( ch, Bleeding.class).set((int)(damage/2)); + Buff.affect( ch, Bleeding.class).set(damage/2); Wound.hit( ch ); if (ch == Dungeon.hero && !ch.isAlive()) { - Dungeon.fail(Messages.format(ResultDescriptions.TRAP)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n("You bled to death..."); } } else { diff --git a/java/com/hmdzl/spspd/levels/traps/AlarmTrap.java b/java/com/hmdzl/spspd/levels/traps/AlarmTrap.java index 78e14983..44d075b1 100644 --- a/java/com/hmdzl/spspd/levels/traps/AlarmTrap.java +++ b/java/com/hmdzl/spspd/levels/traps/AlarmTrap.java @@ -21,7 +21,7 @@ package com.hmdzl.spspd.levels.traps; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.TrapSprite; import com.watabou.noosa.audio.Sample; import com.hmdzl.spspd.Assets; diff --git a/java/com/hmdzl/spspd/levels/traps/CursingTrap.java b/java/com/hmdzl/spspd/levels/traps/CursingTrap.java index cfa29592..4e1a4f83 100644 --- a/java/com/hmdzl/spspd/levels/traps/CursingTrap.java +++ b/java/com/hmdzl/spspd/levels/traps/CursingTrap.java @@ -27,7 +27,7 @@ import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.particles.ShadowParticle; import com.hmdzl.spspd.items.*; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.TrapSprite; import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.audio.Sample; diff --git a/java/com/hmdzl/spspd/levels/traps/DisarmingTrap.java b/java/com/hmdzl/spspd/levels/traps/DisarmingTrap.java index f3152535..54c2365b 100644 --- a/java/com/hmdzl/spspd/levels/traps/DisarmingTrap.java +++ b/java/com/hmdzl/spspd/levels/traps/DisarmingTrap.java @@ -32,7 +32,7 @@ import com.hmdzl.spspd.items.weapon.melee.FightGloves; import com.hmdzl.spspd.items.weapon.melee.Knuckles; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.TrapSprite; import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.audio.Sample; diff --git a/java/com/hmdzl/spspd/levels/traps/DisintegrationTrap.java b/java/com/hmdzl/spspd/levels/traps/DisintegrationTrap.java index 3fef957e..c34ad779 100644 --- a/java/com/hmdzl/spspd/levels/traps/DisintegrationTrap.java +++ b/java/com/hmdzl/spspd/levels/traps/DisintegrationTrap.java @@ -23,7 +23,6 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.DungeonTilemap; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.effects.Beam; @@ -31,7 +30,7 @@ import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.bags.Bag; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.TrapSprite; import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.audio.Sample; @@ -65,7 +64,7 @@ public void activate(Char ch) { if (ch == Dungeon.hero){ Hero hero = (Hero)ch; if (!hero.isAlive()){ - Dungeon.fail(ResultDescriptions.TRAP); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n( Messages.get(this, "ondeath") ); } else { Item item = hero.belongings.randomUnequipped(); diff --git a/java/com/hmdzl/spspd/levels/traps/FleecingTrap.java b/java/com/hmdzl/spspd/levels/traps/FleecingTrap.java index 8621d116..fdb2dd84 100644 --- a/java/com/hmdzl/spspd/levels/traps/FleecingTrap.java +++ b/java/com/hmdzl/spspd/levels/traps/FleecingTrap.java @@ -18,7 +18,6 @@ package com.hmdzl.spspd.levels.traps; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.mobs.npcs.Sheep; @@ -29,13 +28,11 @@ import com.hmdzl.spspd.effects.particles.ShadowParticle; import com.hmdzl.spspd.items.KindOfArmor; import com.hmdzl.spspd.items.keys.IronKey; - import com.hmdzl.spspd.items.wands.WandOfFlock; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.InterlevelScene; import com.hmdzl.spspd.sprites.HeroSprite; import com.hmdzl.spspd.utils.GLog; - import com.watabou.noosa.Camera; import com.watabou.noosa.Game; @@ -89,7 +86,7 @@ public static void trigger(int pos, Char ch) { Camera.main.shake(2, 0.3f); if (!ch.isAlive()) { - Dungeon.fail(Messages.format(ResultDescriptions.TRAP)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); } } } diff --git a/java/com/hmdzl/spspd/levels/traps/GrimTrap.java b/java/com/hmdzl/spspd/levels/traps/GrimTrap.java index d51330c8..0c2b5919 100644 --- a/java/com/hmdzl/spspd/levels/traps/GrimTrap.java +++ b/java/com/hmdzl/spspd/levels/traps/GrimTrap.java @@ -25,6 +25,7 @@ import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.effects.Wound; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.sprites.TrapSprite; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Random; @@ -56,7 +57,7 @@ public void activate(Char ch) { damage -= Random.IntRange( ch.drRoll()/2, ch.drRoll()); ch.damage( Math.max(damage, 0) , this); if (!ch.isAlive() && ch == Dungeon.hero){ - Dungeon.fail(ResultDescriptions.TRAP); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n( Messages.get(this, "ondeath") ); } } diff --git a/java/com/hmdzl/spspd/levels/traps/GuardianTrap.java b/java/com/hmdzl/spspd/levels/traps/GuardianTrap.java index a7aa499d..cea927cb 100644 --- a/java/com/hmdzl/spspd/levels/traps/GuardianTrap.java +++ b/java/com/hmdzl/spspd/levels/traps/GuardianTrap.java @@ -28,7 +28,7 @@ import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.items.Heap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.sprites.StatueSprite; import com.hmdzl.spspd.sprites.TrapSprite; diff --git a/java/com/hmdzl/spspd/levels/traps/LightningTrap.java b/java/com/hmdzl/spspd/levels/traps/LightningTrap.java index 4fdf5e70..011311dd 100644 --- a/java/com/hmdzl/spspd/levels/traps/LightningTrap.java +++ b/java/com/hmdzl/spspd/levels/traps/LightningTrap.java @@ -20,20 +20,19 @@ */ package com.hmdzl.spspd.levels.traps; -import com.hmdzl.spspd.ResultDescriptions; -import com.hmdzl.spspd.items.Heap; -import com.hmdzl.spspd.items.Item; -import com.hmdzl.spspd.items.wands.Wand; -import com.hmdzl.spspd.messages.Messages; -import com.hmdzl.spspd.sprites.TrapSprite; -import com.watabou.noosa.Camera; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.Lightning; import com.hmdzl.spspd.effects.particles.SparkParticle; +import com.hmdzl.spspd.items.Heap; +import com.hmdzl.spspd.items.Item; +import com.hmdzl.spspd.items.wands.Wand; import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; +import com.hmdzl.spspd.sprites.TrapSprite; import com.hmdzl.spspd.utils.GLog; +import com.watabou.noosa.Camera; import com.watabou.utils.Random; import java.util.ArrayList; @@ -58,7 +57,7 @@ public void activate(Char ch) { Camera.main.shake( 2, 0.3f ); if (!ch.isAlive()) { - Dungeon.fail(ResultDescriptions.TRAP); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); GLog.n( Messages.get(this, "ondeath") ); } } diff --git a/java/com/hmdzl/spspd/levels/traps/PoisonTrap.java b/java/com/hmdzl/spspd/levels/traps/PoisonTrap.java index 55436fce..579f45a9 100644 --- a/java/com/hmdzl/spspd/levels/traps/PoisonTrap.java +++ b/java/com/hmdzl/spspd/levels/traps/PoisonTrap.java @@ -43,7 +43,7 @@ public void activate(Char ch) { //Char ch = Actor.findChar( pos ); if (ch != null) { - Buff.affect( ch, Poison.class ).set( Poison.durationFactor( ch ) * (4 + Dungeon.depth / 2) ); + Buff.affect( ch, Poison.class ).set(4 + Dungeon.depth / 2 ); } CellEmitter.center( pos ).burst( PoisonParticle.SPLASH, 3 ); diff --git a/java/com/hmdzl/spspd/levels/traps/RockfallTrap.java b/java/com/hmdzl/spspd/levels/traps/RockfallTrap.java index 5bae79ac..d8c997d6 100644 --- a/java/com/hmdzl/spspd/levels/traps/RockfallTrap.java +++ b/java/com/hmdzl/spspd/levels/traps/RockfallTrap.java @@ -22,14 +22,13 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; -import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Paralysis; import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.TrapSprite; import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.Camera; @@ -73,7 +72,7 @@ public void activate(Char ch) { Buff.prolong( ch, Paralysis.class, Paralysis.duration(ch)/2); if (!ch.isAlive() && ch == Dungeon.hero){ - Dungeon.fail( ResultDescriptions.TRAP ); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); GLog.n( Messages.get(this, "ondeath") ); } } diff --git a/java/com/hmdzl/spspd/levels/traps/SpearTrap.java b/java/com/hmdzl/spspd/levels/traps/SpearTrap.java index 2cc4e8bb..24d78298 100644 --- a/java/com/hmdzl/spspd/levels/traps/SpearTrap.java +++ b/java/com/hmdzl/spspd/levels/traps/SpearTrap.java @@ -27,6 +27,7 @@ import com.hmdzl.spspd.effects.Wound; import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.sprites.TrapSprite; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Random; @@ -61,7 +62,7 @@ public void activate(Char ch) { damage -= Random.IntRange( 0, ch.drRoll()); ch.damage( Math.max(damage, 0) , this); if (!ch.isAlive() && ch == Dungeon.hero){ - Dungeon.fail(ResultDescriptions.TRAP); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); //GLog.n( Messages.get(this, "ondeath") ); } } diff --git a/java/com/hmdzl/spspd/levels/traps/TeleportationTrap.java b/java/com/hmdzl/spspd/levels/traps/TeleportationTrap.java index ca730f32..fd42685d 100644 --- a/java/com/hmdzl/spspd/levels/traps/TeleportationTrap.java +++ b/java/com/hmdzl/spspd/levels/traps/TeleportationTrap.java @@ -29,7 +29,7 @@ import com.hmdzl.spspd.items.Heap; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.scrolls.ScrollOfTeleportation; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.TrapSprite; import com.hmdzl.spspd.utils.GLog; import com.watabou.noosa.audio.Sample; diff --git a/java/com/hmdzl/spspd/levels/traps/Trap.java b/java/com/hmdzl/spspd/levels/traps/Trap.java index 312f6ece..9682bb51 100644 --- a/java/com/hmdzl/spspd/levels/traps/Trap.java +++ b/java/com/hmdzl/spspd/levels/traps/Trap.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.TrapSprite; import com.watabou.noosa.audio.Sample; import com.watabou.noosa.tweeners.AlphaTweener; diff --git a/java/com/hmdzl/spspd/levels/traps/WarpingTrap.java b/java/com/hmdzl/spspd/levels/traps/WarpingTrap.java index 3a6b5fbb..876dfafa 100644 --- a/java/com/hmdzl/spspd/levels/traps/WarpingTrap.java +++ b/java/com/hmdzl/spspd/levels/traps/WarpingTrap.java @@ -30,7 +30,7 @@ import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; import com.hmdzl.spspd.items.scrolls.ScrollOfTeleportation; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.InterlevelScene; import com.hmdzl.spspd.sprites.TrapSprite; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/levels/traps/WeakeningTrap.java b/java/com/hmdzl/spspd/levels/traps/WeakeningTrap.java index c0ff114d..3a9e3e26 100644 --- a/java/com/hmdzl/spspd/levels/traps/WeakeningTrap.java +++ b/java/com/hmdzl/spspd/levels/traps/WeakeningTrap.java @@ -24,7 +24,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.buffs.Slow; -import com.hmdzl.spspd.actors.buffs.Weakness; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.particles.ShadowParticle; import com.hmdzl.spspd.items.Heap; @@ -46,9 +46,9 @@ public void activate(Char ch) { //Char ch = Actor.findChar( pos ); if (ch == Dungeon.hero){ - Buff.prolong( ch, Weakness.class, Weakness.duration(ch)*2f); + Buff.prolong( ch, STRdown.class, 10f); } else if (ch != null) { - Buff.prolong( ch, Slow.class, Slow.duration(ch)); + Buff.prolong( ch, Slow.class,10f); } Heap heap = Dungeon.level.heaps.get(pos); if (heap != null) {heap.poison();} diff --git a/java/com/hmdzl/spspd/levels/traps/WornTrap.java b/java/com/hmdzl/spspd/levels/traps/WornTrap.java index 70ce31a6..ef8003c6 100644 --- a/java/com/hmdzl/spspd/levels/traps/WornTrap.java +++ b/java/com/hmdzl/spspd/levels/traps/WornTrap.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.TrapSprite; import com.hmdzl.spspd.utils.GLog; diff --git a/java/com/hmdzl/spspd/mechanics/Ballistica.java b/java/com/hmdzl/spspd/mechanics/Ballistica.java index 72f188af..c73a74a0 100644 --- a/java/com/hmdzl/spspd/mechanics/Ballistica.java +++ b/java/com/hmdzl/spspd/mechanics/Ballistica.java @@ -34,9 +34,12 @@ public class Ballistica { public static final int STOP_TARGET = 1; //ballistica will stop at the target cell public static final int STOP_CHARS = 2; //ballistica will stop on first char hit public static final int STOP_TERRAIN = 4; //ballistica will stop on terrain(LOS blocking, impassable, etc.) + //public static final int STOP_BLOCK = 8; //ballistica will stop on terrain(LOS blocking, impassable, etc.) public static final int PROJECTILE = STOP_TARGET | STOP_CHARS | STOP_TERRAIN; + //public static final int GLASSPASS = STOP_CHARS | STOP_BLOCK ; + public static final int MAGIC_BOLT = STOP_CHARS | STOP_TERRAIN; public static final int WONT_STOP = 0; @@ -105,7 +108,9 @@ private void build( int from, int to, boolean stopTarget, boolean stopChars, boo if ((stopTerrain && cell != sourcePos && Level.losBlockHigh[cell]) || (cell != sourcePos && stopChars && Actor.findChar( cell ) != null) - || (cell == to && stopTarget)){ + || (cell == to && stopTarget) + + ){ collide(cell); } diff --git a/java/com/hmdzl/spspd/messages/Messages.java b/java/com/hmdzl/spspd/messages/Messages.java index e08876ac..8ca584ed 100644 --- a/java/com/hmdzl/spspd/messages/Messages.java +++ b/java/com/hmdzl/spspd/messages/Messages.java @@ -156,11 +156,8 @@ public static String capitalize( String str ){ //Words which should not be capitalized in title case, mostly prepositions which appear ingame //This list is not comprehensive! private static final HashSet noCaps = new HashSet<>( - Arrays.asList(new String[]{ - //English - //"a", "of", "by", "to", "the", "x" - "a", "an", "and", "of", "by", "to", "the", "x" - }) + Arrays.asList(//"a", "of", "by", "to", "the", "x" + "a", "an", "and", "of", "by", "to", "the", "x") ); public static String titleCase( String str ){ diff --git a/java/com/hmdzl/spspd/plants/Dreamfoil.java b/java/com/hmdzl/spspd/plants/Dreamfoil.java index 5590d590..bd3760ce 100644 --- a/java/com/hmdzl/spspd/plants/Dreamfoil.java +++ b/java/com/hmdzl/spspd/plants/Dreamfoil.java @@ -25,9 +25,9 @@ import com.hmdzl.spspd.actors.buffs.Drowsy; import com.hmdzl.spspd.actors.buffs.MagicalSleep; import com.hmdzl.spspd.actors.buffs.Poison; +import com.hmdzl.spspd.actors.buffs.STRdown; import com.hmdzl.spspd.actors.buffs.Slow; import com.hmdzl.spspd.actors.buffs.Vertigo; -import com.hmdzl.spspd.actors.buffs.Weakness; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.items.food.vegetable.DreamLeaf; @@ -51,7 +51,7 @@ else if (ch instanceof Hero) { //GLog.i("You feel refreshed."); Buff.detach(ch, Poison.class); Buff.detach(ch, Cripple.class); - Buff.detach(ch, Weakness.class); + Buff.detach(ch, STRdown.class); Buff.detach(ch, Bleeding.class); Buff.detach(ch, Drowsy.class); Buff.detach(ch, Slow.class); diff --git a/java/com/hmdzl/spspd/plants/Earthroot.java b/java/com/hmdzl/spspd/plants/Earthroot.java index 1e129b5e..1ba6e918 100644 --- a/java/com/hmdzl/spspd/plants/Earthroot.java +++ b/java/com/hmdzl/spspd/plants/Earthroot.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.particles.EarthParticle; import com.hmdzl.spspd.items.potions.PotionOfParalyticGas; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.ui.BuffIndicator; diff --git a/java/com/hmdzl/spspd/plants/NutPlant.java b/java/com/hmdzl/spspd/plants/NutPlant.java index 5b1ff8cf..32853324 100644 --- a/java/com/hmdzl/spspd/plants/NutPlant.java +++ b/java/com/hmdzl/spspd/plants/NutPlant.java @@ -3,10 +3,12 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.Char; import com.hmdzl.spspd.items.food.Nut; +import com.hmdzl.spspd.items.food.fruit.Cherry; +import com.hmdzl.spspd.items.food.fruit.Strawberry; import com.hmdzl.spspd.items.food.vegetable.NutVegetable; -import com.hmdzl.spspd.items.potions.PotionOfHealing; import com.hmdzl.spspd.items.potions.PotionOfShield; import com.hmdzl.spspd.sprites.ItemSpriteSheet; +import com.watabou.utils.Random; /** * Created by Evan on 13/08/2014. @@ -20,7 +22,13 @@ public class NutPlant extends Plant { @Override public void activate(Char ch) { super.activate(ch); - Dungeon.level.drop(new Nut(), pos).sprite.drop(); + if(Random.Int(5)==1){ + if(Random.Int(2)==1){ + Dungeon.level.drop(new Strawberry(), pos).sprite.drop(); + } Dungeon.level.drop(new Cherry(), pos).sprite.drop(); + } else Dungeon.level.drop(new Nut(), pos).sprite.drop(); + + Dungeon.level.drop(new NutVegetable(), pos).sprite.drop(); } @@ -29,7 +37,7 @@ public static class Seed extends Plant.Seed { image = ItemSpriteSheet.SEED_DUNGEONNUT; plantClass = NutPlant.class; - alchemyClass = PotionOfShield.class;; - } + alchemyClass = PotionOfShield.class; + } } } diff --git a/java/com/hmdzl/spspd/plants/Plant.java b/java/com/hmdzl/spspd/plants/Plant.java index e3f2fbf3..fddd9cbd 100644 --- a/java/com/hmdzl/spspd/plants/Plant.java +++ b/java/com/hmdzl/spspd/plants/Plant.java @@ -35,7 +35,7 @@ import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; import com.hmdzl.spspd.sprites.PlantSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Bundlable; @@ -58,15 +58,6 @@ public void activate(Char ch) { } wither(); } - - public static boolean checkPhase(int cell) { - Plant plant = Dungeon.level.plants.get(cell); - if (plant instanceof Phaseshift || plant instanceof Flytrap) { - return true; - } else { - return false; - } - } public void wither() { Dungeon.level.uproot(pos); diff --git a/java/com/hmdzl/spspd/plants/Sorrowmoss.java b/java/com/hmdzl/spspd/plants/Sorrowmoss.java index ca5cb945..6f70c30c 100644 --- a/java/com/hmdzl/spspd/plants/Sorrowmoss.java +++ b/java/com/hmdzl/spspd/plants/Sorrowmoss.java @@ -37,8 +37,7 @@ public void activate(Char ch) { super.activate(ch); if (ch != null) { - Buff.affect(ch, Poison.class).set( - Poison.durationFactor(ch) * (4 + Dungeon.depth / 2)); + Buff.affect(ch, Poison.class).set(4 + Dungeon.depth / 2); } if (Dungeon.visible[pos]) { diff --git a/java/com/hmdzl/spspd/plants/Stormvine.java b/java/com/hmdzl/spspd/plants/Stormvine.java index c97ae0c5..4de96c36 100644 --- a/java/com/hmdzl/spspd/plants/Stormvine.java +++ b/java/com/hmdzl/spspd/plants/Stormvine.java @@ -20,7 +20,7 @@ public void activate(Char ch) { super.activate(ch); if (ch != null) { - Buff.affect(ch, Vertigo.class, Vertigo.duration(ch)); + Buff.affect(ch, Vertigo.class, 10f); } } diff --git a/java/com/hmdzl/spspd/plants/Sungrass.java b/java/com/hmdzl/spspd/plants/Sungrass.java index f5dc79c2..e7f4acf5 100644 --- a/java/com/hmdzl/spspd/plants/Sungrass.java +++ b/java/com/hmdzl/spspd/plants/Sungrass.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.items.food.vegetable.HealGrass; import com.hmdzl.spspd.items.potions.PotionOfHealing; import com.hmdzl.spspd.sprites.ItemSpriteSheet; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.BuffIndicator; import com.watabou.utils.Bundle; diff --git a/java/com/hmdzl/spspd/scenes/AmuletScene.java b/java/com/hmdzl/spspd/scenes/AmuletScene.java index 05742f36..746c7074 100644 --- a/java/com/hmdzl/spspd/scenes/AmuletScene.java +++ b/java/com/hmdzl/spspd/scenes/AmuletScene.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.effects.Flare; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.RedButton; import com.hmdzl.spspd.ui.RenderedTextMultiline; import com.watabou.noosa.Camera; diff --git a/java/com/hmdzl/spspd/scenes/BadgesScene.java b/java/com/hmdzl/spspd/scenes/BadgesScene.java index 43704578..5ea8f1ea 100644 --- a/java/com/hmdzl/spspd/scenes/BadgesScene.java +++ b/java/com/hmdzl/spspd/scenes/BadgesScene.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.Badges; import com.hmdzl.spspd.Chrome; import com.hmdzl.spspd.ShatteredPixelDungeon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.Archs; import com.hmdzl.spspd.ui.BadgesList; import com.hmdzl.spspd.ui.ExitButton; diff --git a/java/com/hmdzl/spspd/scenes/CellSelector.java b/java/com/hmdzl/spspd/scenes/CellSelector.java index 310e4781..f7e38dc7 100644 --- a/java/com/hmdzl/spspd/scenes/CellSelector.java +++ b/java/com/hmdzl/spspd/scenes/CellSelector.java @@ -101,7 +101,7 @@ protected void onTouchUp(Touch t) { int zoom = Math.round(camera.zoom); camera.zoom(zoom); - ShatteredPixelDungeon.zoom((int) (zoom - PixelScene.defaultZoom)); + ShatteredPixelDungeon.zoom(zoom - PixelScene.defaultZoom); dragging = true; if (t == touch) { @@ -161,7 +161,7 @@ public void reset() { int zoom = Math.round(camera.zoom); camera.zoom(zoom); - ShatteredPixelDungeon.zoom((int) (zoom - PixelScene.defaultZoom)); + ShatteredPixelDungeon.zoom(zoom - PixelScene.defaultZoom); } } diff --git a/java/com/hmdzl/spspd/scenes/GameScene.java b/java/com/hmdzl/spspd/scenes/GameScene.java index 8afd4b51..5e8f0822 100644 --- a/java/com/hmdzl/spspd/scenes/GameScene.java +++ b/java/com/hmdzl/spspd/scenes/GameScene.java @@ -51,7 +51,7 @@ import com.hmdzl.spspd.levels.RegularLevel; import com.hmdzl.spspd.levels.features.Chasm; import com.hmdzl.spspd.levels.traps.Trap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Plant; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.sprites.DiscardedItemSprite; @@ -294,6 +294,9 @@ public void create() { case DARK: GLog.w(Messages.get(this, "dark")); break; + case SPECIAL_FLOOR: + GLog.w(Messages.get(this, "spfloor")); + break; default: } if (Dungeon.level instanceof RegularLevel diff --git a/java/com/hmdzl/spspd/scenes/InterlevelScene.java b/java/com/hmdzl/spspd/scenes/InterlevelScene.java index d58b3a9f..df84da16 100644 --- a/java/com/hmdzl/spspd/scenes/InterlevelScene.java +++ b/java/com/hmdzl/spspd/scenes/InterlevelScene.java @@ -17,38 +17,38 @@ */ package com.hmdzl.spspd.scenes; -import java.io.FileNotFoundException; -import java.io.IOException; - import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.Statistics; import com.hmdzl.spspd.actors.Actor; +import com.hmdzl.spspd.actors.hero.HeroClass; import com.hmdzl.spspd.items.Generator; -import com.hmdzl.spspd.items.artifacts.DriedRose; import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.ui.GameLog; import com.hmdzl.spspd.windows.WndError; import com.hmdzl.spspd.windows.WndStory; import com.watabou.noosa.Camera; import com.watabou.noosa.Game; +import com.watabou.noosa.RenderedText; import com.watabou.noosa.audio.Music; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Random; -import com.watabou.noosa.RenderedText; -import com.hmdzl.spspd.messages.Messages; + +import java.io.FileNotFoundException; +import java.io.IOException; public class InterlevelScene extends PixelScene { private static final float TIME_TO_FADE = 0.3f; - public static enum Mode { + public enum Mode { DESCEND, ASCEND, CONTINUE, RESURRECT, RETURN, FALL, /*PORT1, PORT2, PORT3,*/ PORT4, /*PORTSEWERS, PORTPRISON, PORTCAVES, */ PORTSHADOWEATER,PORTPOT, PORTCRAB, PORTTENGU, PORTCOIN, PORTBONE, RETURNSAVE, JOURNAL, SOKOBANFAIL, PALANTIR, BOSSRUSH, PORTMAP, SAVE, SLEEP, CHALLENGEBOOK, RESET,CHAOS - }; + } - public static Mode mode; + public static Mode mode; public static int returnDepth; public static int returnPos; @@ -64,9 +64,9 @@ public static enum Mode { private enum Phase { FADE_IN, STATIC, FADE_OUT - }; + } - private Phase phase; + private Phase phase; private float timeLeft; private RenderedText message; @@ -255,8 +255,8 @@ else throw new RuntimeException( public void onBackPressed() { super.onBackPressed(); Game.switchScene(StartScene.class); - }; - }); + } + }); error = null; } break; @@ -267,7 +267,7 @@ private void descend() throws IOException { Actor.fixTime(); if (Dungeon.hero == null) { - DriedRose.clearHeldGhostHero(); + //DriedRose.clearHeldGhostHero(); Dungeon.init(); if (noStory) { Dungeon.chapters.add(WndStory.ID_SEWERS); @@ -276,7 +276,7 @@ private void descend() throws IOException { GameLog.wipe(); } else { //DriedRose.holdGhostHero( Dungeon.level ); - DriedRose.clearHeldGhostHero(); + //DriedRose.clearHeldGhostHero(); //Dungeon.saveLevel(); Dungeon.saveAll(); } @@ -288,6 +288,7 @@ private void descend() throws IOException { // level = Dungeon.newLevel(); }else if (Dungeon.depth >= Statistics.deepestFloor){ level = Dungeon.newLevel(); + } else { Dungeon.depth++; level = Dungeon.loadLevel(Dungeon.hero.heroClass); @@ -298,7 +299,7 @@ private void descend() throws IOException { private void fall() throws IOException { Actor.fixTime(); - DriedRose.clearHeldGhostHero(); + //DriedRose.clearHeldGhostHero(); //DriedRose.holdGhostHero( Dungeon.level ); //Dungeon.saveLevel(); Dungeon.saveAll(); @@ -317,9 +318,14 @@ private void fall() throws IOException { private void ascend() throws IOException { Actor.fixTime(); //DriedRose.holdGhostHero( Dungeon.level ); - DriedRose.clearHeldGhostHero(); + // DriedRose.clearHeldGhostHero(); Dungeon.saveAll(); //Dungeon.saveLevel(); + if (Dungeon.hero.heroClass == HeroClass.PERFORMER && Dungeon.skins == 6) { + if (Dungeon.hero.spp > Dungeon.hero.lvl){ + Dungeon.hero.spp --; + } else Dungeon.hero.HT--; + } if (Dungeon.depth == 41) { Dungeon.depth=40; Level level = Dungeon.loadLevel(Dungeon.hero.heroClass); @@ -337,7 +343,7 @@ private void ascend() throws IOException { private void returnTo() throws IOException { Actor.fixTime(); - DriedRose.clearHeldGhostHero(); + //DriedRose.clearHeldGhostHero(); //DriedRose.holdGhostHero( Dungeon.level ); //Dungeon.hero.invisible=0; Dungeon.saveAll(); @@ -350,7 +356,7 @@ private void returnTo() throws IOException { private void returnToSave() throws IOException { Actor.fixTime(); - DriedRose.clearHeldGhostHero(); + //DriedRose.clearHeldGhostHero(); // Dungeon.hero.invisible=0; Dungeon.saveAll(); if (Dungeon.bossLevel(Statistics.deepestFloor)){ @@ -366,7 +372,7 @@ private void restore() throws IOException { Actor.fixTime(); GameLog.wipe(); - DriedRose.clearHeldGhostHero(); + //DriedRose.clearHeldGhostHero(); Dungeon.loadGame(StartScene.curClass); if (Dungeon.depth == -1) { Dungeon.depth = Statistics.deepestFloor; @@ -382,7 +388,7 @@ private void restore() throws IOException { private void restore2() throws IOException { Actor.fixTime(); - DriedRose.clearHeldGhostHero(); + // DriedRose.clearHeldGhostHero(); Dungeon.loadGame(StartScene.curClass); if (Dungeon.depth == -1) { Dungeon.depth = Statistics.deepestFloor; @@ -397,7 +403,7 @@ private void restore2() throws IOException { private void restore3() throws IOException { Actor.fixTime(); - DriedRose.clearHeldGhostHero(); + //DriedRose.clearHeldGhostHero(); Dungeon.loadGame(StartScene.curClass); if (Dungeon.depth == -1) { Dungeon.depth = Statistics.deepestFloor; @@ -409,10 +415,10 @@ private void restore3() throws IOException { } } - private void resurrect() throws IOException { + private void resurrect() { Actor.fixTime(); - DriedRose.clearHeldGhostHero(); + //DriedRose.clearHeldGhostHero(); //DriedRose.holdGhostHero( Dungeon.level ); if (Dungeon.level.locked) { @@ -426,7 +432,7 @@ private void resurrect() throws IOException { } } - private void reset() throws IOException { + private void reset() { Actor.fixTime(); Dungeon.depth--; @@ -441,7 +447,7 @@ private void reset() throws IOException { private void portal(int branch) throws IOException { Actor.fixTime(); - DriedRose.clearHeldGhostHero(); + //DriedRose.clearHeldGhostHero(); Dungeon.saveAll(); Level level; @@ -505,7 +511,7 @@ private void portal(int branch) throws IOException { private void journalPortal(int branch) throws IOException { Actor.fixTime(); - DriedRose.clearHeldGhostHero(); + //DriedRose.clearHeldGhostHero(); //DriedRose.holdGhostHero( Dungeon.level ); Dungeon.saveAll(); @@ -531,7 +537,7 @@ private void journalPortal(int branch) throws IOException { private void challengePortal(int branch) throws IOException { Actor.fixTime(); - DriedRose.clearHeldGhostHero(); + //DriedRose.clearHeldGhostHero(); //DriedRose.holdGhostHero( Dungeon.level ); Dungeon.saveAll(); Level level; diff --git a/java/com/hmdzl/spspd/scenes/IntroScene.java b/java/com/hmdzl/spspd/scenes/IntroScene.java index 80945174..fa94a9aa 100644 --- a/java/com/hmdzl/spspd/scenes/IntroScene.java +++ b/java/com/hmdzl/spspd/scenes/IntroScene.java @@ -17,7 +17,7 @@ */ package com.hmdzl.spspd.scenes; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.windows.WndStory; import com.watabou.noosa.Game; diff --git a/java/com/hmdzl/spspd/scenes/LoadSaveScene.java b/java/com/hmdzl/spspd/scenes/LoadSaveScene.java index 0d3c0ae6..b19e6540 100644 --- a/java/com/hmdzl/spspd/scenes/LoadSaveScene.java +++ b/java/com/hmdzl/spspd/scenes/LoadSaveScene.java @@ -12,7 +12,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.GamesInProgress; - import com.hmdzl.spspd.messages.Messages; + import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.Archs; import com.hmdzl.spspd.ui.RedButton; import com.hmdzl.spspd.ui.Window; @@ -294,8 +294,8 @@ protected void onSelect( int index ) { } } ); } - }; - + } + @Override protected void createChildren() { super.createChildren(); diff --git a/java/com/hmdzl/spspd/scenes/PowerHandScene.java b/java/com/hmdzl/spspd/scenes/PowerHandScene.java index d3126b35..97b13c85 100644 --- a/java/com/hmdzl/spspd/scenes/PowerHandScene.java +++ b/java/com/hmdzl/spspd/scenes/PowerHandScene.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.effects.Flare; import com.hmdzl.spspd.effects.Speck; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.RedButton; import com.hmdzl.spspd.ui.RenderedTextMultiline; import com.watabou.noosa.Camera; diff --git a/java/com/hmdzl/spspd/scenes/Pudding_CupScene.java b/java/com/hmdzl/spspd/scenes/Pudding_CupScene.java index 411569d0..787b93d6 100644 --- a/java/com/hmdzl/spspd/scenes/Pudding_CupScene.java +++ b/java/com/hmdzl/spspd/scenes/Pudding_CupScene.java @@ -19,7 +19,7 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.effects.Flare; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.RedButton; import com.hmdzl.spspd.ui.RenderedTextMultiline; import com.watabou.noosa.Camera; diff --git a/java/com/hmdzl/spspd/scenes/RankingsScene.java b/java/com/hmdzl/spspd/scenes/RankingsScene.java index 45af8dfc..6cf2e00e 100644 --- a/java/com/hmdzl/spspd/scenes/RankingsScene.java +++ b/java/com/hmdzl/spspd/scenes/RankingsScene.java @@ -38,7 +38,7 @@ import com.watabou.noosa.audio.Music; import com.watabou.noosa.ui.Button; import com.watabou.utils.GameMath; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class RankingsScene extends PixelScene { diff --git a/java/com/hmdzl/spspd/scenes/StartScene.java b/java/com/hmdzl/spspd/scenes/StartScene.java index 22565079..77b3a5e1 100644 --- a/java/com/hmdzl/spspd/scenes/StartScene.java +++ b/java/com/hmdzl/spspd/scenes/StartScene.java @@ -32,7 +32,7 @@ import com.hmdzl.spspd.ui.Archs; import com.hmdzl.spspd.ui.ExitButton; import com.hmdzl.spspd.ui.Icons; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.RedButton; import com.hmdzl.spspd.windows.WndChallenges; import com.hmdzl.spspd.windows.WndClass; @@ -497,7 +497,8 @@ private class WndSkin extends WndOptions { public WndSkin() { super(Messages.get(Skins.class, "title"), Messages.get(Skins.class, "info"),Messages.get(Skins.class, "normal"), - Messages.get(Skins.class, "first"),Messages.get(Skins.class, "second"),Messages.get(Skins.class, "third"),Messages.get(Skins.class, "fourth"),Messages.get(Skins.class, "fifth")); + Messages.get(Skins.class, "first"),Messages.get(Skins.class, "second"),Messages.get(Skins.class, "third"), + Messages.get(Skins.class, "fourth"),Messages.get(Skins.class, "fifth"),Messages.get(Skins.class, "sixth")); } @Override diff --git a/java/com/hmdzl/spspd/scenes/SurfaceScene.java b/java/com/hmdzl/spspd/scenes/SurfaceScene.java index 527be573..8c97084b 100644 --- a/java/com/hmdzl/spspd/scenes/SurfaceScene.java +++ b/java/com/hmdzl/spspd/scenes/SurfaceScene.java @@ -44,7 +44,7 @@ import com.watabou.noosa.audio.Music; import com.watabou.utils.Point; import com.watabou.utils.Random; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class SurfaceScene extends PixelScene { @@ -144,8 +144,8 @@ public void create() { @Override protected void onClick(Touch touch) { pet.jump(); - }; - }); + } + }); for (int i = 0; i < nPatches; i++) { GrassPatch patch = new GrassPatch((i - 0.5f) * GrassPatch.WIDTH, diff --git a/java/com/hmdzl/spspd/scenes/TitleScene.java b/java/com/hmdzl/spspd/scenes/TitleScene.java index 86b61c3c..1d474bf7 100644 --- a/java/com/hmdzl/spspd/scenes/TitleScene.java +++ b/java/com/hmdzl/spspd/scenes/TitleScene.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.ShatteredPixelDungeon; import com.hmdzl.spspd.effects.BannerSprites; import com.hmdzl.spspd.effects.Fireball; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; //import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.ui.Archs; import com.hmdzl.spspd.ui.ChangesButton; diff --git a/java/com/hmdzl/spspd/scenes/WelcomeScene.java b/java/com/hmdzl/spspd/scenes/WelcomeScene.java index abf9e84b..deb9af82 100644 --- a/java/com/hmdzl/spspd/scenes/WelcomeScene.java +++ b/java/com/hmdzl/spspd/scenes/WelcomeScene.java @@ -10,7 +10,7 @@ import com.watabou.noosa.NinePatch; import com.watabou.noosa.ui.Component; import com.hmdzl.spspd.ui.RenderedTextMultiline; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.RenderedText; import com.hmdzl.spspd.ui.ExitButton; diff --git a/java/com/hmdzl/spspd/sprites/AssassinSprite.java b/java/com/hmdzl/spspd/sprites/AssassinSprite.java index 3fbc09c5..5954fe16 100644 --- a/java/com/hmdzl/spspd/sprites/AssassinSprite.java +++ b/java/com/hmdzl/spspd/sprites/AssassinSprite.java @@ -71,7 +71,7 @@ public void call() { if(Random.Int(5)==0){ - Buff.affect(enemy, Slow.class, Slow.duration(enemy)); + Buff.affect(enemy, Slow.class, 5f); } diff --git a/java/com/hmdzl/spspd/sprites/BlueDragonSprite.java b/java/com/hmdzl/spspd/sprites/BlueDragonSprite.java index 874446c7..3cf58505 100644 --- a/java/com/hmdzl/spspd/sprites/BlueDragonSprite.java +++ b/java/com/hmdzl/spspd/sprites/BlueDragonSprite.java @@ -24,30 +24,39 @@ import com.watabou.noosa.audio.Sample; import com.watabou.utils.Callback; +import java.util.Calendar; + public class BlueDragonSprite extends MobSprite { //Frames 1-4 are idle, 5-8 are moving, 9-12 are attack and the last are for death RBVG - + public boolean festive; public BlueDragonSprite() { super(); - texture(Assets.PETDRAGON); + final Calendar calendar = Calendar.getInstance(); + festive = (calendar.get(Calendar.MONTH) == 10 && calendar + .get(Calendar.WEEK_OF_MONTH) > 2); + + final int c = festive ? 0 : 16; + + texture(Assets.BLUEDRAGON); + TextureFilm frames = new TextureFilm(texture, 16, 16); idle = new Animation(2, true); - idle.frames(frames, 16, 17, 18, 19); + idle.frames(frames, c + 0, c + 1, c + 2, c + 3); run = new Animation(8, true); - run.frames(frames, 20, 21, 22, 23); + run.frames(frames, c + 4, c + 5, c + 6,c + 7); attack = new Animation(8, false); - attack.frames(frames, 24, 25, 26, 27); + attack.frames(frames, c + 8, c + 9, c + 10, c + 11); zap = attack.clone(); die = new Animation(8, false); - die.frames(frames, 28, 29, 30, 31); + die.frames(frames, c + 12, c + 13, c + 14, c + 15); play(idle); } diff --git a/java/com/hmdzl/spspd/sprites/BombBugSprite.java b/java/com/hmdzl/spspd/sprites/BombBugSprite.java new file mode 100644 index 00000000..b9a8abe5 --- /dev/null +++ b/java/com/hmdzl/spspd/sprites/BombBugSprite.java @@ -0,0 +1,48 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.sprites; + +import com.hmdzl.spspd.Assets; +import com.watabou.noosa.TextureFilm; + +public class BombBugSprite extends MobSprite { + + public BombBugSprite() { + super(); + + texture( Assets.ICEBUG ); + + TextureFilm frames = new TextureFilm( texture, 16, 16 ); + + idle = new Animation( 3, true ); + idle.frames(frames, 4, 4, 4, 5, 5, 5); + + run = new Animation( 3, true ); + run.frames( frames, 4,5 ); + + attack = new Animation( 12, false ); + attack.frames( frames, 4, 6, 7 ); + + die = new Animation( 20, false ); + die.frames( frames, 4 ); + + play( idle ); + } + + +} diff --git a/java/com/hmdzl/spspd/sprites/BrokenRobotSprite.java b/java/com/hmdzl/spspd/sprites/BrokenRobotSprite.java index eb984391..47a8f204 100644 --- a/java/com/hmdzl/spspd/sprites/BrokenRobotSprite.java +++ b/java/com/hmdzl/spspd/sprites/BrokenRobotSprite.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.DungeonTilemap; -import com.hmdzl.spspd.effects.DeathRay; +import com.hmdzl.spspd.effects.Beam.LightRay; import com.watabou.noosa.TextureFilm; public class BrokenRobotSprite extends MobSprite { @@ -62,7 +62,7 @@ public void onComplete(Animation anim) { if (anim == attack) { if (Dungeon.visible[ch.pos] || Dungeon.visible[attackPos]) { - parent.add(new DeathRay(center(), DungeonTilemap + parent.add(new LightRay(center(), DungeonTilemap .tileCenterToWorld(attackPos))); } } diff --git a/java/com/hmdzl/spspd/sprites/BugDragonSprite.java b/java/com/hmdzl/spspd/sprites/BugDragonSprite.java index 9dcfd4d0..837fef16 100644 --- a/java/com/hmdzl/spspd/sprites/BugDragonSprite.java +++ b/java/com/hmdzl/spspd/sprites/BugDragonSprite.java @@ -24,32 +24,39 @@ import com.watabou.noosa.audio.Sample; import com.watabou.utils.Callback; +import java.util.Calendar; + public class BugDragonSprite extends MobSprite { //Frames 1-4 are idle, 5-8 are moving, 9-12 are attack and the last are for death RBVG - + public boolean festive; private int[] points = new int[2]; public BugDragonSprite() { super(); + final Calendar calendar = Calendar.getInstance(); + festive = (calendar.get(Calendar.MONTH) == 10 && calendar + .get(Calendar.WEEK_OF_MONTH) > 2); - texture(Assets.PETDRAGON); + final int c = 0 ; + + texture(Assets.BUGDRAGON); TextureFilm frames = new TextureFilm(texture, 16, 16); idle = new Animation(2, true); - idle.frames(frames, 112, 113, 114, 115); + idle.frames(frames, c + 0, c + 1, c + 2, c + 3); run = new Animation(8, true); - run.frames(frames, 116, 117, 118, 119); + run.frames(frames, c + 4, c + 5, c + 6,c + 7); attack = new Animation(8, false); - attack.frames(frames, 120, 121, 122, 123); + attack.frames(frames, c + 8, c + 9, c + 10, c + 11); zap = attack.clone(); - + die = new Animation(8, false); - die.frames(frames, 124, 125, 126, 127); + die.frames(frames, c + 12, c + 13, c + 14, c + 15); play(idle); } diff --git a/java/com/hmdzl/spspd/sprites/CellmobSprite.java b/java/com/hmdzl/spspd/sprites/CellmobSprite.java index 67e22884..daf1c28b 100644 --- a/java/com/hmdzl/spspd/sprites/CellmobSprite.java +++ b/java/com/hmdzl/spspd/sprites/CellmobSprite.java @@ -3,7 +3,7 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.DungeonTilemap; -import com.hmdzl.spspd.effects.DeathRay; +import com.hmdzl.spspd.effects.Beam.DeathRay; import com.watabou.noosa.TextureFilm; public class CellmobSprite extends MobSprite { diff --git a/java/com/hmdzl/spspd/sprites/CharSprite.java b/java/com/hmdzl/spspd/sprites/CharSprite.java index 131d238d..56a81b40 100644 --- a/java/com/hmdzl/spspd/sprites/CharSprite.java +++ b/java/com/hmdzl/spspd/sprites/CharSprite.java @@ -39,7 +39,7 @@ import com.hmdzl.spspd.items.potions.PotionOfInvisibility; import com.hmdzl.spspd.ui.CharHealthIndicator; import com.hmdzl.spspd.levels.Level; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.watabou.noosa.Game; import com.watabou.noosa.MovieClip; @@ -290,14 +290,14 @@ public void add( State state ) { switch (state) { case BURNING: burning = emitter(); - burning.pour( FlameParticle.FACTORY, 0.06f ); + burning.pour( FlameParticle.FACTORY, 0.1f ); if (visible) { Sample.INSTANCE.play( Assets.SND_BURNING ); } break; case LEVITATING: levitation = emitter(); - levitation.pour( Speck.factory( Speck.JET ), 0.02f ); + levitation.pour( Speck.factory( Speck.JET ), 0.2f ); break; case INVISIBLE: PotionOfInvisibility.melt( ch ); @@ -326,7 +326,7 @@ public void add( State state ) { case REGROW: regrow = emitter(); - regrow.pour( LeafParticle.LEVEL_SPECIFIC, 0.06f ); + regrow.pour( LeafParticle.LEVEL_SPECIFIC, 0.1f ); break; case HEALING: healing = emitter(); diff --git a/java/com/hmdzl/spspd/sprites/DwarfLichSprite.java b/java/com/hmdzl/spspd/sprites/DwarfLichSprite.java index e2a6c14a..850a8c3b 100644 --- a/java/com/hmdzl/spspd/sprites/DwarfLichSprite.java +++ b/java/com/hmdzl/spspd/sprites/DwarfLichSprite.java @@ -27,7 +27,6 @@ import com.hmdzl.spspd.effects.CellEmitter; import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.levels.Level; - import com.hmdzl.spspd.messages.Messages; import com.watabou.noosa.TextureFilm; import com.watabou.noosa.audio.Sample; @@ -89,7 +88,7 @@ public void boneExplode(int cell) { if (ch == Dungeon.hero && !ch.isAlive()){ - Dungeon.fail(Messages.format(ResultDescriptions.MOB)); + Dungeon.fail(Messages.format(ResultDescriptions.LOSE)); } } } diff --git a/java/com/hmdzl/spspd/sprites/EnemyheadSprite.java b/java/com/hmdzl/spspd/sprites/EnemyheadSprite.java new file mode 100644 index 00000000..2b2d5216 --- /dev/null +++ b/java/com/hmdzl/spspd/sprites/EnemyheadSprite.java @@ -0,0 +1,99 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.sprites; + +import com.hmdzl.spspd.Assets; +import com.hmdzl.spspd.DungeonTilemap; +import com.hmdzl.spspd.items.Heap; +import com.hmdzl.spspd.levels.Level; +import com.watabou.noosa.MovieClip; +import com.watabou.noosa.TextureFilm; +import com.watabou.utils.PointF; + +public class EnemyheadSprite extends MovieClip { + + public static final int SIZE = 16; + + //private static final float DROP_INTERVAL = 0.4f; + + protected static TextureFilm film; + + public Heap heap; + + //private Glowing glowing; + //private float phase; + //private boolean glowUp; + + private float dropInterval; + + public EnemyheadSprite() { + this(ItemSpriteSheet.SOMETHING); + } + + //public EnemyheadSprite(Item item) { + //this(item.image(), item.glowing()); + //} + + public EnemyheadSprite(int image) { + super(Assets.ITEMS); + + if (film == null) { + film = new TextureFilm(texture, SIZE, SIZE); + } + + } + + public void originToCenter() { + origin.set(SIZE / 2); + } + + public void link() { + link(heap); + } + + public void link(Heap heap) { + this.heap = heap; + //view(heap.image(), heap.glowing()); + place(heap.pos); + } + + @Override + public void revive() { + super.revive(); + + speed.set(0); + acc.set(0); + dropInterval = 0; + + heap = null; + } + + public PointF worldToCamera(int cell) { + final int csize = DungeonTilemap.SIZE; + + return new PointF(cell % Level.getWidth() * csize + (csize - SIZE) * 0.5f, + cell / Level.getWidth() * csize + (csize - SIZE) * 0.5f); + } + + public void place(int p) { + point(worldToCamera(p)); + } + + + +} diff --git a/java/com/hmdzl/spspd/sprites/EnemyheadSpriteSheet.java b/java/com/hmdzl/spspd/sprites/EnemyheadSpriteSheet.java new file mode 100644 index 00000000..961da956 --- /dev/null +++ b/java/com/hmdzl/spspd/sprites/EnemyheadSpriteSheet.java @@ -0,0 +1,42 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.sprites; + +public class EnemyheadSpriteSheet { + + // Row definers + private static final int ROW1 = 0 * 16; + private static final int ROW2 = 1 * 16; + private static final int ROW3 = 2 * 16; + private static final int ROW4 = 3 * 16; + private static final int ROW5 = 4 * 16; + private static final int ROW6 = 5 * 16; + private static final int ROW7 = 6 * 16; + private static final int ROW8 = 7 * 16; + private static final int ROW9 = 8 * 16; + private static final int ROW10 = 9 * 16; + + + // Row One: Items which can't be obtained + // null warning occupies space 0, should only show up if there's a bug. + public static final int NULLWARN = ROW1 + 0; + + + + +} diff --git a/java/com/hmdzl/spspd/sprites/EyeSprite.java b/java/com/hmdzl/spspd/sprites/EyeSprite.java index 74f9ca5d..615e8f0a 100644 --- a/java/com/hmdzl/spspd/sprites/EyeSprite.java +++ b/java/com/hmdzl/spspd/sprites/EyeSprite.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.DungeonTilemap; -import com.hmdzl.spspd.effects.DeathRay; +import com.hmdzl.spspd.effects.Beam.DeathRay; import com.watabou.noosa.TextureFilm; public class EyeSprite extends MobSprite { diff --git a/java/com/hmdzl/spspd/sprites/GoldDragonSprite.java b/java/com/hmdzl/spspd/sprites/GoldDragonSprite.java index 76dd78ad..a075bc5c 100644 --- a/java/com/hmdzl/spspd/sprites/GoldDragonSprite.java +++ b/java/com/hmdzl/spspd/sprites/GoldDragonSprite.java @@ -24,32 +24,41 @@ import com.watabou.noosa.audio.Sample; import com.watabou.utils.Callback; +import java.util.Calendar; + public class GoldDragonSprite extends MobSprite { //Frames 1-4 are idle, 5-8 are moving, 9-12 are attack and the last are for death RBVG - + public boolean festive; private int[] points = new int[2]; public GoldDragonSprite() { super(); - texture(Assets.PETDRAGON); + final Calendar calendar = Calendar.getInstance(); + festive = (calendar.get(Calendar.MONTH) == 10 && calendar + .get(Calendar.WEEK_OF_MONTH) > 2); + + final int c = festive ? 0 : 16; + + texture(Assets.GOLDDRAGON); + TextureFilm frames = new TextureFilm(texture, 16, 16); idle = new Animation(2, true); - idle.frames(frames, 80, 81, 82, 83); + idle.frames(frames, c + 0, c + 1, c + 2, c + 3); run = new Animation(8, true); - run.frames(frames, 84, 85, 86, 87); + run.frames(frames, c + 4, c + 5, c + 6,c + 7); attack = new Animation(8, false); - attack.frames(frames, 88, 89, 90, 91); + attack.frames(frames, c + 8, c + 9, c + 10, c + 11); zap = attack.clone(); die = new Animation(8, false); - die.frames(frames, 92, 93, 94, 95); + die.frames(frames, c + 12, c + 13, c + 14, c + 15); play(idle); } diff --git a/java/com/hmdzl/spspd/sprites/GreenDragonSprite.java b/java/com/hmdzl/spspd/sprites/GreenDragonSprite.java index 975823c3..db89a4ff 100644 --- a/java/com/hmdzl/spspd/sprites/GreenDragonSprite.java +++ b/java/com/hmdzl/spspd/sprites/GreenDragonSprite.java @@ -22,32 +22,41 @@ import com.hmdzl.spspd.effects.Lightning; import com.watabou.noosa.TextureFilm; +import java.util.Calendar; + public class GreenDragonSprite extends MobSprite { //Frames 1-4 are idle, 5-8 are moving, 9-12 are attack and the last are for death RBVG - + public boolean festive; private int[] points = new int[2]; public GreenDragonSprite() { super(); - texture(Assets.PETDRAGON); + final Calendar calendar = Calendar.getInstance(); + festive = (calendar.get(Calendar.MONTH) == 10 && calendar + .get(Calendar.WEEK_OF_MONTH) > 2); + + final int c = festive ? 0 : 16; + + texture(Assets.GREENDRAGON); + TextureFilm frames = new TextureFilm(texture, 16, 16); idle = new Animation(2, true); - idle.frames(frames, 48, 49, 50, 51); + idle.frames(frames, c + 0, c + 1, c + 2, c + 3); run = new Animation(8, true); - run.frames(frames, 52, 53, 54, 55); + run.frames(frames, c + 4, c + 5, c + 6,c + 7); attack = new Animation(8, false); - attack.frames(frames, 56, 57, 58, 59); + attack.frames(frames, c + 8, c + 9, c + 10, c + 11); zap = attack.clone(); die = new Animation(8, false); - die.frames(frames, 60, 61, 62, 63); + die.frames(frames, c + 12, c + 13, c + 14, c + 15); play(idle); } diff --git a/java/com/hmdzl/spspd/sprites/IceBugSprite.java b/java/com/hmdzl/spspd/sprites/IceBugSprite.java new file mode 100644 index 00000000..1d0ff629 --- /dev/null +++ b/java/com/hmdzl/spspd/sprites/IceBugSprite.java @@ -0,0 +1,48 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2014 Oleg Dolya + * + * 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 + */ +package com.hmdzl.spspd.sprites; + +import com.hmdzl.spspd.Assets; +import com.watabou.noosa.TextureFilm; + +public class IceBugSprite extends MobSprite { + + public IceBugSprite() { + super(); + + texture( Assets.ICEBUG ); + + TextureFilm frames = new TextureFilm( texture, 16, 16 ); + + idle = new Animation( 3, true ); + idle.frames(frames, 0, 0, 0, 1, 1, 1); + + run = new Animation( 3, true ); + run.frames( frames, 0,1 ); + + attack = new Animation( 12, false ); + attack.frames( frames, 0, 2, 3 ); + + die = new Animation( 20, false ); + die.frames( frames, 0 ); + + play( idle ); + } + + +} diff --git a/java/com/hmdzl/spspd/sprites/ItemSpriteSheet.java b/java/com/hmdzl/spspd/sprites/ItemSpriteSheet.java index f33f6214..22871679 100644 --- a/java/com/hmdzl/spspd/sprites/ItemSpriteSheet.java +++ b/java/com/hmdzl/spspd/sprites/ItemSpriteSheet.java @@ -50,6 +50,7 @@ public class ItemSpriteSheet { private static final int ROW28 = 27 * 16; private static final int ROW29 = 28 * 16; private static final int ROW30 = 29 * 16; + private static final int ROW31 = 30 * 16; // Row One: Items which can't be obtained // null warning occupies space 0, should only show up if there's a bug. @@ -599,5 +600,30 @@ public class ItemSpriteSheet { public static final int LEADER_FLAG = ROW29 + 13; public static final int WATER_BLOCK = ROW29 + 14; public static final int REWARD_PAPER = ROW30 + 0; + public static final int NUT_CAKE = ROW30 + 1; + public static final int ELEKATANA = ROW30 + 3; + public static final int REDHAND = ROW30 + 2; + public static final int SHOOTGUN = ROW30 + 4; + public static final int TRICK_SAND = ROW30 + 5; + public static final int STRAWBERRY = ROW30 + 6; + public static final int CHERRY = ROW30 + 7; + public static final int MOON_CAKE = ROW30 + 8; + + public static final int INFO = ROW31 + 0; + public static final int INFO_1 = ROW31 + 1; + public static final int INFO_2 = ROW31 + 2; + public static final int INFO_3 = ROW31 + 3; + public static final int INFO_4 = ROW31 + 4; + public static final int INFO_5 = ROW31 + 5; + public static final int INFO_6 = ROW31 + 6; + + public static final int INFO2 = ROW31 + 8; + public static final int INFO2_1 = ROW31 + 9; + public static final int INFO2_2 = ROW31 + 10; + public static final int INFO2_3 = ROW31 + 11; + public static final int INFO2_4 = ROW31 + 12; + public static final int INFO2_5 = ROW31 + 13; + public static final int INFO2_6 = ROW31 + 14; + } diff --git a/java/com/hmdzl/spspd/sprites/LightDragonSprite.java b/java/com/hmdzl/spspd/sprites/LightDragonSprite.java index 40b36928..f57eddc9 100644 --- a/java/com/hmdzl/spspd/sprites/LightDragonSprite.java +++ b/java/com/hmdzl/spspd/sprites/LightDragonSprite.java @@ -23,32 +23,40 @@ import com.hmdzl.spspd.effects.Beam; import com.watabou.noosa.TextureFilm; +import java.util.Calendar; + public class LightDragonSprite extends MobSprite { private int attackPos; //Frames 1-4 are idle, 5-8 are moving, 9-12 are attack and the last are for death RBVG - + public boolean festive; private int[] points = new int[2]; public LightDragonSprite() { super(); - - texture(Assets.PETDRAGON); + final Calendar calendar = Calendar.getInstance(); + festive = (calendar.get(Calendar.MONTH) == 10 && calendar + .get(Calendar.WEEK_OF_MONTH) > 2); + + final int c = festive ? 0 : 16; + + texture(Assets.LIGHTDRAGON); + TextureFilm frames = new TextureFilm(texture, 16, 16); idle = new Animation(2, true); - idle.frames(frames, 96, 97, 98, 99); + idle.frames(frames, c + 0, c + 1, c + 2, c + 3); run = new Animation(8, true); - run.frames(frames, 100, 101, 102, 103); + run.frames(frames, c + 4, c + 5, c + 6,c + 7); attack = new Animation(8, false); - attack.frames(frames, 104, 105, 106, 107); + attack.frames(frames, c + 8, c + 9, c + 10, c + 11); zap = attack.clone(); die = new Animation(8, false); - die.frames(frames, 108, 109, 110, 111); + die.frames(frames, c + 12, c + 13, c + 14, c + 15); play(idle); } diff --git a/java/com/hmdzl/spspd/sprites/MagicEyeSprite.java b/java/com/hmdzl/spspd/sprites/MagicEyeSprite.java index e74c6f22..a5406a25 100644 --- a/java/com/hmdzl/spspd/sprites/MagicEyeSprite.java +++ b/java/com/hmdzl/spspd/sprites/MagicEyeSprite.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.DungeonTilemap; -import com.hmdzl.spspd.effects.DeathRay; +import com.hmdzl.spspd.effects.Beam.DeathRay; import com.watabou.noosa.TextureFilm; public class MagicEyeSprite extends MobSprite { diff --git a/java/com/hmdzl/spspd/sprites/MobSprite.java b/java/com/hmdzl/spspd/sprites/MobSprite.java index c83a7fd9..d992b0f9 100644 --- a/java/com/hmdzl/spspd/sprites/MobSprite.java +++ b/java/com/hmdzl/spspd/sprites/MobSprite.java @@ -46,8 +46,8 @@ public void onComplete(Animation anim) { protected void onComplete() { MobSprite.this.killAndErase(); parent.erase(this); - }; - }); + } + }); } } @@ -61,9 +61,9 @@ public void fall() { protected void onComplete() { MobSprite.this.killAndErase(); parent.erase(this); - }; + } - @Override + @Override protected void updateValues(float progress) { super.updateValues(progress); am = 1 - progress; diff --git a/java/com/hmdzl/spspd/sprites/MrDestructo2dot0Sprite.java b/java/com/hmdzl/spspd/sprites/MrDestructo2dot0Sprite.java index 5c6c02a6..2416f2dd 100644 --- a/java/com/hmdzl/spspd/sprites/MrDestructo2dot0Sprite.java +++ b/java/com/hmdzl/spspd/sprites/MrDestructo2dot0Sprite.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.DungeonTilemap; -import com.hmdzl.spspd.effects.DeathRay; +import com.hmdzl.spspd.effects.Beam.DeathRay; import com.watabou.noosa.TextureFilm; public class MrDestructo2dot0Sprite extends MobSprite { diff --git a/java/com/hmdzl/spspd/sprites/MrDestructoSprite.java b/java/com/hmdzl/spspd/sprites/MrDestructoSprite.java index e8721bff..50f1b7c0 100644 --- a/java/com/hmdzl/spspd/sprites/MrDestructoSprite.java +++ b/java/com/hmdzl/spspd/sprites/MrDestructoSprite.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.DungeonTilemap; -import com.hmdzl.spspd.effects.DeathRay; +import com.hmdzl.spspd.effects.Beam.DeathRay; import com.watabou.noosa.TextureFilm; public class MrDestructoSprite extends MobSprite { diff --git a/java/com/hmdzl/spspd/sprites/NewDargon01Sprite.java b/java/com/hmdzl/spspd/sprites/NewDragon01Sprite.java similarity index 91% rename from java/com/hmdzl/spspd/sprites/NewDargon01Sprite.java rename to java/com/hmdzl/spspd/sprites/NewDragon01Sprite.java index 2b401341..979f8156 100644 --- a/java/com/hmdzl/spspd/sprites/NewDargon01Sprite.java +++ b/java/com/hmdzl/spspd/sprites/NewDragon01Sprite.java @@ -20,17 +20,16 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.actors.mobs.AdultDragonViolet; import com.hmdzl.spspd.effects.MagicMissile; -import com.hmdzl.spspd.effects.Speck; import com.watabou.noosa.TextureFilm; import com.watabou.noosa.audio.Sample; import com.watabou.utils.Callback; -public class NewDargon01Sprite extends MobSprite { +public class NewDragon01Sprite extends MobSprite { - public NewDargon01Sprite() { + public NewDragon01Sprite() { super(); - texture(Assets.NEW_DARGON_01); + texture(Assets.NEW_DRAGON_01); TextureFilm frames = new TextureFilm(texture, 22, 20); diff --git a/java/com/hmdzl/spspd/sprites/NewDargon02Sprite.java b/java/com/hmdzl/spspd/sprites/NewDragon02Sprite.java similarity index 92% rename from java/com/hmdzl/spspd/sprites/NewDargon02Sprite.java rename to java/com/hmdzl/spspd/sprites/NewDragon02Sprite.java index 7385fa5f..b62ac2e4 100644 --- a/java/com/hmdzl/spspd/sprites/NewDargon02Sprite.java +++ b/java/com/hmdzl/spspd/sprites/NewDragon02Sprite.java @@ -21,12 +21,12 @@ import com.hmdzl.spspd.effects.Speck; import com.watabou.noosa.TextureFilm; -public class NewDargon02Sprite extends MobSprite { +public class NewDragon02Sprite extends MobSprite { - public NewDargon02Sprite() { + public NewDragon02Sprite() { super(); - texture(Assets.NEW_DARGON_02); + texture(Assets.NEW_DRAGON_02); TextureFilm frames = new TextureFilm(texture, 22, 20); diff --git a/java/com/hmdzl/spspd/sprites/OrbOfZotSprite.java b/java/com/hmdzl/spspd/sprites/OrbOfZotSprite.java index 366c8f22..18bca05b 100644 --- a/java/com/hmdzl/spspd/sprites/OrbOfZotSprite.java +++ b/java/com/hmdzl/spspd/sprites/OrbOfZotSprite.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.DungeonTilemap; -import com.hmdzl.spspd.effects.DeathRay; +import com.hmdzl.spspd.effects.Beam.DeathRay; import com.watabou.noosa.TextureFilm; public class OrbOfZotSprite extends MobSprite { diff --git a/java/com/hmdzl/spspd/sprites/RedDragonSprite.java b/java/com/hmdzl/spspd/sprites/RedDragonSprite.java index 562e954a..e66cf3e9 100644 --- a/java/com/hmdzl/spspd/sprites/RedDragonSprite.java +++ b/java/com/hmdzl/spspd/sprites/RedDragonSprite.java @@ -24,30 +24,40 @@ import com.watabou.noosa.audio.Sample; import com.watabou.utils.Callback; +import java.util.Calendar; + public class RedDragonSprite extends MobSprite { //Frames 1-4 are idle, 5-8 are moving, 9-12 are attack and the last are for death + public boolean festive; public RedDragonSprite() { super(); - texture(Assets.PETDRAGON); + final Calendar calendar = Calendar.getInstance(); + festive = (calendar.get(Calendar.MONTH) == 10 && calendar + .get(Calendar.WEEK_OF_MONTH) > 2); + + final int c = festive ? 0 : 16; + + texture(Assets.REDDRAGON); + TextureFilm frames = new TextureFilm(texture, 16, 16); idle = new Animation(2, true); - idle.frames(frames, 0, 1, 2, 3); + idle.frames(frames, c + 0, c + 1, c + 2, c + 3); run = new Animation(8, true); - run.frames(frames, 4, 5, 6, 7); + run.frames(frames, c + 4, c + 5, c + 6,c + 7); attack = new Animation(8, false); - attack.frames(frames, 8, 9, 10, 11); + attack.frames(frames, c + 8, c + 9, c + 10, c + 11); zap = attack.clone(); die = new Animation(8, false); - die.frames(frames, 12, 13, 14, 15); + die.frames(frames, c + 12, c + 13, c + 14, c + 15); play(idle); } diff --git a/java/com/hmdzl/spspd/sprites/ShadowDragonSprite.java b/java/com/hmdzl/spspd/sprites/ShadowDragonSprite.java index 5392c6a3..f4dfc614 100644 --- a/java/com/hmdzl/spspd/sprites/ShadowDragonSprite.java +++ b/java/com/hmdzl/spspd/sprites/ShadowDragonSprite.java @@ -24,32 +24,40 @@ import com.watabou.noosa.audio.Sample; import com.watabou.utils.Callback; +import java.util.Calendar; + public class ShadowDragonSprite extends MobSprite { //Frames 1-4 are idle, 5-8 are moving, 9-12 are attack and the last are for death RBVG - + public boolean festive; private int[] points = new int[2]; public ShadowDragonSprite() { super(); - - texture(Assets.PETDRAGON); + final Calendar calendar = Calendar.getInstance(); + festive = (calendar.get(Calendar.MONTH) == 10 && calendar + .get(Calendar.WEEK_OF_MONTH) > 2); + + final int c = festive ? 0 : 16; + + texture(Assets.SHADOWDRAGON); + TextureFilm frames = new TextureFilm(texture, 16, 16); idle = new Animation(2, true); - idle.frames(frames, 64, 65, 66, 67); + idle.frames(frames, c + 0, c + 1, c + 2, c + 3); run = new Animation(8, true); - run.frames(frames, 68, 69, 70, 71); + run.frames(frames, c + 4, c + 5, c + 6,c + 7); attack = new Animation(8, false); - attack.frames(frames, 72, 73, 74, 75); + attack.frames(frames, c + 8, c + 9, c + 10, c + 11); zap = attack.clone(); die = new Animation(8, false); - die.frames(frames, 76, 77, 78, 79); + die.frames(frames, c + 12, c + 13, c + 14, c + 15); play(idle); } diff --git a/java/com/hmdzl/spspd/sprites/ThiefKingSprite.java b/java/com/hmdzl/spspd/sprites/ThiefKingSprite.java index e6997b73..a31154c5 100644 --- a/java/com/hmdzl/spspd/sprites/ThiefKingSprite.java +++ b/java/com/hmdzl/spspd/sprites/ThiefKingSprite.java @@ -108,11 +108,11 @@ public void call() { if(Random.Int(10)==0){ - Buff.affect(enemy, Slow.class, Slow.duration(enemy) / 2); + Buff.affect(enemy, Slow.class, 2f); } if(Random.Int(10)==0){ - Buff.affect(enemy, Poison.class).set(Random.Int(7, 9) * Poison.durationFactor(enemy)); + Buff.affect(enemy, Poison.class).set(Random.Int(7, 9)); } play(cast); diff --git a/java/com/hmdzl/spspd/sprites/UTenguSprite.java b/java/com/hmdzl/spspd/sprites/UTenguSprite.java index a6246357..24947eab 100644 --- a/java/com/hmdzl/spspd/sprites/UTenguSprite.java +++ b/java/com/hmdzl/spspd/sprites/UTenguSprite.java @@ -95,7 +95,7 @@ public void call() { enemy.sprite.emitter().burst(FlameParticle.FACTORY, 5); } if(Random.Int(20)==0){ - Buff.affect(enemy, Slow.class, Slow.duration(enemy) / 2); + Buff.affect(enemy, Slow.class, 4f); } if(Random.Int(30)==0){ diff --git a/java/com/hmdzl/spspd/sprites/VioletDragonSprite.java b/java/com/hmdzl/spspd/sprites/VioletDragonSprite.java index 23189236..0b961e1f 100644 --- a/java/com/hmdzl/spspd/sprites/VioletDragonSprite.java +++ b/java/com/hmdzl/spspd/sprites/VioletDragonSprite.java @@ -24,30 +24,39 @@ import com.watabou.noosa.audio.Sample; import com.watabou.utils.Callback; +import java.util.Calendar; + public class VioletDragonSprite extends MobSprite { //Frames 1-4 are idle, 5-8 are moving, 9-12 are attack and the last are for death - + public boolean festive; public VioletDragonSprite() { super(); - texture(Assets.PETDRAGON); + final Calendar calendar = Calendar.getInstance(); + festive = (calendar.get(Calendar.MONTH) == 10 && calendar + .get(Calendar.WEEK_OF_MONTH) > 2); + + final int c = festive ? 0 : 16; + + texture(Assets.VIOLETDRAGON); + TextureFilm frames = new TextureFilm(texture, 16, 16); idle = new Animation(2, true); - idle.frames(frames, 32, 33, 34, 35); + idle.frames(frames, c + 0, c + 1, c + 2, c + 3); run = new Animation(8, true); - run.frames(frames, 36, 37, 38, 39); + run.frames(frames, c + 4, c + 5, c + 6,c + 7); attack = new Animation(8, false); - attack.frames(frames, 40, 41, 42, 43); + attack.frames(frames, c + 8, c + 9, c + 10, c + 11); zap = attack.clone(); die = new Animation(8, false); - die.frames(frames, 44, 45, 46, 47); + die.frames(frames, c + 12, c + 13, c + 14, c + 15); play(idle); } diff --git a/java/com/hmdzl/spspd/ui/ActionIndicator.java b/java/com/hmdzl/spspd/ui/ActionIndicator.java index 3a283bb3..2a81b182 100644 --- a/java/com/hmdzl/spspd/ui/ActionIndicator.java +++ b/java/com/hmdzl/spspd/ui/ActionIndicator.java @@ -110,9 +110,9 @@ public static void updateIcon(){ public interface Action{ - public Image getIcon(); + Image getIcon(); - public void doAction(); + void doAction(); } diff --git a/java/com/hmdzl/spspd/ui/Banner.java b/java/com/hmdzl/spspd/ui/Banner.java index 5c3393d1..7f073f0a 100644 --- a/java/com/hmdzl/spspd/ui/Banner.java +++ b/java/com/hmdzl/spspd/ui/Banner.java @@ -24,9 +24,9 @@ public class Banner extends Image { private enum State { FADE_IN, STATIC, FADE_OUT - }; + } - private State state; + private State state; private float time; diff --git a/java/com/hmdzl/spspd/ui/BuffIndicator.java b/java/com/hmdzl/spspd/ui/BuffIndicator.java index bcfbdd2d..ff261222 100644 --- a/java/com/hmdzl/spspd/ui/BuffIndicator.java +++ b/java/com/hmdzl/spspd/ui/BuffIndicator.java @@ -124,7 +124,18 @@ public class BuffIndicator extends Component { public static final int STONE_ICE = 84; public static final int MAGICWEAK = 85; - public static final int MIND_BUFF = 86; + public static final int ICE_BITE = 86; + public static final int ZERO_DEW = 87; + + public static final int FROST_BITE = 88; + public static final int INF_JUMP = 89; + public static final int LIGHT_ATK = 90; + public static final int BE_CORRUPT = 91; + public static final int BE_OLD = 92; + public static final int CRAZY_MIND = 93; + //public static final int ZERO_DEW = 94; + + public static final int SIZE = 7; @@ -261,8 +272,8 @@ protected void layout() { protected void updateValues( float progress ) { super.updateValues( progress ); image.scale.set( 1 + 5 * progress ); - }; - } ); + } + } ); } } diff --git a/java/com/hmdzl/spspd/ui/ItemSlot.java b/java/com/hmdzl/spspd/ui/ItemSlot.java index f07928f3..4035ea65 100644 --- a/java/com/hmdzl/spspd/ui/ItemSlot.java +++ b/java/com/hmdzl/spspd/ui/ItemSlot.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.items.potions.Potion; import com.hmdzl.spspd.items.scrolls.Scroll; import com.hmdzl.spspd.items.weapon.Weapon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.items.weapon.melee.MeleeWeapon; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; @@ -67,38 +67,38 @@ public class ItemSlot extends Button { @Override public int image() { return ItemSpriteSheet.CHEST; - }; - }; + } + }; public static final Item LOCKED_CHEST = new Item() { @Override public int image() { return ItemSpriteSheet.LOCKED_CHEST; - }; - }; + } + }; public static final Item CRYSTAL_CHEST = new Item() { @Override public int image() { return ItemSpriteSheet.CRYSTAL_CHEST; - }; - }; + } + }; public static final Item TOMB = new Item() { @Override public int image() { return ItemSpriteSheet.TOMB; - }; - }; + } + }; public static final Item SKELETON = new Item() { @Override public int image() { return ItemSpriteSheet.BONES; - }; - }; + } + }; public static final Item REMAINS = new Item() { @Override public int image() { return ItemSpriteSheet.REMAINS; - }; - }; + } + }; public ItemSlot() { super(); diff --git a/java/com/hmdzl/spspd/ui/LanguageButton.java b/java/com/hmdzl/spspd/ui/LanguageButton.java index e627c02b..ccc85852 100644 --- a/java/com/hmdzl/spspd/ui/LanguageButton.java +++ b/java/com/hmdzl/spspd/ui/LanguageButton.java @@ -22,7 +22,7 @@ package com.hmdzl.spspd.ui; import com.hmdzl.spspd.Assets; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.windows.WndLangs; import com.watabou.noosa.Image; import com.watabou.noosa.audio.Sample; diff --git a/java/com/hmdzl/spspd/ui/LootIndicator.java b/java/com/hmdzl/spspd/ui/LootIndicator.java index 4f6b47df..35d9f8a7 100644 --- a/java/com/hmdzl/spspd/ui/LootIndicator.java +++ b/java/com/hmdzl/spspd/ui/LootIndicator.java @@ -44,8 +44,8 @@ protected void createChildren() { protected void onClick() { Dungeon.hero.handle(Dungeon.hero.pos); - }; - }; + } + }; slot.showParams(true, false, false, false); add(slot); } diff --git a/java/com/hmdzl/spspd/ui/QuickSlotButton.java b/java/com/hmdzl/spspd/ui/QuickSlotButton.java index df3f6e3f..dc9bb8c2 100644 --- a/java/com/hmdzl/spspd/ui/QuickSlotButton.java +++ b/java/com/hmdzl/spspd/ui/QuickSlotButton.java @@ -28,7 +28,7 @@ import com.hmdzl.spspd.windows.WndBag; import com.watabou.noosa.Image; import com.watabou.noosa.ui.Button; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class QuickSlotButton extends Button implements WndBag.Listener { diff --git a/java/com/hmdzl/spspd/ui/RedButton.java b/java/com/hmdzl/spspd/ui/RedButton.java index b56df4d3..129b2cbf 100644 --- a/java/com/hmdzl/spspd/ui/RedButton.java +++ b/java/com/hmdzl/spspd/ui/RedButton.java @@ -29,7 +29,7 @@ import com.watabou.noosa.audio.Sample; import com.watabou.noosa.ui.Button; -public class RedButton extends Button { +/*public class RedButton extends Button { protected NinePatch bg; protected RenderedText text; @@ -118,4 +118,146 @@ public float reqWidth() { public float reqHeight() { return text.baseLine() + 4; } +}*/ + +/* + * Pixel Dungeon + * Copyright (C) 2012-2015 Oleg Dolya + * + * Shattered Pixel Dungeon + * Copyright (C) 2014-2018 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 + */ + +public class RedButton extends Button { + + protected NinePatch bg; + protected RenderedText text; + protected Image icon; + + public RedButton( String label ) { + this(label, 9); + } + + public RedButton( String label, int size ){ + super(); + + text = PixelScene.renderText( size ); + text.text( label ); + add( text ); + } + + @Override + protected void createChildren() { + super.createChildren(); + + bg = Chrome.get( Chrome.Type.BUTTON ); + add( bg ); + } + + @Override + protected void layout() { + + super.layout(); + + bg.x = x; + bg.y = y; + bg.size( width, height ); + + float componentWidth = 0; + + if (icon != null) componentWidth += icon.width() + 2; + + if (text != null && !text.text().equals("")){ + componentWidth += text.width() + 2; + + text.x = x + (width() - componentWidth)/2f + 1; + text.y = y + (height() - text.baseLine()) / 2f; + PixelScene.align(text); + + } + + if (icon != null) { + + icon.x = x + (width() + componentWidth)/2f - icon.width() - 1; + icon.y = y + (height() - icon.height()) / 2f; + PixelScene.align(icon); + } + + } + + @Override + protected void onTouchDown() { + bg.brightness( 1.2f ); + Sample.INSTANCE.play( Assets.SND_CLICK ); + } + + @Override + protected void onTouchUp() { + bg.resetColor(); + } + + public void enable( boolean value ) { + active = value; + text.alpha( value ? 1.0f : 0.3f ); + } + + public void text( String value ) { + text.text( value ); + layout(); + } + + public void textColor( int value ) { + text.hardlight( value ); + } + + public void icon( Image icon ) { + if (this.icon != null) { + remove( this.icon ); + } + this.icon = icon; + if (this.icon != null) { + add( this.icon ); + layout(); + } + } + + public Image icon(){ + return icon; + } + + public float reqWidth() { + float reqWidth = 0; + if (icon != null){ + reqWidth += icon.width() + 2; + } + if (text != null && !text.text().equals("")){ + reqWidth += text.width() + 2; + } + return reqWidth; + } + + public float reqHeight() { + float reqHeight = 0; + if (icon != null){ + reqHeight = Math.max(icon.height() + 4, reqHeight); + } + if (text != null && !text.text().equals("")){ + reqHeight = Math.max(text.baseLine() + 4, reqHeight); + } + return reqHeight; + } } + diff --git a/java/com/hmdzl/spspd/ui/SimpleButton.java b/java/com/hmdzl/spspd/ui/SimpleButton.java index 708010e6..d7f5b18e 100644 --- a/java/com/hmdzl/spspd/ui/SimpleButton.java +++ b/java/com/hmdzl/spspd/ui/SimpleButton.java @@ -43,18 +43,18 @@ protected void createChildren() { @Override protected void onTouchDown(Touch touch) { image.brightness(1.2f); - }; + } - @Override + @Override protected void onTouchUp(Touch touch) { image.brightness(1.0f); - }; + } - @Override + @Override protected void onClick(Touch touch) { SimpleButton.this.onClick(); - }; - }); + } + }); } @Override @@ -64,5 +64,5 @@ protected void layout() { } protected void onClick() { - }; + } } diff --git a/java/com/hmdzl/spspd/ui/StatusPane.java b/java/com/hmdzl/spspd/ui/StatusPane.java index 1af29fe5..ad36157a 100644 --- a/java/com/hmdzl/spspd/ui/StatusPane.java +++ b/java/com/hmdzl/spspd/ui/StatusPane.java @@ -79,8 +79,8 @@ protected void onClick(Touch touch) { Camera.main.focusOn(sprite); } GameScene.show(new WndHero()); - }; - }); + } + }); btnMenu = new MenuButton(); add(btnMenu); diff --git a/java/com/hmdzl/spspd/ui/Toast.java b/java/com/hmdzl/spspd/ui/Toast.java index 2d140aa7..c535d554 100644 --- a/java/com/hmdzl/spspd/ui/Toast.java +++ b/java/com/hmdzl/spspd/ui/Toast.java @@ -53,8 +53,8 @@ protected void createChildren() { @Override protected void onClick() { onClose(); - }; - }; + } + }; add(close); text = PixelScene.renderText(8); @@ -83,5 +83,5 @@ public void text(String txt) { } protected void onClose() { - }; + } } diff --git a/java/com/hmdzl/spspd/ui/Toolbar.java b/java/com/hmdzl/spspd/ui/Toolbar.java index b2ff3ffc..72a97756 100644 --- a/java/com/hmdzl/spspd/ui/Toolbar.java +++ b/java/com/hmdzl/spspd/ui/Toolbar.java @@ -27,7 +27,7 @@ import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.windows.WndBag; import com.hmdzl.spspd.windows.WndCatalogus; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.Game; import com.watabou.noosa.Gizmo; import com.watabou.noosa.Image; @@ -74,15 +74,15 @@ protected void createChildren() { protected void onClick() { examining = false; Dungeon.hero.rest(false); - }; + } - @Override + @Override protected boolean onLongClick() { examining = false; Dungeon.hero.rest(true); return true; - }; - }); + } + }); add(btnSearch = new Tool(20, 7, 20, 24) { @Override @@ -100,8 +100,8 @@ protected void onClick() { protected boolean onLongClick() { Dungeon.hero.search(true); return true; - }; - } ); + } + } ); /*add(btnInfo = new Tool(40, 7, 21, 24) { @Override @@ -148,21 +148,21 @@ protected void onClick() { protected boolean onLongClick() { GameScene.show(new WndCatalogus()); return true; - }; + } - @Override + @Override protected void createChildren() { super.createChildren(); gold = new GoldIndicator(); add(gold); - }; + } - @Override + @Override protected void layout() { super.layout(); gold.fill(this); - }; - }); + } + }); add(btnQuick = new QuickslotTool(105, 7, 22, 24, 0)); @@ -311,9 +311,9 @@ public void enable(boolean value) { active = value; } } - }; + } - private static class QuickslotTool extends Tool { + private static class QuickslotTool extends Tool { private QuickSlotButton slot; diff --git a/java/com/hmdzl/spspd/utils/GLog.java b/java/com/hmdzl/spspd/utils/GLog.java index 629a9bd6..6d340f85 100644 --- a/java/com/hmdzl/spspd/utils/GLog.java +++ b/java/com/hmdzl/spspd/utils/GLog.java @@ -20,7 +20,7 @@ import android.util.Log; import com.watabou.utils.Signal; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class GLog { diff --git a/java/com/hmdzl/spspd/windows/IconTitle.java b/java/com/hmdzl/spspd/windows/IconTitle.java index 8c9546cb..28d0faca 100644 --- a/java/com/hmdzl/spspd/windows/IconTitle.java +++ b/java/com/hmdzl/spspd/windows/IconTitle.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.ui.HealthBar; import com.hmdzl.spspd.ui.RenderedTextMultiline; import com.hmdzl.spspd.ui.Window; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.Image; import com.watabou.noosa.ui.Component; diff --git a/java/com/hmdzl/spspd/windows/WndAflyInfo.java b/java/com/hmdzl/spspd/windows/WndAflyInfo.java index 8a8631fc..dc560ad0 100644 --- a/java/com/hmdzl/spspd/windows/WndAflyInfo.java +++ b/java/com/hmdzl/spspd/windows/WndAflyInfo.java @@ -15,7 +15,7 @@ import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.HeroSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.sprites.ItemSpriteSheet; import com.hmdzl.spspd.ui.Icons; diff --git a/java/com/hmdzl/spspd/windows/WndAlchemy.java b/java/com/hmdzl/spspd/windows/WndAlchemy.java index 1ea96979..2efe3cc7 100644 --- a/java/com/hmdzl/spspd/windows/WndAlchemy.java +++ b/java/com/hmdzl/spspd/windows/WndAlchemy.java @@ -31,37 +31,20 @@ import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.StoneOre; import com.hmdzl.spspd.items.Torch; -import com.hmdzl.spspd.items.eggs.Egg; -import com.hmdzl.spspd.items.food.WaterItem; import com.hmdzl.spspd.items.Weightstone; import com.hmdzl.spspd.items.artifacts.AlchemistsToolkit; import com.hmdzl.spspd.items.bombs.BuildBomb; -import com.hmdzl.spspd.items.food.completefood.Chocolate; -import com.hmdzl.spspd.items.food.completefood.FoodFans; -import com.hmdzl.spspd.items.food.completefood.Frenchfries; -import com.hmdzl.spspd.items.food.completefood.ZongZi; -import com.hmdzl.spspd.items.food.staplefood.NormalRation; -import com.hmdzl.spspd.items.food.vegetable.NutVegetable; -import com.hmdzl.spspd.items.medicine.BlueMilk; -import com.hmdzl.spspd.items.medicine.DeathCap; -import com.hmdzl.spspd.items.medicine.Earthstar; -import com.hmdzl.spspd.items.medicine.GoldenJelly; -import com.hmdzl.spspd.items.medicine.GreenSpore; -import com.hmdzl.spspd.items.medicine.Hardpill; -import com.hmdzl.spspd.items.medicine.JackOLantern; -import com.hmdzl.spspd.items.medicine.Magicpill; -import com.hmdzl.spspd.items.medicine.Musicpill; -import com.hmdzl.spspd.items.medicine.PixieParasol; -import com.hmdzl.spspd.items.medicine.Powerpill; -import com.hmdzl.spspd.items.medicine.RealgarWine; -import com.hmdzl.spspd.items.medicine.Shootpill; -import com.hmdzl.spspd.items.medicine.Smashpill; -import com.hmdzl.spspd.items.potions.PotionOfMixing; -import com.hmdzl.spspd.items.summon.Honeypot; import com.hmdzl.spspd.items.bombs.HugeBomb; +import com.hmdzl.spspd.items.eggs.Egg; +import com.hmdzl.spspd.items.food.Honey; +import com.hmdzl.spspd.items.food.Nut; +import com.hmdzl.spspd.items.food.WaterItem; import com.hmdzl.spspd.items.food.completefood.Chickennugget; +import com.hmdzl.spspd.items.food.completefood.Chocolate; import com.hmdzl.spspd.items.food.completefood.Crystalnucleus; import com.hmdzl.spspd.items.food.completefood.Foamedbeverage; +import com.hmdzl.spspd.items.food.completefood.FoodFans; +import com.hmdzl.spspd.items.food.completefood.Frenchfries; import com.hmdzl.spspd.items.food.completefood.Fruitsalad; import com.hmdzl.spspd.items.food.completefood.Garbage; import com.hmdzl.spspd.items.food.completefood.Gel; @@ -74,24 +57,44 @@ import com.hmdzl.spspd.items.food.completefood.Icecream; import com.hmdzl.spspd.items.food.completefood.Kebab; import com.hmdzl.spspd.items.food.completefood.Meatroll; +import com.hmdzl.spspd.items.food.completefood.MoonCake; +import com.hmdzl.spspd.items.food.completefood.NutCake; +import com.hmdzl.spspd.items.food.completefood.PerfectFood; +import com.hmdzl.spspd.items.food.completefood.PetFood; import com.hmdzl.spspd.items.food.completefood.Porksoup; import com.hmdzl.spspd.items.food.completefood.Ricefood; import com.hmdzl.spspd.items.food.completefood.Vegetablekebab; import com.hmdzl.spspd.items.food.completefood.Vegetableroll; import com.hmdzl.spspd.items.food.completefood.Vegetablesoup; +import com.hmdzl.spspd.items.food.completefood.ZongZi; import com.hmdzl.spspd.items.food.fruit.Blandfruit; import com.hmdzl.spspd.items.food.fruit.Fruit; import com.hmdzl.spspd.items.food.meatfood.MeatFood; -import com.hmdzl.spspd.items.food.Nut; -import com.hmdzl.spspd.items.food.completefood.PerfectFood; -import com.hmdzl.spspd.items.food.completefood.PetFood; -import com.hmdzl.spspd.items.food.Honey; +import com.hmdzl.spspd.items.food.staplefood.NormalRation; import com.hmdzl.spspd.items.food.staplefood.OverpricedRation; import com.hmdzl.spspd.items.food.staplefood.StapleFood; +import com.hmdzl.spspd.items.food.vegetable.NutVegetable; import com.hmdzl.spspd.items.food.vegetable.Vegetable; +import com.hmdzl.spspd.items.medicine.BlueMilk; +import com.hmdzl.spspd.items.medicine.DeathCap; +import com.hmdzl.spspd.items.medicine.Earthstar; +import com.hmdzl.spspd.items.medicine.GoldenJelly; +import com.hmdzl.spspd.items.medicine.GreenSpore; +import com.hmdzl.spspd.items.medicine.Hardpill; +import com.hmdzl.spspd.items.medicine.JackOLantern; +import com.hmdzl.spspd.items.medicine.Magicpill; +import com.hmdzl.spspd.items.medicine.Musicpill; +import com.hmdzl.spspd.items.medicine.PixieParasol; +import com.hmdzl.spspd.items.medicine.Powerpill; +import com.hmdzl.spspd.items.medicine.RealgarWine; +import com.hmdzl.spspd.items.medicine.Shootpill; +import com.hmdzl.spspd.items.medicine.Smashpill; +import com.hmdzl.spspd.items.medicine.Timepill; import com.hmdzl.spspd.items.potions.Potion; +import com.hmdzl.spspd.items.potions.PotionOfMixing; import com.hmdzl.spspd.items.scrolls.Scroll; import com.hmdzl.spspd.items.scrolls.ScrollOfMagicalInfusion; +import com.hmdzl.spspd.items.summon.Honeypot; import com.hmdzl.spspd.items.weapon.spammo.BattleAmmo; import com.hmdzl.spspd.items.weapon.spammo.BlindAmmo; import com.hmdzl.spspd.items.weapon.spammo.DewAmmo; @@ -375,6 +378,8 @@ private void combine(){ result = new PerfectFood(); } else if (vegetables.size() == 1 && ore.size() == 1 && staplefoods.size() ==1 && water.size() == 1 && fruits.size() == 1 ){ result = new PerfectFood(); + } else if ( ore.size() == 4 && water.size() == 1){ + result = new Timepill(); } else if ( ore.size() == 3 && water.size() == 1 && seeds.size() == 1 ){ result = new Crystalnucleus(); } else if ( staplefoods.size() ==2 && vegetables.size() == 1 && meatfoods.size() == 2 ){ @@ -391,7 +396,10 @@ private void combine(){ result = new Musicpill(); } else if (meatfoods.size() ==2 && potions.size() == 1 && seeds.size() ==1 ){ result = new Magicpill(); - + } else if ( nut.size() == 5 ){ + result = new Chocolate(); + } else if ( nut.size() == 4 ){ + result = new NormalRation(); } else if (staplefoods.size() ==1 && vegetables.size() == 1 && meatfoods.size() ==1 ){ result = new ZongZi(); } else if (water.size() ==1 && fireseed.size() == 1 && rootseed.size() ==1 ){ @@ -451,6 +459,22 @@ private void combine(){ result = new Kebab(); } else if (water.size() == 1 && vegetables.size() == 2 ){ result = new Vegetablesoup(); + } else if (staplefoods.size() ==1 && nut.size() == 1 && honey.size() ==1 ){ + result = new NutCake(); + } else if (staplefoods.size() ==1 && nut.size() == 2 ){ + result = new MoonCake(); + + } else if ( nut.size() == 3 ){ + result = new OverpricedRation(); + } else if (nut.size() == 2 && water.size() == 1){ + result = new PetFood(); + } else if ( nut.size() == 2 && potions.size()==1){ + result = new FoodFans(); + } else if ( nut.size() == 2 && scrolls.size()==1){ + result = new Frenchfries(); + } else if ( honey.size() == 1 && gels.size() == 1 ){ + result = new HoneyGel(); + } else if (honey.size() == 1 && staplefoods.size() ==1 ){ result = new Honeyrice(); } else if (honey.size() == 1 && meatfoods.size() ==1 ){ @@ -467,28 +491,12 @@ private void combine(){ result = new Vegetableroll(); } else if ( ore.size() == 1 && water.size() == 1 ){ result = new Gel(); - } else if ( nut.size() == 5 ){ - result = new Chocolate(); - } else if ( nut.size() == 4 ){ - result = new NormalRation(); - } else if ( nut.size() == 3 ){ - result = new OverpricedRation(); - } else if (nut.size() == 2 && water.size() == 1){ - result = new PetFood(); - } else if ( nut.size() == 2 && potions.size()==1){ - result = new FoodFans(); - } else if ( nut.size() == 2 && scrolls.size()==1){ - result = new Frenchfries(); - } else if ( honey.size() == 1 && gels.size() == 1 ){ - result = new HoneyGel(); - } else if ( ore.size() == 1 && seeds.size() == 1 && scrolls.size() == 1 ){ result = new BuildBomb(); } else if ( bbomb.size() == 1 && seeds.size() == 2 ){ result = Generator.random( Generator.Category.BOMBS ); } else if ( bbomb.size() == 2 ){ result = new HugeBomb(); - } else if ( ore.size() == 2 ){ result = new HeavyAmmo(); } else if ( ore.size() == 1 && nutseed.size()==1){ diff --git a/java/com/hmdzl/spspd/windows/WndAscend.java b/java/com/hmdzl/spspd/windows/WndAscend.java index 930c0d55..708821bc 100644 --- a/java/com/hmdzl/spspd/windows/WndAscend.java +++ b/java/com/hmdzl/spspd/windows/WndAscend.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.items.DewVial; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.RedButton; import com.hmdzl.spspd.ui.RenderedTextMultiline; import com.hmdzl.spspd.ui.Window; @@ -50,12 +50,12 @@ public WndAscend() { add(titlebar); RenderedTextMultiline message = PixelScene - .renderMultiline(TXT_MESSAGE, 6); + .renderMultiline(Messages.get(this, "message"), 6); message.maxWidth(WIDTH); message.setPos(0, titlebar.bottom() + GAP); add(message); - RedButton btnReward = new RedButton(TXT_REWARD) { + RedButton btnReward = new RedButton(Messages.get(this, "ok")) { @Override protected void onClick() { Dungeon.level.forcedone=true; diff --git a/java/com/hmdzl/spspd/windows/WndBag.java b/java/com/hmdzl/spspd/windows/WndBag.java index 4f0927ad..5263402f 100644 --- a/java/com/hmdzl/spspd/windows/WndBag.java +++ b/java/com/hmdzl/spspd/windows/WndBag.java @@ -52,7 +52,7 @@ import com.hmdzl.spspd.items.weapon.missiles.ManyKnive; import com.hmdzl.spspd.items.weapon.missiles.TaurcenBow; import com.hmdzl.spspd.items.weapon.spammo.SpAmmo; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.items.armor.Armor; import com.hmdzl.spspd.items.bags.ShoppingCart; import com.hmdzl.spspd.items.bags.Bag; @@ -89,7 +89,7 @@ public class WndBag extends WndTabbed { - public static enum Mode { + public enum Mode { ALL, UNIDENTIFED, UPGRADEABLE, @@ -117,8 +117,8 @@ public static enum Mode { STONE, TRANMSUTABLE, AMMO, - EATABLE; - } + EATABLE + } protected static final int COLS_P = 5; protected static final int COLS_L = 6; @@ -523,14 +523,14 @@ public void item(Item item) { protected void onTouchDown() { bg.brightness(1.5f); Sample.INSTANCE.play(Assets.SND_CLICK, 0.7f, 0.7f, 1.2f); - }; + } - @Override + @Override protected void onTouchUp() { bg.brightness(1.0f); - }; + } - @Override + @Override protected void onClick() { if (listener != null) { diff --git a/java/com/hmdzl/spspd/windows/WndBlacksmith.java b/java/com/hmdzl/spspd/windows/WndBlacksmith.java index b09e6650..484ad1f7 100644 --- a/java/com/hmdzl/spspd/windows/WndBlacksmith.java +++ b/java/com/hmdzl/spspd/windows/WndBlacksmith.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.actors.mobs.npcs.Blacksmith; import com.hmdzl.spspd.items.Item; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.ui.ItemSlot; diff --git a/java/com/hmdzl/spspd/windows/WndBlacksmith2.java b/java/com/hmdzl/spspd/windows/WndBlacksmith2.java index 022bd40e..af6d0c9b 100644 --- a/java/com/hmdzl/spspd/windows/WndBlacksmith2.java +++ b/java/com/hmdzl/spspd/windows/WndBlacksmith2.java @@ -24,7 +24,7 @@ import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.scenes.PixelScene; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.ItemSlot; import com.hmdzl.spspd.ui.RedButton; import com.hmdzl.spspd.ui.RenderedTextMultiline; diff --git a/java/com/hmdzl/spspd/windows/WndCatalogus.java b/java/com/hmdzl/spspd/windows/WndCatalogus.java index 8168a347..95f0058e 100644 --- a/java/com/hmdzl/spspd/windows/WndCatalogus.java +++ b/java/com/hmdzl/spspd/windows/WndCatalogus.java @@ -17,22 +17,21 @@ */ package com.hmdzl.spspd.windows; -import java.util.ArrayList; - import com.hmdzl.spspd.ShatteredPixelDungeon; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.potions.Potion; import com.hmdzl.spspd.items.scrolls.Scroll; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.ui.ScrollPane; import com.hmdzl.spspd.ui.Window; - import com.watabou.noosa.RenderedText; import com.watabou.noosa.ui.Component; +import java.util.ArrayList; + public class WndCatalogus extends WndTabbed { private static final int WIDTH_P = 112; @@ -43,12 +42,6 @@ public class WndCatalogus extends WndTabbed { private static final int ITEM_HEIGHT = 18; - private static final int TAB_WIDTH = 50; - - private static final String TXT_POTIONS = "Potions"; - private static final String TXT_SCROLLS = "Scrolls"; - private static final String TXT_TITLE = "Catalogus"; - private RenderedText txtTitle; private ScrollPane list; @@ -92,15 +85,15 @@ protected void select(boolean value) { super.select(value); WndCatalogus.showPotions = value; updateList(); - }; - }, new LabeledTab(Messages.get(this, "scrolls")) { + } + }, new LabeledTab(Messages.get(this, "scrolls")) { @Override protected void select(boolean value) { super.select(value); WndCatalogus.showPotions = !value; updateList(); - }; - } }; + } + } }; for (Tab tab : tabs) { add(tab); } @@ -164,7 +157,7 @@ public ListItem(Class cl) { sprite.view(item.image(), null); label.text(item.name()); } else { - sprite.view(127, null); + sprite.view(0, null); label.text(item.trueName()); label.hardlight(0xCCCCCC); } diff --git a/java/com/hmdzl/spspd/windows/WndChallengeBook.java b/java/com/hmdzl/spspd/windows/WndChallengeBook.java index 93ace39b..890ebb86 100644 --- a/java/com/hmdzl/spspd/windows/WndChallengeBook.java +++ b/java/com/hmdzl/spspd/windows/WndChallengeBook.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.ChallengeBook; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; import com.hmdzl.spspd.scenes.InterlevelScene; import com.hmdzl.spspd.scenes.PixelScene; diff --git a/java/com/hmdzl/spspd/windows/WndChallenges.java b/java/com/hmdzl/spspd/windows/WndChallenges.java index 46e2cd95..d71f4ac8 100644 --- a/java/com/hmdzl/spspd/windows/WndChallenges.java +++ b/java/com/hmdzl/spspd/windows/WndChallenges.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.ui.IconButton; import com.hmdzl.spspd.ui.Icons; import com.hmdzl.spspd.ui.Window; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.RenderedText; public class WndChallenges extends Window { diff --git a/java/com/hmdzl/spspd/windows/WndChooseWay.java b/java/com/hmdzl/spspd/windows/WndChooseWay.java index d45afd7c..c9f4e0a0 100644 --- a/java/com/hmdzl/spspd/windows/WndChooseWay.java +++ b/java/com/hmdzl/spspd/windows/WndChooseWay.java @@ -19,7 +19,7 @@ import com.hmdzl.spspd.actors.hero.HeroSubClass; import com.hmdzl.spspd.items.TomeOfMastery; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.ui.RedButton; diff --git a/java/com/hmdzl/spspd/windows/WndClass.java b/java/com/hmdzl/spspd/windows/WndClass.java index 6b80e11e..109ae57d 100644 --- a/java/com/hmdzl/spspd/windows/WndClass.java +++ b/java/com/hmdzl/spspd/windows/WndClass.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.actors.hero.HeroClass; import com.hmdzl.spspd.actors.hero.HeroSubClass; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.ui.RenderedTextMultiline; import com.watabou.noosa.BitmapText; diff --git a/java/com/hmdzl/spspd/windows/WndDescend.java b/java/com/hmdzl/spspd/windows/WndDescend.java index 4ef86c3b..6514ba53 100644 --- a/java/com/hmdzl/spspd/windows/WndDescend.java +++ b/java/com/hmdzl/spspd/windows/WndDescend.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.items.DewVial; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.RedButton; import com.hmdzl.spspd.ui.RenderedTextMultiline; import com.hmdzl.spspd.ui.Window; diff --git a/java/com/hmdzl/spspd/windows/WndDewDrawInfo.java b/java/com/hmdzl/spspd/windows/WndDewDrawInfo.java index b6231ee4..39779b06 100644 --- a/java/com/hmdzl/spspd/windows/WndDewDrawInfo.java +++ b/java/com/hmdzl/spspd/windows/WndDewDrawInfo.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.RedButton; import com.hmdzl.spspd.ui.RenderedTextMultiline; import com.hmdzl.spspd.ui.Window; diff --git a/java/com/hmdzl/spspd/windows/WndDocument.java b/java/com/hmdzl/spspd/windows/WndDocument.java new file mode 100644 index 00000000..ab732c82 --- /dev/null +++ b/java/com/hmdzl/spspd/windows/WndDocument.java @@ -0,0 +1,703 @@ +/* + * 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 + */ + +package com.hmdzl.spspd.windows; + +import com.hmdzl.spspd.Dungeon; +import com.hmdzl.spspd.ShatteredPixelDungeon; +import com.hmdzl.spspd.actors.mobs.Mob; +import com.hmdzl.spspd.infos.NewCatalog; +import com.hmdzl.spspd.infos.NewDocument; +import com.hmdzl.spspd.infos.NewMobCatalog; +import com.hmdzl.spspd.items.Item; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; +import com.hmdzl.spspd.scenes.GameScene; +import com.hmdzl.spspd.scenes.PixelScene; +import com.hmdzl.spspd.sprites.ItemSprite; +import com.hmdzl.spspd.sprites.ItemSpriteSheet; +import com.hmdzl.spspd.sprites.MobSprite; +import com.hmdzl.spspd.ui.RedButton; +import com.hmdzl.spspd.ui.RenderedTextMultiline; +import com.hmdzl.spspd.ui.ScrollPane; +import com.watabou.noosa.ColorBlock; +import com.watabou.noosa.Image; +import com.watabou.noosa.RenderedText; +import com.watabou.noosa.ui.Component; + +import java.util.ArrayList; +import java.util.HashMap; + +//import com.watabou.noosa.BitmapText; + +//FIXME lots of copy-pasta from WndDocument here. should generalize some of this. Primarily ListItem2 +public class WndDocument extends WndTabbed { + + private static final int WIDTH_P = 120; + private static final int HEIGHT_P = 160; + + private static final int WIDTH_L = 160; + private static final int HEIGHT_L = 128; + + private static final int ITEM_HEIGHT = 18; + + private NotesTab notesTab; + private CatalogTab catalogTab; + private MobCatalogTab mobcatalogTab; + + public static int last_index = 0; + + public WndDocument(){ + + int width = ShatteredPixelDungeon.landscape() ? WIDTH_L : WIDTH_P; + int height = ShatteredPixelDungeon.landscape() ? HEIGHT_L : HEIGHT_P; + + resize(width, height); + + notesTab = new NotesTab(); + add(notesTab); + notesTab.setRect(0, 0, width, height); + notesTab.updateList(); + + catalogTab = new CatalogTab(); + add(catalogTab); + catalogTab.setRect(0, 0, width, height); + catalogTab.updateList(); + + mobcatalogTab = new MobCatalogTab(); + add(mobcatalogTab); + mobcatalogTab.setRect(0, 0, width, height); + mobcatalogTab.updateList(); + + Tab[] tabs = { + new LabeledTab( Messages.get(WndDocument.class, "notes") ) { + protected void select( boolean value ) { + super.select( value ); + notesTab.active = notesTab.visible = value; + if (value) last_index = 0; + } + }, + new LabeledTab( Messages.get(WndDocument.class, "items") ) { + protected void select( boolean value ) { + super.select( value ); + catalogTab.active = catalogTab.visible = value; + if (value) last_index = 1; + } + }, + new LabeledTab( Messages.get(WndDocument.class, "mobs") ) { + protected void select( boolean value ) { + super.select( value ); + mobcatalogTab.active = mobcatalogTab.visible = value; + if (value) last_index = 2; + } + } + }; + + for (Tab tab : tabs) { + add( tab ); + } + + layoutTabs(); + + select(last_index); + } + + private static class ListItem2 extends Component { + + protected RenderedTextMultiline label; + //protected BitmapText depth; + protected ColorBlock line; + protected Image icon; + + public ListItem2( Image icon, String text ) { + this(icon, text, -1); + } + + public ListItem2( Image icon, String text, int d ) { + super(); + + this.icon.copy(icon); + + label.text( text ); + + if (d >= 0) { + //depth.text(Integer.toString(d)); + //depth.measure(); + + if (d == Dungeon.depth) { + label.hardlight(TITLE_COLOR); + //depth.hardlight(TITLE_COLOR); + } + } + } + + @Override + protected void createChildren() { + label = PixelScene.renderMultiline( 7 ); + add( label ); + + icon = new Image(); + add( icon ); + + // depth = new BitmapText( PixelScene.pixelFont); + //add( depth ); + + line = new ColorBlock( 1, 1, 0xFF222222); + add(line); + + } + + @Override + protected void layout() { + + icon.y = y + 1 + (height() - 1 - icon.height()) / 2f; + PixelScene.align(icon); + + //depth.x = icon.x + (icon.width - depth.width()) / 2f; + //depth.y = icon.y + (icon.height - depth.height()) / 2f + 1; + //PixelScene.align(depth); + + line.size(width, 1); + line.x = 0; + line.y = y; + + label.maxWidth((int)(width - icon.width() - 8 - 1)); + label.setPos(icon.x + icon.width() + 1, y + 1 + (height() - label.height()) / 2f); + PixelScene.align(label); + } + } + + private static class ListItem extends Component { + + private Item item; + private boolean identified; + + private ItemSprite sprite; + private RenderedText label; + + public ListItem(Class cl) { + super(); + + try { + item = cl.newInstance(); + if (identified = item.isIdentified()) { + sprite.view(item.image(), null); + label.text(item.name()); + } else { + sprite.view(0, null); + label.text(item.trueName()); + label.hardlight(0xCCCCCC); + } + } catch (Exception e) { + // Do nothing + } + } + + @Override + protected void createChildren() { + sprite = new ItemSprite(); + add(sprite); + + label = PixelScene.renderText(8); + add(label); + } + + @Override + protected void layout() { + sprite.y = PixelScene.align(y + (height - sprite.height) / 2); + + label.x = sprite.x + sprite.width; + label.y = PixelScene.align(y + (height - label.baseLine()) / 2); + } + + public boolean onClick(float x, float y) { + if (identified && inside(x, y)) { + GameScene.show(new WndInfoItem(item)); + return true; + } else { + return false; + } + } + } + + private static class GuideTab extends Component { + + private ScrollPane list; + + @Override + protected void createChildren() { + list = new ScrollPane( new Component() ); + add( list ); + } + + @Override + protected void layout() { + super.layout(); + list.setRect( 0, 0, width, height); + } + + } + + private static class GuideItem extends ListItem2 { + + private boolean found = false; + private String page; + + public GuideItem( String page ){ + super( new ItemSprite( ItemSpriteSheet.NULLWARN, null), + Messages.titleCase(NewDocument.STORY_GUIDE.pageTitle(page)), -1); + + this.page = page; + found = NewDocument.STORY_GUIDE.hasPage(page); + + if (!found) { + icon.hardlight( 0.5f, 0.5f, 0.5f); + label.text( Messages.titleCase(Messages.get( this, "missing" ))); + label.hardlight( 0x999999 ); + } + + } + + public boolean onClick( float x, float y ) { + if (inside( x, y ) && found) { + GameScene.show( new WndStory( NewDocument.STORY_GUIDE.pageBody(page) )); + return true; + } else { + return false; + } + } + + } + + private static class NotesTab extends Component { + + private ScrollPane list; + private ArrayList pages = new ArrayList<>(); + + @Override + protected void createChildren() { + list = new ScrollPane( new Component() ){ + @Override + public void onClick( float x, float y ) { + int size = pages.size(); + for (int i=0; i < size; i++) { + if (pages.get( i ).onClick( x, y )) { + break; + } + } + } + }; + add( list ); + } + + @Override + protected void layout() { + super.layout(); + list.setRect( 0, 0, width, height); + } + + private void updateList(){ + Component content = list.content(); + + float pos = 0; + + ColorBlock line = new ColorBlock( width(), 1, 0xFF222222); + line.y = pos; + content.add(line); + + RenderedTextMultiline title = PixelScene.renderMultiline(NewDocument.STORY_GUIDE.title(), 9); + title.hardlight(TITLE_COLOR); + title.maxWidth( (int)width() - 2 ); + title.setPos( (width() - title.width())/2f, pos + 1 + ((ITEM_HEIGHT) - title.height())/2f); + PixelScene.align(title); + content.add(title); + + pos += Math.max(ITEM_HEIGHT, title.height()); + + for (String page : NewDocument.STORY_GUIDE.pages()){ + GuideItem item = new GuideItem( page ); + + item.setRect( 0, pos, width(), ITEM_HEIGHT ); + content.add( item ); + + pos += item.height(); + pages.add(item); + } + + content.setSize( width(), pos ); + list.setSize( list.width(), list.height() ); + } + + } + + private static class CatalogTab extends Component{ + + private RedButton[] itemButtons; + private static final int NUM_BUTTONS = 7; + + private static int currentItemIdx = 0; + + private static final int WEAPON_IDX = 0; + private static final int ARMOR_IDX = 1; + private static final int WAND_IDX = 2; + private static final int RING_IDX = 3; + private static final int ARTIF_IDX = 4; + private static final int FOOD_IDX = 5; + private static final int PILL_IDX = 6; + + private ScrollPane list; + + private ArrayList items = new ArrayList<>(); + private ArrayList items2 = new ArrayList(); + + @Override + protected void createChildren() { + itemButtons = new RedButton[NUM_BUTTONS]; + for (int i = 0; i < NUM_BUTTONS; i++){ + final int idx = i; + itemButtons[i] = new RedButton( "" ){ + @Override + protected void onClick() { + currentItemIdx = idx; + updateList(); + } + }; + //itemButtons[i].icon(new ItemSprite(ItemSpriteSheet.WEAPON_HOLDER + i, null)); + itemButtons[i].icon(new ItemSprite(ItemSpriteSheet.INFO + i , null)); + add( itemButtons[i] ); + } + + list = new ScrollPane( new Component() ) { + @Override + public void onClick( float x, float y ) { + int size = items.size(); + for (int i=0; i < size; i++) { + if (items.get( i ).onClick( x, y )) { + break; + } + } + } + }; + add( list ); + } + + private static final int BUTTON_HEIGHT = 17; + + @Override + protected void layout() { + super.layout(); + + int perRow = NUM_BUTTONS; + float buttonWidth = width()/perRow; + + for (int i = 0; i < NUM_BUTTONS; i++) { + itemButtons[i].setRect((i%perRow) * (buttonWidth), (i/perRow) * (BUTTON_HEIGHT + 1), + buttonWidth, BUTTON_HEIGHT); + PixelScene.align(itemButtons[i]); + } + + list.setRect(0, itemButtons[NUM_BUTTONS-1].bottom() + 1, width, + height - itemButtons[NUM_BUTTONS-1].bottom() - 1); + } + + private void updateList() { + items.clear(); + for (int i = 0; i < NUM_BUTTONS; i++){ + if (i == currentItemIdx){ + itemButtons[i].icon().color(TITLE_COLOR); + } else { + itemButtons[i].icon().resetColor(); + } + } + + Component content = list.content(); + content.clear(); + list.scrollTo( 0, 0 ); + + ArrayList> itemClasses; + final HashMap, Boolean> known = new HashMap<>(); + if (currentItemIdx == WEAPON_IDX) { + itemClasses = new ArrayList<>(NewCatalog.WEAPONS.items()); + for (Class cls : itemClasses){ + known.put(cls, true); + } + } else if (currentItemIdx == ARMOR_IDX){ + itemClasses = new ArrayList<>(NewCatalog.ARMOR.items()); + for (Class cls : itemClasses){ + known.put(cls, true); + } + } else if (currentItemIdx == WAND_IDX){ + itemClasses = new ArrayList<>(NewCatalog.WANDS.items()); + for (Class cls : itemClasses) known.put(cls, true); + } else if (currentItemIdx == RING_IDX){ + itemClasses = new ArrayList<>(NewCatalog.RINGS.items()); + for (Class cls : itemClasses) known.put(cls, true); + } else if (currentItemIdx == ARTIF_IDX){ + itemClasses = new ArrayList<>(NewCatalog.ARTIFACTS.items()); + for (Class cls : itemClasses) known.put(cls, true); + } else if (currentItemIdx == FOOD_IDX){ + itemClasses = new ArrayList<>(NewCatalog.FOODS.items()); + for (Class cls : itemClasses) known.put(cls,true); + } else if (currentItemIdx == PILL_IDX) { + itemClasses = new ArrayList<>(NewCatalog.PILLS.items()); + for (Class cls : itemClasses) known.put(cls, true); + } else { + itemClasses = new ArrayList<>(); + } + + /*Collections.sort(itemClasses, new Comparator>() { + @Override + public int compare(Class a, Class b) { + int result = 0; + + //specifically known items appear first, then seen items, then unknown items. + if (known.get(a) && NewCatalog.isSeen(a)) result -= 2; + if (known.get(b) && NewCatalog.isSeen(b)) result += 2; + if (NewCatalog.isSeen(a)) result --; + if (NewCatalog.isSeen(b)) result ++; + + return result; + } + });*/ + + float pos = 0; + for (Class itemClass : itemClasses) { + try{ + CatalogItem item = new CatalogItem(itemClass.newInstance()); + item.setRect( 0, pos, width, ITEM_HEIGHT ); + content.add( item ); + items.add( item ); + + pos += item.height(); + } catch (Exception e) { + ShatteredPixelDungeon.reportException(e); + } + } + + content.setSize( width, pos ); + list.setSize( list.width(), list.height() ); + } + + private static class CatalogItem extends ListItem2 { + + private Item item; + + public CatalogItem(Item item ) { + super( new ItemSprite(item), Messages.titleCase(item.trueName())); + + this.item = item; + icon.copy( new ItemSprite( item.image, null) ); + label.hardlight( 0xCCCCCC ); + + } + + public boolean onClick( float x, float y ) { + if (inside( x, y )) { + GameScene.show(new WndTitledMessage( new Image(icon), + Messages.titleCase(item.trueName()), item.desc() )); + return true; + } else { + return false; + } + } + } + + + + } + +private static class MobCatalogTab extends Component{ + + private RedButton[] itemButtons; + private static final int NUM_BUTTONS = 7; + + private static int currentItemIdx = 0; + + private static final int SEWER_IDX = 0; + private static final int PRISON_IDX = 1; + private static final int CAVE_IDX = 2; + private static final int CITY_IDX = 3; + private static final int HALL_IDX = 4; + private static final int EX_IDX = 5; + private static final int ETC_IDX = 6; + + private ScrollPane list; + + private ArrayList mobs = new ArrayList<>(); + private ArrayList items2 = new ArrayList(); + + @Override + protected void createChildren() { + itemButtons = new RedButton[NUM_BUTTONS]; + for (int i = 0; i < NUM_BUTTONS; i++){ + final int idx = i; + itemButtons[i] = new RedButton( "" ){ + @Override + protected void onClick() { + currentItemIdx = idx; + updateList(); + } + }; + //itemButtons[i].icon(new ItemSprite(ItemSpriteSheet.WEAPON_HOLDER + i, null)); + itemButtons[i].icon(new ItemSprite(ItemSpriteSheet.INFO2 + i , null)); + add( itemButtons[i] ); + } + + list = new ScrollPane( new Component() ) { + @Override + public void onClick( float x, float y ) { + int size = mobs.size(); + for (int i=0; i < size; i++) { + if (mobs.get( i ).onClick( x, y )) { + break; + } + } + } + }; + add( list ); + } + + private static final int BUTTON_HEIGHT = 17; + + @Override + protected void layout() { + super.layout(); + + int perRow = NUM_BUTTONS; + float buttonWidth = width()/perRow; + + for (int i = 0; i < NUM_BUTTONS; i++) { + itemButtons[i].setRect((i%perRow) * (buttonWidth), (i/perRow) * (BUTTON_HEIGHT + 1), + buttonWidth, BUTTON_HEIGHT); + PixelScene.align(itemButtons[i]); + } + + list.setRect(0, itemButtons[NUM_BUTTONS-1].bottom() + 1, width, + height - itemButtons[NUM_BUTTONS-1].bottom() - 1); + } + + private void updateList() { + mobs.clear(); + for (int i = 0; i < NUM_BUTTONS; i++){ + if (i == currentItemIdx){ + itemButtons[i].icon().color(TITLE_COLOR); + } else { + itemButtons[i].icon().resetColor(); + } + } + + Component content = list.content(); + content.clear(); + list.scrollTo( 0, 0 ); + + ArrayList> mobClass; + final HashMap, Boolean> known = new HashMap<>(); + if (currentItemIdx == SEWER_IDX) { + mobClass = new ArrayList<>(NewMobCatalog.SEWER.mob()); + for (Class cls : mobClass){ + known.put(cls, true); + } + } else if (currentItemIdx == PRISON_IDX){ + mobClass = new ArrayList<>(NewMobCatalog.PRISON.mob()); + for (Class cls : mobClass){ + known.put(cls, true); + } + } else if (currentItemIdx == CAVE_IDX){ + mobClass = new ArrayList<>(NewMobCatalog.CAVE.mob()); + for (Class cls : mobClass) known.put(cls, true); + } else if (currentItemIdx == CITY_IDX){ + mobClass = new ArrayList<>(NewMobCatalog.CITY.mob()); + for (Class cls : mobClass) known.put(cls, true); + } else if (currentItemIdx == HALL_IDX){ + mobClass = new ArrayList<>(NewMobCatalog.HALL.mob()); + for (Class cls : mobClass) known.put(cls, true); + } else if (currentItemIdx == EX_IDX){ + mobClass = new ArrayList<>(NewMobCatalog.EX.mob()); + for (Class cls : mobClass) known.put(cls,true); + } else if (currentItemIdx == ETC_IDX) { + mobClass = new ArrayList<>(NewMobCatalog.ETC.mob()); + for (Class cls : mobClass) known.put(cls, true); + } else { + mobClass = new ArrayList<>(); + } + + /*Collections.sort(itemClasses, new Comparator>() { + @Override + public int compare(Class a, Class b) { + int result = 0; + + //specifically known items appear first, then seen items, then unknown items. + if (known.get(a) && NewCatalog.isSeen(a)) result -= 2; + if (known.get(b) && NewCatalog.isSeen(b)) result += 2; + if (NewCatalog.isSeen(a)) result --; + if (NewCatalog.isSeen(b)) result ++; + + return result; + } + });*/ + + float pos = 0; + for (Class itemClass : mobClass) { + try{ + MobCatalogItem mob = new MobCatalogItem(itemClass.newInstance()); + mob.setRect( 0, pos, width, ITEM_HEIGHT ); + content.add( mob ); + mobs.add( mob ); + + pos += mob.height(); + } catch (Exception e) { + ShatteredPixelDungeon.reportException(e); + } + } + + content.setSize( width, pos ); + list.setSize( list.width(), list.height() ); + } + + private static class MobCatalogItem extends ListItem2 { + + private Mob mob; + + public MobCatalogItem(Mob mob ) { + super( new MobSprite(), Messages.titleCase(mob.name)); + this.mob = mob; + icon.copy( new ItemSprite(new Item(){ {image = ItemSpriteSheet.SOMETHING; }})); + label.hardlight( 0xCCCCCC ); + + } + + public boolean onClick( float x, float y ) { + if (inside( x, y )) { + GameScene.show(new WndTitledMessage( new Image(icon), + Messages.titleCase(mob.name), mob.description() )); + return true; + } else { + return false; + } + } + } + + + + } + +} + + diff --git a/java/com/hmdzl/spspd/windows/WndDream.java b/java/com/hmdzl/spspd/windows/WndDream.java index 6608b094..8c72eaa1 100644 --- a/java/com/hmdzl/spspd/windows/WndDream.java +++ b/java/com/hmdzl/spspd/windows/WndDream.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.items.PuddingCup; import com.hmdzl.spspd.items.keys.IronKey; import com.hmdzl.spspd.items.weapon.melee.block.GoblinShield; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.ui.RedButton; @@ -58,10 +58,11 @@ public WndDream() { RedButton btnReward = new RedButton(Messages.get(this, "buy")) { @Override protected void onClick() { - Dungeon.hero.HT = 50; + Dungeon.hero.TRUE_HT = 50; Dungeon.hero.hitSkill -= (Dungeon.hero.lvl-1); Dungeon.hero.evadeSkill -= (Dungeon.hero.lvl-1); Dungeon.hero.lvl = 1; + Dungeon.hero.updateHT(false); hide(); } }; diff --git a/java/com/hmdzl/spspd/windows/WndEgoalInfo.java b/java/com/hmdzl/spspd/windows/WndEgoalInfo.java index 43c3c3f4..30894f3b 100644 --- a/java/com/hmdzl/spspd/windows/WndEgoalInfo.java +++ b/java/com/hmdzl/spspd/windows/WndEgoalInfo.java @@ -4,7 +4,7 @@ import com.hmdzl.spspd.items.weapon.melee.special.ErrorW; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.RedButton; import com.hmdzl.spspd.ui.RenderedTextMultiline; import com.hmdzl.spspd.ui.Window; diff --git a/java/com/hmdzl/spspd/windows/WndError.java b/java/com/hmdzl/spspd/windows/WndError.java index 710ff186..5981d88e 100644 --- a/java/com/hmdzl/spspd/windows/WndError.java +++ b/java/com/hmdzl/spspd/windows/WndError.java @@ -17,7 +17,7 @@ */ package com.hmdzl.spspd.windows; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.Icons; public class WndError extends WndTitledMessage { diff --git a/java/com/hmdzl/spspd/windows/WndGame.java b/java/com/hmdzl/spspd/windows/WndGame.java index d5ff7185..58e24ac2 100644 --- a/java/com/hmdzl/spspd/windows/WndGame.java +++ b/java/com/hmdzl/spspd/windows/WndGame.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.scenes.LoadSaveScene; import com.hmdzl.spspd.scenes.RankingsScene; import com.hmdzl.spspd.scenes.TitleScene; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.Icons; import com.hmdzl.spspd.ui.RedButton; import com.hmdzl.spspd.ui.Window; diff --git a/java/com/hmdzl/spspd/windows/WndGoblin.java b/java/com/hmdzl/spspd/windows/WndGoblin.java index 98c3b66d..ad9bc0a1 100644 --- a/java/com/hmdzl/spspd/windows/WndGoblin.java +++ b/java/com/hmdzl/spspd/windows/WndGoblin.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.items.keys.IronKey; import com.hmdzl.spspd.items.weapon.melee.block.GoblinShield; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.ui.RedButton; diff --git a/java/com/hmdzl/spspd/windows/WndHate.java b/java/com/hmdzl/spspd/windows/WndHate.java index 95ada461..c15e1fe6 100644 --- a/java/com/hmdzl/spspd/windows/WndHate.java +++ b/java/com/hmdzl/spspd/windows/WndHate.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.items.keys.IronKey; import com.hmdzl.spspd.items.wands.WandOfFlock; import com.hmdzl.spspd.items.weapon.melee.block.GoblinShield; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.ui.RedButton; diff --git a/java/com/hmdzl/spspd/windows/WndHero.java b/java/com/hmdzl/spspd/windows/WndHero.java index 5b7671bd..dfec866b 100644 --- a/java/com/hmdzl/spspd/windows/WndHero.java +++ b/java/com/hmdzl/spspd/windows/WndHero.java @@ -17,8 +17,6 @@ */ package com.hmdzl.spspd.windows; -import java.util.Locale; - import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.Statistics; @@ -30,24 +28,23 @@ import com.hmdzl.spspd.actors.mobs.pets.PET; import com.hmdzl.spspd.effects.Speck; import com.hmdzl.spspd.items.Item; +import com.hmdzl.spspd.items.StoneOre; +import com.hmdzl.spspd.items.food.Food; +import com.hmdzl.spspd.items.food.Nut; +import com.hmdzl.spspd.items.food.completefood.Garbage; import com.hmdzl.spspd.items.food.completefood.PetFood; import com.hmdzl.spspd.items.food.fruit.Fruit; +import com.hmdzl.spspd.items.food.meatfood.Meat; import com.hmdzl.spspd.items.food.vegetable.Vegetable; -import com.hmdzl.spspd.items.potions.Potion; import com.hmdzl.spspd.items.potions.PotionOfFrost; import com.hmdzl.spspd.items.potions.PotionOfLiquidFlame; import com.hmdzl.spspd.items.potions.PotionOfToxicGas; import com.hmdzl.spspd.items.scrolls.Scroll; import com.hmdzl.spspd.items.scrolls.ScrollOfPsionicBlast; import com.hmdzl.spspd.items.scrolls.ScrollOfRecharging; -import com.hmdzl.spspd.items.food.completefood.Garbage; import com.hmdzl.spspd.items.weapon.missiles.EscapeKnive; -import com.hmdzl.spspd.messages.Messages; -import com.hmdzl.spspd.items.food.meatfood.Meat; -import com.hmdzl.spspd.items.food.meatfood.MysteryMeat; -import com.hmdzl.spspd.items.food.Nut; -import com.hmdzl.spspd.items.StoneOre; import com.hmdzl.spspd.levels.Level; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.plants.Plant; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.scenes.PixelScene; @@ -58,15 +55,16 @@ import com.hmdzl.spspd.ui.RedButton; import com.hmdzl.spspd.ui.Window; import com.hmdzl.spspd.utils.GLog; - import com.watabou.gltextures.SmartTexture; import com.watabou.gltextures.TextureCache; import com.watabou.noosa.Group; import com.watabou.noosa.Image; -import com.watabou.noosa.TextureFilm; import com.watabou.noosa.RenderedText; +import com.watabou.noosa.TextureFilm; import com.watabou.noosa.ui.Button; +import java.util.Locale; + public class WndHero extends WndTabbed { private static final String TXT_STATS = "Stats"; @@ -147,8 +145,8 @@ public WndHero() { protected void select(boolean value) { super.select(value); stats.visible = stats.active = selected; - }; - }); + } + }); if(Dungeon.dewDraw || Dungeon.dewWater){ add(new LabeledTab(Messages.get(this, "dew")) { @@ -156,8 +154,8 @@ protected void select(boolean value) { protected void select(boolean value) { super.select(value); levelstats.visible = levelstats.active = selected; - }; - }); + } + }); } if (heropet!=null){ @@ -166,8 +164,8 @@ protected void select(boolean value) { protected void select(boolean value) { super.select(value); pet.visible = pet.active = selected; - }; - }); + } + }); } add(new LabeledTab(Messages.get(this, "buffs")) { @@ -175,8 +173,8 @@ protected void select(boolean value) { protected void select(boolean value) { super.select(value); buffs.visible = buffs.active = selected; - }; - }); + } + }); resize(WIDTH, (int) Math.max(stats.height(), buffs.height())); @@ -216,8 +214,8 @@ public StatsTab() { protected void onClick() { hide(); GameScene.show(new WndCatalogus()); - }; - }; + } + }; btnCatalogus.setRect(0, title.height(), btnCatalogus.reqWidth() + 2, btnCatalogus.reqHeight() + 2); add(btnCatalogus); @@ -308,8 +306,8 @@ public LevelStatsTab() { protected void onClick() { hide(); GameScene.show(new WndCatalogus()); - }; - }; + } + }; btnCatalogus.setRect(0, title.height(), btnCatalogus.reqWidth() + 2, btnCatalogus.reqHeight() + 2); add(btnCatalogus); @@ -524,11 +522,7 @@ protected void onClick() { @Override protected void onClick() { hide(); - if (heropet.stay){ - heropet.stay = false; - } else { - heropet.stay = true; - } + heropet.stay = !heropet.stay; } }; @@ -640,6 +634,7 @@ private boolean checkFood(Integer petType, Item item){ if (petType==4){//red dragon - fire if (item instanceof Meat || item instanceof PotionOfLiquidFlame + || item instanceof Fruit || item instanceof PetFood){ nomnom=true; } @@ -648,6 +643,7 @@ private boolean checkFood(Integer petType, Item item){ if (petType==5){//green dragon - lit if (item instanceof Meat || item instanceof ScrollOfRecharging + || item instanceof Fruit || item instanceof PetFood){ nomnom=true; } @@ -656,6 +652,8 @@ private boolean checkFood(Integer petType, Item item){ if (petType==6){//violet dragon - poison if (item instanceof Meat || item instanceof PotionOfToxicGas + || item instanceof Fruit + || item instanceof StoneOre || item instanceof PetFood){ nomnom=true; } @@ -663,6 +661,8 @@ private boolean checkFood(Integer petType, Item item){ if (petType==7){//blue dragon - ice if (item instanceof Meat || item instanceof PotionOfFrost + || item instanceof Fruit + || item instanceof StoneOre || item instanceof PetFood){ nomnom=true; } @@ -683,14 +683,15 @@ private boolean checkFood(Integer petType, Item item){ } } if (petType==10){//light dragon - if (item instanceof Potion + if (item instanceof Meat + ||item instanceof Vegetable + || item instanceof Fruit || item instanceof PetFood){ nomnom=true; } } if (petType==11){//bug dragon - if (item instanceof Potion - || item instanceof PetFood){ + if (item instanceof Food){ nomnom=true; } } @@ -715,8 +716,7 @@ private boolean checkFood(Integer petType, Item item){ } } if (petType==15){//GoldDragon - if (item instanceof Meat - || item instanceof PetFood){ + if (item instanceof Food){ nomnom=true; } } diff --git a/java/com/hmdzl/spspd/windows/WndHotel.java b/java/com/hmdzl/spspd/windows/WndHotel.java index 29643723..f590f046 100644 --- a/java/com/hmdzl/spspd/windows/WndHotel.java +++ b/java/com/hmdzl/spspd/windows/WndHotel.java @@ -19,7 +19,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.items.keys.IronKey; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.ui.RedButton; diff --git a/java/com/hmdzl/spspd/windows/WndImp.java b/java/com/hmdzl/spspd/windows/WndImp.java index 20988ad5..ca373ede 100644 --- a/java/com/hmdzl/spspd/windows/WndImp.java +++ b/java/com/hmdzl/spspd/windows/WndImp.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.actors.mobs.npcs.Imp; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.quest.DwarfToken; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.ui.RedButton; diff --git a/java/com/hmdzl/spspd/windows/WndInfoBuff.java b/java/com/hmdzl/spspd/windows/WndInfoBuff.java index 403cc50f..4e5fa267 100644 --- a/java/com/hmdzl/spspd/windows/WndInfoBuff.java +++ b/java/com/hmdzl/spspd/windows/WndInfoBuff.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.actors.buffs.Buff; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.ui.RenderedTextMultiline; import com.hmdzl.spspd.ui.Window; diff --git a/java/com/hmdzl/spspd/windows/WndInfoCell.java b/java/com/hmdzl/spspd/windows/WndInfoCell.java index 6fd584a5..450f1fdd 100644 --- a/java/com/hmdzl/spspd/windows/WndInfoCell.java +++ b/java/com/hmdzl/spspd/windows/WndInfoCell.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.levels.Level; import com.hmdzl.spspd.levels.Terrain; import com.hmdzl.spspd.scenes.PixelScene; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.Window; import com.hmdzl.spspd.ui.RenderedTextMultiline; import com.watabou.noosa.Image; diff --git a/java/com/hmdzl/spspd/windows/WndInfoItem.java b/java/com/hmdzl/spspd/windows/WndInfoItem.java index 21f84792..c81ad4ec 100644 --- a/java/com/hmdzl/spspd/windows/WndInfoItem.java +++ b/java/com/hmdzl/spspd/windows/WndInfoItem.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.items.rings.Ring; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.ItemSlot; import com.hmdzl.spspd.ui.RenderedTextMultiline; import com.hmdzl.spspd.ui.Window; diff --git a/java/com/hmdzl/spspd/windows/WndInfoMob.java b/java/com/hmdzl/spspd/windows/WndInfoMob.java index 84d9240f..1a3d0778 100644 --- a/java/com/hmdzl/spspd/windows/WndInfoMob.java +++ b/java/com/hmdzl/spspd/windows/WndInfoMob.java @@ -19,7 +19,7 @@ import com.hmdzl.spspd.actors.mobs.Mob; import com.hmdzl.spspd.scenes.PixelScene; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.CharSprite; import com.hmdzl.spspd.ui.BuffIndicator; import com.hmdzl.spspd.ui.HealthBar; diff --git a/java/com/hmdzl/spspd/windows/WndInfoTrap.java b/java/com/hmdzl/spspd/windows/WndInfoTrap.java index ed21d3de..a08e7545 100644 --- a/java/com/hmdzl/spspd/windows/WndInfoTrap.java +++ b/java/com/hmdzl/spspd/windows/WndInfoTrap.java @@ -21,7 +21,7 @@ package com.hmdzl.spspd.windows; import com.hmdzl.spspd.levels.traps.Trap; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.sprites.TrapSprite; public class WndInfoTrap extends WndTitledMessage { diff --git a/java/com/hmdzl/spspd/windows/WndIssic.java b/java/com/hmdzl/spspd/windows/WndIssic.java index a896cfe4..90998d34 100644 --- a/java/com/hmdzl/spspd/windows/WndIssic.java +++ b/java/com/hmdzl/spspd/windows/WndIssic.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.items.keys.IronKey; import com.hmdzl.spspd.items.medicine.Powerpill; import com.hmdzl.spspd.items.weapon.melee.block.GoblinShield; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.ui.RedButton; diff --git a/java/com/hmdzl/spspd/windows/WndItem.java b/java/com/hmdzl/spspd/windows/WndItem.java index 2e363b10..2d1caa28 100644 --- a/java/com/hmdzl/spspd/windows/WndItem.java +++ b/java/com/hmdzl/spspd/windows/WndItem.java @@ -25,7 +25,7 @@ import com.hmdzl.spspd.ui.RedButton; import com.hmdzl.spspd.ui.Window; import com.hmdzl.spspd.ui.RenderedTextMultiline; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import java.util.ArrayList; import java.util.Collections; @@ -81,8 +81,8 @@ protected void onClick() { hide(); if (owner != null && owner.parent != null) owner.hide(); if (Dungeon.hero.isAlive()) item.execute( Dungeon.hero, action ); - }; - }; + } + }; btn.setSize(Math.max(BUTTON_WIDTH, btn.reqWidth()), BUTTON_HEIGHT); if (x + btn.width() > WIDTH) { diff --git a/java/com/hmdzl/spspd/windows/WndJournal.java b/java/com/hmdzl/spspd/windows/WndJournal.java index 07027061..ba254e33 100644 --- a/java/com/hmdzl/spspd/windows/WndJournal.java +++ b/java/com/hmdzl/spspd/windows/WndJournal.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.Journal; import com.hmdzl.spspd.ShatteredPixelDungeon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.ui.Icons; import com.hmdzl.spspd.ui.ScrollPane; diff --git a/java/com/hmdzl/spspd/windows/WndLangs.java b/java/com/hmdzl/spspd/windows/WndLangs.java index 0336e151..165f16cf 100644 --- a/java/com/hmdzl/spspd/windows/WndLangs.java +++ b/java/com/hmdzl/spspd/windows/WndLangs.java @@ -23,7 +23,7 @@ import com.hmdzl.spspd.SPSSettings; import com.hmdzl.spspd.ShatteredPixelDungeon; import com.hmdzl.spspd.messages.Languages; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.scenes.TitleScene; import com.hmdzl.spspd.ui.RedButton; diff --git a/java/com/hmdzl/spspd/windows/WndMix.java b/java/com/hmdzl/spspd/windows/WndMix.java index 9a7d5ef6..fe7142c6 100644 --- a/java/com/hmdzl/spspd/windows/WndMix.java +++ b/java/com/hmdzl/spspd/windows/WndMix.java @@ -31,7 +31,7 @@ import com.hmdzl.spspd.items.food.completefood.Garbage; import com.hmdzl.spspd.items.wands.Wand; import com.hmdzl.spspd.items.wands.WandOfMagicMissile; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.HeroSprite; diff --git a/java/com/hmdzl/spspd/windows/WndONS.java b/java/com/hmdzl/spspd/windows/WndONS.java index 716bccb2..9ac109e8 100644 --- a/java/com/hmdzl/spspd/windows/WndONS.java +++ b/java/com/hmdzl/spspd/windows/WndONS.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.mobs.npcs.OldNewStwist; import com.hmdzl.spspd.items.quest.GnollClothes; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.ui.RedButton; diff --git a/java/com/hmdzl/spspd/windows/WndOtiluke.java b/java/com/hmdzl/spspd/windows/WndOtiluke.java index 83132a24..c08e8bb2 100644 --- a/java/com/hmdzl/spspd/windows/WndOtiluke.java +++ b/java/com/hmdzl/spspd/windows/WndOtiluke.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.actors.buffs.Buff; import com.hmdzl.spspd.actors.hero.Hero; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.items.DolyaSlate; import com.hmdzl.spspd.items.artifacts.TimekeepersHourglass; import com.hmdzl.spspd.scenes.InterlevelScene; diff --git a/java/com/hmdzl/spspd/windows/WndOtilukeMessage.java b/java/com/hmdzl/spspd/windows/WndOtilukeMessage.java index 34e002fd..09d58bc9 100644 --- a/java/com/hmdzl/spspd/windows/WndOtilukeMessage.java +++ b/java/com/hmdzl/spspd/windows/WndOtilukeMessage.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.items.Palantir; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.ui.RedButton; import com.hmdzl.spspd.ui.RenderedTextMultiline; import com.hmdzl.spspd.ui.Window; @@ -50,12 +50,12 @@ public WndOtilukeMessage() { add(titlebar); RenderedTextMultiline message = PixelScene - .renderMultiline(TXT_MESSAGE, 6); + .renderMultiline(Messages.get(this, "message"), 6); message.maxWidth(WIDTH); message.setPos(0,titlebar.bottom() + GAP); add(message); - RedButton btnReward = new RedButton(TXT_REWARD) { + RedButton btnReward = new RedButton(Messages.get(this, "ok")) { @Override protected void onClick() { hide(); diff --git a/java/com/hmdzl/spspd/windows/WndQuest.java b/java/com/hmdzl/spspd/windows/WndQuest.java index e78e3989..29bb826d 100644 --- a/java/com/hmdzl/spspd/windows/WndQuest.java +++ b/java/com/hmdzl/spspd/windows/WndQuest.java @@ -18,7 +18,7 @@ package com.hmdzl.spspd.windows; import com.hmdzl.spspd.actors.mobs.npcs.NPC; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class WndQuest extends WndTitledMessage { diff --git a/java/com/hmdzl/spspd/windows/WndRanking.java b/java/com/hmdzl/spspd/windows/WndRanking.java index ef3b94d5..8d1b2830 100644 --- a/java/com/hmdzl/spspd/windows/WndRanking.java +++ b/java/com/hmdzl/spspd/windows/WndRanking.java @@ -33,7 +33,7 @@ import com.hmdzl.spspd.ui.RedButton; import com.hmdzl.spspd.ui.ScrollPane; import com.hmdzl.spspd.ui.Window; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.watabou.noosa.ColorBlock; import com.watabou.noosa.Game; @@ -208,8 +208,8 @@ protected void onClick() { pos += GAP; - pos = statSlot(this, Messages.get(this, "depth"), - Integer.toString(Statistics.deepestFloor), pos); + //pos = statSlot(this, Messages.get(this, "depth"), + //Integer.toString(Statistics.deepestFloor), pos); pos = statSlot(this, Messages.get(this, "enemies"), Integer.toString(Statistics.enemiesSlain), pos); pos = statSlot(this, Messages.get(this, "gold"), @@ -225,8 +225,8 @@ protected void onClick() { Integer.toString(Statistics.ankhsUsed), pos); pos += GAP; - pos = statSlot(this, Messages.get(this, "water"), - Integer.toString(Statistics.waters), pos); + //pos = statSlot(this, Messages.get(this, "water"), + //Integer.toString(Statistics.waters), pos); //pos = statSlot(this, TXT_SHADOW, //Integer.toString(Statistics.shadowYogsKilled), pos); } @@ -363,12 +363,12 @@ protected void layout() { protected void onTouchDown() { bg.brightness(1.5f); Sample.INSTANCE.play(Assets.SND_CLICK, 0.7f, 0.7f, 1.2f); - }; + } @Override protected void onTouchUp() { bg.brightness(1.0f); - }; + } @Override protected void onClick() { @@ -408,12 +408,12 @@ protected void layout() { protected void onTouchDown() { bg.brightness(1.5f); Sample.INSTANCE.play(Assets.SND_CLICK, 0.7f, 0.7f, 1.2f); - }; + } @Override protected void onTouchUp() { bg.brightness(1.0f); - }; + } @Override protected void onClick() { diff --git a/java/com/hmdzl/spspd/windows/WndResurrect.java b/java/com/hmdzl/spspd/windows/WndResurrect.java index b0fc98b6..ab7a2ef2 100644 --- a/java/com/hmdzl/spspd/windows/WndResurrect.java +++ b/java/com/hmdzl/spspd/windows/WndResurrect.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.Statistics; import com.hmdzl.spspd.actors.hero.Hero; import com.hmdzl.spspd.items.Ankh; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.InterlevelScene; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; diff --git a/java/com/hmdzl/spspd/windows/WndSadGhost.java b/java/com/hmdzl/spspd/windows/WndSadGhost.java index 8ca2ebc2..429a0534 100644 --- a/java/com/hmdzl/spspd/windows/WndSadGhost.java +++ b/java/com/hmdzl/spspd/windows/WndSadGhost.java @@ -71,7 +71,7 @@ public WndSadGhost(final Ghost ghost, final int type) { RedButton btnWeapon = new RedButton( Messages.get(this, "weapon")) { @Override protected void onClick() { - selectReward(ghost, Ghost.Quest.weapon); + selectReward(ghost, Ghost.Quest.artifact); } }; btnWeapon.setRect(0, message.top() + message.height() + GAP, WIDTH, @@ -82,7 +82,7 @@ protected void onClick() { RedButton btnArmor = new RedButton( Messages.get(this, "armor")) { @Override protected void onClick() { - selectReward(ghost, Ghost.Quest.armor); + selectReward(ghost, Ghost.Quest.ring); } }; btnArmor.setRect(0, btnWeapon.bottom() + GAP, WIDTH, BTN_HEIGHT); diff --git a/java/com/hmdzl/spspd/windows/WndSaidBySun.java b/java/com/hmdzl/spspd/windows/WndSaidBySun.java index fb891f27..211e0e81 100644 --- a/java/com/hmdzl/spspd/windows/WndSaidBySun.java +++ b/java/com/hmdzl/spspd/windows/WndSaidBySun.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.items.CurseBlood; import com.hmdzl.spspd.items.keys.IronKey; import com.hmdzl.spspd.items.quest.GnollClothes; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.ui.RedButton; diff --git a/java/com/hmdzl/spspd/windows/WndSettings.java b/java/com/hmdzl/spspd/windows/WndSettings.java index f6b9d4a6..21ea8942 100644 --- a/java/com/hmdzl/spspd/windows/WndSettings.java +++ b/java/com/hmdzl/spspd/windows/WndSettings.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.Assets; import com.hmdzl.spspd.SPSSettings; import com.hmdzl.spspd.ShatteredPixelDungeon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.ui.CheckBox; import com.hmdzl.spspd.ui.RedButton; diff --git a/java/com/hmdzl/spspd/windows/WndShower.java b/java/com/hmdzl/spspd/windows/WndShower.java index 8b81313b..44438480 100644 --- a/java/com/hmdzl/spspd/windows/WndShower.java +++ b/java/com/hmdzl/spspd/windows/WndShower.java @@ -21,7 +21,7 @@ import com.hmdzl.spspd.items.keys.IronKey; import com.hmdzl.spspd.items.weapon.melee.block.GoblinShield; import com.hmdzl.spspd.items.weapon.melee.block.SpKnuckles; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.ui.RedButton; diff --git a/java/com/hmdzl/spspd/windows/WndStory.java b/java/com/hmdzl/spspd/windows/WndStory.java index 85aa671c..dba422f7 100644 --- a/java/com/hmdzl/spspd/windows/WndStory.java +++ b/java/com/hmdzl/spspd/windows/WndStory.java @@ -20,7 +20,7 @@ import com.hmdzl.spspd.Chrome; import com.hmdzl.spspd.Dungeon; import com.hmdzl.spspd.ShatteredPixelDungeon; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.ui.Window; import com.watabou.input.Touchscreen.Touch; diff --git a/java/com/hmdzl/spspd/windows/WndTabbed.java b/java/com/hmdzl/spspd/windows/WndTabbed.java index fd146aad..8d36a354 100644 --- a/java/com/hmdzl/spspd/windows/WndTabbed.java +++ b/java/com/hmdzl/spspd/windows/WndTabbed.java @@ -221,5 +221,5 @@ protected void select(boolean value) { btLabel.am = selected ? 1.0f : 0.6f; } } - + } diff --git a/java/com/hmdzl/spspd/windows/WndTinkerer.java b/java/com/hmdzl/spspd/windows/WndTinkerer.java index 5ed8d12b..d122db89 100644 --- a/java/com/hmdzl/spspd/windows/WndTinkerer.java +++ b/java/com/hmdzl/spspd/windows/WndTinkerer.java @@ -24,11 +24,12 @@ import com.hmdzl.spspd.actors.mobs.npcs.Tinkerer1; import com.hmdzl.spspd.items.DewVial; import com.hmdzl.spspd.items.Item; +import com.hmdzl.spspd.items.keys.SkeletonKey; import com.hmdzl.spspd.items.quest.Mushroom; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.GameScene; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; -import com.hmdzl.spspd.messages.Messages; import com.hmdzl.spspd.ui.RedButton; import com.hmdzl.spspd.ui.RenderedTextMultiline; import com.hmdzl.spspd.ui.Window; @@ -138,15 +139,16 @@ private void selectUpgrade(Tinkerer1 tinkerer, int type) { if (type==1){ tinkerer.yell(Messages.get(this, "farewell", Dungeon.hero.givenName())); Statistics.prevfloormoves=500; - Buff.prolong(Dungeon.hero, Dewcharge.class, Dewcharge.DURATION+50); + Buff.affect(Dungeon.hero, Dewcharge.class).level(350); GLog.p(Messages.get(this,"dungeon")); } else if (type==2){ tinkerer.yell(Messages.get(this, "farewell", Dungeon.hero.givenName())); Statistics.prevfloormoves=500; - Buff.prolong(Dungeon.hero, Dewcharge.class, Dewcharge.DURATION+50); + Buff.affect(Dungeon.hero, Dewcharge.class).level(350); GLog.p(Messages.get(this,"dungeon")); } - + Dungeon.level.drop(new SkeletonKey(1), tinkerer.pos).sprite.drop(); + tinkerer.destroy(); tinkerer.sprite.die(); diff --git a/java/com/hmdzl/spspd/windows/WndTinkerer2.java b/java/com/hmdzl/spspd/windows/WndTinkerer2.java index b7faaf28..5d90d0b8 100644 --- a/java/com/hmdzl/spspd/windows/WndTinkerer2.java +++ b/java/com/hmdzl/spspd/windows/WndTinkerer2.java @@ -24,7 +24,7 @@ import com.hmdzl.spspd.items.quest.Mushroom; import com.hmdzl.spspd.items.summon.FairyCard; import com.hmdzl.spspd.items.summon.Mobile; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.ui.RedButton; diff --git a/java/com/hmdzl/spspd/windows/WndTinkerer3.java b/java/com/hmdzl/spspd/windows/WndTinkerer3.java index 6abc261e..1361c3df 100644 --- a/java/com/hmdzl/spspd/windows/WndTinkerer3.java +++ b/java/com/hmdzl/spspd/windows/WndTinkerer3.java @@ -26,7 +26,7 @@ import com.hmdzl.spspd.ui.RedButton; import com.hmdzl.spspd.ui.RenderedTextMultiline; import com.hmdzl.spspd.ui.Window; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; public class WndTinkerer3 extends Window { diff --git a/java/com/hmdzl/spspd/windows/WndTradeItem.java b/java/com/hmdzl/spspd/windows/WndTradeItem.java index 35eaa0f0..6205794c 100644 --- a/java/com/hmdzl/spspd/windows/WndTradeItem.java +++ b/java/com/hmdzl/spspd/windows/WndTradeItem.java @@ -38,7 +38,7 @@ import com.hmdzl.spspd.items.journalpages.JournalPage; import com.hmdzl.spspd.items.DolyaSlate; import com.hmdzl.spspd.items.artifacts.MasterThievesArmband; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.ui.ItemSlot; diff --git a/java/com/hmdzl/spspd/windows/WndWandmaker.java b/java/com/hmdzl/spspd/windows/WndWandmaker.java index 0287445b..6fe9bb86 100644 --- a/java/com/hmdzl/spspd/windows/WndWandmaker.java +++ b/java/com/hmdzl/spspd/windows/WndWandmaker.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.items.AdamantWand; import com.hmdzl.spspd.items.Item; import com.hmdzl.spspd.items.wands.Wand; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.ui.RedButton; diff --git a/java/com/hmdzl/spspd/windows/Wndice13.java b/java/com/hmdzl/spspd/windows/Wndice13.java index d8b1ba50..4c5eb2c8 100644 --- a/java/com/hmdzl/spspd/windows/Wndice13.java +++ b/java/com/hmdzl/spspd/windows/Wndice13.java @@ -22,7 +22,7 @@ import com.hmdzl.spspd.items.PowerHand; import com.hmdzl.spspd.items.keys.IronKey; import com.hmdzl.spspd.items.weapon.melee.block.GoblinShield; -import com.hmdzl.spspd.messages.Messages; +import com.hmdzl.spspd.messages.Messages;import com.hmdzl.spspd.ResultDescriptions; import com.hmdzl.spspd.scenes.PixelScene; import com.hmdzl.spspd.sprites.ItemSprite; import com.hmdzl.spspd.ui.RedButton; diff --git a/res/drawable-v24/ic_launcher_foreground.xml b/res/drawable-v24/ic_launcher_foreground.xml deleted file mode 100644 index 1f6bb290..00000000 --- a/res/drawable-v24/ic_launcher_foreground.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - diff --git a/res/mipmap-anydpi-v26/ic_launcher_round.xml b/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index c4a603d4..00000000 --- a/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/res/mipmap-hdpi/ic_launcher_round.png b/res/mipmap-hdpi/ic_launcher_round.png deleted file mode 100644 index b5a697b6..00000000 Binary files a/res/mipmap-hdpi/ic_launcher_round.png and /dev/null differ diff --git a/res/mipmap-mdpi/ic_launcher_round.png b/res/mipmap-mdpi/ic_launcher_round.png deleted file mode 100644 index edc5b205..00000000 Binary files a/res/mipmap-mdpi/ic_launcher_round.png and /dev/null differ diff --git a/res/mipmap-xhdpi/ic_launcher_round.png b/res/mipmap-xhdpi/ic_launcher_round.png deleted file mode 100644 index 1222cb9e..00000000 Binary files a/res/mipmap-xhdpi/ic_launcher_round.png and /dev/null differ diff --git a/res/mipmap-xxhdpi/ic_launcher_round.png b/res/mipmap-xxhdpi/ic_launcher_round.png deleted file mode 100644 index ec6e3dcd..00000000 Binary files a/res/mipmap-xxhdpi/ic_launcher_round.png and /dev/null differ diff --git a/res/mipmap-xxxhdpi/ic_launcher_round.png b/res/mipmap-xxxhdpi/ic_launcher_round.png deleted file mode 100644 index ed473569..00000000 Binary files a/res/mipmap-xxxhdpi/ic_launcher_round.png and /dev/null differ diff --git a/resources/com/hmdzl/spspd/change/messages/actors/actors.properties b/resources/com/hmdzl/spspd/change/messages/actors/actors.properties deleted file mode 100644 index 70678f53..00000000 --- a/resources/com/hmdzl/spspd/change/messages/actors/actors.properties +++ /dev/null @@ -1,1337 +0,0 @@ -###blobs -actors.blobs.confusiongas.desc=A cloud of confusion gas is swirling here, twisting the senses of anything caught within so that they are forced to walk in random directions. -actors.blobs.corruptgas.desc=A cloud of demon blood is swirling here, eviscerating any mortals within by causing bleeding and vertigo. -actors.blobs.darkgas.desc=A cloud of dark gas is swirling here, blocking the vision of anything trapped inside. -actors.blobs.electrishock.desc=A field of electricity is sparking brightly here. -actors.blobs.fire.desc=A fire is raging here, grilling flesh both living and dead within its path. -actors.blobs.foliage.desc=Shafts of light pierce the gloom of the underground garden. -actors.blobs.frostgas.desc=The air is unnaturally frigid here. -actors.blobs.goowarn.desc=Specks of dark energy are swarming here! -actors.blobs.heallight.desc=Shafts of light pierce the gloom of the underground, restoring life to all that it touches! -actors.blobs.memoryfire.desc=A blue fire is raging here. -actors.blobs.paralyticgas.desc=A cloud of paralytic gas is swirling here. -actors.blobs.regrowth.desc=Vegetative matter bursts to and from the ground here, rapidly growing and fertilizing plants to be ripe for immediate harvest. -actors.blobs.shockweb.desc=Everything is covered with a shock web here. -actors.blobs.stenchgas.desc=A cloud of fetid stench is swirling here. -actors.blobs.targas.desc=A cloud of sticky tar gas is swirling here, slowing down any people it touches while letting fires burn for much longer than normal. -actors.blobs.toxicgas.desc=A greenish cloud of toxic gas is swirling here. -actors.blobs.venomgas.desc=A cloud of foul acidic venom is swirling here. -actors.blobs.waterofawareness.desc=Power of knowledge radiates from the water of this well. \nTake a sip from it to reveal all secrets of equipped items. -actors.blobs.waterofawareness.procced=As you take a sip, you feel the knowledge pours into your mind. Now you know everything about your equipped items. Also you sense all items on the level and know all its secrets. -actors.blobs.waterofhealth.desc=Power of health radiates from the water of this well.\nTake a sip from it to heal your wounds and satisfy hunger. -actors.blobs.waterofhealth.procced=As you take a sip, you feel your wounds heal completely. -actors.blobs.wateroftransmutation.desc=Power of change radiates from the water of this well. \nThrow an item into the well to turn it into something else. -actors.blobs.weather.weatherofdead.desc=Ghost raise here. -actors.blobs.weather.weatherofquite.desc=It's very quiet here. -actors.blobs.weather.weatherofrain.desc=Rain is pouring endlessly here, reducing any creatures' ability to attack or dodge. -actors.blobs.weather.weatherofsand.desc=The air here is littered with particles of dust, drying out anyone within and reducing their damage. -actors.blobs.weather.weatherofsnow.desc=This room is incredibly cold, cold enough to swirl snow into the air while the low temperature slows everyone down. -actors.blobs.weather.weatherofsun.desc=Harsh sunlight beams down within this room, making everything unbearably hot while also reducing the effectiveness of armor. -actors.blobs.web.desc=Everything is covered with a thick web here. - -###buffs -actors.buffs.amok.desc=Amok causes a state of great rage and confusion in its target.\n\nWhen a creature is amoked, they will attack whatever is near them, whether they be friend or foe.\n\nTurns of amok remaining: %s. -actors.buffs.amok.name=Amok -actors.buffs.arcane.desc=Magical power radiates throughout your body, increasing your magic power by 10 points so that your wands deal extra damage.\nTurns of Arcane remaining: %s. -actors.buffs.arcane.name=Arcane -actors.buffs.armorbreak.desc=%s turns,taken more %s%% damage. -actors.buffs.armorbreak.name=Armor Break -actors.buffs.attackdown.desc=%s turns, reduce%s%% attack. -actors.buffs.attackdown.name=Attack dowm -actors.buffs.attackup.desc=%s turns, gain %s%% attack damage. -actors.buffs.attackup.name=Attack Up -actors.buffs.awareness.desc=Treasure serch allow you find every treasure in this floor.\n\n\nTurn of treasure search remaining: %s turns. -actors.buffs.awareness.name=Treasure serch -actors.buffs.barkskin.desc=Your skin is hardened, it feels rough and solid like bark.\n\nThe hardened skin increases your effective armor, allowing you to better defend against physical attack. The armor bonus will decrease by one point each turn until it expires.\n\nYour armor is currently increased by: %d. -actors.buffs.barkskin.name=Barkskin -actors.buffs.berryregeneration.desc=Regeneration make you health.\n\nTurn of regeneration left: %d turns. -actors.buffs.berryregeneration.name=Regeneration -actors.buffs.bleeding.desc=That wound is leaking a worrisome amount of blood.\n\nBleeding causes damage every turn. Each turn the damage decreases by a random amount, until the bleeding eventually stops.\n\nCurrent bleed damage: %d. -actors.buffs.bleeding.heromsg=You are bleeding. -actors.buffs.bleeding.name=Bleeding -actors.buffs.bless.desc=A great burst of focus, some say it is inspired by the gods.\n\nBlessing significantly increases accuracy and evasion, making the blessed much more effective in combat.\n\nTurns of bless remaining: %s. -actors.buffs.bless.name=Bless -actors.buffs.blindness.desc=Blinding turns the surrounding world into a dark haze.\n\nWhile blinded, a character can't see more than one tile infront of themselves, rendering ranged attacks useless and making it very easy to lose track of distant enemies. Additionally, a blinded hero is unable to read scrolls or books.\n\nTurns of blindness remaining: %s. -actors.buffs.blindness.heromsg=You are blinded! -actors.buffs.blindness.name=Blinded - -actors.buffs.burning.burnsup=%s burns up! -actors.buffs.burning.desc=Few things are more distressing than being engulfed in flames.\n\nFire will deal damage every turn until it is put out by water or it expires. Fire can be extinquished by stepping into water, or from the splash of a shattering potion.\n\nAdditionally, the fire may ignite flammable terrain or items that it comes into contact with.\n\nTurns of burning remaining: %s. -actors.buffs.burning.heromsg=You catch fire! -actors.buffs.burning.name=Burning -actors.buffs.charm.desc=A charm is manipulative magic that can make enemies temporarily adore eachother.\n\nCharacters affected by charm are unable to directly attack the enemy they are charmed by. Attacking other targets is still possible however.\n\nTurns of charm remaining: %s. -actors.buffs.charm.heromsg=You are charmed! -actors.buffs.charm.name=Charmed -actors.buffs.chill.desc=Not quite frozen, but still much too cold.\n\nChilled targets perform all actions more slowly, depending on how many turns are left in the effect. At it's worst, this is equivalent to being slowed.\n\nTurns of chill remaining: %s.\nSpeed is reduced by: %s%% -actors.buffs.chill.freezes=%s freezes! -actors.buffs.chill.name=Chilled -actors.buffs.cold.desc=Cold make you move slow. \n\nTurns of cold remaining: %s. -actors.buffs.cold.name=Cold -actors.buffs.combo.bonusdmg=\n\nCurrent combo bonus damage: %f%%. -actors.buffs.combo.combo=%d Combo -actors.buffs.combo.desc=Through building momentum, the gladiator deals bonus damage.\n\nYour combo will keep building with quick attacks. The higher your combo gets, the faster your attacks will need to be. Failing to land a hit quickly enough will reset the combo. -actors.buffs.combo.name=Combo -actors.buffs.combo.notenough=\n\nYour combo has not built up enough to give you bonus damage yet. -actors.buffs.countdown.desc=After some time you will take lots of damage.\n\ntime remain : %d -actors.buffs.countdown.name=Countdown -actors.buffs.cripple.desc=You're pretty sure legs aren't meant to bend that way.\n\nCrippled halves movement speed, making moving a tile usually take two turns instead of one.\n\nTurns of cripple remaining: %s. -actors.buffs.cripple.heromsg=You are crippled! -actors.buffs.cripple.name=Crippled -actors.buffs.deadraise.desc=You feel a strong sense of resentment around you, as if something is coming.\n\n Time left: %s turns -actors.buffs.deadraise.name=Dead Raise -actors.buffs.defenceup.desc=%s turns, reduce %s%% damage -actors.buffs.defenceup.name=Damage reduce -actors.buffs.dewcharge.desc=Whenever you kill mobs, drop dews beside thems.\n\nturn left : %s turns -actors.buffs.dewcharge.name=Dew drop -actors.buffs.disarm.desc=Can't attack, %s turns left -actors.buffs.disarm.name=Disarm -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. -actors.buffs.drowsy.name=Drowsy -actors.buffs.dry.desc=Drying makes you upset, unable to concentrate on fighting, and reduce your damage. \n\nTurns of dry remaining: %s. -actors.buffs.dry.name=Dry - -actors.buffs.exitfind.name=Exit Find - -actors.buffs.earthimbue.desc=You are imbued with the power of earth!\n\nAll physical attacks will command roots to lock the enemy in place while the effect lasts.\n\nTurns of earth imbue remaining: %s. -actors.buffs.earthimbue.name=Imbued with Earth - -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.name=Imbued with Fire - -actors.buffs.frostimbue.desc=You are filled with the power of cold ice! All physical attacks have the opportunity to freeze the enemy. In the meantime, you're completely immune to freezing. The force effect of residual ice is left:%s turn -actors.buffs.frostimbue.name=Imbued with Ice - -actors.buffs.toxicimbue.desc=You are imbued with poisonous energy!\n\nAs you move around toxic gas will constantly billow forth from you, damaging your enemies. You are immune to toxic gas and poison for the duration of the effect.\n\nTurns of toxic imbue remaining: %s. -actors.buffs.toxicimbue.name=Imbued with Toxicity - -actors.buffs.bloodimbue.desc=Blood imbue will help you immune some debuff and improve your damage,\n\nBlood imbue left : %s turns -actors.buffs.bloodimbue.name=Blood imbue - -actors.buffs.frost.desc=Not to be confused with freezing solid, this more benign freezing simply encases the target in ice.\n\nFreezing acts similarly to paralysis, making it impossible for the target to act. Unlike paralysis, freezing is immediately cancelled if the target takes damage, as the ice will shatter.\n\nTurns of freeze remaining: %s. -actors.buffs.frost.freezes=%s freezes! -actors.buffs.frost.name=Frozen -actors.buffs.fullmoonstrength.desc=You become stronger, and you will deal 2.5 damage. -actors.buffs.fullmoonstrength.heromsg=You become stronger. -actors.buffs.fullmoonstrength.name=Moon power -actors.buffs.fury.desc=You are angry, enemies won't like you when you're angry.\n\nA great rage burns within you, increasing the damage you deal with physical attacks by 25%% and reduce damage you taken by 25%.\n\nThis rage will last as long as you are injured below 60% health. -actors.buffs.fury.heromsg=You become furious! -actors.buffs.fury.name=Furious -actors.buffs.gasesimmunity.desc=Some strange force is filtering out the air around you, it's not causing you any harm, but it blocks out everything but air so effectively you can't even smell anything!\n\nYou are immune to the effects of all gasses while this buff lasts.\n\nTurns of gas immunity remaining: %s. -actors.buffs.gasesimmunity.name=Immune to gases -actors.buffs.glassshield.desc=This buff is some kind of bless by god of glass, it will reduce any damage to 10 . Bless Left: %s. -actors.buffs.glassshield.name=Glass Shield -actors.buffs.growseed.desc=You will lost health, and heal others.\n\nleft time:%s turns -actors.buffs.growseed.heromsg=Strange seeds grow on you. -actors.buffs.growseed.name=Leech Seed -actors.buffs.haste.desc=You move fast, %s turns left. -actors.buffs.haste.name=Haste -actors.buffs.hot.desc=Hot make you easy to take damage. \n\nTurns of hot remaining: %s. -actors.buffs.hot.name=Hot -actors.buffs.hunger.cursedhorn=The cursed horn steals some of the food energy as you eat. -actors.buffs.hunger.desc=\n\nHunger slowly increases as you spend time in the dungeon, eventually you will begin to starve. While starving you will slowly lose health instead of regenerating it.\n\nRationing is important! If you have health to spare starving isn't a bad idea if it means there will be more food later. Effective rationing can make food last a lot longer! -actors.buffs.hunger.desc_intro_hungry=You can feel your stomach calling out for food, but it's not too urgent yet. -actors.buffs.hunger.desc_intro_overfed=Overfed fills you with determination and improves your damage. -actors.buffs.hunger.desc_intro_starving=You're so hungry it hurts. -actors.buffs.hunger.hungry=Hungry -actors.buffs.hunger.onhungry=You are hungry. -actors.buffs.hunger.onoverfed=You are overfed. -actors.buffs.hunger.onstarving=You are starving, -actors.buffs.hunger.overfed=Overfed -actors.buffs.hunger.starving=Starving -actors.buffs.invisibility.desc=You are completely blended into the surrounding terrain, making you impossible to see.\n\nWhile you are invisible enemies are unable to attack or follow you. Physical attacks and magical effects (such as scrolls and wands) will immediately cancel invisibility.\n\nTurns of invisibility remaining: %s. -actors.buffs.invisibility.name=Invisible -actors.buffs.levitation.desc=A magical force is levitating you over the ground, making you feel weightless.\n\nWhile levitating you ignore all ground-based effects. Traps won't trigger, water won't put out fire, plants won't be trampled, roots will miss you, and you will hover right over pits. Be careful, as all these things can come into effect the second the levitation ends!\n\nTurns of levitation remaining: %s. -actors.buffs.levitation.name=Levitating -actors.buffs.light.desc=Even in the Darkest Dungeon, a steady light at your side is always comforting.\n\nLight helps keep darkness at bay, allowing you to see a reasonable distance despite the environment.\n\nTurns of illumination remaining: %s. -actors.buffs.light.name=Illuminated -actors.buffs.highlight.desc=Even in the Darkest Dungeon, a steady light at your side is always comforting.\n\nLight helps keep darkness at bay, allowing you to see a unreasonable distance despite the environment.\n\nTurns of illumination remaining: %s. -actors.buffs.highlight.name=high light -actors.buffs.locked.desc=Invisible lock locked your backpack, so you can't use some items, left %s turns. -actors.buffs.locked.name=Locked -actors.buffs.lokispoison.desc=Poison works its way through the body, slowly impairing its internal functioning.\n\nPoison deals damage each turn proportional to how long until it expires.\n\nTurns of poison remaining: %s. -actors.buffs.lokispoison.heromsg=You are poisoned! -actors.buffs.lokispoison.name=Power poison -actors.buffs.magicalsleep.desc=This character has fallen into a deep magical sleep which they will not wake from naturally.\n\nMagical sleep is similar to regular sleep, except that only damage will cause the target to wake up.\n\nFor the hero, magical sleep has some restorative properties, allowing them to rapidly heal while resting. -actors.buffs.magicalsleep.fallasleep=You fall into a deep magical sleep. -actors.buffs.magicalsleep.name=Magical Sleep -actors.buffs.magicalsleep.toohealthy=You are too healthy, and resist the urge to sleep. -actors.buffs.magicalsleep.wakeup=You wake up feeling refreshed and healthy. -actors.buffs.magicimmunity.desc=Magic immunity can help you resistances some buffs.\n\nTurn left : %s -actors.buffs.magicimmunity.name=Magic shield -actors.buffs.mindvision.desc=Somehow you are able to see all creatures on this floor through your mind. It's a weird feeling.\n\nAll characters on this floor are visible to you as long as you have mind vision. Seeing a creature through mind vision counts as it being seen or nearby for the purposes of many magical effects.\n\nTurns of mind vision remaining: %s. -actors.buffs.mindvision.name=Mind vision -actors.buffs.muscle.desc=Gain 2 str. Left: %s turns. -actors.buffs.muscle.name=Muscle -actors.buffs.ooze.desc=This sticky acid clings to flesh, slowly melting it away.\n\nOoze will deal consistent damage until it is washed off in water.\n\nOoze does not expire on its own and must be removed with water. -actors.buffs.ooze.heromsg=Caustic ooze eats your flesh. Wash it away! -actors.buffs.ooze.name=Caustic ooze -actors.buffs.paralysis.desc=Oftentimes the worst thing to do is nothing at all.\n\nParalysis completely halts all actions, forcing the target to wait until the effect wears off. The pain from taking damage can also cause characters to snap out of paralysis.\n\nTurns of paralysis remaining: %s. -actors.buffs.paralysis.heromsg=You are paralysed! -actors.buffs.paralysis.name=Paralysed -actors.buffs.poison.desc=Poison works its way through the body, slowly impairing its internal functioning.\n\nPoison deals damage each turn proportional to how long until it expires.\n\nTurns of poison remaining: %s. -actors.buffs.poison.heromsg=You are poisoned! -actors.buffs.poison.name=Poisoned -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.name=Recharging -actors.buffs.rhythm.desc=Your rhythm improve your hit skill and evade skill, left %s turns. -actors.buffs.rhythm.name=Rhythm -actors.buffs.rhythm2.desc=Your echo rhythm improve your speed, attack and defense, left %s turns. -actors.buffs.rhythm2.name=Echo -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.heromsg=You can't move! -actors.buffs.roots.name=Rooted -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.name=Shadowmelded -actors.buffs.shield.desc=Super shield -actors.buffs.shield.name=Moon shield -actors.buffs.shieldblock.desc=This debuff is upgrade by stun.\n\nturn left : %s -actors.buffs.shieldblock.name=Holy stun -actors.buffs.shocked.desc=Lightning coarses through your body, waiting for a moment to be released, attack will discharge it, and disarm your hand. left %s turns.. -actors.buffs.shocked.name=Electrostatic turbulence -actors.buffs.silent.desc=Can't use scroll and wand, %s turns left. -actors.buffs.silent.name=silent -actors.buffs.slow.desc=Slowing magic affects the target's rate of time, to them everything is moving super-fast.\n\nA slowed character performs all actions in twice the amount of time they would normally take.\n\nTurns of slow remaining: %s. -actors.buffs.slow.name=Slowed -actors.buffs.snipersmark.desc=The sniper is honed in on a nearby target, gaining increased attack speed and armor penetration while attacking it.\n\nThe sniper will remain honed in until she switches targets, stops attacking, or the target dies. -actors.buffs.snipersmark.name=Sniper's mark -actors.buffs.soulmark.desc=The warlock has tapped into the soul of this creature. He will heal and satisfy his hunger as it takes physical damage.\n\nTurns of soul mark remaining: %s. -actors.buffs.soulmark.name=Soul Mark -actors.buffs.speed.desc=Move fast -actors.buffs.speed.name=Speed -actors.buffs.strength.desc=Next attack will be powerful. -actors.buffs.strength.name=Strength -actors.buffs.tar.desc=Tar make you slower and easy to fire. -actors.buffs.tar.heromsg=Tar is covered with your body. -actors.buffs.tar.name=Tar - -actors.buffs.terror.desc=Terror is manipulative magic which forces its target into an uncontrollable panic.\n\nTerrified characters are forced to run away from their opponent, trying to put as many doors and walls between them as possible. The shock of pain is enough to break this effect, however.\n\nTurns of terror remaining: %s. -actors.buffs.terror.name=Terrified - -actors.buffs.venom.desc=Venom is a extremely caustic and dangerous poison.\n\nUnlike poison, whose damage lowers over time, venom does increasing damage the longer it stays on a target.\n\nTurns of venom remaining: %s.\nCurrent venom damage: %d. -actors.buffs.venom.name=Venomed -actors.buffs.vertigo.desc=Walking in a straight line can be difficult when the whole world is spinning.\n\nWhile under the effects of vertigo, characters who attempt to move will go in a random direction, instead of the one they intended to go in.\n\nTurns of vertigo remaining: %s. -actors.buffs.vertigo.name=Vertigo -actors.buffs.weakness.desc=Your gear suddenly feels a lot heavier.\n\nWeakening magic is affecting you, reducing your effective strength by 2 points.\n\nTurns of weakness remaining: %s. -actors.buffs.weakness.heromsg=You feel weakened! -actors.buffs.weakness.name=Weakened -actors.buffs.wet.desc=Wet makes your body heavy, make your hard to hit target and dodge attack. \n\nTurns of wet remaining: %s. -actors.buffs.wet.name=Wet - -actors.buffs.shieldarmor.name=Alien Shield -actors.buffs.shieldarmor.desc=A kind of energy armor is protecting you.\n\nThis herbal armor will absorb 100%% of all damage you take, until it eventually runs out of durability and collapses.\n\nArmor remaining: %d. - -actors.buffs.feed.name=Feed -actors.buffs.feed.desc=You will gain more health limit from each mob you killed. %s turn left. - -actors.buffs.bloodangry.name=Blood Angry -actors.buffs.bloodangry.desc=It make you stronger. %s turns left. - -actors.buffs.soulbless.name=Soul Bless -actors.buffs.soulbless.desc=It wasn't be add yet. - -actors.buffs.goldtouch.name=Gold Touch -actors.buffs.goldtouch.desc=You will get gold when you are attacking. %s turns left. - -actors.buffs.needling.name=needling -actors.buffs.needling.desc=It will help you in battle. %s turns left. - -actors.buffs.forevershadow.name=Forever Shadow -actors.buffs.forevershadow.desc=You will can't be find until it disappare. %s turns left. - -actors.buffs.notice.name=notice -actors.buffs.notice.desc=Notice helps you find secret. %s turns left. - -actors.buffs.wargroove.name=War Groove -actors.buffs.wargroove.desc=It will improve you attack until you next melee attack. - -actors.buffs.targetshoot.name=target shoot -actors.buffs.targetshoot.desc=Range weapon skill + 10. \n\n %s turn left. - -actors.buffs.mecharmor.name=Drive MECH -actors.buffs.mecharmor.desc=You are drive MECH now. \n\n MECH's HP : %s. - -actors.buffs.spattack.name=Surprise attack -actors.buffs.spattack.desc=Deal more damage to enemy with full health or low health.\n\n%s turns left. - -actors.buffs.highattack.name=Climb higher -actors.buffs.highattack.desc=By climb higher, you can prepare for your next attack. The more time you climb, more damage you will deal in your next melee attack. away from wall will remove this buff.\n\nNext damage bound:%s. - -actors.buffs.paryattack.name=pray -actors.buffs.paryattack.desc=By stand, you can prepare for your battle. The more time you stand, more damage you will deal, and less damage you will taken. away from this place will remove this buff.\n\nDamage bound:%s. - - -actors.buffs.highvoice.name=Accompaniment -actors.buffs.highvoice.desc=Your fans accompany for you, make you feel safe.\n\n Left:%sturns. -actors.buffs.highvoice.atkup=%sYou're the best! -actors.buffs.highvoice.heal=%sI love you! -actors.buffs.highvoice.speed=Be careful%s! -actors.buffs.highvoice.save=I always behind you,%s - -actors.buffs.mirrorshield.name=Wisdom reflection -actors.buffs.mirrorshield.desc=The shield of wisdom protects you so that you can fully rebound the damage you suffer next. \n\nLeft:%s turns. - -actors.buffs.boxstar.name=Star -actors.buffs.boxstar.desc=You're invincible. \n\n%sturns left. - -actors.buffs.breakout.name=Eruption -actors.buffs.breakout.desc=You decide to attack with all your might, causing and suffering a 100% increase in damage at the same time. \n\nDuration%s. - -actors.buffs.aflybless.name=fushigi-no bless -actors.buffs.aflybless.desc=Fushigi-no bless improve your body and your luck\n\n%sturns left. - -actors.buffs.taunt.name=Question mark -actors.buffs.taunt.desc=??? - -actors.buffs.damageup.name=Counter attack -actors.buffs.damageup.desc=Attack damage improve %s. - -actors.buffs.newcombo.name=Fighter hit -actors.buffs.newcombo.combo=%dhit -actors.buffs.newcombo.bad_target= Your target must be an enemy within range. -actors.buffs.newcombo.clobber_prompt=Select a target to break and make it back and faint -actors.buffs.newcombo.clobber_desc= _ breakdown _ skill to be translated is currently available. This move can repel an enemy and make it faint, but the attack damage will be reduced. Beating up an enemy can give you a breath in a hard battle -actors.buffs.newcombo.cleave_prompt=Select a target to be chopped if this skill kill the enemy, the number of hits will be retained -actors.buffs.newcombo.cleave_desc=_ chopping _ skills are currently available. This attack deals more damage. If you succeed in killing the enemy by chopping, the serial strike count will be retained rather than reset. _ the number of hits can be effectively accumulated in the face of a large number of enemies. -actors.buffs.newcombo.slam_prompt=Select a target to hit according to your armor to decide on the damage and the added shield -actors.buffs.newcombo.slam_desc=_Slam_ is currently available. This attack deals _increased damage and shields you based on the blocking power of your armor._ It's great for finishing a fight, letting you carry over endurance to the next one. -actors.buffs.newcombo.crush_prompt=Select a target to Crush\nDeals lots of damage -actors.buffs.newcombo.crush_desc=_Crush_ is currently available. This devastating attack _deals massive damage very consistently._ It's great for taking down a powerful opponent from high health! -actors.buffs.newcombo.desc=The gladiator builds momentum as they land successful blows. Each attack increases the combo counter by one, but taking too long between attacks or missing twice in a row will reset the combo counter to 0.\n\nBuilding combo unlocks special finisher abilities: powerful attacks that cannot miss! A different finisher is available at 2, 4, 6, and 8 combo count, and using a finisher will reset your combo. - -actors.buffs.corruption.name=Dominate -actors.buffs.corruption.desc=It is been dominate, just like corruption. - -actors.buffs.faithbuff.mechfaith.name=Faith-Mech -actors.buffs.faithbuff.mechfaith.desc=Mech faith reduce damage from mech mobs, and make you deal more damage to nature mobs. - -actors.buffs.faithbuff.lifefaith.name=Faith-Nature -actors.buffs.faithbuff.lifefaith.desc=Nature faith reduce damage from nature mobs, and make you deal more damage to mech mobs. - -actors.buffs.faithbuff.demonfaith.name=Faith-Demon -actors.buffs.faithbuff.demonfaith.desc=Demon faith reduce damage from demon mobs, and make you deal more damage to holy mobs. - -actors.buffs.faithbuff.humanfaith.name=Faith-Holy -actors.buffs.faithbuff.humanfaith.desc=Holy faith reduce damage from holy mobs, and make you deal more damage to demon mobs. - -actors.buffs.faithbuff.balancefaith.name=Faith-Balance -actors.buffs.faithbuff.balancefaith.desc=Balance faith reduce damage from bosses, and make you deal more damage to them. - -###hero -actors.char.def_verb=dodged -actors.char.out_of_paralysis=The pain snapped %s out of paralysis. - -actors.hero.hero.auto_potion=You drink a potion of healing by your auto potion. -actors.hero.hero.auto_potion_no=You don't have potion of healing. -actors.hero.hero.dewvial=It is different. -actors.hero.hero.leave=One does not simply leave Pixel Dungeon. -actors.hero.hero.level_up=Level up! -actors.hero.hero.locked_chest=This chest is locked and you don't have matching key. -actors.hero.hero.locked_door=You don't have a matching key. -actors.hero.hero.name=You -actors.hero.hero.new_level=Welcome to level %d! Now you are healthier and more focused. It's easier for you to hit enemies and dodge their attacks. -actors.hero.hero.noticed_smth=You noticed something. -actors.hero.hero.pain_resist=Pain resist you from your dream. -actors.hero.hero.revive=The ankh explodes with life-giving energy! -actors.hero.hero.search=search -actors.hero.hero.search_distracted=You can't concentrate, searching takes a while. -actors.hero.hero.something_else=There is something else here. -actors.hero.hero.wait=... -actors.hero.hero.you_now_have=You now have %s. - -actors.hero.heroclass.huntress=huntress -actors.hero.heroclass.huntress_desc_item=Huntress have _Knuckleduster_ and _EMP bola_.\n\n _Boomerang_ is her special item. -actors.hero.heroclass.huntress_desc_loadout=When using throwing weapons, Huntress will deal more damage based on melee weapon her use.\n\nHuntress senses neighbouring monsters even if they are hidden behind obstacles. -actors.hero.heroclass.huntress_desc_misc=_Potions of Mind Vision_ and _Scroll of Remove Curse_ are identified from the beginning. - -actors.hero.heroclass.mage=mage -actors.hero.heroclass.mage_desc_item=Mage have _magebook_ , _Wand of Magic Missile_ and _Wand of Disintegration_ .\n\n _Wonder Flask_ is his special item. -actors.hero.heroclass.mage_desc_loadout=Mage spend less time on using wand, and gain +3 magic power.\n\nMage have higher level limit when using dew upgrade, and gain one wand charge after eat anything. -actors.hero.heroclass.mage_desc_misc=_Scrolls of Identify_ and _Potion of Liquid Flame_ are identified from the beginning. - -actors.hero.heroclass.performer=Performer -actors.hero.heroclass.performer_desc_item=Performer have _triangolo_, _Scroll of Lullaby_ and _Bomb_ .\n\n _shovel_ is his special item. -actors.hero.heroclass.performer_desc_loadout=After kill or level up performer will gain rhythm buff, which can upgrade his accuracy and dexterity for a limit time.\n\nAfter level up performer will gain glass shield. which can reduce damage he taken. -actors.hero.heroclass.performer_desc_misc=_Scrolls of Lullaby_ and _Potion of Purity_ are identified from the beginning. - -actors.hero.heroclass.rogue=rogue -actors.hero.heroclass.rogue_desc_item=Rogue have _dagger_ and _Smoke Shuriken_ .\n\n_Cloak of Shadows_ is his special item. -actors.hero.heroclass.rogue_desc_loadout=When rogue equip weapon,ignore 2 strength to use it.\n\nRogue is more proficient in detecting hidden doors or traps. -actors.hero.heroclass.rogue_desc_misc=_Scroll of Magic Mapping_ and _Potion of Invisibility_ are identified from the beginning. - -actors.hero.heroclass.warrior=warrior -actors.hero.heroclass.warrior_desc_item=Warrior have _shortsword_ and three different _Pills_ .\n\n_shield_ is his special item. -actors.hero.heroclass.warrior_desc_loadout=When warrior equip armor,ignore 2 strength to use it.\n\nWarrior gain more health after eat anything. -actors.hero.heroclass.warrior_desc_misc=_Potions of Strength_ and _Scroll of Upgrade_ are identified from the beginning. - -actors.hero.heroclass.soldier=Soldier -actors.hero.heroclass.soldier_desc_item=Soldier have _sling_ and _Escape Knive_ .\n\n_pulse pistol_ is his special item. -actors.hero.heroclass.soldier_desc_loadout=Soldier has more ACU and DEX at the start, and gain more health limit when leveling up.\n\nSoldier is more luckily than other hero, and can notice curse items in backpack. -actors.hero.heroclass.soldier_desc_misc=_Scrolls of Rage_ and _Potion of Mending_ are identified from the beginning. - -actors.hero.heroclass.follower=follower -actors.hero.heroclass.follower_desc_item=Follower have _WoodenStaff_ and _Potion Of Healing_ .\n\n_sign box_ is his special item. -actors.hero.heroclass.follower_desc_loadout=Follower has chance to use a item with no cost, include potions, scrolls, foods, and enchanting items.\n\nFollower spend less gold in shop. -actors.hero.heroclass.follower_desc_misc=_Scrolls of Terror_ and _Potion of Healing_ are identified from the beginning. - -actors.hero.herosubclass.pastor=pastor -actors.hero.herosubclass.pastor_desc=_pastor_ heal himself fast, allowed his health more than health limit,and charm enemy after attack. -actors.hero.herosubclass.artisan=artisan -actors.hero.herosubclass.artisan_desc=_artisan_ will reduce his item's str require, and have chance to find a ex item drop after kill any mobs. -actors.hero.herosubclass.agent=agent -actors.hero.herosubclass.agent_desc=_Agent_ can use guns without equip them, and reload ammo quickly. He also has more stealth. -actors.hero.herosubclass.leader=leader -actors.hero.herosubclass.leader_desc=_Leader_ can upgrade everything he summoned, and harm enemy which attack him. He also can reduce damage he taken. -actors.hero.herosubclass.assassin=assassin -actors.hero.herosubclass.assassin_desc=When performing a surprise attack, the _Assassin_ inflicts additional damage to his target. -actors.hero.herosubclass.battlemage=battlemage -actors.hero.herosubclass.battlemage_desc=_Battlemage_ spend less time when using wand and gain more magic power. -actors.hero.herosubclass.berserker=berserker -actors.hero.herosubclass.berserker_desc=When severely wounded, the _Berserker_ enters a state of wild fury significantly increasing his damage output and reduces some damage when getting hurt. -actors.hero.herosubclass.freerunner=freerunner -actors.hero.herosubclass.freerunner_desc=The _Freerunner_ moves faster when he unencumbered and not starving, if he is invisible, this speed boost is increased. -actors.hero.herosubclass.gladiator=gladiator -actors.hero.herosubclass.gladiator_desc=A successful attack with a melee weapon allows the _Gladiator_ to start a combo, in which every next successful hit inflicts more damage. -actors.hero.herosubclass.joker=Joker -actors.hero.herosubclass.joker_desc=_Joker_ is good at battle. He can attack enemy on range and knock it back. -actors.hero.herosubclass.sniper=sniper -actors.hero.herosubclass.sniper_desc=The _Sniper_ is able to detect weak points in an enemy's armor, effectively ignoring it when using a missile weapon. -actors.hero.herosubclass.superstar=Super-Star -actors.hero.herosubclass.superstar_desc=_Super-Star_ is much powerful in music. He can upgrade his rhythm buff into echo-rhythm buff. -actors.hero.herosubclass.warden=warden -actors.hero.herosubclass.warden_desc=Having a strong connection with forces of nature allows the _Warden_ to gain additional health from dew, hiding in trampling grass, and seeds and dew from plants. -actors.hero.herosubclass.warlock=warlock -actors.hero.herosubclass.warlock_desc=After use wand attack an enemy the _Warlock_ will consumes its soul. It heals his wounds and satisfies his hunger. - -###really -###this is for save game -actors.hero.heroclass.warrior_name=warrior -actors.hero.heroclass.mage_name=mage -actors.hero.heroclass.rogue_name=rogue -actors.hero.heroclass.huntress_name=huntress -actors.hero.heroclass.performer_name=performer -actors.hero.heroclass.soldier_name=soldier -actors.hero.heroclass.follower_name=follower - -###mobs -actors.mobs.acidic.desc=Acidic scorpio is more dangerous than normal scorpio. The acid in its body releases when it is in danger, and protects itself against predators. -actors.mobs.acidic.name=Acidic scorpio -actors.mobs.adultdragonviolet.atk=Away from here! Intruder! -actors.mobs.adultdragonviolet.desc=Guard dungeon is summon by someone, but in peoples' eyes, it same as normal dungeon. -actors.mobs.adultdragonviolet.die=For Dolye town!! -actors.mobs.adultdragonviolet.name=Guard dungeon -actors.mobs.albino.desc=This is a rare breed of marsupial rat, with pure white fur and jagged teeth. Dark energy makes demon blood around it. -actors.mobs.albino.name=Albino rat -actors.mobs.albinopiranha.desc=The Albino giant piranha living in this place have been degenerating for hundreds of years. However, their other senses are unusually sensitive, and they can feel the changes of water flow around them, and they are also very ferocious. -actors.mobs.albinopiranha.name=Albino giant piranha -actors.mobs.assassin.def_verb=evaded -actors.mobs.assassin.desc=Assassin ninja are members of the Tengu assassin clan. They fight with ranged attacks at high speed. -actors.mobs.assassin.name=Assassin ninja -actors.mobs.bandit.desc=Crazy bandit can harm target when steal from it. -actors.mobs.bandit.name=Crazy bandit -actors.mobs.banditking.desc=This thief can put bombs on your body. -actors.mobs.banditking.die=Give you a break this time. -actors.mobs.banditking.dis=Life bandit disapper. -actors.mobs.banditking.name=Life bandit -actors.mobs.banditking.spork=Where is my treasure? -actors.mobs.bat.def_verb=evaded -actors.mobs.bat.desc=These brisk and tenacious inhabitants of cave domes may defeat much larger opponents by replenishing their health with each successful attack. -actors.mobs.bat.name=Vampire bat - -actors.mobs.bluecat.name=Blue*Cat -actors.mobs.bluewraith.def_verb=evaded -actors.mobs.bluewraith.desc=A Wraith warrior has been dispatched to avenge the dungeon. -actors.mobs.bluewraith.name=Wraith warrior -actors.mobs.brokenrobot.broken=System... down... -actors.mobs.brokenrobot.desc=A wandering robot unfinshed and broken down. You can feel its malice toward intruders. -actors.mobs.brokenrobot.explode=Explode on!! -actors.mobs.brokenrobot.name=Broken robot -actors.mobs.brownbat.def_verb=evaded -actors.mobs.brownbat.desc=Basically small, flying rats. Careful they don't get tangled in your hair. -actors.mobs.brownbat.die=The small bat's shrieks alert nearby enemies! -actors.mobs.brownbat.name=Small bat -actors.mobs.brute.desc=Brutes are the largest, strongest and toughest of all gnolls. When severely wounded, they go berserk, inflicting even more damage to their enemies. -actors.mobs.brute.enraged=Gnoll brute become enraged. -actors.mobs.brute.name=Gnoll brute -actors.mobs.crab.def_verb=parried -actors.mobs.crab.desc=These huge crabs are at the top of the food chain in the sewers. They are extremely fast and their thick carapace can withstand heavy blows. -actors.mobs.crab.name=Sewer crab -actors.mobs.crabking.desc=The crab king collects protective magical items to protect its childs away from dangerous. He is hiding himself in a powerful suit of armor. -actors.mobs.crabking.die=Sorry... my child... -actors.mobs.crabking.heal=Crab king draws power from the lightning shell! -actors.mobs.crabking.name=Crab king -actors.mobs.crabking.notice=Ah! Away from my children! -actors.mobs.demongoo.desc=Demon Goo is typically made up of a variety of substances, such as lava, slime, dark energy, malice; however, most of it is darkness. Be careful about letting it split itself, as even the weakest piece can become strong again with just a little bit of added lava. -actors.mobs.demongoo.divide=Demon Goo divides! -actors.mobs.demongoo.name=Demon goo - - -actors.mobs.dm300.desc=This machine was created by the Dwarves several centuries ago. Later, Dwarves started to replace machines with golems, elementals and even demons. Eventually it led their civilization to the decline. The DM-300 and similar machines were typically used for construction and mining, and in some cases, for city defense. -actors.mobs.dm300.die=Mission failed. Shutting down. -actors.mobs.dm300.heal=DM-300 repairs itself! -actors.mobs.dm300.name=DM-300 -actors.mobs.dm300.notice=Unauthorised personnel detected. -actors.mobs.dm300$tower.alert=The production line is attacked! Emergency protection measures start! -actors.mobs.dm300$tower.desc=Many years ago, dwarves built a complete line of production, but their research on magic made this production line out of maintenance. At present, these devices are very old. -actors.mobs.dm300$tower.name=Old production -actors.mobs.dm300$tower.robots=Alert...Alert... - - -actors.mobs.dragonking.desc=A normal dragon. After kill it it will summon other boss from other wrold. -actors.mobs.dragonking.name=Dragon king -actors.mobs.dustelement.blind=Dust hinder your sight. -actors.mobs.dustelement.desc=It's a cloud of dust, made by time and dark magic power. -actors.mobs.dustelement.name=dust element - -actors.mobs.dwarflich.desc=A powerful wizard sacrificed to sustain the undead dwarf king, the wizard calls on the power of death to damage opponents. -actors.mobs.dwarflich.name=Dwarf lich -actors.mobs.eye.desc=One of this demon's other names is "orb of hatred", because when it sees an enemy, it uses its deathgaze recklessly, often ignoring its allies and wounding them. -actors.mobs.eye.name=Evil eye -actors.mobs.fetidrat.desc=Something is clearly wrong with this rat. Its greasy black fur and rotting skin are very different from the healthy rats you've seen previously. It's pale green eyes make it seem especially menacing.\n\nThe rat carries a cloud of horrible stench with it, it's overpoweringly strong up close.\n\nDark ooze dribbles from the rat's mouth, it eats through the floor but seems to dissolve in water. -actors.mobs.fetidrat.name=fetid rat -actors.mobs.fiend.desc=Some demons seem to transcend their flesh and wear pure darkness as their form. Shadowy and menacing, these unholy abominations are born of malicious intent and are nothing more than incarnations of distilled evil, revelling only in death and pain. -actors.mobs.fiend.name=fiend -actors.mobs.fireelemental.desc==Wandering fire elementals are a byproduct of summoning greater entities. They are too chaotic in their nature to be controlled by even the most powerful demonologist. -actors.mobs.fireelemental.name=Fire elemental -actors.mobs.fishprotector.desc=It is cave protector. -actors.mobs.fishprotector.name=Cave protector -actors.mobs.flyingprotector.desc=Propector of the wisdom trial. -actors.mobs.flyingprotector.name=Wisdom protector -actors.mobs.forestprotector.desc=It is forest protector. -actors.mobs.forestprotector.name=Forest protecter -actors.mobs.gnoll.desc=Gnolls are hyena-like humanoids. They dwell in sewers and dungeons, venturing up to raid the surface from time to time. Gnoll scouts are regular members of their pack, they are not as strong as brutes and not as intelligent as shamans. -actors.mobs.gnoll.name=Gnoll scout -actors.mobs.gnollarcher.desc=This gnoll is camouflaged and hiding in the foliage. He's pretty upset you are here. -actors.mobs.gnollarcher.name=gnoll archer -actors.mobs.gnollking$gnollkeeper.desc=Treasure guarder for gnoll king. -actors.mobs.gnollking$gnollkeeper.name=Gnoll Keeper -actors.mobs.gnollking$gnollkeeper.safe=Away from our treasure! -actors.mobs.gnollking.angry=You make me angry! -actors.mobs.gnollking.desc=Gnoll have lots of treasure, and he can summon his propectors to help him in battle. He has more than 11 different names, but the most famous name is Hagger. -actors.mobs.gnollking.die=My...treasure... -actors.mobs.gnollking.name=Gnoll king -actors.mobs.gnollking.notice=Away from my treasure! -actors.mobs.gnollshaman.desc=The most intelligent gnolls can master shamanistic magic. Gnoll shamans prefer battle spells to compensate for lack of might, not hesitating to use them on those who question their status in a tribe. -actors.mobs.gnollshaman.name=gnoll shaman -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. -actors.mobs.gnolltrickster.name=gnoll trickster -actors.mobs.goldorc.def_verb=blocked -actors.mobs.goldorc.desc=Dark energy corrupt bokoblin, change them into dangerous mobs. -actors.mobs.goldorc.name=Gold eye Bokoblin -actors.mobs.goldthief.desc=Unlike other types of thieves, these only care for one specific thing: shiny, golden money. Be careful about letting them steal from you, as recovering lost gold from the tides of these like-minded thieves will be rather difficult. -actors.mobs.goldthief.name=Gold thief -actors.mobs.goldthief.stole=Gold thief steal %s golds from you! -actors.mobs.golem.def_verb=blocked -actors.mobs.golem.desc=The Dwarves tried to combine their knowledge of mechanisms with their newfound power of elemental binding. They used spirits of earth as the \"soul\" for the mechanical bodies of golems, which were believed to be most controllable of all. Despite this, the tiniest mistake in the ritual could cause an outbreak. -actors.mobs.golem.name=Golem - -actors.mobs.goo.atk=Goo is pumping itself up! -actors.mobs.goo.desc=Little is known about The Goo. It's quite possible that it is not even a creature, but rather a conglomerate of vile substances from the sewers that somehow gained basic intelligence. Regardless, dark magic is certainly what has allowed Goo to exist.\n\nIts gelatinous nature has let it absorb lots of dark energy, you feel a chill just from being near. If goo is able to attack with this energy you won't live for long. -actors.mobs.goo.die=glurp... glurp... -actors.mobs.goo.name=Sewer goo -actors.mobs.goo.notice=GLURP-GLURP! -actors.mobs.goo$poisongoo.create=Goo creates mini goo! -actors.mobs.goo$poisongoo.desc=Little is known about The Goo. It's quite possible that it is not even a creature, but rather a conglomerate of vile substances from the sewers that somehow gained basic intelligence. Regardless, dark magic is certainly what has allowed Goo to exist.\n\nIts gelatinous nature has let it absorb lots of dark energy, you feel a chill just from being near. If goo is able to attack with this energy you won't live for long. -actors.mobs.goo$poisongoo.divide=Mini Goo divides! -actors.mobs.goo$poisongoo.name=Mini Goo -actors.mobs.goo$poisongoo.squeeze=Goo is pumping itself up! - - -actors.mobs.graveprotector.desc=It is prison protector. -actors.mobs.graveprotector.name=Grave protecter -actors.mobs.greatcrab.noticed=The crab notices the attack and blocks with its massive claw. -actors.mobs.greatcrab.blocked=blocked -actors.mobs.greatcrab.def_verb=blocked -actors.mobs.greatcrab.desc=This crab is gigantic, even compared to other sewer crabs. Its blue shell is covered in cracks and barnacles, showing great age. It lumbers around slowly, barely keeping balance with its massive claw.\n\nWhile the crab only has one claw, its size easily compensates. The crab holds the claw infront of itself whenever it sees a threat, shielding itself behind an impenetrable wall of carapace. -actors.mobs.greatcrab.name=great crab -actors.mobs.greyrat.desc=Heartier cousins to Marsupial rats, Grey Rats have built up tolerances that allow them to live in the most polluted parts of the sewers. Probably still good to eat once cooked. -actors.mobs.greyrat.name=Grey rat -actors.mobs.guard.def_verb=blocked -actors.mobs.guard.desc=Once keepers of the prison, these guards have long since become no different than the inmates. They shamble like zombies, brainlessly roaming through the halls in search of anything out of place, like you!\n\nThey carry chains around their hip, possibly used to pull in enemies to close range. -actors.mobs.guard.name=prison guard -actors.mobs.guard.scorpion=Come over here! -actors.mobs.hermitcrab.absorb=Hermit Crab absorbed the attack in its shell. -actors.mobs.hermitcrab.charge=Lightning Shell charged by %s. -actors.mobs.hermitcrab.desc=Minions of the crab king, these tough crabs absorb all but the weakest attacks with their shells. The damage they absorb is used to charge the lightning shell. -actors.mobs.hermitcrab.name=hermit crab - - -actors.mobs.king$undead.def_verb=blocked -actors.mobs.king$undead.desc=These undead dwarves, risen by the will of the King of Dwarves, were members of his court. They appear as skeletons with a stunning amount of facial hair. -actors.mobs.king$undead.name=undead dwarf -actors.mobs.king.arise=Arise, slaves! -actors.mobs.king.cannot=I haven't lost it yet! -actors.mobs.king.def_verb=parried -actors.mobs.king.desc=The last king of dwarves was known for his deep understanding of processes of life and death. He has persuaded members of his court to participate in a ritual, that should have granted them eternal youthfulness. In the end he was the only one, who got it - and an army of undead as a bonus. -actors.mobs.king.die=You cannot kill me, %s... I am... immortal... -actors.mobs.king.liches=Liches, revive! -actors.mobs.king.meeting=Show your permission! -actors.mobs.king.name=King of Dwarves -actors.mobs.king.notice=How dare you! -actors.mobs.king$dwarfkingtomb.desc=This tomb is made by bone and something you don't know. -actors.mobs.king$dwarfkingtomb.impossible=That is useless. -actors.mobs.king$dwarfkingtomb.name=Eternal tomb - -actors.mobs.littower.desc=Otiluke use his slate to keep core safe, before his mirror died, this slate will keep work! -actors.mobs.littower.name=Otiluke lightning slate -actors.mobs.littower.zap=Away from core! -actors.mobs.livemoss.desc=One mob from slay the spire. -actors.mobs.livemoss.name=living moss -actors.mobs.magiceye.desc=This magic eye is made by ZOT's power. It is base on magic so it will die after it attack. -actors.mobs.magiceye.name=magic eye -actors.mobs.mimic.desc=Mimics are magical creatures which can take any shape they wish. In dungeons they almost always choose a shape of a treasure chest, because they know how to beckon an adventurer. -actors.mobs.mimic.name=mimic -actors.mobs.minesentinel.desc=Otiluke summon this to propect this place. It hands _%s_ , looks dangerous. -actors.mobs.minesentinel.name=animated steel -actors.mobs.mob$fleeing.status=This %s is fleeing. -actors.mobs.mob$hunting.status=This %s is hunting. -actors.mobs.mob$passive.status=This %s is passive. -actors.mobs.mob$sleeping.status=This %s is sleeping. -actors.mobs.mob$wandering.status=This %s is wandering. -actors.mobs.mob.clear1=Level cleared in %s moves under goal. -actors.mobs.mob.clear2=Level cleared in 1 move under goal. -actors.mobs.mob.clear3=Level cleared over goal moves. -actors.mobs.mob.died=You hear something died in the distance. -actors.mobs.mob.exp=%+dEXP -actors.mobs.mob.killcount=Kill count:%s -actors.mobs.mob.rage=\#$%^ -actors.mobs.mob.rankings_desc=Killed by:%s -actors.mobs.monk.def_verb=parried -actors.mobs.monk.desc=These monks are fanatics, who devoted themselves to protecting their city's secrets from all aliens. They don't use any armor or weapons, relying solely on the art of hand-to-hand combat. -actors.mobs.monk.disarm=The monk knocks the %s from your hands! -actors.mobs.monk.name=dwarf monk -actors.mobs.mossyskeleton.def_verb=blocked -actors.mobs.mossyskeleton.desc=This skeleton is covered by mossy. -actors.mobs.mossyskeleton.name=mossy skeleton - -actors.mobs.musketeer.desc=In the dwarven King dominated the parliament with necromancy after a general uprising led a striker, although the results of how to know, but after the dwarf shooter will officially joined the dwarven kingdom of the patrol. -actors.mobs.musketeer.name=Darwf Musketeer -actors.mobs.orbofzotmob.desc=You use this thing and it is attacking mobs. -actors.mobs.orbofzotmob.die=Energy down, waiting for charge. -actors.mobs.orbofzotmob.name=Zot destructo -actors.mobs.orc.def_verb=blocked -actors.mobs.orc.desc=A creature live in power trial. -actors.mobs.orc.name=Bokoblin -actors.mobs.otiluke.desc=This mirror is made by zot, based on otiluck. -actors.mobs.otiluke.name=Corrupted mirror -actors.mobs.otiluke.summon=Protect... here... -actors.mobs.piranha.desc=These carnivorous fish are not natural inhabitants of underground pools. They were bred specifically to protect flooded treasure vaults. -actors.mobs.piranha.name=giant piranha - -actors.mobs.plaguedoctor.crazy=plaguedoctor's resolve is tested......madness!!! -actors.mobs.plaguedoctor.desc=He is from remix. His idea is from darkest dungeon. -actors.mobs.plaguedoctor.name=plague doctor -actors.mobs.plaguedoctor.notice=so... can you help me with my research ? -actors.mobs.plaguedoctor.yell2=plague... they are everywhere... we will die here... -actors.mobs.plaguedoctor.yell=I will show you, this won't be hurt... -actors.mobs.plaguedoctor$shadowrat.desc=It is some kind of shadows. It looks like rat, -actors.mobs.plaguedoctor$shadowrat.name=shadow rat - -actors.mobs.prisonwander$seekbombp.name=Seeking bombs -actors.mobs.prisonwander$seekbombp.desc=Seeking bomb -actors.mobs.prisonwander.desc=It means he is the king of this prison. -actors.mobs.prisonwander.die=I will be back! -actors.mobs.prisonwander.name=prison warden -actors.mobs.prisonwander.notice=I see youuuuuuuu! -actors.mobs.prisonwander.scorpion=Noone can leave here! - -actors.mobs.rat.desc=Marsupial rats are aggressive but rather weak denizens of the sewers. They have a nasty bite, but are only life threatening in large numbers. -actors.mobs.rat.name=marsupial rat -actors.mobs.ratboss.desc=This is leader rat, it can summon other rats, -actors.mobs.ratboss.name=Leader rat -actors.mobs.ratboss.spawn=There's a group of mice here! -actors.mobs.redwraith.def_verb=evaded -actors.mobs.redwraith.desc=Kill it may find rings. -actors.mobs.redwraith.name=chaos wraith -actors.mobs.scorpio.desc=These huge arachnid-like demonic creatures avoid close combat by all means, firing crippling serrated spikes from long distances. -actors.mobs.scorpio.name=scorpio -actors.mobs.seekinbomb.desc=Just a bomb. - - -actors.mobs.senior.desc=He is stronger. -actors.mobs.senior.name=senior monk - -actors.mobs.sentinel.desc=You would think that it's just another one of this dungeon's ugly steel, but its red glowing eyes give it away.\n\nWhile the statue itself is made of stone, the _%s,_ it's wielding, looks real. -actors.mobs.sentinel.name=animated steel - -actors.mobs.sewerheart.atk=This plant seems to be preparing for something! -actors.mobs.sewerheart.blink=It disapper! -actors.mobs.sewerheart.desc=A Rotberry's fruit is very unique. Instead of rotting away and providing nutrients, the fruit grows, hardens, and encompasses the seed. It provides protection for the internal organs which grow inside the fruit. This giant orb is referred to as the heart of an adult rotberry plant. -actors.mobs.sewerheart.name=Sewer Heart -actors.mobs.sewerheart$sewerlasher.desc=The rot lasher is a part of a mature rotberry plant's root structure, and also their primary means of defence. Lashers are stuck into the ground, but will violently assault anything that gets near to them. When there is no nearby prey, they stand motionless, attempting to blend in with surrounding vegetation. -actors.mobs.sewerheart$sewerlasher.name=Sewer lasher - -actors.mobs.shadowyog.blink=Shadow Yog vanishes! -actors.mobs.shadowyog.desc=Shadow yog is soul of yog. -actors.mobs.shadowyog.die=... -actors.mobs.shadowyog.illusion=There is no light here, only our shadows to consume you... -actors.mobs.shadowyog.name=shadow Yog-Dzewa - -actors.mobs.shell.desc=The lightning shell crackles with electric power. It's powerful lightning attack is drawn to all living things in the lair. -actors.mobs.shell.name=lightning shell - -actors.mobs.shielded.def_verb=blocked -actors.mobs.shielded.desc=The gnoll was carrying a shield. Really it is with the sword point. -actors.mobs.shielded.name=shielded brute -actors.mobs.skeleton.def_verb=blocked -actors.mobs.skeleton.desc=Skeletons are composed of corpses bones from unlucky adventurers and inhabitants of the dungeon, animated by emanations of evil magic from the depths below. After they have been damaged enough, they disintegrate in an explosion of bones. -actors.mobs.skeleton.name=skeleton -actors.mobs.skeletonhand1.desc=This ancient giant hand belongs to the king of skeletons. -actors.mobs.skeletonhand1.name=skeleton hand -actors.mobs.skeletonhand2.desc=This ancient giant hand belongs to the king of skeletons. -actors.mobs.skeletonhand2.name=king hand -actors.mobs.skeletonking.desc=This ancient giant skull belongs to the king of skeletons. -actors.mobs.skeletonking.die=I need more mana... -actors.mobs.skeletonking.name=skeleton king -actors.mobs.skeletonking.notice=You will die screaming in flames, %s! -actors.mobs.sommonskeleton.name=summoned skeleton -actors.mobs.sommonskeleton.desc=It's just a summoned undead. -actors.mobs.sokobansentinel.desc=sokoban propector handle _%s_. -actors.mobs.sokobansentinel.name=sokoban propector -actors.mobs.spinner.desc=These greenish furry cave spiders try to avoid direct combat, preferring to wait in the distance while their victim, entangled in the spinner's excreted cobweb, slowly dies from their poisonous bite. -actors.mobs.spinner.name=cave spinner -actors.mobs.statue.desc=You would think that it's just another one of this dungeon's ugly statues, but its red glowing eyes give it away.\n\nWhile the statue itself is made of stone, the _%s,_ it's wielding, looks real. -actors.mobs.statue.name=animated statue -actors.mobs.succubus.desc=The succubi are demons that look like seductive (in a slightly gothic way) girls. Using its magic, the succubus can charm a hero, who will become unable to attack anything until the charm wears off. -actors.mobs.succubus.name=succubus -actors.mobs.swarm.def_verb=evaded -actors.mobs.swarm.desc=The deadly swarm of flies buzzes angrily. Every non-magical attack will split it into two smaller but equally dangerous swarms. -actors.mobs.swarm.name=swarm of flies -actors.mobs.tengu.desc=A famous and enigmatic assassin, named for the mask grafted to his face.\n\nTengu is held down with large clasps on his wrists and knees, though he seems to have gotten rid of his chains long ago.\n\nHe will try to use traps, deceptive magic, and precise attacks to eliminate the only thing stopping his escape: you. -actors.mobs.tengu.die=I look down upon you. -actors.mobs.tengu.name=Tengu -actors.mobs.tengu.notice=You are mine, %s! -actors.mobs.tenguden.die=Curse you!!! -actors.mobs.tenguden.name=Hidden Tengu -actors.mobs.tenguden.notice=How can you find me?! -actors.mobs.tenguden.desc=A famous and enigmatic assassin, named for the mask grafted to his face.\n\nTengu is held down with large clasps on his wrists and knees, though he seems to have gotten rid of his chains long ago.\n\nHe will try to use traps, deceptive magic, and precise attacks to eliminate the only thing stopping his escape: you. -actors.mobs.testmob.desc=test mob -actors.mobs.testmob.name= Scarecrow -actors.mobs.testmob2.desc=This scarecrow is dangerous. Don't touch it. -actors.mobs.testmob2.name=Clockwork scarecrow -actors.mobs.thief.desc=Though these inmates roam free of their cells, this place is still their prison. Over time, this place has taken their minds as well as their freedom. Long ago, these crazy thieves and bandits have forgotten who they are and why they steal. -actors.mobs.thief.name=crazy thief -actors.mobs.thiefimp.carries=\n\nThe thief is carrying a _%s._ Stolen obviously. -actors.mobs.thiefimp.desc=Imps are lesser demons. They are notable neither for their strength nor their magic talent, but for their cruelty and greed. However, some of them are actually quite nice and sociable. Certainly not this one, though... -actors.mobs.thiefimp.name=Thief Imp -actors.mobs.thiefimp.stole=The thief imp stole %s from you! -actors.mobs.thiefking.desc=Leader of this city, a legendary thief. -actors.mobs.thiefking.die=You are better than I think... -actors.mobs.thiefking.name=The thief king -actors.mobs.thiefking.notice=Ready to die, %s? - -actors.mobs.trollwarrior.angry=You are attacking me?! -actors.mobs.trollwarrior.desc=Before the prison fall, they were the most powerful groups in the prison, and even the guards did not want to fight with them. -actors.mobs.trollwarrior.name=Troll Warrior - -actors.mobs.uamulet.desc=The end of bossrush. -actors.mobs.uamulet.name=Shadow of Amulet -actors.mobs.uamulet$darkmirror.name=Dark mirror -actors.mobs.uamulet$darkmirror.desc=??? - -actors.mobs.udm300$seekbomb.name=hunting bomb -actors.mobs.udm300.desc=A powerful kill machine. -actors.mobs.udm300.name=Killing machine - -actors.mobs.ugoo$earthgoo.name=earth goo -actors.mobs.ugoo$firegoo.name=fire goo -actors.mobs.ugoo$icegoo.name=ice goo -actors.mobs.ugoo$shockgoo.name=shock goo -actors.mobs.ugoo.desc=A goo from void. -actors.mobs.ugoo.name=Void goo - -actors.mobs.uicecorps.name=ice corps -actors.mobs.uicecrops.desc=Ice corps... - -actors.mobs.uking.desc=King of plant. -actors.mobs.uking.name=Plant king - -actors.mobs.utengu.desc=He is another Tengu. -actors.mobs.utengu.name=young tengu - -actors.mobs.uyog.desc=Original yog with tentacle. -actors.mobs.uyog.name=Original yog - -actors.mobs.vaultprotector.desc=It is city protector. -actors.mobs.vaultprotector.name=vault protector -actors.mobs.warlock.desc=When dwarves' interests have shifted from engineering to arcane arts, warlocks have come to power in the city. They started with elemental magic, but soon switched to demonology and necromancy. -actors.mobs.warlock.name=dwarf warlock -actors.mobs.wraith.def_verb=evaded -actors.mobs.wraith.desc=A wraith is a vengeful spirit of a sinner, whose grave or tomb was disturbed. Being an ethereal entity, it is very hard to hit with a regular weapon. -actors.mobs.wraith.name=wraith - -actors.mobs.yog$burningfist.name=burning fist -actors.mobs.yog$burningfist.desc=Fire fist -actors.mobs.yog$infectingfist.name=infecting fist -actors.mobs.yog$infectingfist.desc=Acid fist -actors.mobs.yog$larva.name=god's larva -actors.mobs.yog$larva.desc=larva -actors.mobs.yog$pinningfist.name=pinning fist -actors.mobs.yog$pinningfist.desc=prison fist -actors.mobs.yog$rottingfist.name=rotting fist -actors.mobs.yog$rottingfist.desc=earth fist -actors.mobs.yog.blink=Yog disappeared! -actors.mobs.yog.desc=Yog-Dzewa is an Old God, a powerful entity from the realms of chaos. A century ago, the ancient dwarves barely won the war against its army of demons, but were unable to kill the god itself. Instead, they then imprisoned it in the halls below their city, believing it to be too weak to rise ever again. -actors.mobs.yog.die=I will never die... -actors.mobs.yog.name=Yog-Dzewa - -actors.mobs.yog.notice=Hope is an illusion... -actors.mobs.zot.desc=Zot is one of the lords in the void. -actors.mobs.zot.die=... -actors.mobs.zot.name=Zot -actors.mobs.zot.notice=You will die! -actors.mobs.zot.pain=Feel my pain! -actors.mobs.zotphase.desc=Zot mirror, looks reall. -actors.mobs.zotphase.name=Zot mirror - -actors.mobs.virus.desc=virus -actors.mobs.virus.name=---!!!data delete!!!--- - -actors.mobs.zombie.desc=Zombie is... wait it is common infected. as their name implies, are the most commonly faced enemy and are the easiest to defeat. -actors.mobs.zombie.name=zombie -actors.mobs.patroluav.desc=It is robot used for cleaning sewer garbage. -actors.mobs.patroluav.name=patrol UAV -actors.mobs.sandmob.desc=This mob is made by sand. -actors.mobs.sandmob.name=sand mob -actors.mobs.sandmob$minisand.name=mini sand mob -actors.mobs.sandmob$minisand.desc=mini sand mob -actors.mobs.spiderbot.desc=This is a robot spider. It can use web and tar gas. -actors.mobs.spiderbot.name=spider bot - -actors.mobs.demonflower.desc=A flower from slay the spire. It can attack 3 time in one turns, -actors.mobs.demonflower.debuff=demon flower use weak spores. -actors.mobs.demonflower.name=Demon flower - -actors.mobs.sufferer.desc=Before he be corrupted by demon, he was a warlock. -actors.mobs.sufferer.name=sufferer - -actors.mobs.tank.desc=Usually undead is some weak, slow mob. But this one is stronger and powerful. Its name is tank. -actors.mobs.tank.notice=aaaaaaaaaaaaaaaaaaaa!!! -actors.mobs.tank.die=aaaaaaaaaaaaaaaaaaaaa..... -actors.mobs.tank.rock=TANK throw a stone! -actors.mobs.tank.name=TANK - -actors.mobs.spiderqueen.desc=She is from remixed, but she is stronger in here. Her egg can hatch more than 3 types of spider. -actors.mobs.spiderqueen.notice=Who is tearing my web?! -actors.mobs.spiderqueen.die=I lose... -actors.mobs.spiderqueen.egg=Spider hatch a new egg. -actors.mobs.spiderqueen.name=Spider queen -actors.mobs.spiderqueen$spideregg.name=spider egg -actors.mobs.spiderqueen$spideregg.desc=spider eggs - -actors.mobs.spiderqueen$spiderworker.name=Spider worker -actors.mobs.spiderqueen$spiderworker.desc=One type spider of spider army. -actors.mobs.spiderqueen$spiderjumper.name=spider jumper -actors.mobs.spiderqueen$spidermind.name=spider minder -actors.mobs.spiderqueen$spidergold.name=spider golder - -actors.mobs.goldcollector.name=Gold Collector -actors.mobs.goldcollector.desc=Why can you collect so many golds. - -actors.mobs.levelchecker.name=Level checker -actors.mobs.levelchecker.desc=This thing shouldn't appare. - -actors.mobs.normalcell.name=Cell mob -actors.mobs.normalcell.desc=The most basic mob in this world. Most of them has already evolve into other monster. - -actors.mobs.hybrid.name=Hybrid -actors.mobs.hybrid.notice=I am Amon's faithful servant. -actors.mobs.hybrid.die=In void... -actors.mobs.hybrid.shield=Amon's power protect me. -actors.mobs.hybrid.desc=An unknown creature mixed b'y alien, beast, undead, and other things. -actors.mobs.hybrid$mixers.name=Hybrid -actors.mobs.hybrid$mixers.desc=An unknown creature mixed b'y alian, beast, undead, and other things. - -actors.mobs.elderavatar.name=Elder avatar -actors.mobs.elderavatar.notice=obey or die! -actors.mobs.elderavatar.disarm=elder disarm your armor. -actors.mobs.elderavatar.die=I am just one of them.... -actors.mobs.elderavatar.shield=Obelisk continuing my life... -actors.mobs.elderavatar.desc=He is one of alien's leader. He is trying to find a way to make him immortality. -actors.mobs.elderavatar$obelisk.name=Obelisk -actors.mobs.elderavatar$obelisk.impossible=Damage reduce. -actors.mobs.elderavatar$obelisk.desc=Some kind of protect device. -actors.mobs.elderavatar$thehunter.name=The Hunter -actors.mobs.elderavatar$thehunter.desc=The alien Hunter -actors.mobs.elderavatar$thewarlock.name=The Warlock -actors.mobs.elderavatar$thewarlock.desc=The alien Warlock -actors.mobs.elderavatar$themonk.name=The Monk -actors.mobs.elderavatar$themonk.desc=The alien Monk -actors.mobs.elderavatar$themech.name=The Mech -actors.mobs.elderavatar$themech.desc=The alien Mech - -actors.mobs.npcs.mtree.name=little tree -actors.mobs.npcs.mtree.desc=A normal tree. - -actors.mobs.lichdancer.name=Lich dancer -actors.mobs.lichdancer.desc=He was a dancer, but now he is a lich. -actors.mobs.lichdancer.notice=In my acting life, I have learned a truth: as human beings, our actors have limits. So... I can fly!!! -actors.mobs.lichdancer$batterytomb.name=Necro Battery -actors.mobs.lichdancer$batterytomb.desc=A battery full with necro energy. -actors.mobs.lichdancer$linkbomb.name=Bomb -actors.mobs.lichdancer$linkbomb.desc=Watch out ,it will explode! - -actors.mobs.firerabbit.name=Lucifer -actors.mobs.firerabbit.desc=A rabbit demi-human, use fire as it's weapon, bring death to undead. -actors.mobs.firerabbit.yell=ko~ko~da~yo - -actors.mobs.manyskeleton.name=Huge Skull -actors.mobs.manyskeleton.desc=A huge skull made by lots of skeletons. - -actors.mobs.yearbeast.name=Year the beast -actors.mobs.yearbeast.disarm=Year hit down your equipment -actors.mobs.yearbeast.desc=A hearsays mobs. -actors.mobs.yearbeast.notice=I AM FREE!!! -actors.mobs.yearbeast.die=You win... Take this... -actors.mobs.yearbeast.escape=Not time now... Escape... -actors.mobs.yearbeast2.name=Year in town -actors.mobs.yearbeast2.disarm=year disarm you! -actors.mobs.yearbeast2.desc=Another year beast. -actors.mobs.yearbeast2.notice=Who is in there?! -actors.mobs.yearbeast2.die=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!!! -###pets -actors.mobs.pets.bluedragon.desc=Blue dragon is good at ice magic. -actors.mobs.pets.bluedragon.name=Blue dragon -actors.mobs.pets.bluedragon.ready=Ice nova ready to use. -actors.mobs.pets.bunny.desc=As Easter Traditions, Easter bunnies and eggs were once famous all over the world. -actors.mobs.pets.bunny.name=Bunny of Easter egg -actors.mobs.pets.bunny.ready=Wild bite ready to use. -actors.mobs.pets.cococat.desc=Just someone who can help you survival in first few days. It might leave soon. -actors.mobs.pets.cococat.name=Bomb cat -actors.mobs.pets.cococat.ready=Super explode ready to use. -actors.mobs.pets.cococat.thanks=Well, I have finish my job. Good luck. -actors.mobs.pets.lightdragon.desc=It is a light dragon. -actors.mobs.pets.lightdragon.name=Light dragon -actors.mobs.pets.lightdragon.ready=Light shoot is ready. -actors.mobs.pets.fly.desc=This fly buzzes with enthusiastic ambition, dreaming to one day become a beautiful butterfly. -actors.mobs.pets.fly.name=Fly -actors.mobs.pets.gentlecrab.desc=It is a gentleman. Also a crab. -actors.mobs.pets.gentlecrab.name=gentle crab -actors.mobs.pets.golddragon.desc=Missing. NO -actors.mobs.pets.golddragon.name=Gold Dragon -actors.mobs.pets.golddragon.ready=Deadly breath ready to use. -actors.mobs.pets.greendragon.desc=Green dragon is good at electricity magic. -actors.mobs.pets.greendragon.name=Green dragon -actors.mobs.pets.greendragon.ready=EMP ready to use. -actors.mobs.pets.leryfire.desc=A Chaos elemental. I think it is powerful. -actors.mobs.pets.leryfire.name=Chaos elemental -actors.mobs.pets.leryfire.ready=Unknow blast ready to use. Are you cool? -actors.mobs.pets.monkey.desc=A klik entirely made of spider silk. It's oddly fluffy. It seems to enjoy food and cloth items. -actors.mobs.pets.monkey.name=spidersilk klik -actors.mobs.pets.pet.levelup=Your pet grow stronger. -actors.mobs.pets.pet.pet_died=Your pet has died... -actors.mobs.pets.reddragon.desc=Red dragon is good at fire magic. -actors.mobs.pets.reddragon.name=Red dragon -actors.mobs.pets.reddragon.ready=Flame breath ready to use. -actors.mobs.pets.ribbonrat.desc=This cute little rate wears only a ribbon that it cherishes highly, but for unknown reasons. It looks ready to show you its pride at just about any moment. -actors.mobs.pets.ribbonrat.name=ribbon rat -actors.mobs.pets.scorpion.desc=A super sized blood thirsty scorpion. Its tail is tipped with a dangerous stinger. -actors.mobs.pets.scorpion.name=Blood Scorpion -actors.mobs.pets.scorpion.ready=Caustic finale ready to use. -actors.mobs.pets.shadowdragon.desc=Dark dragon bring shadow, born in light. -actors.mobs.pets.shadowdragon.name=Shadow dragon -actors.mobs.pets.shadowdragon.ready=Shadow wave ready to use. -actors.mobs.pets.snake.desc=This snake used to enjoy its days under the soft glow of moonshine with its brother, before it decided to follow its wanderlust into the great unknown. -actors.mobs.pets.snake.name=Snake -actors.mobs.pets.spider.desc=A small, fuzzy spider seems to like trying to hide under your armor. However, despite its clingy shyness, it looks ready to help just like any good pet. -actors.mobs.pets.spider.name=Web Spider -actors.mobs.pets.spider.ready=Web is ready for use. -actors.mobs.pets.stone.desc=A freshly hatched metal klik grew from the proximity of stuff in your backpack. Such a cute ball! Might try to eat your gear... -actors.mobs.pets.stone.name=metal klik -actors.mobs.pets.bugdragon.desc=?????? -actors.mobs.pets.bugdragon.name=B u G d r A g O N -actors.mobs.pets.bugdragon.ready=??? is ready -actors.mobs.pets.velocirooster.desc=The Velocirooster is a vicious cousin of the domesticated rooster. It races through the dungeon and attacks with razor sharp talons and a vicious beak. This one has a collar with a tag. It reads, 'To Sprouted from Unleashed. Please enjoy this Velocirooster.' -actors.mobs.pets.velocirooster.name=velocirooster -actors.mobs.pets.velocirooster.ready=Claw ready to use. Cock-a-doodle-roar! -actors.mobs.pets.violetdragon.desc=Violet dragon is good at earth magic. -actors.mobs.pets.violetdragon.name=Violet dragon -actors.mobs.pets.violetdragon.ready=Poison touch ready to use. -actors.mobs.pets.yearpet.desc=a baby year. -actors.mobs.pets.yearpet.name=Baby year -##npc -actors.mobs.npcs.alivefish.desc=A fish man. -actors.mobs.npcs.alivefish.name=alive fish -actors.mobs.npcs.alivefish.yell1=bubble... -actors.mobs.npcs.alivefish.yell2=Blub blub blub... -actors.mobs.npcs.bilboldev.desc=This is a developer who build Skillfull Pixel Dungeon. He is a good person. -actors.mobs.npcs.bilboldev.name=Bilboldev -actors.mobs.npcs.bilboldev.yell1=LOL, you're gonna have to be patient with Skillful Pixel Dungeon updates. xD -actors.mobs.npcs.bilboldev.yell2=Well what's unique about SPD is the skill system and the campaign I plan on picking up soon. -actors.mobs.npcs.bilboldev.yell3=Hatsune's sacrifice will not be forgotten! - -actors.mobs.npcs.blacksmith.blood_1=Hey human! Wanna be useful, eh? Take dis pickaxe and _kill a bat_ wit' it, I need its blood on the head. What do you mean, how am I gonna pay? You greedy...\nOk, ok, I don't have money to pay, but I can do some smithin' for you. Consider yourself lucky, I'm the only blacksmith around. -actors.mobs.npcs.blacksmith.blood_2=I said I need bat blood on the pickaxe. Chop chop! -actors.mobs.npcs.blacksmith.cant_reforge=I can't reforge these items! -actors.mobs.npcs.blacksmith.completed=Oh, you have returned... Better late dan never. -actors.mobs.npcs.blacksmith.cursed=I don't work with cursed items! -actors.mobs.npcs.blacksmith.degraded=It's junk, the quality is too poor! -actors.mobs.npcs.blacksmith.desc=This troll blacksmith looks like all trolls look: he is tall and lean, and his skin resembles stone in both color and texture. The troll blacksmith is tinkering with unproportionally small tools. -actors.mobs.npcs.blacksmith.get_lost=I'm busy. Get lost! -actors.mobs.npcs.blacksmith.gold_1=Hey human! Wanna be useful, eh? Take dis pickaxe and mine me some _dark gold ore, 15 pieces_ should be enough. What do you mean, how am I gonna pay? You greedy...\nOk, ok, I don't have money to pay, but I can do some smithin' for you. Consider yourself lucky, I'm the only blacksmith around. -actors.mobs.npcs.blacksmith.gold_2=Dark gold ore. 15 pieces. Seriously, is it dat hard? -actors.mobs.npcs.blacksmith.keeppickaxe=Take this pick axe. It will be use full. -actors.mobs.npcs.blacksmith.lost_pick=Are you kiddin' me? Where is my pickaxe?! -actors.mobs.npcs.blacksmith.name=troll blacksmith -actors.mobs.npcs.blacksmith.need_reinforced=Sorry, dis item is too weak to handle so many upgrades. -actors.mobs.npcs.blacksmith.same_item=Select 2 different items, not the same item twice! -actors.mobs.npcs.blacksmith.triforce=So, you find those three force? Ok, I will try to fuse them. -actors.mobs.npcs.blacksmith.un_ided=I need to know what I'm working with, identify them first! - -actors.mobs.npcs.blacksmith2.adamantite=Oh, you've already found Adamant, I can weld this thing with other item to make sure that item can handle any upgrade as you want. It will spend _50 dark gold_. -actors.mobs.npcs.blacksmith2.already_reforge=I can't weld another Adamant into this item... -actors.mobs.npcs.blacksmith2.cant_reforge=I can't weld Adamant into un-upgread item... -actors.mobs.npcs.blacksmith2.cant_work=I can't find Adamant... -actors.mobs.npcs.blacksmith2.cursed=I can't weld cursed item... -actors.mobs.npcs.blacksmith2.degraded=I can't weld degraded item... -actors.mobs.npcs.blacksmith2.desc=This troll welder looks like all trolls look: he is tall and lean, and his skin resembles stone in both color and texture. The troll welder is tinkering with unproportionally small tools. -actors.mobs.npcs.blacksmith2.himself=As you can see, I'm the little brother of that blacksmith. Although my brother thinks that only the traditional blacksmith technology can help trolls, I think science and technology can also be just as beneficial. Well, seems you don't have any _Adamant_ or 50 pieces of dark gold ore. I can't do anything unless I have both to work with. -actors.mobs.npcs.blacksmith2.name=Troll welder -actors.mobs.npcs.blacksmith2.same_item=I can't weld same item... -actors.mobs.npcs.blacksmith2.un_ided=I can't weld unknow item... -actors.mobs.npcs.coconut.desc=A cute orange cat with goggles and shoulder bag. Seems like there are lots of bombs in his bag. -actors.mobs.npcs.coconut.name=coconut -actors.mobs.npcs.coconut.yell1=Ah, you found me! Welcome to my secret shop. Mew! -actors.mobs.npcs.coconut.yell2=I have lots of bombs for sale. Mew! -actors.mobs.npcs.coconut.yell3=Did you know? Hmdzl001 is training bosses right now. Isn't it exciting? Mew! -actors.mobs.npcs.consideredhamster.desc=While this looks like the developer that build YAPD, this is not him. Rather, it is his pet. -actors.mobs.npcs.consideredhamster.name=ConsideredHamster's Mimic -actors.mobs.npcs.consideredhamster.yell1=I'm so hungry... I only need $1, could you feed me please...? -actors.mobs.npcs.consideredhamster.yell2=Pineapples! -actors.mobs.npcs.dachhack.desc=This is a developer who build Sprouted Pixel Dungeon. He is still in work, right? -actors.mobs.npcs.dachhack.name=Dachhack -actors.mobs.npcs.dachhack.yell1=I'm Dachhack. Sorry about those bugs in Sprouted Pixel Dungeon that caused it to crash. -actors.mobs.npcs.dachhack.yell2=This halo...it is means Deistic Pixel Dungeon,a mod baseed by sprouted, I guess. -actors.mobs.npcs.dachhack.yell3=New sprouted is in the test, just waiting for that. -actors.mobs.npcs.evan.desc=This is a sign of Shattered Pixel Dungeon,the most successful mod of pixel dungeon. -actors.mobs.npcs.evan.name=Shattered Pixel Dungeon -actors.mobs.npcs.evan.yell1=I'm made by 00-Evan. Welcome here! -actors.mobs.npcs.evan.yell2=Evan is trying to fix something that's broken(me, perhaps).He is so obsessively that he don't know what should he say. -actors.mobs.npcs.evan.yell3=I will try my best to make shattered more funny, more reasonable, and more challeng. -actors.mobs.npcs.fruitcat.desc=He is a merchant. -actors.mobs.npcs.fruitcat.name=fruit cat -actors.mobs.npcs.fruitcat.yell1=After coconut leave, I buy this shop and sell bombs. For now this shop is belong to Union. -actors.mobs.npcs.fruitcat.yell2=Believe it or not, Coconut had a bunch of Ankhs just lying around here before he left. He didn't even take any with him, he just left them in a pile to collect dust! Anyways, you'll probably need them more than I do. -actors.mobs.npcs.g2159687.desc=This is a developer who build ESPD. -actors.mobs.npcs.g2159687.name=G2159687 -actors.mobs.npcs.g2159687.yell1=I'm G2159687, do you love my ESPD? -actors.mobs.npcs.g2159687.yell2=I fix some bug in Sprouted and make it easier.I also build other verison like EVPD,you know,easier. -actors.mobs.npcs.ghost.crab_1=Hello %s... Once I was like you - strong and confident... But I was slain by an ancient creature... I can't leave this place... Not until I have my revenge... Slay the _great crab,_ that has taken my life...\n\nIt is unnaturally old... With a massive single claw and a thick shell... _Beware its claw, you must surprise the crab or it will block with it..._ -actors.mobs.npcs.ghost.crab_2=Please... Help me... Slay the Crustacean...\n\n_It will always block... When it sees you coming..._ -actors.mobs.npcs.ghost.def_verb=evaded -actors.mobs.npcs.ghost.desc=The ghost is barely visible. It looks like a shapeless spot of faint light with a sorrowful face. -actors.mobs.npcs.ghost.find_me=Thank you... come find me... -actors.mobs.npcs.ghost.gnoll_1=Hello %s... Once I was like you - strong and confident... But I was slain by a devious foe... I can't leave this place... Not until I have my revenge... Slay the _gnoll trickster,_ that has taken my life...\n\nIt is not like the other gnolls... It hides and uses thrown weapons... _Beware its poisonous and incendiary darts, don't attack from a distance..._ -actors.mobs.npcs.ghost.gnoll_2=Please... Help me... Slay the trickster...\n\n_Don't let it hit you... Get near to it..._ -actors.mobs.npcs.ghost.name=sad ghost -actors.mobs.npcs.ghost.rat_1=Hello %s... Once I was like you - strong and confident... But I was slain by a foul beast... I can't leave this place... Not until I have my revenge... Slay the _fetid rat,_ that has taken my life...\n\nIt stalks this floor... Spreading filth everywhere... _Beware its cloud of stink and corrosive bite, the acid dissolves in water..._ -actors.mobs.npcs.ghost.rat_2=Please... Help me... Slay the abomination...\n\n_Fight it near water... Avoid the stench..._ -actors.mobs.npcs.hatesokoban.desc=He is one tester from another world. Maybe is from pony town. -actors.mobs.npcs.hatesokoban.name=hate sokoban -actors.mobs.npcs.hatesokoban.yell1=You know, this is just a game. I came here to test it, isn't that fun? -actors.mobs.npcs.hatesokoban.yell2=If you suck in any sokoban level, try to use wand of flock. If you want summon fairy, use wand of flock shout that soul. -actors.mobs.npcs.hbb.desc=He is Chairman of the Union -actors.mobs.npcs.hbb.name=Rawberry - Chairman of the Union -actors.mobs.npcs.hbb.yell1="The world's still the same, there's just...less in it." -actors.mobs.npcs.hbb.yell2="Friendship is magic!" -actors.mobs.npcs.hbb.yell3="I am a magical princess from another dimension." -actors.mobs.npcs.hexa.desc=This is developer of UNIST pixel dungeon... I never hear about that mod... -actors.mobs.npcs.hexa.name=UNIST HeXA -actors.mobs.npcs.hexa.yell1=I'm HeXA,the developer of UNIST Pixel Dungeon.I think you never hear about that before. -actors.mobs.npcs.hexa.yell2=It only can be download in South Korea,but you can find the code in github. - -actors.mobs.npcs.imp.cya=See you, %s! -actors.mobs.npcs.imp.def_verb=evaded -actors.mobs.npcs.imp.desc=Imps are lesser demons. They are notable for neither their strength nor their magic talent, but they are quite smart and sociable. Many imps prefer to live among non-demons. -actors.mobs.npcs.imp.golems_1=Are you an adventurer? I love adventurers! You can always rely on them if something needs to be killed. Am I right? For a bounty of course ;)\nIn my case this is _golems_ who need to be killed. You see, I'm going to start a little business here, but these stupid golems are bad for business! It's very hard to negotiate with wandering lumps of granite, damn them! So please, kill... let's say _6 of them_ and a reward is yours. -actors.mobs.npcs.imp.golems_2=How is your golem safari going? Have you killed _6 of them_ yet? -actors.mobs.npcs.imp.hey=Psst, %s! - -actors.mobs.npcs.imp.monks_1=Are you an adventurer? I love adventurers! You can always rely on them if something needs to be killed. Am I right? For a bounty of course ;)\nIn my case this is _monks_ who need to be killed. You see, I'm going to start a little business here, but these lunatics don't buy anything themselves and will scare away other customers. So please, kill... let's say _8 of them_ and a reward is yours. -actors.mobs.npcs.imp.monks_2=Oh, you are still alive! I knew that your kung-fu is stronger ;) Just don't forget to grab these monks' tokens, specifically _8 of them_. -actors.mobs.npcs.imp.name=ambitious imp -actors.mobs.npcs.impshopkeeper.desc=Imps are lesser demons. They are notable for neither their strength nor their magic talent. But they are quite smart and sociable, and many of imps prefer to live and do business among non-demons. -actors.mobs.npcs.impshopkeeper.greeting2=So... You didn't find anything useful there... Well, look at those three trial, I can sell them to you with low price. -actors.mobs.npcs.impshopkeeper.greeting=Greeting %s! Choose one you want and I will sell it to you. Except those three trials, I spend lots of time to find them. -actors.mobs.npcs.impshopkeeper.name=ambitious imp -actors.mobs.npcs.jinkeloid.desc=It is union president, some kind of ice element. -actors.mobs.npcs.jinkeloid.name=jinkeloid - union president -actors.mobs.npcs.jinkeloid.yell1=Now the union is just a tourist spots. Welcome here. -actors.mobs.npcs.jinkeloid.yell2=In this place, freezing by ice will taken more damage. -actors.mobs.npcs.juh9870.desc=Developer of the Moonshine Pixel Dungeon. -actors.mobs.npcs.juh9870.name=Juh9870 -actors.mobs.npcs.juh9870.yell1=Dreams are forbidden, said my grandpa, also he brewed good moonshine -actors.mobs.npcs.juh9870.yell2=So... Well, I hope I can find more things in here. -actors.mobs.npcs.laji.desc=He is a priest, also he is only repairman in this town. -actors.mobs.npcs.laji.name=Maintainer S.O.F.S -actors.mobs.npcs.laji.yell1=This guest, may I delay you for a moment to talk about our heavenly father, Kesulu? -actors.mobs.npcs.laji.yell2=Many things that the dreamer and the day know are often forgotten by the dreamer at night. -actors.mobs.npcs.laji.yell3=Well, there lots of things I need fix. I am tried about this... -actors.mobs.npcs.lery.desc=It is another element of this union. He is good at training pets. -actors.mobs.npcs.lery.name=Pet dealer Lery -actors.mobs.npcs.lery.yell1=Are you cool? -actors.mobs.npcs.lery.yell2=I sell eggs here... -actors.mobs.npcs.locastan.desc=This is a developer who build Goblins Pixel Dungeon.Goblins Pixel Dungeon is base by Unleashed Pixel Dungeon. -actors.mobs.npcs.locastan.name=Locastan -actors.mobs.npcs.locastan.yell1=This is a locked door,may be I can open it. -actors.mobs.npcs.locastan.yell2=It's not a piece of crap, it's a sophisticated adventuring tool. -actors.mobs.npcs.locastan.yell3=Huh, this lamp? Well you see, this is actually Unleashed Pixel Dungeon. If you don't mind, I need it in my adventure. -actors.mobs.npcs.lyn.desc=He is a demon hunter, as you see. -actors.mobs.npcs.lyn.name=Curse ankh -actors.mobs.npcs.lyn.yell1=Burn! Purify! For Sargeras'great expedition! -actors.mobs.npcs.lyn.yell2=Need some drink? Or some pet food? Just a kidding. -actors.mobs.npcs.lynn.desc=An excellent Rune scholar. -actors.mobs.npcs.lynn.name=Rune Scholar Lynn -actors.mobs.npcs.lynn.yell1=I have fixed that altar. You can use it now. -actors.mobs.npcs.lynn.yell2=What should I do next? - -actors.mobs.npcs.memoryofsand.desc=A tester from other world. He is a cooker now. -actors.mobs.npcs.memoryofsand.name=Cooker M.O.S -actors.mobs.npcs.memoryofsand.yell1=Need some food? Choose what you want. -actors.mobs.npcs.memoryofsand.yell2=Before I play this game, I was an adventurer. -actors.mobs.npcs.mirrorimage.desc=This illusion bears a close resemblance to you, but it's paler and twitches a little. -actors.mobs.npcs.mirrorimage.name=mirror image -actors.mobs.npcs.nyrds.desc=This is a developer who build Pixel Dungeon Remix. He is a ittle red mascot. -actors.mobs.npcs.nyrds.name=Nyrdie -actors.mobs.npcs.nyrds.yell1=Hey folks! Nyrdie here. -actors.mobs.npcs.nyrds.yell2=Advice of the day: don't forget to brush your teeth! -actors.mobs.npcs.oldnewstwist.desc=A gnoll traveler, he is almost naked. -actors.mobs.npcs.oldnewstwist.desc_gnollmission=Now that he has the warmth of good clothing, he can comfortably begin some trading of his own. -actors.mobs.npcs.oldnewstwist.name=Oldnewstwist -actors.mobs.npcs.oldnewstwist.yell1=Ah! Please don't hurt me! I'm not like the other Gnoll you will find throughout the dungeon! -actors.mobs.npcs.oldnewstwist.yell2=Unlike the feral Gnoll you've encountered before, I'm from a clan of civilized, nomadic Gnoll. We travel from settlement to settlement in an attempt to spread our ways of peace and our tribal knowledge. I ended up here after being dragged away, from my group, by those rabid thugs that I am ashamed to call brethren. -actors.mobs.npcs.oldnewstwist.yell3=Brr.. It is cold. Why did those goons have to rip up my clothes..? -actors.mobs.npcs.oldnewstwist.yell4=I heard you defeated the evil Gnoll King! That's great! He won't be terrorizing us anymore! Hey, did he have any clothes? -actors.mobs.npcs.oldnewstwist.yell5=These fine fibers will keep me very warm! Thank you for the clothes, and thank you again for defeating the evil Gnoll King. -actors.mobs.npcs.oldnewstwist.yell6=By the way, I'm selling out-of-season holiday weapons now. -actors.mobs.npcs.otilukenpc.desc=Otiluke, a great wizard from Dolye. You can ask him for reword. -actors.mobs.npcs.otilukenpc.name=Otiluke -actors.mobs.npcs.otilukenpc.yell1=Finally, after so many time, I saw my hometown again. -actors.mobs.npcs.otilukenpc.yell2=I will help you enter Tower if you want. -actors.mobs.npcs.otilukenpc.yell3=Oh, right, I know what you want. Here, take this counterfeit Amulet. I had to give the real one to the Tower, but don't worry. This works the same way, and I have more if you need them. -actors.mobs.npcs.raintrainer.desc=A trainer who are ready to battle. -actors.mobs.npcs.raintrainer.name=trainer rain -actors.mobs.npcs.raintrainer.yell1=Want to training youeself? -actors.mobs.npcs.raintrainer.yell2=Check your DPS on that scarecrow. -actors.mobs.npcs.ratking.desc=This rat is a little bigger than a regular marsupial rat and it's wearing a tiny crown on its head. -actors.mobs.npcs.ratking.desc_festive=This rat is a little bigger than a regular marsupial rat. It's wearing a tiny festive hat instead of its usual crown. Happy Holidays! -actors.mobs.npcs.ratking.havefun=You did it, Wish you a pleasant journey. -actors.mobs.npcs.ratking.name=rat king -actors.mobs.npcs.ratking.not_sleeping=I'm not sleeping! -actors.mobs.npcs.ratking.not_takeing=Away from my treasure!!! -actors.mobs.npcs.ratking.thanks=Well, as a reward for your loyalty, I allow you to kill a thief, he stole one of my Fork, and I think he is hidding close to the exit of the prison. If you did that, I will give you that fork as a reward. -actors.mobs.npcs.ratking.what_is_it=What is it? I have no time for this nonsense. My kingdom won't rule itself! -actors.mobs.npcs.ratking.why=They're all worthless things. I don't care about that. -actors.mobs.npcs.ratkingden.desc=This rat is a little bigger than a regular marsupial rat and it's wearing a tiny crown on its head. -actors.mobs.npcs.ratkingden.desc_festive=This rat is a little bigger than a regular marsupial rat. It's wearing a tiny festive hat instead of its usual crown. Happy Holidays! -actors.mobs.npcs.ratkingden.name=rat king -actors.mobs.npcs.ratkingden.not_sleeping=Oh, you are here. -actors.mobs.npcs.ratkingden.what_is_it=You did great, take those treasure. - -actors.mobs.npcs.rennpc.desc=He is one developer in China. He loves East Project so he mix that into his shattered mod. He is hard-working. -actors.mobs.npcs.rennpc.name=REN -actors.mobs.npcs.rennpc.yell1=What does Usami-Renko mean? -actors.mobs.npcs.rennpc.yell2=If I have time I will tell you a story about the best place in my world. -actors.mobs.npcs.rennpc.yell4=Well, I like teas, no matter what tea it was. -actors.mobs.npcs.rennpc.yell5=You find all secret in each challenge?! Take this, a weapon from my touhou project pixel dungeon. Well it only have Chinese language. -actors.mobs.npcs.rennpc.yell3=Nice to see you, I'm REN. You find my message on that challenge picture, right? Take this Challenge book, it can help you. - -actors.mobs.npcs.rustyblade.desc=He is battle master in this union, and he has his own legend story. -actors.mobs.npcs.rustyblade.name=rustyblade - battle master -actors.mobs.npcs.rustyblade.yell1=I am a master. -actors.mobs.npcs.rustyblade.yell2=Def up, def down, atk up, atk down, those things are basic buffs. -actors.mobs.npcs.sadsaltan.desc=The draftsman of the moonshine dungeon. The name of the name "Moonshine" is hung on his clothes. -actors.mobs.npcs.sadsaltan.name=SadSaltan -actors.mobs.npcs.sadsaltan.yell1=Oh. New wanderer in this dungeon? People are not often shown here. Here all become either rich or dead. When a man has got money in his pocket, he begins to appreciate peace. -actors.mobs.npcs.sadsaltan.yell2=By the way, if you'll pass by the city - visit my saloon! It's easy to find saloon, just say "Moonshine Dungeon" and the local will show you the way. -actors.mobs.npcs.sadsaltan.yell3=Take my business card, maybe I can ask you to have a drink in my bar. -actors.mobs.npcs.seekingbombnpc.desc=Explode while attacking. -actors.mobs.npcs.seekingbombnpc.name=seeking bomb -actors.mobs.npcs.seekingclusterbombnpc.desc=Explode while attacking. -actors.mobs.npcs.seekingclusterbombnpc.name=seeking cluster bomb -actors.mobs.npcs.sfb.desc=He is a fire mage. -actors.mobs.npcs.sfb.hello=Me! -actors.mobs.npcs.sfb.name=Shattered Flame Blast - union fire mage -actors.mobs.npcs.sfb.yell1=I want burning something! -actors.mobs.npcs.sfb.yell2=If a target be burning, it will move fast. -actors.mobs.npcs.sheep.baa!=Baa! -actors.mobs.npcs.sheep.baa...=Baa... -actors.mobs.npcs.sheep.baa.=Baa. -actors.mobs.npcs.sheep.baa?=Baa? -actors.mobs.npcs.sheep.desc=This is a magic sheep. What's so magical about it? You can't kill it. It will stand there until it magically fades away, all the while chewing cud with a blank stare. -actors.mobs.npcs.sheep.name=sheep -actors.mobs.npcs.sheepsokoban.desc=Push this box. This box can be moved like Rook. -actors.mobs.npcs.sheepsokoban.name=Rook Box -actors.mobs.npcs.sheepsokobanblack.desc=After you touch this box, it will destroy one trap. -actors.mobs.npcs.sheepsokobanblack.name=Explode Box -actors.mobs.npcs.sheepsokobancorner.desc=Push this box. This box can be moved like Queen. -actors.mobs.npcs.sheepsokobancorner.name=Queen Box -actors.mobs.npcs.sheepsokobanstop.baa!=baa! -actors.mobs.npcs.sheepsokobanstop.baa...=baa... -actors.mobs.npcs.sheepsokobanstop.baa.=baa. -actors.mobs.npcs.sheepsokobanstop.baa?=baa? -actors.mobs.npcs.sheepsokobanstop.desc=It can't move... -actors.mobs.npcs.sheepsokobanstop.name=Sheep Box -actors.mobs.npcs.sheepsokobanswitch.desc=You can exchange places with this box. -actors.mobs.npcs.sheepsokobanswitch.name=Swap Box -actors.mobs.npcs.shopkeeper.desc=This stout guy looks more appropriate for a trade district in some large city than for a dungeon. His prices explain why he prefers to do business here. -actors.mobs.npcs.shopkeeper.name=shopkeeper -actors.mobs.npcs.shopkeeper.sell=Select an item to sell -actors.mobs.npcs.sp931.desc=This is one of translators who helped translate Shattered into Chinese... -actors.mobs.npcs.sp931.name=931451545 -actors.mobs.npcs.sp931.yell1=I'm 931451545. -actors.mobs.npcs.sp931.yell2=I was king of that union. -actors.mobs.npcs.stormandrain.desc=A tester from other world. He is a demon eye. -actors.mobs.npcs.stormandrain.name=Treasure hunter S.M.R -actors.mobs.npcs.stormandrain.yell1=Hi, need some treasure? -actors.mobs.npcs.stormandrain.yell2=I am not human. But I am a treasure hunter. -actors.mobs.npcs.tempest102.desc=He is a translater and a musician. -actors.mobs.npcs.tempest102.name=tempest102 -actors.mobs.npcs.tempest102.yell1=I only had a tent at past, but now I have my own shop. -actors.mobs.npcs.tempest102.yell2=Welcome to my instrument studio. Do you want to buy anything? -actors.mobs.npcs.tinkerer1.desc=He seems to be waiting for something. -actors.mobs.npcs.tinkerer1.name=Dew developer -actors.mobs.npcs.tinkerer1.tell1=Find anything interest? -actors.mobs.npcs.tinkerer1.tell2=It is a great place. -actors.mobs.npcs.tinkerer2.desc=A scholar lived in Dolyahaven. He know lots of knowledge of magic stone. -actors.mobs.npcs.tinkerer2.name=Rune scholar Lynn -actors.mobs.npcs.tinkerer2.tell1=I think there must be a connection between different kinds of magic... Maybe something can help me. -actors.mobs.npcs.tinkerer3.desc=It looks like he is still waiting for something. -actors.mobs.npcs.tinkerer3.name=Dew developer -actors.mobs.npcs.tinkerer3.tell1=Find anything interest? -actors.mobs.npcs.tinkerer3.tell2=It is a great place. -actors.mobs.npcs.tinkerer4.desc=He is the mayor in this town. He wrote a book about the chancel. -actors.mobs.npcs.tinkerer4.name=The mayor Noodlemire -actors.mobs.npcs.tinkerer4.tell1=Welcome to Dolya town, I am the mayor. -actors.mobs.npcs.tinkerer4.tell2=Here was a great town, but because of the environmental pollution, lots of people leave. -actors.mobs.npcs.tinkerer5.desc=A geological surveyor named Xavier251998. -actors.mobs.npcs.tinkerer5.name=Geological surveyor Xavier251998 -actors.mobs.npcs.tinkerer5.tell1=I was doing a project, relationship between crustal movement and man-made mining. Unfortunately, there was a dragon in the mine site, and then I couldn't get into the mine cave. -actors.mobs.npcs.tinkerer5.tell2=It's said that the town had had a glorious time, a lot of magic ore exports, and bring considerable income to the town. But all this was over before Otiluke was ready to go -actors.mobs.npcs.tinkerer5.tell3=Take this meat, my friend. -actors.mobs.npcs.typedscroll.desc=This is a developer who build LCPD. He looks like a error. -actors.mobs.npcs.typedscroll.name=TypedScroll -actors.mobs.npcs.typedscroll.yell1=I'm TypedScroll, I don't know what should I say now. -actors.mobs.npcs.typedscroll.yell2=Give more confidence to my LCPD. -actors.mobs.npcs.udawos.desc=This is a developer who build Pioneer. Seems like he is doing his job now. -actors.mobs.npcs.udawos.name=Udawos -actors.mobs.npcs.udawos.yell1=I'm Udawos, have you ever played my Pioneer before? My new game is chernog : FOMTMA. You can download it in google play store. -actors.mobs.npcs.udawos.yell2=In fact, Pioneer is not a Roguelike game. Rather, it is an RPG. -actors.mobs.npcs.wandmaker.berry_1=Oh, what a pleasant surprise to meet a decent person in such place! I came here for a rare ingredient - a _Rotberry seed_. Being a magic user, I'm quite able to defend myself against local monsters, but I'm getting lost in no time, it's very embarrassing. Probably you could help me? I would be happy to pay for your service with one of my best wands. -actors.mobs.npcs.wandmaker.berry_2=Any luck with a Rotberry seed, %s? No? Don't worry, I'm not in a hurry. -actors.mobs.npcs.wandmaker.desc=This old but hale gentleman wears a slightly confused expression. He is protected by a magic shield. -actors.mobs.npcs.wandmaker.dust_1=Oh, what a pleasant surprise to meet a decent person in such place! I came here for a rare ingredient - _corpse dust_. It can be gathered from skeletal remains and there is an ample number of them in the dungeon. Being a magic user, I'm quite able to defend myself against local monsters, but I'm getting lost in no time, it's very embarrassing. Probably you could help me? I would be happy to pay for your service with one of my best wands. -actors.mobs.npcs.wandmaker.dust_2=Any luck with corpse dust, %s? Bone piles are the most obvious places to look. -actors.mobs.npcs.wandmaker.name=old wandmaker -actors.mobs.npcs.watabou.desc=This is a developer who build the original Pixel Dungeon from the ground up...\nAmazing... -actors.mobs.npcs.watabou.name=Watabou -actors.mobs.npcs.watabou.yell1=I'm Watabou, still here in spirit even if I haven't updated Pixel Dungeon in about three years. -actors.mobs.npcs.watabou.yell2=Pixel Dungeon isn't my only game. You should try the other ones I made, like Patient Rogue. - -actors.mobs.npcs.kostis12345.name=Secretary kostis12345 -actors.mobs.npcs.kostis12345.desc=She is secretary in this town, she works very hard. -actors.mobs.npcs.kostis12345.yell1=Did you see our mayor? We still have lots of things to do. -actors.mobs.npcs.kostis12345.yell2=If you have questions about the game, go to pixeldungeon.wikia.com and search for Specia Surprise Pixel Dungeon. Come on Teletubby,teleport us to Mars. - -actors.mobs.npcs.hmdzl001.name=hmdzl001 -actors.mobs.npcs.hmdzl001.desc=He is a player, not a developer. He will try to fix some error in this world. -actors.mobs.npcs.hmdzl001.yell1=Welcome. This town is used on celebrate Chinese Spring Festival. -actors.mobs.npcs.hmdzl001.yell2=Do you see my cat, coconut? It is cute, and it is made by metal. -actors.mobs.npcs.hmdzl001.yell3=I know we have different cultures and histories, but here is just one part of this game. Have fun in here. - -actors.mobs.npcs.coconut2.name=Coconut -actors.mobs.npcs.coconut2.desc=A metal cat... maybe... -actors.mobs.npcs.coconut2.yell1=It spend lots of time to build this place. -actors.mobs.npcs.coconut2.yell2=I still have a shop in here. -actors.mobs.npcs.coconut2.yell3=Maybe I will summon some new hero on other world, or not, I don't know. - -actors.mobs.npcs.newplayer.name=You -actors.mobs.npcs.newplayer.desc=??? -actors.mobs.npcs.newplayer.yell1=It is you. -actors.mobs.npcs.newplayer.yell2=It is just you. - -actors.mobs.npcs.thanklist.name=Thank list -actors.mobs.npcs.thanklist.yell1=And everyone who play this game. -actors.mobs.npcs.thanklist.desc=A normal thank list. - -actors.mobs.npcs.arealman.name=ARealMan -actors.mobs.npcs.arealman.desc=He loves alchemy and collect Independent Game. He is still in Union. - -actors.mobs.npcs.whiteghost.name=White ghost -actors.mobs.npcs.whiteghost.yell1=Still... you remember me... -actors.mobs.npcs.whiteghost.desc=She was one of mage in Union, but she disappear in one tower's test. - -actors.mobs.npcs.uncles.name=Uncle S -actors.mobs.npcs.uncles.yell1=Want any training? -actors.mobs.npcs.uncles.desc=He is one strong man in Union. - -actors.mobs.npcs.apostle.name=apostle -actors.mobs.npcs.apostle.yell1=ONLY MAGIC CAN DEFEAT MAGIC. -actors.mobs.npcs.apostle.desc=A sparkling cube, mechanical and magnetic in sound, may be it is one tester from other world. - -actors.mobs.npcs.shower.name=shower -actors.mobs.npcs.shower.yell1=Nice to see you, I am shower. You also can call me mumu. -actors.mobs.npcs.shower.yell2=See the pond on the East side? -actors.mobs.npcs.shower.yell3=Here is a beautiful town, with lots of people. I think I'll spend some time in here. -actors.mobs.npcs.shower.desc=One tester with knuckle. - -actors.mobs.npcs.saidbysun.name=Said by sun -actors.mobs.npcs.saidbysun.yell1=Next step... wait, I did a mistake... -actors.mobs.npcs.saidbysun.yell2=They asked me to help with the test, and I came here.... Oh, I didn't say anything... -actors.mobs.npcs.saidbysun.desc=A cat, also a alchemy tester. - -actors.mobs.npcs.honeypoooot.name=honey poooot -actors.mobs.npcs.honeypoooot.yell1=See that black cat? He is my leader. -actors.mobs.npcs.honeypoooot.yell2=This is honey cap, not a robe. -actors.mobs.npcs.honeypoooot.desc=A sophisticated adventurer, assistant to the trade union chairman, is responsible for helping with various trade union tasks, including the testing of various new items. - -actors.mobs.npcs.millilitre.name=millilitre isaac -actors.mobs.npcs.millilitre.yell1=Leave me alone... -actors.mobs.npcs.millilitre.yell2=I want go home... -actors.mobs.npcs.millilitre.desc=He is one tester, he is frightened. - -actors.mobs.npcs.goblinplayer.name=Shield Goblin -actors.mobs.npcs.goblinplayer.yell1=It's a good world, but it's still too simple for Goblins. -actors.mobs.npcs.goblinplayer.yell2=See this shield? It is full with chaos energy. -actors.mobs.npcs.goblinplayer.desc=A tester goblin, He hold a shield, an artifact from Unleashed Pixel Dungeon. - -actors.mobs.npcs.dreamplayer.name=Dream player -actors.mobs.npcs.dreamplayer.yell1=funny? -actors.mobs.npcs.dreamplayer.yell2=funny! -actors.mobs.npcs.dreamplayer.desc=A tester, a element, and colourful. - -actors.mobs.npcs.nutpainter.name=Nut painter -actors.mobs.npcs.nutpainter.yell1=Nut is best! -actors.mobs.npcs.nutpainter.yell2=Nut forever! -actors.mobs.npcs.nutpainter.desc=A tester, he love nuts. - -actors.mobs.npcs.xixizero.name=XiXi0.12 -actors.mobs.npcs.xixizero.yell1=Mew, I'm developer of darkest pixel dungeon, you can call me Egoal. -actors.mobs.npcs.xixizero.desc=A cat who build darkest pixel dungeon. - -actors.mobs.npcs.afly.name=Alfred, Abbey and Abeys -actors.mobs.npcs.afly.yell1=Hello, I am Alfred, they are Abbey and Abeys. -actors.mobs.npcs.afly.desc=Developer of Fushigi-no Pixel Dungeon - -actors.mobs.npcs.omicronrg9.name=Ømicrónrg9 -actors.mobs.npcs.omicronrg9.yell1=Hey! Out of my way, I have no time for this nonsense. My mod tree won't be made by itself! -actors.mobs.npcs.omicronrg9.yell2=Be cautious with the piranhas. They are dangerous when unarmored. -actors.mobs.npcs.omicronrg9.yell3=There are 24 Pixel Dungeon mods which start with "P". This is not a joking! -actors.mobs.npcs.omicronrg9.yell4=My left eye got burnt because excessive time at computer, searching for new mods. It was a needed sacrifice. -actors.mobs.npcs.omicronrg9.yell5=Hope is still an illusion! -actors.mobs.npcs.omicronrg9.yell6=This world takes stuff from around 9 different worlds! Isn't that amazing? -actors.mobs.npcs.omicronrg9.desc=This long-haired human seems to be a crusader of the old times, but It is actually a Scholar who restlessly researches for different worlds in this big universe. He's here because Honey brought him, and he is collecting data about this world and sharing information about other worlds. He has not slept well so He may be aggresive. - -actors.mobs.npcs.ice13.name=Mercenary -- Thirteen the Frozen Mist -actors.mobs.npcs.ice13.yell1=Greeting,my name is Thirteen. I'm just a normal mercenary.By the way, It's not the first time we meet, right? -actors.mobs.npcs.ice13.yell2=My colours are strange? Bro, they are just RGB. -actors.mobs.npcs.ice13.yell3=Remember, the past is never dead, it's not even past. -actors.mobs.npcs.ice13.yell4=Se Neh Gep Dyus! Uo Sh Yuh! Nat Sh Yuh! -actors.mobs.npcs.ice13.yell5=It's not the elements, but their controllers make them evil. -actors.mobs.npcs.ice13.yell6=There are still some glitches in this world. At least it won't create a black beast. -actors.mobs.npcs.ice13.desc=A warlock who seems a little mad. He came here because of a broken map of Dolya town and the lead of Honey Poooot. In his words, he stays here to create more chaos. - -actors.mobs.npcs.Sharku2011.desc=He is one developer of Girls-Frontline Pixel Dungeon. -actors.mobs.npcs.Sharku2011.name=Sharku2011 -actors.mobs.npcs.Sharku2011.yell1=This treasure is mine! -actors.mobs.npcs.Sharku2011.yell2=no one can touch my treasure! - diff --git a/resources/com/hmdzl/spspd/change/messages/actors/actors_zh.properties b/resources/com/hmdzl/spspd/change/messages/actors/actors_zh.properties deleted file mode 100644 index 95e0143e..00000000 --- a/resources/com/hmdzl/spspd/change/messages/actors/actors_zh.properties +++ /dev/null @@ -1,1341 +0,0 @@ -###blobs -actors.blobs.confusiongas.desc=这里盘绕着一片眩晕彩雾,眩晕彩雾会使其中的生物失去辨别方向的能力,导致其无法正确的向目标方向移动,并丧失远程攻击能力。 -actors.blobs.corruptgas.desc=这里盘绕着一片恶魔血雾。恶魔血雾即使稍微被接触到就可以导致生物血流不止,甚至失去控制。 -actors.blobs.darkgas.desc=这里盘绕着一片黑色浓烟。黑色浓烟会侵入处于烟雾中生物的眼睛,造成短暂的失明。 -actors.blobs.electrishock.desc=大量的电火花在这片电场中流窜。 -actors.blobs.fire.desc=一团火焰正在这里肆虐。火焰可以用于简单烹饪食物,或者点燃站在火上的单位并对其造成伤害。 -actors.blobs.foliage.desc=光柱刺破了地下花园中的黑暗。 -actors.blobs.frostgas.desc=这里盘绕着一片极寒雪雾。 -actors.blobs.goowarn.desc=黑暗能量正在这里涌动! -actors.blobs.heallight.desc=生命的光芒在这里闪耀! 生命之光能给予其中的生物恢复生命。 -actors.blobs.memoryfire.desc=一团蓝色的火焰正在这里燃烧。 -actors.blobs.paralyticgas.desc=这里盘绕着一片麻痹黄雾。麻痹黄雾能够麻痹生物的神经系统,使进入其中的生物立刻失去知觉。 -actors.blobs.regrowth.desc=营养物质从这儿的地下流窜,给植物施肥,加速其成长,使其成熟,以便立即收获。 -actors.blobs.shockweb.desc=这里所有东西都被杂乱的电网覆盖着。 -actors.blobs.stenchgas.desc=这里盘绕着一片腐毒酸雾。腐毒酸雾会不断地在被酸雾触及的所有东西上凝结出墨绿色的粘稠液体。 -actors.blobs.targas.desc=这里盘绕着一片粘稠油雾。粘稠油雾会不断地在被油雾触及的地方凝结出棕黄色的焦油。 -actors.blobs.toxicgas.desc=这里盘绕着一片鲜绿毒雾。毒雾会伤害所有吸入它的生物。 -actors.blobs.venomgas.desc=这里盘绕着一片鲜彩毒雾。鲜彩毒雾具有强烈的腐蚀性,会不断地侵蚀处于毒雾中的生物。 -actors.blobs.waterofawareness.desc=知识的力量正在从这口井的水里涌出。\n饮下井中的水以揭示所有已装备物品的秘密。 -actors.blobs.waterofawareness.procced=在你小酌一口时,你感觉到知识涌入了你的头脑。现在你对你的物品有了更深入的了解。同时,你掌握了这一层的秘密。 -actors.blobs.waterofhealth.desc=生命的力量正在从这口井的水里涌出。\n饮下井中的水以治疗你的伤口并填满你的肚子。 -actors.blobs.waterofhealth.procced=就在你小酌一口时,你感到你的伤口完全愈合了。 -actors.blobs.wateroftransmutation.desc=变化的力量正在从这口井的水里涌出。\n扔进一个物品以将其转化为其他物品。 -actors.blobs.weather.weatherofdead.desc=这里怨念很重。小心有鬼! -actors.blobs.weather.weatherofquite.desc=这里很安静。安静使人更加专注。 -actors.blobs.weather.weatherofrain.desc=这里下着小雨,降低了生物的命中和闪避。 -actors.blobs.weather.weatherofsand.desc=这里飞扬着沙子。降低了周围生物的攻击。 -actors.blobs.weather.weatherofsnow.desc=这里降着小雪。降低了周围生物的移动速度。 -actors.blobs.weather.weatherofsun.desc=这里阳光普照。提升了周围生物受到的伤害。 -actors.blobs.web.desc=这里所有东西都被厚厚的蜘蛛网覆盖着。 - -###buffs -actors.buffs.amok.desc=狂乱导致状态下的生物进入一种极度愤怒和混乱的状态。 \n\n狂乱的生物会不分敌我地攻击任何靠近它们的人。\n\n剩余的狂乱效果时长:%s回合 -actors.buffs.amok.name=狂乱 -actors.buffs.arcane.desc=魔力流遍了你的全身,增加了10点法强,以提升你的法杖伤害。\n奥术灌注持续时间: %s。 -actors.buffs.arcane.name=奥术灌注 -actors.buffs.armorbreak.desc=持续%s回合,增加%s%%受到的伤害。 -actors.buffs.armorbreak.name=破甲 -actors.buffs.attackdown.desc=持续%s回合,减少%s%%攻击力。 -actors.buffs.attackdown.name=乏力 -actors.buffs.attackup.desc=持续%s回合,增加%s%%攻击力。 -actors.buffs.attackup.name=攻击提升 -actors.buffs.awareness.desc=宝物探查可以允许你看到这片地方的所有宝物以及它们周围的情况。 \n\n剩余的探查效果时长:%s回合 -actors.buffs.awareness.name=宝物探查 -actors.buffs.barkskin.desc=你的皮肤硬化了,摸起来如同树皮一样既粗糙且坚固。 \n\n硬化的皮肤增强了你的实际护甲,使你能更好地抵御物理攻击。这种额外的护甲数值会以每回合一半的速度降低,直到它彻底失去作用。\n\n增加的护甲值:%d -actors.buffs.barkskin.name=树肤 -actors.buffs.berryregeneration.desc=生命恢复将为你提供额外的生命恢复速率,并随着游戏的深入而提供更长的持续时间。 \n\n剩余的恢复效果:%d -actors.buffs.berryregeneration.name=生命恢复 -actors.buffs.bleeding.desc=伤口正在令人不安地涌出大量血液。 \n\n流血每回合都会造成伤害。每回合这个伤害数值都会随机减少,直到出血最终停止。 \n\n当前流血伤害:%d -actors.buffs.bleeding.heromsg=你正在流血! -actors.buffs.bleeding.name=流血 -actors.buffs.bless.desc=你的注意力大大集中了,有人说这是神赐的礼物。 \n\n祝福状态能够显著提高自身的能力,使其在战斗中非常有效。 \n\n剩余的祝福效果时长:%s回合 -actors.buffs.bless.name=祝福 -actors.buffs.blindness.desc=失明使周遭的一切陷入黑暗。 \n\n失明时,角色不能看到周身一格以外的环境、致使远程攻击变得毫无作用、同时也很容易丢失正在追踪的敌人的动向。此外,失明的英雄也无法读书或使用卷轴。 \n\n剩余的失明效果时长:%s回合 -actors.buffs.blindness.heromsg=你失明了! -actors.buffs.blindness.name=失明 - -actors.buffs.burning.burnsup=%s被烧毁了! -actors.buffs.burning.desc=没什么比被火焰吞没更痛苦了。 \n\n火焰会每回合都会造成伤害直到它被液体扑灭或者自行消散。火会在你进入水中时熄灭,打碎药瓶产生的水花也具有同样的效果。 \n\n此外,火焰还会点燃所有接触到的可燃地形(以及可燃地形上的可燃物)。 \n\n剩余的燃烧效果时长:%s回合 -actors.buffs.burning.heromsg=你着火了! -actors.buffs.burning.name=燃烧 -actors.buffs.charm.desc=魅惑是一种能让敌人们暂时彼此爱慕的控制类魔法。 \n\n受魅惑的角色无法直接攻击魅惑它的那个生物,不过仍然可以攻击其他目标。\n\n剩余的魅惑效果时长:%s回合 -actors.buffs.charm.heromsg=你被魅惑了! -actors.buffs.charm.name=魅惑 -actors.buffs.chill.desc=还没有完全冻住,不过已经非常寒冷。\n\n冻伤的目标所有行动都会更加缓慢,减速程度决定于剩余的冻伤效果时间。最严重的冻伤情况等同于迟缓效果。 \n\n剩余的冻伤效果时长:%s回合\n当前减少的速度:%s%% -actors.buffs.chill.freezes=%s 冻住了! -actors.buffs.chill.name=冻伤 -actors.buffs.cold.desc=寒冷使你移动减缓。 \n\n剩余的效果时长:%s回合 -actors.buffs.cold.name=寒冷 -actors.buffs.combo.bonusdmg=\n\n当前连击伤害加成:%f%% -actors.buffs.combo.combo=%d连击! -actors.buffs.combo.desc=通过积累能量,角斗士能造成额外的伤害。\n\n你的连击数会在没有失误的不间断攻击下增加。你的连击数越高,你的攻击速度越快。失败或间断的攻击会重置连击数。 -actors.buffs.combo.name=连击 -actors.buffs.combo.notenough=\n\n你的连击还没有达到能造成额外伤害的程度。 -actors.buffs.countdown.desc=你的生命岌岌可危,再过一小段时间你就会受到大量的伤害。 \n\n剩余时间:%d -actors.buffs.countdown.name=延迟爆破 -actors.buffs.cripple.desc=你很确定自己的腿不该折成那样。 \n\n残废会减半移动速度,移动一格会消耗二回合而不是正常情况下的一回合。 \n\n剩余的残废效果时长:%s回合 -actors.buffs.cripple.heromsg=你残废了! -actors.buffs.cripple.name=残废 -actors.buffs.deadraise.desc=你感觉你身边充满了强烈的怨念,仿佛有什么东西即将出现。 \n\n剩余的效果时长:%s回合 -actors.buffs.deadraise.name=怨念环绕 -actors.buffs.defenceup.desc=持续%s回合,增加%s%%防御力 -actors.buffs.defenceup.name=防御提升 -actors.buffs.dewcharge.desc=当你击杀任何目标时,在它周围生成任意数量的露珠。 \n\n剩余的露珠爆破效果时长:%s回合 -actors.buffs.dewcharge.name=露珠爆炸 -actors.buffs.disarm.desc=无形的麻绳锁住了你的双手,使你无法进行近战攻击,持续%s回合 -actors.buffs.disarm.name=缴械 -actors.buffs.drowsy.desc=一股魔法力量使目标很难保持清醒。 \n\n英雄可以通过受到伤害或保持完整生命值来维持清醒。\n\n几个回合之后,目标将会陷入魔法睡眠。 -actors.buffs.drowsy.name=催眠 -actors.buffs.dry.desc=干燥使你变得心烦意乱,无法专心于战斗,降低了你的攻击力。 \n\n剩余的效果时长:%s回合 -actors.buffs.dry.name=干燥 - -actors.buffs.exitfind.name=出口侦测 - -actors.buffs.earthimbue.desc=你被灌注了大地的力量! \n\n直到该效果结束前你所有的物理攻击都会时敌人被缠绕在原地无法动弹。\n\n剩余大地之力效果时长:%s回合 -actors.buffs.earthimbue.name=大地之力 - -actors.buffs.fireimbue.desc=你被灌注了火焰的力量!\n\n所有物理攻击都有机会使敌人燃烧。与此同时你对火焰完全免疫。\n\n剩余火焰之力效果时长:%s回合 -actors.buffs.fireimbue.name=火焰之力 - -actors.buffs.frostimbue.desc=你被灌注了寒冰的力量!\n\n所有物理攻击都有机会使敌人冻结。与此同时你对冰冻完全免疫。\n\n剩余寒冰之力效果时长:%s回合 -actors.buffs.frostimbue.name=寒冰之力 - -actors.buffs.toxicimbue.desc=你体内被灌注了毒性能量! \n\n在你移动时毒气会从你的身体中翻腾而出,伤害你的敌人。持续时间内免疫毒气和中毒效果。 \n\n剩余的毒性之力时长:%s回合 -actors.buffs.toxicimbue.name=毒性之力 - -actors.buffs.bloodimbue.desc=鲜血之力将为你提供大量的效果免疫并且强化你的攻击。\n\n剩余的灌注效果时长:%s回合 -actors.buffs.bloodimbue.name=鲜血之力 - -actors.buffs.frost.desc=不要认为被冻得很结实了,这种温和的冻结只是把目标包裹在冰里。 \n\n冻结效果类似于麻痹,使目标不能行动。与麻痹不同的是,冻结效果会在目标受到伤害时立即消失,因为冰会碎。\n\n剩余的冻结效果时长:%s回合 -actors.buffs.frost.freezes=%s 冻住了! -actors.buffs.frost.name=冰冻 -actors.buffs.fullmoonstrength.desc=你变得非常强大,获得2.5倍的伤害加成。 -actors.buffs.fullmoonstrength.heromsg=你变强了! -actors.buffs.fullmoonstrength.name=满月之力 -actors.buffs.fury.desc=你非常暴怒,很明显敌人并不喜欢这样的你。\n\n一股猛烈的怒火在你体内燃烧,增加你25%%的物理攻击伤害,并降低25%你受到的伤害。\n\n只要你的生命还低于上限的60%,该效果就会存在。 -actors.buffs.fury.heromsg=你陷入了暴怒之中! -actors.buffs.fury.name=狂暴 -actors.buffs.gasesimmunity.desc=一种奇特的力量正在过滤你周边的空气,它并不会对你造成任何伤害,但它阻挡了所有空气意外的事物,以至于你什么气味都闻不到了!\n\n当该效果存在时你对所有气体效果免疫。\n\n剩余气体免疫效果时长:%s回合 -actors.buffs.gasesimmunity.name=气体免疫 -actors.buffs.glassshield.desc=来自玻璃之神的祝福。当你受到大于10点的伤害时,将伤害改为10。剩余保护次数:%s次。 -actors.buffs.glassshield.name=玻璃保护 -actors.buffs.growseed.desc=通常来讲这种种子专门吸取你的生命,并用于治疗周围的单位。 \n\n剩余的寄生种子效果时长:%s回合 -actors.buffs.growseed.heromsg=奇怪的种子在你的身上生长。 -actors.buffs.growseed.name=寄生种子 -actors.buffs.haste.desc=你的行动速度大幅度提升,持续%s回合。 -actors.buffs.haste.name=极速 -actors.buffs.hot.desc=炎热使你得血脉流动加快,一点小伤口也能带来大量的伤害。 \n\n剩余的效果时长:%s回合 -actors.buffs.hot.name=炎热 -actors.buffs.hunger.cursedhorn=就在你吃东西的时候被诅咒的号角偷走了一部分食物的能量。 -actors.buffs.hunger.desc=\n\n饥饿会在你在地牢里花费时间的同时缓慢累计,直到你饿得难以忍受。在你极度饥饿时生命值会停止回复并且开始缓慢减少 。\n\n合理利用食物非常重要!如果你有足够的生命值来维持饥饿,你就该等到一会儿食物更多的时候再吃。正确的配给可以让食物更有效地发挥作用! -actors.buffs.hunger.desc_intro_hungry=你能感受到自己的肚子在不断寻求食物,这降低了你的攻击力,不过还不算那么严重。 -actors.buffs.hunger.desc_intro_overfed=饱腹使你充满了决心,并提升了你的攻击力。 -actors.buffs.hunger.desc_intro_starving=你的饥饿程度已经危及生命了,这进一步降低了你的攻击力。 -actors.buffs.hunger.hungry=饥饿 -actors.buffs.hunger.onhungry=你有点饿了。 -actors.buffs.hunger.onoverfed=你吃饱了 -actors.buffs.hunger.onstarving=你已经饥肠辘辘! -actors.buffs.hunger.overfed=饱腹 -actors.buffs.hunger.starving=极度饥饿 -actors.buffs.invisibility.desc=你和周围的地形完全融为一体,使你不可能被看到。 \n\n当你在隐形时敌人无法追踪或攻击你。大部分物理攻击和魔法(比如卷轴和法杖)会立即解除隐形效果。 \n\n剩余的隐形效果时长:%s回合 -actors.buffs.invisibility.name=隐形 -actors.buffs.levitation.desc=一股魔力把你从地面托起,让你觉得自己身轻如燕。 \n\n在漂浮时你会无视所有以地面为基础的效果。陷阱不会被触发、火焰不会被水扑灭、植物不会被踩踏、根系无法缠绕你、并且能够跨越深渊。当心,在效果结束的那一刻上述效果都会失效!\n\n剩余的漂浮效果时长:%s回合 -actors.buffs.levitation.name=漂浮 -actors.buffs.light.desc=即使是在最黑暗的地牢中,身边有一个稳定的光源也总是令人欣慰。 \n\n光照能驱散黑暗,使你能够无视周遭的黑暗环境并拥有一个合理的视野范围。 \n\n剩余的发光效果时长:%s回合 -actors.buffs.light.name=发光 -actors.buffs.highlight.desc=即使是在最黑暗的地牢中,身边有一个稳定的光源也总是令人欣慰。 \n\n光照能驱散黑暗,使你能够无视周遭的黑暗环境并拥有一个超大的视野范围。 \n\n剩余的发光效果时长:%s回合 -actors.buffs.highlight.name=高亮 -actors.buffs.locked.desc=一把无形的锁锁死了你的背包,是你无法使用消耗类道具,持续%s回合。 -actors.buffs.locked.name=锁闭 -actors.buffs.lokispoison.desc=毒素传遍全身,缓慢地损伤着各个脏器。 \n\n毒素每回合造成的伤害与其剩余的回合数成正比。 \n\n剩余的中毒效果时长:%s回合 -actors.buffs.lokispoison.heromsg=你中毒了! -actors.buffs.lokispoison.name=猛毒 -actors.buffs.magicalsleep.desc=目标已深深陷入了魔法睡眠,不会自然醒来。\n\n魔法睡眠与一般的睡眠基本一样,但只有受伤会致使目标醒来。\n\n对于英雄,魔法睡眠有一些恢复性的效果,使他们能够在睡眠中迅速愈合伤口。 -actors.buffs.magicalsleep.fallasleep=你深深地陷入了魔法睡眠。 -actors.buffs.magicalsleep.name=魔法睡眠 -actors.buffs.magicalsleep.toohealthy=你十分健康,因此抵抗住了强烈的嗜睡感。 -actors.buffs.magicalsleep.wakeup=你醒来后,感觉浑身清爽并且十分健康。 -actors.buffs.magicimmunity.desc=奥术护盾可以为目标提供一定抗性。\n\n剩余的护盾效果时长:%s回合 -actors.buffs.magicimmunity.name=奥术护盾 -actors.buffs.mindvision.desc=你可以在脑海中以某种方式看到这一层的所有生物。这种感觉非常奇异。\n\n只要灵视效果依然存在,这层的所有生物都会在你的视野当中。通过灵视看到的生物同样算作视野中的目标,可以被很多魔法效果影响。\n\n剩余的灵视效果时长:%s回合 -actors.buffs.mindvision.name=灵视 -actors.buffs.muscle.desc=你感觉你的肌肉更加结实了,获得2点力量,持续%s回合。 -actors.buffs.muscle.name=活动肌肉 -actors.buffs.ooze.desc=这种粘稠的酸性淤泥正在紧贴你的骨肉,并缓慢地将它们腐蚀融化。\n\n淤泥会一直造成稳定伤害直至被水冲洗。\n\n淤泥本身不会自然消失,必须在水中才能洗掉。 -actors.buffs.ooze.heromsg=污泥在腐蚀你的身体。洗掉它! -actors.buffs.ooze.name=腐酸 -actors.buffs.paralysis.desc=通常最坏的事就是什么事都做不出来。\n\n麻痹会停止目标的一切动作,使目标保持原状直到效果消失。受伤导致的疼痛也能帮助目标脱离麻痹。 \n\n剩余的麻痹效果时长:%s回合 -actors.buffs.paralysis.heromsg=你被麻痹了! -actors.buffs.paralysis.name=麻痹 -actors.buffs.poison.desc=毒素传遍全身,缓慢地损伤着各个脏器。 \n\n毒素每回合造成的伤害与其剩余的回合数成正比。 \n\n剩余的中毒效果时长:%s回合 -actors.buffs.poison.heromsg=你中毒了! -actors.buffs.poison.name=中毒 -actors.buffs.recharging.desc=魔力在你体内奔腾而过,提高你的魔杖和法杖的充能速率。 \n\n每回合这个效果都将给你的法杖/魔杖增加四分之一点充能,这个效果的充能不同于正常充能并且能与之叠加。\n\n剩余的充能效果时长:%s回合 -actors.buffs.recharging.name=充能 -actors.buffs.rhythm.desc=你沉浸在你的节奏当中,大幅度提升你的命中和闪避,持续%s回合。 -actors.buffs.rhythm.name=节奏 -actors.buffs.rhythm2.desc=回响使你更加沉浸在你的节奏当中,小幅度提升你的速度,攻击和防御。持续%s回合。 -actors.buffs.rhythm2.name=回响 -actors.buffs.roots.desc=根系(不论是自然或魔法产生)缠到了脚上,将它们牢牢拴在地面。 \n\n根系会让目标被困在当前区域,使其不能移动,但不会干扰其他行为。 \n\n剩余的缠绕效果持续时长:%s回合 -actors.buffs.roots.heromsg=你不能动了! -actors.buffs.roots.name=缠绕 -actors.buffs.shadows.desc=你和周围的阴影融为一体,使你隐形并减缓你的新陈代谢。\n\n当你在隐形时敌人无法追踪或攻击你。大部分物理攻击和魔法(比如卷轴和法杖)会立即解除隐形效果。此外,当你处于暗影融合状态下时,饥饿值增加的速率会降低。\n\n暗影融合状态会一直持续直到你离开阴影或与敌人直接接触。 -actors.buffs.shadows.name=暗影融合 -actors.buffs.shield.desc=超高的护盾 -actors.buffs.shield.name=满月护盾 -actors.buffs.shieldblock.desc=无法驱散的超强控制效果。\n\n剩余的效果时长:%s回合 -actors.buffs.shieldblock.name=护盾打击 -actors.buffs.shocked.desc=当处于该状态的单位进行攻击时,它就会受到少量伤害并被缴械。持续时间: %s 回合。 -actors.buffs.shocked.name=静电乱流 -actors.buffs.silent.desc=沉默使人安静,并且让他无法诵读卷轴或释放咒语。持续%s回合。 -actors.buffs.silent.name=沉默 -actors.buffs.slow.desc=减速魔法影响了目标的时间流速,在目标眼中所有的事物都移动得飞快。 \n\n迟缓下的角色执行所有行动花费的时间是其执行相同行动的两倍。\n\n剩余的迟缓效果持续时长:%s回合 -actors.buffs.slow.name=迟缓 -actors.buffs.snipersmark.desc=狙击手将注意力集中到了附近的一个目标上,获得对目标远程攻击时的攻速加成和破甲效果。\n\n狙击手将不会停止专注直到她切换目标、停止攻击或目标死亡。 -actors.buffs.snipersmark.name=狙击标记 -actors.buffs.soulmark.desc=术士已经击穿了目标的灵魂。他将会在对其造成物理伤害时回复生命并填补饥饿感。 \n\n剩余灵魂印记持续时长:%s回合 -actors.buffs.soulmark.name=灵魂标记 -actors.buffs.speed.desc=移动速度增加 -actors.buffs.speed.name=加速 -actors.buffs.strength.desc=你感觉奇妙的力量充斥着你的身体,使你下次攻击得到极大的增强。 -actors.buffs.strength.name=强力 -actors.buffs.tar.desc=粘稠的油脂覆盖了你的全身,降低了你的行动速度,并且使你身上的火焰无法熄灭。 -actors.buffs.tar.heromsg=你身上覆盖满了粘稠的油脂。 -actors.buffs.tar.name=迟缓焦油 - -actors.buffs.terror.desc=恐惧是使敌人陷入不可控制的恐慌的操纵性魔法。 \n\n恐惧中的角色会远离自己的敌人,试图和敌人隔开尽可能多的门或墙。然而疼痛的冲击足以打破这种影响。\n\n剩余的恐惧效果持续时长:%s -actors.buffs.terror.name=恐惧 - -actors.buffs.venom.desc=剧毒是一种非常可怕且危险的毒素。 \n\n不像一般中毒的危害性随着时间的推移降低,猛毒在目标身上滞留的时间越长伤害越高。\n\n剩余的剧毒效果时长:%s回合\n当前剧毒伤害:%d -actors.buffs.venom.name=剧毒 -actors.buffs.vertigo.desc=如果整个世界都在旋转的话,想走直线会变得十分困难。 \n\n眩晕效果持续时,目标的移动将会向一个随机区域进行,而不是目标原本想到达的地方。\n\n剩余的眩晕效果时长:%s回合 -actors.buffs.vertigo.name=眩晕 -actors.buffs.weakness.desc=你感觉自己的装备突然变得沉重起来。 \n\n你正在被虚弱魔法影响,并减少2点力量。\n\n剩余的虚弱效果时长:%s回合 -actors.buffs.weakness.heromsg=你感到力量正在被抽走! -actors.buffs.weakness.name=虚弱 -actors.buffs.wet.desc=潮湿使你的身体变得笨重,降低了你的命中和闪避能力。 \n\n剩余的效果时长:%s回合 -actors.buffs.wet.name=潮湿 - -actors.buffs.shieldarmor.name=护盾 -actors.buffs.shieldarmor.desc=一种能量护甲正在保护你。\n\n这种护甲能够吸收你受到的100%%伤害,直到其耗尽耐久而瓦解。\n\n护盾量剩余:%d点。 - -actors.buffs.feed.name=狂宴 -actors.buffs.feed.desc=号角的力量流入了你的身体,使你能在击杀后获得生命上限提升。\n\n剩余的效果时长:%s回合。 - -actors.buffs.bloodangry.name=血怒 -actors.buffs.bloodangry.desc=圣杯里的血液和你交融,降低了你当前的生命上限,但大幅度提升了你的速度和伤害。\n\n剩余的效果时长:%s回合。 - -actors.buffs.soulbless.name=魂佑 -actors.buffs.soulbless.desc=玫瑰上的幽灵在保护着你。当你受到致命伤害时,它会阻止这个伤害并大幅度提升你的基础属性。 - -actors.buffs.goldtouch.name=点金 -actors.buffs.goldtouch.desc=臂章里的金币把你的手臂覆盖,使你在攻击时能获得金币。\n\n剩余的效果时长:%s回合。 - -actors.buffs.needling.name=荆棘 -actors.buffs.needling.desc=披风上针刺将你保护起来,使你在攻击的同时扎伤敌人。\n\n剩余的效果时长:%s回合。 - -actors.buffs.forevershadow.name=永影 -actors.buffs.forevershadow.desc=斗篷将它与你结合,短时间内使你无法被任何人察觉,即使你做出惊动他人的动作。\n\n剩余的效果时长:%s回合。 - -actors.buffs.notice.name=敏锐 -actors.buffs.notice.desc=护符提高了你的直觉,使你能够立刻发现各类隐藏事物。\n\n剩余的效果时长:%s回合。 - -actors.buffs.wargroove.name=战律 -actors.buffs.wargroove.desc=战斗的旋律提升了你的注意力,使你下一次攻击时所造成的伤害增加。 - -actors.buffs.targetshoot.name=精准射击 -actors.buffs.targetshoot.desc=投掷等级+10。\n\n剩余的效果时长:%s回合。 - -actors.buffs.mecharmor.name=机甲驾驶 -actors.buffs.mecharmor.desc=你现在在机甲里面。\n\n机甲剩余血量:%s。 - -actors.buffs.spattack.name=奇袭 -actors.buffs.spattack.desc=对满血和残血单位造成额外的伤害。\n\n持续时间:%s。 - -actors.buffs.highattack.name=攀墙伏击 -actors.buffs.highattack.desc=通过攀爬墙壁来蓄力,获得少量闪避提升和下次伤害加成。攀爬时间越久,伤害加成越高。离开墙壁周围会失去这个效果。\n\n下次伤害加成倍率:%s。 - -actors.buffs.paryattack.name=祈祷 -actors.buffs.paryattack.desc=通过站在原地来蓄力,获得伤害减免和伤害加成。祈祷时间越久,伤害加成和伤害减免越高。移动会失去这个效果。\n\n伤害加成倍率:%s。 - - -actors.buffs.highvoice.name=被声援 -actors.buffs.highvoice.desc=你听到了来自外界粉丝的助威,这使你充满了决心。\n\n持续时间:%s。 -actors.buffs.highvoice.atkup=%s你是最棒的! -actors.buffs.highvoice.heal=%s我要给你生猴子! -actors.buffs.highvoice.speed=加油啊%s! -actors.buffs.highvoice.save=守护最好的%s! - -actors.buffs.mirrorshield.name=智慧反射 -actors.buffs.mirrorshield.desc=智慧护盾将你保护起来,使你可以完全反弹接下来所受到的伤害。\n\n持续时间:%s。 - -actors.buffs.boxstar.name=无敌星 -actors.buffs.boxstar.desc=你无敌了。\n\n持续时间:%s。 - -actors.buffs.breakout.name=爆发 -actors.buffs.breakout.desc=你决定全力攻击,造成和受到的伤害同时提升100%。\n\n持续时间:%s。 - -actors.buffs.aflybless.name=不思议智慧 -actors.buffs.aflybless.desc=不思议的智慧带给你启发,少量的提升了你的当前力量和幸运。\n\n持续时间:%s。 - -actors.buffs.taunt.name=可疑标记 -actors.buffs.taunt.desc=??? - -actors.buffs.damageup.name=反击 -actors.buffs.damageup.desc=你抵挡了所受到的伤害,并提升了下一次攻击所造成的伤害。\n\n伤害提升值:%s。 - -actors.buffs.newcombo.name=隆拳连击 -actors.buffs.newcombo.combo=%d连! -actors.buffs.newcombo.bad_target=你的目标必须是攻击距离以内的敌人。 -actors.buffs.newcombo.clobber_prompt=选择一个要击垮的目标\n使其退后并晕向 -actors.buffs.newcombo.clobber_desc=_击垮_技能目前可用。这一招能_击退一个敌人并使其晕向_,但攻击伤害会有所降低。暴打敌人能够让你在苦战中喘一口气。 -actors.buffs.newcombo.cleave_prompt=选择一个要劈斩的目标\n如果劈斩击杀了敌人,连击数将被保留 -actors.buffs.newcombo.cleave_desc=_劈斩_技能目前可用。这次攻击造成更高伤害,_若成功以劈斩杀敌,连击计数将会保留而不是被重置。_在面对大量敌人时可有效积累连击数。 -actors.buffs.newcombo.slam_prompt=选择一个要重击的目标\n根据你的护甲决定造成的伤害与添加的护盾 -actors.buffs.newcombo.slam_desc=_重击_技能目前可用。这次攻击造成更高伤害,并_根据你的护甲造成伤害并提供护盾_。该技能非常适合用来结束战斗,能让你将额外的持久力带到下一场战斗中。 -actors.buffs.newcombo.crush_prompt=选择一个要粉碎的目标\n造成巨额伤害 -actors.buffs.newcombo.crush_desc=_粉碎_技能目前可用。这种毁灭性的打击_能够造成稳定的巨额伤害。_在对抗强力敌人时拥有奇效! -actors.buffs.newcombo.desc=你在成功打击敌人时能够积累能量。每次打击都会提高一次连击数,但长时间不进行攻击或是多于一次攻击失败都会将连击数归零。\n\n积累连击数会激活特殊的处决技能:无法被躲避的强力攻击!在连击数到达2,4,6,8时会提供不同的处决攻击,使用处决攻击会重置你的连击数。 - -actors.buffs.corruption.name=腐化 -actors.buffs.corruption.desc=腐化已渗透到了生命的本质,将其意志扭曲到愿意对抗自己的盟友、同族乃至至亲。\n\n腐化的生物会攻击和激怒他们的盟友,并使其忽略它们共同的敌人。腐化效果同时也会伤害其本身,导致目标缓慢走向死亡。\n\n腐化是永久性的,它只会在死亡后终结。 - -actors.buffs.faithbuff.mechfaith.name=信仰-机械派系 -actors.buffs.faithbuff.mechfaith.desc=对机械的信仰降低了来自机械的伤害,并提升对自然生物的伤害。 - -actors.buffs.faithbuff.lifefaith.name=信仰-自然派系 -actors.buffs.faithbuff.lifefaith.desc=对自然的信仰降低了来自自然生物的伤害,并提升对机械的伤害。 - -actors.buffs.faithbuff.demonfaith.name=信仰-恶魔派系 -actors.buffs.faithbuff.demonfaith.desc=对恶魔的信仰降低了来自恶魔的伤害,并提升对神圣生物的伤害。 - -actors.buffs.faithbuff.humanfaith.name=信仰-神圣派系 -actors.buffs.faithbuff.humanfaith.desc=对神圣的信仰降低了来自神圣生物的伤害,并提升对恶魔的伤害。 - -actors.buffs.faithbuff.balancefaith.name=信仰-平衡派系 -actors.buffs.faithbuff.balancefaith.desc=对平衡的信仰降低了来自强大生物的伤害,并提升对其的伤害。 - -###hero -actors.char.def_verb=闪避 -actors.char.out_of_paralysis=疼痛使%s从麻痹中解脱出来。 - -actors.hero.hero.auto_potion=你的药水自助器为你灌了一瓶药水! -actors.hero.hero.auto_potion_no=你的药水自助器空了! -actors.hero.hero.dewvial=它和你在其他世界里看到的露珠瓶完全不一样。 -actors.hero.hero.leave=从没有人愿意这么轻易地离开像素地牢。 -actors.hero.hero.level_up=升级 -actors.hero.hero.locked_chest=箱子锁着而你没有对应的钥匙 -actors.hero.hero.locked_door=你没有对应的钥匙。 -actors.hero.hero.name=你 -actors.hero.hero.new_level=恭喜升到%d级!你现在变得更加健康且专注。命中敌人和躲避敌人攻击都变得更加简单。 -actors.hero.hero.noticed_smth=你注意到了些什么。 -actors.hero.hero.pain_resist=疼痛是你从睡梦中惊醒。 -actors.hero.hero.revive=复活十字架爆发出生命的能量 -actors.hero.hero.search=搜索 -actors.hero.hero.search_distracted=你没办法集中精力,搜索花了好一阵时间。 -actors.hero.hero.something_else=这里还有其他东西。 -actors.hero.hero.wait=... -actors.hero.hero.you_now_have=你得到了%s。 - -actors.hero.heroclass.huntress=女猎手 -actors.hero.heroclass.huntress_desc_item=女猎手持有_指虎_和_EMP套索_。\n\n_回旋镖_是猎手的特殊道具 -actors.hero.heroclass.huntress_desc_loadout=女猎手使用投掷武器命中目标后会立刻对其造成一次攻击伤害。\n\n女猎手可以察觉到附近躲在障碍物后的敌人。 -actors.hero.heroclass.huntress_desc_misc=_灵视药水_和_驱散卷轴_在游戏开始就已鉴定。 - -actors.hero.heroclass.mage=法师 -actors.hero.heroclass.mage_desc_item=法师持有_魔法书_,_魔弹法杖_和_解离法杖_。\n\n_奇迹烧瓶_是法师的特殊道具 -actors.hero.heroclass.mage_desc_loadout=法师拥有+3法术强度,并且释放法术速度更快。\n\n法师能更有效的利用露水,并在进食后会获得一个回合的充能效果。 -actors.hero.heroclass.mage_desc_misc=_鉴定卷轴_和_液火药水_在游戏开始就已鉴定。 - -actors.hero.heroclass.performer=演员 -actors.hero.heroclass.performer_desc_item=演员持有_三角铁_,_催眠卷轴_和_炸弹_。\n\n_铁铲_是演员的特殊道具 -actors.hero.heroclass.performer_desc_loadout=演员在击杀或升级后将进入节奏模式,大幅度提升自身的属性。\n\n演员在升级后将获得玻璃祝福,大幅度减少自身受到的伤害。 -actors.hero.heroclass.performer_desc_misc=_催眠卷轴_和_净化药水_在游戏开始就已鉴定。 - -actors.hero.heroclass.rogue=盗贼 -actors.hero.heroclass.rogue_desc_item=盗贼拥有_匕首_和_烟雾手里剑_。\n\n_暗影披风_是盗贼的特殊道具 -actors.hero.heroclass.rogue_desc_loadout=盗贼装备武器时,降低该武器2点力量需求。\n\n盗贼更擅于发现隐藏门和陷阱。 -actors.hero.heroclass.rogue_desc_misc=_探地卷轴_和_隐形药水_在游戏开始就已鉴定。 - -actors.hero.heroclass.warrior=战士 -actors.hero.heroclass.warrior_desc_item=战士持有_短剑_和三枚不同_药丸_。\n\n_盾牌_是战士的特殊道具 -actors.hero.heroclass.warrior_desc_loadout=战士装备防具时,降低该防具2点力量需求。\n\n战士进食后获得更多的生命值。 -actors.hero.heroclass.warrior_desc_misc=_力量药水_和_升级卷轴_在游戏开始就已鉴定。 - -actors.hero.heroclass.soldier=星兵 -actors.hero.heroclass.soldier_desc_item=星兵拥有_投石索_和_逃脱匕首_。\n\n_脉冲手枪_是星兵的特殊道具 -actors.hero.heroclass.soldier_desc_loadout=星兵拥有额外的初始命中,初始闪避和生命成长。\n\n星兵幸运相较其他角色更佳出众,并且可以认出被诅咒的物品。 -actors.hero.heroclass.soldier_desc_misc=_狂怒卷轴_和_恢复药水_在游戏开始就已鉴定。 - -actors.hero.heroclass.follower=信徒 -actors.hero.heroclass.follower_desc_item=信徒拥有_木杖_和_治疗药水_。\n\n_信标盒_是信徒的特殊道具 -actors.hero.heroclass.follower_desc_loadout=信徒使用一件消耗品时,有几率不消耗这件物品。\n\n信徒在商店的开销降低。 -actors.hero.heroclass.follower_desc_misc=_恐惧卷轴_和_治疗药水_在游戏开始就已鉴定。 - -actors.hero.herosubclass.pastor=牧师 -actors.hero.herosubclass.pastor_desc=_牧师_自身的自然恢复和治疗效果翻倍,并且允许自然恢复突破生命上限。此外,攻击命中目标后有几率魅惑目标。 -actors.hero.herosubclass.artisan=工匠 -actors.hero.herosubclass.artisan_desc=_工匠_将降低装备物品的力量需求,并在击败敌人后有几率缴获它的装备。 -actors.hero.herosubclass.agent=特工 -actors.hero.herosubclass.agent_desc=_特工_可以在不装备枪械的情况下使用枪械,而且获得额外的射击速度,装弹速度和潜行能力。 -actors.hero.herosubclass.leader=领袖 -actors.hero.herosubclass.leader_desc=_领袖_能强化召唤物,用气势压制攻击他的敌人,并降低受到的伤害。 -actors.hero.herosubclass.assassin=刺客 -actors.hero.herosubclass.assassin_desc=进行偷袭时,_刺客_能对敌人造成额外伤害。 -actors.hero.herosubclass.battlemage=战斗法师 -actors.hero.herosubclass.battlemage_desc=_战斗法师_拥有更高的法术强度和更快的法术施放速度。 -actors.hero.herosubclass.berserker=狂战士 -actors.hero.herosubclass.berserker_desc=当严重受伤时,_狂战士_会进入狂暴的状态,显著增加伤害输出并减少所受到的伤害。 -actors.hero.herosubclass.freerunner=疾行者 -actors.hero.herosubclass.freerunner_desc=_疾行者_在不负重且不饥饿的情况下跑得更快,如果他处于隐形状态,那么该效果会进一步增强。 -actors.hero.herosubclass.gladiator=角斗士 -actors.hero.herosubclass.gladiator_desc=成功的近战攻击可以令_角斗士_开始连击,连击次数越多造成的伤害越高。 -actors.hero.herosubclass.joker=小丑 -actors.hero.herosubclass.joker_desc=_小丑_及其擅长蛊惑和欺诈,可以在远处攻击敌人的同时,将它们击退。 -actors.hero.herosubclass.sniper=狙击手 -actors.hero.herosubclass.sniper_desc=_狙击手_能够发现敌人的装甲的薄弱点,使用投掷武器的时候有效地无视敌人护甲并增加命中后的攻击速度。 -actors.hero.herosubclass.superstar=巨星 -actors.hero.herosubclass.superstar_desc=_巨星_强大的自信将增幅其本身的节奏,使其更加迅猛。 -actors.hero.herosubclass.warden=守望者 -actors.hero.herosubclass.warden_desc=与自然之力强大的连结允许_守望者_从露珠中获得额外的生命、践踏草地时增加潜行并且能从特殊植物中获得种子和露水。 -actors.hero.herosubclass.warlock=术士 -actors.hero.herosubclass.warlock_desc=_术士_用法杖攻击时会几率标记敌人的灵魂,被标记的敌人受到攻击将回复术士的血量和饥饿值。 - -###really -###this is for save game -actors.hero.heroclass.warrior_name=warrior -actors.hero.heroclass.mage_name=mage -actors.hero.heroclass.rogue_name=rogue -actors.hero.heroclass.huntress_name=huntress -actors.hero.heroclass.performer_name=performer -actors.hero.heroclass.soldier_name=soldier -actors.hero.heroclass.follower_name=follower - -###mobs -actors.mobs.acidic.desc=酸液蝎子较普通蝎子更强,也更加危险。它体内的酸液会在遇到危险时释放,从而保护自己免受天敌的袭击。 -actors.mobs.acidic.name=酸液蝎子 -actors.mobs.adultdragonviolet.atk=离这远点!入侵者! -actors.mobs.adultdragonviolet.desc=守卫巨龙通常是被召唤而来,但是对普通人来说它和野生巨龙没什么两样。 -actors.mobs.adultdragonviolet.die=为了...Otiluke大人!! -actors.mobs.adultdragonviolet.name=守卫巨龙 -actors.mobs.albino.desc=这是一只稀有品种的白色的老鼠,它有一身纯白色的皮毛和锯齿状的牙齿。邪恶污染使它周围布满了血雾。 -actors.mobs.albino.name=白化老鼠 -actors.mobs.albinopiranha.desc=在这种地方生活的肉食鱼经过上百年的演变,它们的视觉早已退化。不过它们的其他感官异常灵敏,可以感受到周围水流的变化,也异常凶猛。 -actors.mobs.albinopiranha.name=原生肉食鱼 -actors.mobs.assassin.def_verb=闪避 -actors.mobs.assassin.desc=由天狗所训练出来的忍者之一,极其擅长远程攻击。 -actors.mobs.assassin.name=暗杀者 -actors.mobs.bandit.desc=较普通绿衣小贼而言,紫衣大盗在偷窃同时,会狠狠伤害被偷窃者,以方便自己逃跑。 -actors.mobs.bandit.name=紫衣大盗 -actors.mobs.banditking.desc=传言,盗贼中有一群另类,他们对金银珠宝没有兴趣,倒是对生物的生命情有独钟。并且,他们可以在神不知鬼不觉的情况下偷走敌人的生命。他们也接受各种委托,但代价一般都是...生命。 -actors.mobs.banditking.die=算了,这次先放过你。 -actors.mobs.banditking.dis=蓝衣神偷消失了。 -actors.mobs.banditking.name=蓝衣神偷 -actors.mobs.banditking.spork=啊!我偷到的叉勺呢! -actors.mobs.bat.def_verb=闪避 -actors.mobs.bat.desc=这些敏捷且坚韧的洞穴穹顶生物能够通过每一次成功的攻击来恢复自己的生命,从而打败比它们大得多的对手。 -actors.mobs.bat.name=吸血蝙蝠 - -actors.mobs.bluecat.name=布鲁凯特 -actors.mobs.bluewraith.def_verb=闪避 -actors.mobs.bluewraith.desc=相较其他怨灵而言,怨灵战士更喜欢近距离作战而不是远程打击。它们的行动速度也比其他怨灵快。 -actors.mobs.bluewraith.name=怨灵战士 -actors.mobs.brokenrobot.broken=系统...关闭... -actors.mobs.brokenrobot.desc=虽然这个机器人的程序没有老化,但它的身躯抵抗不住时间的侵蚀。 -actors.mobs.brokenrobot.explode=自毁启动! -actors.mobs.brokenrobot.name=破损机械 -actors.mobs.brownbat.def_verb=闪避 -actors.mobs.brownbat.desc=小蝙蝠呈棕色,是一种没什么威胁的生物。当然如果你杀死了它的话,它有几率发出很大的响声。 -actors.mobs.brownbat.die=凄惨的叫声惊醒了附近的敌人! -actors.mobs.brownbat.name=小蝙蝠 -actors.mobs.brute.desc=暴徒是豺狼人中体型最庞大,力量最强壮且生命力最顽强的精英。严重受伤时,他们会陷入疯狂之中,对敌人造成更高的伤害。 -actors.mobs.brute.enraged=豺狼暴徒被激怒了! -actors.mobs.brute.name=豺狼暴徒 -actors.mobs.crab.def_verb=格挡 -actors.mobs.crab.desc=这些巨型的螃蟹位居下水道食物链的顶端。它们行动极其迅速且其厚重的甲壳能承受沉重的打击。 -actors.mobs.crab.name=巨蟹 -actors.mobs.crabking.desc=远古巨蟹收集保护类魔法和物品以便保护它的子民免受黑暗或贪婪者的袭击。它的壳本身是件不错的强化道具。 -actors.mobs.crabking.die=抱歉...我的子民... -actors.mobs.crabking.heal=远古巨蟹从高压电壳中吸取了能量! -actors.mobs.crabking.name=远古巨蟹 -actors.mobs.crabking.notice=请离开这,否则我就对你不客气了。 -actors.mobs.demongoo.desc=恶魔goo通常由各种物质组成,如熔岩、黏液、暗能量、恶意;然而,大部分都是黑暗。小心别让它自己分裂,因为即使最弱的部分,只要加入一点熔岩,也能再次变得坚固。 -actors.mobs.demongoo.divide=暗黑黏咕分裂了! -actors.mobs.demongoo.name=暗黑黏咕 - - -actors.mobs.dm300.desc=数个世纪前矮人们制造了这个机器。但此后,矮人们开始使用魔像、元素生物甚至是恶魔来替换机器,最终导致其文明的衰败。DM-300及类似的机器通常用于建设和挖掘,某些情况下,也可以用于城防。 -actors.mobs.dm300.die=任务失败。系统关闭。 -actors.mobs.dm300.heal=DM-300修复了它自己! -actors.mobs.dm300.name=DM-300 -actors.mobs.dm300.notice=检测到未经授权的人员。 -actors.mobs.dm300$tower.alert=生产线遭受攻击!应急保护措施启动! -actors.mobs.dm300$tower.desc=很多年前矮人就建立起一套完整的流水生产线,但他们对魔法的研究使这种流水生产线失于维护。目前这些生产器已经十分老旧了。 -actors.mobs.dm300$tower.name=老旧的生产器 -actors.mobs.dm300$tower.robots=自动防御...自动防御... - - -actors.mobs.dragonking.desc=一只普通的巨龙。它身上的魔法十分不稳定,击败它后可能打开世界通道。 -actors.mobs.dragonking.name=异界龙王 -actors.mobs.dustelement.blind=灰尘阻碍了你的视线。 -actors.mobs.dustelement.desc=年久失修的下水道里面的尘埃和向外扩散的黑暗力量融合,生成了这一种羸弱的元素。 -actors.mobs.dustelement.name=尘埃元素 - -actors.mobs.dwarflich.desc=与矮人国王一同进行不朽实验的矮人。他们虽然没有保留外貌,但是他们获得了极强的灵能。 -actors.mobs.dwarflich.name=不朽矮人 -actors.mobs.eye.desc=这种恶魔还有一个名字叫做“憎恶之球”,因为它在看到敌人时会毫无顾忌地使用它的死亡射线,而根本不顾及队友的存在。 -actors.mobs.eye.name=邪恶之眼 -actors.mobs.fetidrat.desc=很明显这只老鼠身上有着问题。其油腻的黑毛和腐烂的皮肤与你以前见过的健康老鼠很不同。浅绿色的眼睛让它显得更具威胁。\n\n这只老鼠周围围绕着一片可怕恶臭,其恶臭在近距离接触时尤其浓烈。\n\n黑色的淤泥从它的嘴中流出。淤泥腐蚀掉了地板,但其似乎能在水中溶解开来。 -actors.mobs.fetidrat.name=腐臭老鼠 -actors.mobs.fiend.desc=邪魔本身由暗影能量组成...但它的斗篷是哪来的? -actors.mobs.fiend.name=邪魔 -actors.mobs.fireelemental.desc==这些游荡的火元素是在召唤某种更强大存在时产生的副产品。其特性太过紊乱,以至于最强大的恶魔学者都没有办法驱使。 -actors.mobs.fireelemental.name=火元素 -actors.mobs.fishprotector.desc=这类守卫长相相似,但名称不同。这只守卫是守护这片洞穴的。 -actors.mobs.fishprotector.name=洞穴守卫 -actors.mobs.flyingprotector.desc=智慧试炼的守护者。 -actors.mobs.flyingprotector.name=智慧守卫 -actors.mobs.forestprotector.desc=这类守卫长相相似,但名称不同。这只守卫是守护这片森林的。 -actors.mobs.forestprotector.name=森林守卫 -actors.mobs.gnoll.desc=豺狼是鬣狗状的类人生物。它们在下水道和地牢里游荡,不时向上行动试图向地表发起进攻。豺狼巡查是它们种群里最普通的一员,它们既没有豺狼暴徒强壮,也赶不上萨满聪明。 -actors.mobs.gnoll.name=豺狼巡查 -actors.mobs.gnollarcher.desc=这个豺狼隐藏在树叶后。你在这儿让他很烦躁。 -actors.mobs.gnollarcher.name=豺狼弓箭手 -actors.mobs.gnollking$gnollkeeper.desc=豺狼王的亲卫队。它们绝大部分时候都是看守宝库的。 -actors.mobs.gnollking$gnollkeeper.name=豺狼卫士 -actors.mobs.gnollking$gnollkeeper.safe=放弃抵抗! -actors.mobs.gnollking.angry=你惹火我了! -actors.mobs.gnollking.desc=豺狼人霍格是豺狼人中的猛男,11级的杀手。哦,这是哈格啊...哈格是豺狼人的头领。 -actors.mobs.gnollking.die=我的...财宝... -actors.mobs.gnollking.name=哈格 -actors.mobs.gnollking.notice=嗯?谁敢擅闯我的宝库?! -actors.mobs.gnollshaman.desc=那些最具有智慧的豺狼可以掌握萨满魔法,豺狼萨满由于缺少力量所以更喜欢使用战斗法术。任何敢于质疑它们在部落里地位的人都会被萨满用法术毫不留情地消灭。 -actors.mobs.gnollshaman.name=豺狼萨满 -actors.mobs.gnolltrickster.desc=即使以豺狼人的标准来看,这个生物也非常的诡异。它鬼鬼祟祟地弯着腰向前移动,脸上挂着咧着嘴的邪恶笑容,肩上挂着的挎包鼓得同摇篮一般。它的瞳孔中诡异地混合着恐惧与兴奋。\n\n它的挎包里有一大批粗制滥造的飞镖,它们似乎包含着各种有害物质。 -actors.mobs.gnolltrickster.name=豺狼猎手 -actors.mobs.goldorc.def_verb=格挡 -actors.mobs.goldorc.desc=黑暗能量腐蚀了猪人,使纯洁的猪人变得邪恶。 -actors.mobs.goldorc.name=金眼猪人 -actors.mobs.goldthief.desc=不像其他类型的小偷,他们只关心一件特定的事情:闪闪发光的金钱。小心别让他们从你那里偷东西,因为从这些志同道合的小偷的潮汐中找回丢失的金子相当困难。 -actors.mobs.goldthief.name=黄金小盗 -actors.mobs.goldthief.stole=黄金小盗从你那里偷走了%s个金币! -actors.mobs.golem.def_verb=格挡 -actors.mobs.golem.desc=矮人们尝试将他们关于机械的知识与新发现的元素力量结合起来。土地之灵作为公认的最容易掌控的元素之灵,被用来当作机械的"灵魂"。尽管如此,仪式中最细微的失误都会造成严重的爆炸。 -actors.mobs.golem.name=魔像 - -actors.mobs.goo.atk=粘咕正在不断地抽动! -actors.mobs.goo.desc=我们对粘咕所知甚少。它甚至很有可能不是一个生物,而是下水道表面聚集的邪恶物质得到基本智能而产生的实体。不管怎样,很明显是黑暗魔法造就了这个生物。\n\n其凝胶性质让它吸收了很多黑暗能量,你光是靠近就感受到了一股寒意。如果粘咕使用这种能量对你进行攻击那你肯定支撑不了多久。 -actors.mobs.goo.die=咕……咕…… -actors.mobs.goo.name=黏咕 -actors.mobs.goo.notice=咕-咕! -actors.mobs.goo$poisongoo.create=粘咕分裂出了一些迷你粘咕! -actors.mobs.goo$poisongoo.desc=我们对粘咕所知甚少。它甚至很有可能不是一个生物,而是下水道表面聚集的邪恶物质得到基本智能而产生的实体。不管怎样,很明显是黑暗魔法造就了这个生物。\n\n其凝胶性质让它吸收了很多黑暗能量,你光是靠近就感受到了一股寒意。如果粘咕使用这种能量对你进行攻击那你肯定支撑不了多久。 -actors.mobs.goo$poisongoo.divide=毒性粘咕分裂了! -actors.mobs.goo$poisongoo.name=毒性粘咕 -actors.mobs.goo$poisongoo.squeeze=粘咕正在不断地抽动! - - -actors.mobs.graveprotector.desc=这类守卫长相相似,但名称不同。这只守卫是守护这片监狱的。 -actors.mobs.graveprotector.name=监狱守卫 -actors.mobs.greatcrab.noticed=这只螃蟹留意到了你的进攻并用它的巨大钳子格挡了这次攻击。 -actors.mobs.greatcrab.blocked=格挡 -actors.mobs.greatcrab.def_verb=格挡 -actors.mobs.greatcrab.desc=就算是和其他的下水道螃蟹相比较,这只螃蟹也是如此巨大。它的蓝色甲壳上有着一条条裂缝和几只藤壶,证明其经历的无数岁月。它缓慢地在周围爬行,用它那只巨大的钳子勉强保持平衡。\n\n尽管这螃蟹只有一只蟹钳,但钳子的大小完全补偿了这一不足。螃蟹只要发现危险就会把爪子举在自己身前,让自己获得坚不可摧的甲壳防护。 -actors.mobs.greatcrab.name=巨钳螃蟹 -actors.mobs.greyrat.desc=灰毛鼠是棕毛鼠的变种,它可以免疫大量的负面状态。 -actors.mobs.greyrat.name=灰毛鼠 -actors.mobs.guard.def_verb=格挡 -actors.mobs.guard.desc=作为曾经监狱的管理者,这些守卫和那些罪犯已经没什么区别了。它们蹒跚的步伐如同僵尸一般,毫无思绪地四处寻找不属于这片区域的生物,比如你!\n\n它的铁链缠在自己的胯部,也许可以用来将敌人拉扯到非常近的距离。 -actors.mobs.guard.name=监狱守卫 -actors.mobs.guard.scorpion=给我过来! -actors.mobs.hermitcrab.absorb=寄居蟹将攻击的能量吸收进了它的贝壳。 -actors.mobs.hermitcrab.charge=高压电壳充能了%s点。 -actors.mobs.hermitcrab.desc=传奇巨蟹的随从,这些坚韧的螃蟹能用它们的壳吸收除了最弱的攻击之外所有的攻击。吸收的攻击会被用来对闪电贝壳充能。 -actors.mobs.hermitcrab.name=寄居蟹 - - -actors.mobs.king$undead.def_verb=格挡 -actors.mobs.king$undead.desc=由矮人国王的意志唤醒的矮人亡灵,曾经的王国议会成员。除了长着厚实的胡须以外,和正常的骷髅外观上并没有区别。 -actors.mobs.king$undead.name=矮人亡灵 -actors.mobs.king.arise=以我之名,复苏吧!奴隶们! -actors.mobs.king.cannot=我还没有输! -actors.mobs.king.def_verb=格挡 -actors.mobs.king.desc=这位最后的矮人国王以对生死机制的透彻理解而闻名。他说服王国的议会成员参加了一场本应让他们所有人获得永生的仪式。最终成功的仅他一人——以及一支死灵军队。 -actors.mobs.king.die=你无法杀死我,%s... 我是...永恒的... -actors.mobs.king.liches=巫师们,起来吧! -actors.mobs.king.meeting=何人来此喧哗?! -actors.mobs.king.name=矮人国王 -actors.mobs.king.notice=你敢! -actors.mobs.king$dwarfkingtomb.desc=这东西是由各种奇怪的材料制成的,看起来它和矮人王联系密切。 -actors.mobs.king$dwarfkingtomb.impossible=那毫无作用。 -actors.mobs.king$dwarfkingtomb.name=永恒之墓 - -actors.mobs.littower.desc=Otiluke用他的石像代替他来守护核心。石像是无敌的,但是切断魔力来源可以使他停止。你的旅程即将到达尾声,保持你的决心! -actors.mobs.littower.name=Otiluke守护石像 -actors.mobs.littower.zap=远离核心,这不是你该来的地方! -actors.mobs.livemoss.desc=由于黑暗力量的侵蚀,下水道诡异的生物逐渐增多。这个生物就是其中的一种:扭曲的植物占据了死去的老鼠躯体,并向外抛洒寄生孢子。 -actors.mobs.livemoss.name=寄生苔藓 -actors.mobs.magiceye.desc=这种邪眼似乎完全是由能量构成,在释放完全部的能量后就会自行死亡。 -actors.mobs.magiceye.name=青色邪眼 -actors.mobs.mimic.desc=宝箱怪是一种能随意改变外形的生物。在地牢里它们几乎一直以宝箱形态出现,因为它们明白怎么去吸引冒险者。 -actors.mobs.mimic.name=宝箱怪 -actors.mobs.minesentinel.desc=钢铁守卫和普通活化石像的区别就是...材质不同。它手上握着_%s_,看起来非常危险。 -actors.mobs.minesentinel.name=钢铁守卫 -actors.mobs.mob$fleeing.status=这个%s正在逃跑 -actors.mobs.mob$hunting.status=这个%s正在追猎 -actors.mobs.mob$passive.status=这个%s是无害的 -actors.mobs.mob$sleeping.status=这个%s正在睡觉 -actors.mobs.mob$wandering.status=这个%s正在游荡 -actors.mobs.mob.clear1=你成功在目标之前%s步清空本层。 -actors.mobs.mob.clear2=你成功在目标之前1步清空本层。 -actors.mobs.mob.clear3=你花费的时间太长了,下层加油哦。 -actors.mobs.mob.died=你依稀听到有什么东西在远处消亡了。 -actors.mobs.mob.exp=%+d经验值 -actors.mobs.mob.killcount=击杀计数:%s -actors.mobs.mob.rage=\#$%^ -actors.mobs.mob.rankings_desc=死于:%s -actors.mobs.monk.def_verb=招架 -actors.mobs.monk.desc=这些僧侣皆是狂热的信徒,倾其所能从一切异族手中保护他们城市的秘密。他们既不披甲亦不执械,仅仅依靠他们的徒手格斗技巧退敌。 -actors.mobs.monk.disarm=武僧将你手中的武器击飞了! -actors.mobs.monk.name=矮人武僧 -actors.mobs.mossyskeleton.def_verb=格挡 -actors.mobs.mossyskeleton.desc=青苔覆盖了一具骷髅骨架,并由此支配骷髅的行动。 -actors.mobs.mossyskeleton.name=青苔骷髅 - -actors.mobs.musketeer.desc=与矮人国王的想法不同,矮人将军认为火器才是正确的研究方向。于是矮人射手就加入矮人王国的巡逻队。 -actors.mobs.musketeer.name=矮人射手 -actors.mobs.orbofzotmob.desc=你启动了zot牌能源球。它在攻击附近的怪物! -actors.mobs.orbofzotmob.die=机体过热,关闭... -actors.mobs.orbofzotmob.name=zot牌能源球 -actors.mobs.orc.def_verb=格挡 -actors.mobs.orc.desc=力量试炼里的锻炼你的力量的生物。它们纯洁善良,但是下手没有轻重... -actors.mobs.orc.name=猪人 -actors.mobs.otiluke.desc=Otiluke的镜像,但是已经被zot腐化。看起来它在为石像提供能源。 -actors.mobs.otiluke.name=被腐化的Otiluke的镜像 -actors.mobs.otiluke.summon=守卫们,保护核心! -actors.mobs.piranha.desc=这些肉食性鱼类不是地下水池中的天然生物。它们被专门培育用来保护被水淹没的储藏室。 -actors.mobs.piranha.name=巨型肉食鱼 - -actors.mobs.plaguedoctor.crazy=瘟疫医生的信念正在经受考验......狂乱! -actors.mobs.plaguedoctor.desc=这是一个不被人认可的研究者。在他被带到这个世界后,他就疯了。 -actors.mobs.plaguedoctor.name=瘟疫医生 -actors.mobs.plaguedoctor.notice=所以...你是来帮我做研究的吗... -actors.mobs.plaguedoctor.yell2=老鼠...他们到处都是...我们完了... -actors.mobs.plaguedoctor.yell=放心,这不会痛的...我会证明给你看... -actors.mobs.plaguedoctor$shadowrat.desc=一种奇怪的影子。它长得和老鼠差不多。 -actors.mobs.plaguedoctor$shadowrat.name=瘟疫之影 - -actors.mobs.prisonwander$seekbombp.name=追猎炸弹 -actors.mobs.prisonwander$seekbombp.desc=追猎炸弹 -actors.mobs.prisonwander.desc=监狱的最高管理者。结实而强大 -actors.mobs.prisonwander.die=I-will-be-back! -actors.mobs.prisonwander.name=典狱长 -actors.mobs.prisonwander.notice=我看到你了! -actors.mobs.prisonwander.scorpion=没人能从我手上逃离!!! - -actors.mobs.rat.desc=虽说棕毛鼠们具有攻击性,可它们依旧是下水道居民里的弱者。它们成群结队非常烦人,但只有一只时对你够不上什么威胁。 -actors.mobs.rat.name=棕毛鼠 -actors.mobs.ratboss.desc=领头鼠是鼠群的头领。虽然它不像鼠王一样有威信,但它依然可以叫来鼠群。 -actors.mobs.ratboss.name=领头鼠 -actors.mobs.ratboss.spawn=这里出现了一群老鼠! -actors.mobs.redwraith.def_verb=躲避 -actors.mobs.redwraith.desc=相较于普通幽灵而言,混沌幽灵蕴含更强的能量。这也是这种幽灵呈红色的原因。相传有些戒指的魔力来源于它,不知道是不是真的。 -actors.mobs.redwraith.name=混沌幽灵 -actors.mobs.scorpio.desc=这些巨大的节肢类生物会尽可能避免一切近距离接触,并且会在远处射出能够致残的尖刺。 -actors.mobs.scorpio.name=巨型蝎子 -actors.mobs.seekinbomb.desc=只是个追猎炸弹而已。 - - -actors.mobs.senior.desc=相较普通武僧而言,武僧大师变秃了,也变强了! -actors.mobs.senior.name=武僧大师 - -actors.mobs.sentinel.desc=你以为这只是地牢里的另一个丑陋雕像,但它发出红光的眼睛让你放弃了刚才的想法。 尽管雕像本身是用钢铁做的,但它手上握着_%s_,看起来像是真的。 -actors.mobs.sentinel.name=活化钢像 - -actors.mobs.sewerheart.atk=这只植物好像在准备什么! -actors.mobs.sewerheart.blink=这个东西逃走了! -actors.mobs.sewerheart.desc=监狱的典狱长曾经养过许多种奇怪的植物,其中一种就是这个莓果。很明显,在监狱崩溃后这只莓果逃了出来,并在这里自由的生长。 -actors.mobs.sewerheart.name=下水道之心 -actors.mobs.sewerheart$sewerlasher.desc=这东西应该属于茎,反正很危险就是了。 -actors.mobs.sewerheart$sewerlasher.name=藤鞭 - -actors.mobs.shadowyog.blink=Yog之影转移了! -actors.mobs.shadowyog.desc=Yog之影是Yog在另一世界的投影。击败它没准就可以知晓穿越世界的秘密。 -actors.mobs.shadowyog.die=... -actors.mobs.shadowyog.illusion=光明已逝,暗影降临... -actors.mobs.shadowyog.name=Yog-Dzewa之影 - -actors.mobs.shell.desc=没人知道为什么高压电壳带有高压,因为知道的人没一个活了下来。 -actors.mobs.shell.name=高压电壳 - -actors.mobs.shielded.def_verb=格挡 -actors.mobs.shielded.desc=这个豺狼人带着一块盾牌。说真的它还是带把大剑强点。 -actors.mobs.shielded.name=持盾豺狼 -actors.mobs.skeleton.def_verb=格挡 -actors.mobs.skeleton.desc=骷髅是从那些悲惨的冒险者及地牢原住民尸骨的聚合物产生的,来自下层地牢的邪恶力量将它们从死亡中唤起。在吸收了足够的伤害之后,它们就会在骨头的爆炸中消解。 -actors.mobs.skeleton.name=骷髅 -actors.mobs.skeletonhand1.desc=骷髅王的右手,王者的右手 -actors.mobs.skeletonhand1.name=王之右手 -actors.mobs.skeletonhand2.desc=骷髅王的左手,亡者的左手 -actors.mobs.skeletonhand2.name=亡之左手 -actors.mobs.skeletonking.desc=骷髅王是一个十分强大的存在。 -actors.mobs.skeletonking.die=魔法不够了... -actors.mobs.skeletonking.name=奥瑞克莱 -actors.mobs.skeletonking.notice=你会被亡灵的怒火吞没,%s! -actors.mobs.sommonskeleton.name=被召唤的亡灵 -actors.mobs.sommonskeleton.desc=这不过是一个被召唤的亡灵而已。 -actors.mobs.sokobansentinel.desc=一种幻影,没有思维,行动缓慢,手持幻影_%s_,只会对面前的生物发动攻击。 -actors.mobs.sokobansentinel.name=推箱关守卫 -actors.mobs.spinner.desc=绿色而多毛的洞穴蜘蛛们会试着去躲避直接的战斗,它们更喜欢在远处等待其猎物卷入蜘网,在毒素中慢慢死去。 -actors.mobs.spinner.name=矿洞蜘蛛 -actors.mobs.statue.desc=你以为这只是地牢里的另一个丑陋雕像,但它发出红光的眼睛让你放弃了刚才的想法。 尽管雕像本身是用石头做的,但它手上握着_%s_,看起来像是真的。 -actors.mobs.statue.name=活化石像 -actors.mobs.succubus.desc=魅魔是外表诱人(稍有某种哥特风格)的女性恶魔。通过使用魔法,魅魔可以魅惑英雄,使英雄在魅惑消退前无法攻击它。 -actors.mobs.succubus.name=魅魔 -actors.mobs.swarm.def_verb=躲避 -actors.mobs.swarm.desc=致命的飞蝇群愤怒地发出嗡嗡声。每次非魔法攻击都会把它分割成两群更小但同样危险的飞蝇群。 -actors.mobs.swarm.name=蝇群 -actors.mobs.tengu.desc=天狗是远古时期的暗杀组成员。这些刺客以十分善于使用手里剑和陷阱著称。 -actors.mobs.tengu.die=混蛋,走着瞧! -actors.mobs.tengu.name=天狗 -actors.mobs.tengu.notice=嘿,这是我的地盘,%s! -actors.mobs.tenguden.die=诅咒你永世不得好死。 -actors.mobs.tenguden.name=匿藏的天狗 -actors.mobs.tenguden.notice=你是怎么找到我的! -actors.mobs.tenguden.desc=逃跑了的天狗。 -actors.mobs.testmob.desc=试试看,你能打多少伤害。 -actors.mobs.testmob.name=稻草人 -actors.mobs.testmob2.desc=这个稻草人很危险,千万不要触动它。 -actors.mobs.testmob2.name=发条稻草人 -actors.mobs.thief.desc=虽然这些囚犯逃出了他们的牢房,但这个地方仍然是关押着他们的监狱。随着时间的推移,这个地方摧毁了他们的心智以及对自由的希望。在很久以前,这些疯狂的小偷和强盗就已经忘记了它们是谁以及它们在为什么而活。 -actors.mobs.thief.name=绿衣毛贼 -actors.mobs.thiefimp.carries=\n\n这个小鬼携带着一个_%s_。明显是偷来的。 -actors.mobs.thiefimp.desc=小鬼是地狱当中最底层的居民。它们没有固定的收入来源,所以它们经常去其他地方偷窃。 -actors.mobs.thiefimp.name=强盗小鬼 -actors.mobs.thiefimp.stole=小鬼偷走了%s! -actors.mobs.thiefking.desc=传说中最神秘的盗贼。同时也是这个城市的领主。 -actors.mobs.thiefking.die=你的生命,我买不起... -actors.mobs.thiefking.name=金城领主 -actors.mobs.thiefking.notice=你就是让我们组织吃瘪的那个人,%s?那么现在,受死吧。 - -actors.mobs.trollwarrior.angry=你竟敢攻击我!!! -actors.mobs.trollwarrior.desc=巨魔暴躁的脾气和力量,导致他们的犯罪率极高。在监狱沦陷前,监狱里面各种势力都想和巨魔打好关系,即便是守卫也一样。 -actors.mobs.trollwarrior.name=巨魔战士 - -actors.mobs.uamulet.desc=???????????? -actors.mobs.uamulet.name=希望暗影 -actors.mobs.uamulet$darkmirror.name=黑暗镜像 -actors.mobs.uamulet$darkmirror.desc=?????? - -actors.mobs.udm300$seekbomb.name=追猎炸弹 -actors.mobs.udm300.desc=这种机器人是专门为攻城杀人制作的。它内部内置了许多致命的玩意。 -actors.mobs.udm300.name=杀人巨械 - -actors.mobs.ugoo$earthgoo.name=粘土黏咕 -actors.mobs.ugoo$firegoo.name=火焰黏咕 -actors.mobs.ugoo$icegoo.name=冰霜黏咕 -actors.mobs.ugoo$shockgoo.name=雷云黏咕 -actors.mobs.ugoo.desc=虚空的一只黏咕的投影。它可比这个世界的任何一只黏咕都要强。 -actors.mobs.ugoo.name=领主黏咕 - -actors.mobs.uicecorps.name=冰霜之心 -actors.mobs.uicecrops.desc=一颗跳动着的心脏,向四周散发着寒气 - -actors.mobs.uking.desc=这个家伙是植物的王者。 -actors.mobs.uking.name=植物领主 - -actors.mobs.utengu.desc=年轻时的天狗,既擅长远程攻击也擅长近战攻击。 -actors.mobs.utengu.name=年轻的天狗 - -actors.mobs.uyog.desc=一只叫始祖的眼睛...它看上去很眼熟。 -actors.mobs.uyog.name=始祖之眼 - -actors.mobs.vaultprotector.desc=这类守卫长相相似,但名称不同。这只守卫是这个城市的城管。 -actors.mobs.vaultprotector.name=金城守卫 -actors.mobs.warlock.desc=当矮人的兴趣从工程建设转向奥秘学术时,术士们开始在城市中掌权。它们从元素魔法起步,但很快就开始研究恶魔学和死灵术。 -actors.mobs.warlock.name=矮人术士 -actors.mobs.wraith.def_verb=躲避 -actors.mobs.wraith.desc=怨灵是来自于墓穴中渴望复仇的罪人之魂。作为飘渺的非实体很难被正常武器击中。 -actors.mobs.wraith.name=怨灵 - -actors.mobs.yog$burningfist.name=火焰之拳 -actors.mobs.yog$burningfist.desc=火焰之拳 -actors.mobs.yog$infectingfist.name=酸蚀之拳 -actors.mobs.yog$infectingfist.desc=酸蚀之拳 -actors.mobs.yog$larva.name=古神幼虫 -actors.mobs.yog$larva.desc=古神幼虫 -actors.mobs.yog$pinningfist.name=剧毒之拳 -actors.mobs.yog$pinningfist.desc=剧毒之拳 -actors.mobs.yog$rottingfist.name=大地之拳 -actors.mobs.yog$rottingfist.desc=大地之拳 -actors.mobs.yog.blink=Yog消失了! -actors.mobs.yog.desc=Yog-Dzewa是一位上古之神,来自混沌的强大存在。一个世纪前,古代矮人在与恶魔军队的战争中惨胜,却无法将古神杀死。于是他们把它封印在城市下的大堂里,认为过于虚弱的它永远都不会复苏。 -actors.mobs.yog.die=我...永生... -actors.mobs.yog.name=Yog-Dzewa - -actors.mobs.yog.notice=希望的存在只是一种幻觉… -actors.mobs.zot.desc=Zot是虚空中强大的领主之一。它可以自由操控黑暗和邪能。如果不是Otiluke将它拉到这个位面,你可能根本伤不到他。 -actors.mobs.zot.die=... -actors.mobs.zot.name=Zot -actors.mobs.zot.notice=你这是自寻死路! -actors.mobs.zot.pain=感受这被囚禁的愤怒吧! -actors.mobs.zotphase.desc=Zot的虚像,看上去是真的。 -actors.mobs.zotphase.name=Zot的虚像 - -actors.mobs.virus.desc=梦魇病毒 -actors.mobs.virus.name=---!!!数据删除!!!--- - -actors.mobs.zombie.desc=一种没有思维行动缓慢的不死生物...等下,这不是这种丧尸,这是感染者。 -actors.mobs.zombie.name=丧尸 -actors.mobs.patroluav.desc=一种高科技的无人机,被用于清理下水道垃圾。 -actors.mobs.patroluav.name=巡逻无人机 -actors.mobs.sandmob.desc=一种由沙子组成的怪物,死亡后会分裂。 -actors.mobs.sandmob.name=沙怪 -actors.mobs.sandmob$minisand.name=迷你沙怪 -actors.mobs.sandmob$minisand.desc=迷你沙怪 -actors.mobs.spiderbot.desc=矮人利用实验室废料所制作的机械宠物。它们和普通蜘蛛一样可以织网,并且喷出油脂来攻击。 -actors.mobs.spiderbot.name=机械蜘蛛 - -actors.mobs.demonflower.desc=在地狱中生长的花,它不仅能够移动,还能打出3连爆发并削弱目标的护甲。 -actors.mobs.demonflower.debuff=恶魔花施放了虚弱孢子。 -actors.mobs.demonflower.name=恶魔花 - -actors.mobs.sufferer.desc=这些过于高估自己的术士,尝试控制高等恶魔失败,然后被恶魔奴役,留在了这里。 -actors.mobs.sufferer.name=受难者 - -actors.mobs.tank.desc=一般来说不死族给人的印象都是迟缓,脆弱和源源不断。但是这只不死生物的体型,速度,力量都超过正常亡灵的水平。 -actors.mobs.tank.notice=啊啊啊啊啊嗷嗷嗷嗷嗷嗷!!! -actors.mobs.tank.die=啊啊啊啊啊嗷嗷嗷嗷嗷嗷...... -actors.mobs.tank.rock=TANK丢出了巨石! -actors.mobs.tank.name=TANK - -actors.mobs.spiderqueen.desc=蜘蛛们一般会选择聚在一起来建立一个巢穴。当巢穴的等级到达3级时,蜘蛛们就会推选出一只女王来扩张它们的地盘。 -actors.mobs.spiderqueen.notice=谁在撕扯我的网?! -actors.mobs.spiderqueen.die=我...输了... -actors.mobs.spiderqueen.egg=蛛后孵化了新的巢穴。 -actors.mobs.spiderqueen.name=蜘蛛皇后 -actors.mobs.spiderqueen$spideregg.name=巢穴 -actors.mobs.spiderqueen$spideregg.desc=根据孵化时间的不同,产出的蜘蛛种类也不同。 - -actors.mobs.spiderqueen$spiderworker.name=蜘蛛工人 -actors.mobs.spiderqueen$spiderworker.desc=蜘蛛大军的一种 -actors.mobs.spiderqueen$spiderjumper.name=跳蛛卫士 -actors.mobs.spiderqueen$spidermind.name=灵能蜘蛛 -actors.mobs.spiderqueen$spidergold.name=禁卫金蛛 - -actors.mobs.goldcollector.name=税收官 -actors.mobs.goldcollector.desc=这个是一个普通的税收官。 - -actors.mobs.levelchecker.name=裁决者 -actors.mobs.levelchecker.desc=这个是一个普通的裁决者。 - -actors.mobs.normalcell.name=细胞怪 -actors.mobs.normalcell.desc=天哪,细胞成精啦! - -actors.mobs.hybrid.name=混源体 -actors.mobs.hybrid.notice=我是埃蒙忠实的仆从。 -actors.mobs.hybrid.die=为了...虚空... -actors.mobs.hybrid.shield=埃蒙的力量保护着我。 -actors.mobs.hybrid.desc=由异能者,虫群,亡灵等的基因混合而成的未知生物。 -actors.mobs.hybrid$mixers.name=混源体 -actors.mobs.hybrid$mixers.desc=由异能者,虫群,亡灵等的基因混合而成的未知生物。 - -actors.mobs.elderavatar.name=长老化身 -actors.mobs.elderavatar.notice=效忠于我,或者死去。 -actors.mobs.elderavatar.disarm=长老剥离了你的护甲。 -actors.mobs.elderavatar.die=就算我死了,也有其他人接替我的位置... -actors.mobs.elderavatar.shield=尖碑给予我生命的力量。 -actors.mobs.elderavatar.desc=异能者的领袖,指挥者。他正四处寻找可以延续自身寿命的基因组。 -actors.mobs.elderavatar$obelisk.name=三角尖碑 -actors.mobs.elderavatar$obelisk.impossible=检测到长老生命信号,伤害吸收。 -actors.mobs.elderavatar$obelisk.desc=一种生命储存装置。 -actors.mobs.elderavatar$thehunter.name=猎手 -actors.mobs.elderavatar$thehunter.desc=异能者的尖锐猎手。 -actors.mobs.elderavatar$thewarlock.name=术士 -actors.mobs.elderavatar$thewarlock.desc=异能者的尖锐术士。 -actors.mobs.elderavatar$themonk.name=圣堂 -actors.mobs.elderavatar$themonk.desc=异能者的尖锐圣堂武士。 -actors.mobs.elderavatar$themech.name=裁决 -actors.mobs.elderavatar$themech.desc=异能者的尖锐裁决者。 - -actors.mobs.npcs.mtree.name=树苗 -actors.mobs.npcs.mtree.desc=普通的小树苗 - -actors.mobs.lichdancer.name=巫妖舞者 -actors.mobs.lichdancer.desc=舞者,24岁,是个艺人。自愿接受亡灵的交易,成为了一个巫妖。 -actors.mobs.lichdancer.notice=在我表演的一生中,我明白一个道理:作为人类而言,我们演员是有极限的。所以...我不做人啦! -actors.mobs.lichdancer$batterytomb.name=死灵电池 -actors.mobs.lichdancer$batterytomb.desc=一个奇怪的电池,不断释放着死灵能量。 -actors.mobs.lichdancer$linkbomb.name=炸弹 -actors.mobs.lichdancer$linkbomb.desc=小心,它要炸了! - -actors.mobs.firerabbit.name=堕天使 -actors.mobs.firerabbit.desc=兔人火焰兵,训练方便造价低廉,被派遣至此清剿亡灵。 -actors.mobs.firerabbit.yell=ko~ko~da~yo - -actors.mobs.manyskeleton.name=骷髅球 -actors.mobs.manyskeleton.desc=一大堆骷髅组成的球,打一下就有骷髅掉出来。 - -actors.mobs.yearbeast.name=年兽 -actors.mobs.yearbeast.disarm=年兽解除了你的武装! -actors.mobs.yearbeast.desc=传说中的生物,有着人类的智慧,虎的敏捷,熊的力量,凤的魅力。当然,这一切都是传说而已。 -actors.mobs.yearbeast.notice=我自由啦! -actors.mobs.yearbeast.die=居然能战胜我!这是给你的奖励。 -actors.mobs.yearbeast.escape=现在时候不对,我先溜了。 - -actors.mobs.yearbeast2.name=年兽 -actors.mobs.yearbeast2.disarm=年兽解除了你的武装! -actors.mobs.yearbeast2.desc=传说中的生物,有着人类的智慧,虎的敏捷,熊的力量,凤的魅力。当然,这一切都是传说而已。 -actors.mobs.yearbeast2.notice=谁把我吵醒了?! -actors.mobs.yearbeast2.die=啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!!! - -###pets -actors.mobs.pets.bluedragon.desc=蓝龙精通冰寒之力,也是原先性价比最高的龙。 -actors.mobs.pets.bluedragon.name=蓝龙 -actors.mobs.pets.bluedragon.ready=冰霜炸裂准备就绪 -actors.mobs.pets.bunny.desc=作为复活节的传统,复活节兔子和彩蛋一度闻名于世界。 -actors.mobs.pets.bunny.name=复活节彩蛋兔 -actors.mobs.pets.bunny.ready=野蛮撕咬准备就绪 -actors.mobs.pets.cococat.desc=椰子所培养的宠物猫。它和椰子一样携带着大量的炸弹。 -actors.mobs.pets.cococat.name=椰子猫 -actors.mobs.pets.cococat.ready=超级炸弹准备就绪 -actors.mobs.pets.cococat.thanks=谢啦,我走了。 -actors.mobs.pets.lightdragon.desc=光龙,顾名思义,是发光的龙 -actors.mobs.pets.lightdragon.name=光龙 -actors.mobs.pets.lightdragon.ready=圣光喷射准备就绪 -actors.mobs.pets.fly.desc=这只苍蝇嗡嗡作响,雄心勃勃,梦想有一天变成一只美丽的蝴蝶。 -actors.mobs.pets.fly.name=飞蝇 -actors.mobs.pets.gentlecrab.desc=为什么这只螃蟹和你那么好,因为对你而言,它很熟。 -actors.mobs.pets.gentlecrab.name=绅士蟹 -actors.mobs.pets.golddragon.desc=图鉴里面并没有这条龙的信息。 -actors.mobs.pets.golddragon.name=黄金龙 -actors.mobs.pets.golddragon.ready=终结吐息准备就绪 -actors.mobs.pets.greendragon.desc=绿龙一般精通闪电的力量。但由于原来没有那么多的闪电来源,所以绿龙十分稀缺。 -actors.mobs.pets.greendragon.name=绿龙 -actors.mobs.pets.greendragon.ready=电磁脉冲准备就绪 -actors.mobs.pets.leryfire.desc=早期破碎翻译组的修齐所制作的元素。它十分不稳定。 -actors.mobs.pets.leryfire.name=修齐元素 -actors.mobs.pets.leryfire.ready=紊乱炸裂准备就绪。你很酷吗? -actors.mobs.pets.monkey.desc=严格意义上它并不是猴子,它只是名字上带猴而已。 -actors.mobs.pets.monkey.name=绿皮猴 -actors.mobs.pets.pet.levelup=你的宠物升级了。 -actors.mobs.pets.pet.pet_died=你的宠物死亡了。 -actors.mobs.pets.reddragon.desc=红龙一般擅长喷射火焰,所以它们非常常见。 -actors.mobs.pets.reddragon.name=红龙 -actors.mobs.pets.reddragon.ready=火焰喷射准备就绪 -actors.mobs.pets.ribbonrat.desc=这个可爱的小老鼠戴着一条它非常珍惜的丝带,但是原因不明。它似乎随时准备向你展示它的骄傲。 -actors.mobs.pets.ribbonrat.name=缎带鼠 -actors.mobs.pets.scorpion.desc=一个大号嗜血的蝎子。它的尾巴镶嵌着一个危险的蜇刺。 -actors.mobs.pets.scorpion.name=血蝎 -actors.mobs.pets.scorpion.ready=腐酸血蛰准备就绪 -actors.mobs.pets.shadowdragon.desc=暗影龙属于黑暗,但需要光明才能将它召唤。 -actors.mobs.pets.shadowdragon.name=暗影龙 -actors.mobs.pets.shadowdragon.ready=暗影能量准备就绪 -actors.mobs.pets.snake.desc=这条蛇过去常常和它的兄弟在月光的柔和光辉下享受它的日子,直到它决定跟随它的流浪欲望进入伟大的未知世界。 -actors.mobs.pets.snake.name=毒蛇 -actors.mobs.pets.spider.desc=一只小小的,毛茸茸的蜘蛛似乎喜欢藏在你的盔甲下。然而,尽管它顽固的害羞,它已经准备好了。 -actors.mobs.pets.spider.name=蜘蛛 -actors.mobs.pets.spider.ready=缠绕之网准备就绪 -actors.mobs.pets.stone.desc=破碎中的一把武器是它的亲戚,但是它的父母来自精灵宝可梦。 -actors.mobs.pets.stone.name=石拳石 -actors.mobs.pets.bugdragon.desc=?????? -actors.mobs.pets.bugdragon.name=BUG龙 -actors.mobs.pets.bugdragon.ready=???准备就绪 -actors.mobs.pets.velocirooster.desc=这只公鸡相对于其他的来说更加凶猛一些。它在地牢中穿行,并用尖锐的爪子和喙来攻击。它的脖子上有一个纸条,写着“从释放到发芽,请享受这只公鸡带来的便利。” -actors.mobs.pets.velocirooster.name=公鸡 -actors.mobs.pets.velocirooster.ready=尖锐爪击准备就绪。Cock-a-doodle-roar! -actors.mobs.pets.violetdragon.desc=紫龙属于地龙的一种,它释放恶臭毒素。 -actors.mobs.pets.violetdragon.name=紫龙 -actors.mobs.pets.violetdragon.ready=剧毒吐息准备就绪 - -actors.mobs.pets.yearpet.desc=一只年兽宝宝,没什么战斗力。 -actors.mobs.pets.yearpet.name=年兽宝宝 - -##npc -actors.mobs.npcs.alivefish.desc=这是一个“淹死”的玩家。 -actors.mobs.npcs.alivefish.name=淹死的食人鱼 -actors.mobs.npcs.alivefish.yell1=(水泡声)(水泡声)(水泡声) -actors.mobs.npcs.alivefish.yell2=涌流法杖...水泡声...水泡声... -actors.mobs.npcs.bilboldev.desc=技巧地牢的制作者。他人非常好,因为据说他曾帮助typedscroll修复bug。 -actors.mobs.npcs.bilboldev.name=Bilboldev -actors.mobs.npcs.bilboldev.yell1=对我的技巧地牢多点耐心,伙计xD。 -actors.mobs.npcs.bilboldev.yell2=我计划未来对技能系统和故事系统做一次巨大的更新。 -actors.mobs.npcs.bilboldev.yell3=Hatsune的牺牲会被人所铭记! - -actors.mobs.npcs.blacksmith.blood_1=嘿,人类!不想当个没用的废物,对吗?拿着那个镐子然后用它_杀只蝙蝠_,我需要镐头上沾着的血。什么?要我如何报答你?真贪心...\n\n好吧,好吧,我没钱付给你,但我可以给你打打铁。想想你运气有多好吧,我可是这附近唯一的铁匠。 -actors.mobs.npcs.blacksmith.blood_2=我说了我需要镐子沾上蝙蝠血。赶紧! -actors.mobs.npcs.blacksmith.cant_reforge=我不能重铸这些物品! -actors.mobs.npcs.blacksmith.completed=噢,你终于回来了… 算了,总比回不来好。 -actors.mobs.npcs.blacksmith.cursed=我可不碰诅咒的东西! -actors.mobs.npcs.blacksmith.degraded=这简直就是个垃圾,质量太差了! -actors.mobs.npcs.blacksmith.desc=这个巨魔铁匠看起来和其他巨魔一样:又高又瘦,皮肤的色泽和纹理都像是石头。这位巨魔铁匠正在拿着一把与其体形极其不符的小锤子不停地修修补补。看起来他是较大的一个。 -actors.mobs.npcs.blacksmith.get_lost=好了,我已经没什么好帮你的了。 -actors.mobs.npcs.blacksmith.gold_1=嘿,人类!不想当个没用的废物,对吗?拿着那个镐子然后给我挖点_暗金矿,15块_就够了。什么?要我如何报答你?真贪心...\n好吧,好吧,我没钱付给你,但我可以给你打打铁。想想你运气有多好吧,我可是这附近唯一的铁匠。 -actors.mobs.npcs.blacksmith.gold_2=_暗金矿_。15块。说真的,有那么难? -actors.mobs.npcs.blacksmith.keeppickaxe=拿好这个镐子。它非常好用。 -actors.mobs.npcs.blacksmith.lost_pick=你在逗我?我的镐子呢?! -actors.mobs.npcs.blacksmith.name=巨魔铁匠 -actors.mobs.npcs.blacksmith.need_reinforced=这件物品无法承受那么高的升级,我想我没法帮你合成。 -actors.mobs.npcs.blacksmith.same_item=选择两个不同的物品,不是两次一样的! -actors.mobs.npcs.blacksmith.triforce=你居然找到这三个碎片!好吧,我想我应该能把它们合在一起。 -actors.mobs.npcs.blacksmith.un_ided=我得知道我在拿什么干活,先鉴定! - -actors.mobs.npcs.blacksmith2.adamantite=哦,你已经找到了这种组件了啊。这东西可以承载任意数量的强化,只要把这个东西和相应的物品相结合,就可以让那件物品承载任意数量的强化。这可是我那顽固的哥哥所做不到的。只要给我_50枚暗金_,我就可以帮你把那两样物品焊接在一起。 -actors.mobs.npcs.blacksmith2.already_reforge=组件已经焊接在上面了啊! -actors.mobs.npcs.blacksmith2.cant_reforge=没法升级的东西我可没法处理啊! -actors.mobs.npcs.blacksmith2.cant_work=东西不对我可没法处理啊,需要组件和道具还要暗金。 -actors.mobs.npcs.blacksmith2.cursed=诅咒的东西我可没法处理啊! -actors.mobs.npcs.blacksmith2.degraded=负等级的东西我可没法处理啊! -actors.mobs.npcs.blacksmith2.desc=这个巨魔焊工看起来和其他巨魔一样:又高又瘦,皮肤的色泽和纹理都像是石头。这位巨魔焊工正在拿着一把与其体形极其不符的电焊枪焊接着什么。看起来他是较小的那个。 -actors.mobs.npcs.blacksmith2.himself=和你看到的一样,我是那个顽固的家伙的弟弟。虽然我哥认为只有拥有传统的铁技才能在巨魔中立足,但是我认为科学技术也能帮我谋生。你目前应该没有见过一些奇怪的组件吧。如果你找到了那种组件,并且给我_50枚暗金_,我想我可以给你一个惊喜。 -actors.mobs.npcs.blacksmith2.name=巨魔焊工 -actors.mobs.npcs.blacksmith2.same_item=同样的东西我可没法处理啊! -actors.mobs.npcs.blacksmith2.un_ided=未知的东西我可没法处理啊! -actors.mobs.npcs.coconut.desc=一只背着单肩包头戴护目镜的橘色猫,看起来他携带有很多炸弹。 -actors.mobs.npcs.coconut.name=椰子 -actors.mobs.npcs.coconut.yell1=欢迎来到我的炸弹商店,我这儿卖各种爆炸物。 -actors.mobs.npcs.coconut.yell2=看起来炸弹翻译器的运行效果不错啊,小心它还可能爆炸哦。 -actors.mobs.npcs.coconut.yell3=你找坚果,那个hmdzl001?他在训练各种boss。短时间内你是找不到他了。 -actors.mobs.npcs.consideredhamster.desc=YAPD的作者的宠物。恕我直言,打不通YAPD简单难度的都是垃圾。 -actors.mobs.npcs.consideredhamster.name=ConsideredHamster的宝箱怪 -actors.mobs.npcs.consideredhamster.yell1=嘿,我现在很饿,能给我喂1美刀吗? -actors.mobs.npcs.consideredhamster.yell2=Pineapples! -actors.mobs.npcs.dachhack.desc=发芽地牢的作者。上面那个光环是代表自然之神地牢。 -actors.mobs.npcs.dachhack.name=Dachhack -actors.mobs.npcs.dachhack.yell1=对发芽地牢的崩溃我表示抱歉,目前我在尝试修复他们。 -actors.mobs.npcs.dachhack.yell2=我不明白为什么hmdzl001这个家伙会把我设计成这样...下面那是什么玩意... -actors.mobs.npcs.dachhack.yell3=最新的发芽你可以在我的谷歌硬盘上找到,虽然还是预览版,但是基本框架我是已经弄好了的。 -actors.mobs.npcs.evan.desc=破碎地牢的制作者。说实在的我无法确定这代表evan还是破碎...他们的图标是一样的。 -actors.mobs.npcs.evan.name=Evan -actors.mobs.npcs.evan.yell1=欢迎,冒险者。这个地牢可不太平呢。-来自00-Evan -actors.mobs.npcs.evan.yell2=我比较低调,所以当我听到hmdzl001和我说要我考虑台词的时候,其实我是拒绝的。 -actors.mobs.npcs.evan.yell3=我需要尽我全力来使破碎地牢更加好玩,更加有趣,更加合理,更加有挑战性。 -actors.mobs.npcs.fruitcat.desc=这是一个很可爱的玩家。 -actors.mobs.npcs.fruitcat.name=工会荣誉商人-菜猫 -actors.mobs.npcs.fruitcat.yell1=自从椰子走后,这家店就由我来管理。放心好了,我可不会涨价。 -actors.mobs.npcs.fruitcat.yell2=信不信由你,在椰子离开之前,他没有带任何东西,只是把它们堆起来让它们吔尘!无论如何,你可能比我更需要它们。 -actors.mobs.npcs.g2159687.desc=简单发芽的作者及汉化者,国人,现在处于弃坑状态。 -actors.mobs.npcs.g2159687.name=G2159687 -actors.mobs.npcs.g2159687.yell1=我是G2159687,喜欢我的简单发芽吗?我可没有其他台词。 -actors.mobs.npcs.g2159687.yell2=我想应该有一些玩家会认为地牢类游戏比较难,所以我弄了几个简单版本。 -actors.mobs.npcs.ghost.crab_1=你好,%s…曾经我像你一样——既强大又自信…但我被一个古老的生物杀死了…我不能离开这个地方……直到我完成我的复仇…杀死_巨钳螃蟹_,就是它夺走了我的生命…\n\n它经历了无数岁月的洗礼…有一个巨大的蟹钳和非常厚重的蟹壳…_小心它的蟹钳,你必须偷袭这只巨蟹否则它会用钳子格挡你的攻击..._ -actors.mobs.npcs.ghost.crab_2=拜托帮助我……杀了那个甲壳类……\n\n_如果它发现你……就会挡住你所有的攻击……_ -actors.mobs.npcs.ghost.def_verb=闪避 -actors.mobs.npcs.ghost.desc=这个幽灵几乎不能被看见。它看起来像是由一片无形的昏暗光斑和一张悲痛的面孔所组成的。 -actors.mobs.npcs.ghost.find_me=悲伤幽灵:谢谢你...来找我吧... -actors.mobs.npcs.ghost.gnoll_1=你好,%s…曾经我像你一样——既强大又自信…但我被一个狡猾的敌人杀死了…我不能离开这个地方……直到我完成我的复仇…杀死_豺狼猎手_,就是它夺走了我的生命…\n\n它与其他豺狼人不同…它会隐藏自己并使用投掷武器… _小心它的毒镖和火镖,尽量靠近它…_ -actors.mobs.npcs.ghost.gnoll_2=请帮助我……杀了那个诡诈的家伙……\n\n_别让它打到你……离它越近越好……_ -actors.mobs.npcs.ghost.name=悲伤幽灵 -actors.mobs.npcs.ghost.rat_1=你好,%s…曾经我像你一样——既强大又自信…但我被一个邪恶的野兽杀死了…我不能离开这个地方……直到我完成我的复仇…杀死_腐臭老鼠_,就是它夺走了我的生命…\n\n它就在这层…四处散播污秽…_小心它的周边的臭云以及带有腐蚀性的撕咬,它产生的粘液可溶于水…_ -actors.mobs.npcs.ghost.rat_2=请帮助我…杀了那个令人憎恶的东西…\n\n_在水附近与它战斗…躲开它的恶臭…_ -actors.mobs.npcs.hatesokoban.desc=这是一个对发芽改有贡献的玩家,同时也是小马的爱好者。 -actors.mobs.npcs.hatesokoban.name=讨厌的羊关 -actors.mobs.npcs.hatesokoban.yell1=你明白这是个游戏对吧,对吧。我需要完整的中文版发芽改,而不是这个半成品。 -actors.mobs.npcs.hatesokoban.yell2=关于招羊法杖,虽然绝大部分时候没什么用,但是它能很好解决推箱关的难题。 -actors.mobs.npcs.hbb.desc=破碎地牢的翻译者之一,同时也是像素地牢吧的吧主,小马的爱好者。 -actors.mobs.npcs.hbb.name=工会主席-巨无霸卡比 -actors.mobs.npcs.hbb.yell1="The-world's-still-the-same, there's-just...less-in-it." -actors.mobs.npcs.hbb.yell2="Friendship-is-magic!" -actors.mobs.npcs.hbb.yell3="I-am-a-magical-princess-from-another-dimension." -actors.mobs.npcs.hexa.desc=UNIST地牢的作者。UNIST地牢还行,只是只有看韩文你才能理解里面的梗。 -actors.mobs.npcs.hexa.name=UNIST HeXA -actors.mobs.npcs.hexa.yell1=我是UNIST地牢的制作者。我觉得你应该没听说过这个mod。 -actors.mobs.npcs.hexa.yell2=目前我只在韩国发布了这个地牢mod。 - -actors.mobs.npcs.imp.cya=再会, %s! -actors.mobs.npcs.imp.def_verb=闪避 -actors.mobs.npcs.imp.desc=小恶魔是一种低等恶魔。它们既没有强大的力量也没有魔法天赋,但他们相当聪明而且善于交际。许多小恶魔都喜欢生活在没有其他恶魔存在的地方。 -actors.mobs.npcs.imp.golems_1=你是个冒险家吗?我爱冒险家!如果有什么东西需要被解决的话,他们永远都能把活干好。我说的对吗?当然是在有赏金的前提下 ;)\n总之,我需要你杀一些_魔像_。你看,我要在这里开始搞点小本生意,但这些愚蠢的傀儡只会毁掉我的生意!跟这些发着光的大个子花岗岩根本没法交流,真是该死!所以请,杀死……我想想,_6个魔像_,然后奖励就是你的了。 -actors.mobs.npcs.imp.golems_2=魔像猎杀得怎么样了?你已经击杀了_6只魔像_了吗? -actors.mobs.npcs.imp.hey=这儿, %s! - -actors.mobs.npcs.imp.monks_1=是个冒险家吗?我爱冒险家!如果有什么东西需要被解决的话,他们永远都能把活干好。我说的对吗?当然是在有赏金的前提下 ;)\n总之,我需要你杀一些_武僧_。你看,我要在这里开始搞点小本生意,但这些疯子不买任何东西还会吓跑顾客。所以请,杀死……我想想,_8个武僧_,然后奖励就是你的了。 -actors.mobs.npcs.imp.monks_2=喔,你还活着!我就知道你得功夫很好;) 只要别忘了拿来那些武僧的标记就好,我需要_8个标记_。 -actors.mobs.npcs.imp.name=野心勃勃的小恶魔 -actors.mobs.npcs.impshopkeeper.desc=小恶魔是一种低等恶魔。它们既没有强大的力量也没有魔法天赋,但他们相当聪明而且善于交际。许多小恶魔都喜欢生活在没有其他恶魔存在的地方。 -actors.mobs.npcs.impshopkeeper.greeting2=所以...你并没有找到Amulet护符,对吧。这样吧,我把那位客人留下的东西给你吧 ,他可能知道些什么。相对的我要收一点小费。 -actors.mobs.npcs.impshopkeeper.greeting=你好, %s!请随便挑选吧。但是其他的那些高价的东西非卖品,是一位客人留下的。 -actors.mobs.npcs.impshopkeeper.name=野心勃勃的小恶魔 -actors.mobs.npcs.jinkeloid.desc=这是mispd作者所创建的镜像。mispd作者同时也是破碎地牢的中文审核者。 -actors.mobs.npcs.jinkeloid.name=公会会长Jinkeloid -actors.mobs.npcs.jinkeloid.yell1=现在工会不对外营业,当然欢迎你们前来参观。 -actors.mobs.npcs.jinkeloid.yell2=你知道冰冻效果吗,它能控制住目标并使其受到更多的伤害。 -actors.mobs.npcs.juh9870.desc=月光地牢的制作者。 -actors.mobs.npcs.juh9870.name=Juh9870 -actors.mobs.npcs.juh9870.yell1=我记得我的祖父曾在月光下对我说过,严禁空想,脚踏实地。 -actors.mobs.npcs.juh9870.yell2=所以...我希望我能在这找到更多有意义的东西。 -actors.mobs.npcs.laji.desc=这是一个祭师,同时也是小镇的维修者。 -actors.mobs.npcs.laji.name=原罪学者-司徒 -actors.mobs.npcs.laji.yell1=这位客人,能不能让我耽误你一点时间讲一讲我们的天父克苏鲁。 -actors.mobs.npcs.laji.yell2=梦与白昼者所知晓之诸多事物常为梦于黑夜者所忘却。 -actors.mobs.npcs.laji.yell3=另外...维护这个小镇很累的...... -actors.mobs.npcs.lery.desc=破碎地牢的翻译者之一,同时也是最早期像素地牢更新日志的翻译者之一。 -actors.mobs.npcs.lery.name=驯兽师-论坛修齐 -actors.mobs.npcs.lery.yell1=你足够冷酷吗? -actors.mobs.npcs.lery.yell2=我这里出售各种蛋。如果你是一个出色的训练家的话,你也可以训练出像我那么强大的怪物的。 -actors.mobs.npcs.locastan.desc=哥布林地牢的制作者。他相当喜欢哥布林这部漫画。神灯是释放地牢的标志。 -actors.mobs.npcs.locastan.name=Locastan -actors.mobs.npcs.locastan.yell1=这个门被锁住了...这个房间肯定不止一个门...没准我可以打开它... -actors.mobs.npcs.locastan.yell2=嘿,这可不是什么废铁,这是一件非常有用的工具。 -actors.mobs.npcs.locastan.yell3=只要我能释放这个神灯的力量,我的世界就会更加精彩纷呈。 -actors.mobs.npcs.lyn.desc=破碎地牢的翻译者之一,是个脚男。 -actors.mobs.npcs.lyn.name=受咒ankh -actors.mobs.npcs.lyn.yell1=燃烧!净化!为了萨格拉斯的伟大远征! -actors.mobs.npcs.lyn.yell2=来杯魔能饮料吗?哦,你想知道宠物吃什么吗?想想它们是什么,是常规生物还是奇幻事物,是素食还是肉食。当然,没有宠物可以拒绝口粮,那是特制的。 -actors.mobs.npcs.lynn.desc=十分出色的符文研究者,对各种派系的魔法都有研究。其中最为出色的研究就是多利亚出产的魔法石。 -actors.mobs.npcs.lynn.name=符文学者-莲恩 -actors.mobs.npcs.lynn.yell1=我已经修好了这个合成台,现在你应该可以使用魔法石合成武器了。 -actors.mobs.npcs.lynn.yell2=我的下一个研究目标应该是什么呢? - -actors.mobs.npcs.memoryofsand.desc=这是一个对发芽改有重大贡献的玩家。 -actors.mobs.npcs.memoryofsand.name=义往尘沙 -actors.mobs.npcs.memoryofsand.yell1=嗨,酒馆现在开放了。随便选个食物尝尝吧。 -actors.mobs.npcs.memoryofsand.yell2=原来我也是个冒险者,直到我试了试发芽改... -actors.mobs.npcs.mirrorimage.desc=这个幻象和你非常相似,但它更加黯淡且在微微震颤。 -actors.mobs.npcs.mirrorimage.name=镜像 -actors.mobs.npcs.nyrds.desc=混合地牢的制作者???一个带墨镜的白牙肌肉块。 -actors.mobs.npcs.nyrds.name=Nyrdie -actors.mobs.npcs.nyrds.yell1=嘿,我是nyrdie -actors.mobs.npcs.nyrds.yell2=美牙建议:不要忘了每天早上刷牙哦! -actors.mobs.npcs.oldnewstwist.desc=一个豺狼流浪者,看来豺狼一族里面也是有纷争的。 -actors.mobs.npcs.oldnewstwist.desc_gnollmission=既然他已经有衣服穿了,他已经可以做一些其他事了。 -actors.mobs.npcs.oldnewstwist.name=Oldnewstwist -actors.mobs.npcs.oldnewstwist.yell1=啊!别伤害我,我和那群邪恶的豺狼人不一样。 -actors.mobs.npcs.oldnewstwist.yell2=我试图在我所在的部落宣扬和平,虽然有些居民支持我,但是掌权者却把我赶出了部落,还剃光了我的体毛。 -actors.mobs.npcs.oldnewstwist.yell3=嗯呐...我感觉有点冷,你能帮我找件衣服吗? -actors.mobs.npcs.oldnewstwist.yell4=我听说你击败了豺狼王,你真的太厉害了!你有没有找到什么东西 可以穿上保暖的那种? -actors.mobs.npcs.oldnewstwist.yell5=我对你非常感谢。你的强大,善良,智慧,令我钦佩。 -actors.mobs.npcs.oldnewstwist.yell6=哦,我这里卖各种特殊武器。它们来自于其他时间。 -actors.mobs.npcs.otilukenpc.desc=Otiluke,一位极具天赋的巫师。 他做了许多事情。其中之一就是带走了Amulet护符。 -actors.mobs.npcs.otilukenpc.name=Otiluke -actors.mobs.npcs.otilukenpc.yell1=我们终于相见了,同时我重新看到了热闹的家乡,就和我小时候一样。 -actors.mobs.npcs.otilukenpc.yell2=我十分感谢你的所作所为。我会把你引荐到高塔的。 -actors.mobs.npcs.otilukenpc.yell3=好吧,我知道你要什么。Amulet护符现在被封印在高塔里面,没法拿出来了。但是我可以给你一个仿制品,它和Amulet护符功能一样。 -actors.mobs.npcs.raintrainer.desc=这是一个早期的计划npc,但是他并没有加入到游戏中。现在,他准备好了。 -actors.mobs.npcs.raintrainer.name=训练家Rain -actors.mobs.npcs.raintrainer.yell1=训练家只要眼神对上了就要战...抱歉说错了。 -actors.mobs.npcs.raintrainer.yell2=你可以用那个稻草人练手,不用担心,它很结实。 -actors.mobs.npcs.ratking.desc=这个老鼠比一般的大一些而且头上带着一个小王冠。 -actors.mobs.npcs.ratking.desc_festive=这个老鼠比一般的大一些。它头上带着一个小圣诞帽而不是通常戴着的王冠。节日快乐! -actors.mobs.npcs.ratking.havefun=干的不错,小子,我家的餐器好不好用啊? -actors.mobs.npcs.ratking.name=鼠王 -actors.mobs.npcs.ratking.not_sleeping=我可没在睡觉! -actors.mobs.npcs.ratking.not_takeing=离我的宝箱远点! -actors.mobs.npcs.ratking.thanks=看来你不是那种贪婪的冒险者啊。那好,我告诉你:近来一些蓝色的家伙频繁过来偷窃。找到并杀死它们,它们偷走的东西就是你的了。 -actors.mobs.npcs.ratking.what_is_it=你这是想干什么?我可没时间管这些破事。我的王国可不会自己运转下去!!! -actors.mobs.npcs.ratking.why=都是些不值钱的东西,你拿去好了 -actors.mobs.npcs.ratkingden.desc=这就是之前你见过的鼠王。 -actors.mobs.npcs.ratkingden.desc_festive=这就是之前你见过的戴圣诞帽的鼠王。节日快乐! -actors.mobs.npcs.ratkingden.name=天狗匿藏处的匿藏鼠王 -actors.mobs.npcs.ratkingden.not_sleeping=哦,差点,我都快睡去了。 -actors.mobs.npcs.ratkingden.what_is_it=你小子干的不错,这里的宝物随便拿吧。 - -actors.mobs.npcs.rennpc.desc=这是東方地下城的作者。虽说原来是基于破碎的材质版本,但他非常勤奋的更新使得東方地下城升级成独特的MOD。 -actors.mobs.npcs.rennpc.name=穿越者REN -actors.mobs.npcs.rennpc.yell1=秘封病...那是什么? -actors.mobs.npcs.rennpc.yell2=沁人心脾的麦芽味,只在九月,一切都如此令人那么地陶醉。 -actors.mobs.npcs.rennpc.yell4=我喜欢酒品:啤酒,白酒,清酒...无论是烈性酒还是低度酒,我仍然都保持着对它们的热衷。 -actors.mobs.npcs.rennpc.yell5=你居然完成了这些挑战里面的隐藏任务,真是了不起。这把东方地牢的特殊武器就送给你了,不要忘了支持我的东方地牢哦。 -actors.mobs.npcs.rennpc.yell3=第一次见面啊...我是REN。你应该看到我给你留下的信息了吧。带上这个,它可以复原并模拟传送道具的魔力。 - -actors.mobs.npcs.rustyblade.desc=混合地牢的翻译者之一,同时也是破碎地牢翻译的协助者。 -actors.mobs.npcs.rustyblade.name=战斗大师-无聊 -actors.mobs.npcs.rustyblade.yell1=嗨,我是无聊,为什么我在这儿。 -actors.mobs.npcs.rustyblade.yell2=攻击提升,攻击下降,防御提升,防御下降,你见过这些buff吗? -actors.mobs.npcs.sadsaltan.desc=月光地牢的绘图者。标识有“月光”的名牌挂在他的胸前。 -actors.mobs.npcs.sadsaltan.name=SadSaltan -actors.mobs.npcs.sadsaltan.yell1=哦,难得一见的新的探险者。人们来这里就是为了寻找财宝的,没有富人会无聊到来这个地方。 -actors.mobs.npcs.sadsaltan.yell2=我在其他地方开设着一个酒吧,我是过来宣传它的。想找到那里十分容易,只要对卫兵说“月光”他就会为你带路。 -actors.mobs.npcs.sadsaltan.yell3=收下我的名片,以后你到那里的时候没准我可以请你喝一杯。 -actors.mobs.npcs.seekingbombnpc.desc=这个东西会在目标面前爆炸 -actors.mobs.npcs.seekingbombnpc.name=追猎炸弹 -actors.mobs.npcs.seekingclusterbombnpc.desc=这个大东西会在目标面前爆炸 -actors.mobs.npcs.seekingclusterbombnpc.name=巨型追猎炸弹 -actors.mobs.npcs.sfb.desc=破碎地牢的翻译者之一。 -actors.mobs.npcs.sfb.hello=看我! -actors.mobs.npcs.sfb.name=流浪法师-破碎暴风火杖 -actors.mobs.npcs.sfb.yell1=打牌吗,跑团吗,带我一个带我一个。 -actors.mobs.npcs.sfb.yell2=火属性是最具有破坏力的属性。它的输出也是最高的 -actors.mobs.npcs.sheep.baa!=咩! -actors.mobs.npcs.sheep.baa...=咩…… -actors.mobs.npcs.sheep.baa.=咩。 -actors.mobs.npcs.sheep.baa?=咩? -actors.mobs.npcs.sheep.desc=这是一只魔法绵羊。为什么叫它魔法绵羊?因为你杀不死它。它只会站在那里直到它消失,它会做的事情只有边反刍边对你翻白眼。 -actors.mobs.npcs.sheep.name=绵羊 -actors.mobs.npcs.sheepsokoban.desc=你可以将这个箱子按车的移动方式推动。 -actors.mobs.npcs.sheepsokoban.name=车行箱 -actors.mobs.npcs.sheepsokobanblack.desc=当你触发这个箱子时,它能覆盖随机的一个破坏陷阱。 -actors.mobs.npcs.sheepsokobanblack.name=爆破箱 -actors.mobs.npcs.sheepsokobancorner.desc=你可以将这个箱子按皇后的移动方式推动。 -actors.mobs.npcs.sheepsokobancorner.name=皇后箱 -actors.mobs.npcs.sheepsokobanstop.baa!=咩! -actors.mobs.npcs.sheepsokobanstop.baa...=咩…… -actors.mobs.npcs.sheepsokobanstop.baa.=咩。 -actors.mobs.npcs.sheepsokobanstop.baa?=咩? -actors.mobs.npcs.sheepsokobanstop.desc=这个箱子已经变成一只羊了。你现在没法推动它了。 -actors.mobs.npcs.sheepsokobanstop.name=羊箱 -actors.mobs.npcs.sheepsokobanswitch.desc=你可以与这个箱子交换位置。 -actors.mobs.npcs.sheepsokobanswitch.name=交换箱 -actors.mobs.npcs.shopkeeper.desc=这家伙会出现在任何可以赚钱的地方。无论那里有多么危险。 -actors.mobs.npcs.shopkeeper.name=黑市商人 -actors.mobs.npcs.shopkeeper.sell=选择一件要出售的物品 -actors.mobs.npcs.sp931.desc=破碎地牢的翻译者之一。虽然我对他了解不多,但是目前他人对他的评价呈两级分化状态。 -actors.mobs.npcs.sp931.name=被放逐者-931451545 -actors.mobs.npcs.sp931.yell1=嘿,还在看空洞无聊的文本贴图吗,来试试我的蓝猫地牢吧。 -actors.mobs.npcs.sp931.yell2=人生如果不装B的话还有什么意思呢? -actors.mobs.npcs.stormandrain.desc=这是一个对发芽改有重大贡献的玩家。 -actors.mobs.npcs.stormandrain.name=雷雨交加 -actors.mobs.npcs.stormandrain.yell1=嗨,需要买些密宝吗。这些可是高级货。 -actors.mobs.npcs.stormandrain.yell2=严格意义上我并不属于人类...但没人规定只有人类才能当财宝猎人。 -actors.mobs.npcs.tempest102.desc=破碎地牢的翻译者之一,同时也是搞音乐的。 -actors.mobs.npcs.tempest102.name=音乐家tempest102 -actors.mobs.npcs.tempest102.yell1=原来我只搭了个帐篷,但现在我有了自己的商店。 -actors.mobs.npcs.tempest102.yell2=欢迎光临我的乐器工作室。想买点什么吗? -actors.mobs.npcs.tinkerer1.desc=一名来自多利亚的研究者。他在等待什么东西上门。 -actors.mobs.npcs.tinkerer1.name=露珠研究者 -actors.mobs.npcs.tinkerer1.tell1=找到什么有意思的了吗? -actors.mobs.npcs.tinkerer1.tell2=这里真的是研究露珠的好地方。 -actors.mobs.npcs.tinkerer2.desc=居住在多利亚的研究者之一,对多利亚的矿石特产有着强烈的兴趣。但是因为矿洞的封锁不得不出门去研究其他事物。 -actors.mobs.npcs.tinkerer2.name=符文学者—莲恩 -actors.mobs.npcs.tinkerer2.tell1=我想不同种类的魔法之间肯定有什么联系...没准某种东西可以帮助我。 -actors.mobs.npcs.tinkerer3.desc=一名来自多利亚的研究者。他还在等待什么东西上门。 -actors.mobs.npcs.tinkerer3.name=露珠研究者 -actors.mobs.npcs.tinkerer3.tell1=找到什么有意思的了吗? -actors.mobs.npcs.tinkerer3.tell2=这里真的是研究露珠的好地方。 -actors.mobs.npcs.tinkerer4.desc=小镇的镇长,著有chancel一书。因为经济萧条所以工作十分轻松。 -actors.mobs.npcs.tinkerer4.name=镇长Noodlemire -actors.mobs.npcs.tinkerer4.tell1=哦,欢迎来到这个小镇。容我介绍一下,我是这个小镇的镇长。这里以前还是一个著名景点,但现在就完全不行了。 -actors.mobs.npcs.tinkerer4.tell2=东边的那幢屋子是一个私人工会,东南方是鱼塘和墓地,西南方是矿洞遗址,西方是武器商店,西北方是杂货店,西方是酒馆,东北方是一间在建旅馆,正中心是教堂。如果你想问居民睡哪里的话,我只能说无可奉告。 -actors.mobs.npcs.tinkerer5.desc=一名勘探小镇地质的家伙,他人很好。 -actors.mobs.npcs.tinkerer5.name=地质勘探员Xavier251998 -actors.mobs.npcs.tinkerer5.tell1=我正在做一个课题,研究地壳变动和人为开矿的关系。可惜的是矿洞遗址里面有条龙再那,我没法进入矿洞查看。 -actors.mobs.npcs.tinkerer5.tell2=据说小镇曾经有过辉煌的时候,大量的魔法矿石出口并给小镇带来可观的收入。但这一切已经结束了。 -actors.mobs.npcs.tinkerer5.tell3=你该不会饿了吧,拿上这块肉,伙计。 -actors.mobs.npcs.typedscroll.desc=LCPD的制作者。虽然他的确有不错的编程能力,但是他的没有仔细考虑程序总会有许多bug。 -actors.mobs.npcs.typedscroll.name=TypedScroll -actors.mobs.npcs.typedscroll.yell1=嘿,为什么我长成这样,为什么和我说话,我不知道该和你说什么。 -actors.mobs.npcs.typedscroll.yell2=LCPD已经上架谷歌商店啦,快去下载吧! -actors.mobs.npcs.udawos.desc=先锋的制作者。先锋是以像素地牢的源代码制作的。 -actors.mobs.npcs.udawos.name=Udawos -actors.mobs.npcs.udawos.yell1=我的新游戏叫做chernog:FOMTMA。你可以在网上下载这个游戏。 -actors.mobs.npcs.udawos.yell2=先锋不同于传统地牢游戏,它是一个rpg游戏,和塞尔达传说1类似。 -actors.mobs.npcs.wandmaker.berry_1=啊,在这种地方遇到一个体面的人是多么惊喜!我来这里是为了寻找一样稀有的材料——一个腐莓种子。作为一个施法者,我可以轻易地对付这里的怪物,但我迷路了,而且魔法盾也在逐渐减弱,好尴尬!也许你能够帮助我?为了报答你的工作,我很愿意给你一把我制作的高质量法杖。 -actors.mobs.npcs.wandmaker.berry_2=腐莓找的怎么样了,%s?没有?不用担心,我不着急。 -actors.mobs.npcs.wandmaker.desc=这位老先生的表情看起来十分困扰。他正在被一个力场盾牌保护着。 -actors.mobs.npcs.wandmaker.dust_1=啊,在这种地方遇到一个体面的人是多么惊喜!我来这里是为了寻找一样稀有的材料——尸骨灰烬。它可以在遗骸中被收集,其中有很强的诅咒。作为一个施法者,我可以轻易地对付这里的怪物,但我迷路了,而且魔法盾也在逐渐减弱,好尴尬!也许你能够帮助我?为了报答你的工作,我很愿意给你一把我制作的高质量法杖。 -actors.mobs.npcs.wandmaker.dust_2=尸骨灰烬找的怎么样了,%s?没有?遗骸应该是最有价值寻找的地方。 -actors.mobs.npcs.wandmaker.name=法杖制作者 -actors.mobs.npcs.watabou.desc=像素地牢的创造者。 -actors.mobs.npcs.watabou.name=Watabou -actors.mobs.npcs.watabou.yell1=为什么不试试我的其他游戏呢? -actors.mobs.npcs.watabou.yell2=像素地牢现在停止更新了...... - -actors.mobs.npcs.kostis12345.name=秘书kostis12345 -actors.mobs.npcs.kostis12345.desc=小镇的秘书,负责小镇宣传以及其他杂物。偶尔高层也会让她出去考察实习。 -actors.mobs.npcs.kostis12345.yell1=你看见过我们的镇长了吗?我们还有许多事情要做。 -actors.mobs.npcs.kostis12345.yell2=如果你对这一切有疑问的话,你可以在pixeldungeon.wikia.com寻找SpeciaSurprisePixelDungeon.还等什么,赶紧上船吧! - -actors.mobs.npcs.hmdzl001.name=hmdzl001 -actors.mobs.npcs.hmdzl001.desc=这个游戏的缔造者,同时也是一位玩家。 -actors.mobs.npcs.hmdzl001.yell1=欢迎,这是为2019春节专门准备的地图,但是现在是2020年啦,我就随便改造一下好了。 -actors.mobs.npcs.hmdzl001.yell2=看到我养的猫了吗,它叫椰子。它很可爱,虽然它并不是一只真猫,你懂的吧...它是机器做的。 -actors.mobs.npcs.hmdzl001.yell3=2020春节快乐。现在就算不是春节这里也会持续开放。 - -actors.mobs.npcs.coconut2.name=椰子 -actors.mobs.npcs.coconut2.desc=由hmdzl所创造的一只生物...大概。 -actors.mobs.npcs.coconut2.yell1=一年过去了...但我的货是不会缩水的。 -actors.mobs.npcs.coconut2.yell2=讲道理啊,人员引进和安排都是由我处理的,也不给我放个假什么的。 -actors.mobs.npcs.coconut2.yell3=之后的计划???谁知道之后会发生什么呢。 - -actors.mobs.npcs.newplayer.name=你 -actors.mobs.npcs.newplayer.desc=??? -actors.mobs.npcs.newplayer.yell1=这是你。 -actors.mobs.npcs.newplayer.yell2=这就是你。 - -actors.mobs.npcs.thanklist.name=感谢名单 -actors.mobs.npcs.thanklist.yell1=以及所有游玩这个游戏的玩家。 -actors.mobs.npcs.thanklist.desc=朴实无华的感谢列表。 - -actors.mobs.npcs.arealman.name=炼金矮人 -actors.mobs.npcs.arealman.desc=工会中的一个奇特的存在,擅长炼金术和收藏独立游戏。 - -actors.mobs.npcs.whiteghost.name=白幽妹 -actors.mobs.npcs.whiteghost.yell1=我很高兴还有人记得我。 -actors.mobs.npcs.whiteghost.desc=由于高塔的实验,她已经失去了原有的形体。 - -actors.mobs.npcs.uncles.name=斯堡罗提德大叔 -actors.mobs.npcs.uncles.yell1=小子,想和我锻炼一下吗 -actors.mobs.npcs.uncles.desc=工会里的力士,是个猛男。 - -actors.mobs.npcs.apostle.name=apostle -actors.mobs.npcs.apostle.yell1=只有,魔法,才能,战胜,魔法。 -actors.mobs.npcs.apostle.desc=一个闪着光芒的立方体,发声机械而又有磁性,可能是其他世界的测试者。 - -actors.mobs.npcs.shower.name=shower -actors.mobs.npcs.shower.yell1=初次见面,我是shower。你也可以叫我沐沐。虽然两个叫法都行,但是叫我沐沐我会更开心的。 -actors.mobs.npcs.shower.yell2=看到东边的池塘了吗?我想你可以在那洗澡...前提在那养鱼之前。 -actors.mobs.npcs.shower.yell3=这是个很棒的小镇,有很多很好的人,我想我会在这玩上一段时间。没准会碰上熟人呢。 -actors.mobs.npcs.shower.desc=指虎教派的成员之一,来这里测试新的指虎武器。 - -actors.mobs.npcs.saidbysun.name=阳说 -actors.mobs.npcs.saidbysun.yell1=我想下一步应该这么做...等等,我搞错了... -actors.mobs.npcs.saidbysun.yell2=他们叫我帮忙测试,我就来这儿了...哦我什么都没说... -actors.mobs.npcs.saidbysun.desc=一只猫,用不安的眼神盯着旁边的炼金设备。没准那里有它讨厌的食物。 - -actors.mobs.npcs.honeypoooot.name=蜜蜂罐罐 -actors.mobs.npcs.honeypoooot.yell1=看见那边的那只黑猫了吗,它是我的头儿。 -actors.mobs.npcs.honeypoooot.yell2=这件蜂蜜袍子很好看?拜托这是兜帽唉。 -actors.mobs.npcs.honeypoooot.desc=一个老练的冒险者,是工会主席的助手,负责帮忙处理各种工会任务,包括各类新道具的测试。 - -actors.mobs.npcs.millilitre.name=millilitre isaac -actors.mobs.npcs.millilitre.yell1=不要管我,让我静静。 -actors.mobs.npcs.millilitre.yell2=这个世界太可怕了...妈妈...我想回家... -actors.mobs.npcs.millilitre.desc=因为意外来到这里的测试者之一,他被吓得不轻。 - -actors.mobs.npcs.goblinplayer.name=神盾哥布林 -actors.mobs.npcs.goblinplayer.yell1=这个世界蛮不错,但比起哥布林族的试炼来说还是太简单了。 -actors.mobs.npcs.goblinplayer.yell2=看见这块盾牌了吗,这是神盾。我们教派的支柱。 -actors.mobs.npcs.goblinplayer.desc=一个参加测试的哥布林,他手里拿着一块炫彩盾牌。 - -actors.mobs.npcs.dreamplayer.name=小萌新大梦想 -actors.mobs.npcs.dreamplayer.yell1=要比比看,谁更滑稽吗? -actors.mobs.npcs.dreamplayer.yell2=圆润地滑稽走。 -actors.mobs.npcs.dreamplayer.desc=一团七彩元素,是一个测试产物。 - -actors.mobs.npcs.nutpainter.name=坚果教教主 -actors.mobs.npcs.nutpainter.yell1=坚果nb!!! -actors.mobs.npcs.nutpainter.yell2=坚果万岁!! -actors.mobs.npcs.nutpainter.desc=一个测试画家,十分喜欢画坚果。 - -actors.mobs.npcs.xixizero.name=西西0.12 -actors.mobs.npcs.xixizero.yell1=你好啊,我是黑暗地牢的制作者。你也可以叫我Egoal。 -actors.mobs.npcs.xixizero.desc=黑暗地牢的制作者。 - -actors.mobs.npcs.afly.name=阿飞,阿比和阿比斯 -actors.mobs.npcs.afly.yell1=你好啊,我是阿飞,旁边两个分别是阿比和阿比斯。 -actors.mobs.npcs.afly.desc=不思议地牢的制作者 - -actors.mobs.npcs.omicronrg9.name=Ømicrónrg9 -actors.mobs.npcs.omicronrg9.yell1=别挡道,伙计!我可没时间弄些杂七杂八的事情,mod表可是不会自己生成的。 -actors.mobs.npcs.omicronrg9.yell2=食人鱼这种这种生物是在是太棒了,它们能轻易撕碎各种动物,特别是没有外壳的。 -actors.mobs.npcs.omicronrg9.yell3=你知道吗,在所有像素地牢的衍生mod中,超过24种是以p字母打头的。 -actors.mobs.npcs.omicronrg9.yell4=为了更好地寻找和收集mod,我把我的一只眼睛换成了钛合金电子眼。这很酷,也很值得。 -actors.mobs.npcs.omicronrg9.yell5=希望这东西...无论在哪,依然是个幻象。 -actors.mobs.npcs.omicronrg9.yell6=这个世界包容了超过9个不同世界的不同产物,真出乎我的意料! -actors.mobs.npcs.omicronrg9.desc=这个看上去像十字军战士的长发男子,是一个研究平行世界的学者。他正在收集这个世界的信息的时候受到了来自高塔的邀请,在蜜蜂罐罐的引导下来的这个世界,并和这个世界的其他人分享关于其他世界的信息。由于看上去有些失眠,所以他可能有攻击性。 - -actors.mobs.npcs.ice13.name=佣兵-寒雾十三 -actors.mobs.npcs.ice13.yell1=你好,我叫寒雾十三,是一位普普通通的佣兵,如果我没记错的话,我们不是第一次见面,对吧? -actors.mobs.npcs.ice13.yell2=我的配色很奇怪吗?呵,这只是三原色而已。 -actors.mobs.npcs.ice13.yell3=记住,拥抱过去,创造未来。 -actors.mobs.npcs.ice13.yell4=为这个世界的造物主——坚果欢呼吧,坚果是至高无上的神! -actors.mobs.npcs.ice13.yell5=元素没有正邪之分,但它的使用者有。 -actors.mobs.npcs.ice13.yell6=这个世界依旧存在一些差错,但它至少不会搞出一只黑色的野兽。 -actors.mobs.npcs.ice13.desc=一个看上去有点神经质的术士,他依靠着一张损坏的多利亚小镇的地图和蜂蜜罐罐的指引来到了这里,他待在这里的目的是为了让这里更加——按他的说法——混乱。 - -actors.mobs.npcs.Sharku2011.desc=吗...一个不愿授权的韩国开发者。 -actors.mobs.npcs.Sharku2011.name=守财奴Sharku2011 -actors.mobs.npcs.Sharku2011.yell1=这些财宝都是我的,给我滚远点! -actors.mobs.npcs.Sharku2011.yell2=没人可以动我的财宝! - diff --git a/resources/com/hmdzl/spspd/change/messages/items/items.properties b/resources/com/hmdzl/spspd/change/messages/items/items.properties deleted file mode 100644 index 8604f52e..00000000 --- a/resources/com/hmdzl/spspd/change/messages/items/items.properties +++ /dev/null @@ -1,2263 +0,0 @@ -###glyphs -items.armor.glyphs.iceglyph.name=%s of snowhouse -items.armor.glyphs.iceglyph.desc=This glyph is able to store damage dealt to the wearer, dealing it to them slowly rather than all at once. It also can freezes your enemies on hit and make you resistant to frost. -items.armor.glyphs.iceglyph.deferred=deferred %d -items.armor.glyphs.iceglyph$defereddamage.name=Deferred damage -items.armor.glyphs.iceglyph$defereddamage.ondeath=The deferred damage killed you... -items.armor.glyphs.iceglyph$defereddamage.desc=While your armor's glyph has protected you from damage, it seems to be slowly paying you back for it.\n\nDamage is being dealt to you over time instead of immediately. You will take one damage per turn until there is no damage left.\n\nDeferred damage remaining: %d. - -items.armor.glyphs.fireglyph.name=%s of firecover -items.armor.glyphs.fireglyph.desc=This glyph can burn your enemies on hit and decrease damage from fire. It also can improve your damage sometimes. - -items.armor.glyphs.earthglyph.name=%s of breakrock -items.armor.glyphs.earthglyph.desc=This glyph can make you resistant to earth magic, It also can improve your defense an stun your enemies on hit. - -items.armor.glyphs.electricityglyph.name=%s of electricweb -items.armor.glyphs.electricityglyph.desc=This glyph can shock your enemies on hit and give you lightning resistance. It also can giving a small amount of charge to the wearer's wands. - -items.armor.glyphs.lightglyph.name=%s of holyguard -items.armor.glyphs.lightglyph.desc=This glyph can make you resistant to light magic, It also can manipulates the mind of attackers, charming them temporarily. - -items.armor.glyphs.darkglyph.name=%s of shadow -items.armor.glyphs.darkglyph.desc=This glyph can make you resistant to dark magic, It also can harm your enemies on hit and providing a boost of healing to you, - -items.armor.glyphs.revivalglyph.name=%s of revival -items.armor.glyphs.revivalglyph.revival=Revival glyph revival you from death. -items.armor.glyphs.revivalglyph.desc=This glyph may save you from death with a certain chance. - -items.armor.glyphs.changeglyph.name=%s of change -items.armor.glyphs.changeglyph.desc=This glyph have chance to create a mirror from user, and help him away from dangerous. - -items.armor.glyphs.crystalglyph.name=%s of crystal -items.armor.glyphs.crystalglyph.desc=This glyph can give glass shield to user. - -items.armor.glyphs.testglyph.name=%s of testpaint -items.armor.glyphs.testglyph.desc=This glyph have chance to create some dangerous gas for enemy on hit. - -items.armor.glyphs.adaptglyph.name=%s of adapt -items.armor.glyphs.adaptglyph.desc=This glyph can help user survival from battle, based on his environment. - -items.armor.glyphs.recoilglyph.name=%s of recoil -items.armor.glyphs.recoilglyph.desc=This glyph rebounds force against attackers, sending them flying back and causing them to slowly bleed based on the damage they deal. - -###armor -items.armor.normalarmor.normalarmor.stats_known=This _tier-%1$d_ armor blocks _%2$d-%3$d damage_ and requires _%4$d strength_ to use properly. -items.armor.normalarmor.normalarmor.stats_known2=This armor dex is _%1$s_ , stealth is _%2$s_ , energy base is _%3$d_ . -items.armor.normalarmor.normalarmor.stats_unknown=Typically this _tier-%1$d_ armor blocks _%2$d-%3$d damage_ and requires _%4$d strength_ to use properly. -items.armor.normalarmor.normalarmor.too_heavy=Probably this armor is too heavy for you. -items.armor.normalarmor.normalarmor.incompatible=Interaction of different types of magic has erased the glyph on this armor! -items.armor.normalarmor.normalarmor.cursed_worn=Because this armor is cursed, you are powerless to remove it. -items.armor.normalarmor.normalarmor.cursed=You can feel a malevolent magic lurking within this armor. -items.armor.normalarmor.normalarmor.inscribed=It is inscribed, %s -items.armor.normalarmor.normalarmor.stats_desc= - -items.armor.armor$glyph.glyph=glyph - -items.skills.classskill.charge=Cooldown: %d. -items.skills.classskill.name=class skill - -items.skills.mageskill.name=mage robe -items.skills.mageskill.ac_special=MOLTEN EARTH -items.skills.mageskill.ac_special_two=ARCANE BOMBING -items.skills.mageskill.prompt2=choose a target -items.skills.mageskill.ac_special_three=ICE STORM -items.skills.mageskill.ac_special_four=LIGHTNING ARRESTER -items.skills.mageskill.desc=a mage can cast those spell by use his mage robe\n _molten earth_ : All the enemies in his field of view will be set on fire and unable to move at the same time.\n\n_arcane bombing_ : Use arcane bombing a place, destory walls and deal some damage.\n\n_ice storm_ : All the enemies in his field of view will be set on ice and taken lots of damage.\n\n_lightning arrester_ : Recharge wands, and shock near enemies. - -items.skills.huntressskill.name=huntress cloak -items.skills.huntressskill.ac_special=HUNTER INSTINCT -items.skills.huntressskill.ac_special_two=PREPARE HUNTING -items.skills.huntressskill.ac_special_three=FAIRY IN BOTTLE -items.skills.huntressskill.ac_special_four=LIVING ROOT -items.skills.huntressskill.no_space=Can't summon ally in here. -items.skills.huntressskill.desc=a hunter can cast those spell by use her cloak\n _hunter instinct_ : It is easy for her to find treasure, monster, and secret.\n\n_prepare hunting_ : Gain some range skill for now.\n\n_fairy in bottle_ : Summon a fairy.\n\n_living root_ : all the enemies in her field of view will unable to move. If her is powerful, summon some little tree in this place. - -items.skills.rogueskill.name=rogue garb -items.skills.rogueskill.ac_special=SHADOW BLESS -items.skills.rogueskill.ac_special_two=STEAL GOLD -items.skills.rogueskill.ac_special_three=SILENT KILLING -items.skills.rogueskill.ac_special_four=FALLING ATTACK -items.skills.rogueskill.desc=a rogue can cast those spell by use his garb\n _shadow bless_ : Hiding into shadow, and gain some buff.\n\n_steal gold_ : Gain gold in attack.\n\n_silent killing_ : Silence a enemy, until it dead.\n\n_falling attack_ : Near wall, and preapare next attack. - -items.skills.warriorskill.name=warrior suit of armor -items.skills.warriorskill.ac_special=SOURCE POWER -items.skills.warriorskill.ac_special_two=FIGHTING ARENA -items.skills.warriorskill.ac_special_three=SHIELD SPELL -items.skills.warriorskill.ac_special_four=SURPRISE ATTACK -items.skills.warriorskill.desc=a warrior can cast those spell by use his suit of armor \n_source power_ : It will improve his body for a while.\n\n_fighting arena_ : Silence near enemies, and disarm other enemies.\n\n_shield spell_ : Gain shield.\n\n_surprise attack_ : Deal more damage on full health enemy and low health enemy. - -items.skills.performerskill.name=performer jacket -items.skills.performerskill.prompt=Choose a item for change -items.skills.performerskill.ac_special=SPECIAL DANCE -items.skills.performerskill.ac_special_two=CURTAIN CALL -items.skills.performerskill.ac_special_three=MAGIC TRICKS -items.skills.performerskill.ac_special_four=FANS ACCOMPANIMENT -items.skills.performerskill.desc=a performer can cast those spell by use his jacket\n _special dance_ : All the enemies in his field of view will be crazy.\n\n_curtain call_ : Remove all his mucia buff, and deal damage to all the enemies in his field of view.\n\n_magic tricks_ : Transmutation a item.\n\n_fans accompanoment_ : Dancing with your fans and enemies. - -items.skills.soldierskill.name=soldier vest -items.skills.soldierskill.ac_special=MIRROR ARMY -items.skills.soldierskill.ac_special_two=SUMMON MECH -items.skills.soldierskill.ac_special_three=MOVING BOMBS -items.skills.soldierskill.ac_special_four=AIR DROP -items.skills.soldierskill$seekingbomb.name=Bombing robot -items.skills.soldierskill$seekingbomb.desc=Warning: it will expload soon. -items.skills.soldierskill$seekinghugebomb.name=Boooooooooooming robot. -items.skills.soldierskill$seekinghugebomb.desc=Warning: it will exploadddddddddddddd soon. -items.skills.soldierskill.desc=a soldier can cast those spell by use his vest \n_mirror army_ : Create some mirror to help him on battle, and remove some bad buff he have.\n\n_summon mech_ : Gain mech buff.\n\n_moving bombs_ : Summon some bombs.\n\n_air drop_ : Create food and throwning weapon in some where of this place. - -items.skills.followerskill.name=follower overcoat -items.skills.followerskill.ac_special=PRAY -items.skills.followerskill.ac_special_two=FUND RAISING -items.skills.followerskill.ac_special_three=LANGUAGE TRAP -items.skills.followerskill.ac_special_four=BLESS SPELL -items.skills.followerskill.desc=a follower can cast those spell by use his overcoat\n_pary_ : Stand and start pary.\n\n_fund raising_ : collect gold from enemies.\n\n_language trap_ : terror enemy and improve your move speed.\n\n_bless spell_ : Upgrade a item. - -items.armor.normalarmor.clotharmor.name=cloth armor -items.armor.normalarmor.clotharmor.desc=This lightweight armor offers basic protection.\nnormal armor - -items.armor.normalarmor.leatherarmor.name=leather armor -items.armor.normalarmor.leatherarmor.desc=Armor made from tanned monster hide. Not as light as cloth armor but provides better protection.\nnormal armor - -items.armor.normalarmor.mailarmor.name=mail armor -items.armor.normalarmor.mailarmor.desc=Interlocking metal links make for a tough but flexible suit of armor.\nnormal armor -items.armor.normalarmor.platearmor.name=plate armor -items.armor.normalarmor.platearmor.desc=Enormous plates of metal are joined together into a suit that provides unmatched protection to any adventurer strong enough to bear its staggering weight.\nnormal armor - -items.armor.normalarmor.scalearmor.name=scale armor -items.armor.normalarmor.scalearmor.desc=The metal scales sewn onto a leather vest create a flexible, yet protective armor.\nnormal armor - -items.armor.normalarmor.discarmor.name=disc armor -items.armor.normalarmor.discarmor.desc=This armor is made of a metal disc sewn on top of a cloth (hence the name). It's pretty durable, but bulky.\nnormal armor - -items.armor.normalarmor.errorarmor.name=error armor -items.armor.normalarmor.errorarmor.desc=This is a error.\n??? - -items.armor.normalarmor.basearmor.name=base armor -items.armor.normalarmor.basearmor.desc=it is not a armor, but just some kind of body. - -items.armor.normalarmor.woodenarmor.name=Wooden armor -items.armor.normalarmor.woodenarmor.desc=A simple armor made by write birch bark. Because of it, this armor is uncomfortable.\nheavy armor - -items.armor.normalarmor.ceramicsarmor.name=ceramic armor -items.armor.normalarmor.ceramicsarmor.desc=It made by clay and fire.\nheavy armor - -items.armor.normalarmor.stonearmor.name=stone armor -items.armor.normalarmor.stonearmor.desc=This armor is just combine clothes and stone.\nheavy armor - -items.armor.normalarmor.multiplelayerarmor.name=double mail armor -items.armor.normalarmor.multiplelayerarmor.desc=This armor is made by two mail armor.\nheavy armor - -items.armor.normalarmor.bulletarmor.name=bullet armor -items.armor.normalarmor.bulletarmor.desc=A normal fiak jackets.\nheavy armor - -items.armor.normalarmor.machinearmor.name=machine armor -items.armor.normalarmor.machinearmor.desc=It is a machine, not a simple armor.\nheavy armor - -items.armor.normalarmor.vestarmor.name=vest -items.armor.normalarmor.vestarmor.desc=It is a cheap vest.\nlight armor - -items.armor.normalarmor.rubberarmor.name=rubber armor -items.armor.normalarmor.rubberarmor.desc=A cosplay clothes.\nlight armor - -items.armor.normalarmor.cdarmor.name=CD armor -items.armor.normalarmor.cdarmor.desc=It made by scrap CD and DVD. What does it means?\nlight armor - -items.armor.normalarmor.styrofoamarmor.name=PVC armor -items.armor.normalarmor.styrofoamarmor.desc=It is hard to know this armor be made, but you can see PVC in the bottom.\nlight armor - -items.armor.normalarmor.protectiveclothingarmor.name=protective armor -items.armor.normalarmor.protectiveclothingarmor.desc=It is some kind of protective clothing for workers.\nlight armor - -items.armor.normalarmor.phantomarmor.name=phantom armor -items.armor.normalarmor.phantomarmor.desc=Special technology in future.\nlight armor - -###artifacts -items.artifacts.alchemiststoolkit.name=alchemists toolkit -items.artifacts.alchemiststoolkit.ac_brew=BREW -items.artifacts.alchemiststoolkit.ac_create=CREATE -items.artifacts.alchemiststoolkit.prompt=Choose potion for brew -items.artifacts.alchemiststoolkit.waste=None of the potions you used seem to react well. -items.artifacts.alchemiststoolkit.prefect=The mixture you've created seems perfect, you don't think there is any way to improve it! -items.artifacts.alchemiststoolkit.bestbrew=This is your best brew yet! -items.artifacts.alchemiststoolkit.bdorder=potions reacted well, -items.artifacts.alchemiststoolkit.right=potions in right place. -items.artifacts.alchemiststoolkit.desc=This toolkit contains a number of regents and herbs used to improve the process of cooking. The toolkit rests on your hip, the various tools inside make a light jingling sound as you move. \n You can see some message in this toolkit: water, vegetable, special seed. -items.artifacts.alchemiststoolkit.desc_cursed=This toolkit is been curse. It make you waste more seed on cooking potions. -items.artifacts.alchemiststoolkit.level_zero=The toolkit seems to be missing a key tool, a catalyst mixture. You'll have to make your own out of three common potions to get the most out of the toolkit. -items.artifacts.alchemiststoolkit.level_ten=The mixture you have created seems perfect, and the toolkit is working at maximum efficiency. -items.artifacts.alchemiststoolkit.make_from=Your current best mixture is made from: -items.artifacts.alchemiststoolkit.addpotion=You mix the this potion into your current brew. -items.artifacts.alchemiststoolkit.have_add=Your current brew already contains that potion. -items.artifacts.alchemiststoolkit.know_first=You need to identified this potion first. - -items.artifacts.alienbag.name=Alien bag -items.artifacts.alienbag.ac_shield=SHIELD MODE -items.artifacts.alienbag.ac_bomb=BOMB MODE -items.artifacts.alienbag.ac_fly=FLY MODE -items.artifacts.alienbag.ac_etc=ETC MODE -items.artifacts.alienbag.desc=A alien single shoulder bag with many useful function. -items.artifacts.alienbag.no_charge=Need more chargr -items.artifacts.alienbag.full_charge=Full charge -items.artifacts.alienbag$bagrecharge.levelup=Your bag is upgrade. - -items.artifacts.artifact.onlythree=You can only wear three misc items at a time. -items.artifacts.artifact.unequip_title=Unequip one item -items.artifacts.artifact.unequip_message=You can only wear three misc items at a time. -items.artifacts.artifact.cannot_wear_two=You cannot wear two of the same artifact. -items.artifacts.artifact.cursed_worn=The artifact painfully binds itself to you. -items.artifacts.artifact.curse_known=You can feel a malevolent magic lurking within the artifact. -items.artifacts.artifact.need_to_equip=You need to equip your artifact to do that. -items.artifacts.artifact.need_to_change=It has lost its own power. - -items.artifacts.capeofthorns.name=cape of thorns -items.artifacts.capeofthorns.ac_needling=NEEDLING -items.artifacts.capeofthorns.desc=These collapsed sheets of metal from the dwarf's machine have formed together into a rigid cape. It seems to store a deep energy, perhaps it has some of the machine's power? -items.artifacts.capeofthorns.desc_inactive=The cape feels reassuringly heavy on your shoulders, it seems to be gaining energy from the damage you take. -items.artifacts.capeofthorns.desc_active=The cape seems to be releasing stored energy, it is radiating a protective power. -items.artifacts.capeofthorns$thorns.inert=Your Cape becomes inert again. -items.artifacts.capeofthorns$thorns.radiating=Your Cape begins radiating energy, you feel protected! -items.artifacts.capeofthorns$thorns.levelup=Your Cape grows stronger! -items.artifacts.capeofthorns$thorns.name=Thorns -items.artifacts.capeofthorns$thorns.desc=Your cape is radiating energy, surrounding you in a field of deflective force!\n\nAll damage you receive is reduced while the thorns effect is active. Additionally, if the attacker is next to you, the reduced amount is deflected back at the attacker.\n\nTurns of thorns remaining: %s. - -items.artifacts.chaliceofblood.name=chalice of blood -items.artifacts.chaliceofblood.ac_prick=PRICK -items.artifacts.chaliceofblood.ac_bloodangry=BLOODANGRY -items.artifacts.chaliceofblood.yes=Yes, I know what I'm doing -items.artifacts.chaliceofblood.no=No, I changed my mind -items.artifacts.chaliceofblood.prick_warn=Each time you use the chalice it will drain more life energy, if you are not careful this can easily kill you.\n\nAre you sure you want to offer it more life energy? -items.artifacts.chaliceofblood.onprick=You prick yourself, and your life essence drains into the chalice. -items.artifacts.chaliceofblood.ondeath=The Chalice sucks your life essence dry... -items.artifacts.chaliceofblood.desc=This shining silver chalice is oddly adorned with sharp gems at the rim. -items.artifacts.chaliceofblood.desc_cursed=The cursed chalice has bound itself to your hand, and is inhibiting your ability to regenerate health. -items.artifacts.chaliceofblood.desc_1=As you hold the chalice, you feel oddly compelled to prick yourself on the sharp gems. -items.artifacts.chaliceofblood.desc_2=Some of your blood is pooled into the chalice, you can subtly feel the chalice feeding life energy into you. You still want to cut yourself on the chalice, even though you know it will hurt. -items.artifacts.chaliceofblood.desc_3=The chalice is filled to the brim with your life essence. You can feel the chalice pouring life energy back into you. - -items.artifacts.cloakofshadows.name=cloak of shadows -items.artifacts.cloakofshadows.ac_stealth=STEALTH -items.artifacts.cloakofshadows.ac_shadow=SHADOW -items.artifacts.cloakofshadows.cooldown=Your cloak needs %d more rounds to re-energize. -items.artifacts.cloakofshadows.no_charge=Your cloak hasn't recharged enough to be usable yet. -items.artifacts.cloakofshadows.desc=A priceless magical cloak, stolen from the royal armory many years ago by the Rogue. When worn, it can be used to turn completely invisible for a short time.\n\nThe more the cloak is used, the stronger it will become, allowing the Rogue to become invisible more frequently and for longer durations. -items.artifacts.cloakofshadows$cloakstealth.no_charge=Your cloak has run out of energy. -items.artifacts.cloakofshadows$cloakstealth.levelup=Your cloak grows stronger! -items.artifacts.cloakofshadows$cloakstealth.name=Cloaked -items.artifacts.cloakofshadows$cloakstealth.desc=Your cloak of shadows is granting you invisibility while you are shrouded by it.\n\nWhile you are invisible enemies are unable to attack or follow you. Physical attacks and magical effects (such as scrolls and wands) will immediately cancel invisibility.\n\nYou will remain cloaked until it is cancelled or your cloak runs out of charge. - -items.artifacts.driedrose.name=dried rose -items.artifacts.driedrose.ac_summon=SUMMON -items.artifacts.driedrose.ac_outfit=OUTFIT -items.artifacts.driedrose.ac_soulbless=SOULBLESS -items.artifacts.driedrose.spawned=You have already summoned the ghost. -items.artifacts.driedrose.no_charge=Your rose isn't fully charged yet. -items.artifacts.driedrose.cursed=You cannot use a cursed rose. -items.artifacts.driedrose.no_space=There is no free space near you. -items.artifacts.driedrose.charged=Your rose is fully charged! -items.artifacts.driedrose.desc=Is this the rose that the ghost mentioned before disappearing? It seems to hold some spiritual power, perhaps it can be used to channel the energy of that lost warrior. -items.artifacts.driedrose.desc_no_quest=A dried aged rose that is somehow still holding together despite its age.\n\nIt seems to have some spiritual power, but you have no idea how to use it right now. -items.artifacts.driedrose.desc_hint=It seems to be missing some petals. Perhaps reattaching them will strengthen the rose. -items.artifacts.driedrose.desc_cursed=The cursed rose is bound to your hand, it feels eerily cold. -items.artifacts.driedrose$petal.name=dried petal -items.artifacts.driedrose$petal.no_rose=You have no rose to add this petal to. -items.artifacts.driedrose$petal.no_room=There is no room left for this petal, so you discard it. -items.artifacts.driedrose$petal.maxlevel=The rose is completed! -items.artifacts.driedrose$petal.levelup=You add the petal to the rose. -items.artifacts.driedrose$petal.desc=A frail dried up petal, which has somehow survived this far into the dungeon. -items.artifacts.driedrose$ghosthero.name=sad ghost -items.artifacts.driedrose$sghosthero.name=mad ghost -items.artifacts.driedrose$ghosthero.def_verb=evaded -items.artifacts.driedrose$ghosthero.hello=Hello again %s. -items.artifacts.driedrose$ghosthero.introduce=My spirit is bound to this rose, it was very precious to me, a gift from my love whom I left on the surface.\n\nI cannot return to him, but thanks to you I have a second chance to complete my journey. When I am able I will respond to your call and fight with you.\n\nhopefully you may succeed where I failed... -items.artifacts.driedrose$sghosthero.desc=This is still in work. -items.artifacts.driedrose$ghosthero.desc=A frail looking ethereal figure with a humanoid shape. Its power seems tied to the rose you have.\n\nThis ghost may not be much, but it seems to be your only true friend down here. -items.artifacts.driedrose$wndghosthero.title=Ghost's Equipment -items.artifacts.driedrose$wndghosthero.desc=The ghost is weak on their own, but their form is solid enough to be equipped with a weapon and armor. They will be able to use these items just like you do.\n\nThe ghost can currently equip items requiring up to _%d strength._ -items.artifacts.driedrose$wndghosthero.weapon_prompt=Select a weapon -items.artifacts.driedrose$wndghosthero.armor_prompt=Select an armor -items.artifacts.driedrose$wndghosthero.cant_unique=The ghost can't use unique items. -items.artifacts.driedrose$wndghosthero.cant_unidentified=You don't know enough about that item. -items.artifacts.driedrose$wndghosthero.cant_cursed=You can't give the ghost cursed equipment. -items.artifacts.driedrose$wndghosthero.cant_strength=The ghost is not strong enough to use that. - -items.artifacts.etherealchains.name=ethereal chains -items.artifacts.etherealchains.ac_cast=CAST -items.artifacts.etherealchains.ac_locked=LOCKED -items.artifacts.etherealchains.no_charge=Your chains do not have enough charge. -items.artifacts.etherealchains.cursed=You can't use cursed chains. -items.artifacts.etherealchains.does_nothing=That won't do anything. -items.artifacts.etherealchains.cant_pull=Your chains cannot pull that target. -items.artifacts.etherealchains.nothing_to_grab=There is nothing to grab there. -items.artifacts.etherealchains.prompt=Choose a location to target. -items.artifacts.etherealchains.desc=These large yet lightweight chains glow with spiritual energy. They can be used to pull you towards terrain, or pull enemies toward you. The ethereal nature of the chains even allows them to extend through walls! -items.artifacts.etherealchains.desc_cursed=The cursed chains are locked to your side, constantly swinging around, trying to trip or bind you -items.artifacts.etherealchains.desc_equipped=The chains rest around your side, slowly siphoning the spiritual energy of those you defeat. Each charge is a link in the chain, which will extend out exactly one tile. -items.artifacts.etherealchains$chainsrecharge.levelup=Your chains grow stronger! - -items.artifacts.hornofplenty.name=horn of plenty -items.artifacts.hornofplenty.ac_eat=EAT -items.artifacts.hornofplenty.ac_store=STORE -items.artifacts.hornofplenty.ac_feed=FEED -items.artifacts.hornofplenty.eat=You eat from the horn. -items.artifacts.hornofplenty.prompt=Select a piece of food -items.artifacts.hornofplenty.no_food=Your horn has no food in it to eat! -items.artifacts.hornofplenty.full=Your horn is full of food! -items.artifacts.hornofplenty.reject=Your horn rejects the uncooked blandfruit. -items.artifacts.hornofplenty.maxlevel=Your horn has consumed all the food it can! -items.artifacts.hornofplenty.levelup=The horn consumes your food offering and grows in strength! -items.artifacts.hornofplenty.desc=This horn can't be blown into, but instead seems to fill up with food over time when equipped. -items.artifacts.hornofplenty.desc_hint=Perhaps there is a way to increase the horn's power by giving it food energy. -items.artifacts.hornofplenty.desc_cursed=The cursed horn has bound itself to your side, it seems to be eager to take food rather than produce it. - -items.artifacts.masterthievesarmband.name=master armband -items.artifacts.masterthievesarmband.ac_goldtouch=GOLDTOUCH -items.artifacts.masterthievesarmband.desc=This purple velvet armband bears the mark of a master. -items.artifacts.masterthievesarmband.desc_worn=With the armband around your wrist, every piece of gold you find makes you desire other people's property more. Perhaps it wouldn't be too hard to get preferential in pixel mart... - -items.artifacts.pylon.name=Small pylon -items.artifacts.pylon.ac_zap=ZAP -items.artifacts.pylon.ac_set=SET -items.artifacts.pylon.ac_return=RETURN -items.artifacts.pylon.ac_rankup=RANKUP -items.artifacts.pylon.no_charge=Your pylon does not have enough energy right now. -items.artifacts.pylon.tele_fail=The teleportation magic fails. -items.artifacts.pylon.prompt=Choose a location to zap. -items.artifacts.pylon.levelup=Your pylon grows stronger! -items.artifacts.pylon.rankup=Rank Up!!! -items.artifacts.pylon.preventing=Strong magic aura of this place prevents you from using the pylon! -items.artifacts.pylon.creatures=Psychic aura of neighbouring creatures doesn't allow you to use the pylon at this moment. -items.artifacts.pylon.return=The pylon is successfully set at your current location, now you can return here anytime. -items.artifacts.pylon.desc=Pylon is an intricate magical building which grants the user control of teleportation magics. The beacon can be used to return to a set location, but can also expel bursts of random teleportation magic once it has charged from being equipped. This magic can be directed at a target or at the user themselves. -items.artifacts.pylon.desc_set=This pylon was set somewhere on the depth %dof SPS Pixel Dungeon. - - -items.artifacts.sandalsofnature.name=sandals of nature -items.artifacts.sandalsofnature.name_1=shoes of nature -items.artifacts.sandalsofnature.name_2=boots of nature -items.artifacts.sandalsofnature.name_3=greaves of nature -items.artifacts.sandalsofnature.ac_feed=FEED -items.artifacts.sandalsofnature.ac_root=ROOT -items.artifacts.sandalsofnature.ac_sprout=SPROUT -items.artifacts.sandalsofnature.no_charge=They have no energy right now. -items.artifacts.sandalsofnature.prompt=Select a seed -items.artifacts.sandalsofnature.already_fed=Your footwear have already recently gained nutrients from that seed. -items.artifacts.sandalsofnature.levelup=Your footwear surges in size! -items.artifacts.sandalsofnature.absorb_seed=The footwear absorbs the seed, they seem healthier. -items.artifacts.sandalsofnature.desc_1=What initially seem like sandals made of twine are actually two plants! They seem very weak and pale, perhaps they need to be given nutrients? -items.artifacts.sandalsofnature.desc_2=The footwear has grown and now more closely resemble two tailored shoes. Some colour has returned to them, perhaps they can still grow further? -items.artifacts.sandalsofnature.desc_3=The plants have grown again and now resembles a pair of solid boots made from bark. The plants seem to have regained their strength, but perhaps they can still grow further? -items.artifacts.sandalsofnature.desc_4=The plants seem to have reached their maximum size, they resemble a pair of armored greaves. The greaves are a deep brown and resemble a very sturdy tree. -items.artifacts.sandalsofnature.desc_hint=You feel more attuned with nature while wearing this artifact. -items.artifacts.sandalsofnature.desc_cursed=The cursed sandals are blocking any attunement with nature. -items.artifacts.sandalsofnature.desc_ability=The footwear has gained the ability to form up into a sort of immobile natural armour, but will need to charge up for it. -items.artifacts.sandalsofnature.desc_seeds=You have fed the footwear %d seeds. - -items.artifacts.talismanofforesight.name=talisman of foresight -items.artifacts.talismanofforesight.ac_scry=SCRY -items.artifacts.talismanofforesight.ac_notice=NOTICE -items.artifacts.talismanofforesight.no_charge=Your talisman isn't fully charged yet. -items.artifacts.talismanofforesight.scry=The Talisman floods your mind with knowledge about the current floor. -items.artifacts.talismanofforesight.desc=A smooth stone with strange engravings on it. You feel like it's watching everything around you, keeping an eye out for anything unusual. -items.artifacts.talismanofforesight.desc_worn=When you hold the talisman you feel like your senses are heightened. -items.artifacts.talismanofforesight.desc_cursed=The cursed talisman is intently staring into you, making it impossible to concentrate. -items.artifacts.talismanofforesight$foresight.name=Foresight -items.artifacts.talismanofforesight$foresight.levelup=Your Talisman grows stronger! -items.artifacts.talismanofforesight$foresight.full_charge=Your Talisman is fully charged! -items.artifacts.talismanofforesight$foresight.uneasy=You feel uneasy. -items.artifacts.talismanofforesight$foresight.desc=You feel very nervous, as if there is nearby unseen danger. - -items.artifacts.timekeepershourglass.name=timekeeper's hourglass -items.artifacts.timekeepershourglass.ac_activate=ACTIVATE -items.artifacts.timekeepershourglass.ac_restart=RESTART -items.artifacts.timekeepershourglass.in_use=Your hourglass is already in use. -items.artifacts.timekeepershourglass.no_charge=Your hourglass hasn't recharged enough to be usable yet. -items.artifacts.timekeepershourglass.cursed=You cannot use a cursed hourglass. -items.artifacts.timekeepershourglass.onstasis=The world seems to shift around you in an instant. -items.artifacts.timekeepershourglass.onfreeze=Everything around you suddenly freezes. -items.artifacts.timekeepershourglass.stasis=Put myself in stasis -items.artifacts.timekeepershourglass.freeze=Freeze time around me -items.artifacts.timekeepershourglass.prompt=How would you like to use the hourglass's magic?\n\nWhile in stasis, time will move normally while you are frozen and completely invulnerable.\n\nWhen time is frozen, you can move as if your actions take no time. Note that attacking will break this. -items.artifacts.timekeepershourglass.desc=This large ornate hourglass looks fairly unassuming, but you feel a great power in its finely carved frame. As you rotate the hourglass and watch the sand pour you can feel its magic tugging at you, surely using this magic would give you some control over time. -items.artifacts.timekeepershourglass.desc_hint=The hourglass seems to have lost some sand, if only you could find some... -items.artifacts.timekeepershourglass.desc_cursed=The cursed hourglass is locked to your side, you can feel it trying to manipulate your flow of time. -items.artifacts.timekeepershourglass$sandbag.name=bag of magic sand -items.artifacts.timekeepershourglass$sandbag.levelup=You add the sand to your hourglass. -items.artifacts.timekeepershourglass$sandbag.maxlevel=Your hourglass is filled with magical sand! -items.artifacts.timekeepershourglass$sandbag.no_hourglass=You have no hourglass to place this sand into. -items.artifacts.timekeepershourglass$sandbag.desc=This small bag of fine sand should work perfectly with your hourglass.\n\nIt seems odd that the shopkeeper would have this specific item right when you need it... - -items.artifacts.unstablespellbook.name=unstable spellbook -items.artifacts.unstablespellbook.ac_read=READ -items.artifacts.unstablespellbook.ac_add=ADD -items.artifacts.unstablespellbook.ac_song=SONG -items.artifacts.unstablespellbook.blinded=You cannot read from the book while blinded. -items.artifacts.unstablespellbook.no_charge=Your spellbook is out of energy for now. -items.artifacts.unstablespellbook.cursed=You cannot read from a cursed spellbook. -items.artifacts.unstablespellbook.prompt=Select a scroll -items.artifacts.unstablespellbook.infuse_scroll=You infuse the scroll's energy into the book. -items.artifacts.unstablespellbook.unable_scroll=You are unable to add this scroll to the book. -items.artifacts.unstablespellbook.unknown_scroll=You're not sure what type of scroll this is yet. -items.artifacts.unstablespellbook.desc=This Tome is in surprising good condition given its age. It fizzes and crackles as you move the pages, surging with unstable energy. If you read from this book, there's no telling what spell you might cast. -items.artifacts.unstablespellbook.desc_cursed=The cursed book has bound itself to you, it is inhibiting your ability to use most scrolls. -items.artifacts.unstablespellbook.desc_index=It have %s exp. -items.artifacts.unstablespellbook.exp=It have %s exp. - -items.artifacts.eyeofskadi.name=eye of skadi -items.artifacts.eyeofskadi.ac_add=ADD -items.artifacts.eyeofskadi.ac_blast=ICE BLAST -items.artifacts.eyeofskadi.ac_curse=CURSE -items.artifacts.eyeofskadi.no_charge=Use ice of skadi need more charge. -items.artifacts.eyeofskadi.prompt=Add a stone ore -items.artifacts.eyeofskadi.need_charge=It is still need charge. -items.artifacts.eyeofskadi.full_charge=It is full charge. -items.artifacts.eyeofskadi.exp=It have %s exp. -items.artifacts.eyeofskadi.infuse_ore=You add stone ore into this eye. -items.artifacts.eyeofskadi.desc=Extremely rare artifact, guarded by the azure dragons. - -items.artifacts.robotdmt.name=Robot HEART -items.artifacts.robotdmt.ac_heart=SIMULATE -items.artifacts.robotdmt.ac_memory=DETERMINATION -items.artifacts.robotdmt.no_charge=Your robot isn't fully charged yet. -items.artifacts.robotdmt.full_charge=Your robot is fully charged now. -items.artifacts.robotdmt.patience=Try to analysis : patience -items.artifacts.robotdmt.bravery=Try to analysis : branery -items.artifacts.robotdmt.integrity=Try to analysis : integrity -items.artifacts.robotdmt.preseverance=Try to analysis : preseverance -items.artifacts.robotdmt.kindness=Try to analysis : kindness -items.artifacts.robotdmt.justice=Try to analysis : justice -items.artifacts.robotdmt.soul=Try to analysis : soul -items.artifacts.robotdmt.friendship=Try to analysis : friendship -items.artifacts.robotdmt.chaos=Try to analysis : chaos... error -items.artifacts.robotdmt.determination=Try to analysis : determination... error -items.artifacts.robotdmt.desc=A mysterious artifact made by unknown scientist. It will charge itself so only thing you should do is waiting. - -items.artifacts.glasstotem.name=glass totem -items.artifacts.glasstotem.ac_atk=ATTACK BLESS -items.artifacts.glasstotem.ac_def=DEFENSE BLESS -items.artifacts.glasstotem.desc=A strange totem made by glass. Use it may good for your battle. - - -###bags -items.bags.bag.name=backpack -items.bags.potionbandolier.name=potion bandolier -items.bags.potionbandolier.desc=This thick bandolier fits around your chest like a sash, it has many insulated straps on it to hold potion vials.\n\nWhile inside the bandolier, your potions should be protected from the cold. -items.bags.scrollholder.name=scroll holder -items.bags.scrollholder.desc=This tubular container looks like it would hold an astronomer's charts, but your scrolls will fit just as well.\n\nThe holder doesn't look very flammable, so your scrolls should be safe from fire inside it.\n\nYou also can put bombs in here. -items.bags.seedpouch.name=seed pouch -items.bags.seedpouch.desc=This small velvet pouch allows you to store any number of seeds in it. Very convenient. -items.bags.wandholster.name=wand holster -items.bags.wandholster.desc=This slim holster is made from some exotic animal, and is designed to compactly hold many wands. -items.bags.keyring.name=key ring -items.bags.keyring.desc=This keyring can hold your keys and rings. It also can hold other transport items! -items.bags.shoppingcart.name=shopping cart -items.bags.shoppingcart.desc=A modern trolley. You can put food in it. -items.bags.heartofscarecrow.name=portable scarecrow -items.bags.heartofscarecrow.desc=A portable scarecrow which can hold some weapons. - -###food -items.food.fruit.blandfruit.name=blandfruit -items.food.fruit.blandfruit.sunfruit=sunfruit -items.food.fruit.blandfruit.rotfruit=rotfruit -items.food.fruit.blandfruit.earthfruit=earthfruit -items.food.fruit.blandfruit.blindfruit=blindfruit -items.food.fruit.blandfruit.firefruit=firefruit -items.food.fruit.blandfruit.icefruit=icefruit -items.food.fruit.blandfruit.fadefruit=fadefruit -items.food.fruit.blandfruit.sorrowfruit=sorrowfruit -items.food.fruit.blandfruit.stormfruit=stormfruit -items.food.fruit.blandfruit.dreamfruit=dreamfruit -items.food.fruit.blandfruit.starfruit=starfruit -items.food.fruit.blandfruit.powerfruit=powerfruit -items.food.fruit.blandfruit.mightyfruit=mightyfruit -items.food.fruit.blandfruit.heartfruit=heartfruit - -items.food.fruit.blandfruit.raw=You can't bear to eat it raw. -items.food.fruit.blandfruit.ice_msg=The icefruit tastes a bit like Frozen Carpaccio. -items.food.fruit.blandfruit.fire_msg=You feel a great fire burning within you! -items.food.fruit.blandfruit.toxic_msg=You are imbued with vile toxic power! -items.food.fruit.blandfruit.para_msg=You feel the power of the earth coursing through you! -items.food.fruit.blandfruit.desc=So dry and insubstantial, perhaps stewing it with another ingredient would improve it. -items.food.fruit.blandfruit.desc_cooked=The fruit has plumped up from its time soaking in the pot and has even absorbed the properties of the seed it was cooked with.\n\nIt looks ready to be eaten! - -items.food.meatfood.chargrilledmeat.name=chargrilled meat -items.food.meatfood.chargrilledmeat.desc=It looks like a decent steak. - -items.food.food.name=ration of food -items.food.food.ac_eat=EAT -items.food.food.locked=Locked magic prevents you to eat this food. -items.food.food.bosslevel=It is a bad idea to eat this food here... -items.food.food.desc=Nothing fancy here: dried meat, some biscuits - things like that. - -items.food.staplefood.normalration.name=ration of food -items.food.staplefood.normalration.desc=Nothing fancy here: dried meat, some biscuits - things like that. - -items.food.staplefood.pasty.pasty=pasty -items.food.staplefood.pasty.assorted=Spring Festival Food -items.food.staplefood.pasty.pie=pumpkin pie -items.food.staplefood.pasty.egg=Rainbow egg -items.food.staplefood.pasty.book=School work -items.food.staplefood.pasty.cane=candy cane -items.food.staplefood.pasty.turkey=Roast Turkey -items.food.staplefood.pasty.bread=brick bread -items.food.staplefood.pasty.jelly=jelly sword - -items.food.staplefood.pasty.pasty_desc=This is authentic Cornish pasty with traditional filling of beef and potato. -items.food.staplefood.pasty.assorted_desc=The rice cake, the dumpling, and the dumplings are filled with the steamer. As one of the traditional foods of the new spring festival, it can completely eliminate your hunger and make you full of determination. \n\n happy Spring Festival! -items.food.staplefood.pasty.pie_desc=great big slice of pumpkin pie! Its sweet and spicy flavor will fill you up and give you a tiny bit of healing.\n\nHappy Halloween! -items.food.staplefood.pasty.book_desc=This is some kind of school work in summer vacation. Finish it and you will full with knowledge. -items.food.staplefood.pasty.egg_desc=Although this thing looks small, eating it can completely eliminate your hunger and make you energetic. \n\n Happy Easter! -items.food.staplefood.pasty.cane_desc=A huge sugary sweet candy cane! It's big enough to fill you up, and the sugar might give your wands a tiny bit of extra charge too.\n\nHappy Holidays! -items.food.staplefood.pasty.turkey_desc=A roasted turkey. Eating it can restore your hunger and make you faster.\n\nHappy Thanksgiving! -items.food.staplefood.pasty.bread_desc=This bread is build by from flour and butter. It looks like brick.\n\nCelebrating International Workers' Day! -items.food.staplefood.pasty.jelly_desc=a jelly looks like a sword. I think child will love this. \n\n Happy International Children's Day! -items.food.staplefood.pasty.worker=You earn 500 golds. - -items.food.meatfood.frozencarpaccio.name=frozen carpaccio -items.food.meatfood.frozencarpaccio.hard=You feel your skin harden! -items.food.meatfood.frozencarpaccio.refresh=Refreshing! -items.food.meatfood.frozencarpaccio.invisbility=You are blessed by shadow! -items.food.meatfood.frozencarpaccio.better=You feel better! -items.food.meatfood.frozencarpaccio.desc=It's a piece of frozen raw meat. The only way to eat it is by cutting thin slices of it. And this way it's suprisingly good. - -items.food.meatfood.mysterymeat.not_well=You are not feeling well. -items.food.meatfood.mysterymeat.name=mystery meat -items.food.meatfood.mysterymeat.hot=Oh it's hot! -items.food.meatfood.mysterymeat.legs=You can't feel your legs! -items.food.meatfood.mysterymeat.bad=You feel bad. -items.food.meatfood.mysterymeat.stuffed=You are stuffed. -items.food.meatfood.mysterymeat.desc=Eat at your own risk! - -items.food.staplefood.overpricedration.name=overpriced food ration -items.food.staplefood.overpricedration.desc=It looks exactly like a standard ration of food but smaller. - -items.food.fruit.blackberry.name=black berry -items.food.fruit.blackberry.desc=A delectable berry. This berry is full with life energy. - -items.food.fruit.blueberry.name=blue berry -items.food.fruit.blueberry.stop=The magic of this place prevents this type of scrying! -items.food.fruit.blueberry.desc=A mysterious blue berry. It is full of knowledge. - -items.food.fruit.cloudberry.name=cloud berry -items.food.fruit.cloudberry.desc=A delectable and light berry. It is full with wind energy. - -items.food.fruit.fullmoonberry.name=full moon berry -items.food.fruit.fullmoonberry.desc=In the darkest hours of night a full moon berry grows. It was blessed by Selemene. - -items.food.fruit.moonberry.name=moon berry -items.food.fruit.moonberry.desc=A hearty blue-green berry. It is full with power. - -items.food.completefood.goldennut.name=Golden nut bless by developer -items.food.completefood.goldennut.effect1=+1str,+60hp -items.food.completefood.goldennut.effect2=+2str,+30hp -items.food.completefood.goldennut.desc=Super secret nut made by developer hmdzl001. Eat it! - -items.food.meatfood.meat.name=meat -items.food.meatfood.meat.bad=you feel bad... -items.food.meatfood.meat.desc=Just some normal meat selled in market. - -items.food.nut.name=nut -items.food.nut.desc=Common dungeon nut. It can be used on cooking. - -items.food.vegetable.nutvegetable.name=nut vine -items.food.vegetable.nutvegetable.desc=A common vegetable, usually used in cooking. Even with out cooking it tastes delicious. - -items.food.vegetable.healgrass.name=Heal grass -items.food.vegetable.healgrass.desc=A common vegetable cut from sun grass. - -items.food.vegetable.battleflower.name=Star flower -items.food.vegetable.battleflower.desc=A common vegetable cut from star flower. - -items.food.vegetable.dreamleaf.name=Dream leaf -items.food.vegetable.dreamleaf.desc=A common vegetable cut from dream foil. - -items.food.honey.name=Honey -items.food.honey.desc=It is made by Honeypot. - -items.food.completefood.petfood.name=Pet Food -items.food.completefood.petfood.desc=Every pet loves it, that is why it called pet food. - -items.food.completefood.perfectfood.name=perfect food -items.food.completefood.perfectfood.desc=This is perfect food, it is good for worker. - -items.food.completefood.honeymeat.name=honey meat -items.food.completefood.honeymeat.desc=A honey meat. - -items.food.completefood.icecream.name=ice-cream -items.food.completefood.icecream.desc=A honey Icecream. - -items.food.completefood.vegetablesoup.name=vegetable soup -items.food.completefood.vegetablesoup.desc=Vegetable soup is prepared using vegetables and leaf vegetables as main ingredients. Some fruits can also be used, such as tomato, squash, and others. - -items.food.completefood.ediblegrass.name=Edible grass -items.food.completefood.ediblegrass.desc=Some simple vegetable. - -items.food.completefood.garbage.name=garbage -items.food.completefood.garbage.desc=Only garbage in here. - -items.food.completefood.crystalnucleus.name=crystal nucleus -items.food.completefood.crystalnucleus.desc=Sell it, don't eat. - -items.food.completefood.kebab.name=kebab -items.food.completefood.kebab.desc=Just some kind of kebab. - -items.food.completefood.hamburger.name=hamburger -items.food.completefood.hamburger.desc=A huge hamburger. - -items.food.completefood.chickennugget.name=chicken nugget -items.food.completefood.chickennugget.desc=Although it called chicken nugget, there no chicken in this food. - -items.food.completefood.herbmeat.name=herb meat -items.food.completefood.herbmeat.desc=It is made by meat and herb. - -items.food.completefood.porksoup.name=pork soup -items.food.completefood.porksoup.desc=Commercial soup became popular with the invention of canning in the 19th century, and today a great variety of canned and dried soups are on the market. - -items.food.completefood.honeyrice.name=honey rice -items.food.completefood.honeyrice.desc=It made by honey and rice and... bees? - -items.food.completefood.vegetablekebab.name=vegetable kebab -items.food.completefood.vegetablekebab.desc=It is like kebab, without meat. - -items.food.completefood.ricefood.name=rice -items.food.completefood.ricefood.desc=It is rice, yes, rice. - -items.food.completefood.fruitsalad.name=fruit salad -items.food.completefood.fruitsalad.desc=This food is made by fruit and water. In this world it don't need salad. - -items.food.completefood.foamedbeverage.name=foamed beverage -items.food.completefood.foamedbeverage.desc=This drink is like Coca-Cola. - -items.food.completefood.gel.name=gel -items.food.completefood.gel.desc=A simple gel, can be used on burning or cooking. - -items.food.completefood.honeygel.name=honey gel -items.food.completefood.honeygel.desc=Honey and gel combine perfect, - -items.food.completefood.honeywater.name=honey water -items.food.completefood.honeywater.desc=Made by honey and water. - -items.food.completefood.meatroll.name=meat roll -items.food.completefood.meatroll.desc=It made by scroll and meat. Yes, it need scroll. - -items.food.completefood.vegetableroll.name=vegetable roll -items.food.completefood.vegetableroll.desc=It is same as meat roll, but it is full with vegetables. - -items.food.completefood.chocolate.name=chocolate -items.food.completefood.chocolate.desc=pure chocolate, super bitter. - -items.food.completefood.foodfans.name=Silk noodles -items.food.completefood.foodfans.desc=Pay attention to cooking and eating. - -items.food.completefood.frenchfries.name=French fries -items.food.completefood.frenchfries.desc=Excess starch warning. - -items.food.wateritem.name=clean water -items.food.wateritem.desc=clean water made by dew, usually used on cooking. - -items.food.completefood.aflyfood.name=Fushigi-no rice ball -items.food.completefood.aflyfood.desc=a rice ball made by Alfred, have power from another world. - -###medicine -items.medicine.pill.ac_eat=EAT - -items.medicine.powerpill.name=power pill -items.medicine.powerpill.desc=This pill will make your stronger. - -items.medicine.hardpill.name=hard pill -items.medicine.hardpill.desc=This pill will improve your power. - -items.medicine.smashpill.name=smash pill -items.medicine.smashpill.desc=This pill will improve your defense. - -items.medicine.musicpill.name=music pill -items.medicine.musicpill.desc=This pill will improve your skill. - -items.medicine.magicpill.name=magic pill -items.medicine.magicpill.desc=This pill will improve your magic. - -items.medicine.shootpill.name=shoot pill -items.medicine.shootpill.desc=This pill will improve your shoot. - -items.medicine.bluemilk.name=blue milk -items.medicine.bluemilk.desc=This mushroom oozes a milky blue substance.You feel your senses slipping. It can improve your speed, and heal everyone in this place. - -items.medicine.deathcap.name=death cap mushroom -items.medicine.deathcap.desc=A deadly-looking fungus found growing in the dungeon. It is too dangerous. - -items.medicine.earthstar.name=earthstar mushroom -items.medicine.earthstar.desc=A tiny bit of an unknown world grows in this mushroom. It looks like blade. - -items.medicine.goldenjelly.name=golden jelly mushroom -items.medicine.goldenjelly.desc=A gelatinous fungi covered in a sticky ooze. Looks like it might cause some havoc. - -items.medicine.jackolantern.name=jack o lantern mushroom -items.medicine.jackolantern.desc=A strange heat emminates from this mushroom. It is easy to fire. - -items.medicine.pixieparasol.name=pixie parasol mushroom -items.medicine.pixieparasol.desc=These mushrooms seem to spin in front of your eyes. You hear fleeting laughter. - -items.medicine.greenspore.name=green spore mushroom -items.medicine.greenspore.not_time=nothing happend. -items.medicine.greenspore.desc=This is new mushroom, It is full with dew power. - -###journal pages -items.journalpages.journalpage.name=Location -items.journalpages.journalpage.desc=Location -items.journalpages.safespotpage.name=Housing contract -items.journalpages.safespotpage.desc=A title deed of luxury villas with three rooms, two halls, one kitchen, one bathroom and one terrace. -items.journalpages.sokoban1.name=Otiluck's journal -- sokoban1 -items.journalpages.sokoban1.desc=Location of sokoban1\n\nMy hometown, was a beautiful place in 50 years ago. Lost of people come here for magic stone, great waterfall, delicious food, or something wonderful. \n\nBut because of empire's industrial pollution and low-quality visitors, my hometown become worse. So I decide to save my town. -items.journalpages.sokoban2.name=Otiluck's journal -- sokoban2 -items.journalpages.sokoban2.desc=Location of sokoban 2\n\nIt spend lots of time to collect useful information, I finally find this place. I see some huge box, traps and treasure in there.\n\nI'm sure this is some quest, and I know I can solve it. -items.journalpages.sokoban3.name=Otiluck's journal -- sokoban3 -items.journalpages.sokoban3.desc=Location of sokoban 3\n\nI found that island, a castle appare after I use Dust of Appearance.\n\nI know this castle has same builder as that prison. There are same traps, same boxes, same tr... wait, a huge mirror with mirror weapon?! I must reduce my voice.\n\nI will never give up before I find my way to save my hometown. -items.journalpages.sokoban4.name=Otiluck's journal -- sokoban4 -items.journalpages.sokoban4.desc=Location of sokoban 4\n\nThose creatures is fear when I close them, and they will transport me in somewhere else. \n\nIt was 61st time. I find a big stone tablet, and I can see some unknown word in there. If I can understand what is this says, I may communication with that creature. -items.journalpages.town.name=Invitation from town -items.journalpages.town.desc=Location of Dolye town.\n\n_Sorry, no magic stone selled in here now._ -items.journalpages.energycore.name=Otiluck's journal -- about the code -items.journalpages.energycore.desc=The address of the energy core.\n\nDescription: This is an automatic attack creature. It was created by zot and I controlled the creature after I defeated zot. -items.journalpages.vault.name=Spring Festival Land -items.journalpages.vault.desc=A simple location with number 25/1/2020. - -###challenge list -items.challengelists.challengelist.name=Challenges -items.challengelists.challengelist.desc=This paper was lost its magic power. You can see some word at the back of this paper.\n_Hello, my name is Ren, Because someone's time magic, some transport item like this can't work now. Find me in Dolye town and I will help you fix that._ - -items.challengelists.sewerchallenge.name=sewer challenge -items.challengelists.prisonchallenge.name=prison challenge -items.challengelists.cavechallenge.name=cave challenge -items.challengelists.citychallenge.name=city challenge -items.challengelists.couragechallenge.name=Courage Trial -items.challengelists.couragechallenge.desc=This book was lost its magic power. \nIt is courage trial -items.challengelists.powerchallenge.name=Power Trial -items.challengelists.powerchallenge.desc=This book was lost its magic power.\nIt is power trial. -items.challengelists.wisdomchallenge.name=Wisdom Trial -items.challengelists.wisdomchallenge.desc=This book was lost its magic power.\nIt is wisdom trial. - -###keys -items.keys.goldenkey.name=golden key -items.keys.goldenkey.desc=The notches on this golden key are tiny and intricate. Maybe it can open some chest lock? -items.keys.ironkey.name=iron key -items.keys.ironkey.desc=The notches on this ancient iron key are well worn; its leather lanyard is battered by age. What door might it open? -items.keys.skeletonkey.name=skeleton key -items.keys.skeletonkey.desc=This key looks serious: its head is shaped like a skull. Probably it can open some serious door. -items.keys.goldenskeletonkey.name=Crystal key -items.keys.goldenskeletonkey.desc=The notches on this crystal key are tiny and intricate. Maybe it can open some chest lock? -items.keys.ironkey.depth=iron key %d - -###misc -items.misc.autopotion.name=auto potion -items.misc.autopotion.desc=Wearing this charm will automatically use a potion when your life gets low. - -items.misc.miscequippable.2miscs=you can only wear 3 misc items at a time -items.misc.miscequippable.desc=This is a misc item. - -items.misc.spectacles.name=spectacles -items.misc.spectacles.desc=I wonder what these do??? - -###nornstone -items.nornstone.nornstone.name=magic stone -items.nornstone.nornstone.desc=A magic stone from Dolye town. - -items.nornstone.greennornstone.name=green magic stone -items.nornstone.greennornstone.desc=A green magic stone from Dolye town. - -items.nornstone.bluenornstone.name=blue magic stone -items.nornstone.bluenornstone.desc=A blue magic stone from Dolye town. - -items.nornstone.orangenornstone.name=orange magic stone -items.nornstone.orangenornstone.desc=A magic stone from Dolye town. - -items.nornstone.purplenornstone.name=purple magic stone -items.nornstone.purplenornstone.desc=A violet magic stone from Dolye town. - -items.nornstone.yellownornstone.name=yellow magic stone -items.nornstone.yellownornstone.desc=A yellow magic stone from Dolye town. - -###potions -items.potions.potion.ac_drink=DRINK -items.potions.potion.turquoise=turquoise -items.potions.potion.crimson=crimson -items.potions.potion.azure=azure -items.potions.potion.jade=jade -items.potions.potion.golden=golden -items.potions.potion.magenta=magenta -items.potions.potion.charcoal=charcoal -items.potions.potion.ivory=ivory -items.potions.potion.amber=amber -items.potions.potion.bistre=bistre -items.potions.potion.indigo=indigo -items.potions.potion.silver=silver -items.potions.potion.aqua=aqua -items.potions.potion.violet=violet -items.potions.potion.unknown_name=%s potion -items.potions.potion.unknown_desc=This flask contains a swirling %s liquid. Who knows what it will do when drunk or thrown? -items.potions.potion.harmful=Harmful potion! -items.potions.potion.beneficial=Beneficial potion -items.potions.potion.yes=Yes, I know what I'm doing -items.potions.potion.no=No, I changed my mind -items.potions.potion.sure_drink=Are you sure you want to drink it? In most cases you should throw such potions at your enemies. -items.potions.potion.sure_throw=Are you sure you want to throw it? In most cases it makes sense to drink it. -items.potions.potion.shatter=%s has been destory. -items.potions.potion.stop=Strong magic make this potion dispal... -items.potions.potion.locked=Locked magic prevents you to use this potion. - -items.potions.potionofexperience.name=potion of experience -items.potions.potionofexperience.desc=The storied experiences of multitudes of battles reduced to liquid form, this draught will instantly raise your power for some time. -items.potions.potionoffrost.name=potion of frost -items.potions.potionoffrost.desc=Upon exposure to open air this chemical will evaporate into a freezing cloud, causing any creature that contacts it to be frozen in place unable to act and move. The freezing effect is much stronger if the environment is wet. -items.potions.potionofhealing.name=potion of healing -items.potions.potionofhealing.heal=Your wounds heal completely. -items.potions.potionofhealing.desc=An elixir that will instantly return you to full health and cure poison. -items.potions.potionofinvisibility.name=potion of invisibility -items.potions.potionofinvisibility.invisible=You see your hands turn invisible! -items.potions.potionofinvisibility.desc=Drinking this potion will render you temporarily invisible. While invisible, enemies will be unable to see you. Attacking an enemy, as well as using a wand or a scroll before enemy's eyes, will dispel the effect. -items.potions.potionoflevitation.name=potion of levitation -items.potions.potionoflevitation.float=You float into the air! -items.potions.potionoflevitation.desc=Drinking this curious liquid will cause you to hover in the air, able to drift effortlessly over traps and pits. Throwing this potion will create a cloud of unrefined gas, disorienting anything caught in it. -items.potions.potionofliquidflame.name=potion of liquid flame -items.potions.potionofliquidflame.desc=This flask contains an unstable compound which will burst violently into flame upon exposure to open air. -items.potions.potionofmight.name=potion of might -items.potions.potionofmight.msg_1=+15 ht -items.potions.potionofmight.desc=This powerful liquid will course through your muscles, permanently increasing your health by 15 points. -items.potions.potionofmindvision.name=potion of mind vision -items.potions.potionofmindvision.see_mobs=You can somehow feel the presence of other creatures' minds! -items.potions.potionofmindvision.see_none=You can somehow tell that you are alone on this level at the moment. -items.potions.potionofmindvision.desc=After drinking this, your mind will become attuned to the psychic signature of distant creatures, enabling you to sense biological presences through walls. Also this potion will permit you to see through nearby walls and doors. -items.potions.potionofparalyticgas.name=potion of paralytic gas -items.potions.potionofparalyticgas.desc=Upon exposure to open air, the liquid in this flask will vaporize into a numbing yellow haze. Anyone who inhales the cloud will be paralyzed instantly, unable to move for some time after the cloud dissipates. This item can be thrown at distant enemies to catch them within the effect of the gas. -items.potions.potionofpurity.name=potion of purification -items.potions.potionofpurity.freshness=You feel uncommon freshness in the air. -items.potions.potionofpurity.no_smell=You've stopped sensing any smells! -items.potions.potionofpurity.desc=This reagent will quickly neutralize all harmful gases in the area of effect. Drinking it will give you a temporary immunity to such gases. -items.potions.potionofstrength.name=potion of strength -items.potions.potionofstrength.msg_1=+1 str -items.potions.potionofstrength.msg_2=Newfound strength surges through your body. -items.potions.potionofstrength.desc=This powerful liquid will course through your muscles, permanently increasing your strength by one point. -items.potions.potionoftoxicgas.name=potion of toxic gas -items.potions.potionoftoxicgas.desc=Uncorking or shattering this pressurized glass will cause its contents to explode into a deadly cloud of toxic green gas. You might choose to fling this potion at distant enemies instead of uncorking it by hand. -items.potions.potionofhaste.name=potion of haste -items.potions.potionofhaste.effect=You move fast! -items.potions.potionofhaste.desc=After use this you will move fast. -items.potions.potionofmending.name=potion of mending -items.potions.potionofmending.effect=your wound heal fast. -items.potions.potionofmending.desc=Drink it will make you heal fast. -items.potions.potionofoverhealing.name=potion of life -items.potions.potionofoverhealing.effect=You heal completely and fill with a magical inner strength! -items.potions.potionofoverhealing.fill=gain %s ex health. -items.potions.potionofoverhealing.desc=An elixir that will instantly return you to full health, cures ailments, and overfills your health. - -###quest items -items.quest.ceremonialcandle.name=ceremonial candle -items.quest.ceremonialcandle.desc=A set of candles, melted down and fused together through use.\n\nAlone they are worthless, but used with other candles in a pattern, they can focus the energy for a summoning ritual. -items.quest.corpsedust.name=corpse dust -items.quest.corpsedust.desc=The ball of corpse dust doesn't differ outwardly from a regular dust ball. But you can feel a malevolent energy lurking within it.\n\nGetting rid of it as soon as possible would be a good idea. -items.quest.darkgold.name=dark gold ore -items.quest.darkgold.desc=This metal is called dark not because of its color (it doesn't differ from the normal gold), but because it melts under the daylight, making it useless on the surface. -items.quest.dwarftoken.name=dwarf token -items.quest.dwarftoken.desc=Many dwarves and some of their larger creations carry these small pieces of metal of unknown purpose. Maybe they are jewelry or maybe some kind of ID. Dwarves are strange folk. -items.quest.embers.name=elemental embers -items.quest.embers.desc=Special embers which can only be harvested from young fire elementals. They radiate thermal energy. -items.quest.pickaxe.name=pickaxe -items.quest.pickaxe.ac_mine=MINE -items.quest.pickaxe.no_vein=There is no dark gold vein near you to mine. -items.quest.pickaxe.desc=This is a large and sturdy tool for breaking rocks. Probably it can be used as a weapon. -items.quest.ratskull.name=giant rat skull -items.quest.ratskull.desc=A surprisingly large rat skull. It would make a great hunting trophy, if you had a wall to mount it on. -items.quest.mushroom.name=Dew mushroom -items.quest.mushroom.desc=A toadstool mushroom! Growing here in this dank dungeon! Who would have imagined such a thing! -items.quest.gnollclothes.name=Gnoll clothes -items.quest.gnollclothes.desc=A small, delicate windbreaker doesn't seem to be the size of a human being. - -###rings -items.rings.ring.diamond=diamond -items.rings.ring.opal=opal -items.rings.ring.garnet=garnet -items.rings.ring.ruby=ruby -items.rings.ring.amethyst=amethyst -items.rings.ring.topaz=topaz -items.rings.ring.onyx=onyx -items.rings.ring.tourmaline=tourmaline -items.rings.ring.emerald=emerald -items.rings.ring.sapphire=sapphire -items.rings.ring.quartz=quartz -items.rings.ring.agate=agate -items.rings.ring.cursed=The ring tightens around your finger painfully! -items.rings.ring.unknown_name=%s ring -items.rings.ring.unknown_desc=This metal band is adorned with a large %s gem that glitters in the darkness. Who knows what effect it has when worn? -items.rings.ring.known=This is a %s -items.rings.ring.identify=You are now familiar enough with your %s to identify it. It is %s. -items.rings.ring.on_finger=The %s is on your finger. -items.rings.ring.cursed_worn=Because this ring is cursed, you are powerless to remove it. -items.rings.ring.curse_known=You can feel a malevolent magic lurking within the %s. -items.rings.ring.toomany=you can only wear 3 misc items at a time. - -items.rings.ringofaccuracy.name=ring of accuracy -items.rings.ringofaccuracy.stats=ACU improve _ %1$d _ , Attack range improve _%2$d_ . -items.rings.ringofaccuracy.desc=This ring increases your focus, reducing your enemy's ability to dodge your attacks. Also every 10 level it can make player gain one more attack distance. - -items.rings.ringofelements.name=ring of elements -items.rings.ringofelements.stats=Gain element resistance. -items.rings.ringofelements.desc=This ring provides resistance to different elements, such as fire, electricity, gases etc. Also it decreases duration of negative effects. - -items.rings.ringofevasion.name=ring of evasion -items.rings.ringofevasion.stats=Dex improve _%d_ , steath improve _%2$d_ . -items.rings.ringofevasion.desc=This ring obfuscates the true position of the wearer, making them harder to detect and attack. A degraded ring will instead make the user easier to detect and strike. Every 5 level it will give wearer 1 steath, but max steath improve is 6. - -items.rings.ringofforce.name=ring of force -items.rings.ringofforce.stats=Melee damage improve _%1$s%%_ . If you don't have melee weapon, you will deal _ %2$d- %3$d_ base damage in melee attack. -items.rings.ringofforce.desc=This ring enhances the force of the wearer's blows. The max level of this ring is 30. - -items.rings.ringoffuror.name=ring of furor -items.rings.ringoffuror.stats=Melee attack speed improve _%s%%_ . -items.rings.ringoffuror.desc=This ring grants the wearer an inner fury, allowing them to attack more rapidly. The max level of this ring is 30. - -items.rings.ringofhaste.name=ring of haste -items.rings.ringofhaste.stats=Move speed improve _%s%%_ . -items.rings.ringofhaste.desc=This ring reduces the stress of movement on the wearer, allowing them to run at superhuman speeds. The max level of this ring is 30. - -items.rings.ringofmagic.name=ring of magic -items.rings.ringofmagic.stats=MIG improve _%d_ . -items.rings.ringofmagic.desc=Your wands will become more powerful in the arcane field that radiates from this ring. The max level of this ring is 30. - -items.rings.ringofmight.name=ring of might -items.rings.ringofmight.stats=STR improve _%1$d_ , HT improve _%2$d_ . -items.rings.ringofmight.desc=This ring enhances the physical traits of the wearer, granting them greater physical constitution. Every 5 level it will give wearer one strength. - -items.rings.ringofsharpshooting.name=ring of sharpshooting -items.rings.ringofsharpshooting.stats=Range weapon ACU improve _%1$d_ , Range weapon damage improve _%2$s%%_ . -items.rings.ringofsharpshooting.desc=This ring enhances the wearer's precision and aim, which will make all projectile weapons more accurate and durable. - -items.rings.ringoftenacity.name=ring of tenacity -items.rings.ringoftenacity.stats=Damage resistance _%s%%_ . -items.rings.ringoftenacity.desc=This ring will allow the wearer to resist normally mortal strikes. The max level of this ring is 30. - -items.rings.ringofenergy.name=ring of energy -items.rings.ringofenergy.stats=Wand charge speed improve _%s%%_ . -items.rings.ringofenergy.desc=Your wands will recharge more quickly in the arcane field that radiates from this ring. - -###scrolls -items.scrolls.scroll.ac_read=READ -items.scrolls.scroll.kaunan=KAUNAN -items.scrolls.scroll.sowilo=SOWILO -items.scrolls.scroll.laguz=LAGUZ -items.scrolls.scroll.yngvi=YNGVI -items.scrolls.scroll.gyfu=GYFU -items.scrolls.scroll.raido=RAIDO -items.scrolls.scroll.isaz=ISAZ -items.scrolls.scroll.mannaz=MANNAZ -items.scrolls.scroll.naudiz=NAUDIZ -items.scrolls.scroll.berkanan=BERKANAN -items.scrolls.scroll.odal=ODAL -items.scrolls.scroll.tiwaz=TIWAZ -items.scrolls.scroll.ncosrane=NCOSRANE -items.scrolls.scroll.nendil=NENDIL -items.scrolls.scroll.libra=LIBRA -items.scrolls.scroll.unknown_name=scroll "%s" -items.scrolls.scroll.unknown_desc=This parchment is covered with indecipherable writing, and bears a title of rune %s. Who knows what it will do when read aloud? -items.scrolls.scroll.blinded=You can't read a scroll while blinded. -items.scrolls.scroll.locked=You can't read a scroll while locked. -items.scrolls.scroll.silent=You can't read a scroll while be silent. -items.scrolls.scroll.cursed=Your cursed spellbook prevents you from invoking this scroll's magic! A scroll of remove curse might be strong enough to still work though... -items.scrolls.scroll.prevent=Something scrambles the scrying magic! -items.scrolls.scrollofmagicmapping.prevent=Magic mapping can't work in here. -items.scrolls.scrollofmirrorimage.prevent=Magic mirror can't work here. - -items.scrolls.inventoryscroll.warning=Do you really want to cancel this scroll usage? It will be consumed anyway. -items.scrolls.inventoryscroll.yes=Yes, I'm positive -items.scrolls.inventoryscroll.no=No, I changed my mind -items.scrolls.scrollofidentify.name=scroll of identify -items.scrolls.scrollofidentify.inv_title=Select an item to identify -items.scrolls.scrollofidentify.it_is=It is %s -items.scrolls.scrollofidentify.desc=This scroll permanently reveals all of the secrets of a single item. -items.scrolls.scrolloflullaby.name=scroll of lullaby -items.scrolls.scrolloflullaby.sooth=The scroll utters a soothing melody. You feel very sleepy. -items.scrolls.scrolloflullaby.desc=Reading this scroll emits a soothing melody will lull all who hear it into a deep magical sleep. -items.scrolls.scrollofmagicalinfusion.name=scroll of magical infusion -items.scrolls.scrollofmagicalinfusion.inv_title=Select an item to infuse -items.scrolls.scrollofmagicalinfusion.infuse=your %s is infused with arcane energy! -items.scrolls.scrollofmagicalinfusion.desc=This scroll will infuse a weapon or armor with powerful magical energy.\n\nIn addition to being upgraded, A weapon will gain a magical enchantment, or armor will be imbued with a magical glyph.\n\nIf the item already has an enchantment or glyph, it will never be erased by this scroll. -items.scrolls.scrollofmagicmapping.name=scroll of magic mapping -items.scrolls.scrollofmagicmapping.layout=You are now aware of the level layout. -items.scrolls.scrollofmagicmapping.desc=When this scroll is read, an image of crystal clarity will be etched into your memory, alerting you to the precise layout of the level. The locations of items, traps, hidden door and creatures will remain unknown. -items.scrolls.scrollofmirrorimage.name=scroll of mirror image -items.scrolls.scrollofmirrorimage.desc=The incantation on this scroll will create illusionary twins of the reader, which will chase their enemies. -items.scrolls.scrollofpsionicblast.name=scroll of psionic blast -items.scrolls.scrollofpsionicblast.ondeath=The Psionic Blast tears your mind apart... -items.scrolls.scrollofpsionicblast.desc=This scroll contains destructive energy that can be channeled to tear apart the minds of all visible creatures. The power unleashed by the scroll will also temporarily blind, stun, and seriously harm the reader. -items.scrolls.scrollofrage.name=scroll of rage -items.scrolls.scrollofrage.roar=The scroll emits an enraging roar that echoes throughout the dungeon! -items.scrolls.scrollofrage.desc=When read aloud, this scroll will unleash a great roar that draws all enemies to the reader, and enrages nearby ones. -items.scrolls.scrollofrecharging.name=scroll of recharging -items.scrolls.scrollofrecharging.surge=A surge of energy courses through your body, invigorating your wands! -items.scrolls.scrollofrecharging.desc=The raw magical power bound up in this parchment will, when released, charge up all the users wands over time. -items.scrolls.scrollofremovecurse.name=scroll of remove curse -items.scrolls.scrollofremovecurse.cleansed=Your pack glows with a cleansing light, and a malevolent energy disperses. -items.scrolls.scrollofremovecurse.not_cleansed=Your pack glows with a cleansing light, but nothing happens. -items.scrolls.scrollofremovecurse.desc=The incantation on this scroll will instantly strip from the reader's weapon, armor, rings and carried items any evil enchantments that might prevent the wearer from removing them. -items.scrolls.scrollofteleportation.name=scroll of teleportation -items.scrolls.scrollofteleportation.tele=In a blink of an eye you were teleported to another location of the level. -items.scrolls.scrollofteleportation.no_tele=Strong magic aura of this place prevents you from teleporting! -items.scrolls.scrollofteleportation.desc=The spell on this parchment instantly transports the reader to a random location on the dungeon level. It can be used to escape a dangerous situation, but the unlucky reader might find themselves in an even more dangerous place. -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 dispel the effect. -items.scrolls.scrollofupgrade.name=scroll of upgrade -items.scrolls.scrollofupgrade.inv_title=Select an item to upgrade -items.scrolls.scrollofupgrade.looks_better=your %s certainly looks better now -items.scrolls.scrollofupgrade.desc=This scroll will upgrade a single item, improving its quality. A wand will increase in power and in number of charges; a weapon will inflict more damage; a suit of armor will better absorb damage; the effect of a ring on its wearer will intensify. Weapons and armor will also require less strength to use, and any curses on the item will be lifted. -items.scrolls.inventoryscroll.title=choose one item - -items.scrolls.scrollofmultiupgrade.better=your %s certainly looks better now -items.scrolls.scrollofmultiupgrade.name=scroll of multi upgrade -items.scrolls.scrollofmultiupgrade.title=Choose one item. -items.scrolls.scrollofmultiupgrade.desc=This scroll will upgrade a single item, improving its quality. A wand will increase in power and in number of charges; a weapon will inflict more damage; a suit of armor will better absorb damage; the effect of a ring on its wearer will intensify. Weapons and armor will also require less strength to use, and any curses on the item will be lifted. -items.scrolls.scrollofregrowth.layout=plants grow in this floor, and you are now aware of the level layout. -items.scrolls.scrollofregrowth.name=scroll of regrowth -items.scrolls.scrollofregrowth.desc=The magic in the scroll feels powerful and inviting. The dungeon cries out for you to read it. -items.scrolls.scrollofsacrifice.name=scroll of sacrifice -items.scrolls.scrollofsacrifice.desc=A scroll that boosts strength at a certain cost. It is harmless at start, the more use, the dangerous you will be. -items.scrolls.scrollofsacrifice.use_1=+5 HT -items.scrolls.scrollofsacrifice.use_2=+1 STR -items.scrolls.scrollofsacrifice.use_lot=You don't feel good. - -###wands -items.wands.wand.ac_zap=ZAP -items.wands.wand.fizzles=Your wand fizzles; it must not have enough charge. -items.wands.wand.self_target=You can't target you self! -items.wands.wand.identify=You know your %s. -items.wands.wand.cursed=This wand is cursed, making its magic chaotic and random. -items.wands.wand.curse_discover=This %s is cursed! -items.wands.wand.prompt=Choose a location to zap -items.wands.wand.silent=Silent magic stop you cast magic. - -items.wands.wandoferror.name=Wand of Error -items.wands.wandoferror.desc=It is a error -items.wands.wandoferror.stats_desc=??? - -items.wands.wandofcharm.name=Wand of Charm -items.wands.wandofcharm.desc=A fairly plainly shaped wand, it stands out due to its magenta hue and pitch black gem at the tip. -items.wands.wandofcharm.stats_desc=This wand will make enemies be charmed. - -items.wands.wandofmeteorite.name=Wand of Meteorite -items.wands.wandofmeteorite.desc=This wand is made of a sort of meteorite, with gold trim and a round black gem at the tip. It feels very weighty in your hand. -items.wands.wandofmeteorite.stats_desc=This wand can create a mark to call the meteor attack at the target position. The power of the explosion will cause _%1$d-%2$d_ damage and is strong enough to stun most enemies. - -items.wands.wandoftcloud.name=Wand of Thundercloud -items.wands.wandoftcloud.desc=This stick is made of a conductive metal, with a tiny black cloud at the top of it. Fortunately, you won't feel uncomfortable holding your hand. -items.wands.wandoftcloud.stats_desc=This wand can create an automatic cloud at the target site. -items.wands.wandoftcloud.more_charge=Your need more charge to sommon thundercloud. -items.wands.wandoftcloud$tcloud.name=Thundercloud -items.wands.wandoftcloud$tcloud.desc=A Thundercloud -items.wands.wandoftcloud$stcloud.name=KEKE -items.wands.wandoftcloud$stcloud.desc=KEKE _IS_ MOVE, MOB _WILL_ DEAD. - -items.wands.wandofblood.name=Wand of Blood -items.wands.wandofblood.desc=This wand radiates dark energy, if that weren't already obvious from the small decorative skull shaped onto its tip. -items.wands.wandofblood.stats_desc=This wand will release a blast of corrupting energy, attempting to bend enemies' soul to your will. It will deals _%1$d-%2$d damage,_ and heal yourself. - -items.wands.wandofdisintegration.name=Wand of Disintegration -items.wands.wandofdisintegration.desc=This wand is made from a solid smooth chunk of obsidian, with a deep purple light running up its side, ending at the tip. It glows with destructive energy, waiting to shoot forward. -items.wands.wandofdisintegration.stats_desc=This wand shoots a beam that pierces any obstacle, and will go farther the more it is upgraded. The beam deals _%1$d-%2$d damage,_ and will also deal bonus damage for each enemy and wall it penetrates. - -items.wands.wandoffirebolt.name=Wand of Firebolt -items.wands.wandoffirebolt.desc=This wand is made from red-lacquered wood with golden leaf used liberally to make it look quite regal. It crackles and hisses at the tip, eager to unleash its powerful magic. -items.wands.wandoffirebolt.stats_desc=This wand produces a blast of fire when used, extending out into a cone shape. It will cause. _%1$d-%2$d damage_ . - -items.wands.wandofflock.name=Wand of Flock -items.wands.wandofflock.desc=This wand looks like an ordinary stick, but the gold ornaments at both ends make it look less ordinary. -items.wands.wandofflock.stats_desc=It can summon flock. -items.wands.wandofflock.guard=Guard appear because of this magic. -items.wands.wandofflock$magicsheep.desc=This is a magic sheep. What's so magical about it? You can't kill it. It will stand there until it magically fades away, all the while chewing cud with a blank stare. -items.wands.wandofflock$magicsheep.name=magic sheep -items.wands.wandofflock$magicbombsheep.desc=LEVEL _TOO_ HARD, BABA _IS_ DONE. BETTER _LOOK_ OUT, BABA _HAS_ GUN. -items.wands.wandofflock$magicbombsheep.name=BABA - - -items.wands.wandoflightning.name=Wand of Lightning -items.wands.wandoflightning.desc=This wand is made out of solid metal, making it surprisingly heavy. Two prongs curve together at the tip, and electricity arcs between them. -items.wands.wandoflightning.stats_desc=This wand sends powerful lightning arcing through whatever it is shot at, dealing _%1$d-%2$d damage._ This electricity can bounce between many nearby foes, spreading damage between them. The lightning and damage spread much more effectively in water. If you're too close, you may get shocked as well! - -items.wands.wandofmagicmissile.name=Wand of Magic missile -items.wands.wandofmagicmissile.desc=This fairly plain wand launches missiles of pure magical energy. While not as strong as other wands, it makes up for it somewhat with more available charges. -items.wands.wandofmagicmissile.stats_desc=Each bolt from this wand deals _%1$d-%2$d damage,_ and has no additional effects. - -items.wands.wandofpoison.name=Wand of Poison -items.wands.wandofpoison.desc=This wand has a purple body which opens to a brilliant green gem. -items.wands.wandofpoison.stats_desc=This wand shoots a bolt which explodes into a cloud of vile venomous gas at a targeted location. Anything caught inside this cloud will take continual damage, increasing with time. - -items.wands.wandoflight.name=Wand of Light -items.wands.wandoflight.desc=This wand is made of a solid piece of translucent crystal, like a long chunk of smooth glass. Small bits of colorful light dance around the tip of the wand, eager to burst forth. -items.wands.wandoflight.stats_desc=This wand shoots rays of light which cut through the darkness of the dungeon. The beam can blind enemies, and deals _%1$d-%2$d damage._ - -items.wands.wandoffreeze.name=Wand of Freeze -items.wands.wandoffreeze.desc=This wand seems to be made out of some kind of magical ice. It grows brighter towards its rounded tip. It feels very cold when held, but somehow your hand stays warm. -items.wands.wandoffreeze.stats_desc=This wand shoots blasts of icy energy toward your foes, dealing _%1$d-%2$d damage_ and chilling, which reduces speed. The effect seems stronger in water. Chilled and frozen enemies take less damage from this wand, as they are already cold. - -items.wands.wandofflow.name=Wand of Flow -items.wands.wandofflow.desc=The wand is shorter than the ordinary wand, but there is a small fountain at the top of this wand. -items.wands.wandofflow.stats_desc=The stick can spray a powerful flow of water into the target site, knocking off the target, deals _%1$d-%2$d damage_ and wetting it. - -items.wands.wandofacid.name=Wand of Acid -items.wands.wandofacid.desc=This wand is made from a thin shaft of expertly carved wood. Somehow it is still alive and vibrant, bright green like a young tree's core. -items.wands.wandofacid.stats_desc=When used, this wand will blast magical acid energy. This magic will deals _%1$d-%2$d damage_ , and add acid into them. - -items.wands.cannonofmage.name=Reno's rainbowr cannon -items.wands.cannonofmage.desc=An ancient relic find in Uldum. -items.wands.cannonofmage.stats_desc=When used, this wand will blast random energy. This magic will deals _%1$d-%2$d damage, and gain more damage from user's magic skill. - -###enchantments -items.weapon.enchantments.enchantmentdark.name=dark %s -items.weapon.enchantments.enchantmentdark.desc=This enchantment strike fear into enemies, causing them to flee from the attacker. It also will dear some dark damage. - -items.weapon.enchantments.enchantmentfire.name=fire %s -items.weapon.enchantments.enchantmentfire.desc=This enchantment causes flames to spit forth from a weapon, burning enemies and terrain alike. It also will dear some fire damage. - -items.weapon.enchantments.enchantmentlight.name=light %s -items.weapon.enchantments.enchantmentlight.desc=This enchantment strike light into enemies, causing much more damage on evil mobs. It also will dear some light damage. - -items.weapon.enchantments.enchantmentenergy.name=energy %s -items.weapon.enchantments.enchantmentenergy.desc=This enchantment has chance to improve user's attack. It also will dear some physics damage. - -items.weapon.enchantments.enchantmentearth.name=earth %s -items.weapon.enchantments.enchantmentearth.desc=This enchantment strike seed into enemies, healing other life near that target. It also will dear some earth damage. - -items.weapon.enchantments.enchantmentshock.name=electric %s -items.weapon.enchantments.enchantmentshock.desc=This enchantment dealing extra damage to all nearby enemies. It also will dear some storm damage. - -items.weapon.enchantments.enchantmentice.name=ice %s -items.weapon.enchantments.enchantmentice.desc=This enchantment slowing enemy's' movement and attacks. It also will dear some ice damage. - -items.weapon.enchantments.enchantmentdark2.name=weakness %s -items.weapon.enchantments.enchantmentdark2.desc=This enchantment can reduce target' melee attack. - -items.weapon.enchantments.enchantmentfire2.name=tar %s -items.weapon.enchantments.enchantmentfire2.desc=This enchantment can add tar to target. - -items.weapon.enchantments.enchantmentlight2.name=shining %s -items.weapon.enchantments.enchantmentlight2.desc=This enchantment can blind target. - -items.weapon.enchantments.enchantmentenergy2.name=dance %s -items.weapon.enchantments.enchantmentenergy2.desc=This enchantment can improve user's defense. - -items.weapon.enchantments.enchantmentearth2.name=acid %s -items.weapon.enchantments.enchantmentearth2.desc=This enchantment can add ooze to target. - -items.weapon.enchantments.enchantmentshock2.name=shock %s -items.weapon.enchantments.enchantmentshock2.desc=This enchantment can add static electricity to target. - -items.weapon.enchantments.enchantmentice2.name=coldwave %s -items.weapon.enchantments.enchantmentice2.desc=This enchantment can add cold and wet to target. - -items.weapon.enchantments.aresleech.name=drawing %s -items.weapon.enchantments.aresleech.desc=heal you slowly. -items.weapon.enchantments.aresleech.effect=It drawing %s energy from other mobs. -items.weapon.enchantments.aresleech$healdamage.name=extract -items.weapon.enchantments.aresleech$healdamage.desc=While your weapon's enchantment heal you slowly.\n\nYou will heal one health per turn until there is no healing left.\n\nHeal remaining: %d. - -items.weapon.enchantments.buzzsaw.name=overload%s -items.weapon.enchantments.buzzsaw.desc=use dews to deal more damage. -items.weapon.enchantments.buzzsaw.fuel=low power -items.weapon.enchantments.buzzsaw.off=overload off - -items.weapon.enchantments.cromluck.name=lucky%s -items.weapon.enchantments.cromluck.desc=deal another damage. - -items.weapon.enchantments.jupitershorror.name=horror%s -items.weapon.enchantments.jupitershorror.desc=horror will threaten the target - -items.weapon.enchantments.lokispoison.name=lokispoison%s -items.weapon.enchantments.lokispoison.desc=prison targrt. - -items.weapon.enchantments.neptuneshock.name=neptuneshock%s -items.weapon.enchantments.neptuneshock.desc=neptune will deal damage to many target. - -###relic -items.weapon.melee.relic.aressword.name=extract long sword -items.weapon.melee.relic.aressword.desc=This sword's long razor-sharp steel blade shines reassuringly, though its size does make it quite heavy. -- 00-EVAN\nWith the power of violet magic stone, this weapon can extract life energy from others. --Lynn -items.weapon.melee.relic.aressword.ac_regen=HEAL -items.weapon.melee.relic.cromcruachaxe.name=mince great axe -items.weapon.melee.relic.cromcruachaxe.desc=Meant to be wielded over the shoulder, this titanic axe is as powerful as it is heavy. -- 00-EVAN\nWith the power of orange magic stone, this weapon can crate shield to defence magic attack --Lynn -items.weapon.melee.relic.cromcruachaxe.ac_dispel=SHIELD -items.weapon.melee.relic.lokisflail.name=shadow flail -items.weapon.melee.relic.lokisflail.desc=A spiked ball attached to a handle by a length of chain. Very unwieldy, but devastating if it lands a solid hit. --00-EVAN\nWith the power of green magic stone, this weapon can hidden user in shadow. --Lynn -items.weapon.melee.relic.lokisflail.ac_stealth=SHADOW -items.weapon.melee.relic.neptunustrident.name=water trident -items.weapon.melee.relic.neptunustrident.desc=A Trident is a three-pronged spear. It is used for spear fishing and historically as a polearm. --Wiki\nWith the power of blue magic stone, it can change ground into water. -- Lynn -items.weapon.melee.relic.neptunustrident.ac_flood=RAIN -items.weapon.melee.relic.jupiterswraith.name=rock chakram -items.weapon.melee.relic.jupiterswraith.ac_explode=ROCK -items.weapon.melee.relic.jupiterswraith.desc=This razor-edged missile is made in such curious way that skilled user returns to the hands of the thrower on successful hit. --Consideredhamster\nWith the power of yellow magic stone, this weapon can crate rock fallen in target place. --Lynn - -###melee weapons - -items.weapon.melee.assassinsblade.name=assassins blade -items.weapon.melee.assassinsblade.desc=A small wavy blade made of obsidian, difficult to use despite being lightweight, but deadly if it finds the right mark.--00-Evan \n Puncture - -items.weapon.melee.battleaxe.name=battle axe -items.weapon.melee.battleaxe.desc=The enormous steel head of this battle axe puts considerable heft behind each stroke. --Watabou \n Rupture - -items.weapon.melee.club.name=club -items.weapon.melee.club.desc=A simple heavy wooden weapon. --Snof33 \n Blunt - -items.weapon.melee.dagger.name=dagger -items.weapon.melee.dagger.desc=A simple iron dagger with a well worn wooden handle. --Watabou \n Puncture - -items.weapon.melee.dualknive.name=Dual sword -items.weapon.melee.dualknive.desc=Two razor sharp blades for more damage.--Bilboldev \n Puncture - -items.weapon.melee.special.errorw.name=Error weapon -items.weapon.melee.special.errorw.desc=It is a error... \n Error - -items.weapon.melee.fightgloves.name=fight gloves -items.weapon.melee.fightgloves.desc=Such a weapon was formed by simple leather and metal tips. --Juh9870 \n Blunt - -items.weapon.melee.glaive.name=glaive -items.weapon.melee.glaive.desc=A polearm consisting of a sword blade on the end of a pole. --Watabou \n Cripple - -items.weapon.melee.gsword.name=greatsword -items.weapon.melee.gsword.desc=This towering blade inflicts heavy damage by investing its heft into every swing.--00-Evan \n Rupture - -items.weapon.melee.halberd.name=halberd -items.weapon.melee.halberd.desc=Some day, someone had a brilliant idea about combining reach of the spear with brutality of an axe.--Consideredhamster \n Cripple - -items.weapon.melee.handaxe.name=hand axe -items.weapon.melee.handaxe.desc=A light axe, most commonly used for felling trees. The wide blade works well against foes as well.--00-Evan \n Rupture - -items.weapon.melee.special.handcannon.name=handcannon -items.weapon.melee.special.handcannon.ac_on=ON -items.weapon.melee.special.handcannon.ac_off=OFF -items.weapon.melee.special.handcannon.power_on=Overload on! -items.weapon.melee.special.handcannon.power_off=Overload off! -items.weapon.melee.special.handcannon.desc=While initially flintlock weapons were a human invention, dwarves quickly adapted and improved the concept. Handcannons are heavy and require lots of gunpowder to use, but they are far more deadly than any other firearm.--Consideredhamster\nOverload - -items.weapon.melee.knuckles.name=knuckleduster -items.weapon.melee.knuckles.desc=A piece of iron shaped to fit around the knuckles. --Watabou \n Cripple - -items.weapon.melee.lance.name=lance -items.weapon.melee.lance.desc=The stout iron bars are connected to the huge cones, forming such a weapon. --Hmdzl001 \n Puncture - -items.weapon.melee.magebook.name=magic book -items.weapon.melee.magebook.desc=A magic book from tower. It is hard to read. --Coconut \n Blunt - -items.weapon.melee.nunchakus.name=nunchakus -items.weapon.melee.nunchakus.desc=The nunchakus are characterized in that the nunchakus also include a connection section connected with the connection rope.-- Hmdzl001 \n Blunt+ - -items.weapon.melee.rapier.name=rapier -items.weapon.melee.rapier.desc=A thin, long and sharp weapon. --Snof33 \n Puncture+ - -items.weapon.melee.special.runicblade.name=runic blade -items.weapon.melee.special.runicblade.ac_reforge=REFORGE -items.weapon.melee.special.runicblade.choose=Select an item to upgrade -items.weapon.melee.special.runicblade.reforged=You use runicblade to upgrade your weapon. -items.weapon.melee.special.runicblade.desc=A mysterious weapon from a distant land, with a bright blue blade. --00-Evan \n Refining - -items.weapon.melee.scimitar.name=scimitar -items.weapon.melee.scimitar.desc=A thick curved blade. Its shape allows for faster, yet less powerful attacks.--00-Evan \n Rupture+ - -items.weapon.melee.shortsword.name=short sword -items.weapon.melee.shortsword.desc=It is indeed quite short, just a few inches longer, than a dagger. --Watabou \n Rupture - -items.weapon.melee.spear.name=spear -items.weapon.melee.spear.desc=A slender wooden rod tipped with sharpened iron. --Watabou \n Cripple - -items.weapon.melee.special.spork.name=spork -items.weapon.melee.special.spork.desc=Is it a spoon? Is it a fork? It is neither and it is both. Mobs better respect! --Dachhack \n Binge - -items.weapon.melee.special.tekkokagi.name=tekkokagi -items.weapon.melee.special.tekkokagi.desc= A ninja weapon looks like the claws from wolverine. --Typedscroll \nDeadly - -items.weapon.melee.warhammer.name=war hammer -items.weapon.melee.warhammer.desc=Few creatures can withstand the crushing blow of this towering mass of lead and steel, but only the strongest of adventurers can use it effectively. --Watabou \n Blunt - -items.weapon.melee.whip.name=whip -items.weapon.melee.whip.desc=While the barbed length of rope at the end of this weapon deals poor damage, its reach cannot be matched. --00-Evan \n Cripple+ - -items.weapon.melee.special.wraithbreath.name=Wraith breath -items.weapon.melee.special.wraithbreath.desc=..............-- . \n.... - -items.weapon.melee.special.pumpkin.name=pumpkin lamp -items.weapon.melee.special.pumpkin.desc=Happy Halloween! \nIgnition, Lighting, Intimidation, Dessert - -items.weapon.melee.special.tree.name=christmas tree -items.weapon.melee.special.tree.desc=Merry Christmas! \n Sputter, Weak, Gift - -items.weapon.melee.special.firecracker.name=firecrackers -items.weapon.melee.special.firecracker.desc=The traditional 800 sounded firecrackers. Happy 2018 Spring Festival! \n Blowout, Ignition, Noisy, Intimidating - -items.weapon.melee.special.hookham.name=hook & ham -items.weapon.melee.special.hookham.desc=It is time to have fun. Let's cosplay pirates. Happy 2018 summer vacation! \n Gifts, Recovery, Rupture - -items.weapon.melee.triangolo.name=triangolo -items.weapon.melee.triangolo.desc=A percussion instrument made of thin steel bars bent into a triangle. A crisp and melodious sound is produced when struck with a metal bar. --?? \n Resonance - -items.weapon.melee.flute.name=flute -items.weapon.melee.flute.desc=The flute is a family of musical instruments in the woodwind group. --wiki\nResonance - -items.weapon.melee.wardurm.name=war durm -items.weapon.melee.wardurm.desc=The drum is a member of the percussion group of musical instruments. --wiki\nResonance+ - -items.weapon.melee.trumpet.name=trumpet -items.weapon.melee.trumpet.desc=A trumpet is a brass instrument commonly used in classical and jazz ensembles. --wiki\n Resonance - -items.weapon.melee.harp.name=harp -items.weapon.melee.harp.desc=The harp is a stringed musical instrument that has a number of individual strings running at an angle to its soundboard; the strings are plucked with the fingers. --wiki \n Resonance - -items.weapon.melee.woodenstaff.name=Wooden staff -items.weapon.melee.woodenstaff.desc=A staff carved from special wood that can be enchanted.--dachhack \nAccumulate - -items.weapon.melee.mace.name=mace -items.weapon.melee.mace.desc=The iron head of this weapon inflicts substantial damage. --Watabou\nAccumulate - -items.weapon.melee.holywater.name=holy water -items.weapon.melee.holywater.desc=A potion of bless water. --???\nAccumulate+ - -items.weapon.melee.prayerwheel.name=prayer wheel -items.weapon.melee.prayerwheel.desc=A simple paryer wheel --???\nAccumulate - -items.weapon.melee.stonecross.name=stone cross -items.weapon.melee.stonecross.desc=A huge cross made by stone. --Coconut\nAccumulate - -items.weapon.melee.special.goei.name=Reimus Goei -items.weapon.melee.special.goei.desc=A new goei.You can with it eorcism. --REN \nEvil Killer, Accumulate - -items.weapon.melee.special.brick.name=brick -items.weapon.melee.special.brick.desc=A common brick made of clay. Celebrating International Workers' Day!\nBlunt+, Fragile-Reward - -items.weapon.melee.special.lollipop.name=Lollipop -items.weapon.melee.special.lollipop.desc=This is a weapon, not a food. Happy Children Day! \n Sticky, Charming, Fragile-Lost - -items.weapon.melee.special.sjrbmusic.name=Song, Jump, Rap. Basketball, and play music -items.weapon.melee.special.sjrbmusic.desc=A famous jocker's clothes in China in 2019. Happy 2019 summer!\nResonance, Puncture+, Charm, Noise -items.weapon.melee.special.sjrbmusic.rap=Because your beaut!!! - -items.weapon.melee.zero.woodenhammer.name=Example Wooden hammer -items.weapon.melee.zero.woodenhammer.desc=A simple wooden hammer. -- Luigi.\nBlunt, Fragile - Critical - -items.weapon.melee.zero.emptypotion.name=empty bottle -items.weapon.melee.zero.emptypotion.desc=A empty bottle. -- ???\nResonance, Fragile - Critical - -items.weapon.melee.special.linksword.name=Legend of Hyrule -items.weapon.melee.special.linksword.desc=Legend weapons in Hyrule.\nLegend -items.weapon.melee.special.linksword.ac_wisdom=WISDOM PROTECT -items.weapon.melee.special.linksword.ac_power=POWER IMBUE -items.weapon.melee.special.linksword.ac_courage=COURAGE BOOMERANG -items.weapon.melee.special.linksword.power=This weapon looks better now. -items.weapon.melee.special.linksword.charge=charge: %d / %d -items.weapon.melee.special.linksword.no=No charge now. - -items.weapon.melee.special.diamondpickaxe.name=Steve's diamond pickaxe -items.weapon.melee.special.diamondpickaxe.desc=A diamond pickaxe.\nLooting, Unbreaking, Efficiency, Sharpness, Silk Touch, Smite -items.weapon.melee.special.diamondpickaxe.ac_mine=Mine -items.weapon.melee.special.diamondpickaxe.no_thing=No thing in here. -items.weapon.melee.special.diamondpickaxe.noise=Mine alerted nearby mobs. - -###items.weapon.melee..name= -###items.weapon.melee..desc= - -items.weapon.melee.meleeweapon.stats_known=This _tier-%1$d_ melee weapon deals _%2$d-%3$d damage_ and requires _%4$d strength_ to use properly. -items.weapon.melee.meleeweapon.stats_known2=This weapon acu is _%1$s_ , attack DLY is _%2$s_ , attack range is _%3$d_ . -items.weapon.melee.meleeweapon.stats_unknown=Typically this _tier-%1$d_ melee weapon deals _%2$d-%3$d damage_ and requires _%4$d strength_ to use properly. -items.weapon.melee.meleeweapon.too_heavy=this weapon is too heavy for you. -items.weapon.melee.meleeweapon.probably_too_heavy=It is probably too heavy to you. -items.weapon.melee.meleeweapon.excess_str=Because of your excess strength, you will deal up to _%d bonus damage_ with this weapon. -items.weapon.melee.meleeweapon.identify=You are now familiar enough with your weapon to identify it. -items.weapon.melee.meleeweapon.incompatible=Interaction of different types of magic has negated the enchantment on this weapon! -items.weapon.melee.meleeweapon.cursed_worn=Because this weapon is cursed, you are powerless to remove it. -items.weapon.melee.meleeweapon.cursed=You can feel a malevolent magic lurking within this weapon. -items.weapon.melee.meleeweapon.enchanted=It is enchanted, %s - -items.weapon.melee.meleeweapon.stats_desc=...\n - -items.weapon.weapon.identify=You are now familiar enough with your %s to identify it. It is %s. -items.weapon.weapon.avg_dmg=This missile weapon deals _%1$d-%2$d damage_ . -items.weapon.weapon.too_heavy=Because of your inadequate strength this weapon will hinder your attack speed, accuracy. -items.weapon.weapon.incompatible=Interaction of different types of magic has negated the enchantment on this weapon! - -items.weapon.weapon.charge=charge: %d / %d - -###test Guns -items.weapon.guns.toygun.name=Toy Gun -items.weapon.guns.toygun.desc=A simple toy. Happy 2019 new year and spring festival. -items.weapon.guns.toygun.ac_shoot=SHOOT -items.weapon.guns.toygun.ac_reload=RELOAD -items.weapon.guns.toygun.reloading=reloading... -items.weapon.guns.toygun.need_to_equip=You need equip this weapon first. -items.weapon.guns.toygun.full=full ammo -items.weapon.guns.toygun.empty=ammo is empty -items.weapon.guns.toygun.prompt=choose a target -items.weapon.guns.toygun.stats_known=This _tier-%1$d_ weapon deals _%2$d-%3$d damage_ and requires _%4$d strength_ to use properly. - -items.weapon.guns.toygun.stats_desc=...\n - -items.weapon.guns.toygun.charge=ammo: %d/%d - -items.weapon.guns.gunweapon.ac_shoot=SHOOT -items.weapon.guns.gunweapon.ac_reload=RELOAD -items.weapon.guns.gunweapon.ac_ammo=CHANGE AMMO -items.weapon.guns.gunweapon.reloading=reloading... -items.weapon.guns.gunweapon.stats_desc=...\n -items.weapon.guns.gunweapon.need_to_equip=You need equip this weapon first. -items.weapon.guns.gunweapon.prompt2=Choose special ammo. -items.weapon.guns.gunweapon.full=full ammo -items.weapon.guns.gunweapon.empty=ammo is empty -items.weapon.guns.gunweapon.imbue=You reload %d. -items.weapon.guns.gunweapon.ammo_add=Special ammo it have now: -items.weapon.guns.gunweapon.warning=Are you sure you want to add your ammo into this weapon? The old ammo will be lost. -items.weapon.guns.gunweapon.yes=Yes -items.weapon.guns.gunweapon.no=No - -items.weapon.guns.guna.name=Type A - Gunslinger Pistol -items.weapon.guns.guna.desc=An improvised firearm made of spare parts left from other guns. Mostly used by farmers and petty criminals. The only good things about it are its low price and light weight. --Juh9870\nIn fact, this weapon is made base on this introduce. Tower test it on sewer. - -items.weapon.guns.gunb.name=Type B - Pistol -items.weapon.guns.gunb.desc=A well-known short-barreled firearm. One of the most popular guns in the Kingdom and beyond due to its reliability, double barrel, and relatively decent price. --Juh9870\nIn fact, this weapon is made base on this introduce. Tower test it on prison. - -items.weapon.guns.gunc.name=Type C - Blunderbuss -items.weapon.guns.gunc.desc=Originally from the Southern Gulf, these firearms use shot. This is what makes them perfect for sea battles?or small spaces. --Juh9870\nIn fact, this weapon is made base on this introduce. Tower test it on cave. - -items.weapon.guns.gund.name=Type D - Fusil -items.weapon.guns.gund.desc=A smoothbore weapon straight from the royal manufactories. Its high accuracy makes up for the fair amount of time it takes to recharge as well as for its rarity. Pride of the soldiers! --Juh9870\nIn fact, this weapon is made base on this introduce. Tower test it on city. - -items.weapon.guns.gune.name=Type E - Mortair -items.weapon.guns.gune.desc=.Mortar deals huge damage and push enemies back, but also takes very long to reload. --Juh9870\nIn fact, this weapon is made base on this introduce. Tower test it on hell. - -items.weapon.guns.sling.name=Sling -items.weapon.guns.sling.desc=A simple sling, made out of a several leather straps. With it, simple lead bullets can be turned into much deadlier projectiles. --Consideredhamster - -items.weapon.spammo.heavyammo.name=Heavy ammo -items.weapon.spammo.heavyammo.desc=Add more damage on gun. Made by double stone. - -items.weapon.spammo.fireammo.name=Fire ammo -items.weapon.spammo.fireammo.desc=Add fire on gun. Made by stone and firebloom seed. - -items.weapon.spammo.iceammo.name=Ice ammo -items.weapon.spammo.iceammo.desc=Add ice on gun. Made by stone and icecap seed. - -items.weapon.spammo.stormammo.name=Storm ammo -items.weapon.spammo.stormammo.desc=Add storm on gun. Made by stone and stormvine. - -items.weapon.spammo.mossammo.name=Moss ammo -items.weapon.spammo.mossammo.desc=Add poison on gun. Made by stone and sorrowmoss seed. - -items.weapon.spammo.blindammo.name=Blind ammo -items.weapon.spammo.blindammo.desc=Add blind on gun. Made by stone and blindweed. - -items.weapon.spammo.starammo.name=Star ammo -items.weapon.spammo.starammo.desc=Add star damage on gun. Made by stone and starflower seed - -items.weapon.spammo.dreamammo.name=Dream ammo -items.weapon.spammo.dreamammo.desc=Add dream on gun. Made by stone and dreamfoil seed. - -items.weapon.spammo.dewammo.name=Dew ammo -items.weapon.spammo.dewammo.desc=Add dew damage on gun. Made by stone and dewcatcher seed. - -items.weapon.spammo.sunammo.name=Sun ammo -items.weapon.spammo.sunammo.desc=Add grow seed on gun. Made by stone and sungrass seed. - -items.weapon.spammo.sandammo.name=Sand ammo -items.weapon.spammo.sandammo.desc=Add sand on gun. Made by stone and fadeleaf seed. - -items.weapon.spammo.goldammo.name=Gold ammo -items.weapon.spammo.goldammo.desc=Add gold on gun. Made by stone and seedpod seed. It will cost golds. - -items.weapon.spammo.emptyammo.name=Empty ammo -items.weapon.spammo.emptyammo.desc=How dose this ammo work? Made by stone and blandfruit seed. - -items.weapon.spammo.rotammo.name=Rot ammo -items.weapon.spammo.rotammo.desc=Add rot on gun. Made by stone and rotberry seed. - -items.weapon.spammo.evolveammo.name=Evolve ammo -items.weapon.spammo.evolveammo.desc=Add DNA on gun. It will change target to another mob. Made by stone and phaseshift seed. - -items.weapon.spammo.thornammo.name=Thorn ammo -items.weapon.spammo.thornammo.desc=Add bleeding on gun. Made by stone and earthroot seed. - -items.weapon.spammo.battleammo.name=Battle ammo -items.weapon.spammo.battleammo.desc=Add suona on gun. It will improve your body on battle. Made by stone and flytrap seed. - -items.weapon.spammo.woodenammo.name=Wooden ammo -items.weapon.spammo.woodenammo.desc=Add wooden on gun. Made by stone and nut. - -###missile weapons -items.weapon.missiles.empbola.name=EMP bola -items.weapon.missiles.empbola.desc=Bolas are mostly used for hunting and they usually don't do much damage but they can ensnare the target leaving it helpless and motionless for some time. - -items.weapon.missiles.boomerang.name=boomerang -items.weapon.missiles.boomerang.ac_ammo=ADD AMMO -items.weapon.missiles.boomerang.prompt=Choose special ammo -items.weapon.missiles.boomerang.desc=Thrown to the enemy this flat curved wooden missile will return to the hands of its thrower. - -items.weapon.missiles.manyknive.name=Lzayoi's thousand knives -items.weapon.missiles.manyknive.ac_shoot=SHOOT -items.weapon.missiles.manyknive.ac_ammo=ADD AMMO -items.weapon.missiles.manyknive.prompt=Choose special ammo -items.weapon.missiles.manyknive.desc=It made by lots of throw knife. Can use special ammo. -items.weapon.missiles.manyknive.damage=This weapon can deal _ %d - %d damage _ ,and spend less time on attack. - -items.weapon.missiles.taurcenbow.name=Centaur Bow -items.weapon.missiles.taurcenbow.ac_shoot=SHOOT -items.weapon.missiles.taurcenbow.ac_break=ARMOR BREAK ARROW -items.weapon.missiles.taurcenbow.ac_fire=FIRE ARROW -items.weapon.missiles.taurcenbow.ac_ice=ICE ARROW -items.weapon.missiles.taurcenbow.ac_posion=POSION ARROW -items.weapon.missiles.taurcenbow.ac_ele=EMP ARROW -items.weapon.missiles.taurcenbow.desc=A centaur bow used by taurcen. -items.weapon.missiles.taurcenbow.damage=This weapon can deal _ %d - %d damage _ ,and auto use special arrow attack after attack some number of times. -items.weapon.missiles.taurcenbow.charge=charge: %d / %d - -items.weapon.missiles.forestdart.name=Lucky throwing knives -items.weapon.missiles.forestdart.desc=These simple metal blades are weighted to fly true and sting their prey with a flick of the wrist. - -items.weapon.missiles.incendiarydart.name=incendiary dart -items.weapon.missiles.incendiarydart.desc=The spike on each of these darts is designed to pin it to its target while the unstable compounds strapped to its length burst into brilliant flames. - -items.weapon.missiles.hugeshuriken.name=Huge shuriken -items.weapon.missiles.hugeshuriken.desc=Huge star-shaped pieces of metal with razor-sharp blades do significant damage when they hit a target. - -items.weapon.missiles.escapeknive.name=Escape knife -items.weapon.missiles.escapeknive.desc=These simple metal blades are weighted to fly true and sting their prey with a flick of the wrist. - -items.weapon.missiles.normalbomb.name=Empty bomb -items.weapon.missiles.normalbomb.desc=How did this work? - -items.weapon.missiles.poisondart.name=poison dart -items.weapon.missiles.poisondart.desc=These little evil darts don't do much damage but they can paralyze the target leaving it helpless and motionless for some time. - -items.weapon.missiles.riceball.name=rice ball -items.weapon.missiles.riceball.desc=It is some kind of pet food. - -items.weapon.missiles.smoke.name=Smoke -items.weapon.missiles.smoke.desc=Star-shaped pieces of metal with razor-sharp blades share smoke when they hit a target. - -items.weapon.missiles.skull.name=skull -items.weapon.missiles.skull.desc=It is a evil weapon. - -items.weapon.missiles.tamahawk.name=tomahawk -items.weapon.missiles.tamahawk.desc=This throwing axe is not that heavy, but it still requires significant strength to be used effectively. - -items.weapon.missiles.wave.name=wave -items.weapon.missiles.wave.desc=It is a wave weapon. - -items.weapon.missiles.shatteredammo.name=shattered ammo -items.weapon.missiles.shatteredammo.desc=It is small but dangerous. - -items.weapon.missiles.errorammo.name=error ammo -items.weapon.missiles.errorammo.desc=this is a error - -items.weapon.missiles.minimoai.name=Mini Moai -items.weapon.missiles.minimoai.desc=A easter egg from easter land for easter day. - -items.weapon.missiles.pocketball.name=lantern of soul collect -items.weapon.missiles.pocketball.desc=A empty lantern which can collect your pet. -items.weapon.missiles.pocketball.get_pet=You catch this pet. - -items.weapon.missiles.moneypack.name=red packet -items.weapon.missiles.moneypack.desc=You can use gold to solve many problems in Spring Festival. Happy 2020 Spring Festival!!! - -##mc block -items.weapon.missiles.buildblock.wallblock.name=Wall block -items.weapon.missiles.buildblock.wallblock.desc=Wall block - -items.weapon.missiles.buildblock.doorblock.name=Door block -items.weapon.missiles.buildblock.doorblock.desc=Door block - -items.weapon.missiles.buildblock.stoneblock.name=Statue block -items.weapon.missiles.buildblock.stoneblock.desc=Statue block - -items.weapon.missiles.buildblock.bookblock.name=Bookshelf block -items.weapon.missiles.buildblock.bookblock.desc=Bookshelf block - -items.weapon.missiles.buildblock.woodenblock.name=Wooden block -items.weapon.missiles.buildblock.woodenblock.desc=Wooden block - -items.weapon.missiles.buildblock.waterblock.name=Water block -items.weapon.missiles.buildblock.waterblock.desc=Water block - -items.wateritem2.name=Water block -items.wateritem2.pour=USE -items.wateritem2.desc=Water block - -##eggs -items.eggs.egg.prevent=This is not the best place to summon it. -items.eggs.egg.notready=You already have one pet. -items.eggs.egg.yolk=Some of the energy is four diaspora. -items.eggs.egg.name=Soul of mobs -items.eggs.egg.hatch=You get new pet. -items.eggs.egg.scratch=You hear some whisper. -items.eggs.egg.slithers=You hear some word. -items.eggs.egg.kick=You hear big noise. -items.eggs.egg.slosh=You can't hear anything. -items.eggs.egg.zap=Huge sound wave hurt your body. -items.eggs.egg.ac_break=SUMMON -items.eggs.egg.ac_shake=LISTEN -items.eggs.egg.warmhome=This soul absorbs energy in your warm backpack. -items.eggs.egg.onlyone=Only one soul can absorb energy in the backpack. -items.eggs.egg.desc=It is egg in sprouted, but in here it called soul. Just try to get one pet on it. You can feed your pet to make it stronger. -items.eggs.egg.moves=Energy:%d -items.eggs.egg.burns=Fire:%d -items.eggs.egg.freezes=Ice:%d -items.eggs.egg.poisons=Earth:%d -items.eggs.egg.lits=Electy:%d -items.eggs.egg.summons=Dark:%d -items.eggs.egg.light=Light:%d - -items.eggs.easteregg.name=Soul of rabbit -items.eggs.easteregg.desc=Soul of easter egg. - -items.eggs.cococategg.name=Soul of cat -items.eggs.cococategg.desc=Soul of bombs - -items.eggs.randomegg.name=Random soul -items.eggs.randomegg.desc=Summon a random basic pet. - -items.eggs.shadowdragonegg.name=Soul of shadow dargeon -items.eggs.shadowdragonegg.desc=Soul of shadow. - -items.eggs.leryfireegg.name=Soul of chaos -items.eggs.leryfireegg.desc=Soul of chaos. - -items.eggs.bluedragonegg.name=Soul of blue dargeon -items.eggs.bluedragonegg.desc=Soul of ice dargeon - -items.eggs.lightdragonegg.name=Soul of white dargeon -items.eggs.lightdragonegg.desc=Soul of light. - -items.eggs.greendragonegg.name=Soul of green dargeon -items.eggs.greendragonegg.desc=Soul of lightning - -items.eggs.reddragonegg.name=Soul of red dargeon -items.eggs.reddragonegg.desc=Soul of fire. - -items.eggs.scorpionegg.name=Soul of scorpion -items.eggs.scorpionegg.desc=.Soul of scorpion - -items.eggs.spideregg.name=Soul of web -items.eggs.spideregg.desc=Soul of web. - -items.eggs.velociroosteregg.name=Soul of velocirooster -items.eggs.velociroosteregg.desc=Soul of velocirooster, the kiing of unleashed. - -items.eggs.violetdragonegg.name=Soul of violet dargeon -items.eggs.violetdragonegg.desc=Soul of earth. - -items.eggs.golddragonegg.name=Soul of gold dargeon -items.eggs.golddragonegg.desc=soul of missing No. -items.eggs.yearpetegg.name=Soul Of Year -items.eggs.yearpetegg.desc=Soul of year. -##Bombs -items.bombs.bomb.name=bomb -items.bombs.bomb.ac_lightthrow=LIGHT & THROW -items.bombs.bomb.snuff_fuse=You quickly snuff the bomb's fuse. -items.bombs.bomb.desc=A fairly hefty black powder bomb. An explosion from this would certainly do damage to anything nearby.\n\nIt looks like the fuse will take a couple rounds to burn down once it is lit. -items.bombs.bomb.desc_burning=A fairly hefty black powder bomb. An explosion from this would certainly do damage to anything nearby.\n\nThe bomb's fuse is burning away, keep your distance or put it out! - -items.bombs.firebomb.name=Fire bomb -items.bombs.firebomb.desc=It will cause fire explode. - -items.bombs.icebomb.name=Ice bomb -items.bombs.icebomb.desc=It will cause ice explode. - -items.bombs.earthbomb.name=Acid bomb -items.bombs.earthbomb.desc=It will cause acid and regrow explode. - -items.bombs.fishingbomb.name=fishing bomb -items.bombs.fishingbomb.no_tp=Can't find dry place. -items.bombs.fishingbomb.tp=Something away. -items.bombs.fishingbomb.desc=It can send mob into dry place. - -items.bombs.stormbomb.name=Storm bomb -items.bombs.stormbomb.desc=It will cause storm explode. - -items.bombs.darkbomb.name=Dark bomb -items.bombs.darkbomb.desc=It will cause dark explode, and it is harmful to life. - -items.bombs.hugebomb.name=Huge bomb -items.bombs.hugebomb.desc=It will cause huge explode, and it will destroy walls. - -items.bombs.lightbomb.name=Holy bomb -items.bombs.lightbomb.desc=It will cause light explode, and it is harmful to.abiotic. - -items.bombs.dungeonbomb.name=Bomb -items.bombs.dungeonbomb.desc=A fairly hefty black powder bomb. An explosion from this would certainly do damage to anything nearby and destroy walls .\n\nIt looks like the fuse will take a couple rounds to burn down once it is lit. -items.bombs.dungeonbomb$doublebomb.name=two bombs -items.bombs.dungeonbomb$doublebomb.desc=A stack of two hefty black powder bombs, looks like you get one free! - -items.bombs.buildbomb.name=Build bomb -items.bombs.buildbomb.desc=A normal bomb made by human. It can be used to create other special bomb. - -items.bombs.minibomb.name=Mini bomb -items.bombs.minibomb.desc=It can deal damage. - -###tp items -items.tengukey.name=tengu! -items.tengukey.ac_port=PORT -items.tengukey.desc=A strange paper, it says: Tengu, 10000 gold. - -items.treasuremap.name=treasure map -items.treasuremap.ac_port=PORT -items.treasuremap.desc=This map radiates an eerie power. Reading the inscription will take you to the Gnoll King. - -items.bone.ac_port=PORT -items.bone.name=bone -items.bone.desc=This bone radiates an eerie power. Reading the inscription will open the portal to the Skeleton King. - -items.conchshell.name=conch shell -items.conchshell.ac_port=PORT -items.conchshell.desc=This shell radiates an eerie power. Blow through it to take you to the Crab King. - -items.ancientcoin.ac_port=PORT -items.ancientcoin.name=ancient coin -items.ancientcoin.desc=This coin radiates an eerie power. Reading the inscription will take you to the Bandit King. - -items.triforce.ac_port=PORT -items.triforce.name=triforce -items.triforce.desc=The puzzle is complete. The force will open a portal to the final boss. You will be immediately transported when the portal is opened. - -items.bossrush.name=Boss Rush -items.bossrush.ac_read=PORT -items.bossrush.desc=This is a uncompleted bossrush. You can try to fight with those new boss. - -items.palantir.name=palantir -items.palantir.ac_port=PORT -items.palantir.desc=The ancient powerful scrying device. Zot is trapped inside. - -###reward -items.reward.sewerreward.name=sewer reward bag -items.reward.sewerreward.ac_use=USE -items.reward.sewerreward.desc=reward of sewer challenge - -items.reward.prisonreward.name=prison reward bag -items.reward.prisonreward.ac_use=USE -items.reward.prisonreward.desc=reward of prison challenge - -items.reward.cavereward.name=cave reward bag -items.reward.cavereward.ac_use=USE -items.reward.cavereward.desc=reward of cave challenge - -items.reward.cityreward.name=city reward bag -items.reward.cityreward.ac_use=USE -items.reward.cityreward.desc=reward of city challenge - -##summon item -items.summon.honeypot.name=honeypot -items.summon.honeypot.ac_shatter=SHATTER -items.summon.honeypot.desc=This large honeypot is only really lined with honey, instead it houses a giant bee! These sorts of massive bees usually stay in their hives, perhaps the pot is some sort of specialized trapper's cage? The bee seems pretty content inside the pot with its honey, and buzzes at you warily when you look at it. -items.summon.honeypot$shatteredpot.name=shattered honeypot -items.summon.honeypot$shatteredpot.desc=The pot has been shattered, only the sticky honey that lines its walls is holding it together, and it is slowly coming apart.\n\nDespite its broken state, the bee still seems to want to protect the pot. -items.summon.honeypot$bee.name=Golden bee -items.summon.honeypot$bee.desc=Despite their small size, golden bees tend to protect their home fiercely. This one is very mad, better keep your distance. -items.summon.honeypot$steelbee.name=Steel bee -items.summon.honeypot$steelbee.desc=This bee is upgrade by power of leader. It is stronger and loyal. - -items.summon.activemrdestructo.name=mr.destructo -items.summon.activemrdestructo.ac_active=USE -items.summon.activemrdestructo.desc=It reads, MR DESTRUCTO. An odd contraption. What does it do? -items.summon.activemrdestructo$mrdestructo.name=mr destructo -items.summon.activemrdestructo$mrdestructo.desc=You use this thing and it is attacking mobs. -items.summon.activemrdestructo$mrdestructo2dot0.name=mr destructo 2.0 -items.summon.activemrdestructo$mrdestructo2dot0.desc=You use this thing and it is attacking mobs. It was upgrade by power of leader. - -items.summon.callcoconut.name=Summon key -items.summon.callcoconut.ac_active=USE -items.summon.callcoconut.desc=It can summon coconut. -items.summon.callcoconut$scococat.name=coconut -items.summon.callcoconut$scococat.desc=Let's start! -items.summon.callcoconut$excococat.name=EX coconut -items.summon.callcoconut$excococat.desc=Let's start again! - -items.summon.mobile.name=control mobile -items.summon.mobile.ac_active=USE -items.summon.mobile.desc=It will summon a mobile satellite. -items.summon.mobile$mobilesatellite.name=mobile satellite -items.summon.mobile$mobilesatellite.desc=mobile satellite -items.summon.mobile$exmobilesatellite.name=ex mobile satellite -items.summon.mobile$exmobilesatellite.desc=ex mobile satellite - -items.summon.fairycard.name=fairy card -items.summon.fairycard.ac_active=USE -items.summon.fairycard.desc=Draw a card, and summon a fairy. -items.summon.fairycard$fairy.name=Fairy -items.summon.fairycard$fairy.desc=Fairy can heal your wound. -items.summon.fairycard$sugarplumfairy.name=Warlock Fairy -items.summon.fairycard$sugarplumfairy.desc=Warlock fairy can heal your wound and harm your enemy. - -###misc items -items.dwarfhammer.prevent=This is not the right floor to use this item. -items.dwarfhammer.unseal=You unseal the entrance to the next level. -items.dwarfhammer.ac_break=BREAK -items.dwarfhammer.name=magic breaker -items.dwarfhammer.desc=Too fragile to use as a weapon, this magic hammer was used to seal the demons in this level. Perhaps there is just enough magic left to unseal the next level... - -items.amulet.name=amulet of yendor -items.amulet.ac_end=END THE GAME -items.amulet.desc=The Amulet of Yendor is the most powerful known artifact of unknown origin. It is said that the amulet is able to fulfil any wish if its owner's will-power is strong enough to "persuade" it to do it. - -items.ankh.name=ankh -items.ankh.ac_bless=BLESS -items.ankh.bless=You bless the ankh with clean water. -items.ankh.desc=This ancient symbol of immortality grants the ability to return to life after death. Upon resurrection all non-equipped items are lost. Using a full dew vial, the ankh can be blessed with extra strength. -items.ankh.desc_blessed=This ancient symbol of immortality grants the ability to return to life after death. The ankh has been blessed and is now much stronger. The Ankh will sacrifice itself to save you in a moment of deadly peril. -items.ankh.revive=The ankh explodes with life-giving energy! - -items.armorkit.name=skill kit -items.armorkit.ac_apply=APPLY -items.armorkit.desc=Using this kit of small will give user a special ability depending on his class. No need skills in tailoring or leatherworking. - -items.dewdrop.name=dewdrop -items.dewdrop.value=%+dHP -items.dewdrop.already_full=You already have full health. -items.dewdrop.desc=A crystal clear dewdrop.\n\nDue to the magic of this place, pure water has minor restorative properties. - -items.equipableitem.unequip_cursed=You can't remove a cursed item! -items.equipableitem.ac_equip=EQUIP -items.equipableitem.ac_unequip=UNEQUIP - -items.gold.name=gold -items.gold.desc=A pile of gold coins. Collect gold coins to spend them later in a shop. - -items.heap.mimic=This is a mimic! -items.heap.chest=chest -items.heap.chest_desc=Open too see what in it. -items.heap.locked_chest=locked chest -items.heap.locked_chest_desc=Open it with a gold key to see what is in there. -items.heap.crystal_chest=crystal chest -items.heap.crystal_chest_desc=You can see %s in there, but you need a gold key to open it. -items.heap.artifact=artifact -items.heap.wand=wand -items.heap.ring=ring -items.heap.tomb=tomb -items.heap.tomb_desc=This ancient tomb may contain something useful, but its owner will most certainly object to checking. -items.heap.skeleton=remain -items.heap.skeleton_desc=This is all that's left of some unfortunate adventurer. Maybe it's worth checking for any valuables. -items.heap.remains=hero remain -items.heap.remains_desc=This is all that's left from one of your predecessors. Maybe it's worth checking for any valuables. - -items.item.pack_full=Your pack is too full for the %s. -items.item.prompt=Choose direction of throw -items.item.ac_drop=DROP -items.item.ac_throw=THROW -items.item.not_here=This is not the right floor to use this item. -items.item.boss_first=You should kill boss first. -items.item.item_first=You need to stand on a platform with key props first and hold high key props to use this prop to leave. -items.item.reinforced=Adamant have been weld. - -items.kindofmisc.unequip_title=unequip one equipment -items.kindofmisc.unequip_message=You can only wear three misc items at a time. - -items.kindofweapon.cursed=you wince as your grip involuntarily tightens around your %s - -items.kindofarmor.cursed=The armor constricts around you painfully. - -items.kindofweapon.destory=Your weapon destroy. -items.kindofweapon.almost_destory=Your weapon is almost broken. - -items.merchantsbeacon.name=merchant's beacon -items.merchantsbeacon.ac_use=USE -items.merchantsbeacon.desc=This odd piece of dwarven technology allows you to communicate from great distances.\n\nAfter being activated, this beacon will let you sell items to Pixel Mart from anywhere in the dungeon.\n\nHowever, the magic within the beacon will only last for one session, so use it wisely. - -items.stylus.name=arcane stylus -items.stylus.ac_inscribe=INSCRIBE -items.stylus.prompt=Select an armor to inscribe -items.stylus.inscribed=You inscribed your armor with the stylus -items.stylus.desc=This arcane stylus is made of some dark, very hard stone. Using it you can inscribe a magical glyph on your armor, but you have no power over choosing what glyph it will be, the stylus will decide it for you. - -items.torch.name=torch -items.torch.ac_light=LIGHT -items.torch.desc=An adventuring staple, when a dungeon goes dark, a torch can help lead the way. - -items.weightstone.name=weightstone -items.weightstone.ac_apply=APPLY -items.weightstone.select=Select a weapon to enchant -items.weightstone.apply=You apply your weapon with the weightstone -items.weightstone.desc=Using a weightstone, you can enchant your melee weapon. - -items.adamantarmor.name=adamant armor -items.adamantarmor.desc=It is adamant armor. -items.adamantring.name=adamant ring -items.adamantring.desc=It is adamant ring. -items.adamantwand.name=adamant wand -items.adamantwand.desc=It is adamant wand. -items.adamantweapon.name=adamant weapon -items.adamantweapon.desc=It is adamant weapon. - -items.dewvial.name=dew vial -items.dewvial.ac_drink=DRINK -items.dewvial.value=%+dHP -items.dewvial.collected=You collected the dew into dew vial -items.dewvial.full=Your dew vial is full! -items.dewvial.empty=Your dew vial is empty! -items.dewvial.ac_water=PLANT -items.dewvial.ac_splash=SPEED -items.dewvial.ac_bless=UPGRADE -items.dewvial.ac_light=LIGHT -items.dewvial.ac_pour=CLEAN -items.dewvial.ac_peek=PEEK -items.dewvial.ac_refine=REFINE -items.dewvial.watered=Plant grow around you. -items.dewvial.blessed=Mistery power upgread your item. -items.dewvial.remove_curse=Curse has been remove. -items.dewvial.curse=Nothing happend. -items.dewvial.select=Choose one item to upgread -items.dewvial.fly=You float into air. -items.dewvial.light=You are surrounded by dark lights and hiding you into shadows. -items.dewvial.fast=You move fast! -items.dewvial.pour=You clear you body by water. -items.dewvial.desc=An old and mysterious magic vial used on collect dews.\nThose dews can be used for various functions.\nBasic: healing, light, refine. -items.dewvial.desc_v1=lv 1 : upgrade, plant. -items.dewvial.desc_v2=lv 2 : clean, speed. -items.dewvial.desc_v3=lv 3 : dew vial become bigger, and flying when use speed. - -items.orbofzot.name=orbofzot -items.orbofzot.ac_activatethrow=USE -items.orbofzot.ac_break=BREAK -items.orbofzot.desc=The Orb of Zot is source of unlimited power created by the lord Zot. Apparently, Yog was harnessing its power to infest the dungeon. -items.orbofzot.charge=charge: %d /%d - -items.dolyaslate.prevent=Unknow location, error -items.dolyaslate.ac_return=RETURN -items.dolyaslate.ac_add=ADD -items.dolyaslate.ac_read=USE -items.dolyaslate.ac_set=SET -items.dolyaslate.ac_back=BACK -items.dolyaslate.prompt=Choose location -items.dolyaslate.name=Dolya slate -items.dolyaslate.desc=A transport item made in Dolye town.\nYou can add some location in to this magic stone and you can go there by use this thing. -items.dolyaslate.charge=Charge: %d / %d -items.dolyaslate.add_page=Location load successfully. - -items.challengebook.prevent=It is useless. -items.challengebook.ac_return=RETURN -items.challengebook.ac_add=ADD -items.challengebook.ac_read=USE -items.challengebook.ac_back=BACK -items.challengebook.prompt=Add a Challenge -items.challengebook.name=Challenge book -items.challengebook.desc=A simple note book with some aline magic\n\n_So here is some tutorial for you. Add that challenge paper into this book and you will free to come and go there place.\n\nI also want write some other things but I can't understand your language.\nThere some secret reword in each challenge. If you find all of them I will give you a weapon from my east project pixel dungeon._ -items.challengebook.add_page=Add challenge successful - -items.puddingcup.name=chocolate pudding cup -items.puddingcup.ac_save=SAVE -items.puddingcup.desc=Its good smell will make you remember what have happened. - -items.reddewdrop.name=red dew drop -items.reddewdrop.value=%+d hp -items.reddewdrop.desc=red dew drop - -items.violetdewdrop.name=violet dew drop -items.violetdewdrop.value=%+d hp -items.violetdewdrop.desc=violet dew drop - -items.yellowdewdrop.name=yellow dew drop -items.yellowdewdrop.value=%+d hp -items.yellowdewdrop.desc=yellow dew drop - -items.triforceofcourage.name=triforce of courage -items.triforceofcourage.desc=Courage part of triforce. -items.triforceofpower.name=triforce of power -items.triforceofpower.desc=Power part of triforce. -items.triforceofwisdom.name=triforce of wisdom -items.triforceofwisdom.desc=Wisdom part of triforce. - -items.stoneore.name=stone ore -items.stoneore.desc=Simple stone can be used on cooking or sell for money. - -items.expore.name=EXP ore -items.expore.ac_use=USE -items.expore.desc=Level up. - -items.tomeofmastery.name=Tome of Mastery -items.tomeofmastery.ac_read=READ -items.tomeofmastery.blind=You can't read while blinded. -items.tomeofmastery.way=You have chosen the way of the %s! -items.tomeofmastery.desc=This worn leather book is not that thick, but you feel somehow, that you can gather a lot from it. Remember though that reading this tome may require some time. - -items.towel.prevent=You don't need use this towel. -items.towel.apply=You use that towel. -items.towel.end=This towel is broken. -items.towel.ac_towel=USE -items.towel.ac_towel_pet=USE TO PET -items.towel.name=towel -items.towel.desc=Don't forget your towel! - -items.upgradeblobred.ac_inscribe=USE -items.upgradeblobred.name=red upgrade item -items.upgradeblobred.desc=This blob of red goo holds a powerful magic. It can upgrade your gear when applied. -items.upgradeblobviolet.name=violet upgrade item -items.upgradeblobviolet.ac_inscribe=USE -items.upgradeblobviolet.desc=This blob of violet goo holds a powerful magic. It can upgrade your gear when applied. -items.upgradeblobyellow.name=yellow upgrade item -items.upgradeblobyellow.ac_inscribe=USE -items.upgradeblobyellow.desc=This blob of yellow goo holds a powerful magic. It can upgrade your gear when applied. - -items.whistle.ac_call=USE -items.whistle.name=Book of soul -items.whistle.message=need writing... -items.whistle$wndwhistle.title=Book of soul -items.whistle$wndwhistle.desc=need writing... -items.whistle.desc=Book of soul - -### new stuff -items.misc.ankhshield.name=ankh shield -items.misc.ankhshield.charge=charge: %d /%d -items.misc.ankhshield.ac_defence=SHIELD BLAST -items.misc.ankhshield.rest=need more charge -items.misc.ankhshield.desc=A powerful item work like bomb in STG game. It was create by developer. - -items.misc.jumph.name=jump shoes of huntress -items.misc.jumph.ac_jump=JUMP -items.misc.jumph.desc=With the guide from nature, hunter can attack some mob when jump. - -items.misc.jumpm.name=jump shoes of mage -items.misc.jumpm.ac_jump=JUMP -items.misc.jumpm.desc=Mage was study in tower, so he can use blink instead of jump, and improve his magic power in sometime. - -items.misc.jumpr.name=jump shoes of rogue -items.misc.jumpr.ac_jump=JUMP -items.misc.jumpr.desc=Without training, rogue can't jump far away, but he can hidden his body in jump and hover in air. - -items.misc.jumpshoes.name=jump shoes -items.misc.jumpshoes.charge=Charge: %d / %d -items.misc.jumpshoes.ac_jump=JUMP -items.misc.jumpshoes.prompt=Choose one place to jump to -items.misc.jumpshoes.rest=You need rest -items.misc.jumpshoes.desc=Jumping action from other action games, used to skip all kinds of pits. The additional effects are different depending on the profession. - -items.misc.jumpw.name=jump shoes of warrior -items.misc.jumpw.ac_jump=JUMP -items.misc.jumpw.desc=Warrior can use charge to stun enemy he touch and close target quickly. - -items.misc.jumpp.name=jump shoes of performer -items.misc.jumpp.ac_jump=JUMP -items.misc.jumpp.desc=For become a idol, performer spend lots of time in training dance. It allowed he immerse in his own rhythm, and have little change reduce next damage he taken. - -items.misc.jumps.name=jump shoe of soldier -items.misc.jumps.ac_jump=JUMP -items.misc.jumps.desc=As a survivor from chaos war, soldier can reload when jumping, and have little chance to prepare for his next range attack. - -items.misc.jumpf.name=jump shoes of follower -items.misc.jumpf.ac_jump=JUMP -items.misc.jumpf.desc=In order to facilitate business between villages of different races and faiths, Follower can prepare a hidden place to redecorate themselves immediately. He also has a chance to find some special plants after landing. - -items.misc.attackshoes.name=plumber's shoes -items.misc.attackshoes.ac_jump=JUMP -items.misc.attackshoes.desc=This shoes don't need charge to use, but it spend more time on landing, and deal damage to nearby enemies. - -items.misc.shovel.name=shovel -items.misc.shovel.ac_use=BREAK WALL -items.misc.shovel.ac_build=BUILD WALL -items.misc.shovel.not_wall=There no wall around you. -items.misc.shovel.break=No charge now -items.misc.shovel.charge=charge: %d /%d -items.misc.shovel.desc=Shovel can used on break wall.\nIt will cost some charge. - -items.misc.bshovel.name=Vtuber's effect button -items.misc.bshovel.ac_use=USE -items.misc.bshovel.break=Need more chargr -items.misc.bshovel.charge=charge: %d /%d -items.misc.bshovel.desc=This button can remove nearby walls. It also will give random effect. - -items.misc.bshovel.mob=Accurate attack -items.misc.bshovel.haste=Fast move -items.misc.bshovel.item=Item search -items.misc.bshovel.gold=Gold fallen -items.misc.bshovel.heal=Health protect -items.misc.bshovel.mech=Mech around - -items.misc.potionofmage.name=wonder flask -items.misc.potionofmage.ac_use=USE -items.misc.potionofmage.ac_drink=DRINK -items.misc.potionofmage.ac_shattered=SHATTERED -items.misc.potionofmage.prompt=Choose a place to use it. -items.misc.potionofmage.break=There are nothing in flask now. -items.misc.potionofmage.not_mob=That is too far away. -items.misc.potionofmage.charge=Charge : %d / %d . -items.misc.potionofmage.desc=Use it on enemy or empty space. It will help you on battle. - -items.misc.gunofsoldier.name=pulse pistol -items.misc.gunofsoldier.ac_use=SHOOT -items.misc.gunofsoldier.prompt=Choose a location to target. -items.misc.gunofsoldier.not_mob=There are no enemy in there. -items.misc.gunofsoldier.break=Low power. -items.misc.gunofsoldier.not=You can't choose that target. -items.misc.gunofsoldier.charge=Charge: %d / %d -items.misc.gunofsoldier.desc=It will harm target based on how much damage it already taken. - -items.misc.mkbox.name=Mushroom kingdom's ? box -items.misc.mkbox.ac_use=HIT - -items.misc.mkbox.star=STAR -items.misc.mkbox.flowerf=Fire flower -items.misc.mkbox.floweri=Ice flower -items.misc.mkbox.mushroom=Mushroom -items.misc.mkbox.coin=50 coins -items.misc.mkbox.1up=1-up -items.misc.mkbox.hammer=Hammer -items.misc.mkbox.mbox=Trap - -items.misc.mkbox.need_gold=You need 100 gold to use it. -items.misc.mkbox.charge=%d -items.misc.mkbox.desc=A box with different stuff. It need 100 gold to use. - -items.misc.missileshield.name=Wooden shield -items.misc.missileshield.ac_cast=CAST -items.misc.missileshield.ac_shield=DEFENSE -items.misc.missileshield.rest=You need more charge to use this skill. -items.misc.missileshield.prompt=Choose target -items.misc.missileshield.not=You can't hit that target -items.misc.missileshield.not_mob=No target in there -items.misc.missileshield.desc=A simple wooden shield.\nCan be thrown.\nCan use to reduce damage. -items.misc.missileshield.damage=This shield can deal _ %d - %d damage _ ,and deal more damage on bosses. -items.misc.missileshield.charge=charge: %d / %d - -items.misc.attackshield.name=Ryu’s hadoken -items.misc.attackshield.ac_cast=DOWN RIGHT ATTACK -items.misc.attackshield.ac_blast=BREAK OUT -items.misc.attackshield.rest=Need more charge -items.misc.attackshield.prompt=Choose a place to use it. -items.misc.attackshield.not=You can't hit that target -items.misc.attackshield.not_mob=No target in there -items.misc.attackshield.desc=This is not a simple hadoken, it will deal more damage on full health enemy, and charge by melee attack. After use BREAK OUT, if you don't have melee weapon, you will have new power from fighter. -items.misc.attackshield.damage=This item can deal _ %d - %d damage _ . -items.misc.attackshield.charge=charge: %d / %d - -items.misc.copyball.name=Slime -items.misc.copyball.ac_use=CAST -items.misc.copyball.prompt=choose a target -items.misc.copyball.break=Need more charge. -items.misc.copyball.charge=Charge: %d/%d. -items.misc.copyball.desc=Slime can dominate or confusion enemy.\nIt may cause slow, said by system. - -items.misc.gnollmark.name=Shaman Mask -items.misc.gnollmark.ac_light=LIGHT RITE -items.misc.gnollmark.ac_dark=DARK RITE -items.misc.gnollmark.ac_earth=NATURAL RITE -items.misc.gnollmark.break=Need more charge. -items.misc.gnollmark.charge=Charge: %d/%d. -items.misc.gnollmark.desc=A shaman mask, charged by use wand.\nLight rite will improve user's physical power, but the magic power will be reduce. Dark rite is opposite.r\nNatural rite will improve user's resistance ability. - -items.misc.mechpocket.name=Four dimensional space bag -items.misc.mechpocket.ac_use=SEARCH -items.misc.mechpocket.desc=A future item, but only can use once. It will pour out every item it have.\nIt need to be sorted out. - Nobita - -items.misc.skillofatk.name=Learn how to attack -items.misc.skillofatk.ac_read=READ -items.misc.skillofatk.desc=A simple scroll which writen some attack skill in there. -items.misc.skillofatk.skillup=attack skill + - -items.misc.skillofdef.name=Learn how to dodge -items.misc.skillofdef.ac_read=READ -items.misc.skillofdef.desc=A simple scroll which writen some dodge skill in there. -items.misc.skillofdef.skillup=dodge skill + - -items.misc.skillofmig.name=Learn how to use magic -items.misc.skillofmig.ac_read=READ -items.misc.skillofmig.desc=A simple scroll which writen some magic skill in there. -items.misc.skillofmig.skillup=magic skill + - -items.misc.demoscroll.name=Demon contract -items.misc.demoscroll.ac_read=ACCEPT -items.misc.demoscroll.desc=Use your HT to make you stronger. \nEvery level you can use it once. -items.misc.demoscroll.hitup=Your ACU improve. -items.misc.demoscroll.evaup=Your DEX improve. -items.misc.demoscroll.migup=Your MIG improve. -items.misc.demoscroll.strup=Your STR imoprove. -items.misc.demoscroll.htdown=You lose some health limit. - -items.misc.undeadbook.name=Undead Bible -items.misc.undeadbook.ac_read=READ -items.misc.undeadbook.ac_bless=PARY -items.misc.undeadbook.desc=A Bible write with undead language... Why?\nRead this bible will reduce reader's health limit, and gain dew bless for some time.\nPary this bible will find an ankh, but only can pary once in one level. -items.misc.undeadbook.bless=You blessed by dew, but also lose some health limit. -items.misc.undeadbook.1up=Bible give your an ankh. - -items.misc.luckybadge.name=Lucky badge -items.misc.luckybadge.desc=A badge left by shop keeper. It is full with luck and It can be upgrade. - -items.misc.fourclover.name=Four-leaf Mint Necklace -items.misc.fourclover.desc=This four-leaf clover necklace can give wearer something when he level up, and increasing enchanted equipment's chances to be activated. - -items.misc.faithsign.name=Sign box -items.misc.faithsign.ac_demon=Faith-DEMON -items.misc.faithsign.ac_human=Faith-HOLY -items.misc.faithsign.ac_mech=Faith-MECH -items.misc.faithsign.ac_life=Faith-NATURAL -items.misc.faithsign.ac_balance=Faith-BALANCE -items.misc.faithsign.desc=A box full of different faith's signs. Based on 5 different types, those signs can be used on solve faith problem. - -items.misc.savagehelmet.name=Savage helmet -items.misc.savagehelmet.desc=A helmet for year hunting. It has chance to reduce damage and improve next melee attack. When be equip, this chance will become 100%. - -items.misc.healbag.name=Medical box -items.misc.healbag.ac_heal=MASS HEAL -items.misc.healbag.ac_cook=RANDOM COOKING -items.misc.healbag.needcharge=need charge -items.misc.healbag.desc=A medical box for year hunting. It can heal health, or cook a random potion, pill or food. - -items.misc.rangebag.name=Throwing weapon bag -items.misc.rangebag.ac_buy=BUY -items.misc.rangebag.need_gold=You need gold to buy throwing weapon. -items.misc.rangebag.desc=A bag for year hunting. It can find throwing weapon by use gold. When be equip, it has chance to find throwing weapon after kill mobs. - -items.misc.horsetotem.name=Horse Totem -items.misc.horsetotem.desc=A totem for year hunting. It has chance to improve damage and improve speed. When be equip, this chance will become 100%.\nIt called Red Hare. - -items.misc.dancelion.name=Learn lion dance -items.misc.dancelion.ac_spin=SPIN -items.misc.dancelion.ac_stand=STAND -items.misc.dancelion.ac_back=BACK -items.misc.dancelion.ac_rush=DASH -items.misc.dancelion.ac_jump=JUMP -items.misc.dancelion.desc=A book for year hunting. Reader can learn lion dance on it. - -items.playericon.name=player icon -items.playericon.thank4play=Thanks for playing. -items.playericon.desc=Reword of bossrush. -items.weapon.melee.special.testweapon.name=test weapon -items.weapon.melee.special.testweapon.desc=test weapon - -items.elevator.name=ghost elevator -items.elevator.desc=A ghost is attached to this suit, which can bring you up and down the floor freely.\nBut it only can work on floor 2 - 25. -items.elevator.ac_up=UP -items.elevator.ac_down=DOWN - -items.soulcollect.name=soul collect stone -items.soulcollect.desc=Otiluke is been trapped in here. Break it and save his life. -items.soulcollect.ac_break=BREAK -items.soulcollect.win=Thank you for your help. See you in town. - -items.pocketballfull.name=Lantern with some soul -items.pocketballfull.desc=A soul is lives in here. You can use it or sell it. -items.pocketballfull.ac_use=USE - -items.powerhand.name=Power Hand -items.powerhand.desc=?????????? -items.powerhand.desc_stones=%dstones have now. -items.powerhand.prompt=Choose a stone -items.powerhand.ac_add=ADD STONE -items.powerhand.ac_use=USE -items.powerhand.nothing=Nothing happen -items.powerhand.already_fed=This stone type is already on there. -items.powerhand.absorb_stone=You add this stone in this hand. - -items.saveyourlife.name=Emergency Offline Device -items.saveyourlife.desc=Emergency Offline Device -items.saveyourlife.ac_save=OFFLINE - -items.transmutationball.name=Transmutation item -items.transmutationball.prompt=choose a target -items.transmutationball.desc=Transmutation a item -items.transmutationball.ac_use=USE - -items.upgradeeatball.name=Upgrade eater -items.upgradeeatball.prompt=choose a target -items.upgradeeatball.desc=Upgrade eater -items.upgradeeatball.ac_use=USE - -items.flag.name=Flag -items.flag.desc=The 70th Anniversary of the Founding of The People's Republic of China. - - diff --git a/resources/com/hmdzl/spspd/change/messages/items/items_zh.properties b/resources/com/hmdzl/spspd/change/messages/items/items_zh.properties deleted file mode 100644 index d8fdaf01..00000000 --- a/resources/com/hmdzl/spspd/change/messages/items/items_zh.properties +++ /dev/null @@ -1,2265 +0,0 @@ - ###glyphs -items.armor.glyphs.iceglyph.name=雪屋%s -items.armor.glyphs.iceglyph.desc=雪屋刻印可以增加使用者的冰冻抗性,并有几率在冰冻敌人的同时延缓使用者所受到的物理伤害。 -items.armor.glyphs.iceglyph.deferred=延缓%d点伤害 -items.armor.glyphs.iceglyph$defereddamage.name=延缓伤害 -items.armor.glyphs.iceglyph$defereddamage.ondeath=被延迟的伤害还是杀掉了你…… -items.armor.glyphs.iceglyph$defereddamage.desc=虽然你的护甲符文保护你免受损伤,但它似乎在让你慢慢偿还代价。\n\n损伤会被转化为持续伤害,而非直接扣除。你将每回合受到1点伤害直到伤害被全额返还。 \n\n剩余的延迟伤害:%d点 - -items.armor.glyphs.fireglyph.name=火罩%s -items.armor.glyphs.fireglyph.desc=火罩刻印可以增加使用者的火焰抗性,并有几率在点燃敌人的同时提升使用者的攻击力。 - -items.armor.glyphs.earthglyph.name=残岩%s -items.armor.glyphs.earthglyph.desc=残岩刻印可以增加使用者的地面抗性,并有几率在眩晕敌人的同时提升使用者的防御力。 - -items.armor.glyphs.electricityglyph.name=电网%s -items.armor.glyphs.electricityglyph.desc=电网刻印可以增加使用者的雷电抗性,并有几率在电击敌人的同时提升使用者的充能效率。 - -items.armor.glyphs.lightglyph.name=神圣%s -items.armor.glyphs.lightglyph.desc=神圣刻印可以增加使用者的光照抗性,并有几率在魅惑敌人的同时将其狂乱。 - -items.armor.glyphs.darkglyph.name=暗契%s -items.armor.glyphs.darkglyph.desc=暗契刻印可以增加使用者的黑暗抗性,并有几率在对敌人造成伤害的同时恢复使用者的生命。 - -items.armor.glyphs.revivalglyph.name=复生%s -items.armor.glyphs.revivalglyph.revival=护甲的附魔为你抵挡了致命伤害。 -items.armor.glyphs.revivalglyph.desc=复生刻印有几率为使用者抵挡致命的物理攻击,并恢复使用者大量的生命。 - -items.armor.glyphs.changeglyph.name=变幻%s -items.armor.glyphs.changeglyph.desc=变幻刻印有几率为使用者创造一个镜像,并使使用者远离危险。 - -items.armor.glyphs.crystalglyph.name=晶化%s -items.armor.glyphs.crystalglyph.desc=晶化刻印有几率为使用者提供玻璃保护效果。 - -items.armor.glyphs.testglyph.name=试验%s -items.armor.glyphs.testglyph.desc=试验刻印有几率为使用者创造一个对敌人危险的气体。 - -items.armor.glyphs.adaptglyph.name=适应%s -items.armor.glyphs.adaptglyph.desc=适应刻印有几率根据使用者当前所在的环境给与不同的增益效果。 - -items.armor.glyphs.recoilglyph.name=反冲%s -items.armor.glyphs.recoilglyph.desc=反冲刻印有几率击退攻击者,并对其造成流血效果。 - -###armor -items.armor.normalarmor.normalarmor.stats_known=这件_%1$d阶_防具可以抵挡_%2$d~%3$d点伤害_,并且需要_%4$d点力量_来正常装备。 -items.armor.normalarmor.normalarmor.stats_known2=这件防具的闪避为_%1$s_,潜行为_%2$s_,能量计数为_%3$d_。 -items.armor.normalarmor.normalarmor.stats_unknown=一般而言这件_%1$d阶_防具可以抵挡_%2$d~%3$d点伤害_,并且需要_%4$d点力量_来正常装备。 -items.armor.normalarmor.normalarmor.too_heavy=你的力量不足以完美使用它。 -items.armor.normalarmor.normalarmor.incompatible=不同属性的魔法相冲突,消除了防具上的附魔! -items.armor.normalarmor.normalarmor.cursed_worn=由于这件防具被诅咒,你无法将其卸下。 -items.armor.normalarmor.normalarmor.cursed=你能感觉到这件武器里潜伏着一股充满恶意的魔力。 -items.armor.normalarmor.normalarmor.inscribed=这件防具已经有刻印了,%s -items.armor.normalarmor.normalarmor.stats_desc= - -items.armor.armor$glyph.glyph=刻印 - -items.skills.classskill.charge=冷却:%d。 -items.skills.classskill.name=职业技能 - -items.skills.mageskill.name=法师长袍 -items.skills.mageskill.ac_special=熔岩之怒 -items.skills.mageskill.ac_special_two=奥术轰炸 -items.skills.mageskill.prompt2=选择施放的地点。 -items.skills.mageskill.ac_special_three=暴风雪 -items.skills.mageskill.ac_special_four=引雷 -items.skills.mageskill.desc=法师技能 \n熔岩之怒:缠绕并腐蚀所有范围内的敌人。\n\n奥术轰炸:利用轰击一处地点并造成伤害。\n\n暴风雪:伤害并冻结所有范围内的敌人。\n\n引雷:获得充能,并静电周围的单位。 - -items.skills.huntressskill.name=猎手披风 -items.skills.huntressskill.ac_special=猎手本能 -items.skills.huntressskill.ac_special_two=狩猎准备 -items.skills.huntressskill.ac_special_three=自然之助 -items.skills.huntressskill.ac_special_four=活体根须 -items.skills.huntressskill.no_space=没有召唤物所能待的地方。 -items.skills.huntressskill.desc=女猎手技能 \n猎手本能:获得自然系增益。\n\n狩猎准备:投掷武器增益,并破甲目标。\n\n自然之助:吸引一只生命精灵。\n\n活体根须:寄生敌人,或召唤树苗。 - -items.skills.rogueskill.name=盗贼风衣 -items.skills.rogueskill.ac_special=暗影祝福 -items.skills.rogueskill.ac_special_two=探云手 -items.skills.rogueskill.ac_special_three=无需遗言 -items.skills.rogueskill.ac_special_four=信仰之跃 -items.skills.rogueskill.desc=盗贼技能 \n暗影祝福:隐身,获得伤害系增益 \n\n探云手:我,盗贼,打钱。\n\n无需遗言:沉默一个单位,直至它死亡。\n\n信仰之跃:在障碍物旁蓄力,并造成惊人的伤害。 - -items.skills.warriorskill.name=战士重甲 -items.skills.warriorskill.ac_special=原始力量 -items.skills.warriorskill.ac_special_two=决斗 -items.skills.warriorskill.ac_special_three=圣盾术 -items.skills.warriorskill.ac_special_four=奇袭战术 -items.skills.warriorskill.desc=战士技能 \n原始力量:B-K-B。\n\n决斗:伤害减免,缴械并沉默其他非决斗目标。\n\n圣盾术:抵挡伤害,并伤害其他单位。\n\n奇袭战术:对满血的单位和残血的单位的攻击造成额外的伤害。 - -items.skills.performerskill.name=演员夹克 -items.skills.performerskill.prompt=选择要变换的道具 -items.skills.performerskill.ac_special=奇异舞步 -items.skills.performerskill.ac_special_two=谢幕礼花 -items.skills.performerskill.ac_special_three=魔术手法 -items.skills.performerskill.ac_special_four=粉丝狂热 -items.skills.performerskill.desc=演员技能 \n奇异舞步:狂乱视野范围内所有敌人。\n\n谢幕礼花:伤害并致盲视野范围内所有敌人。\n\n魔术手法:转换一样装备。\n\n粉丝狂热:召唤一个狂热的粉丝为你打call。 - -items.skills.soldierskill.name=星兵背心 -items.skills.soldierskill.ac_special=幻影之军 -items.skills.soldierskill.ac_special_two=召唤机甲 -items.skills.soldierskill.ac_special_three=自爆假人 -items.skills.soldierskill.ac_special_four=空投补给 -items.skills.soldierskill$seekingbomb.name=砰砰机器人 -items.skills.soldierskill$seekingbomb.desc=警告:该机器人随时可能爆炸。 -items.skills.soldierskill$seekinghugebomb.name=砰砰砰砰机器人 -items.skills.soldierskill$seekinghugebomb.desc=警告:该机器人随时可能爆爆爆爆炸。 -items.skills.soldierskill.desc=星兵技能 \n幻影之军:生成多个幻想,弱驱散。\n\n召唤机甲:召唤并乘坐一个机甲。\n\n自爆假人:召唤多个会自爆的机器人。\n\n空投补给:提供食物和其他道具。 - -items.skills.followerskill.name=信徒外套 -items.skills.followerskill.ac_special=祈祷 -items.skills.followerskill.ac_special_two=资金募集 -items.skills.followerskill.ac_special_three=巧嘴滑舌 -items.skills.followerskill.ac_special_four=祝福术 -items.skills.followerskill.desc=信徒技能 \n祈祷:蓄力,获得伤害加成和伤害减免。\n\n资金募集:根据视野中单位的数量获得金币。\n\n巧嘴滑舌:恐惧敌人,并使你跑得飞快。\n\n祝福术:强化并驱散一件装备。 - -items.armor.normalarmor.clotharmor.name=布甲 -items.armor.normalarmor.clotharmor.desc=这件轻便的护甲能提供最基本的防御。\n常规护甲 - -items.armor.normalarmor.leatherarmor.name=皮甲 -items.armor.normalarmor.leatherarmor.desc=用鞣制的兽皮制成的护甲。没有布甲轻,但提供更好的防御。\n常规护甲 - -items.armor.normalarmor.mailarmor.name=链甲 -items.armor.normalarmor.mailarmor.desc=由金属链环环相扣制成的一套结实又不失灵活的护甲。\n常规护甲 -items.armor.normalarmor.platearmor.name=板甲 -items.armor.normalarmor.platearmor.desc=厚重的金属板拼接到一起,为能承受其骇人重量的冒险者提供无与伦比的防御。\n常规护甲 - -items.armor.normalarmor.scalearmor.name=鳞甲 -items.armor.normalarmor.scalearmor.desc=在厚实的皮背心中缝入金属鳞片,形成了灵活而高防御的护甲。\n常规护甲 - -items.armor.normalarmor.discarmor.name=碟甲 -items.armor.normalarmor.discarmor.desc=这种盔甲只是将金属片缝在布料上(它因此而得名)。它虽然耐用,但有着很大的体积。\n常规护甲 - -items.armor.normalarmor.errorarmor.name=错误护甲 -items.armor.normalarmor.errorarmor.desc=这是个错误。\n ??? - -items.armor.normalarmor.basearmor.name=基础护甲 -items.armor.normalarmor.basearmor.desc=这并不是一件护甲,但是为了美观,这件物品被装备在该角色身上。 - -items.armor.normalarmor.woodenarmor.name=木甲 -items.armor.normalarmor.woodenarmor.desc=精选上等白桦树皮所制,坚固耐用,但及不舒适。\n重型护甲 - -items.armor.normalarmor.ceramicsarmor.name=陶甲 -items.armor.normalarmor.ceramicsarmor.desc=粘土火中烧,结实又可靠。\n重型护甲 - -items.armor.normalarmor.stonearmor.name=石甲 -items.armor.normalarmor.stonearmor.desc=利用大地的魔法制作而成的护甲,坚硬而沉重。\n重型护甲 - -items.armor.normalarmor.multiplelayerarmor.name=复层甲 -items.armor.normalarmor.multiplelayerarmor.desc=这种护甲有内外两层,以敏捷为代价换取防御。\n重型护甲 - -items.armor.normalarmor.bulletarmor.name=防弹衣 -items.armor.normalarmor.bulletarmor.desc=基本上就是常规的防弹衣。\n重型护甲 - -items.armor.normalarmor.machinearmor.name=机械甲 -items.armor.normalarmor.machinearmor.desc=常规的板甲配备核心电源,外设四只机械臂,就是会发出巨大噪音。\n重型护甲 - -items.armor.normalarmor.vestarmor.name=背心 -items.armor.normalarmor.vestarmor.desc=一件工厂生产的普通商品,虽然没法抵御伤害,但是十分适合运动。\n轻型护甲 - -items.armor.normalarmor.rubberarmor.name=橡胶衣 -items.armor.normalarmor.rubberarmor.desc=一种可以紧贴全身的服装,一般用于cosplay。\n轻型护甲 - -items.armor.normalarmor.cdarmor.name=光碟甲 -items.armor.normalarmor.cdarmor.desc=一堆废弃光盘串成的护甲。很明显这是某个环保比赛的优秀作品。\n轻型护甲 - -items.armor.normalarmor.styrofoamarmor.name=塑料泡沫甲 -items.armor.normalarmor.styrofoamarmor.desc=用塑料泡沫充当护甲,这能小幅减轻外来的冲击。\n轻型护甲 - -items.armor.normalarmor.protectiveclothingarmor.name=防护服 -items.armor.normalarmor.protectiveclothingarmor.desc=部分有毒有害工厂工人必须穿着的工装,可以有效将有毒有害的环境与自身隔离。\n轻型护甲 - -items.armor.normalarmor.phantomarmor.name=幻影护甲 -items.armor.normalarmor.phantomarmor.desc=先进高科技,外衣上装载着迷你投影仪,可以有效迷惑有眼睛的敌人。\n轻型护甲 - -###artifacts -items.artifacts.alchemiststoolkit.name=炼金工具箱 -items.artifacts.alchemiststoolkit.ac_brew=组合 -items.artifacts.alchemiststoolkit.ac_create=造物 -items.artifacts.alchemiststoolkit.prompt=选择置入的药水 -items.artifacts.alchemiststoolkit.waste=你加入的药水不完全对。 -items.artifacts.alchemiststoolkit.prefect=完美的组合,这正是这个箱子所需要的。 -items.artifacts.alchemiststoolkit.bestbrew=这次组合比之前好。 -items.artifacts.alchemiststoolkit.bdorder=瓶药剂反应成功, -items.artifacts.alchemiststoolkit.right=瓶药剂反应得很正确。 -items.artifacts.alchemiststoolkit.desc=这个工具箱是由一位伟大的炼金术士所制作的。它用于减少炼金的材料消耗,以及提升锅子的容量。你移动时,这个工具包里面的各种工具互相碰撞,在发出轻微的叮当声。 -items.artifacts.alchemiststoolkit.desc_cursed=这个工具箱被诅咒了,极大增加了你合成药水所需的材料。 -items.artifacts.alchemiststoolkit.level_zero=看起来这个工具箱还需要一种混合试剂。你需要找到3瓶不同的药剂并将它们按照正确的顺序来排列,从而合成这种试剂。 -items.artifacts.alchemiststoolkit.level_ten=完美的组合使工具箱的效果已经达到最大。 -items.artifacts.alchemiststoolkit.make_from=目前为止你最好的测试结果是 -items.artifacts.alchemiststoolkit.addpotion=你将药水倒入工具箱中。 -items.artifacts.alchemiststoolkit.have_add=这种药水已经被倒入工具箱中了。 -items.artifacts.alchemiststoolkit.know_first=你需要先鉴定这瓶药水。 - -items.artifacts.alienbag.name=异星肩包 -items.artifacts.alienbag.ac_shield=护盾模式 -items.artifacts.alienbag.ac_bomb=爆破模式 -items.artifacts.alienbag.ac_fly=飞行模式 -items.artifacts.alienbag.ac_etc=隐藏模式 -items.artifacts.alienbag.desc=一个由异星科技所制作出的背包。包含各种功能,并通过吸收残骸来升级。 -items.artifacts.alienbag.no_charge=充能不足 -items.artifacts.alienbag.full_charge=充能完毕 -items.artifacts.alienbag$bagrecharge.levelup=你的肩包升级了。 - -items.artifacts.artifact.onlythree=最多同时装备三件饰品。 -items.artifacts.artifact.unequip_title=拿下一件饰品 -items.artifacts.artifact.unequip_message=你只能同时装备最多两件饰品。 -items.artifacts.artifact.cannot_wear_two=你不能装备两件相同的神器。 -items.artifacts.artifact.cursed_worn=神器紧紧地将其捆绑在你身上。 -items.artifacts.artifact.curse_known=你能感觉到在这个神器上潜伏着一股充满恶意的魔力。 -items.artifacts.artifact.need_to_equip=你需要装备神器才能进行该操作。 -items.artifacts.artifact.need_to_change=这件神器已经失去了它原有的效果。 - -items.artifacts.capeofthorns.name=荆棘斗篷 -items.artifacts.capeofthorns.ac_needling=激发 -items.artifacts.capeofthorns.desc=矮人实验室里的研究反射魔法的副产物之一,这件由奇怪的金属片构成的坚硬斗篷能够从敌人的攻击中摄取能量,并将其反馈给攻击者。 -items.artifacts.capeofthorns.desc_inactive=斗篷压在你的肩上的感觉非常沉重,它似乎能从你受的伤里获得能量。 -items.artifacts.capeofthorns.desc_active=斗篷似乎在释放其存储的能量,并将其辐射出一种防护力场。 -items.artifacts.capeofthorns$thorns.inert=你的斗篷再次失效了。 -items.artifacts.capeofthorns$thorns.radiating=你的斗篷正在释放存储的能量,你感到自己正在被保护着! -items.artifacts.capeofthorns$thorns.levelup=你的斗篷变得更强大了! -items.artifacts.capeofthorns$thorns.name=荆棘 -items.artifacts.capeofthorns$thorns.desc=你的斗篷在你周围辐射能量,产生了一个偏斜力场! \n\n该效果下你受到的所有伤害都会被减少。此外,如果攻击者就在你旁边,被减少的伤害会反弹给攻击者。\n\n荆棘效果持续时间:%s回合 - -items.artifacts.chaliceofblood.name=蓄血圣杯 -items.artifacts.chaliceofblood.ac_prick=血祭 -items.artifacts.chaliceofblood.ac_bloodangry=血怒 -items.artifacts.chaliceofblood.yes=是的,我知道我在做什么 -items.artifacts.chaliceofblood.no=不,我改主意了 -items.artifacts.chaliceofblood.prick_warn=每次使用圣杯都会消耗更多的生命能量,要是不够小心,这种行为可以轻易地杀死你。\n\n你确定要给它更多的生命能量吗? -items.artifacts.chaliceofblood.onprick=你刺破了自己的手指,使你的生命精华流入了圣杯。 -items.artifacts.chaliceofblood.ondeath=圣杯将你的生命精华吸噬殆尽了… -items.artifacts.chaliceofblood.desc=这个闪闪发光的银质酒杯在边沿突兀地装饰着几颗造型尖锐的宝石。 -items.artifacts.chaliceofblood.desc_cursed=被诅咒的圣杯将自己固定在你手上,抑制着你回复生命的能力。 -items.artifacts.chaliceofblood.desc_1=握住圣杯的那一刻,你涌起一股想在那些尖锐宝石上刺伤自己的奇特冲动。 -items.artifacts.chaliceofblood.desc_2=你的一些血液汇集到圣杯里,你可以隐约感受到杯子在为你送来生命能量。你还想用圣杯继续割伤自己,即便你知道那很疼。 -items.artifacts.chaliceofblood.desc_3=圣杯已经被你的生命精华填满。你可以感觉到圣杯正将生命能量倾泻般回馈给你。 - -items.artifacts.cloakofshadows.name=暗影斗篷 -items.artifacts.cloakofshadows.ac_stealth=潜行 -items.artifacts.cloakofshadows.ac_shadow=永影 -items.artifacts.cloakofshadows.cooldown=你的披风还需要%d回合来重新激活。 -items.artifacts.cloakofshadows.no_charge=你的斗篷充能不足无法使用。 -items.artifacts.cloakofshadows.desc=这是盗贼多年前从皇家军械库窃取的一件无价的魔法披风。穿上时,能够使你在短时间内完全隐身。\n\n被使用得越频繁,披风就会变得越强,使盗贼更频繁地隐身,持续时间也更长。 -items.artifacts.cloakofshadows$cloakstealth.no_charge=你的披风耗尽了能量。 -items.artifacts.cloakofshadows$cloakstealth.levelup=你的披风变得更强大了! -items.artifacts.cloakofshadows$cloakstealth.name=披风之下 -items.artifacts.cloakofshadows$cloakstealth.desc=你身上的暗影披风正给予你隐形效果。\n\n当你在隐形时敌人无法追踪或攻击你。大部分物理攻击和魔法(比如卷轴和法杖)会不可避免地消除隐形效果。\n\n你会一直拥有该状态,直到你自行取消或披风耗尽能量。 - -items.artifacts.driedrose.name=干枯玫瑰 -items.artifacts.driedrose.ac_summon=召唤 -items.artifacts.driedrose.ac_outfit=军备 -items.artifacts.driedrose.ac_soulbless=超度 -items.artifacts.driedrose.spawned=你已经召唤出幽灵了。 -items.artifacts.driedrose.no_charge=你的玫瑰尚未充能完毕。 -items.artifacts.driedrose.cursed=你不能使用受诅咒的玫瑰。 -items.artifacts.driedrose.no_space=你附近没有可用于召唤的空地。 -items.artifacts.driedrose.charged=你的玫瑰已经充能完毕! -items.artifacts.driedrose.desc=这就是那朵在幽灵消失前被提及的玫瑰吗?它似乎拥有某种精神力量,也许能以此为媒介触及这位陨落战士的能量。 -items.artifacts.driedrose.desc_no_quest=一株因岁月而干枯但仍然没有完全凋零的玫瑰。\n\n看起来它上面依然残留了一些力量,只是你不知道如何使用它。 -items.artifacts.driedrose.desc_hint=它似乎缺少了一些花瓣。也许把花瓣拼回来可以增强玫瑰。 -items.artifacts.driedrose.desc_cursed=受诅咒的玫瑰将自己绑在了你的手上,你感觉到它出奇的冷。 -items.artifacts.driedrose$petal.name=干枯的花瓣 -items.artifacts.driedrose$petal.no_rose=你没有玫瑰来添加这片花瓣。 -items.artifacts.driedrose$petal.no_room=你的玫瑰已经放不下这片花瓣了,所以你无视了它。 -items.artifacts.driedrose$petal.maxlevel=玫瑰再一次完整了! -items.artifacts.driedrose$petal.levelup=你将花瓣放在了玫瑰上。 -items.artifacts.driedrose$petal.desc=一片干枯脆弱的花瓣,它居然能够在这么深的地牢之中幸存下来。 -items.artifacts.driedrose$ghosthero.name=悲伤幽灵 -items.artifacts.driedrose$sghosthero.name=暴躁幽灵 -items.artifacts.driedrose$ghosthero.def_verb=躲避 -items.artifacts.driedrose$ghosthero.hello=再次向你问好,%s。 -items.artifacts.driedrose$ghosthero.introduce=我的灵魂与这朵玫瑰相连,对我来说它非常珍贵,是我爱人在我离开地面前送给我的礼物。\n\n我无法回去见他了,但感谢你让我有第二次机会来完成我的旅程。当我准备好后,我会回应你的呼唤与你并肩作战。\n\n希望你能在我倒下的地方继续走下去…… -items.artifacts.driedrose$sghosthero.desc=强化后的悲伤幽灵,速度更快,并会在死亡时复活。 -items.artifacts.driedrose$ghosthero.desc=这是一个拥有人类外形的脆弱幻影。它的力量似乎与我手上的玫瑰联系在了一起。\n\n这个幽灵可能无法逗留太久,但它应该是我在这里唯一的挚友了。 -items.artifacts.driedrose$wndghosthero.title=幽灵的装备 -items.artifacts.driedrose$wndghosthero.desc=幽灵本身十分脆弱,但她的形体已经完整到足以装备一件武器和防具。她可以和你一样自如使用这些装备。\n\n幽灵目前可装备_力量需求上限低于%d_的物品。 -items.artifacts.driedrose$wndghosthero.weapon_prompt=选择一件武器 -items.artifacts.driedrose$wndghosthero.armor_prompt=选择一件护甲 -items.artifacts.driedrose$wndghosthero.cant_unique=幽灵无法使用特殊装备。 -items.artifacts.driedrose$wndghosthero.cant_unidentified=你对于那个道具并不是十分了解。 -items.artifacts.driedrose$wndghosthero.cant_cursed=你不能让幽灵使用有诅咒的物品。 -items.artifacts.driedrose$wndghosthero.cant_strength=幽灵的形体还不够强大,无法装备此物品。 - -items.artifacts.etherealchains.name=虚空锁链 -items.artifacts.etherealchains.ac_cast=施放 -items.artifacts.etherealchains.ac_locked=封印 -items.artifacts.etherealchains.no_charge=你的锁链充能不足。 -items.artifacts.etherealchains.cursed=你不能使用受诅咒的锁链。 -items.artifacts.etherealchains.does_nothing=这样并没有用。 -items.artifacts.etherealchains.cant_pull=你的锁链不能拉动那个目标。 -items.artifacts.etherealchains.nothing_to_grab=目标区域没有可供抓取的物件。 -items.artifacts.etherealchains.prompt=选择要瞄准的地方 -items.artifacts.etherealchains.desc=这些巨大但轻盈的锁链散发着灵魂能量。它们可以用来把你拉向一些地形,或将敌人拉向你。无实体的天然特质甚至可以允许其穿透墙壁! -items.artifacts.etherealchains.desc_cursed=被诅咒的锁链将自己锁在了你的身边,不断地在周围晃动,试图绊倒或绑住你。 -items.artifacts.etherealchains.desc_equipped=锁链围绕在你的身边,缓慢地收集被你击败者的精神能量。每一发充能都是锁链中的一环,每一个环节都能正好延长一格。 -items.artifacts.etherealchains$chainsrecharge.levelup=你的锁链变得更强大了! - -items.artifacts.hornofplenty.name=丰饶之角 -items.artifacts.hornofplenty.ac_eat=食用 -items.artifacts.hornofplenty.ac_store=贮存 -items.artifacts.hornofplenty.ac_feed=盛宴 -items.artifacts.hornofplenty.eat=你吃光了号角中的食物。 -items.artifacts.hornofplenty.prompt=选择一个食物 -items.artifacts.hornofplenty.no_food=你的号角里没有食物可供食用! -items.artifacts.hornofplenty.full=你的号角装满了食物! -items.artifacts.hornofplenty.reject=你的号角并不接受未经烹煮的无味果。 -items.artifacts.hornofplenty.maxlevel=你的号角已经吞噬了尽可能多的食物! -items.artifacts.hornofplenty.levelup=号角吞噬了你提供的食物,变得更加强大了。 -items.artifacts.hornofplenty.desc=这个号角不能被用来吹奏,不过装备时它似乎会随时间流逝逐渐填充食物。 -items.artifacts.hornofplenty.desc_hint=也许可以通过给予它食物的能量来增加号角的力量。 -items.artifacts.hornofplenty.desc_cursed=被诅咒的号角把自己绑在了你的身边,它似乎在渴望得到食物而不是制造食物。 - -items.artifacts.masterthievesarmband.name=会员袖章 -items.artifacts.masterthievesarmband.ac_goldtouch=点金 -items.artifacts.masterthievesarmband.desc=这个紫色的天鹅绒袖标是大会员的标志。不知道是谁把他丢在这的。 -items.artifacts.masterthievesarmband.desc_worn=让它戴在你的手腕上,你找到的每块金币都让商店为你减价。大会员你懂的。 - -items.artifacts.pylon.name=便携式水晶塔 -items.artifacts.pylon.ac_zap=释放 -items.artifacts.pylon.ac_set=设置 -items.artifacts.pylon.ac_return=返回 -items.artifacts.pylon.ac_rankup=升阶 -items.artifacts.pylon.no_charge=你的水晶塔现在并没有足够的能量支撑发射传送魔法。 -items.artifacts.pylon.tele_fail=传送魔法失败了。 -items.artifacts.pylon.prompt=选择要释放魔法的位置 -items.artifacts.pylon.levelup=你的水晶变得更强大了! -items.artifacts.pylon.rankup=晋升!!! -items.artifacts.pylon.preventing=这里强大的魔力流使你无法使用时空道标! -items.artifacts.pylon.creatures=邻近生物的心灵信号正在干扰你的时空道标并使其无法被使用。 -items.artifacts.pylon.return=水晶被成功设置在了你的当前位置,现在你可以随时折跃到这里。 -items.artifacts.pylon.desc=水晶塔是一个具有控制空间能力的复杂建筑。该水晶塔可以用来折跃至预定地点,但其在装备时的能量也可以用来对指定目标发射随机传送魔法。这个魔法可以针对某个目标或使用者自身。 -items.artifacts.pylon.desc_set=水晶被设置在了像素地牢第%d层的某处。 - - -items.artifacts.sandalsofnature.name=自然之履 -items.artifacts.sandalsofnature.name_1=自然之鞋 -items.artifacts.sandalsofnature.name_2=自然之靴 -items.artifacts.sandalsofnature.name_3=自然护腿 -items.artifacts.sandalsofnature.ac_feed=喂食 -items.artifacts.sandalsofnature.ac_root=扎根 -items.artifacts.sandalsofnature.ac_sprout=发芽 -items.artifacts.sandalsofnature.no_charge=它们现在还没有能量。 -items.artifacts.sandalsofnature.prompt=选择一个种子 -items.artifacts.sandalsofnature.already_fed=你的鞋子已经从这种种子里中获取过营养了。 -items.artifacts.sandalsofnature.levelup=你的鞋子尺寸变大了! -items.artifacts.sandalsofnature.absorb_seed=鞋子吸收了种子,看起来更健康了。 -items.artifacts.sandalsofnature.desc_1=初看像是用麻绳编成的凉鞋实际上是两株植物!它们看上去既虚弱又苍白,也许它们需要一点营养? -items.artifacts.sandalsofnature.desc_2=这双鞋子已经长大了,现在更像是一双合脚的鞋。它们已经没那么苍白了,也许还可以进一步成长? -items.artifacts.sandalsofnature.desc_3=这两株植物又长大了。像是一双树皮制成的厚靴子。植物似乎已经恢复了它们的力量,但也许仍能进一步成长? -items.artifacts.sandalsofnature.desc_4=植物们似乎已长到最大,就像是一对装甲护胫。这对深棕色护腿看上去仿如一棵非常坚毅的树。 -items.artifacts.sandalsofnature.desc_hint=穿上这件神器时你感到更加亲近自然了。 -items.artifacts.sandalsofnature.desc_cursed=被诅咒的鞋子切断了一切你与自然的联系。 -items.artifacts.sandalsofnature.desc_ability=这双鞋已经获得了形成一种固定的天然装甲的能力,但它们需要充能。 -items.artifacts.sandalsofnature.desc_seeds=你已经给鞋子喂过了%d种种子。 - -items.artifacts.talismanofforesight.name=先见护符 -items.artifacts.talismanofforesight.ac_scry=探查 -items.artifacts.talismanofforesight.ac_notice=预知 -items.artifacts.talismanofforesight.no_charge=你的护符尚未被完全充能。 -items.artifacts.talismanofforesight.scry=护符将关于本层的知识填满了你的脑海。 -items.artifacts.talismanofforesight.desc=一块奇怪的有着光滑雕刻的石头。你觉得它在关注着你周围的一切,留意任何不寻常的东西。 -items.artifacts.talismanofforesight.desc_worn=当你拿着护符时你感觉你的感知力提高了。 -items.artifacts.talismanofforesight.desc_cursed=被诅咒的护符目不转睛地瞪着你,使你无法集中精力。 -items.artifacts.talismanofforesight$foresight.name=先见 -items.artifacts.talismanofforesight$foresight.levelup=你的护符变得更强大了!你似乎预见到了某些危险。 -items.artifacts.talismanofforesight$foresight.full_charge=你的护符充能满了! -items.artifacts.talismanofforesight$foresight.uneasy=你感到很不安。 -items.artifacts.talismanofforesight$foresight.desc=你感到非常焦虑,仿佛周遭有未被发现的危险。 - -items.artifacts.timekeepershourglass.name=时光沙漏 -items.artifacts.timekeepershourglass.ac_activate=激活 -items.artifacts.timekeepershourglass.ac_restart=重置 -items.artifacts.timekeepershourglass.in_use=你的沙漏正在使用中。 -items.artifacts.timekeepershourglass.no_charge=你的沙漏充能还不足以用来激活。 -items.artifacts.timekeepershourglass.cursed=你不能使用受诅咒的沙漏。 -items.artifacts.timekeepershourglass.onstasis=你周遭的世界似乎就在这一瞬间变化了。 -items.artifacts.timekeepershourglass.onfreeze=你周围的一切突然都彻底静止下来。 -items.artifacts.timekeepershourglass.stasis=使我彻底静止 -items.artifacts.timekeepershourglass.freeze=冻结周围时间 -items.artifacts.timekeepershourglass.prompt=你想怎样使用沙漏的魔法?\n\n当你被静止,周围的时间会正常流动,而你则会冻结并变得无敌。\n\n当时间被冻结,你的行动仿佛不需要任何时间。注意,进行攻击将打破该效果。 -items.artifacts.timekeepershourglass.desc=这只大型的华贵沙漏看起来却并不怎么起眼,但你仍觉得它精雕细刻的框架内蕴含着某种强大的力量。在翻转沙漏、在看着沙子流下的同时,你能感受到一种魔法正在拉扯着你,使用这种魔法肯定能给你一些控制时间的方法。 -items.artifacts.timekeepershourglass.desc_hint=沙漏似乎失去了一些沙子,如果你能再找到一些…… -items.artifacts.timekeepershourglass.desc_cursed=被诅咒的沙漏把它自己锁在了你的身边,你可以感觉它试图操纵你的时间流动。 -items.artifacts.timekeepershourglass$sandbag.name=一包魔力流沙 -items.artifacts.timekeepershourglass$sandbag.levelup=你将沙子填入到你的沙漏中。 -items.artifacts.timekeepershourglass$sandbag.maxlevel=你的沙漏填满了魔法沙子! -items.artifacts.timekeepershourglass$sandbag.no_hourglass=你没有沙漏来存放这些沙子。 -items.artifacts.timekeepershourglass$sandbag.desc=这一小袋细砂应该能够在你的沙漏上完美使用。\n\n每次当你需要这种东西时,店主都会摆出来一些,看起来很奇怪…… - -items.artifacts.unstablespellbook.name=无序魔典 -items.artifacts.unstablespellbook.ac_read=阅读 -items.artifacts.unstablespellbook.ac_add=加入 -items.artifacts.unstablespellbook.ac_song=圣歌 -items.artifacts.unstablespellbook.blinded=你不能在失明的时候阅读书籍。 -items.artifacts.unstablespellbook.no_charge=你的咒语书耗尽了能量。 -items.artifacts.unstablespellbook.cursed=受诅咒的咒语书锁死了书页,你无法阅读它。 -items.artifacts.unstablespellbook.prompt=选择一个卷轴 -items.artifacts.unstablespellbook.infuse_scroll=你将卷轴的能量注入了书中。 -items.artifacts.unstablespellbook.unable_scroll=你无法将这个物品添加到书中。 -items.artifacts.unstablespellbook.unknown_scroll=你仍然不清楚这个卷轴的类型。 -items.artifacts.unstablespellbook.desc=令人惊讶的是这本古老的法典被保养得很好。当你翻动页面时它不断地噼啪作响并发出嘶嘶声,涌动着不稳定的能量。一旦诵读这本书,没人能笃定你会释放出什么咒语。 -items.artifacts.unstablespellbook.desc_cursed=被诅咒的书本将自己绑在了你身上,并在抑制你使用大部分卷轴的能力。 -items.artifacts.unstablespellbook.desc_index=目前该物品所有的经验为%s。 -items.artifacts.unstablespellbook.exp=目前该物品所有的经验为%s。 - -items.artifacts.eyeofskadi.name=斯嘉蒂之眼 -items.artifacts.eyeofskadi.ac_add=献祭 -items.artifacts.eyeofskadi.ac_blast=冰暴 -items.artifacts.eyeofskadi.ac_curse=诅咒 -items.artifacts.eyeofskadi.no_charge=冰眼尚未充能完毕。 -items.artifacts.eyeofskadi.prompt=选择原石作为献祭素材 -items.artifacts.eyeofskadi.need_charge=冰眼还没有准备好。 -items.artifacts.eyeofskadi.full_charge=冰眼已经准备完毕。 -items.artifacts.eyeofskadi.exp=目前能量%s。 -items.artifacts.eyeofskadi.infuse_ore=冰眼熔化了原石。 -items.artifacts.eyeofskadi.desc=极度罕见的古物,原由苍空之龙看管,因时空乱流流落至此。这只眼睛仿佛有生命一般,散发出可怕的气息。 - -items.artifacts.robotdmt.name=机械核心 -items.artifacts.robotdmt.ac_heart=使用 -items.artifacts.robotdmt.ac_memory=决心 -items.artifacts.robotdmt.no_charge=机械核心尚未充能完毕。 -items.artifacts.robotdmt.full_charge=机械核心已完全充能。 -items.artifacts.robotdmt.patience=尝试解析:耐心 -items.artifacts.robotdmt.bravery=尝试解析:勇气 -items.artifacts.robotdmt.integrity=尝试解析:诚实 -items.artifacts.robotdmt.preseverance=尝试解析:坚毅 -items.artifacts.robotdmt.kindness=尝试解析:慷慨 -items.artifacts.robotdmt.justice=尝试解析:公正 -items.artifacts.robotdmt.soul=尝试解析:灵魂 -items.artifacts.robotdmt.friendship=尝试解析:友谊 -items.artifacts.robotdmt.chaos=尝试解析:混沌...解析失败 -items.artifacts.robotdmt.determination=尝试解析:决心...解析失败 -items.artifacts.robotdmt.desc=一位疯狂的科学家为了研究人类的毅力所制造的机器。它不需要任何能源来驱动,并且能够每隔一段时间返回解析结果。 - -items.artifacts.glasstotem.name=玻璃图腾 -items.artifacts.glasstotem.ac_atk=进攻祝福 -items.artifacts.glasstotem.ac_def=保护祝福 -items.artifacts.glasstotem.desc=由玻璃女神的信徒所制作的一件...图腾?可以用它来和玻璃女神沟通并乞求她的祝福。 - - -###bags -items.bags.bag.name=背包 -items.bags.potionbandolier.name=药剂挎带 -items.bags.potionbandolier.desc=这副厚实的挎带能像肩带一样缠在身上,上面有许多用来放药瓶的隔热革带。 \n\n挎带能为存放其中的药瓶抵御寒冷。 -items.bags.scrollholder.name=卷轴筒 -items.bags.scrollholder.desc=这个管状的容器看起来可以装下一整份天文学家的手书,不过你的卷轴也刚好能放在里面。\n\n这个容器看起来并不是很可燃,所以你的卷轴在里面一定很安全。\n\n其中还有一个存放炸弹和其他爆炸物的小隔间。 -items.bags.seedpouch.name=种子包 -items.bags.seedpouch.desc=这个丝绒制作的小袋子能让你储存任意数量的种子或者类似大小的东西。 -items.bags.wandholster.name=法杖套 -items.bags.wandholster.desc=这个修长的皮套看起来是由某种异域动物的毛皮制成,这个皮套的设计允许它紧密地持有多个法杖。 -items.bags.keyring.name=钥匙环 -items.bags.keyring.desc=这个钥匙环能容纳你的钥匙和戒指。一些神奇的力量使它可以容纳各种传送道具。 -items.bags.shoppingcart.name=购物车 -items.bags.shoppingcart.desc=一个现代的小推车。你可以把食物放在里面。 -items.bags.heartofscarecrow.name=草靶子 -items.bags.heartofscarecrow.desc=可以承载各类武器靶子。 - -###food -items.food.fruit.blandfruit.name=无味果 -items.food.fruit.blandfruit.sunfruit=阳光果 -items.food.fruit.blandfruit.rotfruit=腐朽果 -items.food.fruit.blandfruit.earthfruit=大地果 -items.food.fruit.blandfruit.blindfruit=目盲果 -items.food.fruit.blandfruit.firefruit=火焰果 -items.food.fruit.blandfruit.icefruit=冰霜果 -items.food.fruit.blandfruit.fadefruit=渐隐果 -items.food.fruit.blandfruit.sorrowfruit=忧伤果 -items.food.fruit.blandfruit.stormfruit=暴风果 -items.food.fruit.blandfruit.dreamfruit=梦乡果 -items.food.fruit.blandfruit.starfruit=星陨果 -items.food.fruit.blandfruit.powerfruit=强化果 -items.food.fruit.blandfruit.mightyfruit=决心果 -items.food.fruit.blandfruit.heartfruit=生命果 - -items.food.fruit.blandfruit.raw=这玩意没法生吃。 -items.food.fruit.blandfruit.ice_msg=这个冰霜果尝起来有点冰冻生肉片的感觉。 -items.food.fruit.blandfruit.fire_msg=你感觉到体内有一股烈焰在熊熊燃烧! -items.food.fruit.blandfruit.toxic_msg=你被灌注了强大的毒素力量! -items.food.fruit.blandfruit.para_msg=你感到大地的力量在体内奔腾! -items.food.fruit.blandfruit.desc=干燥且脆弱,或许加点其他材料再煮能够增强它的效果。 -items.food.fruit.blandfruit.desc_cooked=这个果实已经因为吸收锅中的汤而鼓胀,并且吸收了其中种子的属性。\n\n看起来已经可以吃了! - -items.food.meatfood.chargrilledmeat.name=烤肉排 -items.food.meatfood.chargrilledmeat.desc=烧烤是最基础的处理食材的方式。这种方式处理的食物虽然味道不是很好,但是却能提供更多的能量以及更长的保质时间。 - -items.food.food.name=干粮包 -items.food.food.ac_eat=食用 -items.food.food.locked=锁闭魔法阻止了你进食。 -items.food.food.bosslevel=这里不适合吃这种食物。 -items.food.food.desc=里面没什么有意思的东西:肉干和一些饼干——这之类的东西。 - -items.food.staplefood.normalration.name=干粮包 -items.food.staplefood.normalration.desc=里面没什么有意思的东西:肉干和一些饼干——这之类的东西。 - -items.food.staplefood.pasty.pasty=肉馅饼 -items.food.staplefood.pasty.assorted=春什锦 -items.food.staplefood.pasty.pie=南瓜派 -items.food.staplefood.pasty.egg=七彩蛋 -items.food.staplefood.pasty.book=暑假作业 -items.food.staplefood.pasty.cane=拐杖糖 -items.food.staplefood.pasty.turkey=烤火鸡 -items.food.staplefood.pasty.bread=砖头糕 -items.food.staplefood.pasty.jelly=软糖剑 - -items.food.staplefood.pasty.pasty_desc=这是份正宗康郡肉烘饼,内含土豆加牛肉的传统馅料。 -items.food.staplefood.pasty.assorted_desc=年糕、汤圆,饺子什么的塞满了这个蒸笼。作为新春佳节的传统食物之一,它能完全消除你的饥饿感并让你充满决心。\n\n春节快乐! -items.food.staplefood.pasty.pie_desc=好大的一块南瓜派!甘甜又微辣,它会填饱你的肚子并让你恢复少量生命。\n\n万圣节快乐! -items.food.staplefood.pasty.book_desc=这是一份暑假作业,注意劳逸结合。\n\n暑假快乐! -items.food.staplefood.pasty.egg_desc=虽然这个东西看起来不大,但吃下它能够完全消除你的饥饿感,并让你精神抖擞。\n\n复活节快乐! -items.food.staplefood.pasty.cane_desc=甜度爆表的巨型拐杖糖!大到够你一次吃饱,其中的糖分或许还能让你的法杖获得一点点额外充能。\n\n节日快乐! -items.food.staplefood.pasty.turkey_desc=刚烤好的一只感恩节火鸡。吃下它可以恢复你的饥饿值并加快你的速度。\n\n感恩节快乐! -items.food.staplefood.pasty.bread_desc=由面粉和奶油烧制成的砖头形状的糕点。没准里面有金子呢。\n\n劳动节快乐! -items.food.staplefood.pasty.jelly_desc=一个做成剑形状的软糖,估计只有小孩才喜欢这种味道。\n\n儿童节快乐! -items.food.staplefood.pasty.worker=辛苦了,这是500块的报酬。 - -items.food.meatfood.frozencarpaccio.name=冻肉片 -items.food.meatfood.frozencarpaccio.hard=你感到皮肤变硬了! -items.food.meatfood.frozencarpaccio.refresh=神清气爽! -items.food.meatfood.frozencarpaccio.invisbility=你被暗影祝福了! -items.food.meatfood.frozencarpaccio.better=你感觉好多了! -items.food.meatfood.frozencarpaccio.desc=冰冻也是处理食物的方式之一。这种方式处理的食物味道会比其他食物好点,但本身不能提供太多能量。由于神秘的魔法在地牢里面萦绕,制作冻肉的同时可能把这种魔法凝聚到冻肉内部,使它提供更多的增益效果。 - -items.food.meatfood.mysterymeat.not_well=你感觉……不太好 -items.food.meatfood.mysterymeat.name=怪物肉 -items.food.meatfood.mysterymeat.hot=嗷!好烫! -items.food.meatfood.mysterymeat.legs=你的腿没有知觉了! -items.food.meatfood.mysterymeat.bad=你感觉很难受。 -items.food.meatfood.mysterymeat.stuffed=你的神经麻痹了。 -items.food.meatfood.mysterymeat.desc=这种肉和市场上卖的不同,看起来十分危险。如果不处理而食用它可能带来不可预知的后果。 - -items.food.staplefood.overpricedration.name=干粮小包 -items.food.staplefood.overpricedration.desc=容量较食物包小的食物小包,很受年轻女性冒险者的欢迎。 - -items.food.fruit.blackberry.name=粉色浆果 -items.food.fruit.blackberry.desc=野生浆果的一种,富含大量维生素和矿物质,食用后可以大幅度提升机体的恢复速度。同时还有几率开发你的灵能,使你发现隐藏在地牢里的其他生物。 - -items.food.fruit.blueberry.name=蓝色浆果 -items.food.fruit.blueberry.stop=这里的魔法阻止了你使用这种方法来探查地牢! -items.food.fruit.blueberry.desc=野生浆果的一种,富含大量维生素和矿物质,食用后你将获得这一层的全部信息。 - -items.food.fruit.cloudberry.name=红色浆果 -items.food.fruit.cloudberry.desc=野生浆果的一种,富含大量维生素和矿物质,食用后可以使人行动更为敏捷。 - -items.food.fruit.fullmoonberry.name=满月浆果 -items.food.fruit.fullmoonberry.desc=野生浆果的一种,富含大量维生素和矿物质,这种浆果由于受到了月亮女神的祝福,食用后将给你提供十分强大的效果。 - -items.food.fruit.moonberry.name=青色浆果 -items.food.fruit.moonberry.desc=野生浆果的一种,富含大量维生素和矿物质,食用后可以使人身强力壮,充满活力。 - -items.food.completefood.goldennut.name=受hmdzl001祝福的坚果 -items.food.completefood.goldennut.effect1=+1力量,+60血量上限 -items.food.completefood.goldennut.effect2=+2力量,+30血量上限 -items.food.completefood.goldennut.desc=由hmdzl001亲自种植的坚果。它...我...算了... - -items.food.meatfood.meat.name=生肉 -items.food.meatfood.meat.bad=你感觉……不太好 -items.food.meatfood.meat.desc=和普通集市上卖的肉一样。最好加工后再吃它。 - -items.food.nut.name=生坚果 -items.food.nut.desc=坚果类食物富含各种蛋白质和脂肪,是消遣时光的好伴侣。一般来说熟的味道会好点。 - -items.food.vegetable.nutvegetable.name=坚果藤 -items.food.vegetable.nutvegetable.desc=一种常见的蔬菜,通常用于烹饪。即使是生食也十分美味。 - -items.food.vegetable.healgrass.name=治疗草 -items.food.vegetable.healgrass.desc=阳春草的一部分,可以用于食用。 - -items.food.vegetable.battleflower.name=星花瓣 -items.food.vegetable.battleflower.desc=星陨花的一部分,可以用于食用。 - -items.food.vegetable.dreamleaf.name=好梦叶 -items.food.vegetable.dreamleaf.desc=夜梦草的一部分,可以用于食用。 - -items.food.honey.name=蜂皇浆 -items.food.honey.desc=一种有很高的营养价值的食物。深受中老年人的喜爱。 - -items.food.completefood.petfood.name=宠物口粮 -items.food.completefood.petfood.desc=为宠物专门设计的食物。 - -items.food.completefood.perfectfood.name=完美便当 -items.food.completefood.perfectfood.desc=这是烹饪的最高杰作,完美便当。 - -items.food.completefood.honeymeat.name=蜜汁肉排 -items.food.completefood.honeymeat.desc=把蜂蜜浇在肉排上...很甜。 - -items.food.completefood.icecream.name=冰雪盛宴 -items.food.completefood.icecream.desc=一个超大的冰淇凌。吃了肯定很爽。 - -items.food.completefood.vegetablesoup.name=菜汤 -items.food.completefood.vegetablesoup.desc=把杂七杂八的蔬菜放到一起煮出来的汤。 - -items.food.completefood.ediblegrass.name=可食用草 -items.food.completefood.ediblegrass.desc=吃什么草,有种吃土。 - -items.food.completefood.garbage.name=垃圾 -items.food.completefood.garbage.desc=这玩意完全不能吃。 - -items.food.completefood.crystalnucleus.name=闪耀晶核 -items.food.completefood.crystalnucleus.desc=这种晶核的味道并不好,但是它能卖钱。 - -items.food.completefood.kebab.name=大肉串 -items.food.completefood.kebab.desc=就是大肉串。 - -items.food.completefood.hamburger.name=巨无霸汉堡 -items.food.completefood.hamburger.desc=啊!好大! - -items.food.completefood.chickennugget.name=椒盐鸡块 -items.food.completefood.chickennugget.desc=想吃我的香香鸡吗? - -items.food.completefood.herbmeat.name=药草酱肉 -items.food.completefood.herbmeat.desc=沾草后口味更佳 - -items.food.completefood.porksoup.name=排骨汤 -items.food.completefood.porksoup.desc=你可以看到浮在上面的油水 - -items.food.completefood.honeyrice.name=蜂蜜拌饭 -items.food.completefood.honeyrice.desc=天哪,我嘴里塞满了蜜蜂! - -items.food.completefood.vegetablekebab.name=大菜串 -items.food.completefood.vegetablekebab.desc=素食主义者最喜欢的。 - -items.food.completefood.ricefood.name=精制米饭 -items.food.completefood.ricefood.desc=有些时候精制米饭味道更好。 - -items.food.completefood.fruitsalad.name=水果沙拉 -items.food.completefood.fruitsalad.desc=事实上制作这种食物并不需要沙拉。 - -items.food.completefood.foamedbeverage.name=发泡饮料 -items.food.completefood.foamedbeverage.desc=一起哈啤! - -items.food.completefood.gel.name=凝胶 -items.food.completefood.gel.desc=一团凝胶 - -items.food.completefood.honeygel.name=蜂蜜布丁 -items.food.completefood.honeygel.desc=蜂蜜布满了凝胶 - -items.food.completefood.honeywater.name=蜂糖水 -items.food.completefood.honeywater.desc=稀释后的蜂蜜 - -items.food.completefood.meatroll.name=肉卷 -items.food.completefood.meatroll.desc=这意味着可以吃书了 - -items.food.completefood.vegetableroll.name=菜卷 -items.food.completefood.vegetableroll.desc=肉卷的兄弟 - -items.food.completefood.chocolate.name=巧克力 -items.food.completefood.chocolate.desc=超纯的巧克力,超苦的。 - -items.food.completefood.foodfans.name=粉丝 -items.food.completefood.foodfans.desc=注意煮熟后食用。 - -items.food.completefood.frenchfries.name=薯条 -items.food.completefood.frenchfries.desc=过量淀粉警告。 - -items.food.wateritem.name=水 -items.food.wateritem.desc=通过露珠瓶净化后的水,可以用于烹饪。 - -items.food.completefood.aflyfood.name=不思议饭团 -items.food.completefood.aflyfood.desc=阿飞特制的不思议饭团,拥有另一个世界的力量。 - -###medicine -items.medicine.pill.ac_eat=食用 - -items.medicine.powerpill.name=力量药丸 -items.medicine.powerpill.desc=在一段时间内提升力量。 - -items.medicine.hardpill.name=硬化药丸 -items.medicine.hardpill.desc=在一段时间内提升防御。 - -items.medicine.smashpill.name=增幅药丸 -items.medicine.smashpill.desc=在一段时间内提升伤害。 - -items.medicine.musicpill.name=节奏药丸 -items.medicine.musicpill.desc=在一段时间内提升自信。 - -items.medicine.magicpill.name=奥术药丸 -items.medicine.magicpill.desc=在一段时间内提升法强。 - -items.medicine.shootpill.name=神射药丸 -items.medicine.shootpill.desc=在一段时间内提升射击力。 - -items.medicine.bluemilk.name=蓝奶伞 -items.medicine.bluemilk.desc=这种蘑菇像浆果一样鲜嫩多汁,食用它可以大幅度加快你的行动速度和恢复速度。只是...它对其他生物也有相同的效果。 - -items.medicine.deathcap.name=致死帽 -items.medicine.deathcap.desc=这种头上布满白斑的红色菌类肯定是具有致命效果的东西。希望它也会对其他生物有效。 - -items.medicine.earthstar.name=地裂星 -items.medicine.earthstar.desc=这种菌类并不属于地球。它可能来自虚空...或死星什么的...反正不会是小马国。食用它可能会撕裂这片区域所有人的身体。 - -items.medicine.goldenjelly.name=凝胶团 -items.medicine.goldenjelly.desc=与其说这是一种菌类,倒不如说这是一袋种子。它是这种菌类的繁殖的表现:受到挤压后,大量的孢子飞向四周,减缓生物的移动的同时致幻目标。 - -items.medicine.jackolantern.name=灯笼球 -items.medicine.jackolantern.desc=这种菌类含有大量的磷。当它受到外界挤压时它会将会把体内的磷成分以白磷的形式释放,从而引起大火。 - -items.medicine.pixieparasol.name=单色块 -items.medicine.pixieparasol.desc=一种有强烈致幻作用的菌类,食用后会使人的伤口恢复,同时使其他生物陷入睡眠状态。 - -items.medicine.greenspore.name=绿菌孢 -items.medicine.greenspore.not_time=奇怪的能量流入了你的背包,但是什么也没发生。 -items.medicine.greenspore.desc=露珠研究者培育出来的新品种蘑菇,相比其他蘑菇这个完全没有副作用,并且可以让露珠产出更加频繁。 - -###journal pages -items.journalpages.journalpage.name=坐标 -items.journalpages.journalpage.desc=Location -items.journalpages.safespotpage.name=房契 -items.journalpages.safespotpage.desc=一套三室两厅一厨一卫一露台的豪华别墅的地址。 -items.journalpages.sokoban1.name=Otiluck的旅行日志之推箱教程 -items.journalpages.sokoban1.desc=推箱教程的地址。\n\n说起我的故乡,多利亚小镇,想必大家不会陌生。优美的环境,舒适的气候,丰富的矿产资源,一度让其成为最适宜居住的城镇之一。当然那已经是我成年前的事了。\n\n肆意开采矿产外加乱排乱放垃圾使得小镇一天天衰败。我想我应该去做些什么。 -items.journalpages.sokoban2.name=Otiluck的旅行日志之奇异城堡 -items.journalpages.sokoban2.desc=奇异城堡的地址。\n\n撬开知情人士的嘴花了我不少时间,最后还是让我确定了这个地点。一个看上去像是废弃监狱的地方。巨大的箱子和致命的陷阱胡乱的摆放在哪儿,宝箱在那些东西中间若隐若现。\n\n经过一段时间的分析,我确定这是个谜题,并且可以尝试解开。 -items.journalpages.sokoban3.name=Otiluck的旅行日志之传送迷阵 -items.journalpages.sokoban3.desc=传送迷阵的地址。\n\n那个坐标指引我到了一块荒凉的地方。撒上驱魔粉尘后,一座城堡拔地而起。\n\n进入城堡后,我确认这里和之前废弃监狱一样出自同一个人之手。类似的箱子,类似的陷阱,还有类似的...等一下,一个幻影巨人,看样子它并不欢迎我。\n\n无论如何我也得要继续下去,因为我知道这里肯定有什么巨大的秘密。 -items.journalpages.sokoban4.name=Otiluck的旅行日志之终极挑战 -items.journalpages.sokoban4.desc=终极挑战的地址。\n\n似乎这些生物十分害怕我。我该说这里民风淳朴呢还是我长得太危险了呢?当我尝试靠近它们时,它们就会把我传送到另一个位置。好在这里还有一些可食用的食物,否则我肯定会饿死在这里。\n\n当我第61次被传送走时,我看到了一块巨大的石碑。令我吃惊的是,它似乎是在讲述一段历史。只要我能读懂这段历史,我就能知晓它们的语言... -items.journalpages.town.name=多利亚小镇 -items.journalpages.town.desc=多利亚小镇的地址。\n\n_我们非常抱歉:目前我们已经不再生产及销售多利亚石板。但是如果你不相信的话,欢迎来我们小镇看看。 -items.journalpages.energycore.name=Otiluck的旅行日志之能源核心 -items.journalpages.energycore.desc=能源核心的地址。\n\n说明:这是一个自动攻击的生物。它由zot创造,在我打败zot后我控制了这个生物。 -items.journalpages.vault.name=宝地坐标 -items.journalpages.vault.desc=一个字迹潦草的地点坐标,旁边有2020.1.25的字样。 - -###challenge list -items.challengelists.challengelist.name=挑战 -items.challengelists.challengelist.desc=原先的传送道具,但已经丧失了它原有的魔力。底下还有一行小字。 \n _你好,我叫ren,我因为一场意外穿越到这里,受此影响原先的部分传送道具失去了魔力,变成了现在这个样子。来多利亚小镇找我,我会帮你修复这些。_ - -items.challengelists.sewerchallenge.name=下水道挑战 -items.challengelists.prisonchallenge.name=监狱挑战 -items.challengelists.cavechallenge.name=洞窟挑战 -items.challengelists.citychallenge.name=城市挑战 -items.challengelists.couragechallenge.name=勇气试炼 -items.challengelists.couragechallenge.desc=原先的传送道具,但已经丧失了它原有的魔力。\n三大试炼之一。这个试炼将带你前往漆黑之地,让你直面你原始的恐惧 -items.challengelists.powerchallenge.name=力量试炼 -items.challengelists.powerchallenge.desc=原先的传送道具,但已经丧失了它原有的魔力。\n三大试炼之一。这个试炼将测试你的力量。在源源不断的猪人大军中存活下来。 -items.challengelists.wisdomchallenge.name=智慧试炼 -items.challengelists.wisdomchallenge.desc=原先的传送道具,但已经丧失了它原有的魔力。\n三大试炼之一。这个试炼被建立在天空当中。稍有差池就会失去一切。 - -###keys -items.keys.goldenkey.name=金钥匙 -items.keys.goldenkey.desc=这个金色钥匙的凹刻精妙而复杂。或许它能用来打开某种宝箱锁? -items.keys.ironkey.name=铁钥匙 -items.keys.ironkey.desc=这个铁钥匙的匙齿已经严重磨损;皮制系带也久经年岁摧残。它对应的是哪扇门呢? -items.keys.skeletonkey.name=骷髅钥匙 -items.keys.skeletonkey.desc=这个钥匙看起来不能等闲视之:其顶端被制成头骨的形状。或许它能打开什么不得了的大门。 -items.keys.goldenskeletonkey.name=水晶钥匙 -items.keys.goldenskeletonkey.desc=这个水晶钥匙上的凹刻在不断地变换和移动,仿佛活的一样。或许它能用来打开某种宝箱锁? -items.keys.ironkey.depth=%d层铁钥匙 - -###misc -items.misc.autopotion.name=自助药水器 -items.misc.autopotion.desc=装备这件饰品能在你的生命值降低时自动使用治疗药水。 - -items.misc.miscequippable.2miscs=你只能同时装备3样饰品。 -items.misc.miscequippable.desc=这是一个饰品。 - -items.misc.spectacles.name=眼镜 -items.misc.spectacles.desc=十分普通的眼镜,但是能够强化使用者的灵能。 - -###nornstone -items.nornstone.nornstone.name=魔法矿石 -items.nornstone.nornstone.desc=多利亚哈芬的特产,富有能量的魔法矿石。 - -items.nornstone.greennornstone.name=绿色魔法矿石 -items.nornstone.greennornstone.desc=多利亚哈芬的特产,富有能量的魔法矿石。绿色对应着_猛毒重型链枷_。 - -items.nornstone.bluenornstone.name=蓝色魔法矿石 -items.nornstone.bluenornstone.desc=多利亚哈芬的特产,富有能量的魔法矿石。蓝色对应着_休克三叉水戟_。 - -items.nornstone.orangenornstone.name=橙色魔法矿石 -items.nornstone.orangenornstone.desc=多利亚哈芬的特产,富有能量的魔法矿石。橙色对应着_碎骨锯肉巨斧_。 - -items.nornstone.purplenornstone.name=紫色魔法矿石 -items.nornstone.purplenornstone.desc=多利亚哈芬的特产,富有能量的魔法矿石。紫色对应着_抽灵萃魂长剑_。 - -items.nornstone.yellownornstone.name=黄色魔法矿石 -items.nornstone.yellownornstone.desc=多利亚哈芬的特产,富有能量的魔法矿石。黄色对应着_威慑落岩圆刃_。 - -###potions -items.potions.potion.ac_drink=饮用 -items.potions.potion.turquoise=青绿 -items.potions.potion.crimson=猩红 -items.potions.potion.azure=湛青 -items.potions.potion.jade=翡翠 -items.potions.potion.golden=金黄 -items.potions.potion.magenta=品红 -items.potions.potion.charcoal=煤黑 -items.potions.potion.ivory=乳白 -items.potions.potion.amber=琥珀 -items.potions.potion.bistre=深褐 -items.potions.potion.indigo=靛蓝 -items.potions.potion.silver=银灰 -items.potions.potion.aqua=藏青 -items.potions.potion.violet=紫靛 -items.potions.potion.unknown_name=%s药水 -items.potions.potion.unknown_desc=这瓶里装着些不断打旋的%s色液体,谁知道投掷或饮用它们时会有什么效果呢? -items.potions.potion.harmful=有害药水! -items.potions.potion.beneficial=有益药水 -items.potions.potion.yes=是的,我知道我在做什么 -items.potions.potion.no=不,我改变主意了 -items.potions.potion.sure_drink=你确定要饮用它吗? 大多数情况下你该把它扔向敌人的。 -items.potions.potion.sure_throw=你确定要投掷它吗? 大多数情况下把它喝下去会更有用。 -items.potions.potion.shatter=药瓶碎裂开来,%s色液体无害地溅出了。 -items.potions.potion.stop=禁魔结界阻止了这瓶药水生效。 -items.potions.potion.locked=锁闭魔法阻止了你使用这瓶药水。 - -items.potions.potionofexperience.name=经验药水 -items.potions.potionofexperience.desc=大量的战斗经验被浓缩为液态,这种药水能够瞬间提升你的战斗力。 -items.potions.potionoffrost.name=冰霜药水 -items.potions.potionoffrost.desc=一旦暴露在空气里,该化学品会气化成一片冰冷的气雾,将任何接触它的生物冻结并无法行动。其冷冻效果在潮湿环境下会大幅提升。 -items.potions.potionofhealing.name=治疗药水 -items.potions.potionofhealing.heal=你的伤口愈合了很多。 -items.potions.potionofhealing.desc=一支让你瞬间回复大量生命值并清除毒素的万能药水。 -items.potions.potionofinvisibility.name=隐形药水 -items.potions.potionofinvisibility.invisible=你看到你的手隐形了! -items.potions.potionofinvisibility.desc=饮用这种药水会使你暂时隐形。隐身期间,敌人将无法看见你。攻击敌人,或在敌人面前使用法杖和卷轴,会让药水效果立即消失。 -items.potions.potionoflevitation.name=浮空药水 -items.potions.potionoflevitation.float=你漂浮到了空中! -items.potions.potionoflevitation.desc=饮用这种古怪的药水能让你漂浮到空中,从而轻易地越过陷阱和裂隙。扔出它会产生一片未知气体,让其中的所有生物迷失方向。 -items.potions.potionofliquidflame.name=液火药水 -items.potions.potionofliquidflame.desc=该药瓶里装着一种不稳定的化合物,一旦暴露在空气中就会猛烈地燃烧起来。 -items.potions.potionofmight.name=根骨药水 -items.potions.potionofmight.msg_1=+15生命上限 -items.potions.potionofmight.desc=饮用这瓶药水,你可以永久性获得15点生命上限。 -items.potions.potionofmindvision.name=灵视药水 -items.potions.potionofmindvision.see_mobs=你可以感受到其他生物的存在! -items.potions.potionofmindvision.see_none=你能判定现在本层内就只有你一个人。 -items.potions.potionofmindvision.desc=喝下这个,你的心智将与大范围内的生物精神同调,让你能感受到围墙背后的生体所在。该药水还能够让你的视野无视身边门墙的阻挡。 -items.potions.potionofparalyticgas.name=麻痹药水 -items.potions.potionofparalyticgas.desc=暴露于空气时,烧瓶里的液体会气化成一片令人失去知觉的黄色云雾。任何吸入气雾的生物都可能立即麻痹,直到云雾消散后一段时间才能行动。可以把该物件扔到远处的敌群中,让气体覆盖影响它们。 -items.potions.potionofpurity.name=净化药水 -items.potions.potionofpurity.freshness=你闻到了空气中不寻常的清新气息。 -items.potions.potionofpurity.no_smell=你什么都闻不到了! -items.potions.potionofpurity.desc=这种试剂能迅速中和掉作用区域内的一切有害气体。饮用它将使你暂时免疫这些气体。 -items.potions.potionofstrength.name=力量药水 -items.potions.potionofstrength.msg_1=+1力量 -items.potions.potionofstrength.msg_2=新生的力量在你的体内喷薄而出。 -items.potions.potionofstrength.desc=这种强力的液体会洗刷你的肌肉,永久性增加1点力量值。 -items.potions.potionoftoxicgas.name=毒气药水 -items.potions.potionoftoxicgas.desc=打开或摔碎这个密封的药瓶将导致内容物爆发成一团剧毒的绿色烟雾。你应该选择从远处将这瓶药水扔向敌人,而不是手动开封。 -items.potions.potionofhaste.name=疾速药水 -items.potions.potionofhaste.effect=你的移动速度快多了! -items.potions.potionofhaste.desc=喝下这瓶药水可以暂时提升你的行动速度。 -items.potions.potionofmending.name=恢复药水 -items.potions.potionofmending.effect=你的伤口正在快速愈合。 -items.potions.potionofmending.desc=一瓶使你恢复加快的药水。 -items.potions.potionofoverhealing.name=生命药水 -items.potions.potionofoverhealing.effect=你的伤口完全愈合了,同时一股魔法力量注入了你的身体! -items.potions.potionofoverhealing.fill=血量溢出%s点! -items.potions.potionofoverhealing.desc=一支让你瞬间回复甚至溢出生命值并清除毒素的万能药水。 - -###quest items -items.quest.ceremonialcandle.name=仪祭蜡烛 -items.quest.ceremonialcandle.desc=配套的蜡烛,在使用中融化在了一起。\n\n单独看来它们毫无价值,但与其它蜡烛按特定排布共用时却能为召唤仪式聚集能量。 -items.quest.corpsedust.name=尸尘 -items.quest.corpsedust.desc=在外观上这团尸尘和普通灰尘差不多。而你却能够感受到其中潜伏着一股充满恶意的魔力。\n\n尽快脱手为好。 -items.quest.darkgold.name=暗金矿 -items.quest.darkgold.desc=这种金属名中的暗并非源于其色泽(它看起来和普通金子一样),而是因为它会在阳光下熔化,令其在地表上毫无用处。 -items.quest.dwarftoken.name=矮人徽记 -items.quest.dwarftoken.desc=很多矮人和他们的造物都携带着这种小块金属,理由不详。兴许它是装饰品或什么身份识别牌。 矮人都挺奇怪的。 -items.quest.embers.name=元素余烬 -items.quest.embers.desc=只能从新生火元素身上采集到的特殊余烬.。它们散发着温暖的能量。 -items.quest.pickaxe.name=镐子 -items.quest.pickaxe.ac_mine=采掘 -items.quest.pickaxe.no_vein=附近没有可供采掘的暗金矿脉。 -items.quest.pickaxe.desc=这是一件巨大且耐用的凿岩工具。也许能当武器用。 -items.quest.ratskull.name=巨鼠头骨 -items.quest.ratskull.desc=一颗大得吓人的老鼠头骨。如果你能找到一面合适的墙来挂,它会是件不错的狩猎纪念品。 -items.quest.mushroom.name=露珠菌孢 -items.quest.mushroom.desc=这东西对于我们来说并没有什么用,但对于一些学者而言这东西大有研究价值。 -items.quest.gnollclothes.name=豺狼风衣 -items.quest.gnollclothes.desc=一件短小精致的风衣,看起来不像是人类应该有的尺寸。 - -###rings -items.rings.ring.diamond=钻石 -items.rings.ring.opal=蛋白石 -items.rings.ring.garnet=石榴石 -items.rings.ring.ruby=红宝石 -items.rings.ring.amethyst=紫水晶 -items.rings.ring.topaz=黄玉 -items.rings.ring.onyx=缟玛瑙 -items.rings.ring.tourmaline=碧玺 -items.rings.ring.emerald=祖母绿 -items.rings.ring.sapphire=蓝宝石 -items.rings.ring.quartz=石英 -items.rings.ring.agate=玛瑙 -items.rings.ring.cursed=这枚戒指紧紧箍住了你的手指! -items.rings.ring.unknown_name=%s戒指 -items.rings.ring.unknown_desc=这枚金属环镶嵌着一大颗%s,在黑暗中闪烁发光。谁知道戴上后会有什么效果? -items.rings.ring.known=这是个%s。 -items.rings.ring.identify=你已经对%s足够熟悉了。它是%s。 -items.rings.ring.on_finger=这个%s正在你的手指头上。 -items.rings.ring.cursed_worn=由于这个戒指被诅咒,你无力将其除下。 -items.rings.ring.curse_known=你能感觉到在%s上潜伏着一股充满恶意的魔力。 -items.rings.ring.toomany=你最多同时装备3样饰品。 - -items.rings.ringofaccuracy.name=精准戒指 -items.rings.ringofaccuracy.stats=佩戴这枚戒指时,你的精准度会增加_%1$d_点,攻击距离会增加_%2$d_格。 -items.rings.ringofaccuracy.desc=这枚戒指提高了你的专注力,使敌人难以躲闪你的攻击。该戒指每10级提供1格额外的攻击距离。 - -items.rings.ringofelements.name=元素戒指 -items.rings.ringofelements.stats=当佩戴这枚戒指时,你会获得元素抗性。 -items.rings.ringofelements.desc=这枚戒指能为你提供多种元素抗性,譬如火焰,雷电,气体等;它还能降低负面效果的持续时间。 - -items.rings.ringofevasion.name=闪避戒指 -items.rings.ringofevasion.stats=佩戴这枚戒指时,你的闪避值会增加_%d_点,潜行会增加_%2$d_点。 -items.rings.ringofevasion.desc=这枚戒指会混淆配戴者的真实位置,令其更难被敌人击中。该戒指每5级提供1点额外的潜行,但最多提供6点潜行。 - -items.rings.ringofforce.name=武力戒指 -items.rings.ringofforce.stats=佩戴这枚戒指时能额外能够造成_%1$s%%_的伤害。如果你未装备近战武器,你基础攻击将造成_%2$d~%3$d伤害_。 -items.rings.ringofforce.desc=这枚戒指能够增强配戴者的打击力度。在30级时这枚戒指的打击加成效果达到最强。 - -items.rings.ringoffuror.name=狂怒戒指 -items.rings.ringoffuror.stats=佩戴这枚戒指时,你的武器的攻击速度会提升_%s%%_。 -items.rings.ringoffuror.desc=这枚戒指会激发配戴者内心的怒火,使其能够更迅猛地攻击。在30级时这枚戒指效果达到最强。 - -items.rings.ringofhaste.name=疾速戒指 -items.rings.ringofhaste.stats=佩戴这枚戒指时,你的移动速度会提升_%s%%_。 -items.rings.ringofhaste.desc=这枚戒指减轻了配戴者在移动时的负担,使其能够飞速奔跑。在30级时这枚戒指效果达到最强。 - -items.rings.ringofmagic.name=奥术戒指 -items.rings.ringofmagic.stats=佩戴这枚戒指时,你的法强值会提升_%d_点。 -items.rings.ringofmagic.desc=你的法杖在这枚戒指散布的奥术力场中会变得更加强大。在30级时这枚戒指效果达到最强。 - -items.rings.ringofmight.name=根骨戒指 -items.rings.ringofmight.stats=佩戴这枚戒指时,你的力量值会提升_%1$d_点,生命上限会提升_%2$d_点。 -items.rings.ringofmight.desc=这枚戒指会增强配戴者的体质,使其拥有更强的体格。该戒指每5级提供1点额外力量。 - -items.rings.ringofsharpshooting.name=神射戒指 -items.rings.ringofsharpshooting.stats=佩戴这枚戒指时,你的投掷武器的命中值会提升_%1$d_,伤害值会提升_%2$s%%_。 -items.rings.ringofsharpshooting.desc=这枚戒指加强了配戴者的精度和瞄准,使得远程武器能够造成更高的伤害。 - -items.rings.ringoftenacity.name=韧性戒指 -items.rings.ringoftenacity.stats=佩戴这枚戒指时,你承受的伤害降低_%s%%_。 -items.rings.ringoftenacity.desc=这枚戒指使配戴者能够抵御受到的伤害。在30级时这枚戒指效果达到最强。 - -items.rings.ringofenergy.name=能量戒指 -items.rings.ringofenergy.stats=佩戴这枚戒指时,你的法杖充能速度会提升_%s%%_。 -items.rings.ringofenergy.desc=在戒指的奥术领域笼罩下你的所有法杖充能速度都会因此提升。在30级时这枚戒指效果达到最强。 - -###scrolls -items.scrolls.scroll.ac_read=阅读 -items.scrolls.scroll.kaunan=KAUNAN -items.scrolls.scroll.sowilo=SOWILO -items.scrolls.scroll.laguz=LAGUZ -items.scrolls.scroll.yngvi=YNGVI -items.scrolls.scroll.gyfu=GYFU -items.scrolls.scroll.raido=RAIDO -items.scrolls.scroll.isaz=ISAZ -items.scrolls.scroll.mannaz=MANNAZ -items.scrolls.scroll.naudiz=NAUDIZ -items.scrolls.scroll.berkanan=BERKANAN -items.scrolls.scroll.odal=ODAL -items.scrolls.scroll.tiwaz=TIWAZ -items.scrolls.scroll.ncosrane=NCOSRANE -items.scrolls.scroll.nendil=NENDIL -items.scrolls.scroll.libra=LIBRA -items.scrolls.scroll.unknown_name="%s"卷轴 -items.scrolls.scroll.unknown_desc=这张羊皮纸上写满了难以破译的文字,以%s符文作为代号。大声念出来会发生什么? -items.scrolls.scroll.blinded=你不能在失明时阅读卷轴。 -items.scrolls.scroll.locked=你不能在被锁闭时阅读卷轴。 -items.scrolls.scroll.silent=你不能在被沉默时阅读卷轴。 -items.scrolls.scroll.cursed=被诅咒的法典抑制了卷轴中法术的启动!也许祛邪卷轴足够强大还能被使用... -items.scrolls.scroll.prevent=魔法乱流阻止了这张卷轴的生效。 -items.scrolls.scrollofmagicmapping.prevent=探测魔法被阻断了! -items.scrolls.scrollofmirrorimage.prevent=镜像的创建被阻断了! - -items.scrolls.inventoryscroll.warning=你真的想终止这张卷轴的施放?它仍旧会被消耗掉。 -items.scrolls.inventoryscroll.yes=是的,我确定 -items.scrolls.inventoryscroll.no=不,我改主意了 -items.scrolls.scrollofidentify.name=鉴定卷轴 -items.scrolls.scrollofidentify.inv_title=选择一样要鉴定的物品 -items.scrolls.scrollofidentify.it_is=这是%s。 -items.scrolls.scrollofidentify.desc=该卷轴能永久揭示一件物品的所有秘密。 -items.scrolls.scrolloflullaby.name=催眠卷轴 -items.scrolls.scrolloflullaby.sooth=卷轴发出了某种舒缓的旋律。你觉得非常困倦。 -items.scrolls.scrolloflullaby.desc=阅读这张卷轴会释放出一段舒缓的旋律,让所有听到它的人陷入魔法沉眠。 -items.scrolls.scrollofmagicalinfusion.name=注魔卷轴 -items.scrolls.scrollofmagicalinfusion.inv_title=选择一件要注魔的物品 -items.scrolls.scrollofmagicalinfusion.infuse=你的%s被注入了奥术之力! -items.scrolls.scrollofmagicalinfusion.desc=这张卷轴将为你的武器或护甲注入强大的魔力。\n\n除了升级以外,武器还会被附魔,而护甲则会获得魔法刻印。\n\n如果升级物品上已经存在附魔和刻印,卷轴将会将其抹去并替换成新的附魔。 -items.scrolls.scrollofmagicmapping.name=探地卷轴 -items.scrolls.scrollofmagicmapping.layout=你熟悉了这层的地形。 -items.scrolls.scrollofmagicmapping.desc=阅读这张卷轴时,一副明晰的景象会刻入你的记忆中,告知你整个楼层的精确布局并揭开所有隐藏的秘密。不过道具位置和生物分布依旧是未知状态。 -items.scrolls.scrollofmirrorimage.name=镜像卷轴 -items.scrolls.scrollofmirrorimage.desc=卷轴上的咒文会创造数个阅读者的镜像来追击敌人。 -items.scrolls.scrollofpsionicblast.name=灵能震爆卷轴 -items.scrolls.scrollofpsionicblast.ondeath=灵能震爆撕碎了你的意识…… -items.scrolls.scrollofpsionicblast.desc=这张卷轴蕴含着毁灭性的能量,一旦引导出来将撕裂视野内所有生物的心灵。这股力量的释放也会对阅读者产生严重伤害,并导致暂时性的失明和眩晕。 -items.scrolls.scrollofrage.name=盛怒卷轴 -items.scrolls.scrollofrage.roar=卷轴产生的激怒咆哮在地牢中回荡! -items.scrolls.scrollofrage.desc=大声诵读内容时,卷轴将释放出一声轰响的咆哮,将所有敌人引向你并激怒附近的单位。 -items.scrolls.scrollofrecharging.name=充能卷轴 -items.scrolls.scrollofrecharging.surge=一股能量在体内奔腾而过,使你的法杖力量充沛! -items.scrolls.scrollofrecharging.desc=纯正的魔法能量被禁锢在羊皮纸内,当这股能量被释放时可以瞬间为阅读者的所有法杖充满能量。 -items.scrolls.scrollofremovecurse.name=祛邪卷轴 -items.scrolls.scrollofremovecurse.cleansed=你的背包闪耀着净化的光芒,一股恶毒的能量从中消散。 -items.scrolls.scrollofremovecurse.not_cleansed=你的背包闪耀着净化的光芒,不过什么也没发生。 -items.scrolls.scrollofremovecurse.desc=卷轴上的咒语能够瞬间清除使用者所装备的武器、护甲、戒指和携带物品的诅咒。 -items.scrolls.scrollofteleportation.name=传送卷轴 -items.scrolls.scrollofteleportation.tele=眨眼之间你就被传送到本层的另外一个位置。 -items.scrolls.scrollofteleportation.no_tele=强大的魔力流阻止了你的传送! -items.scrolls.scrollofteleportation.desc=羊皮纸上的咒语能立刻让阅读者传送到本层的随机位置。这能助你脱离险境,而不幸的阅读者则可能会被传送到一个更危险的地方。 -items.scrolls.scrollofterror.name=恐惧卷轴 -items.scrolls.scrollofterror.none=这个卷轴产生了一阵明亮的红色闪光。 -items.scrolls.scrollofterror.one=这个卷轴产生了一阵明亮的红色闪光的同时%s逃跑了! -items.scrolls.scrollofterror.many=这个卷轴产生了一阵明亮的红色闪光的同时怪物们逃跑了! -items.scrolls.scrollofterror.desc=一道红色闪光将以恐惧压垮使用者视觉范围内生物的心智并使它们转身逃跑。攻击正在逃跑的敌人将会打消该效果。 -items.scrolls.scrollofupgrade.name=升级卷轴 -items.scrolls.scrollofupgrade.inv_title=选择一件要升级的物品 -items.scrolls.scrollofupgrade.looks_better=你的%s看起来明显更优质了 -items.scrolls.scrollofupgrade.desc=这份卷轴能升级一件物品,提升其品质:法杖将更强力和拥有更高的总充能数;武器将会造成更多伤害;护甲将能吸收更多伤害;戒指将可产生更强的效果。 -items.scrolls.inventoryscroll.title=选择一个物品 - -items.scrolls.scrollofmultiupgrade.better=你的%s看起来明显更优质了 -items.scrolls.scrollofmultiupgrade.name=多重升级卷轴 -items.scrolls.scrollofmultiupgrade.title=选择一件要升级的物品 -items.scrolls.scrollofmultiupgrade.desc=这份卷轴能升级一件物品五次,提升其品质:法杖将更强力和拥有更高的总充能数;武器将会造成更多伤害;护甲将能吸收更多伤害;戒指将可产生更强的效果。 -items.scrolls.scrollofregrowth.layout=地牢中长出了大量植物,同时你熟悉了这层的地形。 -items.scrolls.scrollofregrowth.name=再生卷轴 -items.scrolls.scrollofregrowth.desc=这份卷轴可以催化种子的生长,并将使你能感知到它们的位置。 -items.scrolls.scrollofsacrifice.name=献祭卷轴 -items.scrolls.scrollofsacrifice.desc=以一种宇宙香料为原材料所制作的卷轴。这种香料能极大的提升食用者的能力,但是过多的使用会带来不可预知的副作用。 -items.scrolls.scrollofsacrifice.use_1=+5生命上限 -items.scrolls.scrollofsacrifice.use_2=+1力量 -items.scrolls.scrollofsacrifice.use_lot=你感觉不太舒服。 - -###wands -items.wands.wand.ac_zap=释放 -items.wands.wand.fizzles=你的法杖滋滋作响;一定是没能量了。 -items.wands.wand.self_target=你不能瞄准你自己! -items.wands.wand.identify=你现在了解了你的%s。 -items.wands.wand.cursed=这根法杖受到了诅咒,导致它的魔法混乱而随机。 -items.wands.wand.curse_discover=这根%s是诅咒的! -items.wands.wand.prompt=选择要释放魔法的位置 -items.wands.wand.silent=沉默魔法阻止你释放法术。 - -items.wands.wandoferror.name=错误法杖 -items.wands.wandoferror.desc=这是个错误 -items.wands.wandoferror.stats_desc=??? - -items.wands.wandofcharm.name=魅惑法杖 -items.wands.wandofcharm.desc=这根光属性法杖形状很普通,是那暗红的色泽和镶在顶端的漆黑宝石让它显眼起来。 -items.wands.wandofcharm.stats_desc=该法杖能导致敌人被暂时魅惑。 - -items.wands.wandofmeteorite.name=陨星法杖 -items.wands.wandofmeteorite.desc=这根火属性法杖由一种陨石制成,嵌有金饰并在顶部镶着一个浑圆的黑陨石。它在你手中的感觉非常沉重。 -items.wands.wandofmeteorite.stats_desc=该法杖能制造一个标记,在目标位置召唤陨石攻击。爆炸的力量会造成_%1$d~%2$d点伤害_并强到足以击晕大多数敌人。 - -items.wands.wandoftcloud.name=雷云法杖 -items.wands.wandoftcloud.desc=这根电属性法杖由一种导电金属制成,法杖顶端有一朵迷你乌云。很庆幸的是握在手上你不会感觉难受。 -items.wands.wandoftcloud.stats_desc=这根法杖能在目标地点创造一些电流。若消耗足够多的充能,则会生成一朵自动攻击的乌云。 -items.wands.wandoftcloud.more_charge=目前充能数无法召唤雷云。 -items.wands.wandoftcloud$tcloud.name=雷云 -items.wands.wandoftcloud$tcloud.desc=一朵噼啪放电的雷云。 -items.wands.wandoftcloud$stcloud.name=KEKE -items.wands.wandoftcloud$stcloud.desc=KEKE_IS_MOVE,MOB_WILL_DEAD. - -items.wands.wandofblood.name=鲜血法杖 -items.wands.wandofblood.desc=这根暗属性法杖能发射黑暗能量,如果法杖头上那小小的装饰用头骨还不够露骨地揭示这点。 -items.wands.wandofblood.stats_desc=该法杖会释放腐坏的能量,能按你意愿抽取敌人的灵魂,造成_%1$d~%2$d点伤害_用于治愈自身。 - -items.wands.wandofdisintegration.name=解离法杖 -items.wands.wandofdisintegration.desc=这根无属性法杖由一整块光滑的黑曜石制成,深紫色的光自其边缘流向法杖顶端。它闪烁着破坏性能量,准备着向前迸射。 -items.wands.wandofdisintegration.stats_desc=这根法杖射出的光束能穿透任何障碍物,造成_%1$d~%2$d点伤害_ ,并将随着法杖等级的提升而射得更远。光束穿透的地形和敌人越多,法杖造成的额外伤害就越大。 - -items.wands.wandoffirebolt.name=火球法杖 -items.wands.wandoffirebolt.desc=这根火属性法杖由红漆木制成,饰以金叶,这使它看起来相当庄严。它的顶端噼啪作响嘶嘶而鸣,渴望着释放其强大的魔法。 -items.wands.wandoffirebolt.stats_desc=该法杖在使用时会产生一股强大的焰浪,焚毁经过的路径,并灼烧目标地点,造成_%1$d~%2$d点伤害_ 。 - -items.wands.wandofflock.name=招羊法杖 -items.wands.wandofflock.desc=这根暗属性法杖看起来就像普通木棍一样,但它两头的金色饰物使它看起来并不那么普通。 -items.wands.wandofflock.stats_desc=使用该法杖将在目标地点召唤一只无害绵羊。由于这种魔法和生成魔法相类似,所以一定程度上可以代替生成魔法。 -items.wands.wandofflock.guard=魔法引起了智慧守卫的注意。 -items.wands.wandofflock$magicsheep.desc=这是一只魔法绵羊。为什么叫它魔法绵羊?因为你杀不死它。它只会站在那里直到它消失,它会做的事情只有边反刍边对你翻白眼。 -items.wands.wandofflock$magicsheep.name=魔法绵羊 -items.wands.wandofflock$magicbombsheep.desc=LEVEL_TOO_HARD,BABA_IS_DONE.BETTER_LOOK_OUT,BABA_HAS_GUN. -items.wands.wandofflock$magicbombsheep.name=BABA - - -items.wands.wandoflightning.name=雷霆法杖 -items.wands.wandoflightning.desc=这根电属性法杖由实心金属制成,这使它惊人地沉重。电弧顶端有两个内弯的叉齿间跳跃。 -items.wands.wandoflightning.stats_desc=这根法杖能向任何目标放出强大的电弧并造成_%1$d~%2$d点伤害_ 。这种电能在附近多个敌人间跳跃,在水里会更强力。要是太接近,你自己同样可能被电到。 - -items.wands.wandofmagicmissile.name=魔弹法杖 -items.wands.wandofmagicmissile.desc=这根无属性法杖能发射纯魔法能量构成的导弹。 -items.wands.wandofmagicmissile.stats_desc=尽管不如其它法杖那么强大,但它的大量充能数弥补了这一点。它能造成_%1$d~%2$d点伤害_ 。 - -items.wands.wandofpoison.name=剧毒法杖 -items.wands.wandofpoison.desc=这根地属性法杖的紫色主干半包住顶端一颗亮绿色宝石。 -items.wands.wandofpoison.stats_desc=该法杖能射出一颗会在目标位置爆炸的毒性法球。被击中的单位将缓慢受到毒性伤害。 - -items.wands.wandoflight.name=强光法杖 -items.wands.wandoflight.desc=这根光属性法杖由一块实心半透明水晶构成,就像一块厚长光滑的玻璃。 -items.wands.wandoflight.stats_desc=该法杖射出的光线能刺破地牢的黑暗,造成_%1$d~%2$d点伤害_并致盲敌人。 - -items.wands.wandoffreeze.name=霜冻法杖 -items.wands.wandoffreeze.desc=这根冰属性法杖似乎由某种魔法冰块制成。它的圆顶闪着亮光。握起来很冰,但不知为何你的手仍保持着温暖。 -items.wands.wandoffreeze.stats_desc=该法杖能向你的敌人射击冰霜能量,造成_%1$d~%2$d点伤害_并冷冻目标,降低其行动速度。在水中的作用似乎更强。正被冻伤和冻结的敌人将受到更少该法杖的伤害,因为他们已经足够冷了。 - -items.wands.wandofflow.name=涌流法杖 -items.wands.wandofflow.desc=这根冰属性法杖比普通法杖来的短,但是这根法杖的顶端的小喷泉使它看起来和普通法杖一样。 -items.wands.wandofflow.stats_desc=该法杖能向目标地点喷射出强劲有力的水流,造成_%1$d~%2$d点伤害_ ,击退目标并将其打湿。 - -items.wands.wandofacid.name=酸蚀法杖 -items.wands.wandofacid.desc=这根地属性法杖由一根细长木枝巧琢而成。不知为何它还活着而且生机盎然,像一株树苗的嫩芽般艳绿。 -items.wands.wandofacid.stats_desc=被使用时,这根法杖会释放出翠绿的强酸,造成_%1$d~%2$d点伤害_并持续伤害被命中的敌人。 - -items.wands.cannonofmage.name=雷诺的七彩大炮 -items.wands.cannonofmage.desc=一件古遗物,它储存着魔法的精华,并可以将它们发射出去。 -items.wands.cannonofmage.stats_desc=被使用时,这根法杖会释放出随机的效果,造成_%1$d~%2$d点伤害_。该法杖受到额外的法强加成。 - -###enchantments -items.weapon.enchantments.enchantmentdark.name=暗影%s -items.weapon.enchantments.enchantmentdark.desc=暗影附魔有几率恐吓目标,并造成额外的暗属性伤害。 - -items.weapon.enchantments.enchantmentfire.name=烈焰%s -items.weapon.enchantments.enchantmentfire.desc=烈焰附魔有几率点燃目标,并造成额外的火属性伤害。 - -items.weapon.enchantments.enchantmentlight.name=圣光%s -items.weapon.enchantments.enchantmentlight.desc=圣光附魔有几率对邪物造成高额的伤害,并造成额外的光属性伤害。 - -items.weapon.enchantments.enchantmentenergy.name=战意%s -items.weapon.enchantments.enchantmentenergy.desc=战意附魔有几率提升使用者的攻击力,并造成额外的物理伤害。 - -items.weapon.enchantments.enchantmentearth.name=自然%s -items.weapon.enchantments.enchantmentearth.desc=自然附魔有几率对目标埋下寄生种子,并造成额外的地属性伤害。 - -items.weapon.enchantments.enchantmentshock.name=乱流%s -items.weapon.enchantments.enchantmentshock.desc=乱流附魔有几率对多个目标造成伤害,并造成额外的雷属性伤害。 - -items.weapon.enchantments.enchantmentice.name=冰霜%s -items.weapon.enchantments.enchantmentice.desc=冰霜附魔有几率冻结目标,并造成额外的冰属性伤害。 - -items.weapon.enchantments.enchantmentdark2.name=弱化%s -items.weapon.enchantments.enchantmentdark2.desc=弱化附魔有几率削弱目标的攻击力。 - -items.weapon.enchantments.enchantmentfire2.name=焦油%s -items.weapon.enchantments.enchantmentfire2.desc=焦油附魔有几率给目标的泼油。 - -items.weapon.enchantments.enchantmentlight2.name=闪耀%s -items.weapon.enchantments.enchantmentlight2.desc=闪耀附魔有几率致盲目标。 - -items.weapon.enchantments.enchantmentenergy2.name=剑舞%s -items.weapon.enchantments.enchantmentenergy2.desc=剑舞附魔有几率提升使用者的防御力。 - -items.weapon.enchantments.enchantmentearth2.name=酸蚀%s -items.weapon.enchantments.enchantmentearth2.desc=酸蚀附魔有几率给目标上腐酸。 - -items.weapon.enchantments.enchantmentshock2.name=电震%s -items.weapon.enchantments.enchantmentshock2.desc=电震附魔有几率给目标上静电效果。 - -items.weapon.enchantments.enchantmentice2.name=寒潮%s -items.weapon.enchantments.enchantmentice2.desc=寒潮有几率给目标上寒冷和潮湿效果。 - -items.weapon.enchantments.aresleech.name=抽灵%s -items.weapon.enchantments.aresleech.desc=抽灵附魔能将造成的伤害转为能量,缓慢的输送回你的身体。 -items.weapon.enchantments.aresleech.effect=从附近的敌人处吸取了%s点能量。 -items.weapon.enchantments.aresleech$healdamage.name=萃取 -items.weapon.enchantments.aresleech$healdamage.desc=你的武器正在缓慢将吸收到的灵魂回馈给你。\n\n灵魂会被转化为生命恢复,而非直接回复。\n\n剩余的生命恢复:%d点 - -items.weapon.enchantments.buzzsaw.name=充能%s -items.weapon.enchantments.buzzsaw.desc=充能附魔能通过消耗露珠,来造成短时间内的大量伤害。 -items.weapon.enchantments.buzzsaw.fuel=低能源警告! -items.weapon.enchantments.buzzsaw.off=过载关闭! - -items.weapon.enchantments.cromluck.name=锯骨%s -items.weapon.enchantments.cromluck.desc=锯骨附魔能够无视防御造成一次额外的伤害。 - -items.weapon.enchantments.jupitershorror.name=威慑%s -items.weapon.enchantments.jupitershorror.desc=威慑附魔能够恐吓目标。 - -items.weapon.enchantments.lokispoison.name=猛毒%s -items.weapon.enchantments.lokispoison.desc=猛毒附魔能给目标下毒。 - -items.weapon.enchantments.neptuneshock.name=休克%s -items.weapon.enchantments.neptuneshock.desc=休克附魔能对多个目标造成伤害。 - -###relic -items.weapon.melee.relic.aressword.name=萃魂长剑 -items.weapon.melee.relic.aressword.desc=这柄剑的厚长利刃闪烁着令人宽心的寒光,不过这长度也确实让它非常沉重。——Watabou\n借由紫色魔法石的能量,这把武器可以吸取周围敌人的生命精华并将其回报至持有者。——Lynn -items.weapon.melee.relic.aressword.ac_regen=灵魂萃取 -items.weapon.melee.relic.cromcruachaxe.name=碎肉巨斧 -items.weapon.melee.relic.cromcruachaxe.desc=这个巨型的战斧无坚不摧,重如泰山,举过肩才有空间挥舞。——00-Evan\n借由橙色魔法石的能量,这把武器可以使持有者周围生成一种类似于龙鳞的外壳,以抵抗外来的魔法攻击。——Lynn -items.weapon.melee.relic.cromcruachaxe.ac_dispel=奥术护盾 -items.weapon.melee.relic.lokisflail.name=重型链枷 -items.weapon.melee.relic.lokisflail.desc=铁链上附着的一个带刺的钢球。笨重难用,能命中的话威力极强。——00-Evan\n借由绿色魔法石的能量,这把武器可以匿藏使用者的身形,使其更加容易对敌人发动袭击。——Lynn -items.weapon.melee.relic.lokisflail.ac_stealth=魔法隐形 -items.weapon.melee.relic.neptunustrident.name=三叉水戟 -items.weapon.melee.relic.neptunustrident.desc=前端装有三根尖刃的长柄武器。——Jinkeloid\n借由蓝色魔法石的能量,这把武器可以在小范围内制造降雨,减缓敌人的移动速度并且将它们脚下的平地转化为水滩。——Lynn -items.weapon.melee.relic.neptunustrident.ac_flood=风暴降雨 -items.weapon.melee.relic.jupiterswraith.name=落岩圆刃 -items.weapon.melee.relic.jupiterswraith.ac_explode=落岩爆裂 -items.weapon.melee.relic.jupiterswraith.desc=只要能熟练使用,它能在击中目标后返回,即便这原理不明。——Consideredhamster \n 借由黄色魔法石的力量,这件武器可以在目标地点制造小范围的落石,将其中的敌人埋入土地以使它们应对接下来的攻击。——Lynn - -###melee weapons - -items.weapon.melee.assassinsblade.name=暗杀之刃 -items.weapon.melee.assassinsblade.desc=黑曜石制的波浪形短刃,虽轻便但不易用,如果能击中要害足以致命。——00-Evan \n穿刺 - -items.weapon.melee.battleaxe.name=战斧 -items.weapon.melee.battleaxe.desc=这把有着硕大钢制头部的战斧能将庞大的力量倾注在每次挥舞之中。——Watabou \n割裂 - -items.weapon.melee.club.name=棒槌 -items.weapon.melee.club.desc=一件简单而沉重的木质武器。——Snof33 \n钝器 - -items.weapon.melee.dagger.name=匕首 -items.weapon.melee.dagger.desc=配以磨损木柄的简单钢匕首。——Watabou \n穿刺 - -items.weapon.melee.dualknive.name=对剑 -items.weapon.melee.dualknive.desc=成对的刀片带来更高的伤害。——Bilboldev \n穿刺 - -items.weapon.melee.special.errorw.name=错误武器 -items.weapon.melee.special.errorw.desc=这是个错误。——??? \n混沌 - -items.weapon.melee.fightgloves.name=战斗拳套 -items.weapon.melee.fightgloves.desc=简单的皮革加上金属尖块形成了这样一件武器。——Juh9870 \n钝器 - -items.weapon.melee.glaive.name=关刀 -items.weapon.melee.glaive.desc=由一支长木杆和末端接上的利刃组成。——Watabou \n致残 - -items.weapon.melee.gsword.name=巨剑 -items.weapon.melee.gsword.desc=这把大剑进行的每次沉重挥舞都能造成大量伤害。——00-Evan \n割裂 - -items.weapon.melee.halberd.name=戟斧 -items.weapon.melee.halberd.desc=长枪和战斧组合而成的武器。——Consideredhamster \n致残 - -items.weapon.melee.handaxe.name=手斧 -items.weapon.melee.handaxe.desc=一把轻斧头,通常用来砍树。当然,它的宽刃对敌人来说同样有效。——00-Evan \n割裂 - -items.weapon.melee.special.handcannon.name=奥能火炮 -items.weapon.melee.special.handcannon.ac_on=启动过载 -items.weapon.melee.special.handcannon.ac_off=关闭过载 -items.weapon.melee.special.handcannon.power_on=过载模式启动! -items.weapon.melee.special.handcannon.power_off=过载模式关闭。 -items.weapon.melee.special.handcannon.desc=人类发明了火器,矮人强化并改进了它。作为这个世界为数不多的火器之一,这件巨炮可以从很远的地方打击目标。——Consideredhamster \n??? - -items.weapon.melee.knuckles.name=指虎 -items.weapon.melee.knuckles.desc=基本上就是带有钢刃的指节套。——Watabou \n致残 - -items.weapon.melee.lance.name=骑士枪 -items.weapon.melee.lance.desc=结实的铁棒连接着巨大圆锥,形成了这么一件武器。——Hmdzl001 \n穿刺 - -items.weapon.melee.magebook.name=魔典 -items.weapon.melee.magebook.desc=一本法师高塔里的厚重魔典。内容十分难懂。——Coconut \n钝器 - -items.weapon.melee.nunchakus.name=双截棍 -items.weapon.melee.nunchakus.desc=两根粗短的木棍被结实的绳索连接,形成了这么一件武器。——Hmdzl001 \n高级钝器 - -items.weapon.melee.rapier.name=刺剑 -items.weapon.melee.rapier.desc=一件又细又长又尖的武器。——Snof33 \n高级穿刺 - -items.weapon.melee.special.runicblade.name=符文之刃 -items.weapon.melee.special.runicblade.ac_reforge=重铸 -items.weapon.melee.special.runicblade.choose=选择要强化的武器 -items.weapon.melee.special.runicblade.reforged=你用符文之刃强化了你的武器。 -items.weapon.melee.special.runicblade.desc=来自失落之地的神秘武器,有着明亮的蓝色刀刃。——00-Evan \n精炼 - -items.weapon.melee.scimitar.name=弯刀 -items.weapon.melee.scimitar.desc=一把厚重的弯刀。它的形状能让它进行更快但不甚强力的攻击。——00-Evan \n高级割裂 - -items.weapon.melee.shortsword.name=短剑 -items.weapon.melee.shortsword.desc=它确实相当短,不比一把匕首长出几英寸。——Watabou \n割裂 - -items.weapon.melee.spear.name=长矛 -items.weapon.melee.spear.desc=这是一根装着锋锐铁刺的细长木杆。——Watabou \n致残 - -items.weapon.melee.special.spork.name=皇室餐具 -items.weapon.melee.special.spork.desc=一把将叉子和勺子结合在一起的餐具。说真的,这是一把武器?——Dachhack \n暴食 - -items.weapon.melee.special.tekkokagi.name=攻击之爪 -items.weapon.melee.special.tekkokagi.desc= 看起来像金刚狼爪子的忍者武器。——Typedscroll \n致死 - -items.weapon.melee.warhammer.name=战锤 -items.weapon.melee.warhammer.desc=很少有生物能抵挡这铅铁巨块的辗压,但也只有最强壮的冒险者才能有效使用它。——Watabou \n钝器 - -items.weapon.melee.whip.name=长鞭 -items.weapon.melee.whip.desc=虽然这把武器另一端带倒刺的绳子伤害不高,但它的攻击范围是数一数二的。——00-Evan \n高级致残 - -items.weapon.melee.special.wraithbreath.name=幽灵之息 -items.weapon.melee.special.wraithbreath.desc=.................——无聊 \n恐吓 - -items.weapon.melee.special.pumpkin.name=南瓜灯 -items.weapon.melee.special.pumpkin.desc=已经被点燃的南瓜灯。万圣节快乐!\n引燃,照明,恐吓,甜食 - -items.weapon.melee.special.tree.name=圣诞树 -items.weapon.melee.special.tree.desc=一个简单的圣诞树装饰物。圣诞节快乐!\n溅射,虚弱,礼物 - -items.weapon.melee.special.firecracker.name=鞭炮 -items.weapon.melee.special.firecracker.desc=传统的800响鞭炮。2018春节快乐!\n爆裂,引燃,喧闹,恐吓 - -items.weapon.melee.special.hookham.name=钩子和火腿 -items.weapon.melee.special.hookham.desc=是时候来cos海盗了。2018暑假快乐!\n礼物,恢复,割裂 - -items.weapon.melee.triangolo.name=三角铁 -items.weapon.melee.triangolo.desc=用细钢条弯制成三角形的打击乐器。用金属棒敲击后就会发出清脆悦耳的声音。\n共振 - -items.weapon.melee.flute.name=长笛 -items.weapon.melee.flute.desc=一根有着许多小孔的空心木棍,吹奏起来会发出尖锐的啸声。\n共振 - -items.weapon.melee.wardurm.name=战鼓 -items.weapon.melee.wardurm.desc=发音较低,但很响亮。被用于鼓舞士气或指挥战斗。 \n高级共振 - -items.weapon.melee.trumpet.name=小号 -items.weapon.melee.trumpet.desc=铜管乐器家族中音域最高的乐器,常负责旋律部分或高吭节奏的演奏。\n共振 - -items.weapon.melee.harp.name=竖琴 -items.weapon.melee.harp.desc=世界上最古老的拨弦乐器之一。 \n共振 - -items.weapon.melee.woodenstaff.name=木杖 -items.weapon.melee.woodenstaff.desc=用特殊木头雕刻而成的棍子。——dachhack \n积蓄 - -items.weapon.melee.mace.name=硬头锤 -items.weapon.melee.mace.desc=这把武器前端的大型铁头能够造成可观的伤害。——Watabou \n积蓄 - -items.weapon.melee.holywater.name=圣水 -items.weapon.melee.holywater.desc=被祝福过的水。——??? \n高级积蓄 - -items.weapon.melee.prayerwheel.name=转经轮 -items.weapon.melee.prayerwheel.desc=就是转经轮。——??? \n积蓄 - -items.weapon.melee.stonecross.name=十碑 -items.weapon.melee.stonecross.desc=一个巨大的石头十字碑。——Coconut \n积蓄 - -items.weapon.melee.special.goei.name=驱魔御币 -items.weapon.melee.special.goei.desc=一把驱魔御币,博丽的巫女常用它来治退妖魔鬼怪。——REN\n除秽,积蓄 - -items.weapon.melee.special.brick.name=砖头 -items.weapon.melee.special.brick.desc=一块由泥土烧成的普通砖头。劳动节辛苦了。\n高级钝器,易碎-报酬 - -items.weapon.melee.special.lollipop.name=棒棒糖 -items.weapon.melee.special.lollipop.desc=很难想象这样的食物是一把武器。儿童节快乐!\n粘滞,迷人,易碎-失落 - -items.weapon.melee.special.sjrbmusic.name=S-J-R-B音乐套装 -items.weapon.melee.special.sjrbmusic.desc=这是一个知名的虚拟表演者的服装。2019暑假快乐!\n共振,高级穿刺,迷人,喧闹 -items.weapon.melee.special.sjrbmusic.rap=鸡你太美!!! - -items.weapon.melee.zero.woodenhammer.name=简易木槌 -items.weapon.melee.zero.woodenhammer.desc=一把普通的小木槌——路易基。 \n钝器,易碎-暴击 - -items.weapon.melee.zero.emptypotion.name=空瓶 -items.weapon.melee.zero.emptypotion.desc=一个普通的空瓶子——???。 \n共振,易碎-暴击 - -items.weapon.melee.special.linksword.name=海拉鲁传奇 -items.weapon.melee.special.linksword.desc=海拉鲁大陆上颇具传奇色彩的武器组。\n传奇 -items.weapon.melee.special.linksword.ac_wisdom=智慧守护 -items.weapon.melee.special.linksword.ac_power=力量压制 -items.weapon.melee.special.linksword.ac_courage=勇气回旋 -items.weapon.melee.special.linksword.power=这把武器看起来更优质了。 -items.weapon.melee.special.linksword.charge=能量:%d / %d。 -items.weapon.melee.special.linksword.no=没有能量了。 - -items.weapon.melee.special.diamondpickaxe.name=史蒂夫的钻石镐 -items.weapon.melee.special.diamondpickaxe.desc=一把钻石做的镐。\n时运,耐久,效率,锋利,精准,杀手 -items.weapon.melee.special.diamondpickaxe.ac_mine=挖掘 -items.weapon.melee.special.diamondpickaxe.no_thing=这里没东西好挖了。 -items.weapon.melee.special.diamondpickaxe.noise=挖掘惊动了附近的怪物。 - -###items.weapon.melee..name= -###items.weapon.melee..desc= - -items.weapon.melee.meleeweapon.stats_known=这件_%1$d阶_近战武器可以造成_%2$d~%3$d点伤害_,并且需要_%4$d点力量_来正常使用。 -items.weapon.melee.meleeweapon.stats_known2=这件武器的命中为_%1$s_,攻击延迟为_%2$s_,攻击距离为_%3$d_。 -items.weapon.melee.meleeweapon.stats_unknown=一般而言这件_%1$d阶_近战武器可以造成_%2$d~%3$d点伤害_,并且需要_%4$d点力量_来正常使用。 -items.weapon.melee.meleeweapon.too_heavy=你的力量不足以完美使用它。 -items.weapon.melee.meleeweapon.probably_too_heavy=没准你的力量不足以完美使用它。 -items.weapon.melee.meleeweapon.excess_str=你的额外力量让你在使用这件武器时能够造成_%d点额外伤害_。 -items.weapon.melee.meleeweapon.identify=你对手中的武器已经足够熟悉并将其完全鉴定。 -items.weapon.melee.meleeweapon.incompatible=不同属性的魔法相冲突,消除了武器上的附魔! -items.weapon.melee.meleeweapon.cursed_worn=由于这件武器被诅咒,你无法将其放下。 -items.weapon.melee.meleeweapon.cursed=你能感觉到这件武器里潜伏着一股充满恶意的魔力。 -items.weapon.melee.meleeweapon.enchanted=这件武器已经被附魔了,%s - -items.weapon.melee.meleeweapon.stats_desc=...\n - -items.weapon.weapon.identify=你对%s已经足够熟悉并且可以因此将其完全鉴定。它是%s。 -items.weapon.weapon.avg_dmg=它能造成_%1$d~%2$d点伤害_。 -items.weapon.weapon.too_heavy=因为你的力量不足,使用该武器时的攻速和精准都会减少。 -items.weapon.weapon.incompatible=不同属性的魔法相冲突,消除了武器上的附魔! - -items.weapon.weapon.charge=充能:%d / %d。 - -###test Guns -items.weapon.guns.toygun.name=玩具枪 -items.weapon.guns.toygun.desc=一把简易的玩具枪,2019新年快乐。 -items.weapon.guns.toygun.ac_shoot=射击 -items.weapon.guns.toygun.ac_reload=填弹 -items.weapon.guns.toygun.reloading=填弹中 -items.weapon.guns.toygun.need_to_equip=你需要先装备这件武器才能射击 -items.weapon.guns.toygun.full=弹夹已满 -items.weapon.guns.toygun.empty=弹药不足 -items.weapon.guns.toygun.prompt=选择射击目标 -items.weapon.guns.toygun.stats_known=这件_%1$d阶_武器可以造成_%2$d~%3$d点伤害_,并且需要_%4$d点力量_来正常使用。 - -items.weapon.guns.toygun.stats_desc=...\n - -items.weapon.guns.toygun.charge=弹药:%d / %d。 - -items.weapon.guns.gunweapon.ac_shoot=射击 -items.weapon.guns.gunweapon.ac_reload=填弹 -items.weapon.guns.gunweapon.ac_ammo=切换子弹 -items.weapon.guns.gunweapon.reloading=填弹中 -items.weapon.guns.gunweapon.stats_desc=...\n -items.weapon.guns.gunweapon.need_to_equip=你需要先装备这件武器才能射击 -items.weapon.guns.gunweapon.prompt2=选择加载的强化弹药 -items.weapon.guns.gunweapon.full=弹夹已满 -items.weapon.guns.gunweapon.empty=弹药不足 -items.weapon.guns.gunweapon.imbue=你加载了%d。 -items.weapon.guns.gunweapon.ammo_add=当前强化弹药: -items.weapon.guns.gunweapon.warning=确定加载这种弹药?原先的弹药将被替换 -items.weapon.guns.gunweapon.yes=是的 -items.weapon.guns.gunweapon.no=不要 - -items.weapon.guns.guna.name=枪械A -items.weapon.guns.guna.desc=高塔根据前时间旅行的报告所制作的实验性枪械,被投入到无害的环境中进行测试。 - -items.weapon.guns.gunb.name=枪械B -items.weapon.guns.gunb.desc=高塔基于无害环境下的试验结果制作的枪械,被投入到相对危险的环境中进行测试。 - -items.weapon.guns.gunc.name=枪械C -items.weapon.guns.gunc.desc=高塔基于相对危险的环境下的试验结果制作的枪械,被投入到极其危险的环境中进行压力测试。 - -items.weapon.guns.gund.name=枪械D -items.weapon.guns.gund.desc=高塔基于极其危险的环境下的试验结果制作的枪械,被投入到战争环境中进行测试。 - -items.weapon.guns.gune.name=枪械E -items.weapon.guns.gune.desc=高塔基于战争环境下的试验结果制作的枪械,被投入到地狱中进行测试。 - -items.weapon.guns.sling.name=投石索 -items.weapon.guns.sling.desc=简单而极具伤害的武器原型。 - -items.weapon.spammo.heavyammo.name=重铅弹 -items.weapon.spammo.heavyammo.desc=将两枚原石组合而成的特殊子弹,能使枪械附带更高的伤害。 - -items.weapon.spammo.fireammo.name=燃烧弹 -items.weapon.spammo.fireammo.desc=将原石和火焰种组合而成的特殊子弹,能使枪械附带火焰的伤害。 - -items.weapon.spammo.iceammo.name=寒霜弹 -items.weapon.spammo.iceammo.desc=将原石和寒冰种组合而成的特殊子弹,能使枪械附带寒冰的伤害。 - -items.weapon.spammo.stormammo.name=雷暴弹 -items.weapon.spammo.stormammo.desc=将原石和风暴种组合而成的特殊子弹,能使枪械附带雷电的伤害。 - -items.weapon.spammo.mossammo.name=淬毒弹 -items.weapon.spammo.mossammo.desc=将原石和毒药种组合而成的特殊子弹,能使枪械附带毒液的伤害。 - -items.weapon.spammo.blindammo.name=闪光弹 -items.weapon.spammo.blindammo.desc=将原石和致盲种组合而成的特殊子弹,能使枪械附带致盲效果。 - -items.weapon.spammo.starammo.name=陨星弹 -items.weapon.spammo.starammo.desc=将原石和星陨种组合而成的特殊子弹,能使枪械附带更高的伤害。 - -items.weapon.spammo.dreamammo.name=催眠弹 -items.weapon.spammo.dreamammo.desc=将原石和睡眠种组合而成的特殊子弹,能使枪械附带催眠的效果。 - -items.weapon.spammo.dewammo.name=碎片弹 -items.weapon.spammo.dewammo.desc=将原石和露珠种组合而成的特殊子弹,能使枪械附带多段伤害。 - -items.weapon.spammo.sunammo.name=活性弹 -items.weapon.spammo.sunammo.desc=将原石和恢复种组合而成的特殊子弹,能使枪械附带吸取的效果。 - -items.weapon.spammo.sandammo.name=烟尘弹 -items.weapon.spammo.sandammo.desc=将原石和消逝种组合而成的特殊子弹,能使枪械附带削弱的效果。 - -items.weapon.spammo.goldammo.name=彩票弹 -items.weapon.spammo.goldammo.desc=将原石和种子荚组合而成的特殊子弹,能使枪械附带金币的伤害。 - -items.weapon.spammo.emptyammo.name=空心弹 -items.weapon.spammo.emptyammo.desc=将原石和无味种组合而成的特殊子弹...这有什么用? - -items.weapon.spammo.rotammo.name=腐败弹 -items.weapon.spammo.rotammo.desc=将原石和腐梅种组合而成的特殊子弹,能使枪械附带致死的效果。 - -items.weapon.spammo.evolveammo.name=退化弹 -items.weapon.spammo.evolveammo.desc=将原石和转换种组合而成的特殊子弹,能使枪械附带退化的效果。 - -items.weapon.spammo.thornammo.name=荆棘弹 -items.weapon.spammo.thornammo.desc=将原石和地种组合而成的特殊子弹,能使枪械附带流血的效果。 - -items.weapon.spammo.battleammo.name=战斗弹 -items.weapon.spammo.battleammo.desc=将原石和吞星种组合而成的特殊子弹,能使增加战斗的力量。 - -items.weapon.spammo.woodenammo.name=软木弹 -items.weapon.spammo.woodenammo.desc=将原石和坚果组合而成的特殊子弹,能击晕目标。 - -###missile weapons -items.weapon.missiles.empbola.name=电磁套索 -items.weapon.missiles.empbola.desc=用于抓捕或狩猎的工具之一,能够减缓目标的移动甚至将其麻痹。 - -items.weapon.missiles.boomerang.name=回旋镖 -items.weapon.missiles.boomerang.ac_ammo=涂油 -items.weapon.missiles.boomerang.prompt=选择用于涂抹的强化子弹 -items.weapon.missiles.boomerang.desc=被投向敌人后,这具扁平的曲状木制投掷物能够自动回到投掷者手中。此外这个回旋镖可以使用强化子弹强化。 - -items.weapon.missiles.manyknive.name=十六夜的千支刀 -items.weapon.missiles.manyknive.ac_shoot=投掷 -items.weapon.missiles.manyknive.ac_ammo=涂油 -items.weapon.missiles.manyknive.prompt=选择用于涂抹的强化子弹 -items.weapon.missiles.manyknive.desc=由大量普通飞刀组成的飞刀组。此外这个飞刀组可以使用强化子弹强化。 -items.weapon.missiles.manyknive.damage=这件武器可以造成_%d - %d 点伤害_,拥有较高的攻速。 - -items.weapon.missiles.taurcenbow.name=马人长弓 -items.weapon.missiles.taurcenbow.ac_shoot=射击 -items.weapon.missiles.taurcenbow.ac_break=破甲箭头 -items.weapon.missiles.taurcenbow.ac_fire=燃烧箭头 -items.weapon.missiles.taurcenbow.ac_ice=霜冻箭头 -items.weapon.missiles.taurcenbow.ac_posion=腐蚀箭头 -items.weapon.missiles.taurcenbow.ac_ele=电磁箭头 -items.weapon.missiles.taurcenbow.desc=一把结实的复合弓,在马人族中这种弓就是上等品 -items.weapon.missiles.taurcenbow.damage=这件武器可以造成_%d - %d 点伤害_,并可以在不同类型的箭头间切换。当攻击足够次数后,下一次的攻击会附加特殊箭头。 -items.weapon.missiles.taurcenbow.charge=充能:%d / %d。 - -items.weapon.missiles.forestdart.name=森林飞刀 -items.weapon.missiles.forestdart.desc=受到森林的祝福的飞刀,能造成大量的伤害。 - -items.weapon.missiles.incendiarydart.name=燃烧飞镖 -items.weapon.missiles.incendiarydart.desc=飞镖上的刺能让它钉入目标,而在飞镖上的不稳定物质则会在目标身上燃起烈焰。 - -items.weapon.missiles.hugeshuriken.name=巨型手里剑 -items.weapon.missiles.hugeshuriken.desc=锋锐的星形金属刃片能有效伤害目标,并大幅削弱目标的意志。 - -items.weapon.missiles.escapeknive.name=逃脱小刀 -items.weapon.missiles.escapeknive.desc=简单的金属片,但可以帮你从困境中逃脱。 - -items.weapon.missiles.normalbomb.name=空弹 -items.weapon.missiles.normalbomb.desc=这个炸弹里面没有火药,看起来没有什么特别。 - -items.weapon.missiles.poisondart.name=毒镖 -items.weapon.missiles.poisondart.desc=这种飞镖上覆盖着某种毒素,可以轻松的麻痹目标的神经,使其无法反抗。 - -items.weapon.missiles.riceball.name=糯米团 -items.weapon.missiles.riceball.desc=用于投食的食物,由于其量大份足,任何食用它的有生命的怪物都会去寻找一个安全的地方来美美睡上一觉。 - -items.weapon.missiles.smoke.name=烟雾弹 -items.weapon.missiles.smoke.desc=手里剑形状的烟雾弹,能制造小范围的烟雾。 - -items.weapon.missiles.skull.name=鬼骨镖 -items.weapon.missiles.skull.desc=一种邪恶的东西,能使你吸取目标的生命。 - -items.weapon.missiles.tamahawk.name=致命飞斧 -items.weapon.missiles.tamahawk.desc=这种投掷斧并没有多重,却需要相当的力量才能有效运用它。 - -items.weapon.missiles.wave.name=声波诱饵 -items.weapon.missiles.wave.desc=这个东西能够迷惑被击中的敌人,使它狂乱并被致盲 - -items.weapon.missiles.shatteredammo.name=破片炸弹 -items.weapon.missiles.shatteredammo.desc=虽然看起来非常怪,但是这东西爆炸所造成的伤害非常高 - -items.weapon.missiles.errorammo.name=错误弹丸 -items.weapon.missiles.errorammo.desc=这个是个错误 - -items.weapon.missiles.minimoai.name=迷你复活节岛石雕 -items.weapon.missiles.minimoai.desc=一个旅游纪念品,就当是复活节的彩蛋吧 - -items.weapon.missiles.pocketball.name=引魂灯 -items.weapon.missiles.pocketball.desc=一种空的容器,将其扔向你的宠物可以将它收服,以方便携带或者出售。 -items.weapon.missiles.pocketball.get_pet=你回收了这只宠物的灵魂。 - -items.weapon.missiles.moneypack.name=红包 -items.weapon.missiles.moneypack.desc=只要准备好钱,在春节就能解决好多问题。2020春节快乐!!! - -##mc block -items.weapon.missiles.buildblock.wallblock.name=墙块 -items.weapon.missiles.buildblock.wallblock.desc=一种墙块。 - -items.weapon.missiles.buildblock.doorblock.name=门块 -items.weapon.missiles.buildblock.doorblock.desc=一种门块。 - -items.weapon.missiles.buildblock.stoneblock.name=雕块 -items.weapon.missiles.buildblock.stoneblock.desc=一种雕块。 - -items.weapon.missiles.buildblock.bookblock.name=书块 -items.weapon.missiles.buildblock.bookblock.desc=一种书块。 - -items.weapon.missiles.buildblock.woodenblock.name=木块 -items.weapon.missiles.buildblock.woodenblock.desc=一种木块。 - -items.weapon.missiles.buildblock.waterblock.name=水块 -items.weapon.missiles.buildblock.waterblock.desc=一种水块。 - -items.wateritem2.name=水块 -items.wateritem2.pour=使用。 -items.wateritem2.desc=一种水块。 - -##eggs -items.eggs.egg.prevent=这里不是尝试召唤它的最佳地点。 -items.eggs.egg.notready=你的宠物还没有准备好和其他宠物相处。 -items.eggs.egg.yolk=一些能量四下流散。 -items.eggs.egg.name=魔物之魂 -items.eggs.egg.hatch=新的宠物诞生! -items.eggs.egg.scratch=灵魂简单的回应了你的呼喊! -items.eggs.egg.slithers=灵魂回应了你的呼喊! -items.eggs.egg.kick=灵魂强烈的回应了你的呼喊! -items.eggs.egg.slosh=灵魂没什么反应。 -items.eggs.egg.zap=灵魂用强大的能量回应了你的呼喊,并对你造成了伤害! -items.eggs.egg.ac_break=召唤 -items.eggs.egg.ac_shake=呼喊 -items.eggs.egg.warmhome=这个灵魂在你温暖的背包里吸收能量。 -items.eggs.egg.onlyone=只有一个灵魂能在背包里面吸收能量。 -items.eggs.egg.desc=一个怪物的灵魂。根据吸收能量的不同,产生的结果也会不同。 -items.eggs.egg.moves=无属性:%d -items.eggs.egg.burns=火属性:%d -items.eggs.egg.freezes=冰属性:%d -items.eggs.egg.poisons=地属性:%d -items.eggs.egg.lits=雷属性:%d -items.eggs.egg.summons=暗属性:%d -items.eggs.egg.light=光属性:%d - -items.eggs.easteregg.name=节日之魂 -items.eggs.easteregg.desc=来自复活节的怪物之魂。看起来很可爱。 - -items.eggs.cococategg.name=爆破之魂 -items.eggs.cococategg.desc=炸弹,炸弹,炸弹!我想我会弄一个这样的boss的。 - -items.eggs.randomegg.name=随机灵魂 -items.eggs.randomegg.desc=召唤一个随机的基础宠物。 - -items.eggs.shadowdragonegg.name=暗之龙魂 -items.eggs.shadowdragonegg.desc=光明所孕化的龙的灵魂。 - -items.eggs.leryfireegg.name=紊乱之魂 -items.eggs.leryfireegg.desc=如果把一些元素乱七八糟的组合在一起,我想你也可以获得这样一个灵魂。@ - -items.eggs.bluedragonegg.name=蓝龙之魂 -items.eggs.bluedragonegg.desc=冰霜所孕化的龙的灵魂。 - -items.eggs.lightdragonegg.name=白龙之魂 -items.eggs.lightdragonegg.desc=黑暗所孕化的龙的灵魂。 - -items.eggs.greendragonegg.name=绿龙之魂 -items.eggs.greendragonegg.desc=雷电所孕化的龙的灵魂。 - -items.eggs.reddragonegg.name=红龙之魂 -items.eggs.reddragonegg.desc=烈焰所孕化的龙的灵魂。 - -items.eggs.scorpionegg.name=毒蛰之魂 -items.eggs.scorpionegg.desc=看起来是一只巨大的蝎子。 - -items.eggs.spideregg.name=绒毛之魂 -items.eggs.spideregg.desc=看起来是一只巨大的蜘蛛。 - -items.eggs.velociroosteregg.name=鸡神之魂 -items.eggs.velociroosteregg.desc=在某个地方它很强。 - -items.eggs.violetdragonegg.name=紫龙之魂 -items.eggs.violetdragonegg.desc=大地所孕化的龙的灵魂。 - -items.eggs.golddragonegg.name=金龙之魂 -items.eggs.golddragonegg.desc=万物合为一体的龙的灵魂。 - -items.eggs.yearpetegg.name=年兽之魂 -items.eggs.yearpetegg.desc=年兽宝宝的灵魂。 - -##Bombs -items.bombs.bomb.name=炸弹 -items.bombs.bomb.ac_lightthrow=点燃并扔出 -items.bombs.bomb.snuff_fuse=你迅速掐灭了炸弹引线。 -items.bombs.bomb.desc=一颗颇庞大的黑火药炸弹。它炸起来周围全得遭殃。\n\n看起来引信在点燃后能烧几回合。 -items.bombs.bomb.desc_burning=一颗颇庞大的黑火药炸弹。它炸起来周围全得遭殃。\n\n引信快烧完了,保持距离或者赶紧掐灭! - -items.bombs.firebomb.name=火焰炸弹 -items.bombs.firebomb.desc=造成范围油雾和燃烧效果。 - -items.bombs.icebomb.name=寒霜炸弹 -items.bombs.icebomb.desc=造成范围霜冻效果。 - -items.bombs.earthbomb.name=酸蚀炸弹 -items.bombs.earthbomb.desc=造成范围酸蚀和长草效果。 - -items.bombs.fishingbomb.name=鱼饵炸弹 -items.bombs.fishingbomb.no_tp=这里已经没有干燥的地方了。 -items.bombs.fishingbomb.tp=有什么上钩了。 -items.bombs.fishingbomb.desc=转移范围内所有的生物。 - -items.bombs.stormbomb.name=风暴炸弹 -items.bombs.stormbomb.desc=造成范围雷电效果。 - -items.bombs.darkbomb.name=暗黑炸弹 -items.bombs.darkbomb.desc=造成范围伤害,对生物有增益伤害。 - -items.bombs.hugebomb.name=巨大炸弹 -items.bombs.hugebomb.desc=造成大范围伤害,并摧毁墙壁。 - -items.bombs.lightbomb.name=圣光炸弹 -items.bombs.lightbomb.desc=造成范围伤害,对邪物有增益伤害。 - -items.bombs.dungeonbomb.name=地牢炸弹 -items.bombs.dungeonbomb.desc=造成范围伤害,并摧毁墙壁。\n\n看起来引信在点燃后能烧几回合。 -items.bombs.dungeonbomb$doublebomb.name=一对炸弹 -items.bombs.dungeonbomb$doublebomb.desc=两枚装的黑火药重装炸弹,看起来多出来的那个是免费送你的! - -items.bombs.buildbomb.name=土制炸弹 -items.bombs.buildbomb.desc=造成范围伤害,可用于制作其他炸弹。 - -items.bombs.minibomb.name=迷你炸弹 -items.bombs.minibomb.desc=造成伤害。 - -###tp items -items.tengukey.name=匿藏地传送门 -items.tengukey.ac_port=使用 -items.tengukey.desc=天狗遗留下的一把钥匙。没准它通往哪个地方。 - -items.treasuremap.name=密藏宝图 -items.treasuremap.ac_port=使用 -items.treasuremap.desc=是不是有种东西叫12级杀手?我不建议你去看看。 - -items.bone.ac_port=使用 -items.bone.name=亡灵短骨 -items.bone.desc=我十分怀疑这一切是亡灵的阴谋。无论如何,去看看吧。。 - -items.conchshell.name=巨蟹海螺 -items.conchshell.ac_port=使用 -items.conchshell.desc=为什么远古洞穴里会有这种东西?你的直觉告诉你有大家伙在里面。 - -items.ancientcoin.ac_port=使用 -items.ancientcoin.name=上朝贡物 -items.ancientcoin.desc=这东西可以作为信物,用于让盗贼领主召唤你前去。 - -items.triforce.ac_port=使用 -items.triforce.name=起源三角 -items.triforce.desc=你已经通过了三种试炼,现在已经可以去和古神之影战斗了。 - -items.bossrush.name=BossRush挑战 -items.bossrush.ac_read=使用 -items.bossrush.desc=坚果制作的终级挑战,使用它将会带你前往全新Boss面前。 - -items.palantir.name=能源核心 -items.palantir.ac_port=使用 -items.palantir.desc=由Otiluke创建的虚空-能源转化装置。它可以把强大的灵魂保存下来以作为能源。 - -###reward -items.reward.sewerreward.name=下水道奖励包 -items.reward.sewerreward.ac_use=使用 -items.reward.sewerreward.desc=清理奖励,包含20枚原石。 - -items.reward.prisonreward.name=监狱奖励包 -items.reward.prisonreward.ac_use=使用 -items.reward.prisonreward.desc=清理奖励,包含一颗满月莓果。 - -items.reward.cavereward.name=洞穴奖励包 -items.reward.cavereward.ac_use=使用 -items.reward.cavereward.desc=清理奖励,包含每种莓果各10颗。 - -items.reward.cityreward.name=城市奖励包 -items.reward.cityreward.ac_use=使用 -items.reward.cityreward.desc=清理奖励,包含价值1000的食物五个。 - -##summon item -items.summon.honeypot.name=蜂蜜罐 -items.summon.honeypot.ac_shatter=击碎 -items.summon.honeypot.desc=这个巨型蜜罐只是薄薄地涂了一圈蜂蜜,作为替代里头住着一只巨型蜜蜂!这种大型蜜蜂一般只待在蜂巢里,也许罐子本身就是某种特殊陷阱屋?蜜蜂看起来对罐子很满意,当你看向它时它非常警惕地对你回以嗡鸣。 -items.summon.honeypot$shatteredpot.name=破碎的的蜂蜜罐 -items.summon.honeypot$shatteredpot.desc=这个罐子已经被打碎,仅靠罐沿的粘稠蜂蜜勉强维持形状,而且正在缓缓解体。\n\n尽管蜜罐碎了,看来蜜蜂依然想捍卫它的住所。 -items.summon.honeypot$bee.name=金色蜜蜂 -items.summon.honeypot$bee.desc=尽管它们体积小,但金色蜜蜂有着强烈的保护家园的欲望。这只蜜蜂非常疯狂,最好和它保持距离。 -items.summon.honeypot$steelbee.name=钢铁蜜蜂 -items.summon.honeypot$steelbee.desc=升级后的钢铁蜜蜂,非常疯狂,但你没必要和它保持距离。 - -items.summon.activemrdestructo.name=毁灭无人引擎 -items.summon.activemrdestructo.ac_active=使用 -items.summon.activemrdestructo.desc=毁灭无人机是矮人科技和恶魔能量制作出来的一种自律型炮塔。这东西只能使用一次。 -items.summon.activemrdestructo$mrdestructo.name=毁灭无人机 -items.summon.activemrdestructo$mrdestructo.desc=你启动了这个装置。它在攻击附近的怪物! -items.summon.activemrdestructo$mrdestructo2dot0.name=毁灭无人机2.0 -items.summon.activemrdestructo$mrdestructo2dot0.desc=你的转职强化了这个装置,它在攻击附近的怪物! - -items.summon.callcoconut.name=召唤钥匙 -items.summon.callcoconut.ac_active=使用 -items.summon.callcoconut.desc=使用以后,某个强大的家伙会和蘑菇云一起到来。 -items.summon.callcoconut$scococat.name=椰子猫 -items.summon.callcoconut$scococat.desc=来,炸个痛快。 -items.summon.callcoconut$excococat.name=EX椰子猫 -items.summon.callcoconut$excococat.desc=尝尝它的炸弹吧。 - -items.summon.mobile.name=遥控卫星 -items.summon.mobile.ac_active=使用 -items.summon.mobile.desc=用于呼叫一个小型的闪电卫星。 -items.summon.mobile$mobilesatellite.name=蓝色卫星 -items.summon.mobile$mobilesatellite.desc=这个东西貌似出现在外星飞船中。 -items.summon.mobile$exmobilesatellite.name=红色卫星 -items.summon.mobile$exmobilesatellite.desc=由马可少校改制的蓝色卫星,有更高的射速和更高的伤害。 - -items.summon.fairycard.name=精灵卡片 -items.summon.fairycard.ac_active=使用 -items.summon.fairycard.desc=进行一次抽卡,并召唤一只精灵。 -items.summon.fairycard$fairy.name=生命仙女 -items.summon.fairycard$fairy.desc=精灵的一种,出色的治疗者。 -items.summon.fairycard$sugarplumfairy.name=术士仙女 -items.summon.fairycard$sugarplumfairy.desc=精灵的一种,出色战士。 - -###misc items -items.dwarfhammer.prevent=这里不是应该使用这个的地方。 -items.dwarfhammer.unseal=你打开了前往下一层的路。 -items.dwarfhammer.ac_break=破坏封印 -items.dwarfhammer.name=破魔之锤 -items.dwarfhammer.desc=矮人族在战胜古神后,利用他们的科学魔法把古神封印在地牢深处。但如今,这些封印早已成为保护古神的保护伞。这东西可以在封印的交接处(就是楼梯入口)制造一个缺口来方便冒险者前进。另外,这东西的柄上有十分模糊的标记。你只能辨认出一个O字。 - -items.amulet.name=Yendor护身符 -items.amulet.ac_end=结束游戏 -items.amulet.desc=Yendor护身符是来自未知领域中最强大的著名神器。据说它能够实现持有者的一切愿望,只要持有者具备足够的力量来"说服"它去做。 - -items.ankh.name=重生十字架 -items.ankh.ac_bless=祝福 -items.ankh.bless=你用清水祝福了这个重生十字架。 -items.ankh.desc=这枚象征不朽的古老饰品能够起死回生。在复苏时所有未装备的道具都会丢失。 -items.ankh.desc_blessed=这枚象征不朽的古老饰品能够让人起死回生。这枚十字架已被祝福而变得更加强大。它会在危急关头牺牲自己来救你一命。 -items.ankh.revive=十字架迸发出了苏生的能量! - -items.armorkit.name=技能配件包 -items.armorkit.ac_apply=学习 -items.armorkit.desc=使用这配件包里的工具和材料,任何人都能学到他职业的专属技能,而不用付出任何代价。 - -items.dewdrop.name=露珠 -items.dewdrop.value=%+d点生命 -items.dewdrop.already_full=你的生命值已满。 -items.dewdrop.desc=一颗晶莹剔透的露珠。\n\n受这片区域的魔力影响,纯水有着少量治疗效果。 - -items.equipableitem.unequip_cursed=你无法移除一件受诅咒的物品! -items.equipableitem.ac_equip=装备 -items.equipableitem.ac_unequip=取下 - -items.gold.name=金币 -items.gold.desc=一堆金币。收集金币以在随后的商店中消费。 - -items.heap.mimic=这是一个宝箱怪! -items.heap.chest=宝箱 -items.heap.chest_desc=打开前你是看不见里面有什么的! -items.heap.locked_chest=上锁的宝箱 -items.heap.locked_chest_desc=打开前你是看不见里面有什么的!你需要一枚金钥匙才能打开它。 -items.heap.crystal_chest=水晶宝箱 -items.heap.crystal_chest_desc=你看得见里面的%s,但你需要一枚金钥匙才能打开它。 -items.heap.artifact=一件神器 -items.heap.wand=一根法杖 -items.heap.ring=一枚戒指 -items.heap.tomb=坟墓 -items.heap.tomb_desc=这个坟墓里或许埋葬着一些有用的东西,但墓主肯定是不会让你拿走的。 -items.heap.skeleton=遗骸 -items.heap.skeleton_desc=某个不幸的冒险者存在过的唯一证明。或许可以找找里面有什么值钱的东西。 -items.heap.remains=英雄遗骸 -items.heap.remains_desc=你的某个先辈存在过的唯一证明。或许能找到点什么值钱的东西。 - -items.item.pack_full=你的背包放不下%s了。 -items.item.prompt=选择丢出的方位 -items.item.ac_drop=放下 -items.item.ac_throw=扔出 -items.item.not_here=这不是使用这件传送道具的地方。 -items.item.boss_first=你需要先击败boss才能使用这件道具离开。 -items.item.item_first=你需要先站在放有关键道具的台子上,高举关键道具才能使用这件道具离开。 -items.item.reinforced=强化组件已加载。 - -items.kindofmisc.unequip_title=卸下一件装备 -items.kindofmisc.unequip_message=你只能同时装备最多三件饰品。 - -items.kindofweapon.cursed=你的手不受控制地握紧了这件武器。 - -items.kindofarmor.cursed=这件护甲痛苦得依附在你身上。 - -items.kindofweapon.destory=你的武器坏掉了。 -items.kindofweapon.almost_destory=你的武器快要坏了。 - -items.merchantsbeacon.name=商人信标 -items.merchantsbeacon.ac_use=使用 -items.merchantsbeacon.desc=这件矮人科技的奇特产物能够让你和遥远的地方通讯。\n\n激活时,这枚信标可以让你从地牢的任意角落向像素商店出售物品。\n\n不过信标内的魔法只够支撑一次会话,请酌情使用。 - -items.stylus.name=奥术刻笔 -items.stylus.ac_inscribe=蚀刻 -items.stylus.prompt=选择一样要雕刻的盔甲 -items.stylus.inscribed=你用刻笔雕刻了盔甲 -items.stylus.desc=这支奥术蚀笔由一种暗黑色的坚硬石料制成。你能用它在护甲上刻下魔法刻印,不过你无法自主选择,刻笔会替你做出决定。 - -items.torch.name=火把 -items.torch.ac_light=点燃 -items.torch.desc=冒险必备物品,每当地牢陷入黑暗之时,火把能让你走上正确的道路。 - -items.weightstone.name=磨刀石 -items.weightstone.ac_apply=改制 -items.weightstone.select=选择一件要附魔的武器 -items.weightstone.apply=你用磨刀石附魔了武器 -items.weightstone.desc=通过磨刀石,你可以轻松为武器附魔。 - -items.adamantarmor.name=焊接组件-护甲 -items.adamantarmor.desc=用于焊接护甲的组件。 -items.adamantring.name=焊接组件-戒指 -items.adamantring.desc=用于焊接戒指的组件。 -items.adamantwand.name=焊接组件-法杖 -items.adamantwand.desc=用于焊接法杖的组件。 -items.adamantweapon.name=焊接组件-武器 -items.adamantweapon.desc=用于焊接武器的组件。 - -items.dewvial.name=露珠瓶 -items.dewvial.ac_drink=恢复 -items.dewvial.value=%+d点生命 -items.dewvial.collected=你将一滴露珠收集到了瓶子里。 -items.dewvial.full=你的露珠瓶满了! -items.dewvial.empty=你的露珠瓶空了! -items.dewvial.ac_water=种植 -items.dewvial.ac_splash=加速 -items.dewvial.ac_bless=强化 -items.dewvial.ac_light=照明 -items.dewvial.ac_pour=清洗 -items.dewvial.ac_peek=侦测 -items.dewvial.ac_refine=提纯 -items.dewvial.watered=植物在你周围生长。 -items.dewvial.blessed=神秘的能量强化了你的装备。 -items.dewvial.remove_curse=你的背包散发着一股纯洁的光芒,邪恶的力量消散了。 -items.dewvial.curse=你的背包散发着一股纯洁的光芒,但是什么都没有发生。 -items.dewvial.select=选择一项要升级的物品 -items.dewvial.fly=你漂浮到了空中! -items.dewvial.light=你的周围发出幽暗的光芒,将你隐藏在了阴影之中。 -items.dewvial.fast=你的移动速度大幅提升了! -items.dewvial.pour=你用露水清洗了你的身躯,驱散了大量的负面buff。 -items.dewvial.desc=古老而神秘的魔法水瓶,被用于收集各种露珠。\n被收集的露珠可以被用于各种不同的功能。\n基础露珠瓶提供恢复,照明,提纯功能。 -items.dewvial.desc_v1=露珠瓶v1提供强化,种植功能。 -items.dewvial.desc_v2=露珠瓶v2提供清洗,加速功能。 -items.dewvial.desc_v3=露珠瓶v3提升容量,并使加速时浮空。 - -items.orbofzot.name=储能装置 -items.orbofzot.ac_activatethrow=释放能量 -items.orbofzot.ac_break=提取 -items.orbofzot.desc=一种储能装置,使用后会向外发射能量。不知为这个半透明的装置里面有一张纸片,想取出就要把这个装置破坏。 -items.orbofzot.charge=储能装置当前充能数%d,充能上限为%d。 - -items.dolyaslate.prevent=未知地点,拒绝访问。 -items.dolyaslate.ac_return=离开 -items.dolyaslate.ac_add=导入 -items.dolyaslate.ac_read=传送 -items.dolyaslate.ac_set=设置 -items.dolyaslate.ac_back=传回 -items.dolyaslate.prompt=选择导入的内容 -items.dolyaslate.name=多利亚石板 -items.dolyaslate.desc=利用多利亚盛产的魔法矿石所制作的传送道具,被用于不同地方的往返。\n虽然在这片区域里并没有什么值得记录和往返的地方,但是它支持读取其他人所记录的地点,也就是说你可以到其他人所记录的地方去。 -items.dolyaslate.charge=多利亚石板当前充能数%d,充能上限为%d。 -items.dolyaslate.add_page=坐标导入成功 - -items.challengebook.prevent=该挑战已过期。 -items.challengebook.ac_return=离开 -items.challengebook.ac_add=添加 -items.challengebook.ac_read=传送 -items.challengebook.ac_back=传回 -items.challengebook.prompt=添加一项日程 -items.challengebook.name=挑战日志 -items.challengebook.desc=一本普通的记事本,但是来自异世界的魔法使得它可以记录下特殊地点以方便传送。\n你可以把挑战纸片夹进这本记事本中。它上面的魔力会尝试读取挑战信息并帮你打开传送门。\n\n_他是一位对生活保持自然心态的浪漫主义者。人们都叫他REN或者泽智莲华,但令他最喜欢的还是赞赏自己的声音。或许少部分人认为他是个疯子亦或是哑剧演员,但不得不说他所创造的那个世界,是一个充溢着酒的香气、令人向往的幻想世界。\n\n如果这里还写的下的话我会述说鸟船的故事。那是个绿意盎然、蒸汽肆溢的宇宙空间站...\n\n我记得没错的话部分挑战里面存在隐藏奖励。如果你收集了全部的隐藏奖励,我可以考虑给你一把我所在的世界的专属武器。_ -items.challengebook.add_page=挑战记录成功 - -items.puddingcup.name=巧克力布丁 -items.puddingcup.ac_save=记忆 -items.puddingcup.desc=美味的布丁可以使你记住这一美好的瞬间。但仅仅是这一瞬间而已。 - -items.reddewdrop.name=红色露珠 -items.reddewdrop.value=%+d生命 -items.reddewdrop.desc=红色的露珠。 - -items.violetdewdrop.name=紫色露珠 -items.violetdewdrop.value=%+d生命 -items.violetdewdrop.desc=紫色的露珠 - -items.yellowdewdrop.name=黄色露珠 -items.yellowdewdrop.value=%+d生命 -items.yellowdewdrop.desc=黄色的露珠 - -items.triforceofcourage.name=勇气三角 -items.triforceofcourage.desc=起源三角的一部分,代表着勇气 -items.triforceofpower.name=力量三角 -items.triforceofpower.desc=起源三角的一部分,代表着力量 -items.triforceofwisdom.name=智慧三角 -items.triforceofwisdom.desc=起源三角的一部分,代表着智慧 - -items.stoneore.name=原石 -items.stoneore.desc=很普通的石头,可以用来卖钱,也可以拿来当调味料。 - -items.expore.name=经验之石 -items.expore.ac_use=使用 -items.expore.desc=立刻升级。 - -items.tomeofmastery.name=精通之书 -items.tomeofmastery.ac_read=阅读 -items.tomeofmastery.blind=在失明的时候你没法阅读它。 -items.tomeofmastery.way=你选择了走上%s的道路! -items.tomeofmastery.desc=这本皮封典籍没多厚, 但是你隐约感觉到自己能从中学到不少东西. 不过记住\: 阅读这本典籍需要一些时间。 - -items.towel.prevent=现在没必要使用湿巾。 -items.towel.apply=你使用了湿巾。 -items.towel.end=这块湿巾没法用了。 -items.towel.ac_towel=使用 -items.towel.ac_towel_pet=对宠物使用 -items.towel.name=湿巾 -items.towel.desc=湿巾是一项十分便利的发明。它虽然使用次数有限,但它可以清除各种异常状态。 - -items.upgradeblobred.ac_inscribe=使用 -items.upgradeblobred.name=红色强化精华 -items.upgradeblobred.desc=这一坨东西是吞星花的代谢产物。它可以用于强化装备,也可以用来卖钱。 -items.upgradeblobviolet.name=紫色强化精华 -items.upgradeblobviolet.ac_inscribe=使用 -items.upgradeblobviolet.desc=这一坨东西是吞星花的代谢产物。它可以用于强化装备,也可以用来卖钱。 -items.upgradeblobyellow.name=黄色强化精华 -items.upgradeblobyellow.ac_inscribe=使用 -items.upgradeblobyellow.desc=这一坨东西是吞星花的代谢产物。它可以用于强化装备,也可以用来卖钱。 - -items.whistle.ac_call=阅读 -items.whistle.name=灵魂图鉴 -items.whistle.message=待编写... -items.whistle$wndwhistle.title=灵魂图鉴 -items.whistle$wndwhistle.desc=待编写... -items.whistle.desc=一本意义不明的图鉴 - -### new stuff -items.misc.ankhshield.name=神圣护盾 -items.misc.ankhshield.charge=护盾当前充能数%d,充能上限为%d。 -items.misc.ankhshield.ac_defence=防卫 -items.misc.ankhshield.rest=充能不足。 -items.misc.ankhshield.desc=这个世界的缔造者为英雄准备的神圣道具。使用它将对所有视野范围内的敌人施加一个停滞效果。 - -items.misc.jumph.name=猎手之鞋 -items.misc.jumph.ac_jump=跳跃 -items.misc.jumph.desc=在自然母亲的指导下,猎手可以在跳跃同时攻击视野范围内的多个敌人。 - -items.misc.jumpm.name=法师之鞋 -items.misc.jumpm.ac_jump=跳跃 -items.misc.jumpm.desc=在高塔中法师曾专心研究魔法,使得他可以进行短距离的闪烁并有几率获得额外的奥术专注。 - -items.misc.jumpr.name=盗贼之鞋 -items.misc.jumpr.ac_jump=跳跃 -items.misc.jumpr.desc=盗贼并没有训练自己的跳跃能力,使得盗贼跳跃距离很短,但他敏捷的身手可以使他拥有短时间的滞空效果并有几率使其无法被敌人发现。 - -items.misc.jumpshoes.name=弹跳鞋 -items.misc.jumpshoes.charge=鞋子当前充能数%d,充能上限为%d。 -items.misc.jumpshoes.ac_jump=跳跃 -items.misc.jumpshoes.prompt=选择跳跃的目的地点。 -items.misc.jumpshoes.rest=请先休息后再使用。 -items.misc.jumpshoes.desc=来自其他动作游戏里的跳跃动作,用于跳过各种坑。根据职业不同提供的额外效果也不同。 - -items.misc.jumpw.name=战士之鞋 -items.misc.jumpw.ac_jump=跳跃 -items.misc.jumpw.desc=战士的训练当中包含冲锋训练,这使得战士可以跳得更远,并有几率踩晕目标地点范围内的单位。 - -items.misc.jumpp.name=演员之鞋 -items.misc.jumpp.ac_jump=跳跃 -items.misc.jumpp.desc=为了成为偶像,演员时刻注意自己的节奏,这使得演员可以在跳跃中进入自己的节奏,并有几率减少自己受到的下一次攻击。 - -items.misc.jumps.name=星兵之鞋 -items.misc.jumps.ac_jump=跳跃 -items.misc.jumps.desc=作为混乱战争中幸存下来的人类之一,星兵可以在跳跃中快速进行子弹装填,并且有几率为自己的下一次攻击积蓄能量。 - -items.misc.jumpf.name=信徒之鞋 -items.misc.jumpf.ac_jump=跳跃 -items.misc.jumpf.desc=为了方便在不同种族不同信仰的村落之间经商,信徒可以随时准备一块隐蔽的地方重新装饰自己。同时有几率发现一些特别的植物。 - -items.misc.attackshoes.name=水管工皮鞋 -items.misc.attackshoes.ac_jump=跳跃 -items.misc.attackshoes.desc=这个鞋子不需要充能,但跳跃距离恒定且消耗额外的回合。落地后对周围敌人造成伤害。\n我提醒一下,不要踩到刺龟! - -items.misc.shovel.name=铁铲 -items.misc.shovel.ac_use=破坏 -items.misc.shovel.ac_build=造墙 -items.misc.shovel.not_wall=周围没有墙。 -items.misc.shovel.break=现在铁铲没耐久了。 -items.misc.shovel.charge=铁铲当前耐久数%d,耐久上限为%d。 -items.misc.shovel.desc=在大逃狱事件当中,演员发现了这把铲子。使用这把铲子可以轻松破坏周围的墙壁。\n破坏墙壁将消耗铲子的耐久,但这个耐久会随时间恢复。 - -items.misc.bshovel.name=卢老爷的奇迹按钮 -items.misc.bshovel.ac_use=使用 -items.misc.bshovel.break=充能不够 -items.misc.bshovel.charge=按钮当前耐久数%d,耐久上限为%d。 -items.misc.bshovel.desc=一个奇怪的按钮,使用后会发出好听女性的机械声音,并给与奇怪的效果。\n使用的同时会破坏四周墙壁。\n按钮四周刻了奇怪的文字,像什么17张牌,卡布奇诺,牛逼等等。 - -items.misc.bshovel.mob=锁头已激活 -items.misc.bshovel.haste=加速已激活 -items.misc.bshovel.item=透视已激活 -items.misc.bshovel.gold=富有已激活 -items.misc.bshovel.heal=锁血已激活 -items.misc.bshovel.mech=无敌已激活 - -items.misc.potionofmage.name=奇迹烧瓶 -items.misc.potionofmage.ac_use=施放 -items.misc.potionofmage.ac_drink=饮用 -items.misc.potionofmage.ac_shattered=泼洒 -items.misc.potionofmage.prompt=选择要瞄准的地方 -items.misc.potionofmage.break=现在烧瓶里啥都没有。 -items.misc.potionofmage.not_mob=这超出了烧瓶的作用范围。 -items.misc.potionofmage.charge=烧瓶当前质量为%d,质量上限为%d。 -items.misc.potionofmage.desc=法师多年研究结果之一,可以对自身使用来施加增益效果,也可以泼洒出去造成减益效果。 - -items.misc.gunofsoldier.name=脉冲手枪 -items.misc.gunofsoldier.ac_use=射击 -items.misc.gunofsoldier.prompt=选择要瞄准的地方 -items.misc.gunofsoldier.not_mob=那里没有敌人。 -items.misc.gunofsoldier.break=现在没电了。 -items.misc.gunofsoldier.not=你不能选择那个目标。 -items.misc.gunofsoldier.charge=手枪当前充能数%d,充能上限为%d。 -items.misc.gunofsoldier.desc=脉冲手枪是未来的先进科学产物,会对目标敌人造成基于其受伤程度的惊人的伤害。 - -items.misc.mkbox.name=蘑菇王国的问号箱 -items.misc.mkbox.ac_use=顶一下 - -items.misc.mkbox.star=无敌星。 -items.misc.mkbox.flowerf=火焰花。 -items.misc.mkbox.floweri=冰冻花。 -items.misc.mkbox.mushroom=大蘑菇。 -items.misc.mkbox.coin=大金币。 -items.misc.mkbox.1up=1up。 -items.misc.mkbox.hammer=简易锤子。 -items.misc.mkbox.mbox=怪物箱 - -items.misc.mkbox.need_gold=你需要100金币来使用它。 -items.misc.mkbox.charge=剩余刷新时间%d。 -items.misc.mkbox.desc=一个装了各种杂物的箱子,顶一下就会有好东西出来。\n箱子里面多数是蘑菇啦,还有金币,小锤子和花。1up和无敌星非常少见。-某个不愿透露姓名的奇诺比奥。 - -items.misc.missileshield.name=神木圆盾 -items.misc.missileshield.ac_cast=扔出 -items.misc.missileshield.ac_shield=防御 -items.misc.missileshield.rest=体力不足 -items.misc.missileshield.prompt=选择要瞄准的地方 -items.misc.missileshield.not=无法对该目标使用 -items.misc.missileshield.not_mob=无法找到目标 -items.misc.missileshield.desc=一块普通的木质盾牌,上面有一些刮痕。\n这块盾牌被打磨得十分光滑,可以将其投掷出去,消耗体力并击晕敌人。\n也可以将其举起,以减少受到的伤害。 -items.misc.missileshield.damage=这块盾牌可以造成_%d - %d 点伤害_,并对boss造成更高的伤害。 -items.misc.missileshield.charge=剩余体力%d / %d。 - -items.misc.attackshield.name=隆的波动拳 -items.misc.attackshield.ac_cast=释放 -items.misc.attackshield.ac_blast=暴发 -items.misc.attackshield.rest=体力不足 -items.misc.attackshield.prompt=选择要瞄准的地方 -items.misc.attackshield.not=无法对该目标使用 -items.misc.attackshield.not_mob=无法找到目标 -items.misc.attackshield.desc=一种古老的武术,可以在攻击的同时积蓄能量,并将这些能量发射出去。生命越充沛的敌人受到的伤害就越高。当能量聚集满并释放时,使用者将获得额外的力量,并且在空手状态下力量更强。 -items.misc.attackshield.damage=这块道具可以造成_%d - %d 点伤害_。 -items.misc.attackshield.charge=剩余体力%d / %d。 - -items.misc.copyball.name=侵蚀核心 -items.misc.copyball.ac_use=施放 -items.misc.copyball.prompt=选择要瞄准的地方 -items.misc.copyball.break=精华不足。 -items.misc.copyball.charge=精华当前数量为%d,数量上限为%d。 -items.misc.copyball.desc=史莱姆可以在攻击中吸收精华,并可以利用精华来完全控制或扰乱一名敌人。\n系统并不推荐你使用这个,因为可能使这个测试慢到爆炸。 - -items.misc.gnollmark.name=仪式面具 -items.misc.gnollmark.ac_light=光明仪式 -items.misc.gnollmark.ac_dark=黑暗仪式 -items.misc.gnollmark.ac_earth=自然仪式 -items.misc.gnollmark.break=准备不妥。 -items.misc.gnollmark.charge=准备完成度当前为%d,完成度上限为%d。 -items.misc.gnollmark.desc=豺狼人萨满所佩戴的面具,用于仪式准备或者树立地位。在释放法杖后准备度会上升。\n光明仪式会大幅度提升使用者的物理力量,但相对的,使用者的奥术力量会被禁止。黑暗仪式则相反。\n自然仪式将从自然中吸取能量,提升使用者的抗击能力。 - -items.misc.mechpocket.name=机械口袋 -items.misc.mechpocket.ac_use=使用 -items.misc.mechpocket.desc=一个充满神秘感的未来口袋,但里面装的东西有限,并且会一次性全倒出来。\n整理一下比较好-野比大雄 - -items.misc.skillofatk.name=力量之书 -items.misc.skillofatk.ac_read=阅读 -items.misc.skillofatk.desc=看上去是一张普通的羊皮卷,但上面记载了超高的进攻技巧。 -items.misc.skillofatk.skillup=你感觉你的命中能力提升了。 - -items.misc.skillofdef.name=敏捷之书 -items.misc.skillofdef.ac_read=阅读 -items.misc.skillofdef.desc=看上去是一张普通的羊皮卷,但上面记载了超高的闪避技巧。 -items.misc.skillofdef.skillup=你感觉你的闪避能力提升了。 - -items.misc.skillofmig.name=智力之书 -items.misc.skillofmig.ac_read=阅读 -items.misc.skillofmig.desc=看上去是一张普通的羊皮卷,但上面记载了超高的施法技巧。 -items.misc.skillofmig.skillup=你感觉你的魔法能力提升了。 - -items.misc.demoscroll.name=恶魔契约 -items.misc.demoscroll.ac_read=阅读 -items.misc.demoscroll.desc=一张用鲜血达成的契约,可以用生命来换取更强的力量。\n每升一级便可额外使用一次。 -items.misc.demoscroll.hitup=你感觉你的命中能力提升了。 -items.misc.demoscroll.evaup=你感觉你的闪避能力提升了。 -items.misc.demoscroll.migup=你感觉你的魔法能力提升了。 -items.misc.demoscroll.strup=你感觉你的力量提升了。 -items.misc.demoscroll.htdown=你感觉你的生命上限降低了。 - -items.misc.undeadbook.name=亡灵圣经 -items.misc.undeadbook.ac_read=阅读 -items.misc.undeadbook.ac_bless=祈祷 -items.misc.undeadbook.desc=一本用死灵语书写的圣经。为什么亡灵也信圣经? \n借由亡灵圣经的力量,阅读者可以消耗一定量的生命能量,从而从死亡的单位中以露珠的形式提取能量。\n使用者也可以向亡灵圣经祈祷,若使用者的经历得到其神明的赏识,神明会以不死的奥秘回馈使用者。 -items.misc.undeadbook.bless=圣经以露珠回应你的阅读,但你感觉你的身体失去了什么。 -items.misc.undeadbook.1up=圣经以复活十字架回应你的祈祷。 - -items.misc.luckybadge.name=幸运胸章 -items.misc.luckybadge.desc=购买房产后商人老板送你的纪念品之一,据说可以小幅度提升佩戴者的运气,可以被强化。 - -items.misc.fourclover.name=四叶薄荷项链 -items.misc.fourclover.desc=这个四叶草形状的项链能小幅度提升佩戴者升级时的增益,并提供额外的附魔触发几率。 - -items.misc.faithsign.name=信标盒 -items.misc.faithsign.ac_demon=恶魔派系 -items.misc.faithsign.ac_human=神圣派系 -items.misc.faithsign.ac_mech=机械派系 -items.misc.faithsign.ac_life=自然派系 -items.misc.faithsign.ac_balance=平衡派系 -items.misc.faithsign.desc=装有不同信仰的标志的盒子,在必要时可以用于解决争端。 - -items.misc.savagehelmet.name=蛮族头盔 -items.misc.savagehelmet.desc=为狩猎年兽专门准备的头盔,有几率可以减少受到的伤害,并提升相应数量的攻击力。当装备这件头盔时,这个几率提升至100%。 - -items.misc.healbag.name=医疗箱 -items.misc.healbag.ac_heal=群体治疗 -items.misc.healbag.ac_cook=随机调制 -items.misc.healbag.needcharge=需要充能 -items.misc.healbag.desc=为狩猎年兽专门准备的医疗箱,可以很轻松恢复使用者的生命值,可以作用于周围单位。也可以随机调制一瓶药水、药丸或食物。 - -items.misc.rangebag.name=飞镖袋 -items.misc.rangebag.ac_buy=购买 -items.misc.rangebag.need_gold=你需要金币来购买。 -items.misc.rangebag.desc=为狩猎年兽专门准备的袋子,只要花点小钱就能购买投掷武器。当装备时,击杀怪物有几率掉落投掷武器。 - -items.misc.horsetotem.name=赤兔图腾 -items.misc.horsetotem.desc=为狩猎年兽专门准备的图腾,有几率可以提高伤害,并提升移动速度。当装备这件图腾时,这个伤害提升几率提升至100%。 - -items.misc.dancelion.name=舞狮手册 -items.misc.dancelion.ac_spin=旋身 -items.misc.dancelion.ac_stand=力定 -items.misc.dancelion.ac_back=退守 -items.misc.dancelion.ac_rush=猛冲 -items.misc.dancelion.ac_jump=腾跃 -items.misc.dancelion.desc=为狩猎年兽专门准备的手册,在充满能量后能从舞蹈片段中选择一段进行模仿。 - -items.playericon.name=玩家之证 -items.playericon.thank4play=感谢你参加bossrush测试,这个是测试奖励。 -items.playericon.desc=通过还没完成的bossrush的奖励,看上去和没完成的bossrush一样粗糙。 -items.weapon.melee.special.testweapon.name=测试武器 -items.weapon.melee.special.testweapon.desc=测试武器 - -items.elevator.name=社会升降器 -items.elevator.desc=曾经有一位疯狂的古神信徒。他得到了古神的奖励,被封印在这件上流社会的服装中。\n这件道具可以使你自由穿梭于这个地牢的前25个区域。 -items.elevator.ac_up=上楼 -items.elevator.ac_down=下楼 - -items.soulcollect.name=灵魂囚禁石 -items.soulcollect.desc=不敢想象otiluck竟会被这种东西困住。只要破坏掉就可以了。 -items.soulcollect.ac_break=破坏 -items.soulcollect.win=谢谢你。虽然不知道你长啥样,但是还是我们小镇见吧。 - -items.pocketballfull.name=容魂灯 -items.pocketballfull.desc=一只灵魂被保存在里面。使用它可以放出这只灵魂,但首先你要保证当前你没有宠物。警告:刚放出的灵魂十分无力,仅在上下楼或者传送后才会恢复原样。 -items.pocketballfull.ac_use=使用 - -items.powerhand.name=力量之手 -items.powerhand.desc=我们对这样道具一无所知。 -items.powerhand.desc_stones=已经镶嵌了%d枚宝石。 -items.powerhand.prompt=选择要镶嵌的宝石。 -items.powerhand.ac_add=镶嵌 -items.powerhand.ac_use=使用 -items.powerhand.nothing=什么也没发生 -items.powerhand.already_fed=这种宝石已被镶嵌。 -items.powerhand.absorb_stone=你把这枚宝石镶嵌在这个手套上。 - -items.saveyourlife.name=紧急离线装置 -items.saveyourlife.desc=这是什么,这不应该在非测试下出现。 -items.saveyourlife.ac_save=离线 - -items.transmutationball.name=转换笼 -items.transmutationball.prompt=选择要转换的物品。 -items.transmutationball.desc=转换笼的果子,可以用于转换道具。 -items.transmutationball.ac_use=使用 - -items.upgradeeatball.name=吞星花 -items.upgradeeatball.prompt=选择要吞星的物品。 -items.upgradeeatball.desc=吞星花的果子,可以用于提炼道具的精华。 -items.upgradeeatball.ac_use=使用 - -items.flag.name=军旗 -items.flag.desc=祝贺中华人民共和国成立70周年。 - - diff --git a/resources/com/hmdzl/spspd/change/messages/levels/levels.properties b/resources/com/hmdzl/spspd/change/messages/levels/levels.properties deleted file mode 100644 index 8eee1a84..00000000 --- a/resources/com/hmdzl/spspd/change/messages/levels/levels.properties +++ /dev/null @@ -1,287 +0,0 @@ -###features -levels.features.alchemypot.select_seed=Select a seed to throw -levels.features.alchemypot.pot=Alchemy Pot -levels.features.alchemypot.fruit=Cook a Blandfruit -levels.features.alchemypot.potion=Brew a Potion -levels.features.alchemypot.options=Do you want to cook a Blandfruit with a seed, or brew a Potion from seeds? - -levels.features.chasm.chasm=Chasm -levels.features.chasm.yes=Yes, I know what I'm doing -levels.features.chasm.no=No, I changed my mind -levels.features.chasm.jump=Do you really want to jump into the chasm? You can probably die. -levels.features.chasm.ondeath=You fell to death... - -levels.features.sign.dead_end=What are you doing here?! -levels.features.sign.tip_1=Welcome to this world. I'm your guide. If this is your first time play this game, you should open your backpack and use that random soul. Pet is strong at the game start, but there are other stronger pet. Try to summon them and feed pet food to them. -levels.features.sign.tip_2=This world is based on magic and time. Check your time and survive in the evening. -levels.features.sign.tip_3=You can create delicious foods by cooking in alchemy. Just make sure you add right number of meat, vegetable, ration, fruit and water. -levels.features.sign.tip_4=Different with other world, upgrade items won't make them lighter. -levels.features.sign.tip_5=Note to all sewer maintenance & cleaning crews: TURN BACK NOW. Some sort of sludge monster has made its home here and several crews have been lost trying to deal with it.\n\nApproval has been given to seal off the lower sewers, this area has been condemned, LEAVE NOW. -levels.features.sign.tip_6=Pixel-Mart - all you need for successful adventure! Also a sweet home is on sell now. -levels.features.sign.tip_7=Some test types made by tower are sold in each shop. You can combine two stone ore in alchemy to create a heavy ammo. Also you can try to combine seed with stone ore. -levels.features.sign.tip_8=Being hungry doesn't hurt, but starving does hurt, and it will reduce your power. -levels.features.sign.tip_9=There are lots of hidden doors, traps and badly weather in this dungeon. Be careful. -levels.features.sign.tip_10=Warning, here is military forbidden zone! -levels.features.sign.tip_11=Pixel-Mart. Spend money. Live longer. Also sell a ticket. -levels.features.sign.tip_12=Weapons is different. Find one you like and put all upgrade into it. There three type of armor: light armor, heavy armor, and normal armor. -levels.features.sign.tip_13=Make sure you have more buffs and less debuffs. -levels.features.sign.tip_14=Bombs and dart can only use once. Use it wisely. -levels.features.sign.tip_15=DANGER! Heavy machinery can cause injury, loss of limbs or death! -levels.features.sign.tip_16=Pixel-Mart. A safer life in dungeon. -levels.features.sign.tip_17=There are more than 30 easter eggs in this game. Try to find them and collect 16 of them. -levels.features.sign.tip_18=It will add doctor mob in next version, if I remember this. -levels.features.sign.tip_19=With your adventure, there will be more and more people join that downtown. -levels.features.sign.tip_20=No weapons allowed in the presence of His Majesty! -levels.features.sign.tip_21=Pixel-Mart. Special prices for demon hunters! -levels.features.sign.tip_22=sadjslkabfjsdkafndalknfadkl -levels.features.sign.tip_23=fgkakfossekfsaldpwldapdl -levels.features.sign.tip_24=dfsadaidjpsiofjisrjaldkfqafk -levels.features.sign.burn=As you try to read the sign it bursts into greenish flames. -levels.features.sign.pit_message=Note to self: Always leave a teleport scroll in the vault. - - -###painters -levels.painters.massgravepainter$bones.name=Mass grave -levels.painters.massgravepainter$bones.desc=bones litter the floor, what happened here? - -levels.painters.ritualsitepainter$ritualmarker.name=Ritual marker -levels.painters.ritualsitepainter$ritualmarker.desc=A painted marker for some dark ritual. Candles are usually placed on the four corners. - -levels.painters.weakfloorpainter$hiddenwell.name=Distant well -levels.painters.weakfloorpainter$hiddenwell.desc=You can just make out a well in the depths below, perhaps there is something down there? - - -###traps -levels.traps.alarmtrap.name=Alarm trap -levels.traps.alarmtrap.alarm=The trap emits a piercing sound that echoes throughout the dungeon! -levels.traps.alarmtrap.desc=This trap seems to be tied to a loud alarm mechanism. Triggering it will likely alert everything on the level - -levels.traps.blazingtrap.name=Blazing trap -levels.traps.blazingtrap.desc=Stepping on this trap will ignite a powerful chemical mixture, setting a wide area ablaze. - -levels.traps.chillingtrap.name=Chilling trap -levels.traps.chillingtrap.desc=When activated, chemicals in this trap will trigger a snap-frost at its location. - -levels.traps.confusiontrap.name=Confusion gas trap -levels.traps.confusiontrap.desc=Triggering this trap will set a cloud of confusion gas loose within the immediate area. - -levels.traps.cursingtrap.name=Cursing trap -levels.traps.cursingtrap.curse=Your worn equipment becomes cursed! -levels.traps.cursingtrap.desc=This trap contains the same malevolent magic found in cursed equipment. Triggering it will curse all worn items, and all items in the immediate area. - -levels.traps.disarmingtrap.name=Disarming trap -levels.traps.disarmingtrap.disarm=Your weapon is teleported away! -levels.traps.disarmingtrap.desc=This trap contains very specific teleportation magic, which will warp the weapon of its victim to some other location. - -levels.traps.disintegrationtrap.name=Disintegration trap -levels.traps.disintegrationtrap.one=The trap disintegrates your %s! -levels.traps.disintegrationtrap.some=The trap disintegrates some of your %s! -levels.traps.disintegrationtrap.ondeath=You were killed by the disintegration trap... -levels.traps.disintegrationtrap.desc=When triggered, this trap will lance the target with beams of disintegration, dealing significant damage and destroying items. - -levels.traps.distortiontrap.name=Distortion trap -levels.traps.distortiontrap.desc=Built from strange magic of unknown origin, this trap will shift and morph the world around you. - -levels.traps.explosivetrap.name=Explosive trap -levels.traps.explosivetrap.desc=This trap contains some powdered explosive and a trigger mechanism. Activating it will cause an explosion in the immediate area. - -levels.traps.firetrap.name=Fire trap -levels.traps.firetrap.desc=Stepping on this trap will ignite a chemical mixture, setting the immediate area aflame. - -levels.traps.flashingtrap.name=Flashing trap -levels.traps.flashingtrap.desc=On activation, this trap will ignite a potent flashing powder stored within, temporarily blinding and crippling its victim. - -levels.traps.flocktrap.name=Flock trap -levels.traps.flocktrap.desc=Perhaps a joke from some amateur mage, triggering this trap will create a flock of magical sheep. - -levels.traps.frosttrap.name=Frost trap -levels.traps.frosttrap.desc=When activated, chemicals in this trap will trigger a powerful snap-frost at its location. - -levels.traps.grimtrap.name=Grim trap -levels.traps.grimtrap.ondeath=You were killed by the blast of a grim trap... -levels.traps.grimtrap.desc=Extremely powerful destructive magic is stored within this trap, enough to instantly kill all but the healthiest of heroes. Triggering it will send a ranged blast of lethal magic towards the nearest character. - -levels.traps.grippingtrap.name=Gripping trap -levels.traps.grippingtrap.desc=Triggering this trap will send barbed claws along the ground, damaging the victims feet and rooting them in place. - -levels.traps.guardiantrap.name=Guardian trap -levels.traps.guardiantrap.alarm=The trap emits a piercing sound that echoes throughout the dungeon! -levels.traps.guardiantrap.desc=This trap is tied to a strange magical mechanism, which will summon guardians and alert all enemies on the floor. -levels.traps.guardiantrap$guardian.name=summoned guardian -levels.traps.guardiantrap$guardian.desc=This blue apparition seems to be a summoned echo of one of the dungeon's stone guardians.\n\nWhile the statue itself is almost incorporeal, the _%s,_ it's wielding, looks real. - -levels.traps.lightningtrap.name=Lightning trap -levels.traps.lightningtrap.ondeath=You were killed by a discharge of a lightning trap... -levels.traps.lightningtrap.desc=A mechanism with a large amount of energy stored into it. Triggering the trap will discharge that energy into whatever activates it. - -levels.traps.oozetrap.name=Ooze trap -levels.traps.oozetrap.desc=This trap will splash out caustic ooze when activated, which will burn until it is washed away. - -levels.traps.paralytictrap.name=Paralytic gas trap -levels.traps.paralytictrap.desc=Triggering this trap will set a cloud of paralytic gas loose within the surrounding area. - -levels.traps.pitfalltrap.name=Pitfall trap -levels.traps.pitfalltrap.desc=This pressure plate rests atop a fairly weak floor, and will likely collapse into a pit if it is pressed. - -levels.traps.poisontrap.name=Poison trap -levels.traps.poisontrap.desc=A small dart-blower must be hidden nearby, activating this trap will cause it to shoot a poisoned dart at you. - -levels.traps.rockfalltrap.name=Rockfall trap -levels.traps.rockfalltrap.ondeath=You were crushed by the rockfall trap... -levels.traps.rockfalltrap.desc=This trap is connected to a series of loose rocks above, triggering it will cause them to come crashing down. - -levels.traps.speartrap.name=Spear trap -levels.traps.speartrap.ondeath=You were skewered by the spear trap... -levels.traps.speartrap.desc=The classic spear trap, primitive but effective. Due to their simple nature, these traps can activate many times without breaking. - -levels.traps.summoningtrap.name=Summoning trap -levels.traps.summoningtrap.desc=Triggering this trap will summon a number of this area's monsters to this location. - -levels.traps.teleportationtrap.name=Teleportation trap -levels.traps.teleportationtrap.desc=Whatever triggers this trap will be warped to some other location on this floor. - -levels.traps.toxictrap.name=Toxic gas trap -levels.traps.toxictrap.desc=Triggering this trap will set a cloud of toxic gas loose within the surrounding area. - -levels.traps.venomtrap.name=Venom gas trap -levels.traps.venomtrap.desc=Triggering this trap will set a cloud of deadly venom gas loose within the immediate area. - -levels.traps.warpingtrap.name=Warping trap -levels.traps.warpingtrap.desc=Whatever triggers this trap will be warped to some other location in the dungeon. - -levels.traps.weakeningtrap.name=Weakening trap -levels.traps.weakeningtrap.desc=Dark magic in this trap sucks the energy out of anything that comes into contact with it. - -levels.traps.worntrap.name=Worn out trap -levels.traps.worntrap.nothing=Nothing happens... -levels.traps.worntrap.desc=Due to age and possibly poor workmanship, it looks like this trap has worn to the point where it won't do anything when triggered. - -levels.traps.shocktrap.name=Shock trap -levels.traps.shocktrap.desc=A mechanism with a large amount of energy stored into it. Triggering this trap will discharge that energy into a field around it. - -levels.traps.stormtrap.name=Storm trap -levels.traps.stormtrap.desc=A mechanism with a massive amount of energy stored into it. Triggering this trap will discharge that energy into a large electrical storm. - -levels.traps.activateportaltrap.name=activate portal trap -levels.traps.changesheeptrap.name=box change trap -levels.traps.fleecingtrap.name=fleecing trap -levels.traps.fleecingtrap.destroy=This trap destory your armor! -levels.traps.heapgentrap.name=reword switch -levels.traps.sokobanportaltrap.name=portal - - -###levels -levels.bossrushlevel.water_name=Strange water -levels.bossrushlevel.grass_name=Some magic dust -levels.bossrushlevel.high_grass_name=Some magic crystal -levels.bossrushlevel.statue_sp_name=Berg crystal -levels.bossrushlevel.water_desc=Very strange water -levels.bossrushlevel.statue_sp_desc=Yello crystal. That is beautiful - -levels.caveslevel.grass_name=Fluorescent moss -levels.caveslevel.high_grass_name=Fluorescent mushrooms -levels.caveslevel.water_name=Freezing cold water. -levels.caveslevel.entrance_desc=The ladder leads up to the upper depth. -levels.caveslevel.exit_desc=The ladder leads down to the lower depth. -levels.caveslevel.high_grass_desc=Huge mushrooms block the view. -levels.caveslevel.wall_deco_desc=A vein of some ore is visible on the wall. Gold? -levels.caveslevel.bookshelf_desc=Who would need a bookshelf in a cave? - -levels.citylevel.water_name=Suspiciously colored water -levels.citylevel.high_grass_name=High blooming flowers -levels.citylevel.entrance_desc=A ramp leads up to the upper depth. -levels.citylevel.exit_desc=A ramp leads down to the lower depth. -levels.citylevel.deco_desc=Several tiles are missing here. -levels.citylevel.sp_desc=Thick carpet covers the floor. -levels.citylevel.statue_desc=The statue depicts some dwarf standing in a heroic stance. -levels.citylevel.bookshelf_desc=The rows of books on different disciplines fill the bookshelf. - -levels.hallslevel.water_name=Cold lava -levels.hallslevel.grass_name=Embermoss -levels.hallslevel.high_grass_name=Emberfungi -levels.hallslevel.statue_name=Pillar -levels.hallslevel.water_desc=It looks like lava, but it's cold and probably safe to touch. -levels.hallslevel.statue_desc=The pillar is made of real humanoid skulls. Awesome. -levels.hallslevel.bookshelf_desc=Books in ancient languages smoulder in the bookshelf. - -levels.level.hidden_plate=A hidden pressure plate clicks! -levels.level.chasm_name=Chasm -levels.level.floor_name=Floor -levels.level.grass_name=Grass -levels.level.water_name=Water -levels.level.wall_name=Wall -levels.level.closed_door_name=Closed door -levels.level.open_door_name=Open door -levels.level.entrace_name=Depth entrance -levels.level.exit_name=Depth exit -levels.level.embers_name=Embers -levels.level.locked_door_name=Locked door -levels.level.pedestal_name=Pedestal -levels.level.barricade_name=Barricade -levels.level.high_grass_name=High grass -levels.level.locked_exit_name=Locked depth exit -levels.level.unlocked_exit_name=Unlocked depth exit -levels.level.sign_name=Sign -levels.level.well_name=Well -levels.level.empty_well_name=Empty well -levels.level.statue_name=Statue -levels.level.statue_ssp_name=Air wall -levels.level.tent_name=Tent -levels.level.bed_name=bed -levels.level.inactive_trap_name=Triggered trap -levels.level.bookshelf_name=Bookshelf -levels.level.alchemy_name=Alchemy pot -levels.level.wool_rug_name=Wool rug -levels.level.fleecing_trap_name=fleecing trap -levels.level.change_sheep_trap_name=change box trap -levels.level.sokoban_item_reveal_name=item switch -levels.level.sokoban_port_switch_name=Portal switch -levels.level.port_well_name=Portal -levels.level.trap_air_name=Chasm -levels.level.default_name=??? - -levels.level.shrub_name=Overgrown Shrub - -levels.level.shrub_desc=Dense srubs block the view. - -levels.level.chasm_desc=You can't see the bottom. -levels.level.water_desc=In case of burning step into the water to extinguish the fire. -levels.level.entrance_desc=Stairs lead up to the upper depth. -levels.level.exit_desc=Stairs lead down to the lower depth. -levels.level.embers_desc=Embers cover the floor. -levels.level.high_grass_desc=Dense vegetation blocks the view. -levels.level.locked_door_desc=This door is locked, you need a matching key to unlock it. -levels.level.locked_exit_desc=Heavy bars block the stairs leading down. -levels.level.barricade_desc=The wooden barricade is firmly set but has dried over the years. Might it burn? -levels.level.sign_desc=You can't read the text from here. -levels.level.inactive_trap_desc=The trap has been triggered before and it's not dangerous anymore. -levels.level.statue_desc=Someone wanted to adorn this place, but failed, obviously. -levels.level.statue_ssp_desc=Looks like a trap, but it is air wall. -levels.level.tent_desc=A small blue tent. -levels.level.bed_desc=A soft and comfortable bed. -levels.level.alchemy_desc=Drop some seeds here to cook a potion. -levels.level.wool_rug_desc=It was destroyed to a few debris. -levels.level.fleecing_trap_desc=This trap can destory everything. Push a box into it. -levels.level.change_sheep_trap_desc=This trap can change one box to another box. -levels.level.sokoban_item_reveal_desc=If you push on box in here, something will drop in this floor. -levels.level.sokoban_port_switch_desc=This is a portal switch. -levels.level.port_well_desc=This is a portal. -levels.level.trap_air_desc=It will deal damage to everything it touch. -levels.level.empty_well_desc=The well has run dry. -levels.level.default_desc=Nothing interesting here. - -levels.prisonlevel.water_name=Dark cold water. -levels.prisonlevel.empty_deco_desc=There are old blood stains on the floor. -levels.prisonlevel.bookshelf_desc=This is probably a vestige of a prison library. Might it burn? - -levels.sewerlevel.water_name=Murky water -levels.sewerlevel.empty_deco_desc=Wet yellowish moss covers the floor. -levels.sewerlevel.bookshelf_desc=The bookshelf is packed with cheap useless books. Might it burn? - -levels.level.crabbosslevel.water_name=Crystal clear pools -levels.level.crabbosslevel.high_grass_name=Seaweed Tangles -levels.level.crabbosslevel.deco_desc=Small crabs and shell fish litter the sandy floor. -levels.level.crabbosslevel.statue_desc=A large sea shell is propped up in the sand. -levels.level.crabbosslevel.bookshelf_desc=Mostly beach reads. - -levels.level.fieldlevel.emptydeco_desc=The grass is worn away to reveal bedrock. diff --git a/resources/com/hmdzl/spspd/change/messages/levels/levels_zh.properties b/resources/com/hmdzl/spspd/change/messages/levels/levels_zh.properties deleted file mode 100644 index a730afb6..00000000 --- a/resources/com/hmdzl/spspd/change/messages/levels/levels_zh.properties +++ /dev/null @@ -1,287 +0,0 @@ -###features -levels.features.alchemypot.select_seed=选择一个种子放进去 -levels.features.alchemypot.pot=炼药锅 -levels.features.alchemypot.fruit=煮无味果 -levels.features.alchemypot.potion=酿造药水 -levels.features.alchemypot.options=你想用种子煮食无味果,还是酿造药水?\n\n如果你选择煮无味果,则你可以将无味果和一个种子合成为一个具有特殊功能的可食用果;如果选择酿造药水,则是花费一定数量的种子来合成一瓶药水。 - -levels.features.chasm.chasm=裂缝 -levels.features.chasm.yes=是的,我知道我在做什么 -levels.features.chasm.no=不,我改主意了 -levels.features.chasm.jump=你确定要跳入洞口中?你可能会摔死。 -levels.features.chasm.ondeath=你落地过猛摔死了…… - -levels.features.sign.dead_end=你在这里干嘛?! -levels.features.sign.tip_1=欢迎来到这个地牢。如果你是一名新手的话,请打开背包,使用随机灵魂。那样你就能获得你的第一只宠物。宠物的实力是有限的。如果你并不想提升你自己的实力,那么你需要一只很强的宠物。 -levels.features.sign.tip_2=时间总是在不经意之间流逝。在状态栏里面确认当前时间。不要忘了在夜晚准备足够的光源。 -levels.features.sign.tip_3=肉是肉,蘑菇是蔬菜,口粮是主食,梅果是水果。再加上一些由露珠合成的水,你应该能烧出各种各样的美食。 -levels.features.sign.tip_4=升级装备并不会让它们变轻,但是能让它们更强。 -levels.features.sign.tip_5=所有的下水道维护及清洁人员:_立即离开这里_。某种泥浆类怪物将这片区域当作自己的巢穴,许多特遣队员已经死在它的手里。\n\n下层下水道已被批准并彻底封锁,这一部分已被停用,_请立即离开_。 -levels.features.sign.tip_6="像素商店"——为成功的探险人士提供一切所需。同时,出售一间小屋! -levels.features.sign.tip_7=高塔已将枪械投入测试。如果你想的话,你可以把原石和原石炼制成重铅弹。当然你也可以试试其他配方,比如原石和种子什么的。 -levels.features.sign.tip_8=极度饥饿会让你受伤,但是只要是饥饿就会使你得攻击变得无力。 -levels.features.sign.tip_9=地牢里面隐藏着大量的陷阱和暗门,以及一些极端的气候环境。不要冲得太快。 -levels.features.sign.tip_10=警告,你现在正处于军事保密区,请尽快离开。 -levels.features.sign.tip_11="像素商店"——花更多的钱,走更远的路。出售观光游票。 -levels.features.sign.tip_12=一般来说,武器会自带一个特殊效果。这种特殊效果在低阶武器上表现得更加明显。而防具分成轻,常规,重三种。不同防具提供的额外效果不同。 -levels.features.sign.tip_13=有些状态会互相抵消,而有些状态会互相加强。确保你处于最强状态以便战胜其他敌人。 -levels.features.sign.tip_14=炸弹和飞镖都是一次性的消耗品。明智地使用它们。 -levels.features.sign.tip_15=如果生产线遭到破坏,防御措施就会启动,源源不断的猎杀机器人和危险巨械会肃清入侵者! -levels.features.sign.tip_16="像素集市"——让你在地牢中更加安全。 -levels.features.sign.tip_17=这里有将近30种武器,除了常规16种武器以外还有一些特殊武器。希望你能发现它们。 -levels.features.sign.tip_18=有没有想过如果有医生出现在怪物群中会怎样? -levels.features.sign.tip_19=小镇一直在变化,和你一样。 -levels.features.sign.tip_20=矮人圣地不容侵犯,国王必须被守护! -levels.features.sign.tip_21="像素集市"——为恶魔猎手提供的特价优惠!展示特殊的非卖品! -levels.features.sign.tip_22=sadjslkabfjsdkafndalknfadkl -levels.features.sign.tip_23=fgkakfossekfsaldpwldapdl -levels.features.sign.tip_24=dfsadaidjpsiofjisrjaldkfqafk -levels.features.sign.burn=就在你试图阅读它的那一刻,它爆燃成了一团绿色的火焰。 -levels.features.sign.pit_message=这块地方没有出口,所以你需要传送道具。那个遗骸下面可能会有一个。 - - -###painters -levels.painters.massgravepainter$bones.name=巨大的墓穴 -levels.painters.massgravepainter$bones.desc=骨头镶嵌进了地板,这里发生过什么? - -levels.painters.ritualsitepainter$ritualmarker.name=仪式标记 -levels.painters.ritualsitepainter$ritualmarker.desc=为黑暗仪式而画下的标记。蜡烛通常摆在四个角上。 - -levels.painters.weakfloorpainter$hiddenwell.name=近处的井 -levels.painters.weakfloorpainter$hiddenwell.desc=你可以直接看到下一层有个井,也许这下面有些什么? - - -###traps -levels.traps.alarmtrap.name=警报陷阱 -levels.traps.alarmtrap.alarm=陷阱产生的尖锐的警报声在地牢里回荡! -levels.traps.alarmtrap.desc=这个陷阱看起来有着能造成很大响动的机制。触发它将使本层所有生物对这里产生警觉。 - -levels.traps.blazingtrap.name=烈焰陷阱 -levels.traps.blazingtrap.desc=踩进这个陷阱会点燃某种极具力量的化学混合物,导致很大一块区域起火。 - -levels.traps.chillingtrap.name=冰霜陷阱 -levels.traps.chillingtrap.desc=触发时,这个陷阱里的化学药剂会产生霜冻效果。 - -levels.traps.confusiontrap.name=混乱陷阱 -levels.traps.confusiontrap.desc=触发这个陷阱将在附近释放出一片混乱气体。 - -levels.traps.cursingtrap.name=诅咒陷阱 -levels.traps.cursingtrap.curse=你正穿在身上的装备都被诅咒了! -levels.traps.cursingtrap.desc=这个陷阱中包含与在诅咒装备发现的恶毒魔法同样的东西。触发它会诅咒所有已装备的物品或所有在陷阱上方的物品。 - -levels.traps.disarmingtrap.name=缴械陷阱 -levels.traps.disarmingtrap.disarm=你手中的武器被传送走了! -levels.traps.disarmingtrap.desc=这个陷阱包含着非常有针对性的传送魔法,它会将触发陷阱的受害者的武器传送到其他位置。 - -levels.traps.disintegrationtrap.name=解离陷阱 -levels.traps.disintegrationtrap.one=陷阱解离了你的%s! -levels.traps.disintegrationtrap.some=陷阱解离了你的一些%s! -levels.traps.disintegrationtrap.ondeath=你被解离陷阱击杀… -levels.traps.disintegrationtrap.desc=触发时,这个陷阱将会用解离射线袭击它的目标,造成很高的伤害的同时破坏物品。 - -levels.traps.distortiontrap.name=重构陷阱 -levels.traps.distortiontrap.desc=依赖于来源不明的奇特魔法,陷阱会移动并扭曲你周围的世界。 - -levels.traps.explosivetrap.name=爆炸陷阱 -levels.traps.explosivetrap.desc=这个陷阱包含一些粉状炸药和一个触发机制。激活它会导致一定范围的爆炸。 - -levels.traps.firetrap.name=火焰陷阱 -levels.traps.firetrap.desc=踩进这个陷阱会点燃某种化学混合物,导致陷阱所在的区域起火。 - -levels.traps.flashingtrap.name=闪光陷阱 -levels.traps.flashingtrap.desc=被激活时,这个陷阱将点燃储存在里面的强效闪光粉,使受害者暂时失明并残废。 - -levels.traps.flocktrap.name=羊圈陷阱 -levels.traps.flocktrap.desc=也许是个来自一些业余法师的玩笑,触发这个陷阱就会创造一群魔法绵羊。 - -levels.traps.frosttrap.name=极寒陷阱 -levels.traps.frosttrap.desc=触发时,这个陷阱里的化学药剂会产生强有力的霜冻效果。 - -levels.traps.grimtrap.name=即死陷阱 -levels.traps.grimtrap.ondeath=你被即死陷阱的冲击彻底击杀… -levels.traps.grimtrap.desc=非常强大的破坏魔法储存在这个陷阱里,足以瞬间杀死除了最健康的英雄外的所有东西。触发它将向最近的生物发送一个致命魔法的远程冲击。 - -levels.traps.grippingtrap.name=捕猎陷阱 -levels.traps.grippingtrap.desc=触发这个陷阱将使一对钳子合上,伤害受害者并将他们固定在这里。 - -levels.traps.guardiantrap.name=守卫陷阱 -levels.traps.guardiantrap.alarm=陷阱产生的尖锐的警报声在地牢里回荡! -levels.traps.guardiantrap.desc=这个陷阱有着奇怪的魔法机制,它将召唤守护者并向将使本层所有生物对这里产生警觉。 -levels.traps.guardiantrap$guardian.name=召唤守卫 -levels.traps.guardiantrap$guardian.desc=这个蓝色的幻影似乎是召唤出来的地牢里的石像守卫虚影之一。 \n\n尽管雕像本身几乎没有形体,但它握着的_%s_,看起来像是真的。 - -levels.traps.lightningtrap.name=闪电陷阱 -levels.traps.lightningtrap.ondeath=你被闪电陷阱的电击杀死了... -levels.traps.lightningtrap.desc=一种能储存大量电能的机关。触发陷阱将会释放能量到任何激活它的东西上。 - -levels.traps.oozetrap.name=腐酸陷阱 -levels.traps.oozetrap.desc=这个陷阱将会洒出腐蚀性的淤泥,它将烧灼你的皮肤直到被洗掉。 - -levels.traps.paralytictrap.name=麻痹陷阱 -levels.traps.paralytictrap.desc=触发这个陷阱将在附近释放出一片麻痹气体。 - -levels.traps.pitfalltrap.name=塌陷陷阱 -levels.traps.pitfalltrap.desc=这个压力板安装在一块相当薄弱的地板上,如果被触发这里很可能会塌出一个坑。 - -levels.traps.poisontrap.name=毒镖陷阱 -levels.traps.poisontrap.desc=一个小飞镖发射器一定隐藏在附近,激活这个陷阱将导致它向你射出一个毒镖。 - -levels.traps.rockfalltrap.name=落石陷阱 -levels.traps.rockfalltrap.ondeath=你被落石砸扁了…… -levels.traps.rockfalltrap.desc=这个陷阱连结在一系列的松散的岩石上,触发它会导致整个天花板崩塌。 - -levels.traps.speartrap.name=尖刺陷阱 -levels.traps.speartrap.ondeath=你被尖刺陷阱扎成了筛子…… -levels.traps.speartrap.desc=经典的尖刺陷阱,原始而有效。由于其简单的构造,这些陷阱可被多次激活而不损毁。 - -levels.traps.summoningtrap.name=生成陷阱 -levels.traps.summoningtrap.desc=触发这个陷阱将召唤本区域的一些怪物到这里。 - -levels.traps.teleportationtrap.name=传送陷阱 -levels.traps.teleportationtrap.desc=任何接触这个陷阱的东西都会被传送到本层的其它地方。 - -levels.traps.toxictrap.name=毒气陷阱 -levels.traps.toxictrap.desc=触发这个陷阱将放出一片有毒气体到这附近。 - -levels.traps.venomtrap.name=猛毒陷阱 -levels.traps.venomtrap.desc=触发这个陷阱将在该区域放出一片致命毒气。 - -levels.traps.warpingtrap.name=扭曲陷阱 -levels.traps.warpingtrap.desc=触发这个陷阱的任何东西都会被传送到地牢的其它位置。 - -levels.traps.weakeningtrap.name=虚弱陷阱 -levels.traps.weakeningtrap.desc=这个陷阱里的黑魔法能从任何接触物里吸取能量。 - -levels.traps.worntrap.name=破旧的陷阱 -levels.traps.worntrap.nothing=真的啥事都没发生… -levels.traps.worntrap.desc=由于悠久的历史和糟糕的工艺,看起来这个陷阱老到即使触发也什么都不会发生了。 - -levels.traps.shocktrap.name=休克陷阱 -levels.traps.shocktrap.desc=触发这个陷阱所产生的电流会对周围的单位造成极大的伤害并麻痹它们。 - -levels.traps.stormtrap.name=暴风陷阱 -levels.traps.stormtrap.desc=休克陷阱的加强版,范围更大,持续更长! - -levels.traps.activateportaltrap.name=传送门激活开关 -levels.traps.changesheeptrap.name=转换陷阱 -levels.traps.fleecingtrap.name=摧毁陷阱 -levels.traps.fleecingtrap.destroy=摧毁陷阱摧毁了你的护甲! -levels.traps.heapgentrap.name=奖励开关 -levels.traps.sokobanportaltrap.name=单向传送门 - - -###levels -levels.bossrushlevel.water_name=奇怪的水 -levels.bossrushlevel.grass_name=一些魔法粉尘 -levels.bossrushlevel.high_grass_name=一些魔法晶簇 -levels.bossrushlevel.statue_sp_name=水晶 -levels.bossrushlevel.water_desc=十分奇怪的水滩 -levels.bossrushlevel.statue_sp_desc=黄色的水晶。太漂亮了。 - -levels.caveslevel.grass_name=荧光苔藓 -levels.caveslevel.high_grass_name=荧光蘑菇 -levels.caveslevel.water_name=冰冷刺骨的水。 -levels.caveslevel.entrance_desc=通向上一层的梯子。 -levels.caveslevel.exit_desc=通向下一层的梯子。 -levels.caveslevel.high_grass_desc=庞大的蘑菇阻挡了视线。 -levels.caveslevel.wall_deco_desc=一些矿脉在墙上清晰可见。金子? -levels.caveslevel.bookshelf_desc=谁会需要在矿洞里放个书架? - -levels.citylevel.water_name=有着可疑色调的水 -levels.citylevel.high_grass_name=茂盛的开放花朵 -levels.citylevel.entrance_desc=通向上一层的斜坡。 -levels.citylevel.exit_desc=通向下一层的斜坡。 -levels.citylevel.deco_desc=这里少了一些地砖。 -levels.citylevel.sp_desc=厚地毯覆盖着地板。 -levels.citylevel.statue_desc=这座雕像展示了一些摆出英勇姿态的矮人。 -levels.citylevel.bookshelf_desc=不同学科的书排满了书架。 - -levels.hallslevel.water_name=冷岩浆 -levels.hallslevel.grass_name=灰烬苔藓 -levels.hallslevel.high_grass_name=灰烬真菌 -levels.hallslevel.statue_name=台柱 -levels.hallslevel.water_desc=看起来像是岩浆,不过却是冰凉的,应该可以碰。 -levels.hallslevel.statue_desc=这个柱子由类人生物头骨垒成。真帅。 -levels.hallslevel.bookshelf_desc=用远古语言写就的书籍堆积在书架里。 - -levels.level.hidden_plate=隐藏的压力板发出脆响! -levels.level.chasm_name=洞口 -levels.level.floor_name=地板 -levels.level.grass_name=草 -levels.level.water_name=水 -levels.level.wall_name=墙壁 -levels.level.closed_door_name=关着的门 -levels.level.open_door_name=开着的门 -levels.level.entrace_name=楼层入口 -levels.level.exit_name=楼层出口 -levels.level.embers_name=灰烬 -levels.level.locked_door_name=锁着的门 -levels.level.pedestal_name=基座 -levels.level.barricade_name=路障 -levels.level.high_grass_name=高草 -levels.level.locked_exit_name=锁着的楼层出口 -levels.level.unlocked_exit_name=开放的楼层出口 -levels.level.sign_name=告示牌 -levels.level.well_name=井 -levels.level.empty_well_name=干涸的井 -levels.level.statue_name=雕像 -levels.level.statue_ssp_name=空气墙 -levels.level.tent_name=帐篷 -levels.level.bed_name=床 -levels.level.inactive_trap_name=已触发的陷阱 -levels.level.bookshelf_name=书架 -levels.level.alchemy_name=炼药锅 -levels.level.wool_rug_name=白色碎屑 -levels.level.fleecing_trap_name=破坏陷阱 -levels.level.change_sheep_trap_name=转换陷阱 -levels.level.sokoban_item_reveal_name=奖励开关 -levels.level.sokoban_port_switch_name=传送开关 -levels.level.port_well_name=单向传送门 -levels.level.trap_air_name=深渊陷阱 -levels.level.default_name=??? - -levels.level.shrub_name=茂盛的灌木 - -levels.level.shrub_desc=茂盛的灌木挡住了视线。 - -levels.level.chasm_desc=你看不到底。 -levels.level.water_desc=着火的时候踩进水里可以灭火。 -levels.level.entrance_desc=通向上一层的楼梯。 -levels.level.exit_desc=楼梯一级级向下延伸。 -levels.level.embers_desc=灰烬覆盖着地板。 -levels.level.high_grass_desc=茂密的植被阻挡了视线。 -levels.level.locked_door_desc=门锁着,你需要匹配的钥匙来打开。 -levels.level.locked_exit_desc=沉重的铁栏杆封锁住了下楼楼梯。 -levels.level.barricade_desc=木栅栏依然坚固,但早已风干多年。烧了怎么样? -levels.level.sign_desc=你从这里看不清楚上面写的是什么。 -levels.level.inactive_trap_desc=这个陷阱已经被触发过了,现在一点也不危险。 -levels.level.statue_desc=有人想装饰一下这里,很显然,它没能成功… -levels.level.statue_ssp_desc=看上去就像一个陷阱,但是这是一个空气墙。 -levels.level.tent_desc=一个蓝色的小帐篷。 -levels.level.bed_desc=柔软舒适的床。 -levels.level.alchemy_desc=往这里投入一些种子来酿造药水。 -levels.level.wool_rug_desc=这东西被摧毁到只剩下一些碎屑了。 -levels.level.fleecing_trap_desc=这个陷阱破坏能力很强,推个箱子进去试试。 -levels.level.change_sheep_trap_desc=这个陷阱能完全转换一个箱子。注意,该过程不可逆! -levels.level.sokoban_item_reveal_desc=用箱子压一下就会有东西掉出来,但是你没法知道那东西掉在哪里。 -levels.level.sokoban_port_switch_desc=只有触发这个开关传送门才会启动。但是这个开关能用几次?它又对应着哪个传送门? -levels.level.port_well_desc=只能传送到一个地方的传送门。 -levels.level.trap_air_desc=让人承受掉落伤害的陷阱。 -levels.level.empty_well_desc=这座井已经枯竭了。 -levels.level.default_desc=这里没什么有趣的东西。 - -levels.prisonlevel.water_name=又黑又冷的水。 -levels.prisonlevel.empty_deco_desc=这里的地板上有干涸的血迹。 -levels.prisonlevel.bookshelf_desc=这个书架可能是监狱图书馆的残留物。烧掉怎么样? - -levels.sewerlevel.water_name=浑浊的水 -levels.sewerlevel.empty_deco_desc=湿润的、黄色的苔藓覆盖着地板。 -levels.sewerlevel.bookshelf_desc=这个书架塞满了没用的成功学书籍。烧掉怎么样? - -levels.level.crabbosslevel.water_name=清澈透明的水 -levels.level.crabbosslevel.high_grass_name=水草 -levels.level.crabbosslevel.deco_desc=小型蟹类和贝壳在沙地上散落着。 -levels.level.crabbosslevel.statue_desc=一个大贝壳在沙子里直立着。 -levels.level.crabbosslevel.bookshelf_desc=书架。 - -levels.level.fieldlevel.emptydeco_desc=草被磨损殆尽,露出了基岩。 \ No newline at end of file diff --git a/resources/com/hmdzl/spspd/change/messages/misc/misc.properties b/resources/com/hmdzl/spspd/change/messages/misc/misc.properties deleted file mode 100644 index a12fd41b..00000000 --- a/resources/com/hmdzl/spspd/change/messages/misc/misc.properties +++ /dev/null @@ -1,137 +0,0 @@ - -badges.endorsed=Badge endorsed: %s -badges.new_super=New super badge: %s -badges.new=New badge: %s -badges$badge.monsters_slain_1=10 enemies slain -badges$badge.monsters_slain_2=50 enemies slain -badges$badge.monsters_slain_3=150 enemies slain -badges$badge.monsters_slain_4=250 enemies slain -badges$badge.gold_collected_1=100 gold collected -badges$badge.gold_collected_2=500 gold collected -badges$badge.gold_collected_3=2500 gold collected -badges$badge.gold_collected_4=7500 gold collected -badges$badge.level_reached_1=Level 10 reached -badges$badge.level_reached_2=Level 20 reached -badges$badge.level_reached_3=Level 30 reached -badges$badge.level_reached_4=Level 40 reached -badges$badge.all_potions_identified=All potions identified -badges$badge.all_scrolls_identified=All scrolls identified -badges$badge.all_rings_identified=All rings identified -badges$badge.all_wands_identified=All wands identified -badges$badge.all_items_identified=All potions, scrolls, rings & wands identified -badges$badge.all_bags_bought=All bags bought -badges$badge.death_from_fire=Death from fire -badges$badge.death_from_poison=Death from poison -badges$badge.death_from_gas=Death from toxic gas -badges$badge.death_from_hunger=Death from hunger -badges$badge.death_from_glyph=Death from a glyph -badges$badge.death_from_falling=Death from falling down -badges$badge.yasd=Death from fire, poison, toxic gas & hunger -badges$badge.boss_slain_1=1st boss slain -badges$badge.boss_slain_2=2nd boss slain -badges$badge.boss_slain_3=3rd boss slain -badges$badge.boss_slain_4=4th boss slain -badges$badge.boss_slain_1_all_classes=1st boss slain by Warrior, Mage, Rogue & Huntress -badges$badge.boss_slain_3_all_subclasses=3rd boss slain by Gladiator, Berserker, Warlock, Battlemage, Freerunner, Assassin, Sniper & Warden -badges$badge.ring_of_haggler=Ring of Haggler obtained -badges$badge.ring_of_thorns=Ring of Thorns obtained -badges$badge.strength_attained_1=13 points of Strength attained -badges$badge.strength_attained_2=15 points of Strength attained -badges$badge.strength_attained_3=17 points of Strength attained -badges$badge.strength_attained_4=19 points of Strength attained -badges$badge.food_eaten_1=10 pieces of food eaten -badges$badge.food_eaten_2=20 pieces of food eaten -badges$badge.food_eaten_3=30 pieces of food eaten -badges$badge.food_eaten_4=40 pieces of food eaten -badges$badge.item_level_1=Item of level 3 acquired -badges$badge.item_level_2=Item of level 6 acquired -badges$badge.item_level_3=Item of level 9 acquired -badges$badge.item_level_4=Item of level 12 acquired -badges$badge.rare=All rare monsters slain -badges$badge.victory=Amulet of Yendor obtained -badges$badge.victory_all_classes=Amulet of Yendor obtained by Warrior, Mage, Rogue & Huntress -badges$badge.mastery_combo=10-hit combo -badges$badge.potions_cooked_1=3 potions cooked -badges$badge.potions_cooked_2=6 potions cooked -badges$badge.potions_cooked_3=9 potions cooked -badges$badge.potions_cooked_4=12 potions cooked -badges$badge.no_monsters_slain=Level completed without killing any monsters -badges$badge.grim_weapon=Monster killed by a Grim weapon -badges$badge.piranhas=6 piranhas killed -badges$badge.night_hunter=15 monsters killed at nighttime -badges$badge.games_played_1=10 games played -badges$badge.games_played_2=100 games played -badges$badge.games_played_3=500 games played -badges$badge.games_played_4=2000 games played -badges$badge.happy_end=Happy end -badges$badge.champion=Challenge won -badges$badge.supporter=Thanks for your support! -badges$badge.orb=Orb of Zot obtained! -badges$badge.otiluke=Otiluke rescued! -badges$badge.tri=Find the TriForce! -badges$badge.egg_break_1=Summon 1 pet! -badges$badge.egg_break_2=Summon 3 pet! -badges$badge.egg_break_3=Summon 5 pet! - -challenges.item_phobia=item phobia -challenges.item_phobia_desc=You think your scrolls and potions is dangerous.\n\n-spend more time on drink potions.\n-use scrolls will harm you and slience by yourself.\n-start with 1000 golds. -challenges.listless=listless -challenges.listless_desc=You feel weekness.\n\n-earn less ht on level up.\n-start with potion of might and potion of honey. -challenges.nightmare_virus=nightmare virus -challenges.nightmare_virus_desc=Everyon is infected by nightmare virus.\n\n- If something die, create a nightmare virus.\n- Start with blessing ankh. -challenges.energy_lost=energy lost -challenges.energy_lost_desc=Based on conservation of energy, lots of energy lost in other ways.\n\n- Gain less hunger on eating foods.\n- Reduce wand's max charge.\n- Start with pasty. -challenges.dew_rejection=dew rejection -challenges.dew_rejection_desc=Dew god hate you.\n\n- Drop less dews.\n- Spend more dews.\n- Start with 2 seed of dewcatcher. -challenges.darkness=Into darkness -challenges.darkness_desc=Darkness grown.\n\n- Can't record map by yourself.\n- Start with 2 scroll of magicmapping. -challenges.abrasion=abrasion -challenges.abrasion_desc=Weapons are almost break.\n\n- Weapon will be destroy by using it.\n- Start with Scroll of upgrade and Scroll of magicimbue. -challenges.test_time=test time -challenges.test_time_desc=This is just a test.\n\n-have fun :) - -skins.title=Choose your hero skin -skins.normal=Classic Hero -skins.first=Birthday Gift -skins.second=Halloween -skins.third=Spring Festival -skins.normal_desc=Classic pixel dungeon skins, including warrior, mage, rogue, hunter, performer, soldier, follower.\n-Start with pet pack. -skins.first_desc=2019 happy birthday skins, including fighter, explorer, ninja, maid, Vtuber, plumber, builder.\n-Start with different personal item.\n-fighter have hadoken. \n-explorer have rainbow cannon. \n-ninja have Legend of Hyrule. \n-maid have thousand knives. \n-Vtuber have effect button. \n-plumber have jump shoes and ? box.\n-builder have diamond pickaxe. -skins.second_desc=Halloween skins, including demon, gnoll, undead, taurcen, slime, mech, protoss.\n-Start with different personal stats. \n-demon attack with fire. \n-gnoll recharge fast. \n-undead stealth higher. \n-taurcen move fast. \n-slime heal quickly. \n-mech gain armor from level.\n-protoss ignore enemy's armor. -skins.third_desc=2020 Spring Festival skins, including heavy-infantry, emcee, samurai, archer, lion-dancer, doctor, merchant.\n-ankh shield and shoes will be replaced by an ex item and hunting pack.\n-heavy-infantry has shield and helmetl.\n-emcee has potion and mask.\n-samurai has cloak and totem .\n-archer has bow and throw bag.\n-lion-dancer has shovel and notation.\n-doctor has pulse pistol and heal bag .\n-merchant has sign box and pylon. -skins.info=Different skin will give different items. -skins.yes=YES -skins.no=NO - -journal$feature.well_of_health=Well of Health -journal$feature.well_of_awareness=Well of Awareness -journal$feature.well_of_transmutation=Well of Transmutation -journal$feature.alchemy=Alchemy pot -journal$feature.garden=Garden -journal$feature.statue=Animated statue -journal$feature.ghost=Sad ghost -journal$feature.wandmaker=Old wandmaker -journal$feature.troll=Troll blacksmith -journal$feature.imp=Ambitious imp - -resultdescriptions.mob=Killed by mobs. -resultdescriptions.unique=Killed by someone. -resultdescriptions.named=Killed by something. -resultdescriptions.item=Killed by some items. -resultdescriptions.glyph=Killed by armor. -resultdescriptions.trap=Killed by trap. -resultdescriptions.burning=Killed by fire. -resultdescriptions.hunger=Killed by hunger. -resultdescriptions.poison=Killed by poison. -resultdescriptions.gas=Killed by gas. -resultdescriptions.bleeding=Killed by bleeding. -resultdescriptions.ooze=Killed by acid. -resultdescriptions.fall=Killed by falling. -resultdescriptions.cheat=Dead because of cheating. -resultdescriptions.countdown=Killed by explode. -resultdescriptions.win=Find the Amulet. -resultdescriptions.win2=Escape? - -journal$feature.memory_fire=fire of memory - - diff --git a/resources/com/hmdzl/spspd/change/messages/misc/misc_zh.properties b/resources/com/hmdzl/spspd/change/messages/misc/misc_zh.properties deleted file mode 100644 index 9562b248..00000000 --- a/resources/com/hmdzl/spspd/change/messages/misc/misc_zh.properties +++ /dev/null @@ -1,137 +0,0 @@ - -badges.endorsed=取得徽章:%s -badges.new_super=新的超级徽章:%s -badges.new=新的徽章:%s -badges$badge.monsters_slain_1=击杀10名敌人 -badges$badge.monsters_slain_2=击杀50名敌人 -badges$badge.monsters_slain_3=击杀150名敌人 -badges$badge.monsters_slain_4=击杀250名敌人 -badges$badge.gold_collected_1=收集100金币 -badges$badge.gold_collected_2=收集500金币 -badges$badge.gold_collected_3=收集2500金币 -badges$badge.gold_collected_4=收集7500金币 -badges$badge.level_reached_1=达到10级 -badges$badge.level_reached_2=达到20级 -badges$badge.level_reached_3=达到30级 -badges$badge.level_reached_4=达到40级 -badges$badge.all_potions_identified=全部药水鉴定 -badges$badge.all_scrolls_identified=全部卷轴鉴定 -badges$badge.all_rings_identified=全部戒指鉴定 -badges$badge.all_wands_identified=全部法杖鉴定 -badges$badge.all_items_identified=全部药水、卷轴、戒指和法杖鉴定 -badges$badge.all_bags_bought=买下所有包裹 -badges$badge.death_from_fire=死于火焰 -badges$badge.death_from_poison=死于剧毒 -badges$badge.death_from_gas=死于毒气 -badges$badge.death_from_hunger=死于饥饿 -badges$badge.death_from_glyph=死于盔甲刻印 -badges$badge.death_from_falling=死于坠落楼层 -badges$badge.yasd=死于火焰,剧毒,毒气和饥饿 -badges$badge.boss_slain_1=斩杀第1个Boss -badges$badge.boss_slain_2=斩杀第2个Boss -badges$badge.boss_slain_3=斩杀第3个Boss -badges$badge.boss_slain_4=斩杀第4个Boss -badges$badge.boss_slain_1_all_classes=分别使用战士、法师、盗贼和女猎手斩杀第1个Boss -badges$badge.boss_slain_3_all_subclasses=分别使用角斗士、狂战士、术士、战斗法师、疾行者、刺客、狙击手和守望者斩杀第3个Boss -badges$badge.ring_of_haggler=取得砍价戒指 -badges$badge.ring_of_thorns=取得荆棘戒指 -badges$badge.strength_attained_1=达到13点力量 -badges$badge.strength_attained_2=达到15点力量 -badges$badge.strength_attained_3=达到17点力量 -badges$badge.strength_attained_4=达到19点力量 -badges$badge.food_eaten_1=吃掉10个食物 -badges$badge.food_eaten_2=吃掉20个食物 -badges$badge.food_eaten_3=吃掉30个食物 -badges$badge.food_eaten_4=吃掉40个食物 -badges$badge.item_level_1=获得3级物品 -badges$badge.item_level_2=获得6级物品 -badges$badge.item_level_3=获得9级物品 -badges$badge.item_level_4=获得12级物品 -badges$badge.rare=击杀所有稀有怪物 -badges$badge.victory=取得Yendor护符 -badges$badge.victory_all_classes=分别使用战士,法师,盗贼和女猎手取得Yendor护符 -badges$badge.mastery_combo=达成10连击 -badges$badge.potions_cooked_1=一场游戏中酿造3瓶药水 -badges$badge.potions_cooked_2=一场游戏中酿造6瓶药水 -badges$badge.potions_cooked_3=一场游戏中酿造9瓶药水 -badges$badge.potions_cooked_4=一场游戏中酿造12瓶药水 -badges$badge.no_monsters_slain=在不击杀怪物的情况下通过楼层 -badges$badge.grim_weapon=通过"残酷"武器附魔秒杀一个怪物 -badges$badge.piranhas=消灭6只食人鱼 -badges$badge.night_hunter=在夜间击杀15个怪物 -badges$badge.games_played_1=进行10场游戏 -badges$badge.games_played_2=进行100场游戏 -badges$badge.games_played_3=进行500场游戏 -badges$badge.games_played_4=进行2000场游戏 -badges$badge.happy_end=幸福结局 -badges$badge.champion=挑战成功 -badges$badge.supporter=感谢您的支持! -badges$badge.orb=获得zot的能量球! -badges$badge.otiluke=成功解救Otiluke! -badges$badge.tri=获得起源三角! -badges$badge.egg_break_1=召唤1个宠物! -badges$badge.egg_break_2=召唤3个宠物! -badges$badge.egg_break_3=召唤5个宠物! - -challenges.item_phobia=恐物幻觉 -challenges.item_phobia_desc=你感觉你的卷轴和药水都不能使用。\n\n-使用药水花费额外回合。\n-使用卷轴将受到伤害并被沉默。\n-开始时获得1000金币。 -challenges.listless=精神萎靡 -challenges.listless_desc=你感觉浑身无力。\n\n-升级获得最大生命值减少。\n-开始时获得根骨药水和蜂皇浆。 -challenges.nightmare_virus=梦魇病毒 -challenges.nightmare_virus_desc=恐怖的病毒感染了所有的生物。\n\n-怪物死亡时生成病毒体。\n-开始时获得复活十字架。 -challenges.energy_lost=能量流失 -challenges.energy_lost_desc=大量的能量转化为热能散发。\n\n-食物提供的能量大幅度减少。\n-法杖最大充能上限减少。\n-开始时获得大饼。 -challenges.dew_rejection=排异露珠 -challenges.dew_rejection_desc=露珠之神并不喜欢你。\n\n-露珠掉落减少。\n-露珠花费增加。\n-开始时获得2集露草之种。 -challenges.darkness=没入黑暗 -challenges.darkness_desc=黑暗吞噬了周围的环境。 \n\n-无法主动记录地图。\n-开始时获得2探地卷轴 -challenges.abrasion=严重磨损 -challenges.abrasion_desc=武器上的锈迹明显了起来。\n\n-常规武器有耐久度限制。用完即刻报废。\n-开始时获得升级卷轴和注魔卷轴。 -challenges.test_time=测试时间 -challenges.test_time_desc=仅仅是个测试模式。\n\n-玩的开心。 - -skins.title=选择英雄的皮肤 -skins.normal=经典皮肤 -skins.first=暑假特典 -skins.second=万圣逃亡 -skins.third=年兽猎人 -skins.normal_desc=经典的像素地牢皮肤,包括战士,法师,盗贼,猎手,演员,星兵,信徒。\n-开始时获得新手宠物包。 -skins.first_desc=2019年暑期的英雄皮肤,包括格斗家,探险者,忍者,女仆长,游戏主播,水管工,建筑工。\n-开始时用更加专业的道具替换原有道具。\n-格斗家习得升龙拳。\n-探险者发现彩虹大炮。\n-忍者成为传奇。\n-女仆长练习飞刀。\n-游戏主播开挂。\n-水管工顶砖块。\n-建筑工拿矿镐。 -skins.second_desc=怪物皮肤,包括恶魔,豺狼,亡灵,马人,史莱姆,机甲,星灵。\n-开始时获得独有的属性值。\n-恶魔火焰攻击。\n-豺狼快速充能。\n-亡灵潜行牛逼。\n-马人跑得飞快。\n-史莱姆再生恢复。\n-机甲护甲成长。\n-星灵无视防御。 -skins.third_desc=2020年春节皮肤,包括重装,司仪,武者,弩手,舞狮,医疗,行商。\n-失去神圣护盾和鞋子,获得猎杀工具包和一个额外的专属道具。\n-重装有盾牌和头盔。\n-司仪有烧瓶和面具。\n-武者有斗篷和图腾。\n-弩手有弓箭和镖袋。\n-舞狮有铁铲和舞谱。\n-医疗有电枪和血包。\n-行商有信盒和水晶 -skins.info=不同的皮肤将提供不同的初始物品 -skins.yes=是的 -skins.no=不是 - -journal$feature.well_of_health=生命之泉 -journal$feature.well_of_awareness=觉察之泉 -journal$feature.well_of_transmutation=蜕变之泉 -journal$feature.alchemy=炼金釜 -journal$feature.garden=静谧花圃 -journal$feature.statue=活化石像 -journal$feature.ghost=悲伤的幽灵 -journal$feature.wandmaker=法杖工匠 -journal$feature.troll=巨魔铁匠 -journal$feature.imp=野心勃勃的小恶魔 - -resultdescriptions.mob=死于怪物 -resultdescriptions.unique=死于未知怪物 -resultdescriptions.named=死于目标 -resultdescriptions.item=死于物品 -resultdescriptions.glyph=死于护甲刻印 -resultdescriptions.trap=死于机关 -resultdescriptions.burning=烧至灰烬 -resultdescriptions.hunger=饿至昏厥 -resultdescriptions.poison=毒至休克 -resultdescriptions.gas=窒息至死 -resultdescriptions.bleeding=血流不止 -resultdescriptions.ooze=溶于强酸 -resultdescriptions.fall=摔至肉酱 -resultdescriptions.cheat=作弊至死。拜托你很弱诶 -resultdescriptions.countdown=爆体而亡 -resultdescriptions.win=获得护符 -resultdescriptions.win2=逃离试验? - -journal$feature.memory_fire=记忆之火 - - diff --git a/resources/com/hmdzl/spspd/change/messages/plants/plants.properties b/resources/com/hmdzl/spspd/change/messages/plants/plants.properties deleted file mode 100644 index 1fd763a3..00000000 --- a/resources/com/hmdzl/spspd/change/messages/plants/plants.properties +++ /dev/null @@ -1,76 +0,0 @@ -plants.blandfruitbush.name=Blandfruit -plants.blandfruitbush.desc=Distant cousin of the Rotberry, the pear-shaped produce of the Blandfruit bush tastes like caked dust. The fruit is gross and unsubstantial but isn't poisonous. perhaps it could be cooked. -plants.blandfruitbush$seed.name=seed of blandfruit - -plants.blindweed.name=Blindweed -plants.blindweed.desc=Upon being touched a Blindweed perishes in a bright flash of light. The flash is strong enough to disorient for several seconds. -plants.blindweed$seed.name=seed of blindweed - -plants.dreamfoil.name=Dreamfoil -plants.dreamfoil.refreshed=You feel refreshed. -plants.dreamfoil.desc=The Dreamfoil's prickly flowers contain a chemical which is known for its properties as a strong neutralizing agent. Most weaker creatures are overwhelmed and knocked unconscious, which gives the plant its namesake. -plants.dreamfoil$seed.name=seed of dreamfoil - -plants.earthroot.name=Earthroot -plants.earthroot.desc=When a creature touches an Earthroot, its roots create a kind of immobile natural armor around it. -plants.earthroot$seed.name=seed of earthroot -plants.earthroot$armor.name=Herbal armor -plants.earthroot$armor.desc=A kind of natural, immobile armor is protecting you. The armor forms plates of bark and twine, wrapping around your body.\n\nThis herbal armor will absorb 50%% of all physical damage you take, until it eventually runs out of durability and collapses. The armor is also immobile, if you attempt to move it will break apart and be lost.\n\nArmor remaining: %d. - -plants.fadeleaf.name=Fadeleaf -plants.fadeleaf.desc=Touching a Fadeleaf will teleport any creature to a random place on the current level. -plants.fadeleaf$seed.name=seed of fadeleaf - -plants.firebloom.name=Firebloom -plants.firebloom.desc=When something touches a Firebloom, it bursts into flames. -plants.firebloom$seed.name=seed of firebloom - -plants.icecap.name=Icecap -plants.icecap.desc=Upon being touched, an Icecap lets out a puff of freezing pollen. The freezing effect is much stronger if the environment is wet. -plants.icecap$seed.name=seed of icecap - -plants.plant$seed.seed_of=seed of %s -plants.plant$seed.ac_plant=PLANT -plants.plant$seed.info=Throw this seed to the place where you want to grow a plant.\n\n%s - -plants.rotberry.name=Rotberry -plants.rotberry.desc=The berries of a young rotberry shrub taste like sweet, sweet death.\n\nGiven several days, this rotberry shrub will grow into another rot heart. -plants.rotberry$seed.name=seed of rotberry - -plants.sorrowmoss.name=Sorrowmoss -plants.sorrowmoss.desc=A Sorrowmoss is a flower (not a moss) with razor-sharp petals, coated with a deadly venom. -plants.sorrowmoss$seed.name=seed of sorrowmoss - -plants.starflower.name=Starflower -plants.starflower.desc=An extremely rare plant, Starflower is said to grant holy power to whomever touches it. -plants.starflower$seed.name=seed of starflower - -plants.stormvine.name=Stormvine -plants.stormvine.desc=Gravity affects the Stormvine plant strangely, allowing its whispy blue tendrils to 'hang' on the air. Anything caught in the vine is affected by this, and becomes disoriented. -plants.stormvine$seed.name=seed of stormvine - -plants.sungrass.name=Sungrass -plants.sungrass.desc=Sungrass is renowned for its sap's slow but effective healing properties. -plants.sungrass$seed.name=seed of sungrass -plants.sungrass$health.name=Herbal Healing -plants.sungrass$health.desc=Sungrass possesses excellent healing properties, though its not as fast as a potion of healing.\n\nYou are current slowly regenerating health from the sungrass plant. Taking damage while healing will reduce the healing effectiveness, and moving off the plant will break the healing effect.\n\nHealing remaining: %d. - -plants.dewcatcher.name=Dewcatcher -plants.dewcatcher.desc=Dewcatchers camouflage as grass to avoid attention, but their bulges of collected dew give them away. -plants.dewcatcher$seed.name=seed of dewcatcher - -plants.flytrap.name=Upgrade-eater -plants.flytrap.desc=A new type of plant can destroy one type of item and change it into something like scroll of upgrade. -plants.flytrap$seed.name=seed of upgrade-eater - -plants.phaseshift.name=Phase-pitcher -plants.phaseshift.desc=No one know how it appare or how it grow, but it can change one item into another, like Well of Transmutation. -plants.phaseshift$seed.name=seed of phase-pitcher - -plants.seedpod.name=Seed-Pod -plants.seedpod.desc=Seed Pods look pretty, but the seeds they carry are actually stolen from other plants they kill with their roots. -plants.seedpod$seed.name=seed of seed-pod - -plants.nutplant.name=nut vine -plants.nutplant.desc=A vine with nut. It don't have effect, but both vine and nut are eatable. -plants.nutplant$seed.name=Seed of nut vine diff --git a/resources/com/hmdzl/spspd/change/messages/plants/plants_zh.properties b/resources/com/hmdzl/spspd/change/messages/plants/plants_zh.properties deleted file mode 100644 index 54a320a1..00000000 --- a/resources/com/hmdzl/spspd/change/messages/plants/plants_zh.properties +++ /dev/null @@ -1,76 +0,0 @@ -plants.blandfruitbush.name=无味果 -plants.blandfruitbush.desc=腐莓的远亲,梨状的无味果果实味同嚼蜡也无营养,但并没有毒性。也许可以煮食。 -plants.blandfruitbush$seed.name=无味果之种 - -plants.blindweed.name=致盲草 -plants.blindweed.desc=在被碰到后,致盲草会瞬间枯萎并释放一道强光。这道光足以刺伤受害者双眼,使其暂时失明。 -plants.blindweed$seed.name=致盲草之种 - -plants.dreamfoil.name=梦夜花 -plants.dreamfoil.refreshed=你感觉浑身清爽。 -plants.dreamfoil.desc=梦夜花带刺的花瓣含有一种净化性极强的化学物质。这种花也因其能够致使多数接触它的生物立刻昏迷而得名。 -plants.dreamfoil$seed.name=梦夜花之种 - -plants.earthroot.name=地缚根 -plants.earthroot.desc=碰到地缚种后,它的根系会在你周边形成某种无法移动的天然护甲。 -plants.earthroot$seed.name=地缚根之种 -plants.earthroot$armor.name=植被护甲 -plants.earthroot$armor.desc=一种不可移动的天然护甲正在保护你。这个护甲由层层树皮和藤蔓盘结而成,紧密地缠绕在你的身体周围。\n\n这种护甲能够吸收你受到的50%%物理伤害,直到其耗尽耐久而瓦解。护甲是不可移动的,这意味着如果你想重新移动的话必须将其彻底破坏。\n\n护盾量剩余:%d点。 - -plants.fadeleaf.name=消逝草 -plants.fadeleaf.desc=任何触碰到消逝草的生物都会被传送到当前层的一个随机地点。 -plants.fadeleaf$seed.name=消逝草之种 - -plants.firebloom.name=烈焰花 -plants.firebloom.desc=烈焰花被任何物品触碰到时,都会化为一团火焰。 -plants.firebloom$seed.name=烈焰花之种 - -plants.icecap.name=冰冠花 -plants.icecap.desc=冰冠花在被接触到时会喷射出一团能冰冻周遭的花粉。潮湿环境下花粉的冰冻能力会大幅增强。 -plants.icecap$seed.name=冰冠花之种 - -plants.plant$seed.seed_of=%s之种 -plants.plant$seed.ac_plant=种植 -plants.plant$seed.info=把这个种子丢到你想产生一株植物的地方。\n\n%s - -plants.rotberry.name=腐莓丛 -plants.rotberry.desc=未成熟的腐败果灌木结出的浆果尝起来更像是甜蜜的死亡。\n\n只要过几天,这棵灌木就会长成另一棵腐败之心。 -plants.rotberry$seed.name=腐败果之种 - -plants.sorrowmoss.name=断肠苔 -plants.sorrowmoss.desc=断肠苔并不是一种苔藓,而是一种有极强毒性,花瓣利如刀片的花。 -plants.sorrowmoss$seed.name=断肠苔之种 - -plants.starflower.name=星陨花 -plants.starflower.desc=星陨花极为罕见,据说其能够为任何接触它的人赋予神圣之力。 -plants.starflower$seed.name=星陨花之种 - -plants.stormvine.name=风暴藤 -plants.stormvine.desc=引力似乎并不能正常地作用在风暴藤上,它蓝色的藤蔓能够"挂"在空中。任何被风暴藤缠到的生物也被这种奇怪的引力影响,并失去方向感。 -plants.stormvine$seed.name=风暴藤之种 - -plants.sungrass.name=阳春草 -plants.sungrass.desc=阳春草因其汁液缓慢但显著的疗伤效果而家喻户晓。 -plants.sungrass$seed.name=阳春草之种 -plants.sungrass$health.name=草药疗养 -plants.sungrass$health.desc=阳春草拥有优秀的治疗能力,尽管没有治疗药水高效地回复速度。 \n\n这株神奇的植物正在缓慢地治疗你的伤势。在此期间受伤会降低治愈效率,而且离开这里会打断治疗效果。\n\n剩余治疗量:%d。 - -plants.dewcatcher.name=集露草 -plants.dewcatcher.desc=集露草是一种特殊的高草。它上面集满了露珠。摇晃叶子露珠就会掉下来。 -plants.dewcatcher$seed.name=集露草之种 - -plants.flytrap.name=吞星花 -plants.flytrap.desc=这种植物的花像是巨口,可以吞噬一件装备,并保留那件装备的精华,移作他用。 -plants.flytrap$seed.name=吞星花之种 - -plants.phaseshift.name=转换笼 -plants.phaseshift.desc=这种植物来源不明,但它看起来和转化井差不多。没准这是转化井的原型? -plants.phaseshift$seed.name=转换笼之种 - -plants.seedpod.name=种子荚 -plants.seedpod.desc=一种装满种子的植物。它肯定是从其他植物上偷的种子。 -plants.seedpod$seed.name=种子荚之种 - -plants.nutplant.name=坚果藤 -plants.nutplant.desc=可以生成坚果的藤曼,但是已经失去了这种功能。好在这种藤曼可以食用。 -plants.nutplant$seed.name=坚果藤之种 \ No newline at end of file diff --git a/resources/com/hmdzl/spspd/change/messages/scenes/scenes.properties b/resources/com/hmdzl/spspd/change/messages/scenes/scenes.properties deleted file mode 100644 index dae33aae..00000000 --- a/resources/com/hmdzl/spspd/change/messages/scenes/scenes.properties +++ /dev/null @@ -1,80 +0,0 @@ -#scenes.aboutscene.= - -scenes.amuletscene.exit=Let's call it a day -scenes.amuletscene.stay=I'm not done yet -scenes.amuletscene.text=You finally hold it in your hands, the Amulet of Yendor. Using its power you can take over the world or bring peace and prosperity to people or whatever. Anyway, your life will change forever and this game will end here. Or you can stay a mere mortal a little longer. - -scenes.pudding_cupscene.exit=Wait, it is just a pudding cup -scenes.pudding_cupscene.stay=I went here for treasure, not pudding -scenes.pudding_cupscene.text=Finally, you find this pudding cup in the deep of the hell. Well your journey is not end now. Back to imp's shop and buy three trial, keep write your own story. - -scenes.powerhandscene.exit=End Game -scenes.powerhandscene.stay=Keep searching -scenes.powerhandscene.text=Looks like you escape from this game. Good work. - -scenes.badgesscene.title=Your Badges - -scenes.gamescene.welcome=You descend to floor %d of SPecial Surprise Pixel Dungeon! -scenes.gamescene.welcome_back=You return to floor %d of SPecial Surprise Pixel Dungeon! -scenes.gamescene.chasm=Your steps echo across the dungeon. -scenes.gamescene.water=You hear water splashing around you. -scenes.gamescene.grass=The smell of vegetation is thick in the air. -scenes.gamescene.dark=You can hear enemies moving in the darkness... -scenes.gamescene.secrets=The atmosphere hints that this floor hides many secrets. -scenes.gamescene.dont_know=You don't know what is there. - -scenes.interlevelscene$mode.descend=Descending... -scenes.interlevelscene$mode.ascend=Ascending... -scenes.interlevelscene$mode.continue=Loading... -scenes.interlevelscene$mode.resurrect=Resurrecting... -scenes.interlevelscene$mode.return=Returning... -scenes.interlevelscene$mode.fall=Falling... -scenes.interlevelscene$mode.port4=May Triforce bless you... -scenes.interlevelscene$mode.porthalls=You should fear, Yog comes!!! -scenes.interlevelscene$mode.portcrab=Warning, high-voltage electricity!!! -scenes.interlevelscene$mode.porttengu=A great place to hidding… -scenes.interlevelscene$mode.portcoin=Overthrow the local despots, distribute land!!! -scenes.interlevelscene$mode.portbone=Feel the anger of the bones! -scenes.interlevelscene$mode.returnsave=Return to save place... -scenes.interlevelscene$mode.journal=Loading, please wait... -scenes.interlevelscene$mode.sokobanfail=Falling... -scenes.interlevelscene$mode.palantir=Vs Zot!!! -scenes.interlevelscene$mode.bossrush=New test start... -scenes.interlevelscene$mode.portmap=Catch that gnoll!!! -scenes.interlevelscene$mode.save=Saving now, don't turn power off... -scenes.interlevelscene$mode.sleep=Sleeping Time... -scenes.interlevelscene$mode.reset=Resetting... -scenes.interlevelscene$mode.chaos=Endless world -scenes.interlevelscene$mode.challengebook=check your challenge... -scenes.interlevelscene.file_not_found=Save file not found. If this error persists after restarting, it may mean this save game is corrupted. Sorry about that. -scenes.interlevelscene.io_error=Cannot read save file. If this error persists after restarting, it may mean this save game is corrupted. Sorry about that. - -scenes.introscene.text=Many heroes have ventured into the dungeon before you from the city above. Some have returned with treasures and magical artifacts, most have never been heard from again.\n\nNone, however, have ventured to the bottom and retrieved the Amulet of Yendor, which is said to be guarded by an ancient evil in the depths. Even now dark energy radiates from below, making its way up into the city.\n\nYou consider yourself ready for the challenge. Most importantly, you feel that fortune smiles upon you. It's time to start your own adventure! - -scenes.rankingsscene.title=Top Rankings -scenes.rankingsscene.total=Games Played: -scenes.rankingsscene.no_games=No games have been played yet. -scenes.rankingsscene.no_info=No additional information - -scenes.startscene.load=Load Game -scenes.startscene.erase=Erases Progress -scenes.startscene.depth_level=Depth: %d, Level: %d -scenes.startscene.really=Do you really want to start new game? -scenes.startscene.warning=Your current game progress will be erased. -scenes.startscene.yes=Yes, start new game -scenes.startscene.no=No, return to main menu - -scenes.startscene.title=Game In Progress -scenes.startscene.new=New Game - -scenes.surfacescene.exit=Game Over - -scenes.titlescene.play=Play -scenes.titlescene.rankings=Rankings -scenes.titlescene.badges=Badges -scenes.titlescene.about=About - -scenes.welcomescene.title=SPecial Surprise Pixel Dungeon -scenes.welcomescene.new_things=There was hearsay, a beast called year harm people and livestock. ruin city and castle, and leaders of land have no idea about it. Tower report that thing disappare after chaos war, but no one know where it go.\n\nBut a merchant said he know how to find year. So Tower decide to find that beast, and kill it for peace of this land.\n\nThis merchant join this hunting. We call him Follower.\n\nWelcome to SPS-PD world. Now it is time to celebrate 2020 Spring Festival!!! -scenes.welcomescene.continue=OK! - diff --git a/resources/com/hmdzl/spspd/change/messages/scenes/scenes_zh.properties b/resources/com/hmdzl/spspd/change/messages/scenes/scenes_zh.properties deleted file mode 100644 index 2b097b23..00000000 --- a/resources/com/hmdzl/spspd/change/messages/scenes/scenes_zh.properties +++ /dev/null @@ -1,80 +0,0 @@ -#scenes.aboutscene.= - -scenes.amuletscene.exit=现在就到此为止吧 -scenes.amuletscene.stay=这一切还不该结束 -scenes.amuletscene.text=你终于握住了它——传说中的Yendor护符。通过它的力量你能够征服世界或者为人民带来繁荣幸福或者任何你能想到的事。不论如何,你的一生被永远改变了,游戏也即将在这里结束。或者你也可以继续以一个凡人的姿态再在这里逗留一会。 - -scenes.pudding_cupscene.exit=嗨,这玩意不是护符 -scenes.pudding_cupscene.stay=我没法用这玩意离开 -scenes.pudding_cupscene.text=看起来有人拿走了Yendor护符并留下这个布丁。看来你的冒险还要继续进行下去。 - -scenes.powerhandscene.exit=结束游戏 -scenes.powerhandscene.stay=向下探索 -scenes.powerhandscene.text=你启动了这个手套,瞬间你来到了一个由1和0构成的世界里。看起来你成功逃离了那个地牢,但前方已经没有路了。好好休息吧。 - -scenes.badgesscene.title=你获得的徽章 - -scenes.gamescene.welcome=你进入了特别惊喜地牢的第%d区域! -scenes.gamescene.welcome_back=你回到了特别惊喜地牢的第%d区域! -scenes.gamescene.chasm=你的脚步声回荡在地牢中。 -scenes.gamescene.water=你听见周围水花铺洒的声音。 -scenes.gamescene.grass=空气中弥漫着浓郁的植物清香。 -scenes.gamescene.dark=你依稀听到敌人在黑暗中涌动。 -scenes.gamescene.secrets=诡秘的气氛正暗示这层隐藏着众多秘密。 -scenes.gamescene.dont_know=你不清楚那里有什么。 - -scenes.interlevelscene$mode.descend=下楼中… -scenes.interlevelscene$mode.ascend=上楼中… -scenes.interlevelscene$mode.continue=读取中… -scenes.interlevelscene$mode.resurrect=复活中… -scenes.interlevelscene$mode.return=返回中… -scenes.interlevelscene$mode.fall=跌落中… -scenes.interlevelscene$mode.port4=愿三角之力保护你… -scenes.interlevelscene$mode.porthalls=恐惧绝望,古神降临 -scenes.interlevelscene$mode.portcrab=你听到了强电流的声音... -scenes.interlevelscene$mode.porttengu=这是个适合躲藏的地方… -scenes.interlevelscene$mode.portcoin=金色再次闪瞎了你的眼睛… -scenes.interlevelscene$mode.portbone=感受白骨之王的愤怒! -scenes.interlevelscene$mode.returnsave=返回安全区域… -scenes.interlevelscene$mode.journal=传送中… -scenes.interlevelscene$mode.sokobanfail=跌落中… -scenes.interlevelscene$mode.palantir=最终的战斗! -scenes.interlevelscene$mode.bossrush=新一轮测试开始! -scenes.interlevelscene$mode.portmap=别让霍格跑了! -scenes.interlevelscene$mode.save=记忆中,请勿关闭电源。 -scenes.interlevelscene$mode.sleep=睡觉时间。 -scenes.interlevelscene$mode.reset=重置中... -scenes.interlevelscene$mode.chaos=无尽世界 -scenes.interlevelscene$mode.challengebook=读取任务中... -scenes.interlevelscene.file_not_found=未能找到存档文件。如果重启后问题依旧存在, 那这个存档可能已经损坏。我很抱歉。 -scenes.interlevelscene.io_error=未能找到存档文件。如果重启后问题依旧存在, 那这个存档可能已经损坏。我很抱歉。 - -scenes.introscene.text=在你之前,曾经有很多来自上方城镇的英雄向这个地城进发。有的人带回了财宝和魔法道具,而大多数人彻底销声匿迹。\n\n不过,从未有人能成功到达过底层,染指Yendor护符,传说它被深渊中的远古邪物守卫着,哪怕是现在,黑暗之力也从地下辐射而来,一路渗透到城镇中。\n\n你认为你准备好接受挑战了,更重要的是,你觉得命运女神正对你微笑. 是时候开始你自己的冒险了! - -scenes.rankingsscene.title=最高纪录 -scenes.rankingsscene.total=游戏次数: -scenes.rankingsscene.no_games=目前为止还没有已经结束的游戏。 -scenes.rankingsscene.no_info=没有额外信息 - -scenes.startscene.load=读取游戏 -scenes.startscene.erase=清除进度 -scenes.startscene.depth_level=区域:%d,等级:%d -scenes.startscene.really=确认要重新开始吗? -scenes.startscene.warning=你当前的进度会被清除。 -scenes.startscene.yes=是的,重新开始 -scenes.startscene.no=不,返回主菜单 - -scenes.startscene.title=进行中的游戏 -scenes.startscene.new=新游戏 - -scenes.surfacescene.exit=游戏结束 - -scenes.titlescene.play=开始 -scenes.titlescene.rankings=排行榜 -scenes.titlescene.badges=成就 -scenes.titlescene.about=关于 - -scenes.welcomescene.title=特别惊喜像素地牢(发芽改) -scenes.welcomescene.new_things=2020春节快乐!年兽带着几个新怪物来到了这里,同时引来了新英雄信徒。现在猎手们已经准备好去狩猎年兽了!在额外的英雄皮肤下享受这场长达6个小时的冒险。这里包含大量的彩蛋,你可以和以前一样去打败强大的敌人,但你也可以用其他方式来获得胜利。祝你好运。 -scenes.welcomescene.continue=我懂了 - diff --git a/resources/com/hmdzl/spspd/change/messages/ui/ui.properties b/resources/com/hmdzl/spspd/change/messages/ui/ui.properties deleted file mode 100644 index 8bd8a0d3..00000000 --- a/resources/com/hmdzl/spspd/change/messages/ui/ui.properties +++ /dev/null @@ -1,3 +0,0 @@ -ui.quickslotbutton.select_item=Select an item to quickslot - -ui.toolbar.examine_prompt=Press for info, again to search diff --git a/resources/com/hmdzl/spspd/change/messages/ui/ui_zh.properties b/resources/com/hmdzl/spspd/change/messages/ui/ui_zh.properties deleted file mode 100644 index d15d9860..00000000 --- a/resources/com/hmdzl/spspd/change/messages/ui/ui_zh.properties +++ /dev/null @@ -1,3 +0,0 @@ -ui.quickslotbutton.select_item=选择放入快捷栏的道具 - -ui.toolbar.examine_prompt=选择查询信息,双击进行搜索。 diff --git a/resources/com/hmdzl/spspd/change/messages/windows/windows.properties b/resources/com/hmdzl/spspd/change/messages/windows/windows.properties deleted file mode 100644 index 3875bd56..00000000 --- a/resources/com/hmdzl/spspd/change/messages/windows/windows.properties +++ /dev/null @@ -1,283 +0,0 @@ -windows.wndblacksmith.prompt=Ok, a deal is a deal, dat's what I can do for you: I can reforge any 2 items and turn them into one of a better quality. The first item will get upgrades from the second. The second item will be destroyed. The more dark gold you have, the less upgrades will be lost. -windows.wndblacksmith.select1=Select an item to reforge -windows.wndblacksmith.select2=Select an item for reforge -windows.wndblacksmith.reforge=Reforge them - -windows.wndblacksmith2.prompt=Ok. if you have _50 darkgold_ , I can help you welding your item and adamant stuff. -windows.wndblacksmith2.select1=Select an item to weld -windows.wndblacksmith2.select2=Select an adamant for weld -windows.wndblacksmith2.reforge=weld them -windows.wndblacksmith2.success=Great, let's start work! - -windows.wndcatalogus.potions=Potions -windows.wndcatalogus.scrolls=Scrolls -windows.wndcatalogus.title=Catalogs - -windows.wndchallenges.title=Challenges - -windows.wndchooseway.message=Which way will you follow? -windows.wndchooseway.cancel=I'll decide later - -windows.wndclass.mastery=Mastery - -windows.wnddescend.message=Are you sure you want to descend? Your _dew charge_ might be wasted. -windows.wnddescend.reward=Descend - -windows.wnderror.title=ERROR - -windows.wndgame.settings=Settings -windows.wndgame.challenges=Challenges -windows.wndgame.rankings=Rankings -windows.wndgame.start=Start New Game -windows.wndgame.loadsave=Load memory -windows.wndgame.menu=Main Menu -windows.wndgame.exit=Exit Game -windows.wndgame.return=Return to Game - -windows.wndhero.stats=Stats -windows.wndhero.dew=Dew -windows.wndhero.pet=Pet -windows.wndhero.buffs=Buffs -windows.wndhero$statstab.title=Level %d %s -windows.wndhero$statstab.catalogs=Catalogs -windows.wndhero$statstab.journal=Journal -windows.wndhero$statstab.exp=Experience -windows.wndhero$statstab.str=Strength -windows.wndhero$statstab.health=Health -windows.wndhero$statstab.gold=Gold Collected -windows.wndhero$statstab.depth=Maximum Depth -windows.wndhero$statstab.move=Game steps -windows.wndhero$statstab.time=Time -windows.wndhero$statstab.atkskill=ACU -windows.wndhero$statstab.defskill=DEX -windows.wndhero$statstab.magskill=MIG -windows.wndhero$statstab.hunger=Hungry -windows.wndhero$levelstatstab.title=Level %d %s -windows.wndhero$levelstatstab.catalogs=Catalogs -windows.wndhero$levelstatstab.journal=Journal -windows.wndhero$levelstatstab.level_move=Floor Moves -windows.wndhero$levelstatstab.level_max=Floor Move Goal -windows.wndhero$levelstatstab.level_prefect=Prev Under Goal -windows.wndhero$levelstatstab.level_left=Dew Charge Moves -windows.wndhero$pettab.title=Level %d %s -windows.wndhero$pettab.pet_feed=Feed -windows.wndhero.choose_food=Choose food to feed -windows.wndhero$pettab.pet_call=Call -windows.wndhero$pettab.pet_move=Move -windows.wndhero$pettab.pet_stay=Stay -windows.wndhero$pettab.pet_attack=ACU -windows.wndhero$pettab.pet_hp=Health -windows.wndhero$pettab.pet_kill=mobs killed -windows.wndhero$pettab.pet_exp=Exp -windows.wndhero$pettab.pet_skills=Skills -windows.wndhero$pettab.pet_skills_ready=ready -windows.wndhero$pettab.pet_skills_turn=turns -windows.wndhero.pet_eat=Your pet eat %s -windows.wndhero.pet_faraway=You pet is too far away -windows.wndhero.pet_noeat=You pet don't eat %s. -windows.wndhero.heals=%+d HP - -windows.wndimp.message=Oh yes! You are my hero!\nRegarding your reward, I don't have cash with me right now, but I have something better for you. This is my family heirloom ring: my granddad took it off a dead paladin's finger. -windows.wndimp.reward=Take the ring - -windows.wndinfocell.nothing=There have nothing interesting. - -windows.wndinfoitem.chest=Chest -windows.wndinfoitem.locked_chest=Locked chest -windows.wndinfoitem.crystal_chest=Crystal chest -windows.wndinfoitem.tomb=Tomb -windows.wndinfoitem.skeleton=Skeletal remains -windows.wndinfoitem.remains=Heroes remains -windows.wndinfoitem.wont_know=You won't know what's inside until you open it! -windows.wndinfoitem.need_key=You won't know what's inside until you open it! But to open it you need a golden key. -windows.wndinfoitem.inside=You can see %s inside, but to open the chest you need a golden key. -windows.wndinfoitem.owner=This ancient tomb may contain something useful, but its owner will most certainly object to checking. -windows.wndinfoitem.skeleton_desc=This is all that's left of some unfortunate adventurer. Maybe it's worth checking for any valuables. -windows.wndinfoitem.remains_desc=This is all that's left from one of your predecessors. Maybe it's worth checking for any valuables. -windows.wndinfoitem.artifact=an artifact -windows.wndinfoitem.wand=a wand -windows.wndinfoitem.ring=a ring -windows.wndinfotrap.inactive=This trap is inactive, and can no longer be triggered. - -windows.wndjournal.title=Journal - -windows.wndlangs.completed=This language has been fully translated and reviewed. -windows.wndlangs.unreviewed=This language has not yet been reviewed.\n\nIt may contain errors, but all text has been translated. -windows.wndlangs.unfinished=This language has not been fully translated.\n\nLarge amounts of text may still be in English. -windows.wndlangs.transifex=All translation provided by volunteers through _Transifex._ -windows.wndlangs.credits=credits -windows.wndlangs.reviewers=reviewers -windows.wndlangs.translators=translators - -windows.wndranking.error=Unable to load additional information -windows.wndranking.stats=Stats -windows.wndranking.items=Items -windows.wndranking.badges=Badges -windows.wndranking$statstab.title=Level %d %s -windows.wndranking$statstab.challenges=Challenges -windows.wndranking$statstab.health=Health -windows.wndranking$statstab.str=Strength -windows.wndranking$statstab.duration=Game Duration -windows.wndranking$statstab.depth=Maximum Depth -windows.wndranking$statstab.enemies=Mobs Killed -windows.wndranking$statstab.gold=Gold Collected -windows.wndranking$statstab.food=Food Eaten -windows.wndranking$statstab.alchemy=Potions Cooked -windows.wndranking$statstab.ankhs=Ankhs Used -windows.wndranking$statstab.water=Plant Watered - -windows.wndresurrect.message=You died, but you were given another chance to win this dungeon. Will you take it? -windows.wndresurrect.yes=Yes, I will fight! -windows.wndresurrect.no=No, I give up - -windows.wndsadghost.rat_title=DEFEATED FETID RAT -windows.wndsadghost.gnoll_title=DEFEATED GNOLL TRICKSTER -windows.wndsadghost.crab_title=DEFEATED GREAT CRAB -windows.wndsadghost.rat=Thank you, that horrid rat is slain and I can finally rest... I wonder what twisted magic created such a foul creature... -windows.wndsadghost.gnoll=Thank you, that scheming gnoll is slain and I can finally rest... I wonder what twisted magic made it so smart... -windows.wndsadghost.crab=Thank you, that giant crab is slain and I can finally rest... I wonder what twisted magic allowed it to live so long... -windows.wndsadghost.give_item=\n\nPlease take one of these items, they are useless to me now... Maybe they will help you in your journey...\n\nAlso... There is an item lost in this dungeon that is very dear to me... If you ever... find my... rose...... -windows.wndsadghost.weapon=Ghost's weapon -windows.wndsadghost.armor=Ghost's armor -windows.wndsadghost.farewell=Farewell, adventurer! - -windows.wndsettings.zoom_out=- -windows.wndsettings.zoom_in=+ -windows.wndsettings.zoom_default=Default Zoom -windows.wndsettings.scale_up=Scale up UI -windows.wndsettings.immersive=Immersive mode -windows.wndsettings.music=Music -windows.wndsettings.sound=Sound FX -windows.wndsettings.brightness=Brightness -windows.wndsettings.quickslot=More QuickSlot -windows.wndsettings.switch_port=Switch to portrait -windows.wndsettings.switch_land=Switch to landscape -windows.wndsettings.system_font=System_font -windows.wndsettings.else=else - -windows.wndstory.sewers=The Dungeon lies right beneath the City, its upper levels actually constitute the City's sewer system.\n\nAs dark energy has crept up from below the usually harmless sewer creatures have become more and more dangerous. The city sends guard patrols down here to try and maintain safety for those above, but they are slowly failing.\n\nThis place is dangerous, but at least the evil magic at work here is weak. -windows.wndstory.prison=Many years ago a prison was built here to house dangerous criminals. Tightly regulated and secure, convicts from all over the land were brought here to serve time.\n\nBut soon dark miasma started to creep from below, twisting the minds of guard and prisoner alike.\n\nIn response to the mounting chaos, the city sealed off the entire prison. Nobody knows what became of those who were left for dead within these walls... -windows.wndstory.caves=The caves, which stretch down under the abandoned prison, are sparcely populated. They lie too deep to be exploited by the City and they are too poor in minerals to interest the dwarves. In the past there was a trade outpost somewhere here on the route between these two states, but it has perished since the decline of Dwarven Metropolis. Only omnipresent gnolls and subterranean animals dwell here now. -windows.wndstory.city=Dwarven Metropolis was once the greatest of dwarven city-states. In its heyday the mechanized army of dwarves has successfully repelled the invasion of the old god and his demon army. But it is said, that the returning warriors have brought seeds of corruption with them, and that victory was the beginning of the end for the underground kingdom. -windows.wndstory.halls=In the past these levels were the outskirts of Metropolis. After the costly victory in the war with the old god dwarves were too weakened to clear them of remaining demons. Gradually demons have tightened their grip on this place and now it's called Demon Halls.\n\nVery few adventurers have ever descended this far... -windows.wndstory.sokoban1=Finally, I start my adventure for my hometown.\n\nI went to tower, an old magic school, was famous of its laboratory and library.\n\nAfter that, I hear a story about weird box, deadly traps and hidden treasure.\n\nI know what should I do.\n\n-Otiluke, 1345 in empire -windows.wndstory.sokoban2=I complete that quest, and find something. A treasure box surrounded by strange energies.\n\nI open it in tower, and find a map in there. .It seems like... a co-ordinate, and point to a small island. I hope my Dolye stone is still can work...\n\n-Otiluke, 1348 in empire -windows.wndstory.sokoban3=Kill that mirror spent lots of times, but I find that artifact at last.\n\nBased report by laboratory, that glasses can open a portal to another world. There are some unknown creatures lived in there.\n\nI am ready to enter this portal.\n\n-Otiluke, 1355 in empire -windows.wndstory.sokoban4=I can't remember how many time I spend in translate that language, but at last, I success.\n\n\nThis world is create by zot, one powerful void leader. He was try to ruled every world, but he failed. With the help of different hero in different world, zot lost his power and can't move anymore.\n\nThen, I have a great idea. If I control that zot, I will have enough energy to save my hometown.\n\nI will do that! But first of all, I need enter his fortress\n\n-Otiluke, 1361 in empire maybe -windows.wndstory.safelevel=The seller: shopkeeper\nThe buyer: hero\n\nthe seller and buyer, based on equality, voluntariness and negotiated consensus, hereby conclude the following agreement on the purchase and sale of commodity house:\nSeller will sell sweet house to Buyer.\nBuyer will give Seller 1500 golds.\nThis Agreement is in duplicate and has the same legal effect. It shall come into force on the date of signature by both parties. -windows.wndstory.town=Dolye , located in the northwest of empire is famous for its beautiful and unique scenery. xianQuan mountain is sheer and cliffy , which is known as natural screen of Dolye.\n\n\n\nSorry, there are no tours and other services available in this scenic spot at present -windows.wndstory.zot=I did it, I catch zot so that I can use his power. Wait for me, my hometown.\n\n...........\n\nSomething wrong...\n\nYou can't... I will save...\n\n---date delete---\n\n- Otiluke, 1405 in empire -windows.wndstory.chaos=Can you hear me? I'm Ada, an agent from the assassin home. \n\nYou must wake up, this world is just a illusion.\n\nTrust me, we don't have much time. - -windows.wndtradeitem.sale=FOR SALE: %s - %dg -windows.wndtradeitem.buy=Buy for %dg -windows.wndtradeitem.steal=Buy with %d%% off -windows.wndtradeitem.sell=Sell for %dg -windows.wndtradeitem.sell_1=Sell 1 for %dg -windows.wndtradeitem.sell_all=Sell all for %dg -windows.wndtradeitem.cancel=Never mind -windows.wndtradeitem.sold=You've sold your %s for %dg -windows.wndtradeitem.bought=You've bought %s for %dg -windows.wndtradeitem.donot=You can't sell this item - -windows.wndwandmaker.dust=Oh, I see you have the dust! Don't worry about the wraiths, I can deal with them. As I promised, you can choose one of my high quality wands. -windows.wndwandmaker.ember=Oh, I see you have the embers! I do hope the fire elemental wasn't too much trouble. As I promised, you can choose one of my high quality wands. -windows.wndwandmaker.berry=Oh, I see you have the berry! I do hope the rotberry plant didn't trouble you too much. As I promised, you can choose one of my high quality wands. -windows.wndwandmaker.message=As I promised, you can choose one of my high quality wands. -windows.wndwandmaker.battle=Battle Wand -windows.wndwandmaker.no_battle=Non-Battle Wand -windows.wndwandmaker.farewell=Good luck in your quest, %s! - -windows.wndtinkerer.info1=Well, you find what I want. As reword, I can upgrade your dew vial. Also you should choose how to upgrade your items with dews. -windows.wndtinkerer.water=Random bless -windows.wndtinkerer.draw=Accurate upgrade -windows.wndtinkerer.spinfo=What is the difference? -windows.wndtinkerer.dungeon=You feel that your bag is filled with exotic energy. -windows.wndtinkerer.farewell=Good kuck,%s! - -windows.wndtinkerer2.info=Oh... Thank you for your help. I can upgrade your dewvial and create a summon item for you. -windows.wndtinkerer2.mr=Create Mr. Destructo -windows.wndtinkerer2.call=Create Fairy Card -windows.wndtinkerer2.mob=Create Mobile Satellite -windows.wndtinkerer2.farewell=See you in town,%s! - -windows.wndtinkerer3.info=All right, you find another dew mushroom. This place is power trial, after this your power will be stronger. Okay, I know how to upgrade your dew vial. It will hold much more dew, and you will fly if you use speed. -windows.wndtinkerer3.upgrade=Dew vial upgrade v3 -windows.wndtinkerer3.farewell=Good kuck,%s! - -windows.wnddewdrawinfo.info1=Drawing out dew makes it so that mobs on special levels drop dew to fill your vial. Additionally, your character is buffed with _dew charge_ at the start of each normal level. As long as you are dew charged, enemies drop dew to fill your vial. -windows.wnddewdrawinfo.info2=Each level dew charges you for a set amount of moves. Each level also has a move goal for killing all regular generated enemies. Killing all regular enemies that were generated with the level clears that level. If you clear a level in less moves than the goal, the additional moves are added to your dew charge for the next level. You will need to clear the levels as fast as you can to get dew upgrades. -windows.wnddewdrawinfo.info3=_Random bless_ will remove your curse, but its upgrade effect is random, that is, there might be nothing happend after you use dew upgrade. -windows.wnddewdrawinfo.info4=_Accurate upgrade_ can upgrade one item many time and identify it. -windows.wnddewdrawinfo.ok=I see. - -windows.wndegoalinfo.title=test by egoal -windows.wndegoalinfo.info1=Meow. adventurer. A peaceful town, isn't it? I can‘t feel any jpressure in your face, because your journey is very easy?\n\nSo my question is: \n_Egoal_ is a good person, right? -windows.wndegoalinfo.yes=Right -windows.wndegoalinfo.tell1=I'm glad of your answer, but I don't have a present for you this time. Good luck. -windows.wndegoalinfo.no=Who is he? -windows.wndegoalinfo.tell2=Meow, do you know _darkest pixel dungeon_? I hope you can go there to continue your adventure, You will do that, right? Good luck. - -windows.wndotiluke.title=Choose one location -windows.wndotiluke.room1=Sweet home -windows.wndotiluke.room2=Sokoban 1 -windows.wndotiluke.room3=Sokoban 2 -windows.wndotiluke.room4=Sokoban 3 -windows.wndotiluke.room5=Sokoban 4 -windows.wndotiluke.room6=Dolya town -windows.wndotiluke.room7=Spring Festival Town -windows.wndotiluke.room8=Energy core - -windows.wndchallengebook.title=Choose your challenge -windows.wndchallengebook.room1=sewer challenge -windows.wndchallengebook.room2=prison challenge -windows.wndchallengebook.room3=cave challenge -windows.wndchallengebook.room4=city challenge -windows.wndchallengebook.room5=Courage Trial -windows.wndchallengebook.room6=Power Trial -windows.wndchallengebook.room7=Wisdom Trial - -windows.wndhotel.message=Do you want stay for one night in here? It only cost 100 golds. -windows.wndhotel.buy=Yes, I am. -windows.wndhotel.more_gold=You don't have enough money, come next time. - -windows.wndons.message=Give him a clothes. -windows.wndons.give=Give it to him. - -windows.wndalchemy.title=Cooking Alchemy -windows.wndalchemy.text=Combine ingredients to create something new! -windows.wndalchemy.select=Select an item -windows.wndalchemy.combine=Combine -windows.wndalchemy.cancel=Cancel - -windows.wndmix.title=A Wonderful Experiments from ARealMan -windows.wndmix.text=Put three rings in here to make a random artifact. It will cost 1000 golds. -windows.wndmix.select=Select an item -windows.wndmix.combine=Combine -windows.wndmix.cancel=Cancel - -windows.wndaflyinfo.title=Hungry Abbey. -windows.wndaflyinfo.text=Abbey is hungry, but I don't have any food now. Can you give me a ration, meat and fruit? I'll give you one after I finish cooking. -windows.wndaflyinfo.select=Select a food -windows.wndaflyinfo.combine=Combine -windows.wndaflyinfo.cancel=Cancel - -windows.wndstartgame.title=Choose your hero skin -windows.wndstartgame.start=Play - -windows.wndgameinprogress.title=Level%1$d %2$s -windows.wndgameinprogress.challenges=Challenges -windows.wndgameinprogress.exp=EXP -windows.wndgameinprogress.str=STR -windows.wndgameinprogress.health=HP -windows.wndgameinprogress.gold=Gold Collected -windows.wndgameinprogress.depth=Maximum Depth -windows.wndgameinprogress.continue=Continue -windows.wndgameinprogress.erase=Erase -windows.wndgameinprogress.erase_warn_title=Really want erase this game? -windows.wndgameinprogress.erase_warn_body=This game will be erase -windows.wndgameinprogress.erase_warn_yes=Yes -windows.wndgameinprogress.erase_warn_no=No - -windows.wndsavegame.title=Save this game -windows.wndsavegame.start=Yes diff --git a/resources/com/hmdzl/spspd/change/messages/windows/windows_zh.properties b/resources/com/hmdzl/spspd/change/messages/windows/windows_zh.properties deleted file mode 100644 index 81f07c0c..00000000 --- a/resources/com/hmdzl/spspd/change/messages/windows/windows_zh.properties +++ /dev/null @@ -1,283 +0,0 @@ -windows.wndblacksmith.prompt=好吧,按之前说好的,我得帮你做点事:我可以重铸2件物品并将它们制成一个品质更好的。你携带的_暗金_越多,升级的损失也就越少。 -windows.wndblacksmith.select1=选择要重铸的物品 -windows.wndblacksmith.select2=选择作为素材的物品 -windows.wndblacksmith.reforge=重铸物品 - -windows.wndblacksmith2.prompt=好了。我想我能够帮你焊接强化组件和物品了。只要你带着_50枚暗金_。 -windows.wndblacksmith2.select1=选择要强化的物品 -windows.wndblacksmith2.select2=选择素材组件 -windows.wndblacksmith2.reforge=焊接它们 -windows.wndblacksmith2.success=好极了,让我们开始吧! - -windows.wndcatalogus.potions=药水 -windows.wndcatalogus.scrolls=卷轴 -windows.wndcatalogus.title=图鉴 - -windows.wndchallenges.title=挑战 - -windows.wndchooseway.message=你要选择哪个专精方向? -windows.wndchooseway.cancel=稍后决定 - -windows.wndclass.mastery=专精 - -windows.wnddescend.message=你真的确定要下楼吗,这样的话你当前的_露珠爆炸_效果会被完全清除。 -windows.wnddescend.reward=不要再说了 - -windows.wnderror.title=错误 - -windows.wndgame.settings=设置 -windows.wndgame.challenges=挑战 -windows.wndgame.rankings=排行榜 -windows.wndgame.start=踏上征途 -windows.wndgame.loadsave=读取记忆 -windows.wndgame.menu=主菜单 -windows.wndgame.exit=退出游戏 -windows.wndgame.return=继续冒险 - -windows.wndhero.stats=属性 -windows.wndhero.dew=露珠 -windows.wndhero.pet=宠物 -windows.wndhero.buffs=状态 -windows.wndhero$statstab.title=%d 级 %s -windows.wndhero$statstab.catalogs=图鉴 -windows.wndhero$statstab.journal=事件记录 -windows.wndhero$statstab.exp=经验 -windows.wndhero$statstab.str=力量 -windows.wndhero$statstab.health=生命 -windows.wndhero$statstab.gold=金币收集数 -windows.wndhero$statstab.depth=最高层数 -windows.wndhero$statstab.move=游戏时长 -windows.wndhero$statstab.time=当前时间 -windows.wndhero$statstab.atkskill=命中 -windows.wndhero$statstab.defskill=闪避 -windows.wndhero$statstab.magskill=法强 -windows.wndhero$statstab.hunger=饥饿值 -windows.wndhero$levelstatstab.title=%d 级 %s -windows.wndhero$levelstatstab.catalogs=图鉴 -windows.wndhero$levelstatstab.journal=事件记录 -windows.wndhero$levelstatstab.level_move=清层已用时间 -windows.wndhero$levelstatstab.level_max=限定时间上限 -windows.wndhero$levelstatstab.level_prefect=下层持续时间 -windows.wndhero$levelstatstab.level_left=剩余时间 -windows.wndhero$pettab.title=%d 级 %s -windows.wndhero$pettab.pet_feed=喂食 -windows.wndhero.choose_food=选择喂食的食物 -windows.wndhero$pettab.pet_call=呼唤 -windows.wndhero$pettab.pet_move=巡逻 -windows.wndhero$pettab.pet_stay=留守 -windows.wndhero$pettab.pet_attack=命中 -windows.wndhero$pettab.pet_hp=生命 -windows.wndhero$pettab.pet_kill=击杀数量 -windows.wndhero$pettab.pet_exp=经验 -windows.wndhero$pettab.pet_skills=技能 -windows.wndhero$pettab.pet_skills_ready=就绪 -windows.wndhero$pettab.pet_skills_turn=冷却 -windows.wndhero.pet_eat=你的宠物吃了%s -windows.wndhero.pet_faraway=你的宠物太远了 -windows.wndhero.pet_noeat=你的宠物不吃%s -windows.wndhero.heals=%+d生命 - -windows.wndimp.message=哦太棒了!你简直就是我的英雄!\n关于你的奖励,我现在没带钱,但我这有个更好的东西。这个戒指是我们的传家宝物,是我爷爷从一个死掉的圣骑士手上摘下来的。 -windows.wndimp.reward=接受戒指 - -windows.wndinfocell.nothing=那儿什么也没有。 - -windows.wndinfoitem.chest=宝箱 -windows.wndinfoitem.locked_chest=上锁的宝箱 -windows.wndinfoitem.crystal_chest=水晶宝箱 -windows.wndinfoitem.tomb=坟墓 -windows.wndinfoitem.skeleton=遗骸 -windows.wndinfoitem.remains=英雄遗骸 -windows.wndinfoitem.wont_know=打开前你是看不见里面有什么的! -windows.wndinfoitem.need_key=打开前你是看不见里面有什么的!你需要一枚金钥匙才能打开它。 -windows.wndinfoitem.inside=你看得见里面的%s,但你需要一枚金钥匙才能打开它。 -windows.wndinfoitem.owner=这个坟墓里或许埋葬着一些有用的东西,但墓主肯定是不会让你拿走的。 -windows.wndinfoitem.skeleton_desc=某个不幸的冒险者存在过的唯一证明。或许可以找找里面有什么值钱的东西。 -windows.wndinfoitem.remains_desc=你的某个先辈存在过的唯一证明。或许能找到点什么值钱的东西。 -windows.wndinfoitem.artifact=一件神器 -windows.wndinfoitem.wand=一根法杖 -windows.wndinfoitem.ring=一枚戒指 -windows.wndinfotrap.inactive=这个陷阱已经失效了,且不会被再次触发。 - -windows.wndjournal.title=日志 - -windows.wndlangs.completed=这个语言已被完全翻译并审核完毕。 -windows.wndlangs.unreviewed=这个语言尚未被完全审核。\n\n它也许还存在一些问题,不过所有的文本都已被翻译。 -windows.wndlangs.unfinished=这个语言尚未被完全翻译。\n\n大量文本可能仍然为英语。 -windows.wndlangs.transifex=所有翻译都由_Transifex_网站上的志愿者提供。 -windows.wndlangs.credits=制作名单 -windows.wndlangs.reviewers=审核者 -windows.wndlangs.translators=翻译者 - -windows.wndranking.error=无法载入更多信息。 -windows.wndranking.stats=属性 -windows.wndranking.items=物品 -windows.wndranking.badges=徽章 -windows.wndranking$statstab.title=%d 级 %s -windows.wndranking$statstab.challenges=挑战 -windows.wndranking$statstab.health=生命 -windows.wndranking$statstab.str=力量 -windows.wndranking$statstab.duration=游戏时长 -windows.wndranking$statstab.depth=最高层数 -windows.wndranking$statstab.enemies=怪物击杀数 -windows.wndranking$statstab.gold=金币收集数 -windows.wndranking$statstab.food=食物消耗量 -windows.wndranking$statstab.alchemy=药水酿造数 -windows.wndranking$statstab.ankhs=重生十字架使用量 -windows.wndranking$statstab.water=种植次数 - -windows.wndresurrect.message=你死了,但你同时被给予了第二次挑战这个地牢的机会。你愿意接受吗? -windows.wndresurrect.yes=是的,我要继续战斗! -windows.wndresurrect.no=不,我放弃了 - -windows.wndsadghost.rat_title=击败腐臭老鼠 -windows.wndsadghost.gnoll_title=击败豺狼诡术师 -windows.wndsadghost.crab_title=击败巨大螃蟹 -windows.wndsadghost.rat=谢谢你,那个可怕的老鼠被杀,我也终于可以安息了…不知道究竟是什么样畸形的魔法才能创造这样一个肮脏的生物… -windows.wndsadghost.gnoll=谢谢你,那个诡计多端的豺狼被杀,我也终于可以安息了……不知道究竟是什么样畸形的魔法使它如此诡诈… -windows.wndsadghost.crab=谢谢你,那只巨蟹被杀,我也终于可以安息了……不知道究竟是什么样畸形的魔法能让它活得那么长…… -windows.wndsadghost.give_item=\n\n请从这些东西里拿一件吧,现在对我来说都没用了…也许他们在你的旅程里能起到作用…\n\n对了,在这个地牢里还有一样物品,对我来说非常珍贵…如果你能…找到我的…玫瑰…… -windows.wndsadghost.weapon=幽灵的武器 -windows.wndsadghost.armor=幽灵的盔甲 -windows.wndsadghost.farewell=一路顺风,冒险者! - -windows.wndsettings.zoom_out=- -windows.wndsettings.zoom_in=+ -windows.wndsettings.zoom_default=界面大小 -windows.wndsettings.scale_up=系统UI比例 -windows.wndsettings.immersive=沉浸模式 -windows.wndsettings.music=音乐 -windows.wndsettings.sound=音效 -windows.wndsettings.brightness=明亮 -windows.wndsettings.quickslot=更多快捷栏 -windows.wndsettings.switch_port=转为竖屏模式 -windows.wndsettings.switch_land=转为横屏模式 -windows.wndsettings.system_font=系统字体 -windows.wndsettings.else=其他 - -windows.wndstory.sewers=这片地牢位于城市的正下方,它的最上层其实是由城市的下水道系统组成的。\n\n由于下方不断渗透的黑暗能量,这些本应无害的下水道生物变得越来越危险。城市向这里派出巡逻队并试图以此保护其上方的区域,但他们的影响也在逐渐式微。\n\n这片区域已经算是足够危险了,不过至少大部分邪恶魔法还不足以对这里造成影响。 -windows.wndstory.prison=多年以前一座地下监狱为了收容危险的犯罪者而建立于此。由于其严格的监管和高安全性,地表各处的囚犯都被带到这里经受时间的折磨。 \n\n但不久之后下方充斥着黑暗的瘴气在这里弥漫开来,扭曲了罪犯和狱卒的心智。\n\n监狱里充斥开来的混乱使其彻底失去了秩序,于是城市封锁了整个监狱。现今已经没有人知道这些高墙之下经历过无数死亡的生物究竟会是什么样子... -windows.wndstory.caves=这座从废弃监狱延伸而下的洞穴,早已空无一人。这里对于城市而言过于深入且很难开发,其中极度匮乏的矿物也无法激起矮人的兴趣。曾经在这里有一个为两个势力建立的贸易站,但在矮人国度衰落之后,只有无所不在的豺狼人和地下生物还居住在这里。 -windows.wndstory.city=矮人都市曾经是最宏伟的矮人城邦。在其鼎盛时期矮人的机械化部队曾成功击退过古神及其恶魔军队的入侵。但是也有传闻说,凯旋而归的战士同时带来了腐坏的种子,矮人王国的胜利正是其毁灭的开端。 -windows.wndstory.halls=很久以前这片区域曾是矮人都市的郊区。在与古神的战争中取得惨胜的矮人已经无力掌控并清理这片地区。于是存活的恶魔逐渐巩固了对这里的控制,现在,这里被称作恶魔大厅。\n\n很少有冒险者能够深入到这种地方... -windows.wndstory.sokoban1=最终我还是出发了,为了我的家乡。\n\n经过几个星期的时间,我来到了高塔,一个以奥术闻名的地方。\n\n 在高塔的食堂里我听到了这样一个传闻,有一块地方充斥着各种奇怪的箱子和陷阱,无数的赏金猎人尝试去取走那个地方的宝物,但都失败了。\n\n我想我知道该去哪了。\n\n-Otiluke,1345年。 -windows.wndstory.sokoban2=我以我的智慧轻松通过了第一个挑战,并获得了一些财宝,其中我发现有个金币上面附着了一些奇怪的能量。\n\n回到高塔后,我尝试解析这股能量,它似乎...是一个坐标。我希望我的石板还有用...\n\n-Otiluke,1348年。 -windows.wndstory.sokoban3=之前城堡里面的守卫给我造成了很大的麻烦,但是我还是成功取得了宝物。\n\n那是一件奇怪的眼镜,当我戴上它后,我看到整个世界都变了,充满了混沌和各种不知名的生物。\n\n我甚至想和它们来个接触...\n\n-Otiluke,1355年。 -windows.wndstory.sokoban4=经过多长时间我已经记不清了,但是我成功解析了那些生物的语言。\n\n 这个世界由zot创造,作为它的据点来攻击正常世界。先贤与之交战,并成功将两个世界隔离。\n\n 我突然有个大胆的想法,假如我能控制zot,我就有足够的力量来恢复我老家的荣光。\n\n zot的宫殿就在眼前。不过在那之前,我得要解决这个谜题。 \n\n-Otiluke,1361年。 -windows.wndstory.safelevel=甲方:商人\n乙方:英雄\n\n甲、乙双方就房屋买卖事项,经协商一致,达成以下合同:\n甲方自愿将休息小屋出卖给乙方,同时将该小屋的相关使用权出卖给乙方。\n双方议定上述房产及附属品总价款为1500金币。\n本协议一式两份,具有同等法律效力,自双方签字之日生效。 -windows.wndstory.town=多利亚小镇位于帝国边缘,属仙泉山脉腹地,为帝国最重要的旅游景点以及魔法产地之一。多利亚小镇的核心特产是魔法矿石,一般到这里游玩或者商业洽谈的人主要是为了购买各种魔法道具。此外,仙泉山“帝国第一大洞”魔岩洞,也是观光游览的佳处之一。\n\n\n\n抱歉,现在本景区暂不提供旅游观光以及其他服务。 -windows.wndstory.zot=成功了,我终于可以使用zot的力量了。重建老家简直轻而易举。\n\n哈哈哈...\n\n 我高估...\n\n...我不会...\n\n...===数据损坏===...\n\n-Otiluke,1405年。 -windows.wndstory.chaos=听的见吗,我是艾达,刺客协会的特工。\n\n你必须醒来,你所在的世界全是假象。\n\n相信我,我们的时间不多了。 - -windows.wndtradeitem.sale=正在出售:%s——%d金币 -windows.wndtradeitem.buy=花%d金币购买 -windows.wndtradeitem.steal=以%d%%减价购买 -windows.wndtradeitem.sell=卖出以获得%d金币 -windows.wndtradeitem.sell_1=卖出1个以获得%d金币 -windows.wndtradeitem.sell_all=全部卖出以获得%d金币 -windows.wndtradeitem.cancel=算了 -windows.wndtradeitem.sold=你卖出了你的%s并获得了%d金币。 -windows.wndtradeitem.bought=你买到了%s并花费了%d金币。 -windows.wndtradeitem.donot=你没法出售这件物品。 - -windows.wndwandmaker.dust=哦,我注意到你已经获得了灰尘!别担心那些幽灵,我能解决它们。就像我承诺的,你可以选择我制作的一把高品质法杖。 -windows.wndwandmaker.ember=哦,我注意到你已经获得了余烬!希望那个火元素没有造成太多麻烦。就像我承诺的,你可以选择我制作的一把高品质法杖。 -windows.wndwandmaker.berry=哦,我注意到你已经获得了莓果!希望那株植物没有对你造成太多困扰。就像我承诺的,你可以选择我制作的一把高品质法杖。 -windows.wndwandmaker.message=哦,你成功了,希望没给你带来太多麻烦。选择你的奖励吧。 -windows.wndwandmaker.battle=战斗法杖 -windows.wndwandmaker.no_battle=辅助法杖 -windows.wndwandmaker.farewell=祝你在试炼中好运,%s! - -windows.wndtinkerer.info1=嗯...这就是露珠菌孢啊...稍等...好了,完成了。作为回报,我可以提升你的露珠瓶的等级。同时,你需要做出选择,决定你强化装备的方式。 -windows.wndtinkerer.water=祝福强化 -windows.wndtinkerer.draw=精确强化 -windows.wndtinkerer.spinfo=告诉我它们之间的区别 -windows.wndtinkerer.dungeon=你感觉你的背包里面充满了奇异的能量。 -windows.wndtinkerer.farewell=祝你好运,%s! - -windows.wndtinkerer2.info=喔,你找到哪个啦。万分感谢,我可以稍微改进一下你的露珠瓶。同时,选择一个奖励吧。 -windows.wndtinkerer2.mr=新的无人机 -windows.wndtinkerer2.call=新的仙女卡牌 -windows.wndtinkerer2.mob=新的遥控卫星 -windows.wndtinkerer2.farewell=小镇见,%s! - -windows.wndtinkerer3.info=好吧看,看起来你又找到了我所需要的。啊...这是力量试练里的菌孢...太神奇了。好了,作为回报,我会继续升级你的露珠瓶。它的容量会大幅度的扩大,并且在使用加速时有几率提供额外的飞行能力。 -windows.wndtinkerer3.upgrade=露珠瓶升级v3 -windows.wndtinkerer3.farewell=祝你好运,%s! - -windows.wnddewdrawinfo.info1=露珠强化是你的露珠瓶升级后的功能之一。它不仅可以给你提供升级功能,并且会给你一个叫做_露珠爆炸_的状态。当你处于_露珠爆炸_的状态时,无论你击杀任何东西,它的尸体周围都会出现超多的露珠。 -windows.wnddewdrawinfo.info2=但是,_露珠爆炸_的效果并不是永久的。它只会在进入新的楼层是为你提供,并且根据你该层的清图速度来给你提供下层的持续时间。只要该层未被清理完全,新的怪物就不会生成。 -windows.wnddewdrawinfo.info3=_祝福强化_将清除你身上的诅咒,并随机强化你身上的装备。 -windows.wnddewdrawinfo.info4=_精确强化_仅强化一件道具几次,但它可以提供一个鉴定效果。 -windows.wnddewdrawinfo.ok=我懂了 - -windows.wndegoalinfo.title=西西的测试 -windows.wndegoalinfo.info1=喵呜,你好啊,冒险者。这里真是一个平静安宁的地方,你也这么觉得对吧?你是我见过的最阳光的冒险者,因为本喵没有感觉到你心头的压力。\n\n喵呜,那么问题来了:\n_Egoal_是不是个很不错的家伙呢? -windows.wndegoalinfo.yes=当然 -windows.wndegoalinfo.tell1=你的回答真令本喵很高兴,喵呜~不过这次我没有礼物给你喵。祝你好运。 -windows.wndegoalinfo.no=他是谁? -windows.wndegoalinfo.tell2=喵呜,你听说过_黑暗的像素地牢_吗?如果有机会,希望你也能去那里继续你的冒险,喵,你会去的对吧,以一个冒险者的身份。 - -windows.wndotiluke.title=选择目的地点 -windows.wndotiluke.room1=休息小屋 -windows.wndotiluke.room2=解谜-推箱教程 -windows.wndotiluke.room3=解谜-奇异城堡 -windows.wndotiluke.room4=解谜-传送迷阵 -windows.wndotiluke.room5=解谜-终极挑战 -windows.wndotiluke.room6=多利亚小镇 -windows.wndotiluke.room7=春节宝地 -windows.wndotiluke.room8=能源核心 - -windows.wndchallengebook.title=选择挑战目标 -windows.wndchallengebook.room1=下水道挑战 -windows.wndchallengebook.room2=监狱挑战 -windows.wndchallengebook.room3=洞窟挑战 -windows.wndchallengebook.room4=城市挑战 -windows.wndchallengebook.room5=勇气试炼 -windows.wndchallengebook.room6=力量试炼 -windows.wndchallengebook.room7=智慧试炼 - -windows.wndhotel.message=想住这个旅馆的VIP房间吗?一次100金币 -windows.wndhotel.buy=我要住 -windows.wndhotel.more_gold=你的金币不够啊,下次再来吧。 - -windows.wndons.message=看起来这个件衣服给这位豺狼先生穿十分合适,要给他吗? -windows.wndons.give=给他吧 - -windows.wndalchemy.title=海拉尔的烹饪锅 -windows.wndalchemy.text=放入材料以制作新的物品! -windows.wndalchemy.select=选择一件食材 -windows.wndalchemy.combine=合成 -windows.wndalchemy.cancel=取消 - -windows.wndmix.title=矮人的奇妙实验 -windows.wndmix.text=放入法杖或戒指,然后来进行一次奇妙的实验吧。这花费1000金币。 -windows.wndmix.select=选择一件道具 -windows.wndmix.combine=合成 -windows.wndmix.cancel=取消 - -windows.wndaflyinfo.title=饥饿的阿比 -windows.wndaflyinfo.text=阿比饿了,但是我现在没有食材。你能给我找一个干粮,烤肉和浆果吗?这样我就可以给他们做吃的了。当然我也会把做好的吃的给你一份 -windows.wndaflyinfo.select=选择一件食材 -windows.wndaflyinfo.combine=合成 -windows.wndaflyinfo.cancel=取消 - -windows.wndstartgame.title=选择一位英雄 -windows.wndstartgame.start=开始游戏 - -windows.wndgameinprogress.title=%1$d级%2$s -windows.wndgameinprogress.challenges=挑战 -windows.wndgameinprogress.exp=经验 -windows.wndgameinprogress.str=力量 -windows.wndgameinprogress.health=生命 -windows.wndgameinprogress.gold=金币收集数 -windows.wndgameinprogress.depth=最高层数 -windows.wndgameinprogress.continue=继续 -windows.wndgameinprogress.erase=删除 -windows.wndgameinprogress.erase_warn_title=你确定要删除这个存档吗? -windows.wndgameinprogress.erase_warn_body=你将失去这局游戏的所有进度 -windows.wndgameinprogress.erase_warn_yes=是,删除这个存档 -windows.wndgameinprogress.erase_warn_no=不,我要接着玩 - -windows.wndsavegame.title=保存游戏 -windows.wndsavegame.start=确定 \ No newline at end of file diff --git a/resources/com/hmdzl/spspd/messages/actors/actors.properties b/resources/com/hmdzl/spspd/messages/actors/actors.properties index 2b1e786f..87622b38 100644 --- a/resources/com/hmdzl/spspd/messages/actors/actors.properties +++ b/resources/com/hmdzl/spspd/messages/actors/actors.properties @@ -6,6 +6,7 @@ actors.blobs.electrishock.desc=A field of electricity is sparking brightly here. actors.blobs.fire.desc=A fire is raging here, grilling flesh both living and dead within its path. actors.blobs.foliage.desc=Shafts of light pierce the gloom of the underground garden. actors.blobs.frostgas.desc=The air is unnaturally frigid here. +actors.blobs.frostcloud.desc=There is a very cold snow cloud around here. Units in snow clouds will be frostbitten. actors.blobs.goowarn.desc=Specks of dark energy are swarming here! actors.blobs.heallight.desc=Shafts of light pierce the gloom of the underground, restoring life to all that it touches! actors.blobs.memoryfire.desc=A blue fire is raging here. @@ -33,44 +34,79 @@ actors.blobs.nmgas.desc=A grey cloud of nano gas is swirling here. actors.blobs.poisongas.desc=A brown cloud of swamp gas is swirling here. +actors.blobs.shadowcurse.desc=Everything is covered with a shadow web here. It will curse everyone who step in. + +actors.char.htdown=%s deal %s damage. + ###buffs -actors.buffs.amok.desc=Amok causes a state of great rage and confusion in its target.\n\nWhen a creature is amoked, they will attack whatever is near them, whether they be friend or foe.\n\nTurns of amok remaining: %s. actors.buffs.amok.name=Amok -actors.buffs.arcane.desc=Magical power radiates throughout your body, increasing your magic power by 10 points so that your wands deal extra damage.\nTurns of Arcane remaining: %s. +actors.buffs.amok.desc=Amok causes a state of great rage and confusion in its target.\n\nWhen a creature is amoked, they will attack whatever is near them, whether they be friend or foe.\n\nTurns of amok remaining: %s. + actors.buffs.arcane.name=Arcane -actors.buffs.armorbreak.desc=%s turns,taken more %s%% damage. +actors.buffs.arcane.desc=Magical power radiates throughout your body, increasing your magic power by 10 points so that your wands deal extra damage.\nTurns of Arcane remaining: %s. + +actors.buffs.superarcane.name=Arcane plus +actors.buffs.superarcane.desc=Magical power radiates throughout your body, increasing your magic power by %s points so that your wands deal extra damage.\nTurns of Arcane remaining: %s. + actors.buffs.armorbreak.name=Armor Break -actors.buffs.attackdown.desc=%s turns, reduce%s%% attack. +actors.buffs.armorbreak.desc=%s turns,taken more %s%% damage. + actors.buffs.attackdown.name=Attack dowm -actors.buffs.attackup.desc=%s turns, gain %s%% attack damage. +actors.buffs.attackdown.desc=%s turns, reduce%s%% attack. + actors.buffs.attackup.name=Attack Up -actors.buffs.awareness.desc=Treasure serch allow you find every treasure in this floor.\n\n\nTurn of treasure search remaining: %s turns. +actors.buffs.attackup.desc=%s turns, gain %s%% attack damage. + actors.buffs.awareness.name=Treasure serch -actors.buffs.barkskin.desc=Your skin is hardened, it feels rough and solid like bark.\n\nThe hardened skin increases your effective armor, allowing you to better defend against physical attack. The armor bonus will decrease by one point each turn until it expires.\n\nYour armor is currently increased by: %d. +actors.buffs.awareness.desc=Treasure serch allow you find every treasure in this floor.\n\n\nTurn of treasure search remaining: %s turns. + actors.buffs.barkskin.name=Barkskin -actors.buffs.berryregeneration.desc=Regeneration make you health.\n\nTurn of regeneration left: %d turns. +actors.buffs.barkskin.desc=Your skin is hardened, it feels rough and solid like bark.\n\nThe hardened skin increases your effective armor, allowing you to better defend against physical attack. The armor bonus will decrease by one point each turn until it expires.\n\nYour armor is currently increased by: %d. + actors.buffs.berryregeneration.name=Regeneration +actors.buffs.berryregeneration.desc=Regeneration make you health.\n\nTurn of regeneration left: %d turns. + +actors.buffs.bleeding.name=Bleeding actors.buffs.bleeding.desc=That wound is leaking a worrisome amount of blood.\n\nBleeding causes damage every turn. Each turn the damage decreases by a random amount, until the bleeding eventually stops.\n\nCurrent bleed damage: %d. actors.buffs.bleeding.heromsg=You are bleeding. -actors.buffs.bleeding.name=Bleeding -actors.buffs.bless.desc=A great burst of focus, some say it is inspired by the gods.\n\nBlessing significantly increases accuracy and evasion, making the blessed much more effective in combat.\n\nTurns of bless remaining: %s. -actors.buffs.bless.name=Bless -actors.buffs.blindness.desc=Blinding turns the surrounding world into a dark haze.\n\nWhile blinded, a character can't see more than one tile infront of themselves, rendering ranged attacks useless and making it very easy to lose track of distant enemies. Additionally, a blinded hero is unable to read scrolls or books.\n\nTurns of blindness remaining: %s. -actors.buffs.blindness.heromsg=You are blinded! -actors.buffs.blindness.name=Blinded +actors.buffs.lokispoison.name=Power poison +actors.buffs.lokispoison.desc=Poison works its way through the body, slowly impairing its internal functioning.\n\nPoison deals damage each turn proportional to how long until it expires.\n\nTurns of poison remaining: %s. +actors.buffs.lokispoison.heromsg=You are poisoned! + +actors.buffs.poison.name=Poisoned +actors.buffs.poison.desc=Poison works its way through the body, slowly impairing its internal functioning.\n\nPoison deals damage each turn proportional to how long until it expires.\n\nTurns of poison remaining: %s. +actors.buffs.poison.heromsg=You are poisoned! + +actors.buffs.venom.name=Venomed +actors.buffs.venom.desc=Venom is a extremely caustic and dangerous poison.\n\nUnlike poison, whose damage lowers over time, venom does increasing damage the longer it stays on a target.\n\nTurns of venom remaining: %s.\nCurrent venom damage: %d. + +actors.buffs.beold.name=ageing +actors.buffs.beold.desc=Your body is aging.\n\nAging causes a small amount of damage each round, but it will prevent normal life recovery.\n\nRemaining aging effect duration: %sturn +actors.buffs.beold.heromsg=You are aging! + +actors.buffs.becorrupt.name=erode +actors.buffs.becorrupt.desc=You've been eroded.\n\nEvery time your HP changes, your HP will be lower than your last HP, until eroded end.\n\nErosion effects remaining :%s + +actors.buffs.shocked.desc=Lightning coarses through your body, waiting for a moment to be released, attack will discharge it, and disarm your hand. left %s turns.. +actors.buffs.shocked.name=Electrostatic turbulence + +actors.buffs.shocked2.desc=Lightning coarses through your body, waiting for a moment to be released, move will discharge it, and stop your step. left %s turns.. +actors.buffs.shocked2.name=Electrostatic turbulence two + +actors.buffs.burning.name=Burning actors.buffs.burning.burnsup=%s burns up! actors.buffs.burning.desc=Few things are more distressing than being engulfed in flames.\n\nFire will deal damage every turn until it is put out by water or it expires. Fire can be extinquished by stepping into water, or from the splash of a shattering potion.\n\nAdditionally, the fire may ignite flammable terrain or items that it comes into contact with.\n\nTurns of burning remaining: %s. actors.buffs.burning.heromsg=You catch fire! -actors.buffs.burning.name=Burning +actors.buffs.dburning.name=demon fire actors.buffs.dburning.desc=Demon fire will cause fire damage and cannot be extinguished by water.\n\n%s turn left. actors.buffs.dburning.heromsg=You catch fire! -actors.buffs.dburning.name=demon fire +actors.buffs.charm.name=Charmed actors.buffs.charm.desc=A charm is manipulative magic that can make enemies temporarily adore eachother.\n\nCharacters affected by charm are unable to directly attack the enemy they are charmed by. Attacking other targets is still possible however.\n\nTurns of charm remaining: %s. actors.buffs.charm.heromsg=You are charmed! -actors.buffs.charm.name=Charmed + actors.buffs.chill.desc=Not quite frozen, but still much too cold.\n\nChilled targets perform all actions more slowly, depending on how many turns are left in the effect. At it's worst, this is equivalent to being slowed.\n\nTurns of chill remaining: %s.\nSpeed is reduced by: %s%% actors.buffs.chill.freezes=%s freezes! actors.buffs.chill.name=Chilled @@ -81,8 +117,10 @@ actors.buffs.combo.combo=%d Combo actors.buffs.combo.desc=Through building momentum, the gladiator deals bonus damage.\n\nYour combo will keep building with quick attacks. The higher your combo gets, the faster your attacks will need to be. Failing to land a hit quickly enough will reset the combo. actors.buffs.combo.name=Combo actors.buffs.combo.notenough=\n\nYour combo has not built up enough to give you bonus damage yet. + actors.buffs.countdown.desc=After some time you will take lots of damage.\n\ntime remain : %d -actors.buffs.countdown.name=Countdown +actors.buffs.countdown.name=Damnation + actors.buffs.cripple.desc=You're pretty sure legs aren't meant to bend that way.\n\nCrippled halves movement speed, making moving a tile usually take two turns instead of one.\n\nTurns of cripple remaining: %s. actors.buffs.cripple.heromsg=You are crippled! actors.buffs.cripple.name=Crippled @@ -126,23 +164,31 @@ actors.buffs.actbuff.nmstop.name=nano fusing actors.buffs.frost.desc=Not to be confused with freezing solid, this more benign freezing simply encases the target in ice.\n\nFreezing acts similarly to paralysis, making it impossible for the target to act. Unlike paralysis, freezing is immediately cancelled if the target takes damage, as the ice will shatter.\n\nTurns of freeze remaining: %s. actors.buffs.frost.freezes=%s freezes! actors.buffs.frost.name=Frozen + actors.buffs.fullmoonstrength.desc=You become stronger, and you will deal 2.5 damage. actors.buffs.fullmoonstrength.heromsg=You become stronger. actors.buffs.fullmoonstrength.name=Moon power + actors.buffs.fury.desc=You are angry, enemies won't like you when you're angry.\n\nA great rage burns within you, increasing the damage you deal with physical attacks by 25%% and reduce damage you taken by 25%.\n\nThis rage will last as long as you are injured below 60% health. actors.buffs.fury.heromsg=You become furious! actors.buffs.fury.name=Furious + actors.buffs.gasesimmunity.desc=Some strange force is filtering out the air around you, it's not causing you any harm, but it blocks out everything but air so effectively you can't even smell anything!\n\nYou are immune to the effects of all gasses while this buff lasts.\n\nTurns of gas immunity remaining: %s. actors.buffs.gasesimmunity.name=Immune to gases + actors.buffs.glassshield.desc=This buff is some kind of bless by god of glass, it will reduce any damage to 10 . Bless Left: %s. actors.buffs.glassshield.name=Glass Shield + actors.buffs.growseed.desc=You will lost health, and heal others.\n\nleft time:%s turns actors.buffs.growseed.heromsg=Strange seeds grow on you. actors.buffs.growseed.name=Leech Seed + actors.buffs.hastebuff.desc=You move fast, %s turns left. actors.buffs.hastebuff.name=Haste + actors.buffs.hot.desc=Hot make you easy to take damage. \n\nTurns of hot remaining: %s. actors.buffs.hot.name=Hot + actors.buffs.hunger.cursedhorn=The cursed horn steals some of the food energy as you eat. actors.buffs.hunger.desc=\n\nHunger slowly increases as you spend time in the dungeon, eventually you will begin to starve. While starving you will slowly lose health instead of regenerating it.\n\nRationing is important! If you have health to spare starving isn't a bad idea if it means there will be more food later. Effective rationing can make food last a lot longer! actors.buffs.hunger.desc_intro_hungry=You can feel your stomach calling out for food, but it's not too urgent yet. @@ -154,68 +200,92 @@ actors.buffs.hunger.onoverfed=You are overfed. actors.buffs.hunger.onstarving=You are starving, actors.buffs.hunger.overfed=Overfed actors.buffs.hunger.starving=Starving + actors.buffs.invisibility.desc=You are completely blended into the surrounding terrain, making you impossible to see.\n\nWhile you are invisible enemies are unable to attack or follow you. Physical attacks and magical effects (such as scrolls and wands) will immediately cancel invisibility.\n\nTurns of invisibility remaining: %s. actors.buffs.invisibility.name=Invisible + actors.buffs.levitation.desc=A magical force is levitating you over the ground, making you feel weightless.\n\nWhile levitating you ignore all ground-based effects. Traps won't trigger, water won't put out fire, plants won't be trampled, roots will miss you, and you will hover right over pits. Be careful, as all these things can come into effect the second the levitation ends!\n\nTurns of levitation remaining: %s. actors.buffs.levitation.name=Levitating + actors.buffs.light.desc=Even in the Darkest Dungeon, a steady light at your side is always comforting.\n\nLight helps keep darkness at bay, allowing you to see a reasonable distance despite the environment.\n\nTurns of illumination remaining: %s. actors.buffs.light.name=Illuminated + actors.buffs.highlight.desc=Even in the Darkest Dungeon, a steady light at your side is always comforting.\n\nLight helps keep darkness at bay, allowing you to see a unreasonable distance despite the environment.\n\nTurns of illumination remaining: %s. actors.buffs.highlight.name=high light + actors.buffs.locked.desc=Invisible lock locked your backpack, so you can't use some items, left %s turns. actors.buffs.locked.name=Locked -actors.buffs.lokispoison.desc=Poison works its way through the body, slowly impairing its internal functioning.\n\nPoison deals damage each turn proportional to how long until it expires.\n\nTurns of poison remaining: %s. -actors.buffs.lokispoison.heromsg=You are poisoned! -actors.buffs.lokispoison.name=Power poison + +actors.buffs.magicalsleep.name=Magical Sleep actors.buffs.magicalsleep.desc=This character has fallen into a deep magical sleep which they will not wake from naturally.\n\nMagical sleep is similar to regular sleep, except that only damage will cause the target to wake up.\n\nFor the hero, magical sleep has some restorative properties, allowing them to rapidly heal while resting. actors.buffs.magicalsleep.fallasleep=You fall into a deep magical sleep. -actors.buffs.magicalsleep.name=Magical Sleep actors.buffs.magicalsleep.toohealthy=You are too healthy, and resist the urge to sleep. actors.buffs.magicalsleep.wakeup=You wake up feeling refreshed and healthy. + actors.buffs.magicimmunity.desc=Magic immunity can help you resistances some buffs.\n\nTurn left : %s actors.buffs.magicimmunity.name=Magic shield + actors.buffs.mindvision.desc=Somehow you are able to see all creatures on this floor through your mind. It's a weird feeling.\n\nAll characters on this floor are visible to you as long as you have mind vision. Seeing a creature through mind vision counts as it being seen or nearby for the purposes of many magical effects.\n\nTurns of mind vision remaining: %s. actors.buffs.mindvision.name=Mind vision + actors.buffs.muscle.desc=Gain 2 str. Left: %s turns. actors.buffs.muscle.name=Muscle + +actors.buffs.ooze.name=Caustic ooze actors.buffs.ooze.desc=This sticky acid clings to flesh, slowly melting it away.\n\nOoze will deal consistent damage until it is washed off in water.\n\nOoze does not expire on its own and must be removed with water. actors.buffs.ooze.heromsg=Caustic ooze eats your flesh. Wash it away! -actors.buffs.ooze.name=Caustic ooze + +actors.buffs.paralysis.name=Paralysed actors.buffs.paralysis.desc=Oftentimes the worst thing to do is nothing at all.\n\nParalysis completely halts all actions, forcing the target to wait until the effect wears off. The pain from taking damage can also cause characters to snap out of paralysis.\n\nTurns of paralysis remaining: %s. actors.buffs.paralysis.heromsg=You are paralysed! -actors.buffs.paralysis.name=Paralysed -actors.buffs.poison.desc=Poison works its way through the body, slowly impairing its internal functioning.\n\nPoison deals damage each turn proportional to how long until it expires.\n\nTurns of poison remaining: %s. -actors.buffs.poison.heromsg=You are poisoned! -actors.buffs.poison.name=Poisoned -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.name=Recharging -actors.buffs.rhythm.desc=Your rhythm improve your hit skill and evade skill, left %s turns. +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.rhythm.name=Rhythm -actors.buffs.rhythm2.desc=Your echo rhythm improve your speed, attack and defense, left %s turns. +actors.buffs.rhythm.desc=Your rhythm improve your hit skill and evade skill, left %s turns. + actors.buffs.rhythm2.name=Echo +actors.buffs.rhythm2.desc=Your echo rhythm improve your speed, attack and defense, left %s turns. + +actors.buffs.roots.name=Rooted 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.heromsg=You can't move! -actors.buffs.roots.name=Rooted -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.name=Shadowmelded -actors.buffs.shield.desc=Super shield +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.shield.name=Moon shield -actors.buffs.shieldblock.desc=This debuff is upgrade by stun.\n\nturn left : %s +actors.buffs.shield.desc=Super shield + actors.buffs.shieldblock.name=Holy stun -actors.buffs.shocked.desc=Lightning coarses through your body, waiting for a moment to be released, attack will discharge it, and disarm your hand. left %s turns.. -actors.buffs.shocked.name=Electrostatic turbulence +actors.buffs.shieldblock.desc=This debuff is upgrade by stun.\n\nturn left : %s + +actors.buffs.bless.name=Bless +actors.buffs.bless.desc=A great burst of focus, some say it is inspired by the gods.\n\nBlessing significantly increases accuracy and evasion, making the blessed much more effective in combat.\n\nTurns of bless remaining: %s. + +actors.buffs.blindness.name=Blinded +actors.buffs.blindness.desc=Blinding turns the surrounding world into a dark haze.\n\nWhile blinded, a character can't see more than one tile infront of themselves, rendering ranged attacks useless and making it very easy to lose track of distant enemies. Additionally, a blinded hero is unable to read scrolls or books.\n\nTurns of blindness remaining: %s. +actors.buffs.blindness.heromsg=You are blinded! + actors.buffs.silent.desc=Can't use scroll and wand, %s turns left. actors.buffs.silent.name=silent + actors.buffs.slow.desc=Slowing magic affects the target's rate of time, to them everything is moving super-fast.\n\nA slowed character performs all actions in twice the amount of time they would normally take.\n\nTurns of slow remaining: %s. actors.buffs.slow.name=Slowed + actors.buffs.snipersmark.desc=The sniper is honed in on a nearby target, gaining increased attack speed and armor penetration while attacking it.\n\nThe sniper will remain honed in until she switches targets, stops attacking, or the target dies. actors.buffs.snipersmark.name=Sniper's mark + actors.buffs.soulmark.desc=The warlock has tapped into the soul of this creature. He will heal and satisfy his hunger as it takes physical damage.\n\nTurns of soul mark remaining: %s. actors.buffs.soulmark.name=Soul Mark + actors.buffs.speed.desc=Move fast actors.buffs.speed.name=Speed + actors.buffs.strength.desc=Next attack will be powerful. actors.buffs.strength.name=Strength + actors.buffs.tar.desc=Tar make you slower and easy to fire. actors.buffs.tar.heromsg=Tar is covered with your body. actors.buffs.tar.name=Tar @@ -223,18 +293,24 @@ actors.buffs.tar.name=Tar actors.buffs.terror.desc=Terror is manipulative magic which forces its target into an uncontrollable panic.\n\nTerrified characters are forced to run away from their opponent, trying to put as many doors and walls between them as possible. The shock of pain is enough to break this effect, however.\n\nTurns of terror remaining: %s. actors.buffs.terror.name=Terrified -actors.buffs.venom.desc=Venom is a extremely caustic and dangerous poison.\n\nUnlike poison, whose damage lowers over time, venom does increasing damage the longer it stays on a target.\n\nTurns of venom remaining: %s.\nCurrent venom damage: %d. -actors.buffs.venom.name=Venomed actors.buffs.vertigo.desc=Walking in a straight line can be difficult when the whole world is spinning.\n\nWhile under the effects of vertigo, characters who attempt to move will go in a random direction, instead of the one they intended to go in.\n\nTurns of vertigo remaining: %s. actors.buffs.vertigo.name=Vertigo -actors.buffs.weakness.desc=Your gear suddenly feels a lot heavier.\n\nWeakening magic is affecting you, reducing your effective strength by 2 points.\n\nTurns of weakness remaining: %s. -actors.buffs.weakness.heromsg=You feel weakened! -actors.buffs.weakness.name=Weakened + +actors.buffs.strdown.desc=Your gear suddenly feels a lot heavier.\n\nWeakening magic is affecting you, reducing your effective strength by 2 points.\n\nTurns of weakness remaining: %s. +actors.buffs.strdown.heromsg=You feel weakened! +actors.buffs.strdown.name=Weakened + actors.buffs.wet.desc=Wet makes your body heavy, make your hard to hit target and dodge attack. \n\nTurns of wet remaining: %s. actors.buffs.wet.name=Wet -actors.buffs.shieldarmor.name=Alien Shield -actors.buffs.shieldarmor.desc=A kind of energy armor is protecting you.\n\nThis herbal armor will absorb 100%% of all damage you take, until it eventually runs out of durability and collapses.\n\nArmor remaining: %d. +actors.buffs.shieldarmor.name=Melee Shield +actors.buffs.shieldarmor.desc=A kind of energy armor is protecting you.\n\nThis armor will absorb 100%% of melee damage you take, until it eventually collapses.\n\nArmor remaining: %d. + +actors.buffs.magicarmor.name=Magic Shield +actors.buffs.magicarmor.desc=A kind of energy armor is protecting you.\n\nThis armor will absorb 100%% of magic damage you take, until it eventually collapses.\n\nArmor remaining: %d. + +actors.buffs.energyarmor.name=Energy Shield +actors.buffs.energyarmor.desc=A kind of energy armor is protecting you.\n\nThis armor will absorb 100%% of all damage you take, until it eventually collapses.\n\nArmor remaining: %d. actors.buffs.feed.name=Feed actors.buffs.feed.desc=You will gain more health limit from each mob you killed. %s turn left. @@ -301,6 +377,9 @@ actors.buffs.taunt.desc=??? actors.buffs.damageup.name=Counter attack actors.buffs.damageup.desc=Attack damage improve %s. +actors.buffs.onepunch.name=serious punch +actors.buffs.taunt.desc=??? + actors.buffs.newcombo.name=Fighter hit actors.buffs.newcombo.combo=%dhit actors.buffs.newcombo.bad_target=Your target must be an enemy within range. @@ -353,12 +432,27 @@ actors.buffs.mindbuff.weakmind.desc=taken more damage actors.buffs.mindbuff.keepmind.name=Mind-Firm actors.buffs.mindbuff.keepmind.desc=resist some debuff +actors.buffs.frostice.name=frostbite +actors.buffs.frostice.desc=Frostbite will slow down the movement speed of the target and cause damage during movement.\n\nDuration:%s. + actors.buffs.stoneice.name=stone ice actors.buffs.stoneice.desc=improve damage but slow speed. if you move you will taken lots of damage. \n\n %s turns left. actors.buffs.magicweak.name=magic weak actors.buffs.magicweak.desc=taken more wand damage.\n\n%sturns left. +actors.buffs.delayprotect.name=delay protect +actors.buffs.delayprotect.desc=gain glass shield when this end.\n\nleft turn:%s. + +actors.buffs.infjump.name=Infinite jump +actors.buffs.infjump.desc=Infinite jump\n\nDuration:%s. + +actors.buffs.lightshootattack.name=light strike +actors.buffs.lightshootattack.desc=Holy Light strike powerful light continues to strike this place. stay away from this area to avoid damage.\n\nRemaining strike effect duration: %sturn. + +actors.buffs.shadowcurse.name=shadows damned +actors.buffs.shadowcurse.desc=The curse will deal damage to you after several rounds. Remaining rounds:%s. + ###hero actors.char.def_verb=dodged actors.char.out_of_paralysis=The pain snapped %s out of paralysis. @@ -417,6 +511,15 @@ actors.hero.heroclass.follower_desc_item=Follower have _WoodenStaff_ and _Potion actors.hero.heroclass.follower_desc_loadout=Follower has chance to use a item with no cost, include potions, scrolls, foods, and enchanting items.\n\nFollower spend less gold in shop.\n\nFollower gain some gold after eat any food. actors.hero.heroclass.follower_desc_misc=_Scrolls of Terror_ and _Potion of Healing_ are identified from the beginning. +actors.hero.heroclass.ascetic=ascetic +actors.hero.heroclass.ascetic_desc_item=ascetic has _weird dust_ and _skull_.\n\n_Amplification battery_ is her special item +actors.hero.heroclass.ascetic_desc_loadout=ascetic gain +3 magic power, and deal more damage based on her magic power when she attack.\n\nAfter taken huge damage, she will gain glass shield buff.\n\nascetic gain sheild after eat anything. +actors.hero.heroclass.ascetic_desc_misc=_Scrolls of Remove Curse_ and _Potion of Frost_ are identified from the beginning. + +actors.hero.herosubclass.minder=Minder +actors.hero.herosubclass.minder_desc=_Minder_ gain more magic power, and deal more damage when attack. +actors.hero.herosubclass.mecher=Gear +actors.hero.herosubclass.mecher_desc=_Gear_ taken less damage, and gain improve after kill enemy. actors.hero.herosubclass.pastor=pastor actors.hero.herosubclass.pastor_desc=_pastor_ heal himself fast, allowed his health more than his health limit,and charm enemy after attack. actors.hero.herosubclass.artisan=artisan @@ -455,56 +558,66 @@ actors.hero.heroclass.huntress_name=huntress actors.hero.heroclass.performer_name=performer actors.hero.heroclass.soldier_name=soldier actors.hero.heroclass.follower_name=follower +actors.hero.heroclass.ascetic_name=ascetic ###mobs actors.mobs.acidic.desc=Acidic scorpio is more dangerous than normal scorpio. The acid in its body releases when it is in danger, and protects itself against predators. actors.mobs.acidic.name=Acidic scorpio + actors.mobs.adultdragonviolet.atk=Away from here! Intruder! actors.mobs.adultdragonviolet.desc=Guard dungeon is summon by someone, but in peoples' eyes, it same as normal dungeon. actors.mobs.adultdragonviolet.die=For Dolye town!! actors.mobs.adultdragonviolet.name=Guard dungeon + actors.mobs.albino.desc=This is a rare breed of marsupial rat, with pure white fur and jagged teeth. Dark energy makes demon blood around it. actors.mobs.albino.name=Albino rat + actors.mobs.albinopiranha.desc=The Albino giant piranha living in this place have been degenerating for hundreds of years. However, their other senses are unusually sensitive, and they can feel the changes of water flow around them, and they are also very ferocious. actors.mobs.albinopiranha.name=Albino giant piranha -actors.mobs.assassin.def_verb=evaded + actors.mobs.assassin.desc=Assassin ninja are members of the Tengu assassin clan. They fight with ranged attacks at high speed. actors.mobs.assassin.name=Assassin ninja + actors.mobs.bandit.desc=Crazy bandit can harm target when steal from it. actors.mobs.bandit.name=Crazy bandit + actors.mobs.banditking.desc=This thief can put bombs on your body. actors.mobs.banditking.die=Give you a break this time. actors.mobs.banditking.dis=Life bandit disapper. actors.mobs.banditking.name=Life bandit actors.mobs.banditking.spork=Where is my treasure? -actors.mobs.bat.def_verb=evaded + actors.mobs.bat.desc=These brisk and tenacious inhabitants of cave domes may defeat much larger opponents by replenishing their health with each successful attack. actors.mobs.bat.name=Vampire bat actors.mobs.bluecat.name=Blue*Cat -actors.mobs.bluewraith.def_verb=evaded actors.mobs.bluewraith.desc=A Wraith warrior has been dispatched to avenge the dungeon. actors.mobs.bluewraith.name=Wraith warrior + actors.mobs.brokenrobot.broken=System... down... actors.mobs.brokenrobot.desc=A wandering robot unfinshed and broken down. You can feel its malice toward intruders. actors.mobs.brokenrobot.explode=Explode on!! actors.mobs.brokenrobot.name=Broken robot -actors.mobs.brownbat.def_verb=evaded + actors.mobs.brownbat.desc=Basically small, flying rats. Careful they don't get tangled in your hair. actors.mobs.brownbat.die=The small bat's shrieks alert nearby enemies! actors.mobs.brownbat.name=Small bat + actors.mobs.brute.desc=Brutes are the largest, strongest and toughest of all gnolls. When severely wounded, they go berserk, inflicting even more damage to their enemies. actors.mobs.brute.enraged=Gnoll brute become enraged. actors.mobs.brute.name=Gnoll brute + actors.mobs.crab.def_verb=parried actors.mobs.crab.desc=These huge crabs are at the top of the food chain in the sewers. They are extremely fast and their thick carapace can withstand heavy blows. actors.mobs.crab.name=Sewer crab + actors.mobs.crabking.desc=The crab king collects protective magical items to protect its childs away from dangerous. He is hiding himself in a powerful suit of armor. actors.mobs.crabking.die=Sorry... my child... actors.mobs.crabking.heal=Crab king draws power from the lightning shell! actors.mobs.crabking.name=Crab king actors.mobs.crabking.notice=Ah! Away from my children! + actors.mobs.demongoo.desc=Demon Goo is typically made up of a variety of substances, such as lava, slime, dark energy, malice; however, most of it is darkness. Be careful about letting it split itself, as even the weakest piece can become strong again with just a little bit of added lava. actors.mobs.demongoo.divide=Demon Goo divides! actors.mobs.demongoo.name=Demon goo @@ -524,29 +637,40 @@ actors.mobs.dm300$tower.robots=Alert...Alert... actors.mobs.dragonking.desc=A normal dragon. After kill it it will summon other boss from other wrold. actors.mobs.dragonking.name=Dragon king actors.mobs.dustelement.blind=Dust hinder your sight. +。 actors.mobs.dustelement.desc=It's a cloud of dust, made by time and dark magic power. actors.mobs.dustelement.name=dust element actors.mobs.dwarflich.desc=A powerful wizard sacrificed to sustain the undead dwarf king, the wizard calls on the power of death to damage opponents. actors.mobs.dwarflich.name=Dwarf lich + actors.mobs.eye.desc=One of this demon's other names is "orb of hatred", because when it sees an enemy, it uses its deathgaze recklessly, often ignoring its allies and wounding them. actors.mobs.eye.name=Evil eye + actors.mobs.fetidrat.desc=Something is clearly wrong with this rat. Its greasy black fur and rotting skin are very different from the healthy rats you've seen previously. It's pale green eyes make it seem especially menacing.\n\nThe rat carries a cloud of horrible stench with it, it's overpoweringly strong up close.\n\nDark ooze dribbles from the rat's mouth, it eats through the floor but seems to dissolve in water. actors.mobs.fetidrat.name=fetid rat + actors.mobs.fiend.desc=Some demons seem to transcend their flesh and wear pure darkness as their form. Shadowy and menacing, these unholy abominations are born of malicious intent and are nothing more than incarnations of distilled evil, revelling only in death and pain. actors.mobs.fiend.name=fiend + actors.mobs.fireelemental.desc==Wandering fire elementals are a byproduct of summoning greater entities. They are too chaotic in their nature to be controlled by even the most powerful demonologist. actors.mobs.fireelemental.name=Fire elemental + actors.mobs.fishprotector.desc=It is cave protector. actors.mobs.fishprotector.name=Cave protector + actors.mobs.flyingprotector.desc=Propector of the wisdom trial. actors.mobs.flyingprotector.name=Wisdom protector + actors.mobs.forestprotector.desc=It is forest protector. actors.mobs.forestprotector.name=Forest protecter + actors.mobs.gnoll.desc=Gnolls are hyena-like humanoids. They dwell in sewers and dungeons, venturing up to raid the surface from time to time. Gnoll scouts are regular members of their pack, they are not as strong as brutes and not as intelligent as shamans. actors.mobs.gnoll.name=Gnoll scout + actors.mobs.gnollarcher.desc=This gnoll is camouflaged and hiding in the foliage. He's pretty upset you are here. actors.mobs.gnollarcher.name=gnoll archer + actors.mobs.gnollking$gnollkeeper.desc=Treasure guarder for gnoll king. actors.mobs.gnollking$gnollkeeper.name=Gnoll Keeper actors.mobs.gnollking$gnollkeeper.safe=Away from our treasure! @@ -555,16 +679,21 @@ actors.mobs.gnollking.desc=Gnoll have lots of treasure, and he can summon his pr actors.mobs.gnollking.die=My...treasure... actors.mobs.gnollking.name=Gnoll king actors.mobs.gnollking.notice=Away from my treasure! + actors.mobs.gnollshaman.desc=The most intelligent gnolls can master shamanistic magic. Gnoll shamans prefer battle spells to compensate for lack of might, not hesitating to use them on those who question their status in a tribe. actors.mobs.gnollshaman.name=gnoll shaman + 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. actors.mobs.gnolltrickster.name=gnoll trickster + actors.mobs.goldorc.def_verb=blocked actors.mobs.goldorc.desc=Dark energy corrupt bokoblin, change them into dangerous mobs. actors.mobs.goldorc.name=Gold eye Bokoblin + actors.mobs.goldthief.desc=Unlike other types of thieves, these only care for one specific thing: shiny, golden money. Be careful about letting them steal from you, as recovering lost gold from the tides of these like-minded thieves will be rather difficult. actors.mobs.goldthief.name=Gold thief actors.mobs.goldthief.stole=Gold thief steal %s golds from you! + actors.mobs.golem.def_verb=blocked actors.mobs.golem.desc=The Dwarves tried to combine their knowledge of mechanisms with their newfound power of elemental binding. They used spirits of earth as the \"soul\" for the mechanical bodies of golems, which were believed to be most controllable of all. Despite this, the tiniest mistake in the ritual could cause an outbreak. actors.mobs.golem.name=Golem @@ -583,17 +712,21 @@ actors.mobs.goo$poisongoo.squeeze=Goo is pumping itself up! actors.mobs.graveprotector.desc=It is prison protector. actors.mobs.graveprotector.name=Grave protecter + actors.mobs.greatcrab.noticed=The crab notices the attack and blocks with its massive claw. actors.mobs.greatcrab.blocked=blocked actors.mobs.greatcrab.def_verb=blocked actors.mobs.greatcrab.desc=This crab is gigantic, even compared to other sewer crabs. Its blue shell is covered in cracks and barnacles, showing great age. It lumbers around slowly, barely keeping balance with its massive claw.\n\nWhile the crab only has one claw, its size easily compensates. The crab holds the claw infront of itself whenever it sees a threat, shielding itself behind an impenetrable wall of carapace. actors.mobs.greatcrab.name=great crab + actors.mobs.greyrat.desc=Heartier cousins to Marsupial rats, Grey Rats have built up tolerances that allow them to live in the most polluted parts of the sewers. Probably still good to eat once cooked. actors.mobs.greyrat.name=Grey rat + actors.mobs.guard.def_verb=blocked actors.mobs.guard.desc=Once keepers of the prison, these guards have long since become no different than the inmates. They shamble like zombies, brainlessly roaming through the halls in search of anything out of place, like you!\n\nThey carry chains around their hip, possibly used to pull in enemies to close range. actors.mobs.guard.name=prison guard actors.mobs.guard.scorpion=Come over here! + actors.mobs.hermitcrab.absorb=Hermit Crab absorbed the attack in its shell. actors.mobs.hermitcrab.charge=Lightning Shell charged by %s. actors.mobs.hermitcrab.desc=Minions of the crab king, these tough crabs absorb all but the weakest attacks with their shells. The damage they absorb is used to charge the lightning shell. @@ -619,46 +752,56 @@ actors.mobs.king$dwarfkingtomb.name=Eternal tomb actors.mobs.littower.desc=Otiluke use his slate to keep core safe, before his mirror died, this slate will keep work! actors.mobs.littower.name=Otiluke lightning slate actors.mobs.littower.zap=Away from core! + actors.mobs.livemoss.desc=One mob from slay the spire. actors.mobs.livemoss.name=living moss + actors.mobs.magiceye.desc=This magic eye is made by ZOT's power. It is base on magic so it will die after it attack. actors.mobs.magiceye.name=magic eye + actors.mobs.mimic.desc=Mimics are magical creatures which can take any shape they wish. In dungeons they almost always choose a shape of a treasure chest, because they know how to beckon an adventurer. actors.mobs.mimic.name=mimic + actors.mobs.minesentinel.desc=Otiluke summon this to propect this place. It hands _%s_ , looks dangerous. actors.mobs.minesentinel.name=animated steel + actors.mobs.mob$fleeing.status=This %s is fleeing. actors.mobs.mob$hunting.status=This %s is hunting. actors.mobs.mob$passive.status=This %s is passive. actors.mobs.mob$sleeping.status=This %s is sleeping. actors.mobs.mob$wandering.status=This %s is wandering. actors.mobs.mob.clear1=Level cleared in %s moves under goal. -actors.mobs.mob.clear2=Level cleared in 1 move under goal. actors.mobs.mob.clear3=Level cleared over goal moves. actors.mobs.mob.died=You hear something died in the distance. actors.mobs.mob.exp=%+dEXP actors.mobs.mob.killcount=Kill count:%s actors.mobs.mob.rage=\#$%^ actors.mobs.mob.rankings_desc=Killed by:%s + actors.mobs.monk.def_verb=parried actors.mobs.monk.desc=These monks are fanatics, who devoted themselves to protecting their city's secrets from all aliens. They don't use any armor or weapons, relying solely on the art of hand-to-hand combat. actors.mobs.monk.disarm=The monk knocks the %s from your hands! actors.mobs.monk.name=dwarf monk + actors.mobs.mossyskeleton.def_verb=blocked actors.mobs.mossyskeleton.desc=This skeleton is covered by mossy. actors.mobs.mossyskeleton.name=mossy skeleton actors.mobs.musketeer.desc=In the dwarven King dominated the parliament with necromancy after a general uprising led a striker, although the results of how to know, but after the dwarf shooter will officially joined the dwarven kingdom of the patrol. actors.mobs.musketeer.name=Darwf Musketeer + actors.mobs.orbofzotmob.desc=You use this thing and it is attacking mobs. actors.mobs.orbofzotmob.die=Energy down, waiting for charge. actors.mobs.orbofzotmob.name=Zot destructo + actors.mobs.orc.def_verb=blocked actors.mobs.orc.desc=A creature live in power trial. actors.mobs.orc.name=Bokoblin + actors.mobs.otiluke.desc=This mirror is made by zot, based on otiluck. actors.mobs.otiluke.name=Corrupted mirror actors.mobs.otiluke.summon=Protect... here... + actors.mobs.piranha.desc=These carnivorous fish are not natural inhabitants of underground pools. They were bred specifically to protect flooded treasure vaults. actors.mobs.piranha.name=giant piranha @@ -681,16 +824,19 @@ actors.mobs.prisonwander.scorpion=Noone can leave here! actors.mobs.rat.desc=Marsupial rats are aggressive but rather weak denizens of the sewers. They have a nasty bite, but are only life threatening in large numbers. actors.mobs.rat.name=marsupial rat + actors.mobs.ratboss.desc=This is leader rat, it can summon other rats, actors.mobs.ratboss.name=Leader rat + actors.mobs.ratboss.spawn=There's a group of mice here! actors.mobs.redwraith.def_verb=evaded actors.mobs.redwraith.desc=Kill it may find rings. actors.mobs.redwraith.name=chaos wraith + actors.mobs.scorpio.desc=These huge arachnid-like demonic creatures avoid close combat by all means, firing crippling serrated spikes from long distances. actors.mobs.scorpio.name=scorpio -actors.mobs.seekinbomb.desc=Just a bomb. +actors.mobs.seekinbomb.desc=Just a bomb. actors.mobs.senior.desc=He is stronger. actors.mobs.senior.name=senior monk @@ -717,9 +863,11 @@ actors.mobs.shell.name=lightning shell actors.mobs.shielded.def_verb=blocked actors.mobs.shielded.desc=The gnoll was carrying a shield. Really it is with the sword point. actors.mobs.shielded.name=shielded brute + actors.mobs.skeleton.def_verb=blocked actors.mobs.skeleton.desc=Skeletons are composed of corpses bones from unlucky adventurers and inhabitants of the dungeon, animated by emanations of evil magic from the depths below. After they have been damaged enough, they disintegrate in an explosion of bones. actors.mobs.skeleton.name=skeleton + actors.mobs.skeletonhand1.desc=This ancient giant hand belongs to the king of skeletons. actors.mobs.skeletonhand1.name=skeleton hand actors.mobs.skeletonhand2.desc=This ancient giant hand belongs to the king of skeletons. @@ -728,37 +876,49 @@ actors.mobs.skeletonking.desc=This ancient giant skull belongs to the king of sk actors.mobs.skeletonking.die=I need more mana... actors.mobs.skeletonking.name=skeleton king actors.mobs.skeletonking.notice=You will die screaming in flames, %s! + actors.mobs.sommonskeleton.name=summoned skeleton actors.mobs.sommonskeleton.desc=It's just a summoned undead. + actors.mobs.sokobansentinel.desc=sokoban propector handle _%s_. actors.mobs.sokobansentinel.name=sokoban propector + actors.mobs.spinner.desc=These greenish furry cave spiders try to avoid direct combat, preferring to wait in the distance while their victim, entangled in the spinner's excreted cobweb, slowly dies from their poisonous bite. actors.mobs.spinner.name=cave spinner + actors.mobs.statue.desc=You would think that it's just another one of this dungeon's ugly statues, but its red glowing eyes give it away.\n\nWhile the statue itself is made of stone, the _%s,_ it's wielding, looks real. actors.mobs.statue.name=animated statue + actors.mobs.succubus.desc=The succubi are demons that look like seductive (in a slightly gothic way) girls. Using its magic, the succubus can charm a hero, who will become unable to attack anything until the charm wears off. actors.mobs.succubus.name=succubus -actors.mobs.swarm.def_verb=evaded + actors.mobs.swarm.desc=The deadly swarm of flies buzzes angrily. Every non-magical attack will split it into two smaller but equally dangerous swarms. actors.mobs.swarm.name=swarm of flies + actors.mobs.tengu.desc=A famous and enigmatic assassin, named for the mask grafted to his face.\n\nTengu is held down with large clasps on his wrists and knees, though he seems to have gotten rid of his chains long ago.\n\nHe will try to use traps, deceptive magic, and precise attacks to eliminate the only thing stopping his escape: you. actors.mobs.tengu.die=I look down upon you. actors.mobs.tengu.name=Tengu actors.mobs.tengu.notice=You are mine, %s! + actors.mobs.tenguden.die=Curse you!!! actors.mobs.tenguden.name=Hidden Tengu actors.mobs.tenguden.notice=How can you find me?! actors.mobs.tenguden.desc=A famous and enigmatic assassin, named for the mask grafted to his face.\n\nTengu is held down with large clasps on his wrists and knees, though he seems to have gotten rid of his chains long ago.\n\nHe will try to use traps, deceptive magic, and precise attacks to eliminate the only thing stopping his escape: you. + actors.mobs.testmob.desc=test mob actors.mobs.testmob.name=Scarecrow + actors.mobs.testmob2.desc=This scarecrow is dangerous. Don't touch it. actors.mobs.testmob2.name=Clockwork scarecrow + actors.mobs.thief.desc=Though these inmates roam free of their cells, this place is still their prison. Over time, this place has taken their minds as well as their freedom. Long ago, these crazy thieves and bandits have forgotten who they are and why they steal. actors.mobs.thief.name=crazy thief + actors.mobs.thiefimp.carries=\n\nThe thief is carrying a _%s._ Stolen obviously. actors.mobs.thiefimp.desc=Imps are lesser demons. They are notable neither for their strength nor their magic talent, but for their cruelty and greed. However, some of them are actually quite nice and sociable. Certainly not this one, though... actors.mobs.thiefimp.name=Thief Imp actors.mobs.thiefimp.stole=The thief imp stole %s from you! + actors.mobs.thiefking.desc=Leader of this city, a legendary thief. actors.mobs.thiefking.die=You are better than I think... actors.mobs.thiefking.name=The thief king @@ -785,10 +945,10 @@ actors.mobs.ugoo.desc=A goo from void. actors.mobs.ugoo.name=Void goo actors.mobs.uicecorps.name=ice nova -actors.mobs.uicecrops.desc=Ice nova, a rabbit warlock +actors.mobs.uicecorps.desc=Ice nova, a rabbit warlock. actors.mobs.uicecorps2.name=Ice nova - final shape -actors.mobs.uicecrops2.desc=Ice nova, a rabbit warlock, burning her life for fight. +actors.mobs.uicecorps2.desc=Ice nova, a rabbit warlock, burning her life for fight. actors.mobs.uking.desc=King of plant. actors.mobs.uking.name=Plant king @@ -801,9 +961,11 @@ actors.mobs.uyog.name=Original yog actors.mobs.vaultprotector.desc=It is city protector. actors.mobs.vaultprotector.name=vault protector + actors.mobs.warlock.desc=When dwarves' interests have shifted from engineering to arcane arts, warlocks have come to power in the city. They started with elemental magic, but soon switched to demonology and necromancy. actors.mobs.warlock.name=dwarf warlock actors.mobs.wraith.def_verb=evaded + actors.mobs.wraith.desc=A wraith is a vengeful spirit of a sinner, whose grave or tomb was disturbed. Being an ethereal entity, it is very hard to hit with a regular weapon. actors.mobs.wraith.name=wraith @@ -832,16 +994,20 @@ actors.mobs.zotphase.desc=Zot mirror, looks reall. actors.mobs.zotphase.name=Zot mirror actors.mobs.virus.desc=virus -actors.mobs.virus.name=---!!!data delete!!!--- +actors.mobs.virus.name=---!!!data delete!!!---\nunknow\n??? -actors.mobs.zombie.desc=Zombie is... wait it is common infected. as their name implies, are the most commonly faced enemy and are the easiest to defeat. +actors.mobs.zombie.desc=Zombie is... wait it is common infected. as their name implies, are the most commonly faced enemy and are the easiest to defeat.\nundead actors.mobs.zombie.name=zombie -actors.mobs.patroluav.desc=It is robot used for cleaning sewer garbage. + +actors.mobs.patroluav.desc=It is robot used for cleaning sewer garbage.\nmech actors.mobs.patroluav.name=patrol UAV -actors.mobs.sandmob.desc=This mob is made by sand. + +actors.mobs.sandmob.desc=This mob is made by sand.\nelement actors.mobs.sandmob.name=sand mob + actors.mobs.sandmob$minisand.name=mini sand mob actors.mobs.sandmob$minisand.desc=mini sand mob + actors.mobs.spiderbot.desc=This is a robot spider. It can use web and tar gas. actors.mobs.spiderbot.name=spider bot @@ -864,7 +1030,7 @@ actors.mobs.spiderqueen.die=I lose... actors.mobs.spiderqueen.egg=Spider hatch a new egg. actors.mobs.spiderqueen.name=Spider queen actors.mobs.spiderqueen$spideregg.name=spider egg -actors.mobs.spiderqueen$spideregg.desc=spider eggs +actors.mobs.spiderqueen$spideregg.desc=Depending on the incubation time, the types of spiders produced are also different.\nunknow actors.mobs.spiderqueen$spiderworker.name=Spider worker actors.mobs.spiderqueen$spiderworker.desc=One type spider of spider army. @@ -873,13 +1039,13 @@ actors.mobs.spiderqueen$spidermind.name=spider minder actors.mobs.spiderqueen$spidergold.name=spider golder actors.mobs.goldcollector.name=Gold Collector -actors.mobs.goldcollector.desc=Why can you collect so many golds. +actors.mobs.goldcollector.desc=Why can you collect so many golds.\nunknow\n??? actors.mobs.levelchecker.name=Level checker -actors.mobs.levelchecker.desc=This thing shouldn't appare. +actors.mobs.levelchecker.desc=Why can you gain so many exps.\nunknow\n??? actors.mobs.normalcell.name=Cell mob -actors.mobs.normalcell.desc=The most basic mob in this world. Most of them has already evolve into other monster. +actors.mobs.normalcell.desc=The most basic mob in this world. Most of them has already evolve into other monster.\nunknow actors.mobs.hybrid.name=Hybrid actors.mobs.hybrid.notice=I am Amon's faithful servant. @@ -911,7 +1077,7 @@ actors.mobs.npcs.mtree.name=little tree actors.mobs.npcs.mtree.desc=A normal tree. actors.mobs.lichdancer.name=Lich dancer -actors.mobs.lichdancer.desc=He was a dancer, but now he is a lich. +actors.mobs.lichdancer.desc=He was a dancer, 24 years old, but now he is a lich. actors.mobs.lichdancer.notice=In my acting life, I have learned a truth: as human beings, our actors have limits. So... I can fly!!! actors.mobs.lichdancer$batterytomb.name=Necro Battery actors.mobs.lichdancer$batterytomb.desc=A battery full with necro energy. @@ -919,7 +1085,7 @@ actors.mobs.lichdancer$linkbomb.name=bomb actors.mobs.lichdancer$linkbomb.desc=Watch out ,it will explode! actors.mobs.firerabbit.name=Lucifer -actors.mobs.firerabbit.desc=A rabbit human, use fire as it's weapon, bring death to undead. +actors.mobs.firerabbit.desc=A rabbit orc, use fire as it's weapon, bring death to undead. actors.mobs.firerabbit.yell=ko~ko~da~yo actors.mobs.manyskeleton.name=Huge Skull @@ -927,25 +1093,31 @@ actors.mobs.manyskeleton.desc=A huge skull made by lots of skeletons. actors.mobs.yearbeast.name=Year the beast actors.mobs.yearbeast.disarm=Year hit down your equipment -actors.mobs.yearbeast.desc=A hearsays boss. +actors.mobs.yearbeast.desc=The legendary creatures have human wisdom, the agility of the tiger, the power of the bear and the charm of the Phoenix. Of course, all this is just a legend. actors.mobs.yearbeast.notice=I AM FREE!!! actors.mobs.yearbeast.die=You win... Take this... actors.mobs.yearbeast.escape=Not time now... Escape... actors.mobs.yearbeast2.name=Year in town actors.mobs.yearbeast2.disarm=Year hit down your equipment -actors.mobs.yearbeast2.desc=Another year beast. +actors.mobs.yearbeast2.desc=The legendary creatures have human wisdom, the agility of the tiger, the power of the bear and the charm of the Phoenix. Of course, all this is just another legend. actors.mobs.yearbeast2.notice=Who is in there?! actors.mobs.yearbeast2.die=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!!! +actors.mobs.icebug.name=Ice climber +actors.mobs.icebug.desc=An worm that lives in a cold environment. + actors.mobs.bombbug.name=stone bug -actors.mobs.bombbug.desc=a bug lives with ice stone. +actors.mobs.bombbug.desc=An worm that lives with ice stone. actors.mobs.bamboomob.name=Bamboo actors.mobs.bamboomob.desc=Strange plants raised by the prison warden. It reflects physical damage. - actors.mobs.greatmoss.name=great moss -actors.mobs.greatmoss.desc=It is a plant or element. +actors.mobs.greatmoss.desc=a great plant and element. + +actors.mobs.demontraper.name=demon curser +actors.mobs.demontraper.desc=A demon fights with traps. + ###actors.mobs..name=蜂蜡元素 ###actors.mobs..desc=和蜜蜂和谐共生的元素。具有较高的自愈能力,而且很黏稠。 @@ -1052,8 +1224,6 @@ actors.mobs.npcs.bilboldev.yell1=LOL, you're gonna have to be patient with Skill actors.mobs.npcs.bilboldev.yell2=Well what's unique about SPD is the skill system and the campaign I plan on picking up soon. actors.mobs.npcs.bilboldev.yell3=Hatsune's sacrifice will not be forgotten! -actors.mobs.npcs.blacksmith.blood_1=Hey human! Wanna be useful, eh? Take dis pickaxe and _kill a bat_ wit' it, I need its blood on the head. What do you mean, how am I gonna pay? You greedy...\nOk, ok, I don't have money to pay, but I can do some smithin' for you. Consider yourself lucky, I'm the only blacksmith around. -actors.mobs.npcs.blacksmith.blood_2=I said I need bat blood on the pickaxe. Chop chop! actors.mobs.npcs.blacksmith.cant_reforge=I can't reforge these items! actors.mobs.npcs.blacksmith.completed=Oh, you have returned... Better late dan never. actors.mobs.npcs.blacksmith.cursed=I don't work with cursed items! diff --git a/resources/com/hmdzl/spspd/messages/actors/actors_tzh.properties b/resources/com/hmdzl/spspd/messages/actors/actors_tzh.properties index 37fa51e6..c56d5292 100644 --- a/resources/com/hmdzl/spspd/messages/actors/actors_tzh.properties +++ b/resources/com/hmdzl/spspd/messages/actors/actors_tzh.properties @@ -6,6 +6,7 @@ actors.blobs.electrishock.desc=大量的電火花在這片電場中流竄。 actors.blobs.fire.desc=ㄧ團火焰正在這裏肆虐。火焰可以用於簡單烹飪食物,或者點燃站在火上的單位並對其造成傷害。 actors.blobs.foliage.desc=光柱刺破了地下花園中的黑暗。 actors.blobs.frostgas.desc=這裏盤繞著ㄧ片極寒雪霧。 +actors.blobs.frostcloud.desc=這裡盤繞著以前極寒雪雲。在雪雲中的單位會被凍傷。 actors.blobs.goowarn.desc=黑暗能量正在這裏湧動! actors.blobs.heallight.desc=生命的光芒在這裏閃耀! 生命之光能給予其中的生物恢復生命。 actors.blobs.memoryfire.desc=ㄧ團藍色的火焰正在這裏燃燒。 @@ -33,44 +34,79 @@ actors.blobs.nmgas.desc=這裡盤繞著納米無人機雲。 雲霧會傷害所 actors.blobs.poisongas.desc=這裡盤繞著沼澤大氣。 沼澤會減速和易傷靠近它的生物。 +actors.blobs.shadowcurse.desc=這裡佈置著暗影咒絲。咒絲會詛咒位置上的生物。 + +actors.char.htdown=%s造成%s傷害。 + ###buffs -actors.buffs.amok.desc=狂亂導致狀態下的生物進入ㄧ種極度憤怒和混亂的狀態。 \n\n狂亂的生物會不分敵我地攻擊任何靠近它們的人。\n\n剩餘的狂亂效果時長:%s回合 actors.buffs.amok.name=狂亂 -actors.buffs.arcane.desc=魔力流遍了你的全身,增加了10點法強,以提升你的法杖傷害。\n奧術灌注持續時間: %s。 +actors.buffs.amok.desc=狂亂導致狀態下的生物進入ㄧ種極度憤怒和混亂的狀態。 \n\n狂亂的生物會不分敵我地攻擊任何靠近它們的人。\n\n剩餘的狂亂效果時長:%s回合 + actors.buffs.arcane.name=奧術灌注 -actors.buffs.armorbreak.desc=持續%s回合,增加%s%%受到的傷害。 +actors.buffs.arcane.desc=魔力流遍了你的全身,增加了10點法強,以提升你的法杖傷害。\n奧術灌注持續時間: %s。 + +actors.buffs.superarcane.name=奧術灌注 +actors.buffs.superarcane.desc=魔力流滿了你的全身,增加了%s點法強,以提升你的法杖傷害。\n奧術灌注持續時間:%s。 + actors.buffs.armorbreak.name=破甲 -actors.buffs.attackdown.desc=持續%s回合,減少%s%%攻擊力。 +actors.buffs.armorbreak.desc=持續%s回合,增加%s%%受到的傷害。 + actors.buffs.attackdown.name=乏力 -actors.buffs.attackup.desc=持續%s回合,增加%s%%攻擊力。 +actors.buffs.attackdown.desc=持續%s回合,減少%s%%攻擊力。 + actors.buffs.attackup.name=攻擊提升 -actors.buffs.awareness.desc=寶物探查可以允許你看到這片地方的所有寶物以及它們周圍的情況。 \n\n剩餘的探查效果時長:%s回合 +actors.buffs.attackup.desc=持續%s回合,增加%s%%攻擊力。 + actors.buffs.awareness.name=寶物探查 -actors.buffs.barkskin.desc=你的皮膚硬化了,摸起來如同樹皮ㄧ樣既粗糙且堅固。 \n\n硬化的皮膚增強了你的實際護甲,使你能更好地抵禦物理攻擊。這種額外的護甲數值會以每回合ㄧ半的速度降低,直到它徹底失去作用。\n\n增加的護甲值:%d +actors.buffs.awareness.desc=寶物探查可以允許你看到這片地方的所有寶物以及它們周圍的情況。 \n\n剩餘的探查效果時長:%s回合 + actors.buffs.barkskin.name=樹膚 -actors.buffs.berryregeneration.desc=生命恢復將為你提供額外的生命恢復速率,並隨著遊戲的深入而提供更長的持續時間。 \n\n剩餘的恢復效果:%d +actors.buffs.barkskin.desc=你的皮膚硬化了,摸起來如同樹皮ㄧ樣既粗糙且堅固。 \n\n硬化的皮膚增強了你的實際護甲,使你能更好地抵禦物理攻擊。這種額外的護甲數值會以每回合ㄧ半的速度降低,直到它徹底失去作用。\n\n增加的護甲值:%d + actors.buffs.berryregeneration.name=生命恢復 +actors.buffs.berryregeneration.desc=生命恢復將為你提供額外的生命恢復速率,並隨著遊戲的深入而提供更長的持續時間。 \n\n剩餘的恢復效果:%d + +actors.buffs.bleeding.name=流血 actors.buffs.bleeding.desc=傷口正在令人不安地湧出大量血液。 \n\n流血每回合都會造成傷害。每回合這個傷害數值都會隨機減少,直到出血最終停止。 \n\n當前流血傷害:%d actors.buffs.bleeding.heromsg=你正在流血! -actors.buffs.bleeding.name=流血 -actors.buffs.bless.desc=你的注意力大大集中了,有人說這是神賜的禮物。 \n\n祝福狀態能夠顯著提高自身的能力,使其在戰鬥中非常有效。 \n\n剩餘的祝福效果時長:%s回合 -actors.buffs.bless.name=祝福 -actors.buffs.blindness.desc=失明使周遭的ㄧ切陷入黑暗。 \n\n失明時,角色不能看到周身ㄧ格以外的環境、致使遠程攻擊變得毫無作用、同時也很容易丟失正在追蹤的敵人的動向。此外,失明的英雄也無法讀書或使用卷軸。 \n\n剩餘的失明效果時長:%s回合 -actors.buffs.blindness.heromsg=你失明了! -actors.buffs.blindness.name=失明 +actors.buffs.lokispoison.name=猛毒 +actors.buffs.lokispoison.desc=毒素傳遍全身,緩慢地損傷著各個臟器。 \n\n毒素每回合造成的傷害與其剩餘的回合數成正比。 \n\n剩餘的中毒效果時長:%s回合 +actors.buffs.lokispoison.heromsg=你中毒了! + +actors.buffs.poison.name=中毒 +actors.buffs.poison.desc=毒素傳遍全身,緩慢地損傷著各個臟器。 \n\n毒素每回合造成的傷害與其剩餘的回合數成正比。 \n\n剩餘的中毒效果時長:%s回合 +actors.buffs.poison.heromsg=你中毒了! + +actors.buffs.venom.name=劇毒 +actors.buffs.venom.desc=劇毒是ㄧ種非常可怕且危險的毒素。 \n\n不像ㄧ般中毒的危害性隨著時間的推移降低,猛毒在目標身上滯留的時間越長傷害越高。\n\n剩餘的劇毒效果時長:%s回合\n當前劇毒傷害:%d + +actors.buffs.beold.name=老化 +actors.buffs.beold.desc=你的軀體老化了。\n\n老化每回合造成少量傷害,而且會阻止生命正常恢復。\n\n剩餘的老化效果時長:%s回合 +actors.buffs.beold.heromsg=你老化了! + +actors.buffs.becorrupt.name=侵蝕 +actors.buffs.becorrupt.desc=你被侵蝕了。\n\n侵蝕會阻止你的生命恢復,並將其轉化為傷害,直到侵蝕上限。受到其他傷害效果時,受到傷害增加,並降低侵蝕上限。\n\n剩餘的侵蝕效果:%s + +actors.buffs.shocked.desc=當處於該狀態的單位進行攻擊時,它就會受到少量傷害並被繳械。持續時間: %s 回合。 +actors.buffs.shocked.name=靜電亂流 + +actors.buffs.shocked2.desc=當處於該狀態的單位進行移動時,它就會收到少量傷害並被纏繞。持續時間:%s回合。 +actors.buffs.shocked2.name=環繞亂流 + +actors.buffs.burning.name=燃燒 actors.buffs.burning.burnsup=%s被燒毀了! actors.buffs.burning.desc=沒什麽比被火焰吞沒更痛苦了。 \n\n火焰會每回合都會造成傷害直到它被液體撲滅或者自行消散。火會在你進入水中時熄滅,打碎藥瓶產生的水花也具有同樣的效果。 \n\n此外,火焰還會點燃所有接觸到的可燃地形(以及可燃地形上的可燃物)。 \n\n剩餘的燃燒效果時長:%s回合 actors.buffs.burning.heromsg=你著火了! -actors.buffs.burning.name=燃燒 +actors.buffs.dburning.name=惡魔烈焰 actors.buffs.dburning.desc=惡魔烈焰會每回合都會造成傷害,並且無法被撲滅。 \n\n剩餘的燃燒效果時長:%s回合 actors.buffs.dburning.heromsg=你著火了! -actors.buffs.dburning.name=惡魔烈焰 +actors.buffs.charm.name=魅惑 actors.buffs.charm.desc=魅惑是ㄧ種能讓敵人們暫時彼此愛慕的控制類魔法。 \n\n受魅惑的角色無法直接攻擊魅惑它的那個生物,不過仍然可以攻擊其他目標。\n\n剩餘的魅惑效果時長:%s回合 actors.buffs.charm.heromsg=你被魅惑了! -actors.buffs.charm.name=魅惑 + actors.buffs.chill.desc=還沒有完全凍住,不過已經非常寒冷。\n\n凍傷的目標所有行動都會更加緩慢,減速程度決定於剩餘的凍傷效果時間。最嚴重的凍傷情況等同於遲緩效果。 \n\n剩餘的凍傷效果時長:%s回合\n當前減少的速度:%s%% actors.buffs.chill.freezes=%s 凍住了! actors.buffs.chill.name=凍傷 @@ -81,8 +117,10 @@ actors.buffs.combo.combo=%d連擊! actors.buffs.combo.desc=通過積累能量,角鬥士能造成額外的傷害。\n\n你的連擊數會在沒有失誤的不間斷攻擊下增加。你的連擊數越高,你的攻擊速度越快。失敗或間斷的攻擊會重置連擊數。 actors.buffs.combo.name=連擊 actors.buffs.combo.notenough=\n\n你的連擊還沒有達到能造成額外傷害的程度。 + actors.buffs.countdown.desc=你的生命岌岌可危,再過ㄧ小段時間你就會受到大量的傷害。 \n\n剩餘時間:%d -actors.buffs.countdown.name=延遲爆破 +actors.buffs.countdown.name=詛咒 + actors.buffs.cripple.desc=你很確定自己的腿不該折成那樣。 \n\n殘廢會減半移動速度,移動ㄧ格會消耗二回合而不是正常情況下的ㄧ回合。 \n\n剩餘的殘廢效果時長:%s回合 actors.buffs.cripple.heromsg=你殘廢了! actors.buffs.cripple.name=殘廢 @@ -126,23 +164,31 @@ actors.buffs.actbuff.nmstop.name=納米熔斷 actors.buffs.frost.desc=不要認為被凍得很結實了,這種溫和的凍結只是把目標包裹在冰裏。 \n\n凍結效果類似於麻痹,使目標不能行動。與麻痹不同的是,凍結效果會在目標受到傷害時立即消失,因為冰會碎。\n\n剩餘的凍結效果時長:%s回合 actors.buffs.frost.freezes=%s 凍住了! actors.buffs.frost.name=冰凍 + actors.buffs.fullmoonstrength.desc=你變得非常強大,獲得2.5倍的傷害加成。 actors.buffs.fullmoonstrength.heromsg=你變強了! actors.buffs.fullmoonstrength.name=滿月之力 + actors.buffs.fury.desc=你非常暴怒,很明顯敵人並不喜歡這樣的你。\n\nㄧ股猛烈的怒火在你體內燃燒,增加你25%%的物理攻擊傷害,並降低25%你受到的傷害。\n\n只要你的生命還低於上限的60%,該效果就會存在。 actors.buffs.fury.heromsg=你陷入了暴怒之中! actors.buffs.fury.name=狂暴 + actors.buffs.gasesimmunity.desc=ㄧ種奇特的力量正在過濾你周邊的空氣,它並不會對你造成任何傷害,但它阻擋了所有空氣意外的事物,以至於你什麽氣味都聞不到了!\n\n當該效果存在時你對所有氣體效果免疫。\n\n剩餘氣體免疫效果時長:%s回合 actors.buffs.gasesimmunity.name=氣體免疫 + actors.buffs.glassshield.desc=來自玻璃之神的祝福。當你受到大於10點的傷害時,將傷害改為10。剩餘保護次數:%s次。 actors.buffs.glassshield.name=玻璃保護 + actors.buffs.growseed.desc=通常來講這種種子專門吸取你的生命,並用於治療周圍的單位。 \n\n剩餘的寄生種子效果時長:%s回合 actors.buffs.growseed.heromsg=奇怪的種子在你的身上生長。 actors.buffs.growseed.name=寄生種子 + actors.buffs.hastebuff.desc=你的行動速度大幅度提升,持續%s回合。 actors.buffs.hastebuff.name=極速 + actors.buffs.hot.desc=炎熱使你得血脈流動加快,ㄧ點小傷口也能帶來大量的傷害。 \n\n剩餘的效果時長:%s回合 actors.buffs.hot.name=炎熱 + actors.buffs.hunger.cursedhorn=就在你吃東西的時候被詛咒的號角偷走了ㄧ部分食物的能量。 actors.buffs.hunger.desc=\n\n饑餓會在你在地牢裏花費時間的同時緩慢累計,直到你餓得難以忍受。在你極度饑餓時生命值會停止回復並且開始緩慢減少 。\n\n合理利用食物非常重要!如果你有足夠的生命值來維持饑餓,你就該等到ㄧ會兒食物更多的時候再吃。正確的配給可以讓食物更有效地發揮作用! actors.buffs.hunger.desc_intro_hungry=你能感受到自己的肚子在不斷尋求食物,這降低了你的攻擊力,不過還不算那麽嚴重。 @@ -154,68 +200,92 @@ actors.buffs.hunger.onoverfed=你吃飽了 actors.buffs.hunger.onstarving=你已經饑腸轆轆! actors.buffs.hunger.overfed=飽腹 actors.buffs.hunger.starving=極度饑餓 + actors.buffs.invisibility.desc=你和周圍的地形完全融為ㄧ體,使你不可能被看到。 \n\n當你在隱形時敵人無法追蹤或攻擊你。大部分物理攻擊和魔法(比如卷軸和法杖)會立即解除隱形效果。 \n\n剩餘的隱形效果時長:%s回合 actors.buffs.invisibility.name=隱形 + actors.buffs.levitation.desc=ㄧ股魔力把你從地面托起,讓你覺得自己身輕如燕。 \n\n在漂浮時你會無視所有以地面為基礎的效果。陷阱不會被觸發、火焰不會被水撲滅、植物不會被踩踏、根系無法纏繞你、並且能夠跨越深淵。當心,在效果結束的那ㄧ刻上述效果都會失效!\n\n剩餘的漂浮效果時長:%s回合 actors.buffs.levitation.name=漂浮 + actors.buffs.light.desc=即使是在最黑暗的地牢中,身邊有ㄧ個穩定的光源也總是令人欣慰。 \n\n光照能驅散黑暗,使你能夠無視周遭的黑暗環境並擁有ㄧ個合理的視野範圍。 \n\n剩餘的發光效果時長:%s回合 actors.buffs.light.name=發光 + actors.buffs.highlight.desc=即使是在最黑暗的地牢中,身邊有ㄧ個穩定的光源也總是令人欣慰。 \n\n光照能驅散黑暗,使你能夠無視周遭的黑暗環境並擁有ㄧ個超大的視野範圍。 \n\n剩餘的發光效果時長:%s回合 actors.buffs.highlight.name=高亮 + actors.buffs.locked.desc=ㄧ把無形的鎖鎖死了你的背包,是你無法使用消耗類道具,持續%s回合。 actors.buffs.locked.name=鎖閉 -actors.buffs.lokispoison.desc=毒素傳遍全身,緩慢地損傷著各個臟器。 \n\n毒素每回合造成的傷害與其剩餘的回合數成正比。 \n\n剩餘的中毒效果時長:%s回合 -actors.buffs.lokispoison.heromsg=你中毒了! -actors.buffs.lokispoison.name=猛毒 + +actors.buffs.magicalsleep.name=魔法睡眠 actors.buffs.magicalsleep.desc=目標已深深陷入了魔法睡眠,不會自然醒來。\n\n魔法睡眠與ㄧ般的睡眠基本ㄧ樣,但只有受傷會致使目標醒來。\n\n對於英雄,魔法睡眠有ㄧ些恢復性的效果,使他們能夠在睡眠中迅速愈合傷口。 actors.buffs.magicalsleep.fallasleep=你深深地陷入了魔法睡眠。 -actors.buffs.magicalsleep.name=魔法睡眠 actors.buffs.magicalsleep.toohealthy=你十分健康,因此抵抗住了強烈的嗜睡感。 actors.buffs.magicalsleep.wakeup=你醒來後,感覺渾身清爽並且十分健康。 + actors.buffs.magicimmunity.desc=奧術護盾可以為目標提供ㄧ定抗性。\n\n剩餘的護盾效果時長:%s回合 actors.buffs.magicimmunity.name=奧術護盾 + actors.buffs.mindvision.desc=你可以在腦海中以某種方式看到這ㄧ層的所有生物。這種感覺非常奇異。\n\n只要靈視效果依然存在,這層的所有生物都會在你的視野當中。通過靈視看到的生物同樣算作視野中的目標,可以被很多魔法效果影響。\n\n剩餘的靈視效果時長:%s回合 actors.buffs.mindvision.name=靈視 + actors.buffs.muscle.desc=你感覺你的肌肉更加結實了,獲得2點力量,持續%s回合。 actors.buffs.muscle.name=活動肌肉 + +actors.buffs.ooze.name=腐酸 actors.buffs.ooze.desc=這種粘稠的酸性淤泥正在緊貼你的骨肉,並緩慢地將它們腐蝕融化。\n\n淤泥會ㄧ直造成穩定傷害直至被水沖洗。\n\n淤泥本身不會自然消失,必須在水中才能洗掉。 actors.buffs.ooze.heromsg=汙泥在腐蝕你的身體。洗掉它! -actors.buffs.ooze.name=腐酸 + +actors.buffs.paralysis.name=麻痹 actors.buffs.paralysis.desc=通常最壞的事就是什麽事都做不出來。\n\n麻痹會停止目標的ㄧ切動作,使目標保持原狀直到效果消失。受傷導致的疼痛也能幫助目標脫離麻痹。 \n\n剩餘的麻痹效果時長:%s回合 actors.buffs.paralysis.heromsg=你被麻痹了! -actors.buffs.paralysis.name=麻痹 -actors.buffs.poison.desc=毒素傳遍全身,緩慢地損傷著各個臟器。 \n\n毒素每回合造成的傷害與其剩餘的回合數成正比。 \n\n剩餘的中毒效果時長:%s回合 -actors.buffs.poison.heromsg=你中毒了! -actors.buffs.poison.name=中毒 -actors.buffs.recharging.desc=魔力在你體內奔騰而過,提高你的魔杖和法杖的充能速率。 \n\n每回合這個效果都將給你的法杖/魔杖增加四分之ㄧ點充能,這個效果的充能不同於正常充能並且能與之疊加。\n\n剩餘的充能效果時長:%s回合 + actors.buffs.recharging.name=充能 -actors.buffs.rhythm.desc=你沈浸在你的節奏當中,大幅度提升你的命中和閃避,持續%s回合。 +actors.buffs.recharging.desc=魔力在你體內奔騰而過,提高你的魔杖和法杖的充能速率。 \n\n每回合這個效果都將給你的法杖/魔杖增加四分之ㄧ點充能,這個效果的充能不同於正常充能並且能與之疊加。\n\n剩餘的充能效果時長:%s回合 + actors.buffs.rhythm.name=節奏 -actors.buffs.rhythm2.desc=回響使你更加沈浸在你的節奏當中,小幅度提升你的速度,攻擊和防禦。持續%s回合。 +actors.buffs.rhythm.desc=你沈浸在你的節奏當中,大幅度提升你的命中和閃避,持續%s回合。 + actors.buffs.rhythm2.name=回響 +actors.buffs.rhythm2.desc=回響使你更加沈浸在你的節奏當中,小幅度提升你的速度,攻擊和防禦。持續%s回合。 + +actors.buffs.roots.name=纏繞 actors.buffs.roots.desc=根系(不論是自然或魔法產生)纏到了腳上,將它們牢牢拴在地面。 \n\n根系會讓目標被困在當前區域,使其不能移動,但不會干擾其他行為。 \n\n剩餘的纏繞效果持續時長:%s回合 actors.buffs.roots.heromsg=你不能動了! -actors.buffs.roots.name=纏繞 -actors.buffs.shadows.desc=你和周圍的陰影融為ㄧ體,使你隱形並減緩你的新陳代謝。\n\n當你在隱形時敵人無法追蹤或攻擊你。大部分物理攻擊和魔法(比如卷軸和法杖)會立即解除隱形效果。此外,當你處於暗影融合狀態下時,饑餓值增加的速率會降低。\n\n暗影融合狀態會ㄧ直持續直到你離開陰影或與敵人直接接觸。 + actors.buffs.shadows.name=暗影融合 -actors.buffs.shield.desc=超高的護盾 +actors.buffs.shadows.desc=你和周圍的陰影融為ㄧ體,使你隱形並減緩你的新陳代謝。\n\n當你在隱形時敵人無法追蹤或攻擊你。大部分物理攻擊和魔法(比如卷軸和法杖)會立即解除隱形效果。此外,當你處於暗影融合狀態下時,饑餓值增加的速率會降低。\n\n暗影融合狀態會ㄧ直持續直到你離開陰影或與敵人直接接觸。 + actors.buffs.shield.name=滿月護盾 -actors.buffs.shieldblock.desc=無法驅散的超強控制效果。\n\n剩餘的效果時長:%s回合 +actors.buffs.shield.desc=超高的護盾 + actors.buffs.shieldblock.name=護盾打擊 -actors.buffs.shocked.desc=當處於該狀態的單位進行攻擊時,它就會受到少量傷害並被繳械。持續時間: %s 回合。 -actors.buffs.shocked.name=靜電亂流 +actors.buffs.shieldblock.desc=無法驅散的超強控制效果。\n\n剩餘的效果時長:%s回合 + +actors.buffs.bless.name=祝福 +actors.buffs.bless.desc=你的注意力大大集中了,有人說這是神賜的禮物。 \n\n祝福狀態能夠顯著提高自身的能力,使其在戰鬥中非常有效。 \n\n剩餘的祝福效果時長:%s回合 + +actors.buffs.blindness.name=失明 +actors.buffs.blindness.desc=失明使周遭的ㄧ切陷入黑暗。 \n\n失明時,角色不能看到周身ㄧ格以外的環境、致使遠程攻擊變得毫無作用、同時也很容易丟失正在追蹤的敵人的動向。此外,失明的英雄也無法讀書或使用卷軸。 \n\n剩餘的失明效果時長:%s回合 +actors.buffs.blindness.heromsg=你失明了! + actors.buffs.silent.desc=沈默使人安靜,並且讓他無法誦讀卷軸或釋放咒語。持續%s回合。 actors.buffs.silent.name=沈默 + actors.buffs.slow.desc=減速魔法影響了目標的時間流速,在目標眼中所有的事物都移動得飛快。 \n\n遲緩下的角色執行所有行動花費的時間是其執行相同行動的兩倍。\n\n剩餘的遲緩效果持續時長:%s回合 actors.buffs.slow.name=遲緩 + actors.buffs.snipersmark.desc=狙擊手將注意力集中到了附近的ㄧ個目標上,獲得對目標遠程攻擊時的攻速加成和破甲效果。\n\n狙擊手將不會停止專注直到她切換目標、停止攻擊或目標死亡。 actors.buffs.snipersmark.name=狙擊標記 + actors.buffs.soulmark.desc=術士已經擊穿了目標的靈魂。他將會在對其造成物理傷害時回復生命並填補饑餓感。 \n\n剩餘靈魂印記持續時長:%s回合 actors.buffs.soulmark.name=靈魂標記 + actors.buffs.speed.desc=移動速度增加 actors.buffs.speed.name=加速 + actors.buffs.strength.desc=你感覺奇妙的力量充斥著你的身體,使你下次攻擊得到極大的增強。 actors.buffs.strength.name=強力 + actors.buffs.tar.desc=粘稠的油脂覆蓋了你的全身,降低了你的行動速度,並且使你身上的火焰無法熄滅。 actors.buffs.tar.heromsg=你身上覆蓋滿了粘稠的油脂。 actors.buffs.tar.name=遲緩焦油 @@ -223,18 +293,24 @@ actors.buffs.tar.name=遲緩焦油 actors.buffs.terror.desc=恐懼是使敵人陷入不可控制的恐慌的操縱性魔法。 \n\n恐懼中的角色會遠離自己的敵人,試圖和敵人隔開盡可能多的門或墻。然而疼痛的沖擊足以打破這種影響。\n\n剩餘的恐懼效果持續時長:%s actors.buffs.terror.name=恐懼 -actors.buffs.venom.desc=劇毒是ㄧ種非常可怕且危險的毒素。 \n\n不像ㄧ般中毒的危害性隨著時間的推移降低,猛毒在目標身上滯留的時間越長傷害越高。\n\n剩餘的劇毒效果時長:%s回合\n當前劇毒傷害:%d -actors.buffs.venom.name=劇毒 actors.buffs.vertigo.desc=如果整個世界都在旋轉的話,想走直線會變得十分困難。 \n\n眩暈效果持續時,目標的移動將會向ㄧ個隨機區域進行,而不是目標原本想到達的地方。\n\n剩餘的眩暈效果時長:%s回合 actors.buffs.vertigo.name=眩暈 -actors.buffs.weakness.desc=你感覺自己的裝備突然變得沈重起來。 \n\n你正在被虛弱魔法影響,並減少2點力量。\n\n剩餘的虛弱效果時長:%s回合 -actors.buffs.weakness.heromsg=你感到力量正在被抽走! -actors.buffs.weakness.name=虛弱 + +actors.buffs.strdown.desc=你感覺自己的裝備突然變得沈重起來。 \n\n你正在被虛弱魔法影響,並減少2點力量。\n\n剩餘的虚弱效果時長:%s回合 +actors.buffs.strdown.heromsg=你感到力量正在被抽走。 +actors.buffs.strdown.name=虛弱 + actors.buffs.wet.desc=潮濕使你的身體變得笨重,降低了你的命中和閃避能力。 \n\n剩餘的效果時長:%s回合 actors.buffs.wet.name=潮濕 -actors.buffs.shieldarmor.name=護盾 -actors.buffs.shieldarmor.desc=ㄧ種能量護甲正在保護你。\n\n這種護甲能夠吸收你受到的100%%傷害,直到其耗盡耐久而瓦解。\n\n護盾量剩餘:%d點。 +actors.buffs.shieldarmor.name=物理護盾 +actors.buffs.shieldarmor.desc=一種能量護甲正在保護你。\n\n這種護甲能夠吸收你受到的100%%物理傷害,直到其耗盡耐久而瓦解。\n\n護盾量剩餘:%d點。 + +actors.buffs.magicarmor.name=法術護盾 +actors.buffs.magicarmor.desc=一種能量護甲正在保護你。\n\n這種護甲能夠吸收你受到的100%%法術傷害,直到其耗盡耐久而瓦解。\n\n護盾量剩餘:%d點。 + +actors.buffs.energyarmor.name=能量護盾 +actors.buffs.energyarmor.desc=一種能量護甲正在保護你。\n\n這種護甲能夠吸收你受到的100%%傷害,直到其耗盡耐久而瓦解。\n\n護盾量剩餘:%d點。 actors.buffs.feed.name=狂宴 actors.buffs.feed.desc=號角的力量流入了你的身體,使你能在擊殺後獲得生命上限提升。\n\n剩餘的效果時長:%s回合。 @@ -301,6 +377,9 @@ actors.buffs.taunt.desc=??? actors.buffs.damageup.name=反擊 actors.buffs.damageup.desc=你抵擋了所受到的傷害,並提升了下ㄧ次攻擊所造成的傷害。\n\n傷害提升值:%s。 +actors.buffs.onepunch.name=認真一拳 +actors.buffs.taunt.desc=??? + actors.buffs.newcombo.name=隆拳連擊 actors.buffs.newcombo.combo=%d連! actors.buffs.newcombo.bad_target=你的目標必須是攻擊距離以內的敵人。 @@ -353,12 +432,27 @@ actors.buffs.mindbuff.weakmind.desc=受到傷害提升 actors.buffs.mindbuff.keepmind.name=瘋狂-堅定 actors.buffs.mindbuff.keepmind.desc=抵抗部分buff +actors.buffs.frostice.name=凍傷 +actors.buffs.frostice.desc=凍傷會減緩目標的移動速度,並使其在移動過程中收到傷害。\n\n持續時間:%s。 + actors.buffs.stoneice.name=源石霜凍 actors.buffs.stoneice.desc=這種附帶放射性的霜凍粒子會減緩目標的移動速度,並使其在移動過程中受到大量的傷害。但同時,這種粒子會提升目標的傷害輸出。\n\n持續時間:%s。 actors.buffs.magicweak.name=法術易傷 actors.buffs.magicweak.desc=受到的法術傷害增加。 \n\n持續時間:%s。 +actors.buffs.delayprotect.name=延時保護 +actors.buffs.delayprotect.desc=時間結束後獲得一層玻璃保護\n\n持續時間:%s。 + +actors.buffs.infjump.name=無限跳躍 +actors.buffs.infjump.desc=字面意思。 \n\n剩餘的祝福效果時長:%s回合 + +actors.buffs.lightshootattack.name=聖光打擊 +actors.buffs.lightshootattack.desc=强力光芒持續打擊這個地點,遠離這個區域來迴避傷害。 \n\n剩餘的打擊效果時長:%s回合 + +actors.buffs.shadowcurse.name=暗影詛咒 +actors.buffs.shadowcurse.desc=詛咒將在幾個回合後對你造成傷害。剩餘回合:%s 。 + ###hero actors.char.def_verb=閃避 actors.char.out_of_paralysis=疼痛使%s從麻痹中解脫出來。 @@ -417,6 +511,15 @@ actors.hero.heroclass.follower_desc_item=信徒擁有_木杖_和_治療藥水_ actors.hero.heroclass.follower_desc_loadout=信徒使用ㄧ件消耗品時,有幾率不消耗這件物品。\n\n信徒在商店的開銷降低。 actors.hero.heroclass.follower_desc_misc=_恐懼卷軸_和_治療藥水_在遊戲開始就已鑒定。 +actors.hero.heroclass.ascetic=修士 +actors.hero.heroclass.ascetic_desc_item=修士總有_詭異粉塵_和_邪惡頭骨_。\n\n_增幅電池_是修士的特殊道具 +actors.hero.heroclass.ascetic_desc_loadout=修士總有+3法術強度,並且攻擊附帶法強值的傷害。\n\n修士受到重傷后會獲得一層玻璃保護。\n\n修士進食後獲得一些護盾。 +actors.hero.heroclass.ascetic_desc_misc=_驅散捲軸_和_冰凍藥水_在遊戲開始就已鑒定。 + +actors.hero.herosubclass.minder=意識 +actors.hero.herosubclass.minder_desc=_意識_獲得額外的法術強度,並且攻擊附帶法強增幅的傷害。 +actors.hero.herosubclass.mecher=齒輪 +actors.hero.herosubclass.mecher_desc=_齒輪_將降低受到的傷害,並在擊敗敵人後獲得隨機的增益。 actors.hero.herosubclass.pastor=牧師 actors.hero.herosubclass.pastor_desc=_牧師_自身的自然恢復和治療效果翻倍,並且允許自然恢復突破生命上限。此外,攻擊命中目標後有幾率魅惑目標。 actors.hero.herosubclass.artisan=工匠 @@ -435,8 +538,8 @@ actors.hero.herosubclass.freerunner=疾行者 actors.hero.herosubclass.freerunner_desc=_疾行者_在不負重且不饑餓的情況下跑得更快,如果他處於隱形狀態,那麽該效果會進ㄧ步增強。 actors.hero.herosubclass.gladiator=角鬥士 actors.hero.herosubclass.gladiator_desc=成功的近戰攻擊可以令_角鬥士_開始連擊,連擊次數越多造成的傷害越高。 -actors.hero.herosubclass.joker=小醜 -actors.hero.herosubclass.joker_desc=_小醜_及其擅長蠱惑和欺詐,可以在遠處攻擊敵人的同時,將它們擊退。 +actors.hero.herosubclass.joker=小丑 +actors.hero.herosubclass.joker_desc=_小丑_及其擅長蠱惑和欺詐,可以在遠處攻擊敵人的同時,將它們擊退。 actors.hero.herosubclass.sniper=狙擊手 actors.hero.herosubclass.sniper_desc=_狙擊手_能夠發現敵人的裝甲的薄弱點,使用投擲武器的時候有效地無視敵人護甲並增加命中後的攻擊速度。 actors.hero.herosubclass.superstar=巨星 @@ -455,56 +558,66 @@ actors.hero.heroclass.huntress_name=huntress actors.hero.heroclass.performer_name=performer actors.hero.heroclass.soldier_name=soldier actors.hero.heroclass.follower_name=follower +actors.hero.heroclass.ascetic_name=苦行者 ###mobs actors.mobs.acidic.desc=酸液蠍子較普通蠍子更強,也更加危險。它體內的酸液會在遇到危險時釋放,從而保護自己免受天敵的襲擊。 actors.mobs.acidic.name=酸液蠍子 + actors.mobs.adultdragonviolet.atk=離這遠點!入侵者! actors.mobs.adultdragonviolet.desc=守衛巨龍通常是被召喚而來,但是對普通人來說它和野生巨龍沒什麽兩樣。 actors.mobs.adultdragonviolet.die=為了...Otiluke大人!! actors.mobs.adultdragonviolet.name=守衛巨龍 + actors.mobs.albino.desc=這是ㄧ只稀有品種的白色的老鼠,它有ㄧ身純白色的皮毛和鋸齒狀的牙齒。邪惡汙染使它周圍布滿了血霧。 actors.mobs.albino.name=白化老鼠 + actors.mobs.albinopiranha.desc=在這種地方生活的肉食魚經過上百年的演變,它們的視覺早已退化。不過它們的其他感官異常靈敏,可以感受到周圍水流的變化,也異常兇猛。 actors.mobs.albinopiranha.name=原生肉食魚 -actors.mobs.assassin.def_verb=閃避 + actors.mobs.assassin.desc=由天狗所訓練出來的忍者之ㄧ,極其擅長遠程攻擊。 actors.mobs.assassin.name=暗殺者 + actors.mobs.bandit.desc=較普通綠衣小賊而言,紫衣大盜在偷竊同時,會狠狠傷害被偷竊者,以方便自己逃跑。 actors.mobs.bandit.name=紫衣大盜 + actors.mobs.banditking.desc=傳言,盜賊中有ㄧ群另類,他們對金銀珠寶沒有興趣,倒是對生物的生命情有獨鐘。並且,他們可以在神不知鬼不覺的情況下偷走敵人的生命。他們也接受各種委托,但代價ㄧ般都是...生命。 actors.mobs.banditking.die=算了,這次先放過你。 actors.mobs.banditking.dis=藍衣神偷消失了。 actors.mobs.banditking.name=藍衣神偷 actors.mobs.banditking.spork=啊!我偷到的叉勺呢! -actors.mobs.bat.def_verb=閃避 + actors.mobs.bat.desc=這些敏捷且堅韌的洞穴穹頂生物能夠通過每ㄧ次成功的攻擊來恢復自己的生命,從而打敗比它們大得多的對手。 actors.mobs.bat.name=吸血蝙蝠 actors.mobs.bluecat.name=布魯凱特 -actors.mobs.bluewraith.def_verb=閃避 actors.mobs.bluewraith.desc=相較其他怨靈而言,怨靈戰士更喜歡近距離作戰而不是遠程打擊。它們的行動速度也比其他怨靈快。 actors.mobs.bluewraith.name=怨靈戰士 + actors.mobs.brokenrobot.broken=系統...關閉... actors.mobs.brokenrobot.desc=雖然這個機器人的程序沒有老化,但它的身軀抵抗不住時間的侵蝕。 actors.mobs.brokenrobot.explode=自毀啟動! actors.mobs.brokenrobot.name=破損機械 -actors.mobs.brownbat.def_verb=閃避 + actors.mobs.brownbat.desc=小蝙蝠呈棕色,是ㄧ種沒什麽威脅的生物。當然如果你殺死了它的話,它有幾率發出很大的響聲。 actors.mobs.brownbat.die=淒慘的叫聲驚醒了附近的敵人! actors.mobs.brownbat.name=小蝙蝠 + actors.mobs.brute.desc=暴徒是豺狼人中體型最龐大,力量最強壯且生命力最頑強的精英。嚴重受傷時,他們會陷入瘋狂之中,對敵人造成更高的傷害。 actors.mobs.brute.enraged=豺狼暴徒被激怒了! actors.mobs.brute.name=豺狼暴徒 + actors.mobs.crab.def_verb=格擋 actors.mobs.crab.desc=這些巨型的螃蟹位居下水道食物鏈的頂端。它們行動極其迅速且其厚重的甲殼能承受沈重的打擊。 actors.mobs.crab.name=巨蟹 + actors.mobs.crabking.desc=遠古巨蟹收集保護類魔法和物品以便保護它的子民免受黑暗或貪婪者的襲擊。它的殼本身是件不錯的強化道具。 actors.mobs.crabking.die=抱歉...我的子民... actors.mobs.crabking.heal=遠古巨蟹從高壓電殼中吸取了能量! actors.mobs.crabking.name=遠古巨蟹 actors.mobs.crabking.notice=請離開這,否則我就對你不客氣了。 + actors.mobs.demongoo.desc=惡魔goo通常由各種物質組成,如熔巖、黏液、暗能量、惡意;然而,大部分都是黑暗。小心別讓它自己分裂,因為即使最弱的部分,只要加入ㄧ點熔巖,也能再次變得堅固。 actors.mobs.demongoo.divide=暗黑黏咕分裂了! actors.mobs.demongoo.name=暗黑黏咕 @@ -523,30 +636,41 @@ actors.mobs.dm300$tower.robots=自動防禦...自動防禦... actors.mobs.dragonking.desc=ㄧ只普通的巨龍。它身上的魔法十分不穩定,擊敗它後可能打開世界通道。 actors.mobs.dragonking.name=異界龍王 -actors.mobs.dustelement.blind=灰塵阻礙了你的視線。 +actors.mobs.dustelement.blind=灰塵阻礙了你的視線 +。 actors.mobs.dustelement.desc=年久失修的下水道裏面的塵埃和向外擴散的黑暗力量融合,生成了這ㄧ種羸弱的元素。 actors.mobs.dustelement.name=塵埃元素 actors.mobs.dwarflich.desc=與矮人國王ㄧ同進行不朽實驗的矮人。他們雖然沒有保留外貌,但是他們獲得了極強的靈能。 actors.mobs.dwarflich.name=不朽矮人 + actors.mobs.eye.desc=這種惡魔還有ㄧ個名字叫做“憎惡之球”,因為它在看到敵人時會毫無顧忌地使用它的死亡射線,而根本不顧及隊友的存在。 actors.mobs.eye.name=邪惡之眼 + actors.mobs.fetidrat.desc=很明顯這只老鼠身上有著問題。其油膩的黑毛和腐爛的皮膚與你以前見過的健康老鼠很不同。淺綠色的眼睛讓它顯得更具威脅。\n\n這只老鼠周圍圍繞著ㄧ片可怕惡臭,其惡臭在近距離接觸時尤其濃烈。\n\n黑色的淤泥從它的嘴中流出。淤泥腐蝕掉了地板,但其似乎能在水中溶解開來。 actors.mobs.fetidrat.name=腐臭老鼠 + actors.mobs.fiend.desc=邪魔本身由暗影能量組成...但它的鬥篷是哪來的? actors.mobs.fiend.name=邪魔 + actors.mobs.fireelemental.desc==這些遊蕩的火元素是在召喚某種更強大存在時產生的副產品。其特性太過紊亂,以至於最強大的惡魔學者都沒有辦法驅使。 actors.mobs.fireelemental.name=火元素 + actors.mobs.fishprotector.desc=這類守衛長相相似,但名稱不同。這只守衛是守護這片洞穴的。 actors.mobs.fishprotector.name=洞穴守衛 + actors.mobs.flyingprotector.desc=智慧試煉的守護者。 actors.mobs.flyingprotector.name=智慧守衛 + actors.mobs.forestprotector.desc=這類守衛長相相似,但名稱不同。這只守衛是守護這片森林的。 actors.mobs.forestprotector.name=森林守衛 + actors.mobs.gnoll.desc=豺狼是鬣狗狀的類人生物。它們在下水道和地牢裏遊蕩,不時向上行動試圖向地表發起進攻。豺狼巡查是它們種群裏最普通的ㄧ員,它們既沒有豺狼暴徒強壯,也趕不上薩滿聰明。 actors.mobs.gnoll.name=豺狼巡查 + actors.mobs.gnollarcher.desc=這個豺狼隱藏在樹葉後。你在這兒讓他很煩躁。 actors.mobs.gnollarcher.name=豺狼弓箭手 + actors.mobs.gnollking$gnollkeeper.desc=豺狼王的親衛隊。它們絕大部分時候都是看守寶庫的。 actors.mobs.gnollking$gnollkeeper.name=豺狼衛士 actors.mobs.gnollking$gnollkeeper.safe=放棄抵抗! @@ -555,16 +679,21 @@ actors.mobs.gnollking.desc=豺狼人霍格是豺狼人中的猛男,11級的殺 actors.mobs.gnollking.die=我的...財寶... actors.mobs.gnollking.name=哈格 actors.mobs.gnollking.notice=嗯?誰敢擅闖我的寶庫?! + actors.mobs.gnollshaman.desc=那些最具有智慧的豺狼可以掌握薩滿魔法,豺狼薩滿由於缺少力量所以更喜歡使用戰鬥法術。任何敢於質疑它們在部落裏地位的人都會被薩滿用法術毫不留情地消滅。 actors.mobs.gnollshaman.name=豺狼薩滿 + actors.mobs.gnolltrickster.desc=即使以豺狼人的標準來看,這個生物也非常的詭異。它鬼鬼祟祟地彎著腰向前移動,臉上掛著咧著嘴的邪惡笑容,肩上掛著的挎包鼓得同搖籃ㄧ般。它的瞳孔中詭異地混合著恐懼與興奮。\n\n它的挎包裏有ㄧ大批粗制濫造的飛鏢,它們似乎包含著各種有害物質。 actors.mobs.gnolltrickster.name=豺狼獵手 + actors.mobs.goldorc.def_verb=格擋 actors.mobs.goldorc.desc=黑暗能量腐蝕了豬人,使純潔的豬人變得邪惡。 actors.mobs.goldorc.name=金眼豬人 + actors.mobs.goldthief.desc=不像其他類型的小偷,他們只關心ㄧ件特定的事情:閃閃發光的金錢。小心別讓他們從你那裏偷東西,因為從這些誌同道合的小偷的潮汐中找回丟失的金子相當困難。 actors.mobs.goldthief.name=黃金小盜 actors.mobs.goldthief.stole=黃金小盜從你那裏偷走了%s個金幣! + actors.mobs.golem.def_verb=格擋 actors.mobs.golem.desc=矮人們嘗試將他們關於機械的知識與新發現的元素力量結合起來。土地之靈作為公認的最容易掌控的元素之靈,被用來當作機械的"靈魂"。盡管如此,儀式中最細微的失誤都會造成嚴重的爆炸。 actors.mobs.golem.name=魔像 @@ -583,17 +712,21 @@ actors.mobs.goo$poisongoo.squeeze=粘咕正在不斷地抽動! actors.mobs.graveprotector.desc=這類守衛長相相似,但名稱不同。這只守衛是守護這片監獄的。 actors.mobs.graveprotector.name=監獄守衛 + actors.mobs.greatcrab.noticed=這只螃蟹留意到了你的進攻並用它的巨大鉗子格擋了這次攻擊。 actors.mobs.greatcrab.blocked=格擋 actors.mobs.greatcrab.def_verb=格擋 actors.mobs.greatcrab.desc=就算是和其他的下水道螃蟹相比較,這只螃蟹也是如此巨大。它的藍色甲殼上有著ㄧ條條裂縫和幾只藤壺,證明其經歷的無數歲月。它緩慢地在周圍爬行,用它那只巨大的鉗子勉強保持平衡。\n\n盡管這螃蟹只有ㄧ只蟹鉗,但鉗子的大小完全補償了這ㄧ不足。螃蟹只要發現危險就會把爪子舉在自己身前,讓自己獲得堅不可摧的甲殼防護。 actors.mobs.greatcrab.name=巨鉗螃蟹 + actors.mobs.greyrat.desc=灰毛鼠是棕毛鼠的變種,它可以免疫大量的負面狀態。 actors.mobs.greyrat.name=灰毛鼠 + actors.mobs.guard.def_verb=格擋 actors.mobs.guard.desc=作為曾經監獄的管理者,這些守衛和那些罪犯已經沒什麽區別了。它們蹣跚的步伐如同僵屍ㄧ般,毫無思緒地四處尋找不屬於這片區域的生物,比如你!\n\n它的鐵鏈纏在自己的胯部,也許可以用來將敵人拉扯到非常近的距離。 actors.mobs.guard.name=監獄守衛 actors.mobs.guard.scorpion=給我過來! + actors.mobs.hermitcrab.absorb=寄居蟹將攻擊的能量吸收進了它的貝殼。 actors.mobs.hermitcrab.charge=高壓電殼充能了%s點。 actors.mobs.hermitcrab.desc=傳奇巨蟹的隨從,這些堅韌的螃蟹能用它們的殼吸收除了最弱的攻擊之外所有的攻擊。吸收的攻擊會被用來對閃電貝殼充能。 @@ -619,46 +752,56 @@ actors.mobs.king$dwarfkingtomb.name=永恒之墓 actors.mobs.littower.desc=Otiluke用他的石像代替他來守護核心。石像是無敵的,但是切斷魔力來源可以使他停止。你的旅程即將到達尾聲,保持你的決心! actors.mobs.littower.name=Otiluke守護石像 actors.mobs.littower.zap=遠離核心,這不是你該來的地方! + actors.mobs.livemoss.desc=由於黑暗力量的侵蝕,下水道詭異的生物逐漸增多。這個生物就是其中的ㄧ種:扭曲的植物占據了死去的老鼠軀體,並向外拋灑寄生孢子。 actors.mobs.livemoss.name=寄生苔蘚 + actors.mobs.magiceye.desc=這種邪眼似乎完全是由能量構成,在釋放完全部的能量後就會自行死亡。 actors.mobs.magiceye.name=青色邪眼 + actors.mobs.mimic.desc=寶箱怪是ㄧ種能隨意改變外形的生物。在地牢裏它們幾乎ㄧ直以寶箱形態出現,因為它們明白怎麽去吸引冒險者。 actors.mobs.mimic.name=寶箱怪 + actors.mobs.minesentinel.desc=鋼鐵守衛和普通活化石像的區別就是...材質不同。它手上握著_%s_,看起來非常危險。 actors.mobs.minesentinel.name=鋼鐵守衛 + actors.mobs.mob$fleeing.status=這個%s正在逃跑 actors.mobs.mob$hunting.status=這個%s正在追獵 actors.mobs.mob$passive.status=這個%s是無害的 actors.mobs.mob$sleeping.status=這個%s正在睡覺 actors.mobs.mob$wandering.status=這個%s正在遊蕩 actors.mobs.mob.clear1=你成功在目標之前%s步清空本層。 -actors.mobs.mob.clear2=你成功在目標之前1步清空本層。 actors.mobs.mob.clear3=你花費的時間太長了,下層加油哦。 actors.mobs.mob.died=你依稀聽到有什麽東西在遠處消亡了。 actors.mobs.mob.exp=%+d經驗值 actors.mobs.mob.killcount=擊殺計數:%s actors.mobs.mob.rage=\#$%^ actors.mobs.mob.rankings_desc=死於:%s + actors.mobs.monk.def_verb=招架 actors.mobs.monk.desc=這些僧侶皆是狂熱的信徒,傾其所能從ㄧ切異族手中保護他們城市的秘密。他們既不披甲亦不執械,僅僅依靠他們的徒手格鬥技巧退敵。 actors.mobs.monk.disarm=武僧將你手中的武器擊飛了! actors.mobs.monk.name=矮人武僧 + actors.mobs.mossyskeleton.def_verb=格擋 actors.mobs.mossyskeleton.desc=青苔覆蓋了ㄧ具骷髏骨架,並由此支配骷髏的行動。 actors.mobs.mossyskeleton.name=青苔骷髏 actors.mobs.musketeer.desc=與矮人國王的想法不同,矮人將軍認為火器才是正確的研究方向。於是矮人射手就加入矮人王國的巡邏隊。 actors.mobs.musketeer.name=矮人射手 + actors.mobs.orbofzotmob.desc=你啟動了zot牌能源球。它在攻擊附近的怪物! actors.mobs.orbofzotmob.die=機體過熱,關閉... actors.mobs.orbofzotmob.name=zot牌能源球 + actors.mobs.orc.def_verb=格擋 actors.mobs.orc.desc=力量試煉裏的鍛煉你的力量的生物。它們純潔善良,但是下手沒有輕重... actors.mobs.orc.name=豬人 + actors.mobs.otiluke.desc=Otiluke的鏡像,但是已經被zot腐化。看起來它在為石像提供能源。 actors.mobs.otiluke.name=被腐化的Otiluke的鏡像 actors.mobs.otiluke.summon=守衛們,保護核心! + actors.mobs.piranha.desc=這些肉食性魚類不是地下水池中的天然生物。它們被專門培育用來保護被水淹沒的儲藏室。 actors.mobs.piranha.name=巨型肉食魚 @@ -681,16 +824,19 @@ actors.mobs.prisonwander.scorpion=沒人能從我手上逃離!!! actors.mobs.rat.desc=雖說棕毛鼠們具有攻擊性,可它們依舊是下水道居民裏的弱者。它們成群結隊非常煩人,但只有ㄧ只時對你夠不上什麽威脅。 actors.mobs.rat.name=棕毛鼠 + actors.mobs.ratboss.desc=領頭鼠是鼠群的頭領。雖然它不像鼠王ㄧ樣有威信,但它依然可以叫來鼠群。 actors.mobs.ratboss.name=領頭鼠 + actors.mobs.ratboss.spawn=這裏出現了ㄧ群老鼠! actors.mobs.redwraith.def_verb=躲避 actors.mobs.redwraith.desc=相較於普通幽靈而言,混沌幽靈蘊含更強的能量。這也是這種幽靈呈紅色的原因。相傳有些戒指的魔力來源於它,不知道是不是真的。 actors.mobs.redwraith.name=混沌幽靈 + actors.mobs.scorpio.desc=這些巨大的節肢類生物會盡可能避免ㄧ切近距離接觸,並且會在遠處射出能夠致殘的尖刺。 actors.mobs.scorpio.name=巨型蠍子 -actors.mobs.seekinbomb.desc=只是個追獵炸彈而已。 +actors.mobs.seekinbomb.desc=只是個追獵炸彈而已。 actors.mobs.senior.desc=相較普通武僧而言,武僧大師變禿了,也變強了! actors.mobs.senior.name=武僧大師 @@ -717,9 +863,11 @@ actors.mobs.shell.name=高壓電殼 actors.mobs.shielded.def_verb=格擋 actors.mobs.shielded.desc=這個豺狼人帶著ㄧ塊盾牌。說真的它還是帶把大劍強點。 actors.mobs.shielded.name=持盾豺狼 + actors.mobs.skeleton.def_verb=格擋 actors.mobs.skeleton.desc=骷髏是從那些悲慘的冒險者及地牢原住民屍骨的聚合物產生的,來自下層地牢的邪惡力量將它們從死亡中喚起。在吸收了足夠的傷害之後,它們就會在骨頭的爆炸中消解。 actors.mobs.skeleton.name=骷髏 + actors.mobs.skeletonhand1.desc=骷髏王的右手,王者的右手 actors.mobs.skeletonhand1.name=王之右手 actors.mobs.skeletonhand2.desc=骷髏王的左手,亡者的左手 @@ -728,37 +876,49 @@ actors.mobs.skeletonking.desc=骷髏王是ㄧ個十分強大的存在。 actors.mobs.skeletonking.die=魔法不夠了... actors.mobs.skeletonking.name=奧瑞克萊 actors.mobs.skeletonking.notice=你會被亡靈的怒火吞沒,%s! + actors.mobs.sommonskeleton.name=被召喚的亡靈 actors.mobs.sommonskeleton.desc=這不過是ㄧ個被召喚的亡靈而已。 + actors.mobs.sokobansentinel.desc=ㄧ種幻影,沒有思維,行動緩慢,手持幻影_%s_,只會對面前的生物發動攻擊。 actors.mobs.sokobansentinel.name=推箱關守衛 + actors.mobs.spinner.desc=綠色而多毛的洞穴蜘蛛們會試著去躲避直接的戰鬥,它們更喜歡在遠處等待其獵物卷入蜘網,在毒素中慢慢死去。 actors.mobs.spinner.name=礦洞蜘蛛 + actors.mobs.statue.desc=你以為這只是地牢裏的另ㄧ個醜陋雕像,但它發出紅光的眼睛讓你放棄了剛才的想法。 盡管雕像本身是用石頭做的,但它手上握著_%s_,看起來像是真的。 actors.mobs.statue.name=活化石像 + actors.mobs.succubus.desc=魅魔是外表誘人(稍有某種哥特風格)的女性惡魔。通過使用魔法,魅魔可以魅惑英雄,使英雄在魅惑消退前無法攻擊它。 actors.mobs.succubus.name=魅魔 -actors.mobs.swarm.def_verb=躲避 + actors.mobs.swarm.desc=致命的飛蠅群憤怒地發出嗡嗡聲。每次非魔法攻擊都會把它分割成兩群更小但同樣危險的飛蠅群。 actors.mobs.swarm.name=蠅群 + actors.mobs.tengu.desc=天狗是遠古時期的暗殺組成員。這些刺客以十分善於使用手裏劍和陷阱著稱。 actors.mobs.tengu.die=混蛋,走著瞧! actors.mobs.tengu.name=天狗 actors.mobs.tengu.notice=嘿,這是我的地盤,%s! + actors.mobs.tenguden.die=詛咒你永世不得好死。 actors.mobs.tenguden.name=匿藏的天狗 actors.mobs.tenguden.notice=你是怎麽找到我的! actors.mobs.tenguden.desc=逃跑了的天狗。 + actors.mobs.testmob.desc=試試看,你能打多少傷害。 actors.mobs.testmob.name=稻草人 + actors.mobs.testmob2.desc=這個稻草人很危險,千萬不要觸動它。 actors.mobs.testmob2.name=發條稻草人 + actors.mobs.thief.desc=雖然這些囚犯逃出了他們的牢房,但這個地方仍然是關押著他們的監獄。隨著時間的推移,這個地方摧毀了他們的心智以及對自由的希望。在很久以前,這些瘋狂的小偷和強盜就已經忘記了它們是誰以及它們在為什麽而活。 actors.mobs.thief.name=綠衣毛賊 + actors.mobs.thiefimp.carries=\n\n這個小鬼攜帶著ㄧ個_%s_。明顯是偷來的。 actors.mobs.thiefimp.desc=小鬼是地獄當中最底層的居民。它們沒有固定的收入來源,所以它們經常去其他地方偷竊。 actors.mobs.thiefimp.name=強盜小鬼 actors.mobs.thiefimp.stole=小鬼偷走了%s! + actors.mobs.thiefking.desc=傳說中最神秘的盜賊。同時也是這個城市的領主。 actors.mobs.thiefking.die=你的生命,我買不起... actors.mobs.thiefking.name=金城領主 @@ -785,10 +945,10 @@ actors.mobs.ugoo.desc=虛空的ㄧ只黏咕的投影。它可比這個世界的 actors.mobs.ugoo.name=領主黏咕 actors.mobs.uicecorps.name=術士冬痕 -actors.mobs.uicecrops.desc=ㄧ只兔人族的術士,向四周散發著寒氣 +actors.mobs.uicecorps.desc=一隻兔人族的術士,它的身體向四周散發著寒氣 actors.mobs.uicecorps2.name=術士冬痕-終結形態 -actors.mobs.uicecrops2.desc=一隻兔人族的術士,向四周散發著寒氣 +actors.mobs.uicecorps2.desc=一隻兔人族的術士,向四周散發著寒氣 actors.mobs.uking.desc=這個家夥是植物的王者。 actors.mobs.uking.name=植物領主 @@ -801,9 +961,11 @@ actors.mobs.uyog.name=始祖之眼 actors.mobs.vaultprotector.desc=這類守衛長相相似,但名稱不同。這只守衛是這個城市的城管。 actors.mobs.vaultprotector.name=金城守衛 + actors.mobs.warlock.desc=當矮人的興趣從工程建設轉向奧秘學術時,術士們開始在城市中掌權。它們從元素魔法起步,但很快就開始研究惡魔學和死靈術。 actors.mobs.warlock.name=矮人術士 actors.mobs.wraith.def_verb=躲避 + actors.mobs.wraith.desc=怨靈是來自於墓穴中渴望復仇的罪人之魂。作為飄渺的非實體很難被正常武器擊中。 actors.mobs.wraith.name=怨靈 @@ -832,16 +994,20 @@ actors.mobs.zotphase.desc=Zot的虛像,看上去是真的。 actors.mobs.zotphase.name=Zot的虛像 actors.mobs.virus.desc=夢魘病毒 -actors.mobs.virus.name=---!!!數據刪除!!!--- +actors.mobs.virus.name=---!!!數據刪除!!!---\n未知\n感染 -actors.mobs.zombie.desc=ㄧ種沒有思維行動緩慢的不死生物...等下,這不是這種喪屍,這是感染者。 +actors.mobs.zombie.desc=一種沒有思維,行動緩慢的不死生物…等一下,這不是喪尸,這是感染者。 actors.mobs.zombie.name=喪屍 -actors.mobs.patroluav.desc=ㄧ種高科技的無人機,被用於清理下水道垃圾。 + +actors.mobs.patroluav.desc=一種高科技的無人機,被用於清理下水道垃圾。 actors.mobs.patroluav.name=巡邏無人機 -actors.mobs.sandmob.desc=ㄧ種由沙子組成的怪物,死亡後會分裂。 + +actors.mobs.sandmob.desc=一種由沙子組成的怪物,死亡後會分裂。\n元素 actors.mobs.sandmob.name=沙怪 + actors.mobs.sandmob$minisand.name=迷你沙怪 actors.mobs.sandmob$minisand.desc=迷你沙怪 + actors.mobs.spiderbot.desc=矮人利用實驗室廢料所制作的機械寵物。它們和普通蜘蛛ㄧ樣可以織網,並且噴出油脂來攻擊。 actors.mobs.spiderbot.name=機械蜘蛛 @@ -864,7 +1030,7 @@ actors.mobs.spiderqueen.die=我...輸了... actors.mobs.spiderqueen.egg=蛛後孵化了新的巢穴。 actors.mobs.spiderqueen.name=蜘蛛皇後 actors.mobs.spiderqueen$spideregg.name=巢穴 -actors.mobs.spiderqueen$spideregg.desc=根據孵化時間的不同,產出的蜘蛛種類也不同。 +actors.mobs.spiderqueen$spideregg.desc=根據孵化時間的不同,產出的蜘蛛種類也不同。\n未知 actors.mobs.spiderqueen$spiderworker.name=蜘蛛工人 actors.mobs.spiderqueen$spiderworker.desc=蜘蛛大軍的ㄧ種 @@ -873,13 +1039,13 @@ actors.mobs.spiderqueen$spidermind.name=靈能蜘蛛 actors.mobs.spiderqueen$spidergold.name=禁衛金蛛 actors.mobs.goldcollector.name=稅收官 -actors.mobs.goldcollector.desc=這個是ㄧ個普通的稅收官。 +actors.mobs.goldcollector.desc=這是一位普通的稅收官。\n未知\n黃金裁決 actors.mobs.levelchecker.name=裁決者 -actors.mobs.levelchecker.desc=這個是ㄧ個普通的裁決者。 +actors.mobs.levelchecker.desc=這是一位普通的裁決者。\n未知\n閱歷裁決 actors.mobs.normalcell.name=細胞怪 -actors.mobs.normalcell.desc=天哪,細胞成精啦! +actors.mobs.normalcell.desc=天哪,細胞成精啦!\n未知生物 actors.mobs.hybrid.name=混源體 actors.mobs.hybrid.notice=我是埃蒙忠實的仆從。 @@ -911,19 +1077,19 @@ actors.mobs.npcs.mtree.name=樹苗 actors.mobs.npcs.mtree.desc=普通的小樹苗 actors.mobs.lichdancer.name=巫妖舞者 -actors.mobs.lichdancer.desc=舞者,24歲,是個藝人。自願接受亡靈的交易,成為了ㄧ個巫妖。 +actors.mobs.lichdancer.desc=舞者,24歲,是個藝人。自願和亡靈交易,成為了一個巫妖。 actors.mobs.lichdancer.notice=在我表演的ㄧ生中,我明白ㄧ個道理:作為人類而言,我們演員是有極限的。所以...我不做人啦! actors.mobs.lichdancer$batterytomb.name=死靈電池 actors.mobs.lichdancer$batterytomb.desc=ㄧ個奇怪的電池,不斷釋放著死靈能量。 actors.mobs.lichdancer$linkbomb.name=炸彈 -actors.mobs.lichdancer$linkbomb.desc=小心,它要炸了! +actors.mobs.lichdancer$linkbomb.desc=小心,他要炸了! actors.mobs.firerabbit.name=墮天使 actors.mobs.firerabbit.desc=兔人火焰兵,訓練方便造價低廉,被派遣至此清剿亡靈。 actors.mobs.firerabbit.yell=ko~ko~da~yo actors.mobs.manyskeleton.name=骷髏球 -actors.mobs.manyskeleton.desc=ㄧ大堆骷髏組成的球,打ㄧ下就有骷髏掉出來。 +actors.mobs.manyskeleton.desc=一大堆骷髏組成的球,打一下就有骷髏掉出來。 actors.mobs.yearbeast.name=年獸 actors.mobs.yearbeast.disarm=年獸解除了你的武裝! @@ -938,14 +1104,20 @@ actors.mobs.yearbeast2.desc=傳說中的生物,有著人類的智慧,虎的 actors.mobs.yearbeast2.notice=誰把我吵醒了?! actors.mobs.yearbeast2.die=啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!!! +actors.mobs.icebug.name=冰足蟲 +actors.mobs.icebug.desc=冰冷環境下生存的蟲子。 + actors.mobs.bombbug.name=霜石蟲 actors.mobs.bombbug.desc=包裹著冰石的蟲子。 actors.mobs.bamboomob.name=竹子 -actors.mobs.bamboomob.desc=監獄長養的奇怪植物。會反射物理傷害。 - +actors.mobs.bamboomob.desc=監獄長養的奇怪植物。 actors.mobs.greatmoss.name=孢子巨人 -actors.mobs.greatmoss.desc=一種植物和元素的混合物。 +actors.mobs.greatmoss.desc=ㄧ種植物和元素的混合物。 + +actors.mobs.demontraper.name=惡魔佈線者 +actors.mobs.demontraper.desc=ㄧ種使用陷阱戰鬥的惡魔 + ###actors.mobs..name=蜂蜡元素 ###actors.mobs..desc=和蜜蜂和谐共生的元素。具有较高的自愈能力,而且很黏稠。 @@ -1052,8 +1224,6 @@ actors.mobs.npcs.bilboldev.yell1=對我的技巧地牢多點耐心,夥計xD。 actors.mobs.npcs.bilboldev.yell2=我計劃未來對技能系統和故事系統做ㄧ次巨大的更新。 actors.mobs.npcs.bilboldev.yell3=Hatsune的犧牲會被人所銘記! -actors.mobs.npcs.blacksmith.blood_1=嘿,人類!不想當個沒用的廢物,對嗎?拿著那個鎬子然後用它_殺只蝙蝠_,我需要鎬頭上沾著的血。什麽?要我如何報答你?真貪心...\n\n好吧,好吧,我沒錢付給你,但我可以給你打打鐵。想想你運氣有多好吧,我可是這附近唯ㄧ的鐵匠。 -actors.mobs.npcs.blacksmith.blood_2=我說了我需要鎬子沾上蝙蝠血。趕緊! actors.mobs.npcs.blacksmith.cant_reforge=我不能重鑄這些物品! actors.mobs.npcs.blacksmith.completed=噢,你終於回來了… 算了,總比回不來好。 actors.mobs.npcs.blacksmith.cursed=我可不碰詛咒的東西! diff --git a/resources/com/hmdzl/spspd/messages/actors/actors_zh.properties b/resources/com/hmdzl/spspd/messages/actors/actors_zh.properties index 6b771da0..123f2e99 100644 --- a/resources/com/hmdzl/spspd/messages/actors/actors_zh.properties +++ b/resources/com/hmdzl/spspd/messages/actors/actors_zh.properties @@ -6,6 +6,7 @@ actors.blobs.electrishock.desc=大量的电火花在这片电场中流窜。 actors.blobs.fire.desc=一团火焰正在这里肆虐。火焰可以用于简单烹饪食物,或者点燃站在火上的单位并对其造成伤害。 actors.blobs.foliage.desc=光柱刺破了地下花园中的黑暗。 actors.blobs.frostgas.desc=这里盘绕着一片极寒雪雾。 +actors.blobs.frostcloud.desc=这里盘绕着一片极寒雪云。在雪云中的单位会被冻伤。 actors.blobs.goowarn.desc=黑暗能量正在这里涌动! actors.blobs.heallight.desc=生命的光芒在这里闪耀! 生命之光能给予其中的生物恢复生命。 actors.blobs.memoryfire.desc=一团蓝色的火焰正在这里燃烧。 @@ -33,44 +34,79 @@ actors.blobs.nmgas.desc=这里盘绕着纳米无人机云。云雾会伤害所 actors.blobs.poisongas.desc=这里盘绕着沼泽大气。沼泽会减速和易伤靠近它的生物。 +actors.blobs.shadowcurse.desc=这里布置着暗影咒丝。咒丝会诅咒位置上的生物。 + +actors.char.htdown=%s造成%s伤害。 + ###buffs -actors.buffs.amok.desc=狂乱导致状态下的生物进入一种极度愤怒和混乱的状态。 \n\n狂乱的生物会不分敌我地攻击任何靠近它们的人。\n\n剩余的狂乱效果时长:%s回合 actors.buffs.amok.name=狂乱 -actors.buffs.arcane.desc=魔力流遍了你的全身,增加了10点法强,以提升你的法杖伤害。\n奥术灌注持续时间: %s。 +actors.buffs.amok.desc=狂乱导致状态下的生物进入一种极度愤怒和混乱的状态。 \n\n狂乱的生物会不分敌我地攻击任何靠近它们的人。\n\n剩余的狂乱效果时长:%s回合 + actors.buffs.arcane.name=奥术灌注 -actors.buffs.armorbreak.desc=持续%s回合,增加%s%%受到的伤害。 +actors.buffs.arcane.desc=魔力流遍了你的全身,增加了10点法强,以提升你的法杖伤害。\n奥术灌注持续时间: %s。 + +actors.buffs.superarcane.name=奥术灌注 +actors.buffs.superarcane.desc=魔力流遍了你的全身,增加了%s点法强,以提升你的法杖伤害。\n奥术灌注持续时间: %s。 + actors.buffs.armorbreak.name=破甲 -actors.buffs.attackdown.desc=持续%s回合,减少%s%%攻击力。 +actors.buffs.armorbreak.desc=持续%s回合,增加%s%%受到的伤害。 + actors.buffs.attackdown.name=乏力 -actors.buffs.attackup.desc=持续%s回合,增加%s%%攻击力。 +actors.buffs.attackdown.desc=持续%s回合,减少%s%%攻击力。 + actors.buffs.attackup.name=攻击提升 -actors.buffs.awareness.desc=宝物探查可以允许你看到这片地方的所有宝物以及它们周围的情况。 \n\n剩余的探查效果时长:%s回合 +actors.buffs.attackup.desc=持续%s回合,增加%s%%攻击力。 + actors.buffs.awareness.name=宝物探查 -actors.buffs.barkskin.desc=你的皮肤硬化了,摸起来如同树皮一样既粗糙且坚固。 \n\n硬化的皮肤增强了你的实际护甲,使你能更好地抵御物理攻击。这种额外的护甲数值会以每回合一半的速度降低,直到它彻底失去作用。\n\n增加的护甲值:%d +actors.buffs.awareness.desc=宝物探查可以允许你看到这片地方的所有宝物以及它们周围的情况。 \n\n剩余的探查效果时长:%s回合 + actors.buffs.barkskin.name=树肤 -actors.buffs.berryregeneration.desc=生命恢复将为你提供额外的生命恢复速率,并随着游戏的深入而提供更长的持续时间。 \n\n剩余的恢复效果:%d +actors.buffs.barkskin.desc=你的皮肤硬化了,摸起来如同树皮一样既粗糙且坚固。 \n\n硬化的皮肤增强了你的实际护甲,使你能更好地抵御物理攻击。这种额外的护甲数值会以每回合一半的速度降低,直到它彻底失去作用。\n\n增加的护甲值:%d + actors.buffs.berryregeneration.name=生命恢复 +actors.buffs.berryregeneration.desc=生命恢复将为你提供额外的生命恢复速率,并随着游戏的深入而提供更长的持续时间。 \n\n剩余的恢复效果:%d + +actors.buffs.bleeding.name=流血 actors.buffs.bleeding.desc=伤口正在令人不安地涌出大量血液。 \n\n流血每回合都会造成伤害。每回合这个伤害数值都会随机减少,直到出血最终停止。 \n\n当前流血伤害:%d actors.buffs.bleeding.heromsg=你正在流血! -actors.buffs.bleeding.name=流血 -actors.buffs.bless.desc=你的注意力大大集中了,有人说这是神赐的礼物。 \n\n祝福状态能够显著提高自身的能力,使其在战斗中非常有效。 \n\n剩余的祝福效果时长:%s回合 -actors.buffs.bless.name=祝福 -actors.buffs.blindness.desc=失明使周遭的一切陷入黑暗。 \n\n失明时,角色不能看到周身一格以外的环境、致使远程攻击变得毫无作用、同时也很容易丢失正在追踪的敌人的动向。此外,失明的英雄也无法读书或使用卷轴。 \n\n剩余的失明效果时长:%s回合 -actors.buffs.blindness.heromsg=你失明了! -actors.buffs.blindness.name=失明 +actors.buffs.lokispoison.name=猛毒 +actors.buffs.lokispoison.desc=毒素传遍全身,缓慢地损伤着各个脏器。 \n\n毒素每回合造成的伤害与其剩余的回合数成正比。 \n\n剩余的中毒效果时长:%s回合 +actors.buffs.lokispoison.heromsg=你中毒了! + +actors.buffs.poison.name=中毒 +actors.buffs.poison.desc=毒素传遍全身,缓慢地损伤着各个脏器。 \n\n毒素每回合造成的伤害与其剩余的回合数成正比。 \n\n剩余的中毒效果时长:%s回合 +actors.buffs.poison.heromsg=你中毒了! + +actors.buffs.venom.name=剧毒 +actors.buffs.venom.desc=剧毒是一种非常可怕且危险的毒素。 \n\n不像一般中毒的危害性随着时间的推移降低,猛毒在目标身上滞留的时间越长伤害越高。\n\n剩余的剧毒效果时长:%s回合\n当前剧毒伤害:%d + +actors.buffs.beold.name=老化 +actors.buffs.beold.desc=你的躯体老化了。 \n\n老化每回合造成少量伤害,但会阻止正常生命恢复。 \n\n剩余的老化效果时长:%s回合 +actors.buffs.beold.heromsg=你老化了! + +actors.buffs.becorrupt.name=侵蚀 +actors.buffs.becorrupt.desc=你被侵蚀了。 \n\n侵蚀会阻止生命恢复,并将其转化为伤害,直到侵蚀上限。受到其他伤害效果时,受到伤害增加,并降低侵蚀上限。 \n\n剩余的侵蚀效果:%s + +actors.buffs.shocked.desc=当处于该状态的单位进行攻击时,它就会受到少量伤害并被缴械。持续时间: %s 回合。 +actors.buffs.shocked.name=静电乱流 + +actors.buffs.shocked2.desc=当处于该状态的单位进行移动时,它就会受到少量伤害并被缠绕。持续时间: %s 回合。 +actors.buffs.shocked2.name=环绕乱流 + +actors.buffs.burning.name=燃烧 actors.buffs.burning.burnsup=%s被烧毁了! actors.buffs.burning.desc=没什么比被火焰吞没更痛苦了。 \n\n火焰会每回合都会造成伤害直到它被液体扑灭或者自行消散。火会在你进入水中时熄灭,打碎药瓶产生的水花也具有同样的效果。 \n\n此外,火焰还会点燃所有接触到的可燃地形(以及可燃地形上的可燃物)。 \n\n剩余的燃烧效果时长:%s回合 actors.buffs.burning.heromsg=你着火了! -actors.buffs.burning.name=燃烧 +actors.buffs.dburning.name=恶魔烈焰 actors.buffs.dburning.desc=恶魔烈焰会每回合都会造成伤害,并且无法被扑灭。 \n\n剩余的燃烧效果时长:%s回合 actors.buffs.dburning.heromsg=你着火了! -actors.buffs.dburning.name=恶魔烈焰 +actors.buffs.charm.name=魅惑 actors.buffs.charm.desc=魅惑是一种能让敌人们暂时彼此爱慕的控制类魔法。 \n\n受魅惑的角色无法直接攻击魅惑它的那个生物,不过仍然可以攻击其他目标。\n\n剩余的魅惑效果时长:%s回合 actors.buffs.charm.heromsg=你被魅惑了! -actors.buffs.charm.name=魅惑 + actors.buffs.chill.desc=还没有完全冻住,不过已经非常寒冷。\n\n冻伤的目标所有行动都会更加缓慢,减速程度决定于剩余的冻伤效果时间。最严重的冻伤情况等同于迟缓效果。 \n\n剩余的冻伤效果时长:%s回合\n当前减少的速度:%s%% actors.buffs.chill.freezes=%s 冻住了! actors.buffs.chill.name=冻伤 @@ -81,8 +117,10 @@ actors.buffs.combo.combo=%d连击! actors.buffs.combo.desc=通过积累能量,角斗士能造成额外的伤害。\n\n你的连击数会在没有失误的不间断攻击下增加。你的连击数越高,你的攻击速度越快。失败或间断的攻击会重置连击数。 actors.buffs.combo.name=连击 actors.buffs.combo.notenough=\n\n你的连击还没有达到能造成额外伤害的程度。 + actors.buffs.countdown.desc=你的生命岌岌可危,再过一小段时间你就会受到大量的伤害。 \n\n剩余时间:%d -actors.buffs.countdown.name=延迟爆破 +actors.buffs.countdown.name=诅咒 + actors.buffs.cripple.desc=你很确定自己的腿不该折成那样。 \n\n残废会减半移动速度,移动一格会消耗二回合而不是正常情况下的一回合。 \n\n剩余的残废效果时长:%s回合 actors.buffs.cripple.heromsg=你残废了! actors.buffs.cripple.name=残废 @@ -126,23 +164,31 @@ actors.buffs.actbuff.nmstop.name=纳米熔断 actors.buffs.frost.desc=不要认为被冻得很结实了,这种温和的冻结只是把目标包裹在冰里。 \n\n冻结效果类似于麻痹,使目标不能行动。与麻痹不同的是,冻结效果会在目标受到伤害时立即消失,因为冰会碎。\n\n剩余的冻结效果时长:%s回合 actors.buffs.frost.freezes=%s 冻住了! actors.buffs.frost.name=冰冻 + actors.buffs.fullmoonstrength.desc=你变得非常强大,获得2.5倍的伤害加成。 actors.buffs.fullmoonstrength.heromsg=你变强了! actors.buffs.fullmoonstrength.name=满月之力 + actors.buffs.fury.desc=你非常暴怒,很明显敌人并不喜欢这样的你。\n\n一股猛烈的怒火在你体内燃烧,增加你25%%的物理攻击伤害,并降低25%你受到的伤害。\n\n只要你的生命还低于上限的60%,该效果就会存在。 actors.buffs.fury.heromsg=你陷入了暴怒之中! actors.buffs.fury.name=狂暴 + actors.buffs.gasesimmunity.desc=一种奇特的力量正在过滤你周边的空气,它并不会对你造成任何伤害,但它阻挡了所有空气意外的事物,以至于你什么气味都闻不到了!\n\n当该效果存在时你对所有气体效果免疫。\n\n剩余气体免疫效果时长:%s回合 actors.buffs.gasesimmunity.name=气体免疫 + actors.buffs.glassshield.desc=来自玻璃之神的祝福。当你受到大于10点的伤害时,将伤害改为10。剩余保护次数:%s次。 actors.buffs.glassshield.name=玻璃保护 + actors.buffs.growseed.desc=通常来讲这种种子专门吸取你的生命,并用于治疗周围的单位。 \n\n剩余的寄生种子效果时长:%s回合 actors.buffs.growseed.heromsg=奇怪的种子在你的身上生长。 actors.buffs.growseed.name=寄生种子 + actors.buffs.hastebuff.desc=你的行动速度大幅度提升,持续%s回合。 actors.buffs.hastebuff.name=极速 + actors.buffs.hot.desc=炎热使你得血脉流动加快,一点小伤口也能带来大量的伤害。 \n\n剩余的效果时长:%s回合 actors.buffs.hot.name=炎热 + actors.buffs.hunger.cursedhorn=就在你吃东西的时候被诅咒的号角偷走了一部分食物的能量。 actors.buffs.hunger.desc=\n\n饥饿会在你在地牢里花费时间的同时缓慢累计,直到你饿得难以忍受。在你极度饥饿时生命值会停止回复并且开始缓慢减少 。\n\n合理利用食物非常重要!如果你有足够的生命值来维持饥饿,你就该等到一会儿食物更多的时候再吃。正确的配给可以让食物更有效地发挥作用! actors.buffs.hunger.desc_intro_hungry=你能感受到自己的肚子在不断寻求食物,这降低了你的攻击力,不过还不算那么严重。 @@ -154,68 +200,92 @@ actors.buffs.hunger.onoverfed=你吃饱了 actors.buffs.hunger.onstarving=你已经饥肠辘辘! actors.buffs.hunger.overfed=饱腹 actors.buffs.hunger.starving=极度饥饿 + actors.buffs.invisibility.desc=你和周围的地形完全融为一体,使你不可能被看到。 \n\n当你在隐形时敌人无法追踪或攻击你。大部分物理攻击和魔法(比如卷轴和法杖)会立即解除隐形效果。 \n\n剩余的隐形效果时长:%s回合 actors.buffs.invisibility.name=隐形 + actors.buffs.levitation.desc=一股魔力把你从地面托起,让你觉得自己身轻如燕。 \n\n在漂浮时你会无视所有以地面为基础的效果。陷阱不会被触发、火焰不会被水扑灭、植物不会被踩踏、根系无法缠绕你、并且能够跨越深渊。当心,在效果结束的那一刻上述效果都会失效!\n\n剩余的漂浮效果时长:%s回合 actors.buffs.levitation.name=漂浮 + actors.buffs.light.desc=即使是在最黑暗的地牢中,身边有一个稳定的光源也总是令人欣慰。 \n\n光照能驱散黑暗,使你能够无视周遭的黑暗环境并拥有一个合理的视野范围。 \n\n剩余的发光效果时长:%s回合 actors.buffs.light.name=发光 + actors.buffs.highlight.desc=即使是在最黑暗的地牢中,身边有一个稳定的光源也总是令人欣慰。 \n\n光照能驱散黑暗,使你能够无视周遭的黑暗环境并拥有一个超大的视野范围。 \n\n剩余的发光效果时长:%s回合 actors.buffs.highlight.name=高亮 + actors.buffs.locked.desc=一把无形的锁锁死了你的背包,是你无法使用消耗类道具,持续%s回合。 actors.buffs.locked.name=锁闭 -actors.buffs.lokispoison.desc=毒素传遍全身,缓慢地损伤着各个脏器。 \n\n毒素每回合造成的伤害与其剩余的回合数成正比。 \n\n剩余的中毒效果时长:%s回合 -actors.buffs.lokispoison.heromsg=你中毒了! -actors.buffs.lokispoison.name=猛毒 + +actors.buffs.magicalsleep.name=魔法睡眠 actors.buffs.magicalsleep.desc=目标已深深陷入了魔法睡眠,不会自然醒来。\n\n魔法睡眠与一般的睡眠基本一样,但只有受伤会致使目标醒来。\n\n对于英雄,魔法睡眠有一些恢复性的效果,使他们能够在睡眠中迅速愈合伤口。 actors.buffs.magicalsleep.fallasleep=你深深地陷入了魔法睡眠。 -actors.buffs.magicalsleep.name=魔法睡眠 actors.buffs.magicalsleep.toohealthy=你十分健康,因此抵抗住了强烈的嗜睡感。 actors.buffs.magicalsleep.wakeup=你醒来后,感觉浑身清爽并且十分健康。 + actors.buffs.magicimmunity.desc=奥术护盾可以为目标提供一定抗性。\n\n剩余的护盾效果时长:%s回合 actors.buffs.magicimmunity.name=奥术护盾 + actors.buffs.mindvision.desc=你可以在脑海中以某种方式看到这一层的所有生物。这种感觉非常奇异。\n\n只要灵视效果依然存在,这层的所有生物都会在你的视野当中。通过灵视看到的生物同样算作视野中的目标,可以被很多魔法效果影响。\n\n剩余的灵视效果时长:%s回合 actors.buffs.mindvision.name=灵视 + actors.buffs.muscle.desc=你感觉你的肌肉更加结实了,获得2点力量,持续%s回合。 actors.buffs.muscle.name=活动肌肉 + +actors.buffs.ooze.name=腐酸 actors.buffs.ooze.desc=这种粘稠的酸性淤泥正在紧贴你的骨肉,并缓慢地将它们腐蚀融化。\n\n淤泥会一直造成稳定伤害直至被水冲洗。\n\n淤泥本身不会自然消失,必须在水中才能洗掉。 actors.buffs.ooze.heromsg=污泥在腐蚀你的身体。洗掉它! -actors.buffs.ooze.name=腐酸 + +actors.buffs.paralysis.name=麻痹 actors.buffs.paralysis.desc=通常最坏的事就是什么事都做不出来。\n\n麻痹会停止目标的一切动作,使目标保持原状直到效果消失。受伤导致的疼痛也能帮助目标脱离麻痹。 \n\n剩余的麻痹效果时长:%s回合 actors.buffs.paralysis.heromsg=你被麻痹了! -actors.buffs.paralysis.name=麻痹 -actors.buffs.poison.desc=毒素传遍全身,缓慢地损伤着各个脏器。 \n\n毒素每回合造成的伤害与其剩余的回合数成正比。 \n\n剩余的中毒效果时长:%s回合 -actors.buffs.poison.heromsg=你中毒了! -actors.buffs.poison.name=中毒 -actors.buffs.recharging.desc=魔力在你体内奔腾而过,提高你的魔杖和法杖的充能速率。 \n\n每回合这个效果都将给你的法杖/魔杖增加四分之一点充能,这个效果的充能不同于正常充能并且能与之叠加。\n\n剩余的充能效果时长:%s回合 + actors.buffs.recharging.name=充能 -actors.buffs.rhythm.desc=你沉浸在你的节奏当中,大幅度提升你的命中和闪避,持续%s回合。 +actors.buffs.recharging.desc=魔力在你体内奔腾而过,提高你的魔杖和法杖的充能速率。 \n\n每回合这个效果都将给你的法杖/魔杖增加四分之一点充能,这个效果的充能不同于正常充能并且能与之叠加。\n\n剩余的充能效果时长:%s回合 + actors.buffs.rhythm.name=节奏 -actors.buffs.rhythm2.desc=回响使你更加沉浸在你的节奏当中,小幅度提升你的速度,攻击和防御。持续%s回合。 +actors.buffs.rhythm.desc=你沉浸在你的节奏当中,大幅度提升你的命中和闪避,持续%s回合。 + actors.buffs.rhythm2.name=回响 +actors.buffs.rhythm2.desc=回响使你更加沉浸在你的节奏当中,小幅度提升你的速度,攻击和防御。持续%s回合。 + +actors.buffs.roots.name=缠绕 actors.buffs.roots.desc=根系(不论是自然或魔法产生)缠到了脚上,将它们牢牢拴在地面。 \n\n根系会让目标被困在当前区域,使其不能移动,但不会干扰其他行为。 \n\n剩余的缠绕效果持续时长:%s回合 actors.buffs.roots.heromsg=你不能动了! -actors.buffs.roots.name=缠绕 -actors.buffs.shadows.desc=你和周围的阴影融为一体,使你隐形并减缓你的新陈代谢。\n\n当你在隐形时敌人无法追踪或攻击你。大部分物理攻击和魔法(比如卷轴和法杖)会立即解除隐形效果。此外,当你处于暗影融合状态下时,饥饿值增加的速率会降低。\n\n暗影融合状态会一直持续直到你离开阴影或与敌人直接接触。 + actors.buffs.shadows.name=暗影融合 -actors.buffs.shield.desc=超高的护盾 +actors.buffs.shadows.desc=你和周围的阴影融为一体,使你隐形并减缓你的新陈代谢。\n\n当你在隐形时敌人无法追踪或攻击你。大部分物理攻击和魔法(比如卷轴和法杖)会立即解除隐形效果。此外,当你处于暗影融合状态下时,饥饿值增加的速率会降低。\n\n暗影融合状态会一直持续直到你离开阴影或与敌人直接接触。 + actors.buffs.shield.name=满月护盾 -actors.buffs.shieldblock.desc=无法驱散的超强控制效果。\n\n剩余的效果时长:%s回合 +actors.buffs.shield.desc=超高的护盾 + actors.buffs.shieldblock.name=护盾打击 -actors.buffs.shocked.desc=当处于该状态的单位进行攻击时,它就会受到少量伤害并被缴械。持续时间: %s 回合。 -actors.buffs.shocked.name=静电乱流 +actors.buffs.shieldblock.desc=无法驱散的超强控制效果。\n\n剩余的效果时长:%s回合 + +actors.buffs.bless.name=祝福 +actors.buffs.bless.desc=你的注意力大大集中了,有人说这是神赐的礼物。 \n\n祝福状态能够显著提高自身的能力,使其在战斗中非常有效。 \n\n剩余的祝福效果时长:%s回合 + +actors.buffs.blindness.name=失明 +actors.buffs.blindness.desc=失明使周遭的一切陷入黑暗。 \n\n失明时,角色不能看到周身一格以外的环境、致使远程攻击变得毫无作用、同时也很容易丢失正在追踪的敌人的动向。此外,失明的英雄也无法读书或使用卷轴。 \n\n剩余的失明效果时长:%s回合 +actors.buffs.blindness.heromsg=你失明了! + actors.buffs.silent.desc=沉默使人安静,并且让他无法诵读卷轴或释放咒语。持续%s回合。 actors.buffs.silent.name=沉默 + actors.buffs.slow.desc=减速魔法影响了目标的时间流速,在目标眼中所有的事物都移动得飞快。 \n\n迟缓下的角色执行所有行动花费的时间是其执行相同行动的两倍。\n\n剩余的迟缓效果持续时长:%s回合 actors.buffs.slow.name=迟缓 + actors.buffs.snipersmark.desc=狙击手将注意力集中到了附近的一个目标上,获得对目标远程攻击时的攻速加成和破甲效果。\n\n狙击手将不会停止专注直到她切换目标、停止攻击或目标死亡。 actors.buffs.snipersmark.name=狙击标记 + actors.buffs.soulmark.desc=术士已经击穿了目标的灵魂。他将会在对其造成物理伤害时回复生命并填补饥饿感。 \n\n剩余灵魂印记持续时长:%s回合 actors.buffs.soulmark.name=灵魂标记 + actors.buffs.speed.desc=移动速度增加 actors.buffs.speed.name=加速 + actors.buffs.strength.desc=你感觉奇妙的力量充斥着你的身体,使你下次攻击得到极大的增强。 actors.buffs.strength.name=强力 + actors.buffs.tar.desc=粘稠的油脂覆盖了你的全身,降低了你的行动速度,并且使你身上的火焰无法熄灭。 actors.buffs.tar.heromsg=你身上覆盖满了粘稠的油脂。 actors.buffs.tar.name=迟缓焦油 @@ -223,18 +293,24 @@ actors.buffs.tar.name=迟缓焦油 actors.buffs.terror.desc=恐惧是使敌人陷入不可控制的恐慌的操纵性魔法。 \n\n恐惧中的角色会远离自己的敌人,试图和敌人隔开尽可能多的门或墙。然而疼痛的冲击足以打破这种影响。\n\n剩余的恐惧效果持续时长:%s actors.buffs.terror.name=恐惧 -actors.buffs.venom.desc=剧毒是一种非常可怕且危险的毒素。 \n\n不像一般中毒的危害性随着时间的推移降低,猛毒在目标身上滞留的时间越长伤害越高。\n\n剩余的剧毒效果时长:%s回合\n当前剧毒伤害:%d -actors.buffs.venom.name=剧毒 actors.buffs.vertigo.desc=如果整个世界都在旋转的话,想走直线会变得十分困难。 \n\n眩晕效果持续时,目标的移动将会向一个随机区域进行,而不是目标原本想到达的地方。\n\n剩余的眩晕效果时长:%s回合 actors.buffs.vertigo.name=眩晕 -actors.buffs.weakness.desc=你感觉自己的装备突然变得沉重起来。 \n\n你正在被虚弱魔法影响,并减少2点力量。\n\n剩余的虚弱效果时长:%s回合 -actors.buffs.weakness.heromsg=你感到力量正在被抽走! -actors.buffs.weakness.name=虚弱 + +actors.buffs.strdown.desc=你感觉自己的装备突然变得沉重起来。 \n\n你正在被虚弱魔法影响,并减少2点力量。\n\n剩余的虚弱效果时长:%s回合 +actors.buffs.strdown.heromsg=你感到力量正在被抽走! +actors.buffs.strdown.name=虚弱 + actors.buffs.wet.desc=潮湿使你的身体变得笨重,降低了你的命中和闪避能力。 \n\n剩余的效果时长:%s回合 actors.buffs.wet.name=潮湿 -actors.buffs.shieldarmor.name=护盾 -actors.buffs.shieldarmor.desc=一种能量护甲正在保护你。\n\n这种护甲能够吸收你受到的100%%伤害,直到其耗尽耐久而瓦解。\n\n护盾量剩余:%d点。 +actors.buffs.shieldarmor.name=物理护盾 +actors.buffs.shieldarmor.desc=一种能量护甲正在保护你。\n\n这种护甲能够吸收你受到的100%%物理伤害,直到其耗尽耐久而瓦解。\n\n护盾量剩余:%d点。 + +actors.buffs.magicarmor.name=法术护盾 +actors.buffs.magicarmor.desc=一种能量护甲正在保护你。\n\n这种护甲能够吸收你受到的100%%法术伤害,直到其耗尽耐久而瓦解。\n\n护盾量剩余:%d点。 + +actors.buffs.energyarmor.name=能量护盾 +actors.buffs.energyarmor.desc=一种能量护甲正在保护你。\n\n这种护甲能够吸收你受到的100%%伤害,直到其耗尽耐久而瓦解。\n\n护盾量剩余:%d点。 actors.buffs.feed.name=狂宴 actors.buffs.feed.desc=号角的力量流入了你的身体,使你能在击杀后获得生命上限提升。\n\n剩余的效果时长:%s回合。 @@ -301,6 +377,9 @@ actors.buffs.taunt.desc=??? actors.buffs.damageup.name=反击 actors.buffs.damageup.desc=你抵挡了所受到的伤害,并提升了下一次攻击所造成的伤害。\n\n伤害提升值:%s。 +actors.buffs.onepunch.name=认真一拳 +actors.buffs.taunt.desc=下一击伤害提升。\n\n提升倍率:%s 。 + actors.buffs.newcombo.name=隆拳连击 actors.buffs.newcombo.combo=%d连! actors.buffs.newcombo.bad_target=你的目标必须是攻击距离以内的敌人。 @@ -353,12 +432,27 @@ actors.buffs.mindbuff.weakmind.desc=受到伤害提升 actors.buffs.mindbuff.keepmind.name=疯狂-坚定 actors.buffs.mindbuff.keepmind.desc=抵抗部分buff +actors.buffs.frostice.name=冻伤 +actors.buffs.frostice.desc=冻伤会减缓目标的移动速度,并使其在移动过程中受到伤害。\n\n持续时间:%s。 + actors.buffs.stoneice.name=源石霜冻 actors.buffs.stoneice.desc=这种附带放射性的霜冻粒子会减缓目标的移动速度,并使其在移动过程中受到大量的伤害。但同时,这种粒子会提升目标的伤害输出。\n\n持续时间:%s。 actors.buffs.magicweak.name=法术易伤 actors.buffs.magicweak.desc=受到的法术伤害增加。\n\n持续时间:%s。 +actors.buffs.delayprotect.name=延时保护 +actors.buffs.delayprotect.desc=时间结束后获得一层玻璃保护。\n\n持续时间:%s。 + +actors.buffs.infjump.name=无限跳跃 +actors.buffs.infjump.desc=字面意思。 \n\n剩余的祝福效果时长:%s回合 + +actors.buffs.lightshootattack.name=圣光打击 +actors.buffs.lightshootattack.desc=强力光芒持续打击这个地点,远离这个区域来回避伤害。 \n\n剩余的打击效果时长:%s回合 + +actors.buffs.shadowcurse.name=暗影诅咒 +actors.buffs.shadowcurse.desc=诅咒将在几个回合后对你造成伤害。剩余回合:%s 。 + ###hero actors.char.def_verb=闪避 actors.char.out_of_paralysis=疼痛使%s从麻痹中解脱出来。 @@ -417,6 +511,15 @@ actors.hero.heroclass.follower_desc_item=信徒拥有_木杖_和_治疗药水_ actors.hero.heroclass.follower_desc_loadout=信徒使用一件消耗品时,有几率不消耗这件物品。\n\n信徒在商店的开销降低。\n\n信徒进食后获得一些金币。 actors.hero.heroclass.follower_desc_misc=_恐惧卷轴_和_治疗药水_在游戏开始就已鉴定。 +actors.hero.heroclass.ascetic=修士 +actors.hero.heroclass.ascetic_desc_item=修士拥有_诡异粉尘_和_邪恶头骨_。\n\n_增幅电池_是修士的特殊道具 +actors.hero.heroclass.ascetic_desc_loadout=修士拥有+3法术强度,并且攻击附带法强值的伤害。\n\n修士受到重伤后会获得一层玻璃保护。\n\n修士进食后获得一些护盾。 +actors.hero.heroclass.ascetic_desc_misc=_驱散卷轴_和_冰冻药水_在游戏开始就已鉴定。 + +actors.hero.herosubclass.minder=意识 +actors.hero.herosubclass.minder_desc=_意识_获得额外的法术强度,并且攻击附带法强增幅的伤害。 +actors.hero.herosubclass.mecher=齿轮 +actors.hero.herosubclass.mecher_desc=_齿轮_将降低受到的伤害,并在击败敌人后获得随机的增益。 actors.hero.herosubclass.pastor=牧师 actors.hero.herosubclass.pastor_desc=_牧师_自身的自然恢复和治疗效果翻倍,并且允许自然恢复突破生命上限。此外,攻击命中目标后有几率魅惑目标。 actors.hero.herosubclass.artisan=工匠 @@ -455,56 +558,66 @@ actors.hero.heroclass.huntress_name=huntress actors.hero.heroclass.performer_name=performer actors.hero.heroclass.soldier_name=soldier actors.hero.heroclass.follower_name=follower +actors.hero.heroclass.ascetic_name=ascetic ###mobs actors.mobs.acidic.desc=酸液蝎子较普通蝎子更强,也更加危险。它体内的酸液会在遇到危险时释放,从而保护自己免受天敌的袭击。 actors.mobs.acidic.name=酸液蝎子 + actors.mobs.adultdragonviolet.atk=离这远点!入侵者! actors.mobs.adultdragonviolet.desc=守卫巨龙通常是被召唤而来,但是对普通人来说它和野生巨龙没什么两样。 actors.mobs.adultdragonviolet.die=为了...Otiluke大人!! actors.mobs.adultdragonviolet.name=守卫巨龙 + actors.mobs.albino.desc=这是一只稀有品种的白色的老鼠,它有一身纯白色的皮毛和锯齿状的牙齿。邪恶污染使它周围布满了血雾。 actors.mobs.albino.name=白化老鼠 + actors.mobs.albinopiranha.desc=在这种地方生活的肉食鱼经过上百年的演变,它们的视觉早已退化。不过它们的其他感官异常灵敏,可以感受到周围水流的变化,也异常凶猛。 actors.mobs.albinopiranha.name=原生肉食鱼 -actors.mobs.assassin.def_verb=闪避 + actors.mobs.assassin.desc=由天狗所训练出来的忍者之一,极其擅长远程攻击。 actors.mobs.assassin.name=暗杀者 + actors.mobs.bandit.desc=较普通绿衣小贼而言,紫衣大盗在偷窃同时,会狠狠伤害被偷窃者,以方便自己逃跑。 actors.mobs.bandit.name=紫衣大盗 + actors.mobs.banditking.desc=传言,盗贼中有一群另类,他们对金银珠宝没有兴趣,倒是对生物的生命情有独钟。并且,他们可以在神不知鬼不觉的情况下偷走敌人的生命。他们也接受各种委托,但代价一般都是...生命。 actors.mobs.banditking.die=算了,这次先放过你。 actors.mobs.banditking.dis=蓝衣神偷消失了。 actors.mobs.banditking.name=蓝衣神偷 actors.mobs.banditking.spork=啊!我偷到的叉勺呢! -actors.mobs.bat.def_verb=闪避 + actors.mobs.bat.desc=这些敏捷且坚韧的洞穴穹顶生物能够通过每一次成功的攻击来恢复自己的生命,从而打败比它们大得多的对手。 actors.mobs.bat.name=吸血蝙蝠 actors.mobs.bluecat.name=布鲁凯特 -actors.mobs.bluewraith.def_verb=闪避 actors.mobs.bluewraith.desc=相较其他怨灵而言,怨灵战士更喜欢近距离作战而不是远程打击。它们的行动速度也比其他怨灵快。 actors.mobs.bluewraith.name=怨灵战士 + actors.mobs.brokenrobot.broken=系统...关闭... actors.mobs.brokenrobot.desc=虽然这个机器人的程序没有老化,但它的身躯抵抗不住时间的侵蚀。 actors.mobs.brokenrobot.explode=自毁启动! actors.mobs.brokenrobot.name=破损机械 -actors.mobs.brownbat.def_verb=闪避 + actors.mobs.brownbat.desc=小蝙蝠呈棕色,是一种没什么威胁的生物。当然如果你杀死了它的话,它有几率发出很大的响声。 actors.mobs.brownbat.die=凄惨的叫声惊醒了附近的敌人! actors.mobs.brownbat.name=小蝙蝠 + actors.mobs.brute.desc=暴徒是豺狼人中体型最庞大,力量最强壮且生命力最顽强的精英。严重受伤时,他们会陷入疯狂之中,对敌人造成更高的伤害。 actors.mobs.brute.enraged=豺狼暴徒被激怒了! actors.mobs.brute.name=豺狼暴徒 + actors.mobs.crab.def_verb=格挡 actors.mobs.crab.desc=这些巨型的螃蟹位居下水道食物链的顶端。它们行动极其迅速且其厚重的甲壳能承受沉重的打击。 actors.mobs.crab.name=巨蟹 + actors.mobs.crabking.desc=远古巨蟹收集保护类魔法和物品以便保护它的子民免受黑暗或贪婪者的袭击。它的壳本身是件不错的强化道具。 actors.mobs.crabking.die=抱歉...我的子民... actors.mobs.crabking.heal=远古巨蟹从高压电壳中吸取了能量! actors.mobs.crabking.name=远古巨蟹 actors.mobs.crabking.notice=请离开这,否则我就对你不客气了。 + actors.mobs.demongoo.desc=恶魔goo通常由各种物质组成,如熔岩、黏液、暗能量、恶意;然而,大部分都是黑暗。小心别让它自己分裂,因为即使最弱的部分,只要加入一点熔岩,也能再次变得坚固。 actors.mobs.demongoo.divide=暗黑黏咕分裂了! actors.mobs.demongoo.name=暗黑黏咕 @@ -523,30 +636,41 @@ actors.mobs.dm300$tower.robots=自动防御...自动防御... actors.mobs.dragonking.desc=一只普通的巨龙。它身上的魔法十分不稳定,击败它后可能打开世界通道。 actors.mobs.dragonking.name=异界龙王 -actors.mobs.dustelement.blind=灰尘阻碍了你的视线。 +actors.mobs.dustelement.blind=灰尘阻碍了你的视线 +。 actors.mobs.dustelement.desc=年久失修的下水道里面的尘埃和向外扩散的黑暗力量融合,生成了这一种羸弱的元素。 actors.mobs.dustelement.name=尘埃元素 actors.mobs.dwarflich.desc=与矮人国王一同进行不朽实验的矮人。他们虽然没有保留外貌,但是他们获得了极强的灵能。 actors.mobs.dwarflich.name=不朽矮人 + actors.mobs.eye.desc=这种恶魔还有一个名字叫做“憎恶之球”,因为它在看到敌人时会毫无顾忌地使用它的死亡射线,而根本不顾及队友的存在。 actors.mobs.eye.name=邪恶之眼 + actors.mobs.fetidrat.desc=很明显这只老鼠身上有着问题。其油腻的黑毛和腐烂的皮肤与你以前见过的健康老鼠很不同。浅绿色的眼睛让它显得更具威胁。\n\n这只老鼠周围围绕着一片可怕恶臭,其恶臭在近距离接触时尤其浓烈。\n\n黑色的淤泥从它的嘴中流出。淤泥腐蚀掉了地板,但其似乎能在水中溶解开来。 actors.mobs.fetidrat.name=腐臭老鼠 + actors.mobs.fiend.desc=邪魔本身由暗影能量组成...但它的斗篷是哪来的? actors.mobs.fiend.name=邪魔 + actors.mobs.fireelemental.desc==这些游荡的火元素是在召唤某种更强大存在时产生的副产品。其特性太过紊乱,以至于最强大的恶魔学者都没有办法驱使。 actors.mobs.fireelemental.name=火元素 + actors.mobs.fishprotector.desc=这类守卫长相相似,但名称不同。这只守卫是守护这片洞穴的。 actors.mobs.fishprotector.name=洞穴守卫 + actors.mobs.flyingprotector.desc=智慧试炼的守护者。 actors.mobs.flyingprotector.name=智慧守卫 + actors.mobs.forestprotector.desc=这类守卫长相相似,但名称不同。这只守卫是守护这片森林的。 actors.mobs.forestprotector.name=森林守卫 + actors.mobs.gnoll.desc=豺狼是鬣狗状的类人生物。它们在下水道和地牢里游荡,不时向上行动试图向地表发起进攻。豺狼巡查是它们种群里最普通的一员,它们既没有豺狼暴徒强壮,也赶不上萨满聪明。 actors.mobs.gnoll.name=豺狼巡查 + actors.mobs.gnollarcher.desc=这个豺狼隐藏在树叶后。你在这儿让他很烦躁。 actors.mobs.gnollarcher.name=豺狼弓箭手 + actors.mobs.gnollking$gnollkeeper.desc=豺狼王的亲卫队。它们绝大部分时候都是看守宝库的。 actors.mobs.gnollking$gnollkeeper.name=豺狼卫士 actors.mobs.gnollking$gnollkeeper.safe=放弃抵抗! @@ -555,16 +679,21 @@ actors.mobs.gnollking.desc=豺狼人霍格是豺狼人中的猛男,11级的杀 actors.mobs.gnollking.die=我的...财宝... actors.mobs.gnollking.name=哈格 actors.mobs.gnollking.notice=嗯?谁敢擅闯我的宝库?! + actors.mobs.gnollshaman.desc=那些最具有智慧的豺狼可以掌握萨满魔法,豺狼萨满由于缺少力量所以更喜欢使用战斗法术。任何敢于质疑它们在部落里地位的人都会被萨满用法术毫不留情地消灭。 actors.mobs.gnollshaman.name=豺狼萨满 + actors.mobs.gnolltrickster.desc=即使以豺狼人的标准来看,这个生物也非常的诡异。它鬼鬼祟祟地弯着腰向前移动,脸上挂着咧着嘴的邪恶笑容,肩上挂着的挎包鼓得同摇篮一般。它的瞳孔中诡异地混合着恐惧与兴奋。\n\n它的挎包里有一大批粗制滥造的飞镖,它们似乎包含着各种有害物质。 actors.mobs.gnolltrickster.name=豺狼猎手 + actors.mobs.goldorc.def_verb=格挡 actors.mobs.goldorc.desc=黑暗能量腐蚀了猪人,使纯洁的猪人变得邪恶。 actors.mobs.goldorc.name=金眼猪人 + actors.mobs.goldthief.desc=不像其他类型的小偷,他们只关心一件特定的事情:闪闪发光的金钱。小心别让他们从你那里偷东西,因为从这些志同道合的小偷的潮汐中找回丢失的金子相当困难。 actors.mobs.goldthief.name=黄金小盗 actors.mobs.goldthief.stole=黄金小盗从你那里偷走了%s个金币! + actors.mobs.golem.def_verb=格挡 actors.mobs.golem.desc=矮人们尝试将他们关于机械的知识与新发现的元素力量结合起来。土地之灵作为公认的最容易掌控的元素之灵,被用来当作机械的"灵魂"。尽管如此,仪式中最细微的失误都会造成严重的爆炸。 actors.mobs.golem.name=魔像 @@ -583,17 +712,21 @@ actors.mobs.goo$poisongoo.squeeze=粘咕正在不断地抽动! actors.mobs.graveprotector.desc=这类守卫长相相似,但名称不同。这只守卫是守护这片监狱的。 actors.mobs.graveprotector.name=监狱守卫 + actors.mobs.greatcrab.noticed=这只螃蟹留意到了你的进攻并用它的巨大钳子格挡了这次攻击。 actors.mobs.greatcrab.blocked=格挡 actors.mobs.greatcrab.def_verb=格挡 actors.mobs.greatcrab.desc=就算是和其他的下水道螃蟹相比较,这只螃蟹也是如此巨大。它的蓝色甲壳上有着一条条裂缝和几只藤壶,证明其经历的无数岁月。它缓慢地在周围爬行,用它那只巨大的钳子勉强保持平衡。\n\n尽管这螃蟹只有一只蟹钳,但钳子的大小完全补偿了这一不足。螃蟹只要发现危险就会把爪子举在自己身前,让自己获得坚不可摧的甲壳防护。 actors.mobs.greatcrab.name=巨钳螃蟹 + actors.mobs.greyrat.desc=灰毛鼠是棕毛鼠的变种,它可以免疫大量的负面状态。 actors.mobs.greyrat.name=灰毛鼠 + actors.mobs.guard.def_verb=格挡 actors.mobs.guard.desc=作为曾经监狱的管理者,这些守卫和那些罪犯已经没什么区别了。它们蹒跚的步伐如同僵尸一般,毫无思绪地四处寻找不属于这片区域的生物,比如你!\n\n它的铁链缠在自己的胯部,也许可以用来将敌人拉扯到非常近的距离。 actors.mobs.guard.name=监狱守卫 actors.mobs.guard.scorpion=给我过来! + actors.mobs.hermitcrab.absorb=寄居蟹将攻击的能量吸收进了它的贝壳。 actors.mobs.hermitcrab.charge=高压电壳充能了%s点。 actors.mobs.hermitcrab.desc=传奇巨蟹的随从,这些坚韧的螃蟹能用它们的壳吸收除了最弱的攻击之外所有的攻击。吸收的攻击会被用来对闪电贝壳充能。 @@ -619,46 +752,56 @@ actors.mobs.king$dwarfkingtomb.name=永恒之墓 actors.mobs.littower.desc=Otiluke用他的石像代替他来守护核心。石像是无敌的,但是切断魔力来源可以使他停止。你的旅程即将到达尾声,保持你的决心! actors.mobs.littower.name=Otiluke守护石像 actors.mobs.littower.zap=远离核心,这不是你该来的地方! + actors.mobs.livemoss.desc=由于黑暗力量的侵蚀,下水道诡异的生物逐渐增多。这个生物就是其中的一种:扭曲的植物占据了死去的老鼠躯体,并向外抛洒寄生孢子。 actors.mobs.livemoss.name=寄生苔藓 + actors.mobs.magiceye.desc=这种邪眼似乎完全是由能量构成,在释放完全部的能量后就会自行死亡。 actors.mobs.magiceye.name=青色邪眼 + actors.mobs.mimic.desc=宝箱怪是一种能随意改变外形的生物。在地牢里它们几乎一直以宝箱形态出现,因为它们明白怎么去吸引冒险者。 actors.mobs.mimic.name=宝箱怪 + actors.mobs.minesentinel.desc=钢铁守卫和普通活化石像的区别就是...材质不同。它手上握着_%s_,看起来非常危险。 actors.mobs.minesentinel.name=钢铁守卫 + actors.mobs.mob$fleeing.status=这个%s正在逃跑 actors.mobs.mob$hunting.status=这个%s正在追猎 actors.mobs.mob$passive.status=这个%s是无害的 actors.mobs.mob$sleeping.status=这个%s正在睡觉 actors.mobs.mob$wandering.status=这个%s正在游荡 actors.mobs.mob.clear1=你成功在目标之前%s步清空本层。 -actors.mobs.mob.clear2=你成功在目标之前1步清空本层。 actors.mobs.mob.clear3=你花费的时间太长了,下层加油哦。 actors.mobs.mob.died=你依稀听到有什么东西在远处消亡了。 actors.mobs.mob.exp=%+d经验值 actors.mobs.mob.killcount=击杀计数:%s actors.mobs.mob.rage=\#$%^ actors.mobs.mob.rankings_desc=死于:%s + actors.mobs.monk.def_verb=招架 actors.mobs.monk.desc=这些僧侣皆是狂热的信徒,倾其所能从一切异族手中保护他们城市的秘密。他们既不披甲亦不执械,仅仅依靠他们的徒手格斗技巧退敌。 actors.mobs.monk.disarm=武僧将你手中的武器击飞了! actors.mobs.monk.name=矮人武僧 + actors.mobs.mossyskeleton.def_verb=格挡 actors.mobs.mossyskeleton.desc=青苔覆盖了一具骷髅骨架,并由此支配骷髅的行动。 actors.mobs.mossyskeleton.name=青苔骷髅 actors.mobs.musketeer.desc=与矮人国王的想法不同,矮人将军认为火器才是正确的研究方向。于是矮人射手就加入矮人王国的巡逻队。 actors.mobs.musketeer.name=矮人射手 + actors.mobs.orbofzotmob.desc=你启动了zot牌能源球。它在攻击附近的怪物! actors.mobs.orbofzotmob.die=机体过热,关闭... actors.mobs.orbofzotmob.name=zot牌能源球 + actors.mobs.orc.def_verb=格挡 actors.mobs.orc.desc=力量试炼里的锻炼你的力量的生物。它们纯洁善良,但是下手没有轻重... actors.mobs.orc.name=猪人 + actors.mobs.otiluke.desc=Otiluke的镜像,但是已经被zot腐化。看起来它在为石像提供能源。 actors.mobs.otiluke.name=被腐化的Otiluke的镜像 actors.mobs.otiluke.summon=守卫们,保护核心! + actors.mobs.piranha.desc=这些肉食性鱼类不是地下水池中的天然生物。它们被专门培育用来保护被水淹没的储藏室。 actors.mobs.piranha.name=巨型肉食鱼 @@ -681,16 +824,19 @@ actors.mobs.prisonwander.scorpion=没人能从我手上逃离!!! actors.mobs.rat.desc=虽说棕毛鼠们具有攻击性,可它们依旧是下水道居民里的弱者。它们成群结队非常烦人,但只有一只时对你够不上什么威胁。 actors.mobs.rat.name=棕毛鼠 + actors.mobs.ratboss.desc=领头鼠是鼠群的头领。虽然它不像鼠王一样有威信,但它依然可以叫来鼠群。 actors.mobs.ratboss.name=领头鼠 + actors.mobs.ratboss.spawn=这里出现了一群老鼠! actors.mobs.redwraith.def_verb=躲避 actors.mobs.redwraith.desc=相较于普通幽灵而言,混沌幽灵蕴含更强的能量。这也是这种幽灵呈红色的原因。相传有些戒指的魔力来源于它,不知道是不是真的。 actors.mobs.redwraith.name=混沌幽灵 + actors.mobs.scorpio.desc=这些巨大的节肢类生物会尽可能避免一切近距离接触,并且会在远处射出能够致残的尖刺。 actors.mobs.scorpio.name=巨型蝎子 -actors.mobs.seekinbomb.desc=只是个追猎炸弹而已。 +actors.mobs.seekinbomb.desc=只是个追猎炸弹而已。 actors.mobs.senior.desc=相较普通武僧而言,武僧大师变秃了,也变强了! actors.mobs.senior.name=武僧大师 @@ -717,9 +863,11 @@ actors.mobs.shell.name=高压电壳 actors.mobs.shielded.def_verb=格挡 actors.mobs.shielded.desc=这个豺狼人带着一块盾牌。说真的它还是带把大剑强点。 actors.mobs.shielded.name=持盾豺狼 + actors.mobs.skeleton.def_verb=格挡 actors.mobs.skeleton.desc=骷髅是从那些悲惨的冒险者及地牢原住民尸骨的聚合物产生的,来自下层地牢的邪恶力量将它们从死亡中唤起。在吸收了足够的伤害之后,它们就会在骨头的爆炸中消解。 actors.mobs.skeleton.name=骷髅 + actors.mobs.skeletonhand1.desc=骷髅王的右手,王者的右手 actors.mobs.skeletonhand1.name=王之右手 actors.mobs.skeletonhand2.desc=骷髅王的左手,亡者的左手 @@ -728,37 +876,49 @@ actors.mobs.skeletonking.desc=骷髅王是一个十分强大的存在。 actors.mobs.skeletonking.die=魔法不够了... actors.mobs.skeletonking.name=奥瑞克莱 actors.mobs.skeletonking.notice=你会被亡灵的怒火吞没,%s! + actors.mobs.sommonskeleton.name=被召唤的亡灵 actors.mobs.sommonskeleton.desc=这不过是一个被召唤的亡灵而已。 + actors.mobs.sokobansentinel.desc=一种幻影,没有思维,行动缓慢,手持幻影_%s_,只会对面前的生物发动攻击。 actors.mobs.sokobansentinel.name=推箱关守卫 + actors.mobs.spinner.desc=绿色而多毛的洞穴蜘蛛们会试着去躲避直接的战斗,它们更喜欢在远处等待其猎物卷入蜘网,在毒素中慢慢死去。 actors.mobs.spinner.name=矿洞蜘蛛 + actors.mobs.statue.desc=你以为这只是地牢里的另一个丑陋雕像,但它发出红光的眼睛让你放弃了刚才的想法。 尽管雕像本身是用石头做的,但它手上握着_%s_,看起来像是真的。 actors.mobs.statue.name=活化石像 + actors.mobs.succubus.desc=魅魔是外表诱人(稍有某种哥特风格)的女性恶魔。通过使用魔法,魅魔可以魅惑英雄,使英雄在魅惑消退前无法攻击它。 actors.mobs.succubus.name=魅魔 -actors.mobs.swarm.def_verb=躲避 + actors.mobs.swarm.desc=致命的飞蝇群愤怒地发出嗡嗡声。每次非魔法攻击都会把它分割成两群更小但同样危险的飞蝇群。 actors.mobs.swarm.name=蝇群 + actors.mobs.tengu.desc=天狗是远古时期的暗杀组成员。这些刺客以十分善于使用手里剑和陷阱著称。 actors.mobs.tengu.die=混蛋,走着瞧! actors.mobs.tengu.name=天狗 actors.mobs.tengu.notice=嘿,这是我的地盘,%s! + actors.mobs.tenguden.die=诅咒你永世不得好死。 actors.mobs.tenguden.name=匿藏的天狗 actors.mobs.tenguden.notice=你是怎么找到我的! actors.mobs.tenguden.desc=逃跑了的天狗。 + actors.mobs.testmob.desc=试试看,你能打多少伤害。 actors.mobs.testmob.name=稻草人 + actors.mobs.testmob2.desc=这个稻草人很危险,千万不要触动它。 actors.mobs.testmob2.name=发条稻草人 + actors.mobs.thief.desc=虽然这些囚犯逃出了他们的牢房,但这个地方仍然是关押着他们的监狱。随着时间的推移,这个地方摧毁了他们的心智以及对自由的希望。在很久以前,这些疯狂的小偷和强盗就已经忘记了它们是谁以及它们在为什么而活。 actors.mobs.thief.name=绿衣毛贼 + actors.mobs.thiefimp.carries=\n\n这个小鬼携带着一个_%s_。明显是偷来的。 actors.mobs.thiefimp.desc=小鬼是地狱当中最底层的居民。它们没有固定的收入来源,所以它们经常去其他地方偷窃。 actors.mobs.thiefimp.name=强盗小鬼 actors.mobs.thiefimp.stole=小鬼偷走了%s! + actors.mobs.thiefking.desc=传说中最神秘的盗贼。同时也是这个城市的领主。 actors.mobs.thiefking.die=你的生命,我买不起... actors.mobs.thiefking.name=金城领主 @@ -785,10 +945,10 @@ actors.mobs.ugoo.desc=虚空的一只黏咕的投影。它可比这个世界的 actors.mobs.ugoo.name=领主黏咕 actors.mobs.uicecorps.name=术士冬痕 -actors.mobs.uicecrops.desc=一只兔人族的术士,向四周散发着寒气 +actors.mobs.uicecorps.desc=一只兔人族的术士,向四周散发着寒气 actors.mobs.uicecorps2.name=术士冬痕-终结形态 -actors.mobs.uicecrops2.desc=一只兔人族的术士,向四周散发着寒气 +actors.mobs.uicecorps2.desc=一只兔人族的术士,向四周散发着寒气 actors.mobs.uking.desc=这个家伙是植物的王者。 actors.mobs.uking.name=植物领主 @@ -801,9 +961,11 @@ actors.mobs.uyog.name=始祖之眼 actors.mobs.vaultprotector.desc=这类守卫长相相似,但名称不同。这只守卫是这个城市的城管。 actors.mobs.vaultprotector.name=金城守卫 + actors.mobs.warlock.desc=当矮人的兴趣从工程建设转向奥秘学术时,术士们开始在城市中掌权。它们从元素魔法起步,但很快就开始研究恶魔学和死灵术。 actors.mobs.warlock.name=矮人术士 actors.mobs.wraith.def_verb=躲避 + actors.mobs.wraith.desc=怨灵是来自于墓穴中渴望复仇的罪人之魂。作为飘渺的非实体很难被正常武器击中。 actors.mobs.wraith.name=怨灵 @@ -832,16 +994,20 @@ actors.mobs.zotphase.desc=Zot的虚像,看上去是真的。 actors.mobs.zotphase.name=Zot的虚像 actors.mobs.virus.desc=梦魇病毒 -actors.mobs.virus.name=---!!!数据删除!!!--- +actors.mobs.virus.name=---!!!数据删除!!!--- \n未知\n感染 -actors.mobs.zombie.desc=一种没有思维行动缓慢的不死生物...等下,这不是这种丧尸,这是感染者。 +actors.mobs.zombie.desc=一种没有思维行动缓慢的不死生物...等下,这不是这种丧尸,这是感染者。\n亡灵 actors.mobs.zombie.name=丧尸 -actors.mobs.patroluav.desc=一种高科技的无人机,被用于清理下水道垃圾。 + +actors.mobs.patroluav.desc=一种高科技的无人机,被用于清理下水道垃圾。\n机械 actors.mobs.patroluav.name=巡逻无人机 -actors.mobs.sandmob.desc=一种由沙子组成的怪物,死亡后会分裂。 + +actors.mobs.sandmob.desc=一种由沙子组成的怪物,死亡后会分裂。\n元素 actors.mobs.sandmob.name=沙怪 + actors.mobs.sandmob$minisand.name=迷你沙怪 actors.mobs.sandmob$minisand.desc=迷你沙怪 + actors.mobs.spiderbot.desc=矮人利用实验室废料所制作的机械宠物。它们和普通蜘蛛一样可以织网,并且喷出油脂来攻击。 actors.mobs.spiderbot.name=机械蜘蛛 @@ -864,7 +1030,7 @@ actors.mobs.spiderqueen.die=我...输了... actors.mobs.spiderqueen.egg=蛛后孵化了新的巢穴。 actors.mobs.spiderqueen.name=蜘蛛皇后 actors.mobs.spiderqueen$spideregg.name=巢穴 -actors.mobs.spiderqueen$spideregg.desc=根据孵化时间的不同,产出的蜘蛛种类也不同。 +actors.mobs.spiderqueen$spideregg.desc=根据孵化时间的不同,产出的蜘蛛种类也不同。\n未知 actors.mobs.spiderqueen$spiderworker.name=蜘蛛工人 actors.mobs.spiderqueen$spiderworker.desc=蜘蛛大军的一种 @@ -873,13 +1039,13 @@ actors.mobs.spiderqueen$spidermind.name=灵能蜘蛛 actors.mobs.spiderqueen$spidergold.name=禁卫金蛛 actors.mobs.goldcollector.name=税收官 -actors.mobs.goldcollector.desc=这个是一个普通的税收官。 +actors.mobs.goldcollector.desc=这个是一个普通的税收官。\n未知\n黄金裁决 actors.mobs.levelchecker.name=裁决者 -actors.mobs.levelchecker.desc=这个是一个普通的裁决者。 +actors.mobs.levelchecker.desc=这个是一个普通的裁决者。\n未知\n阅历裁决 actors.mobs.normalcell.name=细胞怪 -actors.mobs.normalcell.desc=天哪,细胞成精啦! +actors.mobs.normalcell.desc=天哪,细胞成精啦! \n未知生物 actors.mobs.hybrid.name=混源体 actors.mobs.hybrid.notice=我是埃蒙忠实的仆从。 @@ -938,15 +1104,21 @@ actors.mobs.yearbeast2.desc=传说中的生物,有着人类的智慧,虎的 actors.mobs.yearbeast2.notice=谁把我吵醒了?! actors.mobs.yearbeast2.die=啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!!! +actors.mobs.icebug.name=冰足虫 +actors.mobs.icebug.desc=冰冷环境下生存的虫子。 + actors.mobs.bombbug.name=霜石虫 actors.mobs.bombbug.desc=包裹着冰石的虫子。 actors.mobs.bamboomob.name=竹子 -actors.mobs.bamboomob.desc=监狱长养的奇怪植物。会反射物理伤害。 - +actors.mobs.bamboomob.desc=监狱长养的奇怪植物。 actors.mobs.greatmoss.name=孢子巨人 actors.mobs.greatmoss.desc=一种植物和元素的混合物。 +actors.mobs.demontraper.name=恶魔布线者 +actors.mobs.demontraper.desc=一种使用陷阱战斗的恶魔。 + + ###actors.mobs..name=蜂蜡元素 ###actors.mobs..desc=和蜜蜂和谐共生的元素。具有较高的自愈能力,而且很黏稠。 @@ -1052,8 +1224,6 @@ actors.mobs.npcs.bilboldev.yell1=对我的技巧地牢多点耐心,伙计xD。 actors.mobs.npcs.bilboldev.yell2=我计划未来对技能系统和故事系统做一次巨大的更新。 actors.mobs.npcs.bilboldev.yell3=Hatsune的牺牲会被人所铭记! -actors.mobs.npcs.blacksmith.blood_1=嘿,人类!不想当个没用的废物,对吗?拿着那个镐子然后用它_杀只蝙蝠_,我需要镐头上沾着的血。什么?要我如何报答你?真贪心...\n\n好吧,好吧,我没钱付给你,但我可以给你打打铁。想想你运气有多好吧,我可是这附近唯一的铁匠。 -actors.mobs.npcs.blacksmith.blood_2=我说了我需要镐子沾上蝙蝠血。赶紧! actors.mobs.npcs.blacksmith.cant_reforge=我不能重铸这些物品! actors.mobs.npcs.blacksmith.completed=噢,你终于回来了… 算了,总比回不来好。 actors.mobs.npcs.blacksmith.cursed=我可不碰诅咒的东西! diff --git a/resources/com/hmdzl/spspd/messages/items/items.properties b/resources/com/hmdzl/spspd/messages/items/items.properties index 17c0af5e..8931d876 100644 --- a/resources/com/hmdzl/spspd/messages/items/items.properties +++ b/resources/com/hmdzl/spspd/messages/items/items.properties @@ -111,6 +111,14 @@ items.skills.followerskill.ac_special_three=LANGUAGE TRAP items.skills.followerskill.ac_special_four=BLESS SPELL items.skills.followerskill.desc=a follower can cast those spell by use his overcoat\n_pary_ : Stand and start pary.\n\n_fund raising_ : collect gold from enemies.\n\n_language trap_ : terror enemy and improve your move speed.\n\n_bless spell_ : Upgrade a item. +items.skills.asceticskill.name=ascetic body +items.skills.asceticskill.ac_special=force increase +items.skills.asceticskill.ac_special_two=energy imbue +items.skills.asceticskill.ac_special_three=Reprogram +items.skills.asceticskill.ac_special_four=Chaos storm +items.skills.asceticskill.desc=a ascetic can cast those spell by use his body \n_force increase_ : . \n\n_energy imbue_ : . \n\n_reprogram_ : .\n\n _chaos storm_ : . + + items.armor.normalarmor.clotharmor.name=cloth armor items.armor.normalarmor.clotharmor.desc=This lightweight armor offers basic protection.\nnormal armor @@ -267,12 +275,13 @@ items.artifacts.driedrose$petal.maxlevel=The rose is completed! items.artifacts.driedrose$petal.levelup=You add the petal to the rose. items.artifacts.driedrose$petal.desc=A frail dried up petal, which has somehow survived this far into the dungeon. items.artifacts.driedrose$ghosthero.name=sad ghost -items.artifacts.driedrose$sghosthero.name=mad ghost +items.artifacts.driedrose$superghosthero.name=mad ghost items.artifacts.driedrose$ghosthero.def_verb=evaded items.artifacts.driedrose$ghosthero.hello=Hello again %s. items.artifacts.driedrose$ghosthero.introduce=My spirit is bound to this rose, it was very precious to me, a gift from my love whom I left on the surface.\n\nI cannot return to him, but thanks to you I have a second chance to complete my journey. When I am able I will respond to your call and fight with you.\n\nhopefully you may succeed where I failed... items.artifacts.driedrose$sghosthero.desc=This is still in work. items.artifacts.driedrose$ghosthero.desc=A frail looking ethereal figure with a humanoid shape. Its power seems tied to the rose you have.\n\nThis ghost may not be much, but it seems to be your only true friend down here. +items.artifacts.driedrose$superghosthero.desc=A frail looking ethereal figure with a women shape. Its power seems tied to the rose you have.\n\nThis ghost's purity should be above me. items.artifacts.driedrose$wndghosthero.title=Ghost's Equipment items.artifacts.driedrose$wndghosthero.desc=The ghost is weak on their own, but their form is solid enough to be equipped with a weapon and armor. They will be able to use these items just like you do.\n\nThe ghost can currently equip items requiring up to _%d strength._ items.artifacts.driedrose$wndghosthero.weapon_prompt=Select a weapon @@ -550,6 +559,12 @@ items.food.fruit.fullmoonberry.desc=In the darkest hours of night a full moon be items.food.fruit.moonberry.name=moon berry items.food.fruit.moonberry.desc=A hearty blue-green berry. It is full with power. +items.food.fruit.strawberry.name=strawberry +items.food.fruit.strawberry.desc=a THE PALACE fruit grows on the highest mountain. + +items.food.fruit.cherry.name=cherry +items.food.fruit.cherry.desc=a THE RUIN fruit that guard plant. + items.food.completefood.goldennut.name=Golden nut bless by developer items.food.completefood.goldennut.effect1=+1str,+60hp items.food.completefood.goldennut.effect2=+2str,+30hp @@ -664,9 +679,18 @@ items.food.completefood.aflyfood.desc=a rice ball made by Alfred, have power fro items.food.completefood.zongzi.name=glutinous rice dumpling filled with meat items.food.completefood.zongzi.desc=Delicious but greasy. +items.food.completefood.nutcake.name=nut cake +items.food.completefood.nutcake.desc=Delicious but greasy. + +items.food.completefood.mooncake.name=Moon Cake +items.food.completefood.mooncake.desc=Mid Autumn Festival, moon viewing, is one of The Bastion traditions. + ###medicine items.medicine.pill.ac_eat=EAT +items.medicine.timepill.name=time pill +items.medicine.timepill.desc=gain speed up and time sand + items.medicine.realgarwine.name=Realgar wine items.medicine.realgarwine.desc=improve fire resistance and posion resistance @@ -689,7 +713,7 @@ items.medicine.shootpill.name=shoot pill items.medicine.shootpill.desc=This pill will improve your shoot. items.medicine.bluemilk.name=blue milk -items.medicine.bluemilk.desc=This mushroom oozes a milky blue substance.You feel your senses slipping. It can improve your speed, and heal everyone in this place. +items.medicine.bluemilk.desc=This mushroom oozes a milky blue substance.You feel your senses slipping. It can improve your move speed and your life, and slow others in this place. items.medicine.deathcap.name=death cap mushroom items.medicine.deathcap.desc=A deadly-looking fungus found growing in the dungeon. It is too dangerous. @@ -913,35 +937,35 @@ items.rings.ring.toomany=you can only wear 3 misc items at a time. items.rings.ringofaccuracy.name=ring of accuracy items.rings.ringofaccuracy.stats=ACU improve _ %1$d _ , Attack range improve _%2$d_ . -items.rings.ringofaccuracy.desc=This ring increases your focus, reducing your enemy's ability to dodge your attacks. Also every 10 level it can make player gain one more attack distance. +items.rings.ringofaccuracy.desc=This ring increases your focus, reducing your enemy's ability to dodge your attacks. Also every 10 level it can make player gain 1 more attack distance, range limit at 30 level. items.rings.ringofelements.name=ring of elements -items.rings.ringofelements.stats=Gain element resistance. -items.rings.ringofelements.desc=This ring provides resistance to different elements, such as fire, electricity, gases etc. Also it decreases duration of negative effects. +items.rings.ringofelements.stats=Gain element resistance, improve buff by %1$s%%, and reduce debuff by %2$s%%. +items.rings.ringofelements.desc=This ring provides resistance to different elements, such as fire, electricity, gases etc. Also it decreases duration of negative effects. Limit at 30 level. items.rings.ringofevasion.name=ring of evasion items.rings.ringofevasion.stats=Dex improve _%d_ , steath improve _%2$d_ . -items.rings.ringofevasion.desc=This ring obfuscates the true position of the wearer, making them harder to detect and attack. A degraded ring will instead make the user easier to detect and strike. Every 5 level it will give wearer 1 steath, but max steath improve is 6. +items.rings.ringofevasion.desc=This ring obfuscates the true position of the wearer, making them harder to detect and attack. A degraded ring will instead make the user easier to detect and strike. Every 5 level it will give wearer 1 steath, steath limit at level 30. items.rings.ringofforce.name=ring of force items.rings.ringofforce.stats=Melee damage improve _%1$s%%_ . If you don't have melee weapon, you will deal _ %2$d- %3$d_ base damage in melee attack. -items.rings.ringofforce.desc=This ring enhances the force of the wearer's blows. The max level of this ring is 30. +items.rings.ringofforce.desc=This ring enhances the force of the wearer's blows. Power limit at 30 level. items.rings.ringoffuror.name=ring of furor items.rings.ringoffuror.stats=Melee attack speed improve _%s%%_ . -items.rings.ringoffuror.desc=This ring grants the wearer an inner fury, allowing them to attack more rapidly. The max level of this ring is 30. +items.rings.ringoffuror.desc=This ring grants the wearer an inner fury, allowing them to attack more rapidly. Speed limit at 30 level. items.rings.ringofhaste.name=ring of haste items.rings.ringofhaste.stats=Move speed improve _%s%%_ . -items.rings.ringofhaste.desc=This ring reduces the stress of movement on the wearer, allowing them to run at superhuman speeds. The max level of this ring is 30. +items.rings.ringofhaste.desc=This ring reduces the stress of movement on the wearer, allowing them to run at superhuman speeds. Speed limit at 30 level. items.rings.ringofmagic.name=ring of magic items.rings.ringofmagic.stats=MIG improve _%d_ . -items.rings.ringofmagic.desc=Your wands will become more powerful in the arcane field that radiates from this ring. The max level of this ring is 30. +items.rings.ringofmagic.desc=Your wands will become more powerful in the arcane field that radiates from this ring. Magic limit at 30 level. items.rings.ringofmight.name=ring of might -items.rings.ringofmight.stats=STR improve _%1$d_ , HT improve _%2$d_ . -items.rings.ringofmight.desc=This ring enhances the physical traits of the wearer, granting them greater physical constitution. Every 5 level it will give wearer one strength. +items.rings.ringofmight.stats=STR improve _%1$d_ , HT improve _%2$s%%_ . +items.rings.ringofmight.desc=This ring enhances the physical traits of the wearer, granting them greater physical constitution. Every 5 level it will give wearer 1 strength. HT limit at 30 level. items.rings.ringofsharpshooting.name=ring of sharpshooting items.rings.ringofsharpshooting.stats=Range weapon ACU improve _%1$d_ , Range weapon damage improve _%2$s%%_ . @@ -949,11 +973,11 @@ items.rings.ringofsharpshooting.desc=This ring enhances the wearer's precision a items.rings.ringoftenacity.name=ring of tenacity items.rings.ringoftenacity.stats=Damage resistance _%s%%_ . -items.rings.ringoftenacity.desc=This ring will allow the wearer to resist normally mortal strikes. The max level of this ring is 30. +items.rings.ringoftenacity.desc=This ring will allow the wearer to resist normally mortal strikes. resist limit at 30 level. items.rings.ringofenergy.name=ring of energy -items.rings.ringofenergy.stats=Wand charge speed improve _%s%%_ . -items.rings.ringofenergy.desc=Your wands will recharge more quickly in the arcane field that radiates from this ring. +items.rings.ringofenergy.stats=Wand charge reduce _%s_ turns . +items.rings.ringofenergy.desc=Your wands will recharge more quickly in the arcane field that radiates from this ring. Limit at 30 level. ###scrolls items.scrolls.scroll.ac_read=READ @@ -1104,9 +1128,9 @@ items.wands.wandofmagicmissile.name=Wand of Magic missile items.wands.wandofmagicmissile.desc=This fairly plain _energy type_ wand launches missiles of pure magical energy. items.wands.wandofmagicmissile.stats_desc=Each bolt from this wand deals _%1$d-%2$d damage,_ and cause magic weak. -items.wands.wandofpoison.name=Wand of Swamp -items.wands.wandofpoison.desc=This _earth type_ wand is made from a thin shaft of expertly carved wood. Somehow it is still alive, bright brown like a dead tree's core. -items.wands.wandofpoison.stats_desc=This wand shoots a bolt which explodes into a cloud of swamp gas at a targeted location. The power of the explosion will cause _%1$d-%2$d_ damage. Anything caught inside this cloud will be slow, increasing with time. +items.wands.wandofswamp.name=Wand Of Swamp +items.wands.wandofswamp.desc=This _earth type_ wand is made from a thin shaft of expertly carved wood. Somehow it is still alive, bright brown like a dead tree's core. +items.wands.wandofswamp.stats_desc=This wand shoots a bolt which explodes into a cloud of swamp gas at a targeted location. The power of the explosion will cause _%1$d-%2$d_ damage. Anything caught inside this cloud will be slow, increasing with time. items.wands.wandoflight.name=Wand of Light items.wands.wandoflight.desc=This _light type_ wand is made of a solid piece of translucent crystal, like a long chunk of smooth glass. Small bits of colorful light dance around the tip of the wand, eager to burst forth. @@ -1130,46 +1154,48 @@ items.wands.cannonofmage.stats_desc=When used, this wand will blast random energ ###enchantments items.weapon.enchantments.enchantmentdark.name=dark %s -items.weapon.enchantments.enchantmentdark.desc=This enchantment strike fear into enemies, causing them to flee from the attacker. It also will dear some dark damage. +items.weapon.enchantments.enchantmentdark.desc=This enchantment strike fear into enemies, causing them to flee from the attacker. It also will dear many dark damage. items.weapon.enchantments.enchantmentfire.name=fire %s -items.weapon.enchantments.enchantmentfire.desc=This enchantment causes flames to spit forth from a weapon, burning enemies and terrain alike. It also will dear some fire damage. +items.weapon.enchantments.enchantmentfire.desc=This enchantment causes flames to spit forth from a weapon, burning enemies and terrain alike. It also will dear less fire damage. -items.weapon.enchantments.enchantmentlight.name=light %s -items.weapon.enchantments.enchantmentlight.desc=This enchantment strike light into enemies, causing much more damage on evil mobs. It also will dear some light damage. +items.weapon.enchantments.enchantmentlight.name=shining %s +items.weapon.enchantments.enchantmentlight.desc=This enchantment strike light into enemies,make it blindness. It also will dear many light damage. items.weapon.enchantments.enchantmentenergy.name=energy %s -items.weapon.enchantments.enchantmentenergy.desc=This enchantment has chance to improve user's attack. It also will dear some physics damage. +items.weapon.enchantments.enchantmentenergy.desc=This enchantment has chance to improve user's attack. It also will dear less energy damage. items.weapon.enchantments.enchantmentearth.name=earth %s -items.weapon.enchantments.enchantmentearth.desc=This enchantment strike seed into enemies, healing other life near that target. It also will dear some earth damage. +items.weapon.enchantments.enchantmentearth.desc=This enchantment strike seed into enemies, healing other life near that target. It also will dear many earth damage. items.weapon.enchantments.enchantmentshock.name=electric %s -items.weapon.enchantments.enchantmentshock.desc=This enchantment dealing extra damage to all nearby enemies. It also will dear some storm damage. +items.weapon.enchantments.enchantmentshock.desc=This enchantment dealing extra damage to all nearby enemies. It also will dear many shock damage. + +items.weapon.enchantments.enchantmentice.name=coldwave %s +items.weapon.enchantments.enchantmentice.desc=This enchantment slowing enemy's' movement and attacks. It also will dear many ice damage. -items.weapon.enchantments.enchantmentice.name=ice %s -items.weapon.enchantments.enchantmentice.desc=This enchantment slowing enemy's' movement and attacks. It also will dear some ice damage. +items.weapon.enchantments.enchantmentice2.name=ice %s +items.weapon.enchantments.enchantmentice2.desc=This enchantment causes frost to enemies. It also will dear less ice damage. -items.weapon.enchantments.enchantmentdark2.name=weakness %s -items.weapon.enchantments.enchantmentdark2.desc=This enchantment can reduce target' melee attack. +items.weapon.enchantments.enchantmentdark2.name=incantation %s +items.weapon.enchantments.enchantmentdark2.desc=This enchantment strike curse into enemies, causing them taken damage. It also will dear less dark damage. items.weapon.enchantments.enchantmentfire2.name=tar %s -items.weapon.enchantments.enchantmentfire2.desc=This enchantment can add tar to target. +items.weapon.enchantments.enchantmentfire2.desc=This enchantment add tar to target. It also will dear many fire damage. -items.weapon.enchantments.enchantmentlight2.name=shining %s -items.weapon.enchantments.enchantmentlight2.desc=This enchantment can blind target. +items.weapon.enchantments.enchantmentlight2.name=light %s +items.weapon.enchantments.enchantmentlight2.desc=This enchantment strike light into enemies,make it injured. It also will dear less light damage. items.weapon.enchantments.enchantmentenergy2.name=dance %s -items.weapon.enchantments.enchantmentenergy2.desc=This enchantment can improve user's defense. +items.weapon.enchantments.enchantmentenergy2.desc=This enchantment has chance to improve user's defense.. It also will dear many energy damage. items.weapon.enchantments.enchantmentearth2.name=acid %s -items.weapon.enchantments.enchantmentearth2.desc=This enchantment can add ooze to target. +items.weapon.enchantments.enchantmentearth2.desc=This enchantment can add ooze to target. It also will dear less earth damage. items.weapon.enchantments.enchantmentshock2.name=shock %s -items.weapon.enchantments.enchantmentshock2.desc=This enchantment can add static electricity to target. +items.weapon.enchantments.enchantmentshock2.desc=This enchantment can add static electricity to target. It also will dear less shock damage. + -items.weapon.enchantments.enchantmentice2.name=coldwave %s -items.weapon.enchantments.enchantmentice2.desc=This enchantment can add cold and wet to target. items.weapon.enchantments.aresleech.name=drawing %s items.weapon.enchantments.aresleech.desc=heal you slowly. @@ -1316,8 +1342,8 @@ items.weapon.melee.triangolo.desc=A percussion instrument made of thin steel bar items.weapon.melee.flute.name=flute items.weapon.melee.flute.desc=The flute is a family of musical instruments in the woodwind group. --wiki\nResonance -items.weapon.melee.wardurm.name=war durm -items.weapon.melee.wardurm.desc=The drum is a member of the percussion group of musical instruments. --wiki\nResonance+ +items.weapon.melee.wardrum.name=war drum +items.weapon.melee.wardrum.desc=The drum is a member of the percussion group of musical instruments. --wiki\nResonance+ items.weapon.melee.trumpet.name=trumpet items.weapon.melee.trumpet.desc=A trumpet is a brass instrument commonly used in classical and jazz ensembles. --wiki\n Resonance @@ -1340,6 +1366,9 @@ items.weapon.melee.prayerwheel.desc=A simple paryer wheel --???\nAccumulate items.weapon.melee.stonecross.name=stone cross items.weapon.melee.stonecross.desc=A huge cross made by stone. --Coconut\nAccumulate +items.weapon.melee.tricksand.name=Weird sand +items.weapon.melee.tricksand.desc=Sold by 90 gold and can find hidden unit. --Coconut\nmagic break + items.weapon.melee.special.goei.name=Reimus Goei items.weapon.melee.special.goei.desc=A new goei.You can with it eorcism. --REN \nEvil Killer, Accumulate @@ -1378,6 +1407,14 @@ items.weapon.melee.special.diamondpickaxe.no_thing=No thing in here. items.weapon.melee.special.diamondpickaxe.break=You are hungry. items.weapon.melee.special.diamondpickaxe.noise=Mine alerted nearby mobs. +items.weapon.melee.special.elekatana.name=Thunder katana +items.weapon.melee.special.elekatana.desc=The samurai sword enchanted with thunder and lightning will cause more damage to the same target with the increase of attack times.\n\nBinding, Rachel +items.weapon.melee.special.elekatana.ac_zap=FLASH +items.weapon.melee.special.elekatana.charge=charge: %d / %d +items.weapon.melee.special.elekatana.silent=You were silent. +items.weapon.melee.special.elekatana.prompt=Choose one location +items.weapon.melee.special.elekatana.no=No charge now. + items.weapon.melee.special.shadoweater.name=Shadow Eater items.weapon.melee.special.shadoweater.desc=A curse weapon build by all testers. Uncurse will remove its power. \n Asleep-Cost, Whisper items.weapon.melee.special.shadoweater.charge=shadow: %d / 20 @@ -1535,7 +1572,7 @@ items.weapon.spammo.woodenammo.desc=Add wooden power on gun. Made by stone and n ###missile weapons items.weapon.missiles.empbola.name=EMP bola -items.weapon.missiles.empbola.desc=Bolas are mostly used for hunting and they usually don't do much damage but they can ensnare the target leaving it helpless and motionless for some time. +items.weapon.missiles.empbola.desc=Bolas are mostly used for hunting and they usually don't do much damage but they can ensnare the target leaving it helpless and motionless for some time. items.weapon.missiles.boomerang.name=boomerang items.weapon.missiles.boomerang.ac_ammo=ADD AMMO @@ -1566,6 +1603,14 @@ items.weapon.missiles.elfbow.ac_drink=DRINK items.weapon.missiles.elfbow.desc=The short bow used by elf, will increase damage according to magic power. There is also have some mana water. Don't drink too much. items.weapon.missiles.elfbow.damage=This weapon can deal _ %d - %d damage _ , and improved by user's magic power. +items.weapon.missiles.shootgun.name=Technology shotgun +items.weapon.missiles.shootgun.desc=The shotgun modified by alien technology will apply armor breaking effect after shooting, and allow all ammunition to be consumed to cause a high amount of AoE damage. +items.weapon.missiles.shootgun.ac_shoot=SHOOT +items.weapon.missiles.shootgun.ac_endshoot=ENDLESS SHOOT +items.weapon.missiles.shootgun.ac_reload=RELOAD +items.weapon.missiles.shootgun.damage=This weapon can deal _ %d - %d damage _ . +items.weapon.missiles.shootgun.charge=ammo: %d/%d + items.weapon.missiles.forestdart.name=Lucky throwing knives items.weapon.missiles.forestdart.desc=These simple metal blades are weighted to fly true and sting their prey with a flick of the wrist. @@ -1578,11 +1623,11 @@ items.weapon.missiles.hugeshuriken.desc=Huge star-shaped pieces of metal with ra items.weapon.missiles.escapeknive.name=Escape knife items.weapon.missiles.escapeknive.desc=These simple metal blades are weighted to fly true and sting their prey with a flick of the wrist. -items.weapon.missiles.normalbomb.name=Empty bomb -items.weapon.missiles.normalbomb.desc=How did this work? +items.weapon.missiles.normalbomb.name=firecracker +items.weapon.missiles.normalbomb.desc=How did this work? It can make noise. items.weapon.missiles.poisondart.name=poison dart -items.weapon.missiles.poisondart.desc=These little evil darts don't do much damage but they can paralyze the target leaving it helpless and motionless for some time. +items.weapon.missiles.poisondart.desc=These little evil darts don't do much damage but they can poison the target leaving it helpless and motionless for some time. items.weapon.missiles.riceball.name=rice ball items.weapon.missiles.riceball.desc=It is some kind of pet food. @@ -1883,6 +1928,7 @@ items.equipableitem.ac_equip=EQUIP items.equipableitem.ac_unequip=UNEQUIP items.gold.name=gold +items.gold.ac_unarmor=REMOVE SHIELD items.gold.desc=A pile of gold coins. Collect gold coins to spend them later in a shop. items.heap.mimic=This is a mimic! @@ -2108,6 +2154,10 @@ items.misc.jumpf.name=jump shoes of follower items.misc.jumpf.ac_jump=JUMP items.misc.jumpf.desc=In order to facilitate business between villages of different races and faiths, Follower can creat a hidden place to redecorate himself immediately. He also has a chance to find some special plants after landing. +items.misc.jumpa.name=jump shoes of ascetic +items.misc.jumpa.ac_jump=JUMP +items.misc.jumpa.desc=The ascetic comes from the hybrid human cloned by The Tower organization after the chaotic war. At the same time, she has the spiritual power of the star spirit and mechanical logic. Her blink has the chance to be unlimited and jump indefinitely in the continuous state. + items.misc.attackshoes.name=plumber's shoes items.misc.attackshoes.ac_jump=JUMP items.misc.attackshoes.desc=This shoes don't need charge to use, but it spend more time on landing, and deal damage to nearby enemies. @@ -2199,9 +2249,10 @@ items.misc.gnollmark.name=Shaman Mask items.misc.gnollmark.ac_light=LIGHT RITE items.misc.gnollmark.ac_dark=DARK RITE items.misc.gnollmark.ac_earth=NATURAL RITE +items.misc.gnollmark.ac_life=SACRIFICE items.misc.gnollmark.break=Need more charge. items.misc.gnollmark.charge=charge: %d / %d -items.misc.gnollmark.desc=A shaman mask, charged by use wand.\nLight rite will improve user's physical power, but the magic power will be reduce. Dark rite is opposite.r\nNatural rite will improve user's resistance ability. +items.misc.gnollmark.desc=A shaman mask, charged by use wand.\nLight rite will improve user's physical power, but the magic power will be reduce. Dark rite is opposite.r\nNatural rite will improve user's resistance ability.\nCan change life to charge. items.misc.mechpocket.name=Four dimensional space bag items.misc.mechpocket.ac_use=USE @@ -2223,20 +2274,24 @@ items.misc.skillofmig.desc=A simple scroll which writen some magic skill in ther items.misc.skillofmig.skillup=magic skill + items.misc.demoscroll.name=Demon contract -items.misc.demoscroll.ac_read=USE +items.misc.demoscroll.ac_read=BLOOD TRADE +items.misc.demoscroll.ac_read2=SOUL IMBUE items.misc.demoscroll.desc=Use your HT to make you stronger. \nEvery level you can use it once. items.misc.demoscroll.hitup=Your ACU improve. items.misc.demoscroll.evaup=Your DEX improve. items.misc.demoscroll.migup=Your MIG improve. items.misc.demoscroll.htdown=You lose some health limit. -items.misc.demoscroll.charge=Used: %d. +items.misc.demoscroll.htup=You get some health limit. +items.misc.demoscroll.charge=soul: %d items.misc.undeadbook.name=Undead Bible -items.misc.undeadbook.ac_read=READ +items.misc.undeadbook.ac_read=HOLY BLESS +items.misc.undeadbook.ac_read2=SOUL TRADE items.misc.undeadbook.ac_bless=PRAY items.misc.undeadbook.desc=A Bible write with undead language... Why?\nRead this bible will reduce reader's health limit, and gain dew bless for some time.\nPary this bible will find an ankh, but only can pary once in one level. items.misc.undeadbook.bless=You blessed by dew, but also lose some health limit. items.misc.undeadbook.1up=Bible give your an ankh. +items.misc.undeadbook.charge=charge: %d. items.misc.luckybadge.name=Lucky badge items.misc.luckybadge.desc=A badge left by shop keeper. It is full with luck and It can be upgrade. @@ -2250,7 +2305,7 @@ items.misc.faithsign.ac_human=Faith-HOLY items.misc.faithsign.ac_mech=Faith-MECH items.misc.faithsign.ac_life=Faith-NATURAL items.misc.faithsign.ac_balance=Faith-BALANCE -items.misc.faithsign.desc=A box full of different faith's signs. Based on 5 different types, those signs can be used on solve faith problem.\nholy: human, orc, elf, dwarf, troll.\ndemon: demon, dargon, undead, unkonw.\nmech: mech, goblin, alien.\nnature: plant, beast, element.\nbalance: bosses.\n +items.misc.faithsign.desc=A box full of different faith's signs. Based on 5 different types, those signs can be used on solve faith problem.\nCheck in Book of soul. items.misc.savagehelmet.name=Savage helmet items.misc.savagehelmet.desc=A helmet for year hunting. It has chance to reduce damage and improve next melee attack. When be equip, this chance will become 100%. @@ -2295,6 +2350,13 @@ items.misc.ppc.need_charge=need record items.misc.ppc.charge=record: %d items.misc.ppc.desc=Crazy or calm, it is a problem. Every dead enemy will add one record on here. Use them to help your life.\ninput: improve crazy point. \nrecover: remove one mind debuff.\nthink: create mind arrow. +items.misc.ppc2.name=Abyss searcher +items.misc.ppc2.ac_try=SEARCH +items.misc.ppc2.ac_heal=TEST +items.misc.ppc2.ac_mind=HARVEST +items.misc.ppc2.no_thing=no target +items.misc.ppc2.desc=A test must start at abyss, find and harvest. + items.misc.needpaper.name=wanted circular items.misc.needpaper.ac_shop=MARKET items.misc.needpaper.ac_help=HIDE @@ -2323,6 +2385,11 @@ items.misc.dancelion.ac_rush=RUSH items.misc.dancelion.ac_jump=JUMP items.misc.dancelion.desc=A book for year hunting. Reader can learn lion dance on it.\nspin: into music\nstand: damage reduce\nback: recharge\nrush: attack improve\njump: fly +items.misc.seriouspunch.name=One punch +items.misc.seriouspunch.ac_cast=USE +items.misc.seriouspunch.desc=An ordinary boxer.\n\nPlease accept me as an apprentice.jpg +items.misc.seriouspunch.charge=charge: %d. + items.playericon.name=player icon items.playericon.thank4play=Thanks for playing. items.playericon.desc=Reword of bossrush. diff --git a/resources/com/hmdzl/spspd/messages/items/items_tzh.properties b/resources/com/hmdzl/spspd/messages/items/items_tzh.properties index fe59a684..0f5d759d 100644 --- a/resources/com/hmdzl/spspd/messages/items/items_tzh.properties +++ b/resources/com/hmdzl/spspd/messages/items/items_tzh.properties @@ -111,6 +111,14 @@ items.skills.followerskill.ac_special_three=巧嘴滑舌 items.skills.followerskill.ac_special_four=祝福術 items.skills.followerskill.desc=信徒技能 \n祈禱:蓄力,獲得傷害加成和傷害減免。\n\n資金募集:根據視野中單位的數量獲得金幣。\n\n巧嘴滑舌:恐懼敵人,並使你跑得飛快。\n\n祝福術:強化並驅散ㄧ件裝備。 +items.skills.asceticskill.name=修士軀殼 +items.skills.asceticskill.ac_special=靈能增幅 +items.skills.asceticskill.ac_special_two=能量灌注 +items.skills.asceticskill.ac_special_three=重編程 +items.skills.asceticskill.ac_special_four=混沌風暴 +items.skills.asceticskill.desc=修士技能\n靈能增幅:暫時提升法強和速度。\n\n靈能灌注:重新附魔一樣物品。\n\n重編程:降低生命上線/命中/閃避,並提升法強。\n\n混沌風暴:繳械或沉默周圍的單位,並對自身施加傷害增幅。 + + items.armor.normalarmor.clotharmor.name=布甲 items.armor.normalarmor.clotharmor.desc=這件輕便的護甲能提供最基本的防禦。\n常規護甲 @@ -267,12 +275,13 @@ items.artifacts.driedrose$petal.maxlevel=玫瑰再ㄧ次完整了! items.artifacts.driedrose$petal.levelup=你將花瓣放在了玫瑰上。 items.artifacts.driedrose$petal.desc=ㄧ片乾枯脆弱的花瓣,它居然能夠在這麽深的地牢之中幸存下來。 items.artifacts.driedrose$ghosthero.name=悲傷幽靈 -items.artifacts.driedrose$sghosthero.name=暴躁幽靈 +items.artifacts.driedrose$superghosthero.name=暴躁幽靈 items.artifacts.driedrose$ghosthero.def_verb=躲避 items.artifacts.driedrose$ghosthero.hello=再次向你問好,%s。 items.artifacts.driedrose$ghosthero.introduce=我的靈魂與這朵玫瑰相連,對我來說它非常珍貴,是我愛人在我離開地面前送給我的禮物。\n\n我無法回去見他了,但感謝你讓我有第二次機會來完成我的旅程。當我準備好後,我會回應你的呼喚與你並肩作戰。\n\n希望你能在我倒下的地方繼續走下去…… items.artifacts.driedrose$sghosthero.desc=強化後的悲傷幽靈,速度更快,並會在死亡時復活。 items.artifacts.driedrose$ghosthero.desc=這是ㄧ個擁有人類外形的脆弱幻影。它的力量似乎與我手上的玫瑰聯系在了ㄧ起。\n\n這個幽靈可能無法逗留太久,但它應該是我在這裏唯ㄧ的摯友了。 +items.artifacts.driedrose$superghosthero.desc=這是一個擁有娘們外型的幻影。他的力量似乎與我手上的玫瑰聯繫在了一起。\n\n這個幽靈可是個娘們,他的純度應該在我之上。 items.artifacts.driedrose$wndghosthero.title=幽靈的裝備 items.artifacts.driedrose$wndghosthero.desc=幽靈本身十分脆弱,但她的形體已經完整到足以裝備ㄧ件武器和防具。她可以和你ㄧ樣自如使用這些裝備。\n\n幽靈目前可裝備_力量需求上限低於%d_的物品。 items.artifacts.driedrose$wndghosthero.weapon_prompt=選擇ㄧ件武器 @@ -550,6 +559,12 @@ items.food.fruit.fullmoonberry.desc=野生漿果的ㄧ種,富含大量維生 items.food.fruit.moonberry.name=青色漿果 items.food.fruit.moonberry.desc=野生漿果的ㄧ種,富含大量維生素和礦物質,食用後可以使人身強力壯,充滿活力。 +items.food.fruit.strawberry.name=草莓 +items.food.fruit.strawberry.desc=宮殿境內最高的山上生長的草莓。 + +items.food.fruit.cherry.name=櫻桃 +items.food.fruit.cherry.desc=遺跡附近常見的守衛植物的果實。 + items.food.completefood.goldennut.name=受hmdzl001祝福的堅果 items.food.completefood.goldennut.effect1=+1力量,+60血量上限 items.food.completefood.goldennut.effect2=+2力量,+30血量上限 @@ -664,9 +679,18 @@ items.food.completefood.aflyfood.desc=阿飛特制的不思議飯團,擁有另 items.food.completefood.zongzi.name=肉粽 items.food.completefood.zongzi.desc=好吃但油膩。 +items.food.completefood.nutcake.name=堅果蛋糕 +items.food.completefood.nutcake.desc=好吃但油膩。 + +items.food.completefood.mooncake.name=月餅 +items.food.completefood.mooncake.desc=中秋佳節,賞月,是壁壘眾多傳統之一。 + ###medicine items.medicine.pill.ac_eat=食用 +items.medicine.timepill.name=時之塊 +items.medicine.timepill.desc=提供加速和時之沙。 + items.medicine.realgarwine.name=雄黃酒 items.medicine.realgarwine.desc=提供火焰抗性和劇毒抗性。 @@ -689,22 +713,22 @@ items.medicine.shootpill.name=神射藥丸 items.medicine.shootpill.desc=在ㄧ段時間內提升射擊力。 items.medicine.bluemilk.name=藍奶傘 -items.medicine.bluemilk.desc=這種蘑菇像漿果ㄧ樣鮮嫩多汁,食用它可以大幅度加快你的行動速度和恢復速度。只是...它對其他生物也有相同的效果。 +items.medicine.bluemilk.desc=這種蘑菇像漿果一樣鮮嫩多汁,食用它可以大幅度加快你的行動速度和恢復速度。而它對其他生物的效果是降低。 items.medicine.deathcap.name=致死帽 items.medicine.deathcap.desc=這種頭上布滿白斑的紅色菌類肯定是具有致命效果的東西。希望它也會對其他生物有效。 items.medicine.earthstar.name=地裂星 -items.medicine.earthstar.desc=這種菌類並不屬於地球。它可能來自虛空...或死星什麽的...反正不會是小馬國。食用它可能會撕裂這片區域所有人的身體。 +items.medicine.earthstar.desc=這種菌類並不屬於地球。它可能來自虛空...或死星什麽的...反正不會是小馬國。食用它會撕裂這片區域所有人的身體。 items.medicine.goldenjelly.name=凝膠團 -items.medicine.goldenjelly.desc=與其說這是ㄧ種菌類,倒不如說這是ㄧ袋種子。它是這種菌類的繁殖的表現:受到擠壓後,大量的孢子飛向四周,減緩生物的移動的同時致幻目標。 +items.medicine.goldenjelly.desc=與其說這是一種菌類,倒不如說這是一袋種子。它是這種菌類的繁殖的表現:受到擠壓後,大量的孢子飛向四周,減緩生物的移動的同時寄生目標。 items.medicine.jackolantern.name=燈籠球 -items.medicine.jackolantern.desc=這種菌類含有大量的磷。當它受到外界擠壓時它會將會把體內的磷成分以白磷的形式釋放,從而引起大火。 +items.medicine.jackolantern.desc=這種菌類含有大量的磷。當它受到外界擠壓時它將會把體內的磷成分以白磷的形式釋放,從而引起大火甚至使其變成煉獄。 items.medicine.pixieparasol.name=單色塊 -items.medicine.pixieparasol.desc=ㄧ種有強烈致幻作用的菌類,食用後會使人的傷口恢復,同時使其他生物陷入睡眠狀態。 +items.medicine.pixieparasol.desc=一種有強烈致幻作用的菌類,食用後會使人振奮,同時使其他生物陷入睡眠狀態。 items.medicine.greenspore.name=綠菌孢 items.medicine.greenspore.not_time=奇怪的能量流入了你的背包,但是什麽也沒發生。 @@ -913,35 +937,35 @@ items.rings.ring.toomany=你最多同時裝備3樣飾品。 items.rings.ringofaccuracy.name=精準戒指 items.rings.ringofaccuracy.stats=佩戴這枚戒指時,你的精準度會增加_%1$d_點,攻擊距離會增加_%2$d_格。 -items.rings.ringofaccuracy.desc=這枚戒指提高了你的專注力,使敵人難以躲閃你的攻擊。該戒指每10級提供1格額外的攻擊距離。 +items.rings.ringofaccuracy.desc=這枚戒指提高了你的專注力,使敵人難以躲閃你的攻擊。該戒指每10級提供1格額外的攻擊距離,但在30級效果達到上限。 items.rings.ringofelements.name=元素戒指 -items.rings.ringofelements.stats=當佩戴這枚戒指時,你會獲得元素抗性。 -items.rings.ringofelements.desc=這枚戒指能為你提供多種元素抗性,譬如火焰,雷電,氣體等;它還能降低負面效果的持續時間。 +items.rings.ringofelements.stats=當佩戴這枚戒指時,增益效果提升_%1$s%%_倍,負面效果降低_%2$s%%_倍。 +items.rings.ringofelements.desc=這枚戒指能為你提供多種元素抗性,提升增益效果的持續時間,並降低負面效果的持續時間。在30級時這個效果達到上限。 items.rings.ringofevasion.name=閃避戒指 items.rings.ringofevasion.stats=佩戴這枚戒指時,你的閃避值會增加_%d_點,潛行會增加_%2$d_點。 -items.rings.ringofevasion.desc=這枚戒指會混淆配戴者的真實位置,令其更難被敵人擊中。該戒指每5級提供1點額外的潛行,但最多提供6點潛行。 +items.rings.ringofevasion.desc=這枚戒指會混淆配戴者的真實位置,令其更難被敵人擊中。該戒指每5級提供1點額外的潛行,但在30級時這枚戒指的潛行效果達到上限。 items.rings.ringofforce.name=武力戒指 items.rings.ringofforce.stats=佩戴這枚戒指時能額外能夠造成_%1$s%%_的傷害。如果你未裝備近戰武器,你基礎攻擊將造成_%2$d~%3$d傷害_。 -items.rings.ringofforce.desc=這枚戒指能夠增強配戴者的打擊力度。在30級時這枚戒指的打擊加成效果達到最強。 +items.rings.ringofforce.desc=這枚戒指能夠增強配戴者的打擊力度。在30級時這枚戒指的打擊加成效果達到上限。 items.rings.ringoffuror.name=狂怒戒指 items.rings.ringoffuror.stats=佩戴這枚戒指時,你的武器的攻擊速度會提升_%s%%_。 -items.rings.ringoffuror.desc=這枚戒指會激發配戴者內心的怒火,使其能夠更迅猛地攻擊。在30級時這枚戒指效果達到最強。 +items.rings.ringoffuror.desc=這枚戒指會激發配戴者內心的怒火,使其能夠更迅猛地攻擊。在30級時這枚戒指效果達到上限。 items.rings.ringofhaste.name=疾速戒指 items.rings.ringofhaste.stats=佩戴這枚戒指時,你的移動速度會提升_%s%%_。 -items.rings.ringofhaste.desc=這枚戒指減輕了配戴者在移動時的負擔,使其能夠飛速奔跑。在30級時這枚戒指效果達到最強。 +items.rings.ringofhaste.desc=這枚戒指減輕了配戴者在移動時的負擔,使其能夠飛速奔跑。在30級時這枚戒指效果達到上限。 items.rings.ringofmagic.name=奧術戒指 items.rings.ringofmagic.stats=佩戴這枚戒指時,你的法強值會提升_%d_點。 -items.rings.ringofmagic.desc=你的法杖在這枚戒指散布的奧術力場中會變得更加強大。在30級時這枚戒指效果達到最強。 +items.rings.ringofmagic.desc=你的法杖在這枚戒指散布的奧術力場中會變得更加強大。在30級時這枚戒指效果達到上限。\n  items.rings.ringofmight.name=根骨戒指 -items.rings.ringofmight.stats=佩戴這枚戒指時,你的力量值會提升_%1$d_點,生命上限會提升_%2$d_點。 -items.rings.ringofmight.desc=這枚戒指會增強配戴者的體質,使其擁有更強的體格。該戒指每5級提供1點額外力量。 +items.rings.ringofmight.stats=佩戴這枚戒指時,你的力量值會提升_%1$d_點,生命上限會提升_%2$s%%_倍。 +items.rings.ringofmight.desc=這枚戒指會增強配戴者的體質,使其擁有更強的體格。該戒指每5級提供1點額外力量。但生命上限提升在30級時達到最大值。 items.rings.ringofsharpshooting.name=神射戒指 items.rings.ringofsharpshooting.stats=佩戴這枚戒指時,你的投擲武器的命中值會提升_%1$d_,傷害值會提升_%2$s%%_。 @@ -949,11 +973,11 @@ items.rings.ringofsharpshooting.desc=這枚戒指加強了配戴者的精度和 items.rings.ringoftenacity.name=韌性戒指 items.rings.ringoftenacity.stats=佩戴這枚戒指時,你承受的傷害降低_%s%%_。 -items.rings.ringoftenacity.desc=這枚戒指使配戴者能夠抵禦受到的傷害。在30級時這枚戒指效果達到最強。 +items.rings.ringoftenacity.desc=這枚戒指使配戴者能夠抵禦受到的傷害。在30級時這枚戒指效果達到上限。 items.rings.ringofenergy.name=能量戒指 -items.rings.ringofenergy.stats=佩戴這枚戒指時,你的法杖充能速度會提升_%s%%_。 -items.rings.ringofenergy.desc=在戒指的奧術領域籠罩下你的所有法杖充能速度都會因此提升。在30級時這枚戒指效果達到最強。 +items.rings.ringofenergy.stats=佩戴這枚戒指時,你的法杖充能所需回合減少_%s_。 +items.rings.ringofenergy.desc=在戒指的奧術領域籠罩下你的所有法杖充能速度都會因此提升。在30級時這枚戒指效果達到上限。 ###scrolls items.scrolls.scroll.ac_read=閱讀 @@ -1104,9 +1128,9 @@ items.wands.wandofmagicmissile.name=魔彈法杖 items.wands.wandofmagicmissile.desc=這根無屬性法杖能發射純魔法能量構成的導彈。 items.wands.wandofmagicmissile.stats_desc=盡管不如其它法杖那麽強大,但它的大量充能數彌補了這ㄧ點。它能造成_%1$d~%2$d點傷害_ 。 -items.wands.wandofpoison.name=劇毒法杖 -items.wands.wandofpoison.desc=這根地屬性法杖的紫色主幹半包住頂端ㄧ顆亮綠色寶石。 -items.wands.wandofpoison.stats_desc=該法杖能射出ㄧ顆會在目標位置爆炸的毒性法球。被擊中的單位將緩慢受到毒性傷害。 +items.wands.wandofswamp.name=沼澤法杖 +items.wands.wandofswamp.desc=這根地屬性法杖由一根枯木枝巧琢而成,但是不知為何,仿佛其生機勃勃,充滿能量。 +items.wands.wandofswamp.stats_desc=該法杖能射出一顆會在目標位置爆炸的沼澤法球。它能造成_%1$d~%2$d點傷害_並將目標周圍的環境改成沼澤。 items.wands.wandoflight.name=強光法杖 items.wands.wandoflight.desc=這根光屬性法杖由ㄧ塊實心半透明水晶構成,就像ㄧ塊厚長光滑的玻璃。 @@ -1130,46 +1154,48 @@ items.wands.cannonofmage.stats_desc=被使用時,這根法杖會釋放出隨 ###enchantments items.weapon.enchantments.enchantmentdark.name=暗影%s -items.weapon.enchantments.enchantmentdark.desc=暗影附魔有幾率恐嚇目標,並造成額外的暗屬性傷害。 +items.weapon.enchantments.enchantmentdark.desc=暗影附魔將造成大量的暗屬性傷害,並有機率恐嚇目標。 items.weapon.enchantments.enchantmentfire.name=烈焰%s -items.weapon.enchantments.enchantmentfire.desc=烈焰附魔有幾率點燃目標,並造成額外的火屬性傷害。 +items.weapon.enchantments.enchantmentfire.desc=烈焰附魔將造成少量的火屬性傷害,並有機率點燃目標。 -items.weapon.enchantments.enchantmentlight.name=聖光%s -items.weapon.enchantments.enchantmentlight.desc=聖光附魔有幾率對邪物造成高額的傷害,並造成額外的光屬性傷害。 +items.weapon.enchantments.enchantmentlight.name=閃耀%s +items.weapon.enchantments.enchantmentlight.desc=閃耀附魔將造成大量的光屬性傷害,並有機率致盲。 items.weapon.enchantments.enchantmentenergy.name=戰意%s -items.weapon.enchantments.enchantmentenergy.desc=戰意附魔有幾率提升使用者的攻擊力,並造成額外的物理傷害。 +items.weapon.enchantments.enchantmentenergy.desc=戰意附魔將造成少量的無屬性傷害,並提升使用者的攻擊力。 items.weapon.enchantments.enchantmentearth.name=自然%s -items.weapon.enchantments.enchantmentearth.desc=自然附魔有幾率對目標埋下寄生種子,並造成額外的地屬性傷害。 +items.weapon.enchantments.enchantmentearth.desc=自然附魔將造成大量的地屬性傷害,並有機率對目標埋下寄生種子。 items.weapon.enchantments.enchantmentshock.name=亂流%s -items.weapon.enchantments.enchantmentshock.desc=亂流附魔有幾率對多個目標造成傷害,並造成額外的雷屬性傷害。 +items.weapon.enchantments.enchantmentshock.desc=亂流附魔將造成大量的雷屬性傷害,並對多個目標造成傷害。 + +items.weapon.enchantments.enchantmentice.name=寒潮%s +items.weapon.enchantments.enchantmentice.desc=寒潮將造成大量的冰屬性傷害,並有機率給目標施加寒冷和潮濕效果。 -items.weapon.enchantments.enchantmentice.name=冰霜%s -items.weapon.enchantments.enchantmentice.desc=冰霜附魔有幾率凍結目標,並造成額外的冰屬性傷害。 +items.weapon.enchantments.enchantmentice2.name=冰霜%s +items.weapon.enchantments.enchantmentice2.desc=冰霜附魔將造成少量的冰屬性傷害,並機率凍傷目標。 -items.weapon.enchantments.enchantmentdark2.name=弱化%s -items.weapon.enchantments.enchantmentdark2.desc=弱化附魔有幾率削弱目標的攻擊力。 +items.weapon.enchantments.enchantmentdark2.name=咒術%s +items.weapon.enchantments.enchantmentdark2.desc=咒術附魔將造成少量的暗屬性傷害,並有機率咒殺目標。 items.weapon.enchantments.enchantmentfire2.name=焦油%s -items.weapon.enchantments.enchantmentfire2.desc=焦油附魔有幾率給目標的潑油。 +items.weapon.enchantments.enchantmentfire2.desc=焦油附魔將造成大量的火屬性傷害,並有機率給目標的潑油。 -items.weapon.enchantments.enchantmentlight2.name=閃耀%s -items.weapon.enchantments.enchantmentlight2.desc=閃耀附魔有幾率致盲目標。 +items.weapon.enchantments.enchantmentlight2.name=聖光%s +items.weapon.enchantments.enchantmentlight2.desc=聖光附魔將造成少量的光屬性傷害,並有機率以聖光打擊目標。 items.weapon.enchantments.enchantmentenergy2.name=劍舞%s -items.weapon.enchantments.enchantmentenergy2.desc=劍舞附魔有幾率提升使用者的防禦力。 +items.weapon.enchantments.enchantmentenergy2.desc=劍舞附魔將造成大量的無屬性傷害,並給使用者提供物理護盾。 items.weapon.enchantments.enchantmentearth2.name=酸蝕%s -items.weapon.enchantments.enchantmentearth2.desc=酸蝕附魔有幾率給目標上腐酸。 +items.weapon.enchantments.enchantmentearth2.desc=酸蝕附魔將造成少量的地屬性傷害,並有機率給目標上腐酸。 items.weapon.enchantments.enchantmentshock2.name=電震%s -items.weapon.enchantments.enchantmentshock2.desc=電震附魔有幾率給目標上靜電效果。 +items.weapon.enchantments.enchantmentshock2.desc=電震附魔將造成少量的雷屬性傷害,並有機率給目標上靜電效果。 + -items.weapon.enchantments.enchantmentice2.name=寒潮%s -items.weapon.enchantments.enchantmentice2.desc=寒潮有幾率給目標上寒冷和潮濕效果。 items.weapon.enchantments.aresleech.name=抽靈%s items.weapon.enchantments.aresleech.desc=抽靈附魔能將造成的傷害轉為能量,緩慢的輸送回你的身體。 @@ -1316,8 +1342,8 @@ items.weapon.melee.triangolo.desc=用細鋼條彎制成三角形的打擊樂器 items.weapon.melee.flute.name=長笛 items.weapon.melee.flute.desc=ㄧ根有著許多小孔的空心木棍,吹奏起來會發出尖銳的嘯聲。\n共振 -items.weapon.melee.wardurm.name=戰鼓 -items.weapon.melee.wardurm.desc=發音較低,但很響亮。被用於鼓舞士氣或指揮戰鬥。 \n高級共振 +items.weapon.melee.wardrum.name=戰鼓 +items.weapon.melee.wardrum.desc=發音較低,但很響亮。被用於鼓舞士氣或指揮戰鬥。\n高級共振 items.weapon.melee.trumpet.name=小號 items.weapon.melee.trumpet.desc=銅管樂器家族中音域最高的樂器,常負責旋律部分或高吭節奏的演奏。\n共振 @@ -1340,6 +1366,9 @@ items.weapon.melee.prayerwheel.desc=就是轉經輪。——??? \n積蓄 items.weapon.melee.stonecross.name=十碑 items.weapon.melee.stonecross.desc=ㄧ個巨大的石頭十字碑。——Coconut \n積蓄 +items.weapon.melee.tricksand.name=詭異沙塵 +items.weapon.melee.tricksand.desc=花費90金幣購買的沙塵,也許可以用來揭示隱藏單位。——椰子\n破法 + items.weapon.melee.special.goei.name=驅魔禦幣 items.weapon.melee.special.goei.desc=ㄧ把驅魔禦幣,博麗的巫女常用它來治退妖魔鬼怪。——REN\n除穢,積蓄 @@ -1378,6 +1407,14 @@ items.weapon.melee.special.diamondpickaxe.no_thing=這裏沒東西好挖了。 items.weapon.melee.special.diamondpickaxe.break=你餓了。 items.weapon.melee.special.diamondpickaxe.noise=挖掘驚動了附近的怪物。 +items.weapon.melee.special.elekatana.name=武士雷刀 +items.weapon.melee.special.elekatana.desc=夜黑風高時,大雨傾盆,一道閃電從天而降,此刀便誕生了。隨著攻擊次數的增加,同一目標受到的傷害就越大。\n綁定,雷切 +items.weapon.melee.special.elekatana.ac_zap=一閃 +items.weapon.melee.special.elekatana.charge=能量:%d/%d。 +items.weapon.melee.special.elekatana.silent=被沉默了。 +items.weapon.melee.special.elekatana.prompt=選擇目標地點。 +items.weapon.melee.special.elekatana.no=沒有能量了。 + items.weapon.melee.special.shadoweater.name=暗噬 items.weapon.melee.special.shadoweater.desc=受詛咒的武器,是由測試者們的合作產生的。\n休眠-雙刃,低語 items.weapon.melee.special.shadoweater.charge=暗影:%d / 20。 @@ -1535,7 +1572,7 @@ items.weapon.spammo.woodenammo.desc=將原石和堅果組合而成的特殊子 ###missile weapons items.weapon.missiles.empbola.name=電磁套索 -items.weapon.missiles.empbola.desc=用於抓捕或狩獵的工具之ㄧ,能夠減緩目標的移動甚至將其麻痹。 +items.weapon.missiles.empbola.desc=用於抓捕或狩獵的工具之一,能夠減緩目標的移動甚至將其麻痹,並移除它身上的護盾。 items.weapon.missiles.boomerang.name=回旋鏢 items.weapon.missiles.boomerang.ac_ammo=塗油 @@ -1566,6 +1603,14 @@ items.weapon.missiles.elfbow.ac_drink=飲用 items.weapon.missiles.elfbow.desc=暗夜精靈所使用的短弓,會根據法強來提升傷害。同時還帶有少量的泉水。 items.weapon.missiles.elfbow.damage=這件武器可以造成_%d - %d 點傷害_。 +items.weapon.missiles.shootgun.name=科技霞彈槍 +items.weapon.missiles.shootgun.desc=經過外星科技所改裝過的霞彈槍,射擊后會施加破甲效果,並允許消耗所有的彈藥來造成一次高額的範圍傷害。 +items.weapon.missiles.shootgun.ac_shoot=射擊 +items.weapon.missiles.shootgun.ac_endshoot=終結射擊 +items.weapon.missiles.shootgun.ac_reload=填裝 +items.weapon.missiles.shootgun.damage=這件武器可以造成_%d-%d點傷害_。 +items.weapon.missiles.shootgun.charge=彈藥:%d/%d。 + items.weapon.missiles.forestdart.name=森林飛刀 items.weapon.missiles.forestdart.desc=受到森林的祝福的飛刀,能造成大量的傷害。 @@ -1573,16 +1618,16 @@ items.weapon.missiles.incendiarydart.name=燃燒飛鏢 items.weapon.missiles.incendiarydart.desc=飛鏢上的刺能讓它釘入目標,而在飛鏢上的不穩定物質則會在目標身上燃起烈焰。 items.weapon.missiles.hugeshuriken.name=巨型手裏劍 -items.weapon.missiles.hugeshuriken.desc=鋒銳的星形金屬刃片能有效傷害目標,並大幅削弱目標的意誌。 +items.weapon.missiles.hugeshuriken.desc=鋒銳的星形金屬刃片能有效傷害目標,並大幅削弱目標的意志,使其衰老。 items.weapon.missiles.escapeknive.name=逃脫小刀 items.weapon.missiles.escapeknive.desc=簡單的金屬片,但可以幫你從困境中逃脫。 -items.weapon.missiles.normalbomb.name=空彈 -items.weapon.missiles.normalbomb.desc=這個炸彈裏面沒有火藥,看起來沒有什麽特別。 +items.weapon.missiles.normalbomb.name=摔炮 +items.weapon.missiles.normalbomb.desc=這個炸彈裡面沒有火藥,但扔到地上就會發出響聲,並吸引周圍的怪物。最原始的武器往往能對強大的存在造成威脅。 items.weapon.missiles.poisondart.name=毒鏢 -items.weapon.missiles.poisondart.desc=這種飛鏢上覆蓋著某種毒素,可以輕松的麻痹目標的神經,使其無法反抗。 +items.weapon.missiles.poisondart.desc=這種飛鏢上覆蓋著某種毒素,可以使目標中毒,並將其凍傷。 items.weapon.missiles.riceball.name=糯米團 items.weapon.missiles.riceball.desc=用於投食的食物,由於其量大份足,任何食用它的有生命的怪物都會去尋找ㄧ個安全的地方來美美睡上ㄧ覺。 @@ -1616,7 +1661,7 @@ items.weapon.missiles.moneypack.name=紅包 items.weapon.missiles.moneypack.desc=只要準備好錢,在春節就能解決好多問題。2020春節快樂!!! items.weapon.missiles.mindarrow.name=意識之矢 -items.weapon.missiles.mindarrow.desc=利用你的瘋狂,摧毀你的敵人。 +items.weapon.missiles.mindarrow.desc=利用你的瘋狂,摧毀你的敵人,將其腐化,並對其造成大量傷害。 ##mc block items.weapon.missiles.buildblock.wallblock.name=墻塊 @@ -1883,6 +1928,7 @@ items.equipableitem.ac_equip=裝備 items.equipableitem.ac_unequip=取下 items.gold.name=金幣 +items.gold.ac_unarmor=護盾移除 items.gold.desc=ㄧ堆金幣。收集金幣以在隨後的商店中消費。 items.heap.mimic=這是ㄧ個寶箱怪! @@ -2108,6 +2154,10 @@ items.misc.jumpf.name=信徒之鞋 items.misc.jumpf.ac_jump=跳躍 items.misc.jumpf.desc=為了方便在不同種族不同信仰的村落之間經商,信徒可以隨時準備ㄧ塊隱蔽的地方重新裝飾自己。同時有幾率發現ㄧ些特別的植物。 +items.misc.jumpa.name=修士之鞋 +items.misc.jumpa.ac_jump=跳躍 +items.misc.jumpa.desc=修士來自於混亂戰爭後高塔組織克隆的混種人類,同時擁有星靈的靈能和機械的邏輯,修士的閃爍有機率不受充能限制,並在持續狀態下可以無限跳躍。 + items.misc.attackshoes.name=水管工皮鞋 items.misc.attackshoes.ac_jump=跳躍 items.misc.attackshoes.desc=這個鞋子不需要充能,但跳躍距離恒定且消耗額外的回合。落地後對周圍敵人造成傷害。\n我提醒ㄧ下,不要踩到刺龜! @@ -2199,9 +2249,10 @@ items.misc.gnollmark.name=儀式面具 items.misc.gnollmark.ac_light=光明儀式 items.misc.gnollmark.ac_dark=黑暗儀式 items.misc.gnollmark.ac_earth=自然儀式 +items.misc.gnollmark.ac_life=生命獻祭 items.misc.gnollmark.break=準備不妥。 items.misc.gnollmark.charge=準備完成度當前為%d,完成度上限為%d。 -items.misc.gnollmark.desc=豺狼人薩滿所佩戴的面具,用於儀式準備或者樹立地位。在釋放法杖後準備度會上升。\n光明儀式會大幅度提升使用者的物理力量,但相對的,使用者的奧術力量會被禁止。黑暗儀式則相反。\n自然儀式將從自然中吸取能量,提升使用者的抗擊能力。 +items.misc.gnollmark.desc=豺狼人薩滿所佩戴的面具,用於儀式準備或者樹立地位。在釋放法杖後準備度會上升。\n光明儀式會大幅度提升使用者的物理力量,但相對的,使用者的奧術力量會被禁止。黑暗儀式則相反。\n自然儀式將從自然中吸取能量,提升使用者的抗擊能力。\n在病毒入侵之後,它被允許以生命來給面具充能。 items.misc.mechpocket.name=機械口袋 items.misc.mechpocket.ac_use=使用 @@ -2223,26 +2274,30 @@ items.misc.skillofmig.desc=看上去是ㄧ張普通的羊皮卷,但上面記 items.misc.skillofmig.skillup=你感覺你的魔法能力提升了。 items.misc.demoscroll.name=惡魔契約 -items.misc.demoscroll.ac_read=閱讀 +items.misc.demoscroll.ac_read=鮮血交易 +items.misc.demoscroll.ac_read2=靈魂轉換 items.misc.demoscroll.desc=ㄧ張用鮮血達成的契約,可以用生命來換取更強的力量。\n每升ㄧ級便可額外使用ㄧ次。 items.misc.demoscroll.hitup=你感覺你的命中能力提升了。 items.misc.demoscroll.evaup=你感覺你的閃避能力提升了。 items.misc.demoscroll.migup=你感覺你的魔法能力提升了。 items.misc.demoscroll.htdown=你感覺你的生命上限降低了。 -items.misc.demoscroll.charge=已使用次數%d。 +items.misc.demoscroll.htup=你感覺你的生命上限提升了。 +items.misc.demoscroll.charge=靈魂數量 %d 。 items.misc.undeadbook.name=亡靈聖經 -items.misc.undeadbook.ac_read=閱讀 +items.misc.undeadbook.ac_read=神聖庇佑 +items.misc.undeadbook.ac_read2=靈魂獻祭 items.misc.undeadbook.ac_bless=祈禱 -items.misc.undeadbook.desc=ㄧ本用死靈語書寫的聖經。為什麽亡靈也信聖經? \n借由亡靈聖經的力量,閱讀者可以消耗ㄧ定量的生命能量,從而從死亡的單位中以露珠的形式提取能量。\n使用者也可以向亡靈聖經祈禱,若使用者的經歷得到其神明的賞識,神明會以不死的奧秘回饋使用者。 +items.misc.undeadbook.desc=一本用死靈語書寫的聖經。為什麽亡靈也信聖經? \n藉由亡靈聖經的力量,閱讀者可以消耗一定量的生命能量,從而從死亡的單位中以露珠的形式提取能量。\n使用者也可以向亡靈聖經祈禱,若使用者的經歷得到其神明的賞識,神明會以各種獎勵回饋使用者。 items.misc.undeadbook.bless=聖經以露珠回應你的閱讀,但你感覺你的身體失去了什麽。 items.misc.undeadbook.1up=聖經以復活十字架回應你的祈禱。 +items.misc.undeadbook.charge=能量 %d 。 items.misc.luckybadge.name=幸運胸章 items.misc.luckybadge.desc=購買房產後商人老板送你的紀念品之ㄧ,據說可以小幅度提升佩戴者的運氣,可以被強化。 items.misc.fourclover.name=四葉薄荷項鏈 -items.misc.fourclover.desc=這個四葉草形狀的項鏈能小幅度提升佩戴者升級時的增益,並提供額外的附魔觸發幾率。 +items.misc.fourclover.desc=這個四葉草形狀的項鏈能小幅度提升佩戴者升級時的增益,並提供額外的附魔效果。 items.misc.faithsign.name=信標盒 items.misc.faithsign.ac_demon=惡魔派系 @@ -2250,7 +2305,7 @@ items.misc.faithsign.ac_human=神聖派系 items.misc.faithsign.ac_mech=機械派系 items.misc.faithsign.ac_life=自然派系 items.misc.faithsign.ac_balance=平衡派系 -items.misc.faithsign.desc=裝有不同信仰的標誌的盒子,在必要時可以用於解決爭端。 +items.misc.faithsign.desc=裝有不同信仰的標誌的盒子,在必要時可以用於解決爭端。\n需要指出的是,sps大陸上的教派複雜混亂,具體情況詳見圖鑒。 items.misc.savagehelmet.name=蠻族頭盔 items.misc.savagehelmet.desc=為狩獵年獸專門準備的頭盔,有幾率可以減少受到的傷害,並提升相應數量的攻擊力。當裝備這件頭盔時,這個幾率提升至100%。 @@ -2295,6 +2350,13 @@ items.misc.ppc.need_charge=需要記錄 items.misc.ppc.charge=記錄數%d。 items.misc.ppc.desc=瘋狂或冷靜,這是個問題。每當有生物死亡,它都會留下一條記錄。你可以消耗記錄數來觸發特殊效果。 +items.misc.ppc2.name=深淵調查儀 +items.misc.ppc2.ac_try=探索 +items.misc.ppc2.ac_heal=實驗 +items.misc.ppc2.ac_mind=豐收 +items.misc.ppc2.no_thing=沒有目標 +items.misc.ppc2.desc=深淵是個神秘的地方,你可以探索未知,也可以接機收利。但是請記住,詛咒和祝福是同等概率的。 + items.misc.needpaper.name=通緝令 items.misc.needpaper.ac_shop=黑市 items.misc.needpaper.ac_help=黑幫 @@ -2323,6 +2385,11 @@ items.misc.dancelion.ac_rush=猛沖 items.misc.dancelion.ac_jump=騰躍 items.misc.dancelion.desc=為狩獵年獸專門準備的手冊,在充滿能量後能從舞蹈片段中選擇ㄧ段進行模仿。 +items.misc.seriouspunch.name=認真拳套 +items.misc.seriouspunch.ac_cast=使用 +items.misc.seriouspunch.desc=一個普通的拳套。\n戴上它,你會感覺你無比的認真與仔細。 +items.misc.seriouspunch.charge=能量:%d。 + items.playericon.name=玩家之證 items.playericon.thank4play=感謝你參加bossrush測試,這個是測試獎勵。 items.playericon.desc=通過還沒完成的bossrush的獎勵,看上去和沒完成的bossrushㄧ樣粗糙。 diff --git a/resources/com/hmdzl/spspd/messages/items/items_zh.properties b/resources/com/hmdzl/spspd/messages/items/items_zh.properties index a126af06..0cb3f099 100644 --- a/resources/com/hmdzl/spspd/messages/items/items_zh.properties +++ b/resources/com/hmdzl/spspd/messages/items/items_zh.properties @@ -111,6 +111,14 @@ items.skills.followerskill.ac_special_three=巧嘴滑舌 items.skills.followerskill.ac_special_four=祝福术 items.skills.followerskill.desc=信徒技能 \n祈祷:蓄力,获得伤害加成和伤害减免。\n\n资金募集:根据视野中单位的数量获得金币。\n\n巧嘴滑舌:恐惧敌人,并使你跑得飞快。\n\n祝福术:强化并驱散一件装备。 +items.skills.asceticskill.name=修士躯壳 +items.skills.asceticskill.ac_special=灵能增幅 +items.skills.asceticskill.ac_special_two=能量灌注 +items.skills.asceticskill.ac_special_three=重编程 +items.skills.asceticskill.ac_special_four=混沌风暴 +items.skills.asceticskill.desc=修士技能 \n灵能增幅:暂时提升法强和速度。\n\n能量灌注:重新附魔一样物品。\n\n重编程:降低生命上限/命中/闪避,并提升法强。\n\n混沌风暴:缴械或沉默周围的单位,并对自身施加伤害增幅。 + + items.armor.normalarmor.clotharmor.name=布甲 items.armor.normalarmor.clotharmor.desc=这件轻便的护甲能提供最基本的防御。\n常规护甲 @@ -267,12 +275,13 @@ items.artifacts.driedrose$petal.maxlevel=玫瑰再一次完整了! items.artifacts.driedrose$petal.levelup=你将花瓣放在了玫瑰上。 items.artifacts.driedrose$petal.desc=一片干枯脆弱的花瓣,它居然能够在这么深的地牢之中幸存下来。 items.artifacts.driedrose$ghosthero.name=悲伤幽灵 -items.artifacts.driedrose$sghosthero.name=暴躁幽灵 +items.artifacts.driedrose$superghosthero.name=暴躁幽灵 items.artifacts.driedrose$ghosthero.def_verb=躲避 items.artifacts.driedrose$ghosthero.hello=再次向你问好,%s。 items.artifacts.driedrose$ghosthero.introduce=我的灵魂与这朵玫瑰相连,对我来说它非常珍贵,是我爱人在我离开地面前送给我的礼物。\n\n我无法回去见他了,但感谢你让我有第二次机会来完成我的旅程。当我准备好后,我会回应你的呼唤与你并肩作战。\n\n希望你能在我倒下的地方继续走下去…… items.artifacts.driedrose$sghosthero.desc=强化后的悲伤幽灵,速度更快,并会在死亡时复活。 items.artifacts.driedrose$ghosthero.desc=这是一个拥有人类外形的脆弱幻影。它的力量似乎与我手上的玫瑰联系在了一起。\n\n这个幽灵可能无法逗留太久,但它应该是我在这里唯一的挚友了。 +items.artifacts.driedrose$superghosthero.desc=这是一个拥有娘们外形的幻影。它的力量似乎与我手上的玫瑰联系在了一起。\n\n这个幽灵可是个娘们,它的纯度应该在我之上。 items.artifacts.driedrose$wndghosthero.title=幽灵的装备 items.artifacts.driedrose$wndghosthero.desc=幽灵本身十分脆弱,但她的形体已经完整到足以装备一件武器和防具。她可以和你一样自如使用这些装备。\n\n幽灵目前可装备_力量需求上限低于%d_的物品。 items.artifacts.driedrose$wndghosthero.weapon_prompt=选择一件武器 @@ -550,6 +559,12 @@ items.food.fruit.fullmoonberry.desc=野生浆果的一种,富含大量维生 items.food.fruit.moonberry.name=青色浆果 items.food.fruit.moonberry.desc=野生浆果的一种,富含大量维生素和矿物质,食用后可以使人身强力壮,充满活力。 +items.food.fruit.strawberry.name=草莓 +items.food.fruit.strawberry.desc=宫殿境内最高的山上生长的草莓。 + +items.food.fruit.cherry.name=樱桃 +items.food.fruit.cherry.desc=遗迹附近常见的守卫植物的果实。 + items.food.completefood.goldennut.name=受hmdzl001祝福的坚果 items.food.completefood.goldennut.effect1=+1力量,+60血量上限 items.food.completefood.goldennut.effect2=+2力量,+30血量上限 @@ -664,9 +679,18 @@ items.food.completefood.aflyfood.desc=阿飞特制的不思议饭团,拥有另 items.food.completefood.zongzi.name=肉粽 items.food.completefood.zongzi.desc=好吃但油腻。 +items.food.completefood.nutcake.name=坚果蛋糕 +items.food.completefood.nutcake.desc=好吃但油腻。 + +items.food.completefood.mooncake.name=月饼 +items.food.completefood.mooncake.desc=中秋佳节,赏月,是壁垒众多传统之一。 + ###medicine items.medicine.pill.ac_eat=食用 +items.medicine.timepill.name=时之块 +items.medicine.timepill.desc=提供加速和时之沙。 + items.medicine.realgarwine.name=雄黄酒 items.medicine.realgarwine.desc=提供火焰抗性和剧毒抗性。 @@ -689,22 +713,22 @@ items.medicine.shootpill.name=神射药丸 items.medicine.shootpill.desc=在一段时间内提升射击力。 items.medicine.bluemilk.name=蓝奶伞 -items.medicine.bluemilk.desc=这种蘑菇像浆果一样鲜嫩多汁,食用它可以大幅度加快你的行动速度和恢复速度。只是...它对其他生物也有相同的效果。 +items.medicine.bluemilk.desc=这种蘑菇像浆果一样鲜嫩多汁,食用它可以大幅度加快你的行动速度和恢复速度。而它对其他生物的效果是降低。 items.medicine.deathcap.name=致死帽 items.medicine.deathcap.desc=这种头上布满白斑的红色菌类肯定是具有致命效果的东西。希望它也会对其他生物有效。 items.medicine.earthstar.name=地裂星 -items.medicine.earthstar.desc=这种菌类并不属于地球。它可能来自虚空...或死星什么的...反正不会是小马国。食用它可能会撕裂这片区域所有人的身体。 +items.medicine.earthstar.desc=这种菌类并不属于地球。它可能来自虚空...或死星什么的...反正不会是小马国。食用它会撕裂这片区域所有人的身体。 items.medicine.goldenjelly.name=凝胶团 -items.medicine.goldenjelly.desc=与其说这是一种菌类,倒不如说这是一袋种子。它是这种菌类的繁殖的表现:受到挤压后,大量的孢子飞向四周,减缓生物的移动的同时致幻目标。 +items.medicine.goldenjelly.desc=与其说这是一种菌类,倒不如说这是一袋种子。它是这种菌类的繁殖的表现:受到挤压后,大量的孢子飞向四周,减缓生物的移动的同时寄生目标。 items.medicine.jackolantern.name=灯笼球 -items.medicine.jackolantern.desc=这种菌类含有大量的磷。当它受到外界挤压时它会将会把体内的磷成分以白磷的形式释放,从而引起大火。 +items.medicine.jackolantern.desc=这种菌类含有大量的磷。当它受到外界挤压时它会将会把体内的磷成分以白磷的形式释放,从而引起大火甚至使其变成炼狱。 items.medicine.pixieparasol.name=单色块 -items.medicine.pixieparasol.desc=一种有强烈致幻作用的菌类,食用后会使人的伤口恢复,同时使其他生物陷入睡眠状态。 +items.medicine.pixieparasol.desc=一种有强烈致幻作用的菌类,食用后会使人振奋,同时使其他生物陷入睡眠状态。 items.medicine.greenspore.name=绿菌孢 items.medicine.greenspore.not_time=奇怪的能量流入了你的背包,但是什么也没发生。 @@ -913,35 +937,35 @@ items.rings.ring.toomany=你最多同时装备3样饰品。 items.rings.ringofaccuracy.name=精准戒指 items.rings.ringofaccuracy.stats=佩戴这枚戒指时,你的精准度会增加_%1$d_点,攻击距离会增加_%2$d_格。 -items.rings.ringofaccuracy.desc=这枚戒指提高了你的专注力,使敌人难以躲闪你的攻击。该戒指每10级提供1格额外的攻击距离。 +items.rings.ringofaccuracy.desc=这枚戒指提高了你的专注力,使敌人难以躲闪你的攻击。该戒指每10级提供1格额外的攻击距离,但在30级效果达到上限。 items.rings.ringofelements.name=元素戒指 -items.rings.ringofelements.stats=当佩戴这枚戒指时,你会获得元素抗性。 -items.rings.ringofelements.desc=这枚戒指能为你提供多种元素抗性,譬如火焰,雷电,气体等;它还能降低负面效果的持续时间。 +items.rings.ringofelements.stats=当佩戴这枚戒指时,增益效果提升_%1$s%%_倍,负面效果降低_%2$s%%_倍。 +items.rings.ringofelements.desc=这枚戒指能为你提供多种元素抗性,提升增益效果的持续时间,并降低负面效果的持续时间。在30级时这个效果达到上限。 items.rings.ringofevasion.name=闪避戒指 items.rings.ringofevasion.stats=佩戴这枚戒指时,你的闪避值会增加_%d_点,潜行会增加_%2$d_点。 -items.rings.ringofevasion.desc=这枚戒指会混淆配戴者的真实位置,令其更难被敌人击中。该戒指每5级提供1点额外的潜行,但最多提供6点潜行。 +items.rings.ringofevasion.desc=这枚戒指会混淆配戴者的真实位置,令其更难被敌人击中。该戒指每5级提供1点额外的潜行,但在30级时这枚戒指的潜行效果达到上限。 items.rings.ringofforce.name=武力戒指 items.rings.ringofforce.stats=佩戴这枚戒指时能额外能够造成_%1$s%%_的伤害。如果你未装备近战武器,你基础攻击将造成_%2$d~%3$d伤害_。 -items.rings.ringofforce.desc=这枚戒指能够增强配戴者的打击力度。在30级时这枚戒指的打击加成效果达到最强。 +items.rings.ringofforce.desc=这枚戒指能够增强配戴者的打击力度。在30级时这枚戒指的打击加成效果达到上限。 items.rings.ringoffuror.name=狂怒戒指 items.rings.ringoffuror.stats=佩戴这枚戒指时,你的武器的攻击速度会提升_%s%%_。 -items.rings.ringoffuror.desc=这枚戒指会激发配戴者内心的怒火,使其能够更迅猛地攻击。在30级时这枚戒指效果达到最强。 +items.rings.ringoffuror.desc=这枚戒指会激发配戴者内心的怒火,使其能够更迅猛地攻击。在30级时这枚戒指效果达到上限。 items.rings.ringofhaste.name=疾速戒指 items.rings.ringofhaste.stats=佩戴这枚戒指时,你的移动速度会提升_%s%%_。 -items.rings.ringofhaste.desc=这枚戒指减轻了配戴者在移动时的负担,使其能够飞速奔跑。在30级时这枚戒指效果达到最强。 +items.rings.ringofhaste.desc=这枚戒指减轻了配戴者在移动时的负担,使其能够飞速奔跑。在30级时这枚戒指效果达到上限。 items.rings.ringofmagic.name=奥术戒指 items.rings.ringofmagic.stats=佩戴这枚戒指时,你的法强值会提升_%d_点。 -items.rings.ringofmagic.desc=你的法杖在这枚戒指散布的奥术力场中会变得更加强大。在30级时这枚戒指效果达到最强。 +items.rings.ringofmagic.desc=你的法杖在这枚戒指散布的奥术力场中会变得更加强大。在30级时这枚戒指效果达到上限。 items.rings.ringofmight.name=根骨戒指 -items.rings.ringofmight.stats=佩戴这枚戒指时,你的力量值会提升_%1$d_点,生命上限会提升_%2$d_点。 -items.rings.ringofmight.desc=这枚戒指会增强配戴者的体质,使其拥有更强的体格。该戒指每5级提供1点额外力量。 +items.rings.ringofmight.stats=佩戴这枚戒指时,你的力量值会提升_%1$d_点,生命上限会提升_%2$s%%_倍。 +items.rings.ringofmight.desc=这枚戒指会增强配戴者的体质,使其拥有更强的体格。该戒指每5级提供1点额外力量,但生命上限提升在30级时达到最大值。 items.rings.ringofsharpshooting.name=神射戒指 items.rings.ringofsharpshooting.stats=佩戴这枚戒指时,你的投掷武器的命中值会提升_%1$d_,伤害值会提升_%2$s%%_。 @@ -949,11 +973,11 @@ items.rings.ringofsharpshooting.desc=这枚戒指加强了配戴者的精度和 items.rings.ringoftenacity.name=韧性戒指 items.rings.ringoftenacity.stats=佩戴这枚戒指时,你承受的伤害降低_%s%%_。 -items.rings.ringoftenacity.desc=这枚戒指使配戴者能够抵御受到的伤害。在30级时这枚戒指效果达到最强。 +items.rings.ringoftenacity.desc=这枚戒指使配戴者能够抵御受到的伤害。在30级时这枚戒指效果达到上限。 items.rings.ringofenergy.name=能量戒指 -items.rings.ringofenergy.stats=佩戴这枚戒指时,你的法杖充能速度会提升_%s%%_。 -items.rings.ringofenergy.desc=在戒指的奥术领域笼罩下你的所有法杖充能速度都会因此提升。在30级时这枚戒指效果达到最强。 +items.rings.ringofenergy.stats=佩戴这枚戒指时,你的法杖充能所需回合减少_%s_。 +items.rings.ringofenergy.desc=在戒指的奥术领域笼罩下你的所有法杖充能速度都会因此提升。在30级时这枚戒指效果达到上限。 ###scrolls items.scrolls.scroll.ac_read=阅读 @@ -1104,9 +1128,9 @@ items.wands.wandofmagicmissile.name=魔弹法杖 items.wands.wandofmagicmissile.desc=这根无属性法杖能发射纯魔法能量构成的导弹。 items.wands.wandofmagicmissile.stats_desc=尽管不如其它法杖那么强大,但它的大量充能数弥补了这一点。它能造成_%1$d~%2$d点伤害_ 。 -items.wands.wandofpoison.name=沼泽法杖 -items.wands.wandofpoison.desc=这根地属性法杖由一根枯木枝巧琢而成。不知为何它还活着。 -items.wands.wandofpoison.stats_desc=该法杖能射出一颗会在目标位置爆炸的沼泽法球。它能造成_%1$d~%2$d点伤害_ 并将目标周围的环境改成沼泽。 +items.wands.wandofswamp.name=沼泽法杖 +items.wands.wandofswamp.desc=这根地属性法杖由一根枯木枝巧琢而成。不知为何它还活着。 +items.wands.wandofswamp.stats_desc=该法杖能射出一颗会在目标位置爆炸的沼泽法球。它能造成_%1$d~%2$d点伤害_ 并将目标周围的环境改成沼泽。 items.wands.wandoflight.name=强光法杖 items.wands.wandoflight.desc=这根光属性法杖由一块实心半透明水晶构成,就像一块厚长光滑的玻璃。 @@ -1130,46 +1154,48 @@ items.wands.cannonofmage.stats_desc=被使用时,这根法杖会释放出随 ###enchantments items.weapon.enchantments.enchantmentdark.name=暗影%s -items.weapon.enchantments.enchantmentdark.desc=暗影附魔有几率恐吓目标,并造成额外的暗属性伤害。 +items.weapon.enchantments.enchantmentdark.desc=暗影附魔将造成大量的暗属性伤害,并有几率恐吓目标。 items.weapon.enchantments.enchantmentfire.name=烈焰%s -items.weapon.enchantments.enchantmentfire.desc=烈焰附魔有几率点燃目标,并造成额外的火属性伤害。 +items.weapon.enchantments.enchantmentfire.desc=烈焰附魔将造成少量的火属性伤害,并有几率点燃目标。 -items.weapon.enchantments.enchantmentlight.name=圣光%s -items.weapon.enchantments.enchantmentlight.desc=圣光附魔有几率对邪物造成高额的伤害,并造成额外的光属性伤害。 +items.weapon.enchantments.enchantmentlight.name=闪耀%s +items.weapon.enchantments.enchantmentlight.desc=闪耀附魔将造成大量的光属性伤害,并有几率致盲。 items.weapon.enchantments.enchantmentenergy.name=战意%s -items.weapon.enchantments.enchantmentenergy.desc=战意附魔有几率提升使用者的攻击力,并造成额外的物理伤害。 +items.weapon.enchantments.enchantmentenergy.desc=战意附魔将造成少量的无属性伤害,并提升使用者的攻击力。 items.weapon.enchantments.enchantmentearth.name=自然%s -items.weapon.enchantments.enchantmentearth.desc=自然附魔有几率对目标埋下寄生种子,并造成额外的地属性伤害。 +items.weapon.enchantments.enchantmentearth.desc=自然附魔将造成大量的地属性伤害,并有几率对目标埋下寄生种子。 items.weapon.enchantments.enchantmentshock.name=乱流%s -items.weapon.enchantments.enchantmentshock.desc=乱流附魔有几率对多个目标造成伤害,并造成额外的雷属性伤害。 +items.weapon.enchantments.enchantmentshock.desc=乱流附魔将造成大量的雷属性伤害,并对多个目标造成伤害。 + +items.weapon.enchantments.enchantmentice.name=寒潮%s +items.weapon.enchantments.enchantmentice.desc=寒潮将造成大量的冰属性伤害,并有几率给目标施加寒冷和潮湿效果。 -items.weapon.enchantments.enchantmentice.name=冰霜%s -items.weapon.enchantments.enchantmentice.desc=冰霜附魔有几率冻结目标,并造成额外的冰属性伤害。 +items.weapon.enchantments.enchantmentice2.name=冰霜%s +items.weapon.enchantments.enchantmentice2.desc=冰霜附魔将造成少量的冰属性伤害,并几率冻伤目标。 -items.weapon.enchantments.enchantmentdark2.name=弱化%s -items.weapon.enchantments.enchantmentdark2.desc=弱化附魔有几率削弱目标的攻击力。 +items.weapon.enchantments.enchantmentdark2.name=咒术%s +items.weapon.enchantments.enchantmentdark2.desc=咒术附魔将造成少量的暗属性伤害,并有几率咒杀目标。 items.weapon.enchantments.enchantmentfire2.name=焦油%s -items.weapon.enchantments.enchantmentfire2.desc=焦油附魔有几率给目标的泼油。 +items.weapon.enchantments.enchantmentfire2.desc=焦油附魔将造成大量的火属性伤害,并有几率给目标的泼油。 -items.weapon.enchantments.enchantmentlight2.name=闪耀%s -items.weapon.enchantments.enchantmentlight2.desc=闪耀附魔有几率致盲目标。 +items.weapon.enchantments.enchantmentlight2.name=圣光%s +items.weapon.enchantments.enchantmentlight2.desc=圣光附魔将造成少量的光属性伤害,并有几率以圣光打击目标。 items.weapon.enchantments.enchantmentenergy2.name=剑舞%s -items.weapon.enchantments.enchantmentenergy2.desc=剑舞附魔有几率提升使用者的防御力。 +items.weapon.enchantments.enchantmentenergy2.desc=剑舞附魔将造成大量的无属性伤害,并给使用者提供物理护盾。 items.weapon.enchantments.enchantmentearth2.name=酸蚀%s -items.weapon.enchantments.enchantmentearth2.desc=酸蚀附魔有几率给目标上腐酸。 +items.weapon.enchantments.enchantmentearth2.desc=酸蚀附魔将造成少量的地属性伤害,并有几率给目标上腐酸。 items.weapon.enchantments.enchantmentshock2.name=电震%s -items.weapon.enchantments.enchantmentshock2.desc=电震附魔有几率给目标上静电效果。 +items.weapon.enchantments.enchantmentshock2.desc=电震附魔将造成少量的雷属性伤害,并有几率给目标上静电效果。 + -items.weapon.enchantments.enchantmentice2.name=寒潮%s -items.weapon.enchantments.enchantmentice2.desc=寒潮有几率给目标上寒冷和潮湿效果。 items.weapon.enchantments.aresleech.name=抽灵%s items.weapon.enchantments.aresleech.desc=抽灵附魔能将造成的伤害转为能量,缓慢的输送回你的身体。 @@ -1316,8 +1342,8 @@ items.weapon.melee.triangolo.desc=用细钢条弯制成三角形的打击乐器 items.weapon.melee.flute.name=长笛 items.weapon.melee.flute.desc=一根有着许多小孔的空心木棍,吹奏起来会发出尖锐的啸声。\n共振 -items.weapon.melee.wardurm.name=战鼓 -items.weapon.melee.wardurm.desc=发音较低,但很响亮。被用于鼓舞士气或指挥战斗。 \n高级共振 +items.weapon.melee.wardrum.name=战鼓 +items.weapon.melee.wardrum.desc=发音较低,但很响亮。被用于鼓舞士气或指挥战斗。 \n高级共振 items.weapon.melee.trumpet.name=小号 items.weapon.melee.trumpet.desc=铜管乐器家族中音域最高的乐器,常负责旋律部分或高吭节奏的演奏。\n共振 @@ -1340,6 +1366,9 @@ items.weapon.melee.prayerwheel.desc=就是转经轮。——??? \n积蓄 items.weapon.melee.stonecross.name=十碑 items.weapon.melee.stonecross.desc=一个巨大的石头十字碑。——Coconut \n积蓄 +items.weapon.melee.tricksand.name=诡异沙尘 +items.weapon.melee.tricksand.desc=90金币购买的沙尘,也许可以用来揭示隐藏单位。——Coconut \n破法 + items.weapon.melee.special.goei.name=驱魔御币 items.weapon.melee.special.goei.desc=一把驱魔御币,博丽的巫女常用它来治退妖魔鬼怪。——REN\n除秽,积蓄 @@ -1378,6 +1407,14 @@ items.weapon.melee.special.diamondpickaxe.no_thing=这里没东西好挖了。 items.weapon.melee.special.diamondpickaxe.break=你饿了。 items.weapon.melee.special.diamondpickaxe.noise=挖掘惊动了附近的怪物。 +items.weapon.melee.special.elekatana.name=武士雷刀 +items.weapon.melee.special.elekatana.desc=附魔雷电的武士刀,随着攻击次数的增加,同一目标受到的伤害就越大。\n绑定,雷切 +items.weapon.melee.special.elekatana.ac_zap=一闪 +items.weapon.melee.special.elekatana.charge=能量:%d / %d。 +items.weapon.melee.special.elekatana.silent=被沉默了。 +items.weapon.melee.special.elekatana.prompt=选择目标地点。 +items.weapon.melee.special.elekatana.no=没有能量了。 + items.weapon.melee.special.shadoweater.name=暗噬 items.weapon.melee.special.shadoweater.desc=受诅咒的武器,是由测试者们的合作产生的。\n休眠-双刃,低语 items.weapon.melee.special.shadoweater.charge=暗影:%d / 20。 @@ -1535,7 +1572,7 @@ items.weapon.spammo.woodenammo.desc=将原石和坚果组合而成的特殊子 ###missile weapons items.weapon.missiles.empbola.name=电磁套索 -items.weapon.missiles.empbola.desc=用于抓捕或狩猎的工具之一,能够减缓目标的移动甚至将其麻痹。 +items.weapon.missiles.empbola.desc=用于抓捕或狩猎的工具之一,能够减缓目标的移动甚至将其麻痹,并移除它身上的护盾。 items.weapon.missiles.boomerang.name=回旋镖 items.weapon.missiles.boomerang.ac_ammo=涂油 @@ -1566,6 +1603,14 @@ items.weapon.missiles.elfbow.ac_drink=饮用 items.weapon.missiles.elfbow.desc=暗夜精灵所使用的短弓,会根据法强来提升伤害。同时还带有少量的泉水。 items.weapon.missiles.elfbow.damage=这件武器可以造成_%d - %d 点伤害_。 +items.weapon.missiles.shootgun.name=科技霰弹枪 +items.weapon.missiles.shootgun.desc=经过外星科技改装过的霰弹枪,射击后会施加破甲效果,并允许消耗所有的弹药来造成一次高额的aoe伤害。 +items.weapon.missiles.shootgun.ac_shoot=射击 +items.weapon.missiles.shootgun.ac_endshoot=终结射击 +items.weapon.missiles.shootgun.ac_reload=装填 +items.weapon.missiles.shootgun.damage=这件武器可以造成_%d - %d 点伤害_。 +items.weapon.missiles.shootgun.charge=弹药:%d / %d。 + items.weapon.missiles.forestdart.name=森林飞刀 items.weapon.missiles.forestdart.desc=受到森林的祝福的飞刀,能造成大量的伤害。 @@ -1573,16 +1618,16 @@ items.weapon.missiles.incendiarydart.name=燃烧飞镖 items.weapon.missiles.incendiarydart.desc=飞镖上的刺能让它钉入目标,而在飞镖上的不稳定物质则会在目标身上燃起烈焰。 items.weapon.missiles.hugeshuriken.name=巨型手里剑 -items.weapon.missiles.hugeshuriken.desc=锋锐的星形金属刃片能有效伤害目标,并大幅削弱目标的意志。 +items.weapon.missiles.hugeshuriken.desc=锋锐的星形金属刃片能有效伤害目标,并大幅削弱目标的意志,使其衰老。 items.weapon.missiles.escapeknive.name=逃脱小刀 items.weapon.missiles.escapeknive.desc=简单的金属片,但可以帮你从困境中逃脱。 -items.weapon.missiles.normalbomb.name=空弹 -items.weapon.missiles.normalbomb.desc=这个炸弹里面没有火药,看起来没有什么特别。 +items.weapon.missiles.normalbomb.name=摔炮 +items.weapon.missiles.normalbomb.desc=这个炸弹里面没有火药,但扔到地上就会发出响声,并吸引周围的怪物。最原始的武器往往能对强大的存在造成威胁。 items.weapon.missiles.poisondart.name=毒镖 -items.weapon.missiles.poisondart.desc=这种飞镖上覆盖着某种毒素,可以轻松的麻痹目标的神经,使其无法反抗。 +items.weapon.missiles.poisondart.desc=这种飞镖上覆盖着某种毒素,可以使目标中毒,并将其冻伤。 items.weapon.missiles.riceball.name=糯米团 items.weapon.missiles.riceball.desc=用于投食的食物,由于其量大份足,任何食用它的有生命的怪物都会去寻找一个安全的地方来美美睡上一觉。 @@ -1616,7 +1661,7 @@ items.weapon.missiles.moneypack.name=红包 items.weapon.missiles.moneypack.desc=只要准备好钱,在春节就能解决好多问题。2020春节快乐!!! items.weapon.missiles.mindarrow.name=意识之矢 -items.weapon.missiles.mindarrow.desc=利用你的疯狂,摧毁你的敌人。 +items.weapon.missiles.mindarrow.desc=利用你的疯狂,摧毁你的敌人,将其腐化,并对其造成大量伤害。 ##mc block items.weapon.missiles.buildblock.wallblock.name=墙块 @@ -1883,6 +1928,7 @@ items.equipableitem.ac_equip=装备 items.equipableitem.ac_unequip=取下 items.gold.name=金币 +items.gold.ac_unarmor=护盾移除 items.gold.desc=一堆金币。收集金币以在随后的商店中消费。 items.heap.mimic=这是一个宝箱怪! @@ -2108,6 +2154,10 @@ items.misc.jumpf.name=信徒之鞋 items.misc.jumpf.ac_jump=跳跃 items.misc.jumpf.desc=为了方便在不同种族不同信仰的村落之间经商,信徒可以随时准备一块隐蔽的地方重新装饰自己。同时有几率发现一些特别的植物。 +items.misc.jumpa.name=修士之鞋 +items.misc.jumpa.ac_jump=跳跃 +items.misc.jumpa.desc=修士来自于混乱战争后高塔组织克隆的混种人类,同时拥有星灵的灵能和机械的逻辑,修士的闪烁有几率不受充能限制,并在持续状态下可以无限跳跃。 + items.misc.attackshoes.name=水管工皮鞋 items.misc.attackshoes.ac_jump=跳跃 items.misc.attackshoes.desc=这个鞋子不需要充能,但跳跃距离恒定且消耗额外的回合。落地后对周围敌人造成伤害。\n我提醒一下,不要踩到刺龟! @@ -2199,9 +2249,10 @@ items.misc.gnollmark.name=仪式面具 items.misc.gnollmark.ac_light=光明仪式 items.misc.gnollmark.ac_dark=黑暗仪式 items.misc.gnollmark.ac_earth=自然仪式 +items.misc.gnollmark.ac_life=生命献祭 items.misc.gnollmark.break=准备不妥。 items.misc.gnollmark.charge=准备完成度 %d / %d。 -items.misc.gnollmark.desc=豺狼人萨满所佩戴的面具,用于仪式准备或者树立地位。在释放法杖后准备度会上升。\n光明仪式会大幅度提升使用者的物理力量,但相对的,使用者的奥术力量会被禁止。黑暗仪式则相反。\n自然仪式将从自然中吸取能量,提升使用者的抗击能力。 +items.misc.gnollmark.desc=豺狼人萨满所佩戴的面具,用于仪式准备或者树立地位。在释放法杖后准备度会上升。\n光明仪式会大幅度提升使用者的物理力量,但相对的,使用者的奥术力量会被禁止。黑暗仪式则相反。\n自然仪式将从自然中吸取能量,提升使用者的抗击能力。\n在病毒入侵之后,它被允许以生命来给面具充能。 items.misc.mechpocket.name=机械口袋 items.misc.mechpocket.ac_use=使用 @@ -2223,26 +2274,30 @@ items.misc.skillofmig.desc=看上去是一张普通的羊皮卷,但上面记 items.misc.skillofmig.skillup=你感觉你的魔法能力提升了。 items.misc.demoscroll.name=恶魔契约 -items.misc.demoscroll.ac_read=阅读 +items.misc.demoscroll.ac_read=鲜血交易 +items.misc.demoscroll.ac_read2=灵魂转换 items.misc.demoscroll.desc=一张用鲜血达成的契约,可以用生命来换取更强的力量。\n每升一级便可额外使用一次。 items.misc.demoscroll.hitup=你感觉你的命中能力提升了。 items.misc.demoscroll.evaup=你感觉你的闪避能力提升了。 items.misc.demoscroll.migup=你感觉你的魔法能力提升了。 items.misc.demoscroll.htdown=你感觉你的生命上限降低了。 -items.misc.demoscroll.charge=已使用次数 %d 。 +items.misc.demoscroll.htup=你感觉你的生命上限提升了。 +items.misc.demoscroll.charge=灵魂数量 %d 。 items.misc.undeadbook.name=亡灵圣经 -items.misc.undeadbook.ac_read=阅读 +items.misc.undeadbook.ac_read=神圣庇佑 +items.misc.undeadbook.ac_read2=灵魂献祭 items.misc.undeadbook.ac_bless=祈祷 -items.misc.undeadbook.desc=一本用死灵语书写的圣经。为什么亡灵也信圣经? \n借由亡灵圣经的力量,阅读者可以消耗一定量的生命能量,从而从死亡的单位中以露珠的形式提取能量。\n使用者也可以向亡灵圣经祈祷,若使用者的经历得到其神明的赏识,神明会以不死的奥秘回馈使用者。 +items.misc.undeadbook.desc=一本用死灵语书写的圣经。为什么亡灵也信圣经? \n借由亡灵圣经的力量,阅读者可以消耗一定量的生命能量,从而从死亡的单位中以露珠的形式提取能量。\n使用者也可以向亡灵圣经祈祷,若使用者的经历得到其神明的赏识,神明会以各种奖励回馈使用者。 items.misc.undeadbook.bless=圣经以露珠回应你的阅读,但你感觉你的身体失去了什么。 items.misc.undeadbook.1up=圣经以复活十字架回应你的祈祷。 +items.misc.undeadbook.charge=能量 %d 。 items.misc.luckybadge.name=幸运胸章 items.misc.luckybadge.desc=购买房产后商人老板送你的纪念品之一,据说可以小幅度提升佩戴者的运气,可以被强化。 items.misc.fourclover.name=四叶薄荷项链 -items.misc.fourclover.desc=这个四叶草形状的项链能小幅度提升佩戴者升级时的增益,并提供额外的附魔触发几率。 +items.misc.fourclover.desc=这个四叶草形状的项链能小幅度提升佩戴者升级时的增益,并提供额外的附魔效果。 items.misc.faithsign.name=信标盒 items.misc.faithsign.ac_demon=恶魔派系 @@ -2250,7 +2305,7 @@ items.misc.faithsign.ac_human=神圣派系 items.misc.faithsign.ac_mech=机械派系 items.misc.faithsign.ac_life=自然派系 items.misc.faithsign.ac_balance=平衡派系 -items.misc.faithsign.desc=装有不同信仰的标志的盒子,在必要时可以用于解决争端。\n需要指出的是,sps大陆上的教派复杂混乱,但就区分而言就只有六种派系。神圣派系代表着和人类,兽人,巨魔,精灵,矮人等集群智慧生物,和龙,亡灵,血肉,恶魔这些恶魔派系对立。而机械派系代表着机械,地精,异星人这类科技生物,和植物,野兽,元素这类自然派系对立。\n平衡派系和无派系类似,他们没有对神圣,恶魔,机械,自然派系的偏见,但较无派系而言,平衡派系更擅长对付强大的怪物。 +items.misc.faithsign.desc=装有不同信仰的标志的盒子,在必要时可以用于解决争端。\n需要指出的是,sps大陆上的教派复杂混乱,具体情况详见图鉴。 items.misc.savagehelmet.name=蛮族头盔 items.misc.savagehelmet.desc=为狩猎年兽专门准备的头盔,有几率可以减少受到的伤害,并提升相应数量的攻击力。当装备这件头盔时,这个几率提升至100%。 @@ -2295,6 +2350,13 @@ items.misc.ppc.need_charge=需要记录 items.misc.ppc.charge=记录数 %d 。 items.misc.ppc.desc=疯狂或冷静,这是个问题。每当有生物死亡,它都会留下一条记录。你可以消耗记录数来触发特殊效果。 +items.misc.ppc2.name=深渊调查仪 +items.misc.ppc2.ac_try=探索 +items.misc.ppc2.ac_heal=实验 +items.misc.ppc2.ac_mind=丰收 +items.misc.ppc2.no_thing=没有目标 +items.misc.ppc2.desc=深渊是个神秘的地方,你可以探索未知,也可以借机收利。但是记住,诅咒和祝福并存。 + items.misc.needpaper.name=通缉令 items.misc.needpaper.ac_shop=黑市 items.misc.needpaper.ac_help=黑帮 @@ -2323,6 +2385,11 @@ items.misc.dancelion.ac_rush=猛冲 items.misc.dancelion.ac_jump=腾跃 items.misc.dancelion.desc=为狩猎年兽专门准备的手册,在充满能量后能从舞蹈片段中选择一段进行模仿。 +items.misc.seriouspunch.name=认真拳套 +items.misc.seriouspunch.ac_cast=使用 +items.misc.seriouspunch.desc=一个普通的拳套。\n请收我为徒.jpg +items.misc.seriouspunch.charge=能量:%d 。 + items.playericon.name=玩家之证 items.playericon.thank4play=感谢你参加bossrush测试,这个是测试奖励。 items.playericon.desc=通过还没完成的bossrush的奖励,看上去和没完成的bossrush一样粗糙。 diff --git a/resources/com/hmdzl/spspd/messages/levels/levels.properties b/resources/com/hmdzl/spspd/messages/levels/levels.properties index 8eee1a84..e504268b 100644 --- a/resources/com/hmdzl/spspd/messages/levels/levels.properties +++ b/resources/com/hmdzl/spspd/messages/levels/levels.properties @@ -1,9 +1,4 @@ ###features -levels.features.alchemypot.select_seed=Select a seed to throw -levels.features.alchemypot.pot=Alchemy Pot -levels.features.alchemypot.fruit=Cook a Blandfruit -levels.features.alchemypot.potion=Brew a Potion -levels.features.alchemypot.options=Do you want to cook a Blandfruit with a seed, or brew a Potion from seeds? levels.features.chasm.chasm=Chasm levels.features.chasm.yes=Yes, I know what I'm doing @@ -44,13 +39,9 @@ levels.features.sign.pit_message=Note to self: Always leave a teleport scroll in levels.painters.massgravepainter$bones.name=Mass grave levels.painters.massgravepainter$bones.desc=bones litter the floor, what happened here? -levels.painters.ritualsitepainter$ritualmarker.name=Ritual marker -levels.painters.ritualsitepainter$ritualmarker.desc=A painted marker for some dark ritual. Candles are usually placed on the four corners. - levels.painters.weakfloorpainter$hiddenwell.name=Distant well levels.painters.weakfloorpainter$hiddenwell.desc=You can just make out a well in the depths below, perhaps there is something down there? - ###traps levels.traps.alarmtrap.name=Alarm trap levels.traps.alarmtrap.alarm=The trap emits a piercing sound that echoes throughout the dungeon! @@ -238,6 +229,7 @@ levels.level.sokoban_item_reveal_name=item switch levels.level.sokoban_port_switch_name=Portal switch levels.level.port_well_name=Portal levels.level.trap_air_name=Chasm +levels.level.glass_name=Glass levels.level.default_name=??? levels.level.shrub_name=Overgrown Shrub @@ -268,6 +260,7 @@ levels.level.sokoban_port_switch_desc=This is a portal switch. levels.level.port_well_desc=This is a portal. levels.level.trap_air_desc=It will deal damage to everything it touch. levels.level.empty_well_desc=The well has run dry. +levels.level.glass_desc=Common glass, but very strong. levels.level.default_desc=Nothing interesting here. levels.prisonlevel.water_name=Dark cold water. diff --git a/resources/com/hmdzl/spspd/messages/levels/levels_tzh.properties b/resources/com/hmdzl/spspd/messages/levels/levels_tzh.properties index 3411431c..7db55883 100644 --- a/resources/com/hmdzl/spspd/messages/levels/levels_tzh.properties +++ b/resources/com/hmdzl/spspd/messages/levels/levels_tzh.properties @@ -214,7 +214,7 @@ levels.level.locked_exit_name=鎖著的樓層出口 levels.level.unlocked_exit_name=開放的樓層出口 levels.level.sign_name=告示牌 levels.level.well_name=井 -levels.level.empty_well_name=幹涸的井 +levels.level.empty_well_name=乾涸的井 levels.level.statue_name=雕像 levels.level.statue_ssp_name=空氣墻 levels.level.tent_name=帳篷 @@ -229,6 +229,7 @@ levels.level.sokoban_item_reveal_name=獎勵開關 levels.level.sokoban_port_switch_name=傳送開關 levels.level.port_well_name=單向傳送門 levels.level.trap_air_name=深淵陷阱 +levels.level.glass_name=玻璃 levels.level.default_name=??? levels.level.shrub_name=茂盛的灌木 @@ -243,7 +244,7 @@ levels.level.embers_desc=灰燼覆蓋著地板。 levels.level.high_grass_desc=茂密的植被阻擋了視線。 levels.level.locked_door_desc=門鎖著,你需要匹配的鑰匙來打開。 levels.level.locked_exit_desc=沈重的鐵欄桿封鎖住了下樓樓梯。 -levels.level.barricade_desc=木柵欄依然堅固,但早已風幹多年。燒了怎麽樣? +levels.level.barricade_desc=木柵欄依然堅固,但早已風乾多年。燒了怎麽樣? levels.level.sign_desc=你從這裏看不清楚上面寫的是什麽。 levels.level.inactive_trap_desc=這個陷阱已經被觸發過了,現在ㄧ點也不危險。 levels.level.statue_desc=有人想裝飾ㄧ下這裏,很顯然,它沒能成功… @@ -253,16 +254,17 @@ levels.level.bed_desc=柔軟舒適的床。 levels.level.alchemy_desc=往這裏投入ㄧ些種子來釀造藥水。 levels.level.wool_rug_desc=這東西被摧毀到只剩下ㄧ些碎屑了。 levels.level.fleecing_trap_desc=這個陷阱破壞能力很強,推個箱子進去試試。 -levels.level.change_sheep_trap_desc=這個陷阱能完全轉換ㄧ個箱子。註意,該過程不可逆! +levels.level.change_sheep_trap_desc=這個陷阱能完全轉換ㄧ個箱子。注意,該過程不可逆! levels.level.sokoban_item_reveal_desc=用箱子壓ㄧ下就會有東西掉出來,但是你沒法知道那東西掉在哪裏。 levels.level.sokoban_port_switch_desc=只有觸發這個開關傳送門才會啟動。但是這個開關能用幾次?它又對應著哪個傳送門? levels.level.port_well_desc=只能傳送到ㄧ個地方的傳送門。 levels.level.trap_air_desc=讓人承受掉落傷害的陷阱。 levels.level.empty_well_desc=這座井已經枯竭了。 +levels.level.glass_desc=常見的玻璃,但非常堅固。 levels.level.default_desc=這裏沒什麽有趣的東西。 levels.prisonlevel.water_name=又黑又冷的水。 -levels.prisonlevel.empty_deco_desc=這裏的地板上有幹涸的血跡。 +levels.prisonlevel.empty_deco_desc=這裏的地板上有乾涸的血跡。 levels.prisonlevel.bookshelf_desc=這個書架可能是監獄圖書館的殘留物。燒掉怎麽樣? levels.sewerlevel.water_name=渾濁的水 diff --git a/resources/com/hmdzl/spspd/messages/levels/levels_zh.properties b/resources/com/hmdzl/spspd/messages/levels/levels_zh.properties index 355f3eef..af9f6565 100644 --- a/resources/com/hmdzl/spspd/messages/levels/levels_zh.properties +++ b/resources/com/hmdzl/spspd/messages/levels/levels_zh.properties @@ -229,6 +229,7 @@ levels.level.sokoban_item_reveal_name=奖励开关 levels.level.sokoban_port_switch_name=传送开关 levels.level.port_well_name=单向传送门 levels.level.trap_air_name=深渊陷阱 +levels.level.glass_name=玻璃 levels.level.default_name=??? levels.level.shrub_name=茂盛的灌木 @@ -259,6 +260,7 @@ levels.level.sokoban_port_switch_desc=只有触发这个开关传送门才会启 levels.level.port_well_desc=只能传送到一个地方的传送门。 levels.level.trap_air_desc=让人承受掉落伤害的陷阱。 levels.level.empty_well_desc=这座井已经枯竭了。 +levels.level.glass_desc=常见的玻璃,但非常坚固。 levels.level.default_desc=这里没什么有趣的东西。 levels.prisonlevel.water_name=又黑又冷的水。 diff --git a/resources/com/hmdzl/spspd/messages/misc/misc.properties b/resources/com/hmdzl/spspd/messages/misc/misc.properties index ace7fac3..8260bb5a 100644 --- a/resources/com/hmdzl/spspd/messages/misc/misc.properties +++ b/resources/com/hmdzl/spspd/messages/misc/misc.properties @@ -74,17 +74,17 @@ badges$badge.egg_break_2=Summon 3 pet! badges$badge.egg_break_3=Summon 5 pet! challenges.item_phobia=item phobia -challenges.item_phobia_desc=You think your scrolls and potions is dangerous.\n\n-spend more time on drink potions.\n-use scrolls will harm you and slience by yourself.\n-start with 1000 golds. +challenges.item_phobia_desc=You think your scrolls and potions is dangerous.\n\n-spend more time on drink potions.\n-use scrolls will harm you and slience you.\n-start with golds. challenges.listless=listless challenges.listless_desc=You feel weekness.\n\n-earn less ht on level up.\n-start with potion of might and potion of honey. challenges.nightmare_virus=nightmare virus challenges.nightmare_virus_desc=Everyon is infected by nightmare virus.\n\n- If something die, create a nightmare virus.\n- Start with blessing ankh. challenges.energy_lost=energy lost -challenges.energy_lost_desc=Based on conservation of energy, lots of energy lost in other ways.\n\n- Gain less hunger on eating foods.\n- Reduce wand's max charge.\n- Start with pasty. +challenges.energy_lost_desc=Based on conservation of energy, lots of energy lost in other ways.\n\n- Gain less hunger on eating foods.\n- Reduce wand's max charge.\n- Start with food. challenges.dew_rejection=dew rejection -challenges.dew_rejection_desc=Dew god hate you.\n\n- Drop less dews.\n- Spend more dews.\n- Start with 2 seed of dewcatcher. +challenges.dew_rejection_desc=Dew god hate you.\n\n- Drop less dews.\n- Spend more dews.\n- Start with seed of dewcatcher. challenges.darkness=Into darkness -challenges.darkness_desc=Darkness grown.\n\n- Can't record map by yourself.\n- Start with 2 scroll of magicmapping. +challenges.darkness_desc=Darkness grown.\n\n- Can't record map by yourself.\n- Start with scroll of magicmapping. challenges.abrasion=abrasion challenges.abrasion_desc=Weapons are almost break.\n\n- Weapon will be destroy by using it.\n- Start with Scroll of upgrade and Scroll of magicimbue. challenges.test_time=test time @@ -97,12 +97,14 @@ skins.second=Halloween skins.third=Spring Festival skins.fourth=Wonder Test skins.fifth=Dream Adventure +skins.sixth=Remake skins.normal_desc=Classic pixel dungeon skins, including warrior, mage, rogue, hunter, performer, soldier, follower.\n-Start with pet pack. skins.first_desc=2019 happy birthday skins, including fighter, explorer, ninja, maid, Vtuber, plumber, builder.\n-Start with different personal item.\n-fighter have hadoken. \n-explorer have rainbow cannon. \n-ninja have Legend of Hyrule. \n-maid have thousand knives. \n-Vtuber have effect button. \n-plumber have jump shoes and ? box.\n-builder have diamond pickaxe. -skins.second_desc=Halloween skins, including demon, gnoll, undead, kuranta, slime, mech, protoss.\n-Start with different personal stats. \n-demon attack with fire. \n-gnoll recharge fast. \n-undead stealth higher. \n-kuranta move fast. \n-slime heal quickly. \n-mech gain armor from level.\n-protoss ignore enemy's armor. +skins.second_desc=Halloween skins, including demon, gnoll, undead, kuranta, slime, mech, protoss.\n-Start with different personal stats. \n-demon attack with fire. \n-gnoll recharge fast. \n-undead stealth higher. \n-kuranta move fast. \n-slime heal quickly, and can hide in water. \n-mech gain armor and base damage from level.\n-protoss ignore enemy's armor. skins.third_desc=2020 Spring Festival skins, including heavy-infantry, emcee, samurai, archer, lion-dancer, doctor, merchant.\n-ankh shield and shoes will be replaced by an ex item and hunting pack.\n-heavy-infantry has shield and helmetl.\n-emcee has potion and mask.\n-samurai has cloak and totem .\n-archer has bow and throw bag.\n-lion-dancer has shovel and notation.\n-doctor has pulse pistol and heal bag .\n-merchant has sign box and pylon. skins.fourth_desc=Wonder test skins, including tester, elf, criminal, detective, DM, police, gambler.\n-start with different point.\n-tester has reward point, every time he leveling up will destory one of his equipment, and gain reword from that equipment's level. But he gain much gold in game.\n-elf has mana point, without this point he can't use wand, but he will deal more damage by wand.\n-criminal has prestige point, while he taken attack, he will lose some gold, reduce damage he taken and gain same prestige point.\n-detective has crazy point, while she taken damage, she will get crazy point. When she gain enough crazy point, she will have a special debuff, and improve her melee damage.\n-Dungeon-Master has people point. It will be added by leveling up, and spend gold every day. If this point is more than his level, he will deal more melee damage, but also taken more damage.\n-police has nanometer point every nanometer point will deal one damage to other mob one turn, but he will lose one random item sometimes.\n-gambler has fate point. this point will change after every attack, and effect melee attack and damage. skins.fifth_desc=A skins start with random equipment like dreams, including warrior, mage, rouge, hunter, performer, soldier, follower.\n-Every equipment is random, and remove armor drop. +skins.sixth_desc=Rebuild skins, with old skins and new staff, including R-fighter, R-warrior, R-samurai, R-soilder, R-DM, R-mech, R-ascetic.\n-R-fighter has one punch.\n-R-warrior has pet pack.\n-R-samurai has thunder katana and hunter pack, without shoes and ankh shield. \n-R-soider has shoot gun. \n-R-Dungeon-Master has people point. It will be added by leveling up, and lost when he return to old depth. If this point is not enouth, he will lose his health limit. \n-R-mech gain armor from level. \n-R-ascetic ... Who is he skins.info=Different skin will start with different items. skins.yes=Yes skins.no=NO @@ -133,9 +135,35 @@ resultdescriptions.ooze=Killed by acid. resultdescriptions.fall=Killed by falling. resultdescriptions.cheat=Dead because of cheating. resultdescriptions.countdown=Killed by explode. +resultdescriptions.lose=mission failed resultdescriptions.win=Find the Amulet. resultdescriptions.win2=Escape? journal$feature.memory_fire=fire of memory +infos.newdocument.story_guide.title=Introduction to SPS mainland +infos.newdocument.story_guide.intro.title=Basic introduction +infos.newdocument.story_guide.intro.body=Hello, welcome to The TOWER test 1.0. I'm coconut.\n\nYou are reading this book is an introduction to SPS land! This book contains all kinds of situations and crises in SPS land. Please check it in detail before participating in the test.\n\nThis is just a test. All battles are completed by the characters you control, so you don't have to worry about any physical damage. However, some extreme actions may activate the character's sleep thought. Please be careful in order to test safety.\n\nThe TOWER will prepare rich rewards for all testers, so:\n\nLet's start the test! +infos.newdocument.story_guide.tower.title=The TOWER +infos.newdocument.story_guide.tower.body=The TOWER is the most powerful camp on SPS land, located in the center of SPS land.\n\nAlthough the control scope is small, we have expanded the space area and built various environments and ecosystems through magic and scientific and technological means.\n\nEvery once in a while, we will recruit students and volunteers from other groups of SPS land and provide them with rich remuneration.\n\nWe simulated various weapons inside the tower for testers, including magic, technology and weapons of different times.\n\n(high --- destroyed, --- stored --- missing) +infos.newdocument.story_guide.def.title=The BASTION +infos.newdocument.story_guide.def.body=The BASTION are second only to The TOWER.\n\nThe BASTION is located in the northwest of SPS land, occupies most of the area of SPS land, and controls part of the external ocean. Based on the vast occupied area, The BASTION basically includes all environmental types and biological types in SPS land\n\nAt the same time, the racial relations within The BASTION are very harmonious, and creatures of different faiths can get along normally.\n\n(I don't believe that the interior of The BASTION is monolithic. The investigation results of the dark sewer incident of The BASTION have not been released so far. We must prevent disasters.) +infos.newdocument.story_guide.palace.title=The PALACE +infos.newdocument.story_guide.palace.body=The PALACE is located in the northwest of SPS land and built on the northwest mountains.\n\nThe PALACE business is very developed, and its mountains also contain a lot of treasures and relics. However, most of the resources are monopolized by the high-level palace, so the gap between the rich and the poor in The PALACE is serious and there are many families.\n\nWe once dug a strange cave in the northwest mountains, in which there will be some things and monsters we have never seen before. According to the agreement between The TOWER and The PALACE, we have sent commissioners to control it.\n\nDolya Town is also a good tourist destination. I hope you can relax there in the form of test. +infos.newdocument.story_guide.ruins.title=The RUINS +infos.newdocument.story_guide.ruins.body=The RUINS is located in the southeast of SPS land, with large forests and lakes and hidden areas.\n\nThe RUINS also provide enough food for the SPS land.\n\nMaybe we need some cultural atmosphere of The RUINS, where there are some traditional festivals.\n\nWe suspect that there is a tomb hidden in The RUINS. Recently, there have been frequent sightings of undead there. +infos.newdocument.story_guide.horn.title=The HORN +infos.newdocument.story_guide.horn.body=The HORN is located in the south of SPS land.\n\nThe HORN has the largest prison and arena in SPS land.\n\nIf you want to try your strength, you can go there.\n\n(recently, there are dead bodies disappearing inside the prison. We should be careful in combination with the death witness report of The RUINS) +infos.newdocument.story_guide.tribe.title=The TRIBE +infos.newdocument.story_guide.tribe.body=The TRIBE is located between The HORN, The TOWER and The BASTION, and exists as a buffer zone.\n\nDwarf city was built within The TRIBE.\n\nIt is said that sometimes abnormal sounds come from the underground of The TRIBE. We should be vigilant.\n\n(the sky is strange. something will happen) +infos.newdocument.story_guide.homeless.title=the homeless +infos.newdocument.story_guide.homeless.body=There's nothing to say, just homeless.\n\nMost vagrants wander in uncontrolled areas.\n\n(homeless.) +infos.newdocument.story_guide.overseas.title=oversea +infos.newdocument.story_guide.overseas.body=We can't detect the situation overseas, but something does come from the another land.\n\nThe BASTION has solved some problems for us, but that is not enough.\n\nSome alien prisoners say they come from there, but they can't describe the information of that.\n\n(there should be someone lived in there, but we still haven't any reported of it) +infos.newdocument.story_guide.tester.title=About tester +infos.newdocument.story_guide.tester.body=The character you control is one of the few elites on SPS mainland. All their combat memories and their bodies are saved in The TOWER.\n\nwarrior from The HORN, mages from The TOWER, rogue from The PALACE, hunter from The RUINS, performer from The BASTION, soldier from overseas, and homeless follower.\n\nEach of them is the existence of turning the tide. The TOWER spent a lot of effort to collect them. Please control them carefully.\n\nThis test aims to discover the threats faced in SPS land in advance and create advanced anti disaster soldiers at the same time. Remember, your responsibility is great. + +infos.newdocument.story_guide.sintro.title=??? Land +infos.newdocument.story_guide.sintro.body=??????????\n\n?????????????? + diff --git a/resources/com/hmdzl/spspd/messages/misc/misc_tzh.properties b/resources/com/hmdzl/spspd/messages/misc/misc_tzh.properties index 35260848..414312e8 100644 --- a/resources/com/hmdzl/spspd/messages/misc/misc_tzh.properties +++ b/resources/com/hmdzl/spspd/messages/misc/misc_tzh.properties @@ -74,17 +74,17 @@ badges$badge.egg_break_2=召喚3個寵物! badges$badge.egg_break_3=召喚5個寵物! challenges.item_phobia=恐物幻覺 -challenges.item_phobia_desc=你感覺你的卷軸和藥水都不能使用。\n\n-使用藥水花費額外回合。\n-使用卷軸將受到傷害並被沈默。\n-開始時獲得1000金幣。 +challenges.item_phobia_desc=你感覺你的卷軸和藥水都不能使用。\n\n-使用藥水花費額外回合。\n-使用卷軸將受到傷害並被沉默。\n-開始時獲得金幣。 challenges.listless=精神萎靡 challenges.listless_desc=你感覺渾身無力。\n\n-升級獲得最大生命值減少。\n-開始時獲得根骨藥水和蜂皇漿。 challenges.nightmare_virus=夢魘病毒 challenges.nightmare_virus_desc=恐怖的病毒感染了所有的生物。\n\n-怪物死亡時生成病毒體。\n-開始時獲得復活十字架。 challenges.energy_lost=能量流失 -challenges.energy_lost_desc=大量的能量轉化為熱能散發。\n\n-食物提供的能量大幅度減少。\n-法杖最大充能上限減少。\n-開始時獲得大餅。 +challenges.energy_lost_desc=大量的能量轉化爲熱能散發。\n\n-食物提供的能量大幅度減少。\n-法杖最大充能上限減少。\n-開始時獲得食物。 challenges.dew_rejection=排異露珠 -challenges.dew_rejection_desc=露珠之神並不喜歡你。\n\n-露珠掉落減少。\n-露珠花費增加。\n-開始時獲得2集露草之種。 +challenges.dew_rejection_desc=露珠之神並不喜歡你。\n\n-露珠掉落減少。\n-露珠花費增加。\n-開始時獲得集露草之種。 challenges.darkness=沒入黑暗 -challenges.darkness_desc=黑暗吞噬了周圍的環境。 \n\n-無法主動記錄地圖。\n-開始時獲得2探地卷軸 +challenges.darkness_desc=黑暗吞噬了周圍的環境。 \n\n-無法主動紀錄地圖。\n-開始時獲得探地卷軸 challenges.abrasion=嚴重磨損 challenges.abrasion_desc=武器上的銹跡明顯了起來。\n\n-常規武器有耐久度限制。用完即刻報廢。\n-開始時獲得升級卷軸和注魔卷軸。 challenges.test_time=測試時間 @@ -97,12 +97,14 @@ skins.second=萬聖逃亡 skins.third=年獸獵人 skins.fourth=奇跡試驗 skins.fifth=幻想之旅 +skins.sixth=復刻潮流 skins.normal_desc=經典的像素地牢皮膚,包括戰士,法師,盜賊,獵手,演員,星兵,信徒。\n-開始時獲得新手寵物包。 skins.first_desc=2019年暑期的英雄皮膚,包括格鬥家,探險者,忍者,女仆長,遊戲主播,水管工,建築工。\n-開始時用更加專業的道具替換原有道具。\n-格鬥家習得升龍拳。\n-探險者發現彩虹大炮。\n-忍者成為傳奇。\n-女仆長練習飛刀。\n-遊戲主播開掛。\n-水管工頂磚塊。\n-建築工拿礦鎬。 -skins.second_desc=怪物皮膚,包括惡魔,豺狼,亡靈,馬人,史萊姆,機甲,星靈。\n-開始時獲得獨有的屬性值。\n-惡魔火焰攻擊。\n-豺狼快速充能。\n-亡靈潛行牛逼。\n-馬人跑得飛快。\n-史萊姆再生恢復。\n-機甲護甲成長。\n-星靈無視防禦。 +skins.second_desc=怪物皮膚,包括惡魔,豺狼,亡靈,馬人,史萊姆,機甲,星靈。\n-開始時獲得獨有的屬性值。\n-惡魔火焰攻擊。\n-豺狼快速充能。\n-亡靈潛行牛逼。\n-馬人跑得飛快。\n-史萊姆再生恢復,水體隱身。\n-機甲護甲成長,身爲武器。\n-星靈無視防禦。 skins.third_desc=2020年春節皮膚,包括重裝,司儀,武者,弩手,舞獅,醫療,行商。\n-失去神聖護盾和鞋子,獲得獵殺工具包和ㄧ個額外的專屬道具。\n-重裝有盾牌和頭盔。\n-司儀有燒瓶和面具。\n-武者有鬥篷和圖騰。\n-弩手有弓箭和鏢袋。\n-舞獅有鐵鏟和舞譜。\n-醫療有電槍和血包。\n-行商有信盒和水晶 skins.fourth_desc=復活節奇跡皮膚,包括測試員,精靈,逃犯,偵探,領主,警官,賭徒。\n-獲得一條獨特的雙面狀態。\n-測試員擁有測驗點數,每當他升級時他都會失去一件裝備著的裝備,並獲得其等級的試驗點數。其獲得的金幣數提升。\n-精靈獲得魔法條。沒有魔法時將無法使用法杖,但當有魔法時使用法杖造成的傷害將提升。\n-逃犯擁有聲望點數。每次逃犯受到的攻擊傷害都會降低,但是會損失一定量的金幣,並獲得相應的點數。\n-偵探擁有瘋狂值。每次受到傷害都會提升瘋狂值,並在瘋狂值到達一定值時獲得一條隨機的負面buff,並提升造成的傷害。\n-領主擁有人氣點數。人氣點數會隨著遊戲的進程逐漸增加,並提供額外的近戰輸出。但是人氣點數越高,受到的傷害就越高,並且每天都會損失一定金幣。\n-警官擁有納米無人機點數。每點無人機點數每回合都會對周圍敵人造成傷害,但會間歇性吞噬背包中的非重要道具。\n-賭徒擁有天命點數。天命點數會隨時改變並賦予不同效果,但其會使攻擊輸出降低。 skins.fifth_desc=完全隨機的的幻想皮膚,包括戰士,法師,盜賊,獵手,演員,星兵,信徒。 \n -完全隨機的開局,且不會有護甲生成。 +skins.sixth_desc=復刻某個皮膚特性,但是用全新的圖像來代替,包括格鬥家,戰士,武士,星兵,領主,機甲,修士。\n-復刻暑假特典的格鬥家。\n-復刻經典皮膚的戰士。\n-復刻年獸獵人的武者。\n-復刻經典皮膚的星兵。\n-復刻奇蹟試驗的領主。領主擁有實驗體點數,每次升級都會提供一批實驗體以供消耗。但是當其前進至舊樓層時,他都會損失部分實驗體。若實驗體不足,則以生命上限代替。\n-復刻萬聖逃亡的機甲。\n-復刻經典皮膚的修士 skins.info=不同的皮膚將提供不同的初始物品 skins.yes=是的 skins.no=不是 @@ -133,9 +135,35 @@ resultdescriptions.ooze=溶於強酸 resultdescriptions.fall=摔至肉醬 resultdescriptions.cheat=作弊至死。拜托你很弱誒 resultdescriptions.countdown=爆體而亡 +resultdescriptions.lose=探險失敗 resultdescriptions.win=獲得護符 resultdescriptions.win2=逃離試驗? journal$feature.memory_fire=記憶之火 +infos.newdocument.story_guide.title=SPS大陸介紹 +infos.newdocument.story_guide.intro.title=基礎介紹 +infos.newdocument.story_guide.intro.body=你好,歡迎來到高塔壓力測試1.0,我是椰子。\n\n你正在閱讀的這本書是SPS大陸的簡介!這本書包含了目前SPS大陸上的各種情況和危機,在參與測試前請仔細閱讀。\n\n這只是一個測試,所有戰鬥均由你控制的角色完成,所以你不用擔心你自己受到傷害。但是,一些過激的舉動可能激活角色的困倦,為了角色的安全著想,請小心操控。\n\n高塔會為各位測試員準備豐厚的獎勵,那麼接下來:\n請開始測試吧! +infos.newdocument.story_guide.tower.title=高塔 +infos.newdocument.story_guide.tower.body=我們是高塔SPS大陸上最強大的陣營,它位於SPS大陸的中央。\n\n雖然控制範圍不大,但是我們通過魔法和科技的進步,逐步擴大大陸面積,並建造了各種環境和生態系統。\n\n每隔一段時間,我們就會向SPS大陸上的其他集團招募學員和志願者,並為他們提供了不低的酬勞。\n\n我們為測試著模擬了高塔內部的各種武器,魔法,科技,不同時代的武器都有。\n\n(高……摧毀,……存放的……失蹤) +infos.newdocument.story_guide.def.title=壁壘 +infos.newdocument.story_guide.def.body=壁壘的強大僅次於高塔。\n\n壁壘盤踞與SPS大陸西北方,佔據SPS大陸大部分的面積,並控制外部的部分海洋。基於遼闊的佔有面積,壁壘內部基本包含了SPS大陸裡面所有的環境類型和生物類型。\n\n同時壁壘內部的種族關係十分融洽,不同信仰的生物也能正常相處。\n\n(我不相信壁壘內部是鐵板一塊。壁壘的 黑暗下水道 事件到目前都沒有公佈調查結果。我們必須預防災難的發生。) +infos.newdocument.story_guide.palace.title=宮殿 +infos.newdocument.story_guide.palace.body=宮殿位於SPS大陸西北方,建造在西北山脈上。\n\n宮殿陣營商業十分發達,其所在的山脈中也蘊含大量的寶藏和遺跡。但大部分資源被宮殿高層壟斷,所以宮殿貧富差距嚴重,家族勢力眾多。\n\n我們曾經在西北山脈上挖掘出一個奇怪的洞穴,裡面會突然出現一些我們從未見過的東西和怪物。根據高塔與宮殿的協議,我們已經派專員控制住了那裡。\n\n多利亞小鎮也是一個不錯的旅遊地點,希望你們能在那放鬆一下,以測試的形式。 +infos.newdocument.story_guide.ruins.title=遺跡 +infos.newdocument.story_guide.ruins.body=遺跡位於SPS大陸東南部,其中有大片的森林和琥珀,還有隱藏著的區域。\n\n遺跡也給SPS大陸提供了足夠的食物。\n\n也許我們需要一些遺跡的文化氛圍,舉辦一場節日派對。\n\n我們懷疑有一片墓穴潛藏在遺跡內,最近那裡頻繁出現死靈的目擊報告。 +infos.newdocument.story_guide.horn.title=邪角 +infos.newdocument.story_guide.horn.body=邪角位於SPS大陸南方。\n\n邪角有SPS大陸上最大的監獄和角斗場。\n\n如果想試試自己的實力,可以去那裡試試看。\n\n(最近監獄內部有尸體消失的情況,結合遺跡的死靈目擊報告,我們應該小心) +infos.newdocument.story_guide.tribe.title=部落 +infos.newdocument.story_guide.tribe.body=部落位於邪角,高塔,壁壘之間,作為緩衝地帶存在。\n\n矮人城建立在部落內部。\n\n據說有時部落地下會傳來不正常的聲音,應當提高警惕。\n\n(遠方的天空出現一絲裂痕,它暗示了什麼?) +infos.newdocument.story_guide.homeless.title=流浪者 +infos.newdocument.story_guide.homeless.body=沒什麼好說的,只是流浪者。\n\n大部分流浪者會遊蕩在非控製區。\n\n(流浪者) +infos.newdocument.story_guide.overseas.title=外陸 +infos.newdocument.story_guide.overseas.body=我們沒法探測到海外的情況,但確實有東西從外陸湧出。\n\n壁壘替我們解決了一部分外陸問題,但是仍然有漏網之魚。\n\n部分星靈犯人稱他們來自外陸,但是他們沒有透露外陸的信息。\n\n(說起來外陸應該有人類生存,但目前我們仍然沒有報告) +infos.newdocument.story_guide.tester.title=控制角色 +infos.newdocument.story_guide.tester.body=你所操控的角色是目前SPS大陸上為數不多的精英,他們的所有戰鬥幾億連同他們的軀體都被保存在高塔之中。\n\n來自邪角的戰士,來自塔樓的法師,來自宮殿的盜賊,來自遺跡的獵手,來自壁壘的演員,來自外陸的星兵,流浪者信徒。\n\n他們每一個人都是力挽狂瀾的存在,高塔花了很大的力氣才收集到他們,請各位測試著小心控制。\n\n本測試旨在提前發現SPS大陸所面臨的威脅,同時製造出先進的反災難士兵。記住,你們的責任重大。 + +infos.newdocument.story_guide.sintro.title=已下內容為加密內容--裡世界 +infos.newdocument.story_guide.sintro.body=SPS大陸並不是這個球體上唯一的陸地,或者說,我們只能觀測到這個大陸,看不見其它陸地。\n\n在SPS大陸的背面,有一塊兒叫SDS的大陸,它正好和SPS大陸相反。 + diff --git a/resources/com/hmdzl/spspd/messages/misc/misc_zh.properties b/resources/com/hmdzl/spspd/messages/misc/misc_zh.properties index 94461c2a..ad6435a6 100644 --- a/resources/com/hmdzl/spspd/messages/misc/misc_zh.properties +++ b/resources/com/hmdzl/spspd/messages/misc/misc_zh.properties @@ -74,17 +74,17 @@ badges$badge.egg_break_2=召唤3个宠物! badges$badge.egg_break_3=召唤5个宠物! challenges.item_phobia=恐物幻觉 -challenges.item_phobia_desc=你感觉你的卷轴和药水都不能使用。\n\n-使用药水花费额外回合。\n-使用卷轴将受到伤害并被沉默。\n-开始时获得1000金币。 +challenges.item_phobia_desc=你感觉你的卷轴和药水都不能使用。\n\n-使用药水花费额外回合。\n-使用卷轴将受到伤害并被沉默。\n-开始时获得金币。 challenges.listless=精神萎靡 challenges.listless_desc=你感觉浑身无力。\n\n-升级获得最大生命值减少。\n-开始时获得根骨药水和蜂皇浆。 challenges.nightmare_virus=梦魇病毒 challenges.nightmare_virus_desc=恐怖的病毒感染了所有的生物。\n\n-怪物死亡时生成病毒体。\n-开始时获得复活十字架。 challenges.energy_lost=能量流失 -challenges.energy_lost_desc=大量的能量转化为热能散发。\n\n-食物提供的能量大幅度减少。\n-法杖最大充能上限减少。\n-开始时获得大饼。 +challenges.energy_lost_desc=大量的能量转化为热能散发。\n\n-食物提供的能量大幅度减少。\n-法杖最大充能上限减少。\n-开始时获得食物。 challenges.dew_rejection=排异露珠 -challenges.dew_rejection_desc=露珠之神并不喜欢你。\n\n-露珠掉落减少。\n-露珠花费增加。\n-开始时获得2集露草之种。 +challenges.dew_rejection_desc=露珠之神并不喜欢你。\n\n-露珠掉落减少。\n-露珠花费增加。\n-开始时获得集露草之种。 challenges.darkness=没入黑暗 -challenges.darkness_desc=黑暗吞噬了周围的环境。 \n\n-无法主动记录地图。\n-开始时获得2探地卷轴 +challenges.darkness_desc=黑暗吞噬了周围的环境。 \n\n-无法主动记录地图。\n-开始时获得探地卷轴 challenges.abrasion=严重磨损 challenges.abrasion_desc=武器上的锈迹明显了起来。\n\n-常规武器有耐久度限制。用完即刻报废。\n-开始时获得升级卷轴和注魔卷轴。 challenges.test_time=测试时间 @@ -97,12 +97,14 @@ skins.second=万圣逃亡 skins.third=年兽猎人 skins.fourth=奇迹试验 skins.fifth=幻想之旅 +skins.sixth=复刻潮流 skins.normal_desc=经典的像素地牢皮肤,包括战士,法师,盗贼,猎手,演员,星兵,信徒。\n-开始时获得新手宠物包。 skins.first_desc=2019年暑期的英雄皮肤,包括格斗家,探险者,忍者,女仆长,游戏主播,水管工,建筑工。\n-开始时用更加专业的道具替换原有道具。\n-格斗家习得升龙拳。\n-探险者发现彩虹大炮。\n-忍者成为传奇。\n-女仆长练习飞刀。\n-游戏主播开挂。\n-水管工顶砖块。\n-建筑工拿矿镐。 -skins.second_desc=怪物皮肤,包括恶魔,豺狼,亡灵,马人,史莱姆,机甲,星灵。\n-开始时获得独有的属性值。\n-恶魔火焰攻击。\n-豺狼快速充能。\n-亡灵潜行牛逼。\n-马人跑得飞快。\n-史莱姆再生恢复。\n-机甲护甲成长。\n-星灵无视防御。 +skins.second_desc=怪物皮肤,包括恶魔,豺狼,亡灵,马人,史莱姆,机甲,星灵。\n-开始时获得独有的属性值。\n-恶魔火焰攻击。\n-豺狼快速充能。\n-亡灵潜行牛逼。\n-马人跑得飞快。\n-史莱姆再生恢复,水体隐身。\n-机甲护甲成长,身为武器。\n-星灵无视防御。 skins.third_desc=2020年春节皮肤,包括重装,司仪,武者,弩手,舞狮,医疗,行商。\n-失去神圣护盾和鞋子,获得猎杀工具包和一个额外的专属道具。\n-重装有盾牌和头盔。\n-司仪有烧瓶和面具。\n-武者有斗篷和图腾。\n-弩手有弓箭和镖袋。\n-舞狮有铁铲和舞谱。\n-医疗有电枪和血包。\n-行商有信盒和水晶 skins.fourth_desc=复活节奇迹皮肤,包括测试员,精灵,逃犯,侦探,领主,警官,赌徒。\n-获得一条独特的双面状态。\n-测试员拥有测验点数,每当他升级时他都会失去一件装备着的装备,并获得其等级的试验点数。其获得的金币数提升。 \n-精灵获得魔法条。没有魔法时将无法使用法杖,但当有魔法时使用法杖造成的伤害将提升。\n-逃犯拥有声望点数。每次逃犯受到的攻击伤害都会降低,但是会损失一定量的金币,并获得相应的点数。 \n-侦探拥有疯狂值。每次受到伤害都会提升疯狂值,并在疯狂值到达一定值时获得一条随机的负面buff,并提升造成的伤害。 \n-领主拥有人气点数。人气点数会随着游戏的进程逐渐增加,并提供额外的近战输出。但是人气点数越高,受到的伤害就越高,并且每天都会损失一定金币。\n-警官拥有纳米无人机点数。每点无人机点数每回合都回对周围敌人造成伤害,但会间歇性吞噬背包中的非重要道具。 \n-赌徒拥有天命点数。天命点数会随时改变并赋予不同效果,但其会使攻击输出降低。 skins.fifth_desc=完全随机的的幻想皮肤,包括战士,法师,盗贼,猎手,演员,星兵,信徒。\n-完全随机的开局,且不会有护甲生成。 +skins.sixth_desc=复刻某个皮肤特性,但是用全新的图像来代替,包括格斗家,战士,武士,星兵,领主,机甲,修士。\n-复刻暑假特典的格斗家。\n-复刻经典皮肤的战士。\n-复刻年兽猎人的武者。\n-复刻经典皮肤的星兵。\n-复刻奇迹试验的领主。领主拥有实验体点数,每次升级都会提供一批实验体以供消耗。但是当其前进至旧楼层时,他都会损失部分实验体。若实验体不足,则以生命上限代替。\n-复刻万圣逃亡的机甲。\n-复刻经典皮肤的修士 skins.info=不同的皮肤将提供不同的初始物品 skins.yes=是的 skins.no=不是 @@ -133,9 +135,35 @@ resultdescriptions.ooze=溶于强酸 resultdescriptions.fall=摔至肉酱 resultdescriptions.cheat=作弊至死。拜托你很弱诶 resultdescriptions.countdown=爆体而亡 +resultdescriptions.lose=探险失败 resultdescriptions.win=获得护符 resultdescriptions.win2=逃离试验? journal$feature.memory_fire=记忆之火 +infos.newdocument.story_guide.title=SPS大陆介绍 +infos.newdocument.story_guide.intro.title=基础介绍 +infos.newdocument.story_guide.intro.body=你好,欢迎来到高塔压力测试1.0,我是椰子。\n\n你正在阅读这本书是SPS大陆简介!这本书包含目前SPS大陆上的各种情况和危机,在参与测试前请详细查看。\n\n这只是个测试,所有战斗均有你控制的角色完成,所以你不用担心身体受到任何伤害。但是,一些过激的举动可能激活角色的睡眠思想,为了测试安全,请小心操控。\n\n高塔会为各位测试员准备丰厚的奖励,所以:\n开始测试吧! +infos.newdocument.story_guide.tower.title=高塔 +infos.newdocument.story_guide.tower.body=我们高塔SPS大陆上最强大的阵营,位于SPS大陆中央。\n\n虽然控制范围不大,但是我们通过魔法和科技的手段,扩大了空间面积,并建造了各种环境和生态。\n\n每隔一段时间我们就会向SPS的其他集团招募学员和志愿者,并为他们提供丰富的酬劳。\n\n我们为测试者模拟了高塔内部的各种武器,魔法,科技,不同时代的武器都有。\n\n(高---摧毁,---存放的---失踪) +infos.newdocument.story_guide.def.title=壁垒 +infos.newdocument.story_guide.def.body=壁垒的强大仅次于高塔。\n\n壁垒盘踞于SPS大陆西北方,占据SPS大陆大部分的面积,并控制外部的部分海洋。基于辽阔的占有面积,壁垒内部基本包含了SPS大陆里面所有的环境类型和生物类型\n\n同时壁垒内部的种族关系十分融洽,不同信仰的生物也能正常相处。\n\n(我不相信壁垒内部是铁板一块。壁垒的 黑暗下水道 事件到目前都没有公布调查结果。我们必须预防灾难的发生) +infos.newdocument.story_guide.palace.title=宫殿 +infos.newdocument.story_guide.palace.body=宫殿位于SPS大陆西北方,建造在西北山脉上。\n\n宫殿阵营商业十分发达,其所在的山脉中也蕴含大量的宝藏和遗迹。但大部分资源被宫殿高层垄断,所以宫殿贫富差距严重,家族众多。\n\n我们曾经在西北山脉上挖掘出一个奇怪的洞穴,里面会突然出现一些我们从未见过的东西和怪物。根据高塔与宫殿的协议,我们已经派专员控制了那里。\n\n多利亚小镇也是一个不错的旅游地点,希望你们能在那放松一下,以测试的形式。 +infos.newdocument.story_guide.ruins.title=遗迹 +infos.newdocument.story_guide.ruins.body=遗迹位于SPS大陆东南部,其中有大片的森林和湖泊,并藏着隐藏区域。\n\n遗迹也给SPS大陆提供了足够的食物。\n\n也许我们需要一些遗迹的文化氛围,那里有一些传统的节日。\n\n我们怀疑有一片墓穴潜藏在遗迹内,最近那里频繁出现死灵的目击报告。 +infos.newdocument.story_guide.horn.title=邪角 +infos.newdocument.story_guide.horn.body=邪角位于SPS大陆南方。\n\n邪角有SPS大陆上最大的监狱和角斗场。\n\n如果想试试自己的实力,可以去那里试试看。\n\n(最近监狱内部有尸体消失的情况,结合遗迹的死灵目击报告,我们应该小心) +infos.newdocument.story_guide.tribe.title=部落 +infos.newdocument.story_guide.tribe.body=部落位于邪角,高塔,壁垒之间,作为缓冲地带存在。\n\n矮人城建立在部落内部。\n\n据说有时部落地下会传来不正常的声音,应当提高警惕。\n\n(星空很怪,是要发生什么了吗) +infos.newdocument.story_guide.homeless.title=流浪者 +infos.newdocument.story_guide.homeless.body=没什么好说的,只是流浪者。\n\n大部分流浪者会游荡在非控制区。\n\n(流浪者。) +infos.newdocument.story_guide.overseas.title=外陆 +infos.newdocument.story_guide.overseas.body=我们没法探测到海外的情况,但确实有东西从外陆而来。\n\n壁垒替我们解决了一部分外陆问题,但依然有漏网之鱼。\n\n部分星灵犯人称他们来自外陆,但是他们无法描述外陆的信息。\n\n(说起来外陆应该有人类生存,但目前我们依然没有报告) +infos.newdocument.story_guide.tester.title=控制角色 +infos.newdocument.story_guide.tester.body=你所操控的角色是目前SPS大陆上为数不多的精英,他们的所有的战斗记忆连同他们的躯体被保存在高塔之中。\n\n来自邪角的战士,来自塔楼的法师,来自宫殿的盗贼,来自遗迹的猎手,来自壁垒的演员,来自外陆的星兵,来自流浪者的信徒。\n\n他们每一个人都是力挽狂澜的存在,高塔花了很大力气才收集到他们,请各位测试者小心控制。\n\n本测试旨在提前发现SPS大陆所面临的威胁,同时制造出先进的反灾难士兵。记住,你们的责任重大。 + +infos.newdocument.story_guide.sintro.title=已下内容为加密内容--里世界 +infos.newdocument.story_guide.sintro.body=SPS大陆并不是这个球体上唯一的大陆,或者说,这只是因为我们仅能观测到这个大陆。\n\n在SPS大陆背面,我称之为SDS大陆,它们可以说是SPS大陆的反面。 + diff --git a/resources/com/hmdzl/spspd/messages/scenes/scenes.properties b/resources/com/hmdzl/spspd/messages/scenes/scenes.properties index 8302d61e..4471ea1a 100644 --- a/resources/com/hmdzl/spspd/messages/scenes/scenes.properties +++ b/resources/com/hmdzl/spspd/messages/scenes/scenes.properties @@ -21,6 +21,7 @@ scenes.gamescene.water=You hear water splashing around you. scenes.gamescene.grass=The smell of vegetation is thick in the air. scenes.gamescene.dark=You can hear enemies moving in the darkness... scenes.gamescene.secrets=The atmosphere hints that this floor hides many secrets. +scenes.gamescene.spfloor=You feel a lot of things staring at you. scenes.gamescene.dont_know=You don't know what is there. scenes.interlevelscene$mode.descend=Descending... @@ -77,6 +78,6 @@ scenes.titlescene.badges=Badges scenes.titlescene.about=About scenes.welcomescene.title=SPecial Surprise Pixel Dungeon -scenes.welcomescene.new_things=Welcome to SPS-PD world. Now it is time to celebrate 2020 Birthday!!! +scenes.welcomescene.new_things=Welcome to SPS-PD world. Now it is time to celebrate 2021 Birthday!!! scenes.welcomescene.continue=OK! diff --git a/resources/com/hmdzl/spspd/messages/scenes/scenes_tzh.properties b/resources/com/hmdzl/spspd/messages/scenes/scenes_tzh.properties index 2ff3ca9d..a8c9a4e2 100644 --- a/resources/com/hmdzl/spspd/messages/scenes/scenes_tzh.properties +++ b/resources/com/hmdzl/spspd/messages/scenes/scenes_tzh.properties @@ -21,6 +21,7 @@ scenes.gamescene.water=你聽見周圍水花鋪灑的聲音。 scenes.gamescene.grass=空氣中彌漫著濃郁的植物清香。 scenes.gamescene.dark=你依稀聽到敵人在黑暗中湧動。 scenes.gamescene.secrets=詭秘的氣氛正暗示這層隱藏著眾多秘密。 +scenes.gamescene.spfloor=你感覺這層有點不對勁。 scenes.gamescene.dont_know=你不清楚那裏有什麼。 scenes.interlevelscene$mode.descend=下樓中… @@ -77,6 +78,6 @@ scenes.titlescene.badges=成就 scenes.titlescene.about=關於 scenes.welcomescene.title=特別驚喜像素地牢(發芽改) -scenes.welcomescene.new_things=好了,生日又到了。是時候慶祝國慶,中秋和​​生日了。這次更新加強了所有的暑期皮膚,以及許多的細節。這裡包含大量的彩蛋,你可以和以前一樣去打敗強大的敵人,但你也可以用其他方式來獲得勝利。祝你好運。 +scenes.welcomescene.new_things=好了,歡送2020,喜迎2021。這次更新加強了春節的年獸獵人皮膚,自己額外的復刻皮膚。這裡包含著大量的彩蛋,你可以像以前一樣去打敗強大的敵人,但你也可以用其他方式來獲得勝利。祝你好運! scenes.welcomescene.continue=我懂了 diff --git a/resources/com/hmdzl/spspd/messages/scenes/scenes_zh.properties b/resources/com/hmdzl/spspd/messages/scenes/scenes_zh.properties index ae496557..19efc636 100644 --- a/resources/com/hmdzl/spspd/messages/scenes/scenes_zh.properties +++ b/resources/com/hmdzl/spspd/messages/scenes/scenes_zh.properties @@ -21,6 +21,7 @@ scenes.gamescene.water=你听见周围水花铺洒的声音。 scenes.gamescene.grass=空气中弥漫着浓郁的植物清香。 scenes.gamescene.dark=你依稀听到敌人在黑暗中涌动。 scenes.gamescene.secrets=诡秘的气氛正暗示这层隐藏着众多秘密。 +scenes.gamescene.spfloor=你感觉这层有点不对劲。 scenes.gamescene.dont_know=你不清楚那里有什么。 scenes.interlevelscene$mode.descend=下楼中… @@ -77,6 +78,6 @@ scenes.titlescene.badges=成就 scenes.titlescene.about=关于 scenes.welcomescene.title=特别惊喜像素地牢(发芽改) -scenes.welcomescene.new_things=好了,生日又到了。是时候庆祝国庆,中秋和生日了。这次更新加强了所有的暑期皮肤,以及许多的细节。这里包含大量的彩蛋,你可以和以前一样去打败强大的敌人,但你也可以用其他方式来获得胜利。祝你好运。 +scenes.welcomescene.new_things=好了,欢送2020,喜迎2021。这次更新加强了春节的年兽猎人皮肤,以及额外的复刻皮肤。这里包含大量的彩蛋,你可以和以前一样去打败强大的敌人,但你也可以用其他方式来获得胜利。祝你好运。 scenes.welcomescene.continue=我懂了 diff --git a/resources/com/hmdzl/spspd/messages/windows/windows.properties b/resources/com/hmdzl/spspd/messages/windows/windows.properties index 5c91a395..1cefb236 100644 --- a/resources/com/hmdzl/spspd/messages/windows/windows.properties +++ b/resources/com/hmdzl/spspd/messages/windows/windows.properties @@ -137,9 +137,9 @@ windows.wndsadghost.rat=Thank you, that horrid rat is slain and I can finally re windows.wndsadghost.gnoll=Thank you, that scheming gnoll is slain and I can finally rest... I wonder what twisted magic made it so smart... windows.wndsadghost.crab=Thank you, that giant crab is slain and I can finally rest... I wonder what twisted magic allowed it to live so long... windows.wndsadghost.give_item=\n\nPlease take one of these items, they are useless to me now... Maybe they will help you in your journey...\n\nAlso... There is an item lost in this dungeon that is very dear to me... If you ever... find my... rose...... -windows.wndsadghost.weapon=Ghost's weapon -windows.wndsadghost.armor=Ghost's armor -windows.wndsadghost.pet=Ghost's pet +windows.wndsadghost.weapon=Ghost's Artifact +windows.wndsadghost.armor=Ghost's Ring +windows.wndsadghost.pet=Ghost's Pet windows.wndsadghost.farewell=Farewell, adventurer! windows.wndsettings.zoom_out=- @@ -238,6 +238,13 @@ windows.wndchallengebook.room5=Courage Trial windows.wndchallengebook.room6=Power Trial windows.wndchallengebook.room7=Wisdom Trial +windows.wndascend.message=Are you sure you want to leave? Your journey will end. +windows.wndascend.ok=Sure + +windows.wndotilukemessage.message=Stranger, I can't continue to seal ZOT. The insurance scheme I made is gradually failing. I hope you can save all this. Go to the right, destroy the mage image I made, enter the core and kill ZOT forever! +windows.wndotilukemessage.ok=OK + + windows.wndhotel.message=Do you want stay for one night in here? It only cost 100 golds. windows.wndhotel.buy=Yes, I am. windows.wndhotel.more_gold=You don't have enough money, come next time. @@ -279,7 +286,7 @@ windows.wndmix.combine=Combine windows.wndmix.cancel=Cancel windows.wndaflyinfo.title=Hungry Abbey. -windows.wndaflyinfo.text=Abbey is hungry, but I don't have any food now. Can you give me a ration, meat and fruit? I'll give you one after I finish cooking. +windows.wndaflyinfo.text=Abbey is hungry, but I don't have any food now. Can you give me a _ration_, _meat_ and _fruit_? I'll give you one after I finish cooking. don't give me other things, it can't become a _armor_. windows.wndaflyinfo.select=Select a food windows.wndaflyinfo.combine=Combine windows.wndaflyinfo.cancel=Cancel @@ -303,3 +310,7 @@ windows.wndgameinprogress.erase_warn_no=No windows.wndsavegame.title=Save this game windows.wndsavegame.start=Yes + +windows.wnddocument.notes=RECORD +windows.wnddocument.items=LOG +windows.wnddocument.mobs=ENEMY diff --git a/resources/com/hmdzl/spspd/messages/windows/windows_tzh.properties b/resources/com/hmdzl/spspd/messages/windows/windows_tzh.properties index 5cad9fb7..c27ea9f0 100644 --- a/resources/com/hmdzl/spspd/messages/windows/windows_tzh.properties +++ b/resources/com/hmdzl/spspd/messages/windows/windows_tzh.properties @@ -137,9 +137,9 @@ windows.wndsadghost.rat=謝謝你,那個可怕的老鼠被殺,我也終於 windows.wndsadghost.gnoll=謝謝你,那個詭計多端的豺狼被殺,我也終於可以安息了……不知道究竟是什麽樣畸形的魔法使它如此詭詐… windows.wndsadghost.crab=謝謝你,那只巨蟹被殺,我也終於可以安息了……不知道究竟是什麽樣畸形的魔法能讓它活得那麽長…… windows.wndsadghost.give_item=\n\n請從這些東西裏拿ㄧ件吧,現在對我來說都沒用了…也許他們在你的旅程裏能起到作用…\n\n對了,在這個地牢裏還有ㄧ樣物品,對我來說非常珍貴…如果你能…找到我的…玫瑰…… -windows.wndsadghost.weapon=幽靈的武器 -windows.wndsadghost.armor=幽靈的盔甲 -windows.wndsadghost.pet=幽靈的寵物 +windows.wndsadghost.weapon=幽靈的飾品 +windows.wndsadghost.armor=幽靈的信物 +windows.wndsadghost.pet=幽靈的玩伴 windows.wndsadghost.farewell=ㄧ路順風,冒險者! windows.wndsettings.zoom_out=- @@ -238,6 +238,13 @@ windows.wndchallengebook.room5=勇氣試煉 windows.wndchallengebook.room6=力量試煉 windows.wndchallengebook.room7=智慧試煉 +windows.wndascend.message=你確定要離開嗎?你的本次旅程將會結束… +windows.wndascend.ok=當然 + +windows.wndotilukemessage.message=後來者,我無法繼續壓制ZOT了。我所製造的保險方案正在逐漸失效。我把拯救這一切的希望交給你了。走右邊,消滅我製作的法師像,進入核心並永遠壓制住ZOT! +windows.wndotilukemessage.ok=好吧 + + windows.wndhotel.message=想住這個旅館的VIP房間嗎?ㄧ次100金幣 windows.wndhotel.buy=我要住 windows.wndhotel.more_gold=你的金幣不夠啊,下次再來吧。 @@ -279,7 +286,7 @@ windows.wndmix.combine=合成 windows.wndmix.cancel=取消 windows.wndaflyinfo.title=為了饑餓的阿比 -windows.wndaflyinfo.text=阿比餓了,但是我現在沒有食材。你能給我找ㄧ個乾糧,烤肉和漿果嗎?這樣我就可以給他們做吃的了。當然我也會把做好的吃的給你ㄧ份。別給我什麽奇怪的材料,我可能做出奇怪的東西,比如裝備什麽的。 +windows.wndaflyinfo.text=阿比餓了,但是我現在沒有食材。你能給我找一個_乾糧_,_烤肉_和_漿果_嗎?這樣我就可以給他們做吃的了。當然我也會把做好的美食分享給你一份。請別給我什麼奇怪的材料,不然我可能做出奇怪的東西,比如裝備什麼的。 windows.wndaflyinfo.select=選擇ㄧ件食材 windows.wndaflyinfo.combine=合成 windows.wndaflyinfo.cancel=取消 @@ -303,3 +310,7 @@ windows.wndgameinprogress.erase_warn_no=不,我要接著玩 windows.wndsavegame.title=保存遊戲 windows.wndsavegame.start=確定 + +windows.wnddocument.notes=記錄 +windows.wnddocument.items=圖鑒 +windows.wnddocument.mobs=敵人 diff --git a/resources/com/hmdzl/spspd/messages/windows/windows_zh.properties b/resources/com/hmdzl/spspd/messages/windows/windows_zh.properties index f7cd39ae..6b3185af 100644 --- a/resources/com/hmdzl/spspd/messages/windows/windows_zh.properties +++ b/resources/com/hmdzl/spspd/messages/windows/windows_zh.properties @@ -137,9 +137,9 @@ windows.wndsadghost.rat=谢谢你,那个可怕的老鼠被杀,我也终于 windows.wndsadghost.gnoll=谢谢你,那个诡计多端的豺狼被杀,我也终于可以安息了……不知道究竟是什么样畸形的魔法使它如此诡诈… windows.wndsadghost.crab=谢谢你,那只巨蟹被杀,我也终于可以安息了……不知道究竟是什么样畸形的魔法能让它活得那么长…… windows.wndsadghost.give_item=\n\n请从这些东西里拿一件吧,现在对我来说都没用了…也许他们在你的旅程里能起到作用…\n\n对了,在这个地牢里还有一样物品,对我来说非常珍贵…如果你能…找到我的…玫瑰…… -windows.wndsadghost.weapon=幽灵的武器 -windows.wndsadghost.armor=幽灵的盔甲 -windows.wndsadghost.pet=幽灵的宠物 +windows.wndsadghost.weapon=幽灵的饰品 +windows.wndsadghost.armor=幽灵的信物 +windows.wndsadghost.pet=幽灵的玩伴 windows.wndsadghost.farewell=一路顺风,冒险者! windows.wndsettings.zoom_out=- @@ -238,6 +238,13 @@ windows.wndchallengebook.room5=勇气试炼 windows.wndchallengebook.room6=力量试炼 windows.wndchallengebook.room7=智慧试炼 +windows.wndascend.message=你确定你要离开吗,你的本次旅程将会结束。 +windows.wndascend.ok=当然 + +windows.wndotilukemessage.message=后来者,我无法继续压制ZOT。我所制造的保险方案正在逐渐失效。我把拯救这一切的希望交给你了。走右边,消灭我制作的法师像,进入核心并永远压制ZOT! +windows.wndotilukemessage.ok=好吧 + + windows.wndhotel.message=想住这个旅馆的VIP房间吗?一次100金币 windows.wndhotel.buy=我要住 windows.wndhotel.more_gold=你的金币不够啊,下次再来吧。 @@ -279,7 +286,7 @@ windows.wndmix.combine=合成 windows.wndmix.cancel=取消 windows.wndaflyinfo.title=为了饥饿的阿比 -windows.wndaflyinfo.text=阿比饿了,但是我现在没有食材。你能给我找一个干粮,烤肉和浆果吗?这样我就可以给他们做吃的了。当然我也会把做好的吃的给你一份。别给我什么奇怪的材料,我可能做出奇怪的东西,比如装备什么的。 +windows.wndaflyinfo.text=阿比饿了,但是我现在没有食材。你能给我找一个_干粮_,_烤肉_和_浆果_吗?这样我就可以给他们做吃的了。当然我也会把做好的吃的给你一份。别给我什么奇怪的材料,我可能做出奇怪的东西,比如装备什么的。 windows.wndaflyinfo.select=选择一件食材 windows.wndaflyinfo.combine=合成 windows.wndaflyinfo.cancel=取消 @@ -302,4 +309,8 @@ windows.wndgameinprogress.erase_warn_yes=是,删除这个存档 windows.wndgameinprogress.erase_warn_no=不,我要接着玩 windows.wndsavegame.title=保存游戏 -windows.wndsavegame.start=确定 \ No newline at end of file +windows.wndsavegame.start=确定 + +windows.wnddocument.notes=记录 +windows.wnddocument.items=图鉴 +windows.wnddocument.mobs=敌人 \ No newline at end of file