Code Monkey home page Code Monkey logo

dominion's People

Contributors

cgrinds avatar dependabot[bot] avatar jcbantuelle avatar michalbe avatar stasm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

dominion's Issues

Move DB Interactions into Models

Creating an extra layer for all DB Reads and Writes will help make the codebase more maintainable, as well as make life easier when/if #1 is ever tackled.

Rogue shows empty checkboxes

When playing Rogue and there are cards in the trash costing between $3 and $6, the UI for picking one of them to gain has checkboxes without labels:

screen shot 2016-09-27 at 21 12 49

Taking `Lost in Woods` breaks game

Hello,
When one player plays Fool and receives Lost in Woods, and then another player will play Fool and should receive this card back from the first player, the following fatal error occurs:

2|run-domi | I20180530-11:42:12.615(0)?     at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
2|run-domi | 
2|run-domi | I20180530-11:48:21.967(0)? Exception in callback of async function: ReferenceError: games is not defined
2|run-domi | I20180530-11:48:21.968(0)?     at Fool.play (app/cards/nocturne/fool.js:39:55)
2|run-domi | I20180530-11:48:21.968(0)?     at CardPlayer.play_card (app/game/server/services/card_player.js:80:26)
2|run-domi | I20180530-11:48:21.968(0)?     at CardPlayer.play (app/game/server/services/card_player.js:28:33)
2|run-domi | 
2|run-domi | I20180530-11:48:21.969(0)?     at app/game/server/game.js:34:23
2|run-domi | 
2|run-domi | I20180530-11:48:21.970(0)?     at runWithEnvironment (packages/meteor/dynamics_nodejs.js:110:1)
2|run-domi | 
2|run-domi | I20180530-11:48:21.971(0)?     at packages/meteor/dynamics_nodejs.js:123:1
2|run-domi | 
2|run-domi | I20180530-11:48:21.971(0)?     at /root/.meteor/packages/meteor-tool/.1.4.1_1.1cf5bbg.8kkj++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:467:21
2|run-domi | 

Refactor Game Schema for Cards

There is a lot of awkward code built around pulling out common cards vs kingdom cards. This is going to get even more difficult once cards not in the supply get introduced. They should all be pulled into a single array, with an extra attribute designating which group they fall into. A client-side transformation can be applied to break out the groups for display. The one concern is that the transformations may not be reactive, but any card modification should also have other elements that will trigger a redraw.

Convert From MongoDB to PostgreSQL

MongoDB has some frustrating limitations in being able to make multiple updates in a single transaction. There is a non-trivial performance hit both on the server side with trips to the DB, and on the client side with triggering multiple redraws, if an event requires updating multiple documents in a collection, or multiple collections. This can also cause brief but annoying temporary inconsistencies in the way the game is displaying as it processes the DB writes in serial.

Unfortunately, while SQL support for Meteor is on the Meteor Roadmap, the existing implementations are poorly supported and third-party. This conversion is probably going to be deferred until first-party support has been hammered out.

Routing problem on Game History page

Hi!

I've noticed that there is probably a routing problem with Game History page. When I try to go to Games History page form any other page it's not displayed correctly unless I reload the page before going to Games History or reload the Games History page itself. Tested on Chrome and Firefox. All I've got form the console is:

Route dispatch never rendered. Did you forget to call this.next() in an onBeforeAction?

After reloading the console is clear. Attached GIF:

gh_bug

Thanks again for your work on the game!

Baker throws exception when played

