Skip to content

ZacharyKeatings/Pykemon

Repository files navigation

Pykemon

A reimagining of Gen 1/Gen 2 Pokemon written entirely in Python

Current Features:

At this stage of development, Pykemon is just a battle screen with a basic fight sequence. What I have accomplished so far includes:

Pokemon class:

Fully implemented:

  • A Pokemon object can be created like "var = Pokemon('Pokemon Name')"
  • The Pokemon class then checks the provided name against the PokemonDB.json file for all relevant data used within rest of the class
  • Gender is assigned based on Gen 2 gender ratio
  • Pokedex number refers to the National number
  • All base stats are taken from PokemonDB.json and are pulled from Gen 1/Gen 2
  • IVs are HP, Attack, Defense, Speed, Special Attack, Special Defense
  • IVs (excluding HP) are generated by randomly assigning value between 0 - 15
  • HP IV is calculated by formula used in Gen 1
  • Shiny status is determined by Gen 2 formula. IVs must match specific criteria
  • EVs were not introduced in Gen 1, instead Gen 1 used a format called Stat Exp. Each time a pokemon won in a battle, the base stats of the loser were added to the winner's stat exp. The stat exp determines the various levels of Pokemon stats
  • Pokemon gain levels based on 6 different rates: erratic, fast, medium fast, medium slow, slow, and fluctuating. I used the official Gen 1 formulas to determine a Pokemon's level rather than a rainbow table in order to remove level 100 cap limit
  • Pokemon current stats are calculated by following the official Gen 1 formula, which takes into account the current Pokemon's base stats, current level, and stat exp
  • Pokemon current max HP is calculated with a slightly different formula, but otherwise uses the same data
  • The appropriate sprites used in a battle (front and back, shiny and normal)
  • If a Pokemon is wild, it's move list will contain the 4 most recent moves it is able to learn.
  • A pokemon can level up which is then manually recalculate all current stats by taking into account the new level

Partially Implemented:

  • A Pokemon can evolve by calling the evolve function. This will check the 'Evolves-Into' key within the PokemonDB.json file. Using this value, it changes the name of the Pokemon, then recalculates all base stats and current stats.
  • Status effects

Not Implemented:

  • Held items

Move Class:

Fully Implemented:

  • Move will check types and return a modifier to be used in damage calculation
  • STAB (Same Type Attack Bonus) is determined if Pokemon uses a move that matches it's type
  • Damage is calculated by first determining if a move is special or physical. This will determine which Pokemon stats to reference. Then it follows the standard formula for damage calculation
  • Use a move - Pokemon uses move which then applies damage (if applicable)
  • Accuracy check - Pokemon has chance to miss if move accuracy is below 100
  • Critical hit chance - Pokemon has chance to land critical hit based on Gen 1 formula

Partially Implemented:

  • Status effects (poisoned, flinch, badly poisoned, burned, paralyzed, frozen, confusion, sleep)

Not Implemented:

  • Any other features not mentioned

Trainer Class:

Fully Implemented:

Partially Implemented:

Not Implemented:

  • Everything

Main Game:

Battle State:

Fully Implemented:

  • Proper sprites are used for front and back
  • Pokemon names, level, current HP and max HP properly display
  • HP bars display proper colour and size based on remaining HP
  • XP bar works correctly and displays how far into current level a Pokemon is
  • HP and XP bars animate properly
  • Gender is shown with proper gender symbol
  • Player can either run or fight
  • Fight menu shows all moves known by Pokemon
  • Moves can be used, and pp will be reduced accurately

Partially Implemented:

  • Status effect indicator (poisoned = PSN, burned = BRN, paralyzed = PAR, frozen = FRZ, sleep = SLP)

Not Implemented:

  • pkmn menu option
  • pack menu option

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages