Giter Site home page Giter Site logo

00-evan / shattered-pixel-dungeon Goto Github PK

View Code? Open in Web Editor NEW
4.3K 4.3K 1.0K 146.96 MB

Shattered Pixel Dungeon is an open-source traditional roguelike dungeon crawler with randomized levels and enemies, and hundreds of items to collect and use. It's based on the source code of Pixel Dungeon, by Watabou.

Home Page: https://shatteredpixel.com/shatteredpd/

License: GNU General Public License v3.0

Java 99.97% Shell 0.03%
android game game-development ios java libgdx

shattered-pixel-dungeon's People

Contributors

00-evan avatar watabou avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

shattered-pixel-dungeon's Issues

DriedRose adding Petal

I don't know if it is a real issue, but today I got the Dried Rose lvl 7 by throwing a lvl 7 Horn of Plenty in a Well of Transmutation and after that I still found round about 7 Petals, so this should maybe be reworked, because after upgrading the Dried Rose to lvl 10, one can do nothing with the other Petals you find. You can't even pick it up and sell in a Shop later.
Another point is, that if the Dried Rose is fully upgraded and you find a Petal and try to pick it up, the message: "You have no rose to add this petal to." is printed.
Maybe the method public boolean doPickUp( Hero hero ) should look like this:

public boolean doPickUp( Hero hero ) {
    DriedRose rose = hero.belongings.getItem( DriedRose.class );

    if (rose != null && rose.level < rose.levelCap){

        rose.upgrade();
        if (rose.level == rose.levelCap) {
            GLog.p("The rose is completed!");
            Sample.INSTANCE.play( Assets.SND_GHOST );
            GLog.n("sad ghost: \"Thank you...\"");
        } else
            GLog.i("You add the petal to the rose.");

            Sample.INSTANCE.play( Assets.SND_DEWDROP );
            hero.spendAndNext(TIME_TO_PICK_UP);
            return true;

// this is what I would add to make clear why you can’t pick the petal up 
// maybe GLog.i() is not the best way to show this message
    } else if (rose != null && rose.level == rose.levelCap){

            GLog.i("Your rose is already fully upgraded.");
            return false;

    } else {

        GLog.w("You have no rose to add this petal to.");
        return false;

    }
}

Staff imbued with Wand of Fireblast broken

Early Mage is difficult enough and finding (useful) wands attributes to that, so I was happy to finally be able to find and identify a Wand of Fireblast and imbue it in my staff.

Unfortunately it proved to be suicidal as zapping with the staff sets my mage on fire, killing me more quickly than the enemy I was zapping. Others too reported this issue.

Bug with wandmaker

Last version 0.2.1a

Entered the 6th floor, and couldn't talk with the wandmaker because clicking over him had no effect. I wandered the level and found the corpse dust, went to talk again with him and the quest dialog appeared, talked again and the reward dialog appeared, I chose and received a battle wand but the corpse dust was never claimed from my inventory.

touch control lost if window opens while zooming

All ability to move within the game is lost if a window is opened while the player is zooming their screen. Returning to the main menu and loading resolves this. Easiest to reproduce with tip signs.

Potion of Might appeared in the dungeon

I was a rogue (no subclass) on one of the prison levels (I think it was level 6). It definitely did NOT come from a well of transmutation, since none had appeared in that run, and if it had, I would have used it for an artifact.

I'm at a loss to understand how this could have happened. Could it possibly be some sort of roundoff error having to do with the floats used in the random potion generation? That doesn't make much sense to me, but it's the best bad explanation I can come up with.

No key for locked door?

I'm on level 2 and used a Scroll of Magic Mapping, however there is no key for the locked door anywhere.

Details

  • Using the latest version (0.3.0b).
  • The game was started in this version.
  • This has happened once in an earlier version too.
  • I can't find any items that I haven't picked up yet.

Cost reworks for rare items

Right now, if you offer a shop a Potion of Strength, Potion of Experience, Scroll of Upgrade, or other rare item, you get offered a fairly small amount of money (in the case of the potions/scrolls, the same as any other item of that type). It'd be pretty unusual to ever sell such an item, but on the rare chance it makes sense, it seems like the shops should offer a huge amount of money for it (as in, more than the purchase price of several other items combined, making it occasionally worthwhile if there's something amazing in the shop or you desperately need a particular item or two).

