Skip to content

Commit

Permalink
Version 0.3.0d
Browse files Browse the repository at this point in the history
CHARACTERS

- changed Wand skill attribute into Magic skill, which affects your accuracy with wands and power of some of the scrolls

- changed Detection attribute into Perception, which affects your chances to expose your enemy to counter attacks instead of your chances to prevent equipping a cursed item

- changed Magic power attribute into Willpower, which affects your chances to prevent equipping a cursed item instead of determining scroll's power

- Warrior now gets increased amount of hp only on every 6th level instead of every 3rd level

- Acolyte now gets decreased amount of hp only on every 6th level instead of every 3rd level

- shields now apply their armor class bonus only with 50% chance or on failed guard attempts

- shields now degrade and proc only when applying their bonus or when guarding

- debuffs now affect chance to apply shield's bonus AC instead of the shield's AC

- guard effectiveness is now affected by your base strength instead of excess strength

- hero's remains are now separated by difficulties

MOBS & BOSSES

- all enemies in the fifth chapter now count as magical (but not necessarily having body or mind immunity)

- third boss does not counts as magical, while still having body and mind immunity

- evil eyes now drop raw meat instead of cave scorpions

- fire elementals and evil eyes now only partially pierce target's armor instead of completely ignoring it

- imps now deal physical damage and don't have fire resistance anymore

- imps now will steal random amount of stackable items instead of the full stack

ITEMS & SHOPS

- ankhs now weaken curses on all of your items on activation

- waterskins now can be used to wash away caustic ooze and douze burning effct on self

- potions of Mending now heal 25% of health immediately

- base duration of the effect of potions of Mending decreased to 15 turns instead of 20

- base duration of effect of potions of Levitation increased to 20 turns (from 15 turns)

- first four shops will not sell same repair tools in stock

- first four shops will not have more than two of the same type of ammunition in stock

RANGED WEAPONS

- flintlock weapons now can be reloaded while moving

- fixed issue with flintlock weapons being almost unable to deal sneak attacks

- trying to shoot from a non-loaded flintlock weapon now will reload it instead of showing a warning

- increased durability of ranged weapons

- decreased price modifier when purchasing throwing weapons and ammunitions in shops

- rebalanced amount of throwing weapons and ammunitions when generated in a wrong chapter

WANDS & RINGS

- wands of Disintegration/Firebolt do not completely ignore target's armor class anymore

- wand of Entanglement is twice as effective now

- rings of Perception were renamed into rings of Awareness and now affect bonus damage from counter attacks instead of view distance

- rings of Energy were renamed into rings of Concentration and now increase mind resistance chance instead of enchantment's proc chance

- rings of Sorcery now affect enchantment's proc chance instead of wand's miscast/squeeze chance

- rings of Protection do not affect your mind and body resistance chance anymore

SCROLLS

- scrolls are now affected by your Magic skill instead of Willpower

- scrolls of Challenge will not affect passive animated statues 

- scrolls of Enchantment now can be used to transmute fully upgraded rings/wands into another ones

- scrolls of Torment are more powerful and reliable now, but their radius of effect is limited

- scrolls of Transmutation can be used on ammunition and throwing weapons

- scrolls of Transmutation should be way more useful now

GENERAL

- added confirmation window when trying to step on a revealed trap

- added confirmation window when trying to equip obviously cursed item

- added confirmation window when trying to drink water while your health is greater than 50%

- added new lore about winners of The Impossible Contest into the game ;)

BUGFIXES & MINOR TWEAKS

- fixed issue when explosions destroyed items which drop on the hero's death

- partial proguard activation

- improved title screen background

- improved Goo's sprite

- slightly improved sprite of ambitious imp NPC

- thunderstrikes will now occasionally hit in diagonal directions instead of cardinal

- slightly improved thunderstrike's visuals and visibility

- hopefully fixed issue with successive hits not stacking combo counter

- combo attacks now will apply their bonus only from the third hit

- fixed combo counter being visible through fog of war

- healing effect from the scroll of Sunlight cannot be resisted anymore

- being exposed to counter attacks now lasts exactly one turn instead of until the beginning of target's turn

- moved durability loss to hero's attack and defense procs

- slightly simplified durability loss logic

- cannot guard against ranged attacks without a shield anymore

- cannot guard against armor piercing opponents anymore

- game now indicates failed guard attempts

- missed attacks now interrupt hero's actions

- slightly changed character descriptions

