Giter Club home page Giter Club logo

unlucky's Introduction

Unlucky

Unlucky is a LibGDX Android RPG game based on RNG (random number generator) with a turn-based battle system. RNG is usually frowned upon in games, but this game's entire theme is RNG. Everything from attacks in battle to item enchanting to movement is based on RNG.

About

The player ventures and battles monsters in maps with various themes. Currently there are three available worlds all with 10+ levels in each world. In these maps, the player will have to defeat monsters and find a star tile to complete the level. Monsters may drop items that can improve the player's strength. These items may be sold in the shop for gold or enchanted to increase their power. There are currently 100+ items dropped by monsters and sold in the shop.

The battle system is based on turn-based mechanics. The player is given four randomly generated moves with each color corresponding to a different type of move. The player also has access to special moves that they can choose in the menu. Special moves give bonus effects to the player's attacks or affects the enemy. The player also has an option to run from the battle at a very low chance of success.

Downloads

Releases for Desktop are found on the releases page. It is in a runnable .jar format so you must have JRE installed.

Note: running the game on desktop will create a save.json file in the same directory as the game. The game must be run in the same directory as the save.json to work and load your progress.

Also available for free on the Google Play Store

The assets for this game are also available for download:

  • Textures (contains a file textures.png that has all the textures in the game mapped into an atlas textures.atlas)
  • Skins (contains LibGDX Skins of the game)
  • Music (all music in the game in .ogg format)
  • Sound Effects (all sfx in the game mostly in .ogg format)

Credits

License

This project is licensed under the MIT License.

Screenshots

unlucky's People

Contributors

matamine303 avatar mingli1 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

unlucky's Issues

New special moves

Stun - enemy has a chance of skipping its turn
Invert - heal moves do damage and damage moves heal
Shield - shields the player for one turn for a certain amount of damage
Also, make special moves available every 3 turns

Adding an Item to the Equipment with the addEquip() method while the index of the Item is 0 or 1 Bug

Arrange:

  • Configuring the environment (with for example Gradle v3.3).
  • Importing the junit .jar files, so we can run junit test cases.

Act:

  • Making an instance of Equipment Class
  • Creating an Item with a type value of 0.
  • Adding this Item to the Equipment with the addEquip() method.

Assert:

  • The method will handle that the type is not greater or equals then 2.

Actually:

  • We got ArrayIndexOutOfBoundsException.

bugEquipment
bugEquipment2

numFrames and delay are never used in the init() method of Particle class Bug.

Arrange:

  • Configuring the environment (with for example Gradle v3.3).
  • Importing the junit .jar files, so we can run junit test cases.

Act:

  • Making an instance of Particle Class
  • Store this instance in a variable
  • Call the init() method on this variable, with the following params: int type, Vector2 position, Vector2 velocity, float lifespan, int numFrames and float delay.

Assert:

  • A new particle instance will be created after the call of the init() method with the use of all of the parameters.

Excepting:

  • init() method will use every parameters to create a new Particle instance.

Actually:

  • We can specify the numFrames and delay params, but they are never used in the method.

bug3

Possible solution:

  • Deleting the numFrames and delay variables from the parameter list of the init() method in the Particle Class.

Inventory bug

swapping an equipped item and an item of the same type from inventory then moving the equipped item on top of that item causes 2 items in the same slot. can be resolved by moving the item on top to a different slot

ERROR LAPTOP

I've downloaded for pc run it and in the game doesn't happen when I click the keys awsd or any and also using the mouse nothing happens

Merge skins into main atlas

When all assets have been finished, merge the ui skin and dialog skin into the main TextureAtlas for less texture bindings.

Set the type of a Move to something else then 0, 1, 2 or 3 Bug.

Arrange:

  • Configuring the environment (with for example Gradle v3.3).
  • Importing the junit .jar files, so we can run junit test cases.

Act:

  • Making an instance of Move Class with the following parameters:
    • type=6
    • the other parameters can be anything.

Assert:

  • The constructor will handle that the type is not 0, 1, 2 or 3 (because there are only 4 types of moves, written by the javadoc to the Move class. They can 0=Accurate, 1=Wide, 2=Crit and 3=Healing).

Excepting:

  • We got an exception or a warning that we cannot make a new Move with a type of 6.

Actually:

  • We can freely make a new "move" with the type of 6, and we do not get any warning.

Enemy AI

Enemies should heal once when below a percentage of hp if it can
Bosses should be smarter and heal if the player uses moves like Reflect

Lightning bug and shadows

Lightning when night is toggled off turns it back on.
Remove shadows during the night except when in light

Reflect special move

New special move called Reflect that reflects the enemy's next attack. If it's a heal then it heals the enemy for twice as much.

Enchant Cost Bug

Sometimes items bought from the shop have 0 enchant costs. Not a huge issue because if the player has enough gold to buy the item, they probably have enough to enchant it as well.

Shield bug

Shield bar and status icon still appears in a new battle if untouched in the previous battle.
To reproduce: Defeat an enemy after using shield and start a new battle.

Special move/spell set system

The player unlocks different special moves as they level up. They can have an inventory of special moves where they can choose 3 or 4 as a set to bring into battle.

We can add the Util.SHIELD moveset twice to an instance of a SpecialMoveset class twice, as special moveset Bug