Bug: disabled movement persisting between saves

Hey there!

I've been playing the git-master builds of shattered-pd since you started pushing commits for 0.2.3f, and overall it's been great! You've fixed the few issues I'd noticed in previous releases, and now that the second Quick Slot seems to be in working order, I've been able to test some of the dual-item-combo characters I'd previously thought up (but found too annoying with a single Quick Slot to fully embrace).

That said, I've run into a bug that I initially hit on one of the earlier 0.2.3f commits, and it's still present after updating to your latest push. It was triggered at some point while rapidly flipping between the inventory and attempting to move with an enemy on screen, so I'm not sure if this is new or simply difficult to produce. Once triggered, my character became unable to move (tapping a location on the screen does nothing), while zooming, scrolling and item use continue to work as expected. I hit a similar bug with pixel-dungeon-gdx a while back that I traced to a divide by zero error, but I feel like this is more cooked into the logic somehow as I can quit the game, kill shattered-pixel-dungeon's process, start it back up, load my save and the inability to move remains.

Here's a copy of my shattered-pd data folder in the hope that you might be able to see what's up: http://96.126.108.7:90/shatteredpd-nomovesmage.tar.gz

Cheers!

Skeleton death sets destination

When you kill a skeleton and get caught in the shower of bones, it sets your destination to the space where the skeleton was standing. This happens whether you previously had another destination or not. To be clear, by destination, I mean the little blue continue interrupted movement button.

Lloyd's Beacon improvement: don't forget location

When I find Lloyd's Beacon, I tend to use it for a quick warp back to the most recent shop. However, using the beacon drops the remembered location, and it's easy to forget to re-set it before heading back down. Why not have the beacon keep the last used location permanently until explicitly re-set?

Crash on load with quickslotted class armor

If the user has quickslotted class armor and then attempts to load that game, it will result in a crash. This effectively locks the user out of that game.

Impact is thankfully low due to being lategame, and that most do not quickslot class armor.

Gnoll trickster AI bug?

Sometimes the gnoll trickster keeps retreating behind the door next to me, allowing me to surprise-attack it every time.

Here's a screenshot (I already killed it):

Screenshot

Native design for "Enter a Hero Name" dialog

That dialog has a Gingerbread theme. It would be nice if it supported the Holo and Material themes, depending on the Android version being used. It's a minor thing, but it bugs me.

opengl config

I don't know if you @00-Evan wanna make it possible to run shattered on an android emulator (which comes with android sdk), but if you want so, you should change the following code in PD-classes/com/watabou/noosa/Game.java

    view = new GLSurfaceView( this );
    view.setEGLContextClientVersion( 2 );
    view.setEGLConfigChooser( false );
    view.setRenderer( this );
    view.setOnTouchListener( this );
    setContentView( view );

to

    view = new GLSurfaceView(this);
    view.setEGLContextClientVersion(2);
    // view.setEGLConfigChooser( false );
    // changed to be able to run it on my android emulator
    view.setEGLConfigChooser(true);
    view.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
    view.setRenderer(this);
    view.setOnTouchListener(this);
    setContentView(view);

Linux desktop version crashes

I just updated to 0.3.0c on Arch Linux 64-bit, and it appears to crash on levels with traps. Here's the output:

Exception in thread "Thread-2" java.lang.NullPointerException
    at com.watabou.noosa.BitmapText.measure(BitmapText.java:174)
    at com.shatteredpixel.shatteredpixeldungeon.ui.UpdateNotification.layout(UpdateNotification.java:124)
    at com.shatteredpixel.shatteredpixeldungeon.ui.UpdateNotification.updateMessage(UpdateNotification.java:156)
    at com.shatteredpixel.shatteredpixeldungeon.ui.UpdateNotification.access$200(UpdateNotification.java:24)
    at com.shatteredpixel.shatteredpixeldungeon.ui.UpdateNotification$1.run(UpdateNotification.java:84)
Exception in thread "Thread-3" java.lang.NullPointerException
    at com.watabou.noosa.BitmapText.measure(BitmapText.java:174)
    at com.shatteredpixel.shatteredpixeldungeon.ui.UpdateNotification.layout(UpdateNotification.java:124)
    at com.shatteredpixel.shatteredpixeldungeon.ui.UpdateNotification.updateMessage(UpdateNotification.java:156)
    at com.shatteredpixel.shatteredpixeldungeon.ui.UpdateNotification.access$200(UpdateNotification.java:24)
    at com.shatteredpixel.shatteredpixeldungeon.ui.UpdateNotification$1.run(UpdateNotification.java:84)