- fixed issue with shopkeepers reacting to effects of scroll of Sunlight

- increased blink delay of succubi to 6 turns (from 5 turns)

- mobs will not drain health on successful guards

- adjusted bonus armor class from the Durability enchantment

- adjusted bonus weapon damage from the Tempered enchantment

- adjusted some of the item's descriptions

- fixed issue were unidentified rings were labeled as cursed in their descriptions

- wand of FIrebolt will not ignite non-flammable tiles anymore

- wand of Freezing now can affect chasm tiles

- fixed issue with wands of Phasing being able to teleport entities which are supposd to be immovable

- fixed a bug when falling into a chasm while having a DoT on your character

- fixed a bug where brewing a potion in a flooded alchemy lab crashed the game

- fixed a bug where enemies on the edge of the view sometimes were revealed to the player

- storage rooms now have their food in the main part and bonus item hidden behind the shelves

- treasury rooms will not be guaranteed to have a mimic chest all the time now (except in a fifth chapter)

- lightning traps will now occasionally hit in diagonal directions instead of cardinal

- reworked the final floor (mostly to remove that door-shaped red herring)

- reworked dead end floor (for the same reasons as above)

- increased width of some of the description windows when in landscape mode

- fixed issue where shooting from a flintlock weapon alarmed targets around the targeted cell instead of shooter

- player can't use waterskins on full health anymore

- slightly improved visuals of Thunderstorm cloud

- added scrolling indicators to some of the lists
  • Loading branch information
ConsideredHamster committed Sep 17, 2017
1 parent 14ff051 commit e795418
Show file tree
Hide file tree
Showing 169 changed files with 3,490 additions and 2,823 deletions.
22 changes: 12 additions & 10 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,23 @@ android {
applicationId "com.consideredhamster.yetanotherpixeldungeon"
minSdkVersion 9
targetSdkVersion 21
versionCode 303
versionName '0.3.0c'
versionCode 304
versionName '0.3.0d'
archivesBaseName = "yapd-$versionName"
}

buildTypes {
// release {
// shrinkResources true
// minifyEnabled true
// }
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}

// debug {
// shrinkResources true
// minifyEnabled true
// }
debug {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}


Expand Down
4 changes: 4 additions & 0 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# retain these to support class references and meaningful stack traces
-keep class com.watabou.** { *; }
-keep class com.consideredhamster.yetanotherpixeldungeon.** { *; }
-keepattributes SourceFile,LineNumberTable
Binary file modified app/src/main/assets/arcs1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/assets/arcs2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/assets/icons.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/assets/mob_boss_goo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/assets/npc_imp.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import java.io.OutputStream;

import com.consideredhamster.yetanotherpixeldungeon.items.wands.Wand;
import com.consideredhamster.yetanotherpixeldungeon.utils.Utils;
import com.watabou.noosa.Game;
import com.consideredhamster.yetanotherpixeldungeon.items.misc.Gold;
import com.consideredhamster.yetanotherpixeldungeon.items.Item;
Expand All @@ -34,8 +35,8 @@