Exception in callback of async function: ReferenceError: player_cards is not defined
    at Baker.play (app/cards/guilds/baker.js:12:44)
    at CardPlayer.play_card (app/game/server/services/card_player.js:216:42)
    at app/game/server/services/card_player.js:30:32
    at baseTimes (/home/g/.meteor/packages/stevezhu_lodash/.4.17.2.12zcw0x.hzzi++os+web.browser+web.cordova/npm/node_modules/lodash/lodash.js:
    at Function.times (/home/g/.meteor/packages/stevezhu_lodash/.4.17.2.12zcw0x.hzzi++os+web.browser+web.cordova/npm/node_modules/lodash/lodas
    at CardPlayer.play (app/game/server/services/card_player.js:20:7)
    at app/game/server/game.js:22:25
    at runWithEnvironment (packages/meteor.js:1286:24)
    at packages/meteor.js:1299:14

Forager throws exception when hand size is one

Exception in callback of async function: TypeError: Cannot read property 'hand' of undefined
    at new CardTrasher (app/game/server/services/card_trasher.js:8:27)
    at Function.trash_card (app/cards/dark_ages/forager.js:55:24)
    at Forager.play (app/cards/dark_ages/forager.js:40:15)
    at CardPlayer.play_card (app/game/server/services/card_player.js:216:42)
    at app/game/server/services/card_player.js:30:32

Query Objects For Common Data Searches

There are many card implementations that use very similar code to extract data from the game object. This code should be refactored into query objects for reuse and maintainability.

Baron throws exception when discard Estate

Exception in callback of async function: ReferenceError: card_player is not defined
    at Baron.play (app/cards/intrigue/baron.js:40:62)
    at CardPlayer.play_card (app/game/server/services/card_player.js:216:42)
    at app/game/server/services/card_player.js:30:32
    at baseTimes (.meteor/packages/stevezhu_lodash/.4.17.2.12zcw0x.hzzi++os+web.browser+web.cordova/npm/node_modules/lodash/lodash.js:997:23)
    at Function.times (.meteor/packages/stevezhu_lodash/.4.17.2.12zcw0x.hzzi++os+web.browser+web.cordova/npm/node_modules/lodash/lodash.js:16075:20)
    at CardPlayer.play (app/game/server/services/card_player.js:20:7)
    at app/game/server/game.js:22:25
    at runWithEnvironment (packages/meteor.js:1286:24)
    at packages/meteor.js:1299:14

Duplicate freezes game

After having one duplicate on tavern mat and then playing 2nd and 3rd duplicate and after that buying gold and calling duplicate from the tavern mat game froze (can't finish turn) on 3rd duplicate. Server log:

Exception in callback of async function: TypeError: Cannot read property 'type_class' of undefined  
  at Function.render (app/game/server/view_objects/card_view.js:10:33)  
  at gain_copy (app/cards/adventures/duplicate.js:42:81)  
  at app/game/server/services/turn_event_processor.js:20:7

Also it would be nice to have the "Destroy Game" button back for situations like this ;-)

BTW Great work! Brings back memories from isotropic ;) Thanks!

Storeroom throws exception when played

When playing storeroom the following exception happens because option is not defined.

Exception in callback of async function: ReferenceError: option is not defined
at app/cards/dark_ages/storeroom.js:44:11
at arrayEach
at Function.forEach
at Storeroom.play
at CardPlayer.play_card
at app/game/server/services/card_player.js:30:32
at baseTimes
at Function.times
at CardPlayer.play
at app/game/server/game.js:22:25
at runWithEnvironment
at packages/meteor.js:1299:14

Duplicate does not let you choose "No"

Hi again.

I have another issue with Duplicate.

When you have a Duplicate card on your tavern mat and you buy a card it does not let you choose "No". The game will not continue unless "Yes" is chosen.

Cheers!

Improve Game Service Object Log Writes

Many of the game services do basic writing to the Game Log, but don't clearly communicate more unusual game interactions, such as Sea Hag discarding from the top of the deck instead of your hand, or gaining a curse on top of the deck instead of in the discard pile. It would be good to rethink the log writing component of these services to be more versatile.

Game freezes when using Smugglers after Black Market card was purchased

Debug log:

Exception in callback of async function: TypeError: Cannot read property 'top_card' of undefined
    at app/cards/seaside/smugglers.js:19:35
    at arrayFilter (/srv/http/…/bundle/programs/server/npm/node_modules/meteor/stevezhu_lodash/node_modules/lodash/lodash.js:588:11)
    at Function.filter (/srv/http/…/bundle/programs/server/npm/node_modules/meteor/stevezhu_lodash/node_modules/lodash/lodash.js:8837:14)
    at Smugglers.play (app/cards/seaside/smugglers.js:15:28)
    at CardPlayer.play_card (app/game/server/services/card_player.js:80:26)
    at CardPlayer.play (app/game/server/services/card_player.js:28:33)
    at app/game/server/game.js:33:23

King's Court on Pillage freezes game and Tournament does not give a Duchy.

Hi again. This time the game froze after playing King's Court on a Pillage (on third time) also trashing the wrong card (King's Court instead of Pillage).

The log:

Exception in callback of async function: TypeError: Cannot read property 'types' of undefined
   at app/game/server/view_objects/card_view.js:16:33

Attached screenshot form the game:
screen shot 2016-08-23 at 02 23 35

Again thanks for the great work!

P.S. We also found a minor bug: Tournament does not give a Duchy after Prizes are depleted.

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.