Code Monkey home page Code Monkey logo

simple-dungeon-crawler's People

Contributors

jackstouffer avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

simple-dungeon-crawler's Issues

Redesign Game Log

Remove the log from the game window and have an infinite scrolling div of log ps next to the game window. This allows the player to view all game messages from the past and removes the need to keep game messages in memory.

Also makes it much easier to implement tutorials

Have Weak Monsters Have A Chance To Run In Fear

  • Enemies have a fear threshold if they have the run away action
  • Once fear is above the threshold, then run away
  • Not every enemy should be able to run in fear
  • One seeing the player, the difference in stats/level should add to fear level
    • therefore really weak enemies instantly run when seeing you
  • Each ally killed should contribute something to the fear level
    • Commensurate to the killed ally's stats/level

Dev Commands

With the move to webpack, the functions are no longer exposed to the dev console. Find a way to re-expose these functions or add new ones onto the window object to help in game testing.

Make AI Prioritize The Most Effective Attacks

  • Attack weight = some function which inverse of damage, so less damage done = more weight
  • Using buff item would be constant weight
  • Therefore, buffing makes sense IFF damage is low enough on the target
  • This is also how the planner will always choose the best attack
  • Attacks with the best damage will have the lowest weight, barring things like travel time

Add state changing volumes

  • Mud
    • slows actors down
  • Water
    • removes on fire state
    • weak to lightning
    • Some enemies, like the water sprite, cannot leave a water volume
  • Lava
    • add on fire state

Investigate if volumes should be rolled into game objects, since these volumes are going to have to have graphics.

Persistent World State

Easiest way to do this is to load all levels into memory at the start of the game. Then, loading a level is a matter of taking the level state in memory and pointing the current state to it.

Level state is pretty small (> 1MB), so this should be a workable solution even as the game gets larger.

AI Losing Sight of Target

Enemy AIs should loose the target and go back to their default state after not having the player in their sight range for n number of turns.

Touch Interface

Find some way to have an on screen touch interface. The graphics don't lend themselves to a phone sized device however, so this is a low priority item.

Rethink the way UI inputs are handled

It's sort of odd that the player is put into an inventory or spell selection state when doing either of those actions. Instead, the game world should be put into those states. That way, UI handling is separated from player AI logic. The UI input handling functions would have to tell the player AI what was chosen.

Save and Resume

Save current world state to local storage, including all game object state.

This needs to be done after Issue #4 .

Refactor map.isBlocked

map.isBlocked has a confusing return value scheme. Instead, it should return something like

{ object: null, blocks: false }

when it doesn't block,

{ object: null, blocks: true }

when it blocks but there's no object

{ object: {}, blocks: true }

when it blocks and there's an object

Add Skill UI Menu

menu for selecting stamina based skills for knight and rouge builds

Tutorials

Must be done after Issue #5.

Add tutorial messages to the game log. These messages will have a different background color than a normal message. When a tutorial is displayed, set a flag in the game state that marks the tutorial as already played.

Possibly use event emitter to listen for events to trigger messages.

Also add toggle button to top of the game log to turn tutorial messages on and off.

Fix the Keybinding System

Nothing currently happens when the keybinding menu is shown. The user should be able to rebind all of their keys.

Silence Spell

Statistic effect that reduces mana by something ridiculous number like 100000.

Testing

Add mocha tests for the remaining exposed functions.

Damage Effectiveness

Implement the system which checks for the damage type and multiples the incoming damage by the affinity. Data is already there, just need to write the code and then implement an enemy with non-standard affinities to test.

Speed Based Scheduler

Currently, each object acts in the order in which it appears in the GameObjects array. This precludes the usage of a speed stat or buff which allows mobs to move faster than once per turn

I need to find some way to implement the ROT speed scheduler while still having the game manager Manager object update things in a timely fashion.

Sleeping In Beds

Sleeping in a bed

  • passes turns
  • does the following n points per turn
    • heals
    • restores mana
    • restores stamina
  • can't be done when enemies within n tiles
  • can't be done when you have a negative status effect
  • can be interrupted when enemy comes within n tiles
  • wake up when health, mana, stamina are all at 100%

Will be the only way to restore mana and stamina outside of potions.

Refactor Item Functions

  • The item functions are now being used in the magic system, so they should be renamed
  • The functions use a whole lot of global data, refactor this to function parameters like in the map functions

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.