public class Bones {

private static final String BONES_FILE = "bones.dat";
private static final String BONES_FILE = "bones_%d.dat";

private static final String LEVEL = "level";
private static final String ITEM = "item";

Expand Down Expand Up @@ -74,11 +75,13 @@ public static void leave() {
depth = Dungeon.depth;

Bundle bundle = new Bundle();
bundle.put( LEVEL, depth );
bundle.put( LEVEL, Statistics.deepestFloor );
bundle.put( ITEM, item );


String bonesFile = Utils.format( BONES_FILE, Dungeon.difficulty );

try {
OutputStream output = Game.instance.openFileOutput( BONES_FILE, Game.MODE_PRIVATE );
OutputStream output = Game.instance.openFileOutput( bonesFile, Game.MODE_PRIVATE );
Bundle.write( bundle, output );
output.close();
} catch (IOException e) {
Expand All @@ -87,10 +90,14 @@ public static void leave() {
}

public static Item get() {

String bonesFile = Utils.format( BONES_FILE, Dungeon.difficulty );

if (depth == -1) {

try {
InputStream input = Game.instance.openFileInput( BONES_FILE ) ;

InputStream input = Game.instance.openFileInput( bonesFile ) ;
Bundle bundle = Bundle.read( input );
input.close();

Expand All @@ -105,7 +112,7 @@ public static Item get() {

} else {
if (depth == Dungeon.depth) {
Game.instance.deleteFile( BONES_FILE );
Game.instance.deleteFile( bonesFile );
depth = 0;

// if (!item.stackable) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,24 +36,24 @@ public class Difficulties {

public static final String[] ABOUT = {

"- You receive less damage\n" +
"- Mob's health is minimized\n" +
"- Bosses have 80% health\n" +
"- Prevents earning any badges!\n",
"- Player character receives less damage\n" +
"- Bosses have 20% less health\n" +
"- Mobs have their health minimized\n" +
"- Can't earn any badges on this difficulty!\n",

"- You receive normal damage\n" +
"- Mob's health is randomized\n" +
"- Bosses have 100% health\n"+
"- Nothing special here!\n",
"- Player character receives normal damage\n" +
"- Bosses have normal health\n"+
"- Mobs have their health randomized\n" +
"- This difficulty has no special features\n",

"- You receive normal damage\n" +
"- Mob's health is maximized\n" +
"- Bosses have 120% health\n"+
"- Player character receives normal damage\n" +
"- Bosses have 20% more health\n"+
"- Mobs have their health maximized\n" +
"- Beat the game on Normal to unlock!\n",

"- You receive more damage\n" +
"- Mob's health is maximized\n" +
"- Bosses have 150% health\n"+
"- Player character receives more damage\n" +
"- Bosses have 50% more health\n"+
"- Mobs have their health maximized\n" +
"- Beat the game on Hardcore to unlock!\n",
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import java.util.Arrays;
import java.util.HashSet;

import com.consideredhamster.yetanotherpixeldungeon.levels.painters.ShopPainter;
import com.watabou.noosa.Game;
import com.consideredhamster.yetanotherpixeldungeon.actors.Actor;
import com.consideredhamster.yetanotherpixeldungeon.actors.Char;
Expand Down Expand Up @@ -116,7 +117,7 @@ public static void init() {

Actor.clear();

PathFinder.setMapSize(Level.WIDTH, Level.HEIGHT);
PathFinder.setMapSize( Level.WIDTH, Level.HEIGHT );

Scroll.initLabels();
Potion.initColors();
Expand Down Expand Up @@ -153,6 +154,8 @@ public static void init() {

Room.shuffleTypes();

ShopPainter.initAssortment();

QuickSlot.quickslotValue_1 = null;
QuickSlot.quickslotValue_2 = null;
QuickSlot.quickslotValue_3 = null;
Expand Down Expand Up @@ -508,6 +511,8 @@ public static void saveGame( String fileName ) throws IOException {
bundle.put( QUESTS, quests );

Room.storeRoomsInBundle( bundle );

ShopPainter.saveAssortment( bundle );

Statistics.storeInBundle( bundle );
Journal.storeInBundle( bundle );
Expand Down Expand Up @@ -626,6 +631,8 @@ public static void loadGame( String fileName, boolean fullLoad ) throws IOExcept
}

Room.restoreRoomsFromBundle( bundle );

ShopPainter.loadAssortment( bundle );
}

Bundle badges = bundle.getBundle( BADGES );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import com.consideredhamster.yetanotherpixeldungeon.actors.hero.HeroClass;
import com.consideredhamster.yetanotherpixeldungeon.actors.mobs.Bestiary;
import com.consideredhamster.yetanotherpixeldungeon.actors.mobs.DwarfMonk;
import com.consideredhamster.yetanotherpixeldungeon.actors.mobs.DwarvenKing;
import com.consideredhamster.yetanotherpixeldungeon.actors.mobs.GnollBrute;
import com.consideredhamster.yetanotherpixeldungeon.actors.mobs.Golem;
import com.consideredhamster.yetanotherpixeldungeon.actors.mobs.Mimic;
Expand All @@ -50,7 +51,8 @@ public abstract class ResultDescriptions {

public static String generateResult( Object killedBy, DamageType killedWith ) {

return Utils.capitalize( killedBy == Dungeon.hero ? killedWith( killedBy, killedWith ) + ( Dungeon.hero.heroClass == HeroClass.ACOLYTE ? " herself" : " himself" ):
return Utils.capitalize( killedBy == Dungeon.hero ? killedWith( killedBy, killedWith ) +
( Dungeon.hero.heroClass == HeroClass.ACOLYTE ? " herself" : " himself" ) :
killedWith( killedBy, killedWith ) + " by " + killedBy( killedBy ) );
}

Expand All @@ -70,33 +72,41 @@ private static String killedWith( Object killedBy, DamageType killedWith ) {

Mob mob = (Mob)killedBy;

if( Bestiary.isBoss( mob ) || mob instanceof Rat) {
if( Bestiary.isBoss( mob ) || mob instanceof Rat ) {

result = "defeated";

} else if ( mob instanceof GnollBrute) {
} else if ( mob instanceof GnollBrute ) {

result = "murderized";

} else if ( mob instanceof DwarfMonk) {
} else if ( mob instanceof DwarfMonk ) {

result = "facefisted";

} else if ( mob instanceof Golem) {
} else if ( mob instanceof Golem ) {

result = "squashed flat";

} else if ( mob instanceof Piranha) {
} else if ( mob instanceof Piranha ) {

result = "eaten";

} else if ( mob instanceof Mimic) {
} else if ( mob instanceof Mimic ) {

result = "ambushed";

}

} else if( killedBy instanceof BoulderTrap) {
} else if( killedBy instanceof DwarvenKing.BoneExplosion ) {

result = "boned";

} if( killedBy instanceof DwarvenKing.KnockBack ) {

result = "crushed";

} if( killedBy instanceof BoulderTrap ) {

result = "crushed";

Expand Down Expand Up @@ -130,32 +140,36 @@ private static String killedBy( Object killedBy ) {

if( killedBy instanceof Mob ) {
Mob mob = ((Mob)killedBy);
result = ( !Bestiary.isBoss( mob ) ? "a " : "" ) + mob.name;
} else if( killedBy instanceof Blob) {
result = ( !Bestiary.isBoss( mob ) ? Utils.indefinite( mob.name ) : mob.name );
} else if( killedBy instanceof Blob ) {
Blob blob = ((Blob)killedBy);
result = "a " + blob.name;
} else if( killedBy instanceof Weapon.Enchantment) {
result = Utils.indefinite( blob.name );
} else if( killedBy instanceof Weapon.Enchantment ) {
result = "cursed weapon";
} else if( killedBy instanceof Armour.Glyph) {
} else if( killedBy instanceof Armour.Glyph ) {
result = "cursed armor";
} else if( killedBy instanceof Buff) {
} else if( killedBy instanceof Buff ) {
if( killedBy instanceof Bleeding) {
result = "excessive bleeding";
} else if( killedBy instanceof Poison) {
} else if( killedBy instanceof Poison ) {
result = "poison";
} else if( killedBy instanceof Hunger) {
} else if( killedBy instanceof Hunger ) {
result = "starvation";
} else if( killedBy instanceof Burning) {
} else if( killedBy instanceof Burning ) {
result = "being burned alive";
} else if( killedBy instanceof Ooze) {
} else if( killedBy instanceof Ooze ) {
result = "caustic ooze";
}
} else if( killedBy instanceof Trap) {
} else if( killedBy instanceof Trap ) {
result = "a trap";
} else if( killedBy instanceof Chasm) {
} else if( killedBy instanceof Chasm ) {
result = "gravity";

} else if( killedBy instanceof DwarvenKing.BoneExplosion ) {
result = "an explosion";
} else if( killedBy instanceof DwarvenKing.KnockBack ) {
result = "knockback";
}

return result;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,14 @@ public YetAnotherPixelDungeon() {
com.consideredhamster.yetanotherpixeldungeon.items.rings.RingOfDurability.class,
"com.consideredhamster.yetanotherpixeldungeon.items.rings.RingOfHaste" );

com.watabou.utils.Bundle.addAlias(
com.consideredhamster.yetanotherpixeldungeon.items.rings.RingOfConcentration.class,
"com.consideredhamster.yetanotherpixeldungeon.items.rings.RingOfEnergy" );

com.watabou.utils.Bundle.addAlias(
com.consideredhamster.yetanotherpixeldungeon.items.rings.RingOfAwareness.class,
"com.consideredhamster.yetanotherpixeldungeon.items.rings.RingOfPerception" );

}

@Override
Expand All @@ -60,6 +68,8 @@ protected void onCreate( Bundle savedInstanceState ) {
if (Preferences.INSTANCE.getBoolean( Preferences.KEY_LANDSCAPE, false ) != landscape) {
landscape( !landscape );
}

Badges.loadGlobal();

Music.INSTANCE.enable( music() );
Sample.INSTANCE.enable( soundFx() );
Expand Down
Loading

0 comments on commit e795418

Please sign in to comment.