## ~~Boilerplate ~~ * ~~Project setup ~~ * ~~Input engine ~~ ## Maps * ~~Player-background collision ~~ * ~~32x32 maps ~~ * ~~Map scrolling through SCX/SCY ~~ * 127x127 maps * Update background collision to be aware of map changes * Portals between maps * Write editor for collision maps * Update map generation script to use new collision map format * New collision map flag * Load new map on collision * Ladders/ropes * New collision map flag * Play climbing animation when player collides * Allow movement up/down without gravity ## Items * Item entity type * Render item on map * Create data structure for storing items on the map * Copy item OAM data to shadow OAM on each frame * Make items float up and down a little bit ## Player * ~~Movement ~~ * ~~Jump physics ~~ * Velocity should not exceed 7px per frame * Animations * Keep track of animation state * Update metasprite tile indexes on new frame * Add jumping animation * Add walking animation * Create inventory data structure * Add inventory item * Remove inventory item * Check for having at least N of an item * Player item pickup to inventory * Remove item from map * When pickup button pressed and player colliding with item, pick up item * Combat statistics type * Basic attack by pressing A * Display attack animation * Implement battle formula * Connect to button press ## Menu * Menu UI * Render start menu * Select menu item * Switch between menu and game states * Render statistics screen * Render equipment screen * Player inventory * Render inventory screen * Allow selecting an inventory item * Equip/use/drop item ## Monsters * Monster entity type * Render monster * Create data structure for storing monsters on the map * Generalize player metasprite code * Update player attack routine to check for monster collision * Death * Play death animation * Drop items from drop table * Remove monster from map * Player experience / level up routines * Allow point distribution in stats menu * Attacks * Play attack animation * Check for player collision and damage player * Translate monster position along a closed curve * Randomly pace to the left/right ## NPC * NPC entity type * Render NPC * Create data structure for NPCs on map * Use metasprite code for NPCs * Scrolling text display engine * Render NPC dialogue * Dialogue prompt * Render modal with yes/no answer buttons * Cursor to select button * Run NPC dialogue handler when answer given ## Quests * Extend dialogue to display item requests * Keep track of completed quests * Display icon above NPC when a quest is available ## Nice to have * Metasprites of different sizes? (Could enable boss monsters) * Animated damage number for attacks * Player name select