Exception in thread "Thread-1" java.lang.NullPointerException
    at com.watabou.noosa.BitmapText.measure(BitmapText.java:174)
    at com.shatteredpixel.shatteredpixeldungeon.ui.UpdateNotification.layout(UpdateNotification.java:124)
    at com.shatteredpixel.shatteredpixeldungeon.ui.UpdateNotification.updateMessage(UpdateNotification.java:156)
    at com.shatteredpixel.shatteredpixeldungeon.ui.UpdateNotification.access$200(UpdateNotification.java:24)
    at com.shatteredpixel.shatteredpixeldungeon.ui.UpdateNotification$1.run(UpdateNotification.java:84)
com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file: traps.png
    at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:140)
    at com.badlogic.gdx.graphics.glutils.FileTextureData.prepare(FileTextureData.java:64)
    at com.badlogic.gdx.graphics.Texture.load(Texture.java:130)
    at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:121)
    at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:100)
    at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:92)
    at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:88)
    at com.watabou.gdx.GdxTexture.<init>(GdxTexture.java:10)
    at com.watabou.gltextures.TextureCache.getBitmap(TextureCache.java:100)
    at com.watabou.gltextures.TextureCache.get(TextureCache.java:68)
    at com.watabou.noosa.Image.texture(Image.java:64)
    at com.watabou.noosa.Image.<init>(Image.java:55)
    at com.shatteredpixel.shatteredpixeldungeon.sprites.TrapSprite.<init>(TrapSprite.java:18)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at java.lang.Class.newInstance(Class.java:379)
    at com.badlogic.gdx.utils.reflect.ClassReflection.newInstance(ClassReflection.java:63)
    at com.watabou.noosa.Group.recycle(Group.java:158)
    at com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene.addTrapSprite(GameScene.java:478)
    at com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene.create(GameScene.java:173)
    at com.watabou.noosa.Game.switchScene(Game.java:222)
    at com.watabou.noosa.Game.step(Game.java:201)
    at com.watabou.noosa.Game.render(Game.java:137)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:207)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: File not found: traps.png (Internal)
    at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:136)
    at com.badlogic.gdx.files.FileHandle.readBytes(FileHandle.java:222)
    at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:137)
    ... 26 more
java.lang.NullPointerException
    at com.watabou.gltextures.SmartTexture.<init>(SmartTexture.java:47)
    at com.watabou.gltextures.SmartTexture.<init>(SmartTexture.java:41)
    at com.watabou.gltextures.TextureCache.get(TextureCache.java:68)
    at com.watabou.noosa.Image.texture(Image.java:64)
    at com.watabou.noosa.Image.<init>(Image.java:55)
    at com.shatteredpixel.shatteredpixeldungeon.sprites.TrapSprite.<init>(TrapSprite.java:18)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at java.lang.Class.newInstance(Class.java:379)
    at com.badlogic.gdx.utils.reflect.ClassReflection.newInstance(ClassReflection.java:63)
    at com.watabou.noosa.Group.recycle(Group.java:158)
    at com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene.addTrapSprite(GameScene.java:478)
    at com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene.create(GameScene.java:173)
    at com.watabou.noosa.Game.switchScene(Game.java:222)
    at com.watabou.noosa.Game.step(Game.java:201)
    at com.watabou.noosa.Game.render(Game.java:137)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:207)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
Exception in thread "LWJGL Application" java.lang.NullPointerException
    at com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene.addTrapSprite(GameScene.java:478)
    at com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene.create(GameScene.java:173)
    at com.watabou.noosa.Game.switchScene(Game.java:222)
    at com.watabou.noosa.Game.step(Game.java:201)
    at com.watabou.noosa.Game.render(Game.java:137)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:207)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)

I'm guessing it can't find traps.png?

I18n support

Please start changing hard set private static final String values, to R.string costants :)

In order to allow users to submit custom value-*/strings.xml.

It will probably be a rather long operation.

(In a few weeks maybe I'll have time to help out!)

Artifact idea: Bottomless Quiver

Holds all types of throwable items / ammunition. Levels up from +1 to +10 as you put more types and quantities of ammunition in it (perhaps feeding it ammunition like the horn of plenty, or perhaps just placing unique types inside). Has a level/10 chance of not actually using up ammunition when thrown at an enemy (so, if you have 5 darts inside, and you throw a dart at an enemy, then level-out-of-10 times you'll still have 5 darts inside after the throw).

Feature Request: Long-press to move

For the most part, (Shattered) Pixel Dungeon has a very good interface. But one of its few shortcomings is that there's no way to move to a space without interacting with it (e.g. picking up an item, entering a staircase), unless that space is next to a wall. I propose that this could be accomplished with a long press.

[Feature request] Save?

Ok so first, Shattered Pixel is tons of fun and I'm glad I found it- Thanks!

So.. I know this is a stretch since a "save game" feature is against the "true spirit" of Roguelikes - but in the interest of making the game more fun (especially for newcomers!) it would be nice to have some sort of save feature so you don't have to start from the very beginning every time you die. Some thoughts:

  • This would definitely be modal so if you want you can keep the "die once" experience if you want
  • Maybe auto-save on each staircase
  • Maybe using save mode disqualifies you from badges/ rankings, etc so there's still incentive to play in the 'classic' form.

What do you think?

Alchemist's Toolkit only remembers "best" potion combination

When trying to work out the Alchemist's Toolkit potion combination, its description only remembers what it considers the "best" potion combination, even though other attempts may have provided additional information. For instance, if you try potions A, B, and C, and get "one right and in the right place", and then try D, E, and F and get "one right but in the wrong place", you now know more information, but the toolkit only remembers A, B, and C.

Perhaps you could keep a log of attempts ("You make a note of the result."), and provide a "NOTES" action on the toolkit listing the attempted combinations and results?

Ankh not generated in shop

It looks like there's an issue with the new shop generation code: when I got down to level 11, the shop there didn't have an ankh for sale. Screenshot:
ankhless

Release 0.3.0c source

The next source release for ShatteredPD will be 0.3.0c.

This will include releases of 0.3.0c for desktop, amazon, and F-droid.

Apologies for not releasing earlier but 0.3.0 has been a huge update and right now my priority is addressing balancing and general gameplay issues.

Current estimate for 0.3.0c release on google play is before the end of this week, source release will likely follow a day or so after that patch, once I am sure there are no major issues.

Thanks for your patience.

Ranged weapon targeting should be more user-friendly

Right now, targeting a ranged weapon or wand has a lot of problems.

If you aim for an enemy around a corner, you have to work out whether the number of squares between you, the corner, and the enemy will allow the weapon to pass the corner or hit the wall.

However, under some circumstances you can actually hit an enemy around a sharp corner by aiming for a point past that enemy instead. (Particularly noticeable if you aim for an enemy further down and hit the closer one instead; that often happens with pirahnas.)

If you aim for an enemy down a straight corridor, and unintentionally touch the wall instead of the enemy, your weapon will hit a wall between you and the enemy and stop. Particularly deadly if it's your boomerang and you're also using it as your primary melee weapon.

And worst of all, if you misjudge the ability to hit an enemy with a wand, and hit the wall instead, you'll typically hurt yourself with it.

I don't think it makes sense to introduce artificial difficulty through a difficult-to-use interface that makes it easy to shoot yourself in the foot.

A few possible improvements:

One possibility would be to say that you can always hit anything you have line-of-sight to. At a minimum, if it's possible to hit an enemy at all, targeting that enemy directly should work, rather than aiming for a point past them.

Alternatively, if it remains possible to see something but not hit it, then if you attempt to throw something at a location, or fire a wand at a location, and your shot won't actually hit that location, don't do it; instead, produce a message "You can't hit (that location | the $enemy) from here.". To hit a spot, you should actually aim at that spot, and if you can't hit it, the game should prevent you from trying.

Related to that, you should only be able to target yourself if you touch the actual square you're on. And doing so should produce a warning message, similar to the one for attempting to throw a beneficial potion.

Finally, you might consider adding a "targeting" mode when aiming a weapon or wand, which dims squares you can't hit and puts a targeting reticle over enemies.

After using an Ankh, the wand of the mage doesn't recharge

I've played several games with the mage, and every time I used an Ankh, the wand of the mage stopped recharging. It didn't recharge neither with time, nor by eating. I had the buff "recharging", but nothing happened.
However, when I imbued the wand after using the Ankh, after a few turns the wand started to recharge normally. (perhaps it does the same if you upgrade your wand, but I don't remember if I tried)

It might be a normal feature, but it seems to me that it is a bug. Playing a mage without his wand is really hard...

I play with Shattered Pixel Dungeon v0.3.0e.

Hunger: Challenging or Punishing

This is more of a game design issue.

Hunger is a very core component of the game. I feel like it's not challenging, but instead punishing.

The problems I see are:

  • If you explore or wait for too long you can starve with no hope of even finding enough food to recover
  • If you die you're sent back to the very beginning of the game, losing all progress.

Don't get me wrong, those are both very traditional aspects of a roguelike that I myself often enjoy. On the other hand, making the game less punishing would appeal to a larger audience and make the game more fun overall..

Check out these resources on game challenge:

http://plus10damage.com/blog/2015/2/4/challenge-vs-punishment-the-difference-between-good-and-bad-difficulty
https://www.youtube.com/watch?v=ea6UuRTjkKs

[Feature Request] pixel-dungeon-gdx fork?

Hey! Your pixel-dungeon fork is great, and I love switching between it and the original to keep things fresh. That said, I get to play the original pixel-dungeon on both my phone, and thanks to the pixel-dungeon-gdx port, on my laptop too, while shattered-pixel-dungeon is limited to my phone.

I recently merged the 1.7.2a update (here), and pretty well everything is kept neatly isolated from the gdx wrapper, so it should be easy to pull shattered and maintain on the side, if it was interesting enough for you to do so (no pressure!).

Cheers!

Avoid wasting dewdrops

Stepping on a dewdrop when at full health and a full (or not yet found) dew vial wastes the drop. Rather than that, what about just not picking it up? (Dewdrops can always go to the bottom of any pile of items on the floor, to not block picking up other items.)

v0.2.4 breaks back button

The back button no longer does anything after updating to 0.2.4. The hardware menu button (which is on some older devices, like the galaxy S3) may also be affected. I'm not sure because I haven't updated my phone yet, only my tablet (Experia Z2 Tablet).

I was hoping that your source release would happen at the same time as the play store update, (if not before), so that I could see what exactly changed. Why not push commits to github as you make them?

Shop non-consumables (weapons, armor, etc) should be more worthwhile

Shops lower down in the dungeon still sell weapons and armor, but they're almost always worthless space-fillers compared to consumable items. By the time you get that far down in the dungeon, either you have a heavily upgraded weapon/armor already, or you have some alternative (e.g. a high-level wand). It almost never makes sense to purchase a weapon or armor from a shop, with the rare exception of buying another of the same type you already have for use with the smith, giving you effectively an extra Scroll of Upgrade.

Perhaps shops could occasionally sell wands, or upgraded weapons/armor, or something else that makes it even remotely plausible that you'd make a purchase at a deeper shop other than consumables.

Badge for non-subclass victory?

It's possible to beat the game without changing from your class to one of its two subclasses. Seems like that ought to earn a badge.

New artifact: Bag of Holding

Increases inventory capacity, by increasing amounts with artifact level. At maximum level, 2x capacity.

One possible idea for leveling up: the bag could gain experience every time you identify an item via use rather than via a Scroll of Identify. However, that would make it much easier to level the bag when you find it early (via potions and scrolls) than when you find it late (only armor and weapons to ID).

When cursed, becomes the Bag of Devouring: every time you pick up an item (other than a boss-dropped key or the amulet), it has a small chance of being devoured instead.

Boomerang and the quick slot

Hey, I love the second quick slot you've implemented! One thing I've noticed however, is that when I use the boomerang via the quickslot while also having it equipped as a weapon (playing as the sniper class), the boomerang becomes transparent the same way it does when it falls to the ground, and tapping that quickslot brings up the bag to assign an item as though it was empty.

Cheers!

Source code inconsistency

These are mostly minor issues, but worth mentioning.

  • The license boilerplate is missing from some of the files.
  • Tabs and spaces are mixed inconsistently.
  • Some lines have trailing spaces.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.