Arrange:

  • Configuring the environment (with for example Gradle v3.3).
  • Importing the junit .jar files, so we can run junit test cases.

Act:

  • Making an instance of a SpecialMoveset Class
  • Store this instance in a variable
  • Check if addSMove() method is declared and implemented in the SpecialMoveset Class
  • Call the addSMove() method on the variable (that stores an instance of the SpecialMoveset Class) and call it with a Util.SHIELD as parameter, and do it twice.

Assert:

  • Only one moveset should be stored as special moveset.

Excepting:

  • Only 1 moveset is stored as special moveset in the variable.

Actually:

  • The size of the array is 2, so we stored twice the Util.SHIELD as moveset.

bug4

"Variable is already assigned to this value" in the init() method of Particle class Bug

Arrange:

  • Configuring the environment (with for example Gradle v3.3).
  • Importing the junit .jar files, so we can run junit test cases.

Act:

  • Making an instance of Particle Class
  • Store this instance in a variable
  • Call the init() method on this variable, with the following params: int type, Vector2 position, Vector2 velocity, float lifespan, int numFrames and float delay.

Assert:

  • A new particle instance will be created after the call of the init() method.

Excepting:

  • No unnecessary line of codes run in the method.

Actually:

  • There is an if statement that check, if the anim variable is null and if yes, then assign this variable a null, but the variable already has the value of null, so the if statement is unnecessary in the init() method.

bug2

Possible solution:

  • Delete the 81 line of the Particle Class, since the anim variable has been already assigned to this value.

Set the damage to 0 or 1 while creating a new move from Move Class Bug.

Arrange:

  • Configuring the environment (with for example Gradle v3.3).
  • Importing the junit .jar files, so we can run junit test cases.

Act:

  • Making an instance of Move Class with the following parameters:
    • damage=0
    • the other parameters can be anything.
  • Store this instance in a variable and call it as "move1".
  • Check if the min/max damage is anything else then 0 and 1.

Assert:

  • The min/max damage can not be 0 or 1 written by the javadoc to the Move constructor.

Excepting:

  • We got an exception or something that warn us that we cannot create a new Move with damage=0 or damage=1.

Actually:

  • We can freely make a new "move" with damage=0 and damage=1 without any problem, even if the javadoc said that we cannot do it.

bug6 1
bug6 2

Add enchant scrolls

Enchant scrolls of various rankings that increase the chance of enchanting success from default 50% to +10%, +20%..., +40%.
To use them, the user would drag the scroll onto the item they want to enchant and the next enchant they attempt will have increased probability to succeed.

Delta time movement shaky

The player shakes a bit when moving with delta time movement because of float screen position rounding to integer tile position

Modding

Am I allowed to edit the version I downloaded on my device. If so how do I edit the files or value that you would recommend.

Sorry I don't know how to just comment

Statistics

Track player statistics for battle and other stuff

set the min to be greater then the max in the constructor of the Move class Bug

Arrange:

  • Configuring the environment (with for example Gradle v3.3).
  • Importing the junit .jar files, so we can run junit test cases.

Act:

  • Making an instance of Move Class with the following parameters:
    • min = 25
    • max = -3
    • the other parameters can be anything.

Assert:

  • The constructor will handle that the min value is greater then then max value.

Excepting:

  • The constructor set the value of the max to be the value of the min (because the min is greater then the max, and wtih this, the value of the min <= then the value of the max.

Actually:

  • The constructor set the value of the min to the value that is stored in the parameters as min and set the value of the max to the value that is stored in the parameters as max.
  • The constructor not handle that the value of the min is greater then the value of the max.

Shop items don't have enchantment costs

They cost nothing to enchant because there is no hidden level of items yet to scale base enchanting costs off of. Currently enchanting costs are based on enemy/map level.

ResourceManager cannot be instantiated during junit testing bug

Arrange:

  • Configuring the environment (with for example Gradle v3.3).
  • Importing the junit .jar files, so we can run junit test cases.

Act:

  • Creating a TestFile where we want to run the test case.
  • Making an instance of ResourceManager Class
  • Check if the instance is created of not with assertNull.

Excepting:

  • We can make an instance of the ResourceManager class and run different test cases on it to check, if it's working properly or not.

Actually:

  • During the test, we got a NullPointerException.

bug1

Both the origin and position of an instance of the Moving class is changing instead of the position only, and origin no Bug.

Arrange:

  • Configuring the environment (with for example Gradle v3.3).
  • Importing the junit .jar files, so we can run junit test cases.
  • The com.badlogic.gdx.math.Vector2 Class is available and we can make Vector2 objects from it.

Act:

  • Making an instance of Moving Class with the following parameters:
    • origin = new Vector2(1, 2)
    • target = new Vector2(7, 5)
    • speed = 1.4f
  • Store this instance in a variable and call it as "moving1".
  • Call the start() method on the "moving1" variable.
  • Call the update() method on the "moving1" variable with number two as parameter.

Assert:

  • The position of the object is changing, but the origin will not.

Excepting:

  • The position of the object is changed, while the origin stay still after the call of the update() method.

Actually:

  • Both the origin and position of the "moving1" changed after the call of the method.

bug5

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.