D2e Companion Card Viewer

By any2cards, in Descent: Journeys in the Dark

Version 1.6.6 of the extension has been published. It now supports Overlord Decks. This includes Basic, Basic II, Enchanter, Infector, Magus, Punisher, Saboteur, Shadowmancer, Universal, Unkindness, and Warlord. Post #8 in this thread provides test links for all of the various cards currently supported.

EDIT: In addition, it now also supports Overlord Reward cards, Quest Reward Cards, and Rumor Reward cards.

Edited by any2cards

I've been using your plugin and think it's super cool so far. Once request - currently some cards (especially character cards and ability cards with a lot of text) display too small to read the text. Would it be possible to add a scaling option, where you specify a zoom value for the card images? Another suggestion is make the plugin only recognize whole words as keywords. This would keep extraneous highlights for card names that happen to be part of another word.

I've been using your plugin and think it's super cool so far. Once request - currently some cards (especially character cards and ability cards with a lot of text) display too small to read the text. Would it be possible to add a scaling option, where you specify a zoom value for the card images? Another suggestion is make the plugin only recognize whole words as keywords. This would keep extraneous highlights for card names that happen to be part of another word.

Something that may help to that end (purely a suggestion, feel free to disregard) would be to show fewer images. For LTs and agents, for example, only show one of the acts. For heroes, maybe don't show conversion kit versions.

The issue with image size is one to which I gave a lot of thought. There is no way for me to provide auto-scaling of any kind. The images are all a single static size. I suppose I could go and remake all of the images to a new size, but quite frankly, there is not going to be any single size that is going to make everyone happy.

I originally planned on showing all cards (all acts, expansions, etc.) for a given name, as I thought it would be handy for me for comparisons, and I wouldn't know who had what version, and what exactly they were referencing in their topic of choice.

Both of the above comments are valid criticisms. I truly just don't know what to do about it.

Version 1.7.0 of the extension has been published. I played around with the max sizes for the window's width and height that display the card information, and have increased them after several tests. The cards display far larger now.

In addition, I am giving serious consideration to implementing Zaltyre's suggestion of no longer including the display of Conversion Kit card information. I will leave the data and images available, but am thinking of requiring a prefix to the name such as "CK-" and the name for the card information to show (for example: CK-Brightblaze). This way, it won't show by default, but it will still be possible to make it show.

As for Zaltyre's second suggestion of only showing say Act I cards for types that have multiple Acts, I really don't like this idea, as there often are significant differences between the Act I and Act II cards.

Please install the 1.7.0 version of the extension and provide me feedback on the card sizes that now display.

Edited by any2cards

Any2cards,

Thanks a lot for the update. It looks better already. Not knowing anything about programming Chrome plugins, I'll make a possibly dumb suggestion. Is it possible to include configurable plugin settings to set the image scaling? This way everyone can set the scale to their liking.

Any2cards,

Thanks a lot for the update. It looks better already. Not knowing anything about programming Chrome plugins, I'll make a possibly dumb suggestion. Is it possible to include configurable plugin settings to set the image scaling? This way everyone can set the scale to their liking.

Unfortunately, no. I am already cheating in a sense to make this happen as it is. The images for all of these cards are a fixed size. The hero cards are fixed 600x480 pixels. All of the rest of the cards are a fixed 309x480 pixels.

Originally, the "window" that is programmed to pop up (the css wrapper) was a max size of 285x205 pixels. And then it uses various algorithms to determine where to display the images based on the number of images found, dynamic borders, concatenation, etc.

I basically used some programming to "cheat" the system, and get it to display larger images, by fooling it to dynamically size the window based on a percentage of the true size of the actual real image.

Suffice it to say that this was neither easy, nor is it flexible. There simply is no way to provide true dynamic scaling tailored to each individual's taste, if for no other reason than the original images themselves are a fixed size. There is only one of them. And I am NOT about to generate an even greater number of images, and then try to dynamically determine which one to show. :P

Remember, originally, this was an exercise meant only for me as a memory aide/crutch, so that I could participate in discussions with people without having to drag out the game pieces each and every time.

Don't get me wrong ... I am fine with all of you providing suggestions, and if I can implement them easily, I will. After all, this is a great community, and I like giving back to it.

One last thing. Many people have suggested modifying the programming to force exact matches on names, so that you don't end up with what I call "bleed". For example, if I write the phrase "advanced quest", the prefix Advance is underlined in red because it is a key word for a class skill. But people would prefer that it would only underline when the word "advance" is used, and not any other form of it. I have tried to make this happen. With absolutely no success. When I rewrite the code to implement this feature, other things break. Obviously, I am not going to give up on this, but it may take a while. This code uses some very sophisticated regex, which, if you have any experience with it (or with similar tools in Unix like Awk), you know how temperamental it can be.

Edited by any2cards

Any2cards,

Thanks a lot for the update. It looks better already. Not knowing anything about programming Chrome plugins, I'll make a possibly dumb suggestion. Is it possible to include configurable plugin settings to set the image scaling? This way everyone can set the scale to their liking.

Unfortunately, no. I am already cheating in a sense to make this happen as it is. The images for all of these cards are a fixed size. The hero cards are fixed 600x480 pixels. All of the rest of the cards are a fixed 309x480 pixels.

Originally, the "window" that is programmed to pop up (the css wrapper) was a max size of 285x205 pixels. And then it uses various algorithms to determine where to display the images based on the number of images found, dynamic borders, concatenation, etc.

I basically used some programming to "cheat" the system, and get it to display larger images, by fooling it to dynamically size the window based on a percentage of the true size of the actual real image.

Suffice it to say that this was neither easy, nor is it flexible. There simply is no way to provide true dynamic scaling tailored to each individual's taste, if for no other reason than the original images themselves are a fixed size. There is only one of them. And I am NOT about to generate an even greater number of images, and then try to dynamically determine which one to show. :P

Remember, originally, this was an exercise meant only for me as a memory aide/crutch, so that I could participate in discussions with people without having to drag out the game pieces each and every time.

Don't get me wrong ... I am fine with all of you providing suggestions, and if I can implement them easily, I will. After all, this is a great community, and I like giving back to it.

One last thing. Many people have suggested modifying the programming to force exact matches on names, so that you don't end up with what I call "bleed". For example, if I write the phrase "advanced quest", the prefix Advance is underlined in red because it is a key word for a class skill. But people would prefer that it would only underline when the word "advance" is used, and not any other form of it. I have tried to make this happen. With absolutely no success. When I rewrite the code to implement this feature, other things break. Obviously, I am not going to give up on this, but it may take a while. This code uses some very sophisticated regex, which, if you have any experience with it (or with similar tools in Unix like Awk), you know how temperamental it can be.

I know a little about regex (although different languages use somewhat different regex syntax). Typically using "\b" would signify a word boundary. So "\bhell\b" would match "hell" in "hell is for the brave", but not in "hello".

I know a little about regex (although different languages use somewhat different regex syntax). Typically using "\b" would signify a word boundary. So "\bhell\b" would match "hell" in "hell is for the brave", but not in "hello".

You are absolutely correct. And this is what I have attempted to use within the JSON and JS that utilizes the regex. I think I just don't have it programmed correctly as of yet, as it returns some very, very funny results. I am working on it. Promise. :D

Thanks. Good luck fighting the software. BTW I hope you don't take any of the feature requests as criticism. It's awesome that you're offering this free tool to the community!

Thanks. Good luck fighting the software. BTW I hope you don't take any of the feature requests as criticism. It's awesome that you're offering this free tool to the community!

Thoughtful criticism (otherwise known as feature requests :P ), to make the product better, is always welcome.

I will get this to work. I am to ornery to fail. :D

By the way: Do you (I assume it's your own cards you are scanning) have an up to date edition of Descent, and so, are all cards the most recent printed version (read: with the latest errata changes)? ;)

I work with regular expressions all the time in my daily work (awk and its many friends), so I know how tedious it can be :)

Do you have a filestore for all of these images? Does it have read access to the public? Because I have a couple of other ideas that could make use of that.

By the way: Do you (I assume it's your own cards you are scanning) have an up to date edition of Descent, and so, are all cards the most recent printed version (read: with the latest errata changes)? ;)

They are my own cards that I am scanning. They are as up to date as when I bought them ... LOL. Which means, no. I mean, each of the expansions (from base game all the way through the H&M's) were acquired within days of it being available.

So, I probably have the oldest versions of all expansions ... i.e. the original ones.

I work with regular expressions all the time in my daily work (awk and its many friends), so I know how tedious it can be :)

Do you have a filestore for all of these images? Does it have read access to the public? Because I have a couple of other ideas that could make use of that.

I am actually hosting all of the images and all of the data files on Github, and yes, they are public.

Basically, the directory which contains the data files, contains a JS file for each card type, which actually includes all of the key information for each card. For example, I have a monster.js file which I am currently working on. It's contents look like the following:

{
"name": "Barghest",
"points": 0,
"act": "I",
"attack": "Melee",
"characteristics": [
"Minion: Speed: 4, Health: 4, Defense: Gray, Attack: Blue Red, Abilities: Action: Howl, Surge: +1 Heart",
"Master: Speed: 4, Health: 6, Defense: Gray, Attack: Blue Red, Abilities: Night Stalker, Action: Howl, Surge: +2 Hearts"
],
"expansion": "Base Game",
"image": "monsters/barghest-bg-act1-front.png",
"xws": "barghest"
},
{
"name": "Barghest",
"points": 1,
"act": "I",
"traits": [
"Wilderness",
"Dark"
],
"ability rules": [
"Night Stalker: If attacked by any non-adjacent hero, this monster may add 1 brown die to its defense roll.",
"Howl: Each hero within 3 spaces of this monster must test Willpower. Each hero that fails suffers 1 Fatigue."
],
"group size": [
"2 Heroes: 1,1",
"3 Heroes: 2,1",
"4 Heroes: 3,1"
],
"expansion": "Base Game",
"image": "monsters/barghest-bg-act1-back.png",
"xws": "barghest"
},
It then has a matching entry (pointed to by the "image" value in the above description) in the image directory.
All of this is publicly accessible, so it could be leverage for other reasons.
Edited by any2cards

One last thing ...

I believe I have finally been able to implement a feature that will force exact word matches, so that, for example, it doesn't hilight "lute" in the word "absolutely".

I need to play with it some more, and test various things, but we are getting there.

Version 1.7.5 of the extension has been published. It now supports Monster cards. Post #8 in this thread provides test links for all of the various cards currently supported.

Version 1.7.6 of the extension has been published. It now supports Shop Item (ACT I & II) cards. Post #8 in this thread provides test links for all of the various cards currently supported.

Version 1.7.7 of the extension has been published. It now supports Tainted cards. Post #8 in this thread provides test links for all of the various cards currently supported.

I have had to make some changes to the "rules" for how things get underlined. Specifically, I always use the EXACT name of the card to determine what is displayed.

This has resulted in a few issues, due to the number of cards that sometimes needs to be displayed. Accordingly, I have made the following changes:

1) If there is a familiar that also exists as a monster (looking at you for now Reanimate), in order to reference the familiar Reanimate, you will need to type F-Reanimate. The monster Reanimate continues to just be named that.

2) I am preparing all of the Agents (and their plot decks) as I type this. Since there are agents and lieutenants by the same name, and since each would display 4 cards each, I can't get that all to show. So, all of the agents will have to be referenced with a preceding "A-" as in A-Baron Zacareth versus just Baron Zacareth for the lieutenant. I hope that is clear.

I hope to get all of the agents and their plot decks done by the end of tomorrow. Once that is done, the D2e Companion Card Viewer will be able to display all of the existing cards (that have names) for all of the expansions of D2e as it exists today.

Good News !

I have finally finished generating data and image files for all of the D2e cards with names through all of the expansions. Version 1.7.8 of the extension has been published. It now supports Agents and all Plot Decks.

In addition, it now performs exact matches on key names within sentences, so that Lute shows up underlined, but does not show as underlined in the word "absolutely". Once again a big thanks to Guido Kessels for some much needed assistance in getting this to work.

Finally, as you may be aware, due to the number of cards that could potentially be shown in certain situations (for example Raythen who has hero cards, lieutenant cards, agent cards, etc.), I had to create one-offs to prevent system overload. The following one-offs currently exist:

  1. F-Reanimate to show the Reanimate familiar separately from the 4 cards of the Reanimate monsters.
  2. A-"Agent Name" for all agents to show them separately from the monster cards.
  3. H-Raythen and H-Serena for the hero cards for Raythen and Serena.

I absolutely hate this temporary solution, as when people type in key names, they aren't going to put "F-" or "A-" or "H-", etc.

So, I am hard at work at making this tool interactive. I am trying to allow for the following:

  1. Dynamic card sizing where you can choose to show "Small", "Medium", or "Large" cards.
  2. Interactive selection of what to display when there are duplicate names. For example, have the extension ask if you want to see the agent, lieutenant, or monster cards for the given name underlined. Perhaps even ask if you want the fronts, the backs, act 1, act 2, etc.

By making this interactive, I can hopefully avoid all of the one-off solutions, and make this app more functional. Anyway, enough hard work for today. I am so pleased I was able to get exact name/word matching to work.

I highly recommend implement version 1.7.8. Enjoy.

A-Baron Zacareth? His name is A-Baron Zachareth :P

Awesome update by the way

Edit: I thought both version worked, but without the H is only showing the back images, and with the H is showing the front images :D

Edited by Atom4geVampire

Time to give a name to these unnamed Travel cards now!

"The old woman in distress"

"The old man in distress"

"A random dude you meet who happens to have the best weapon of the game under his coat"

or more generally:

"Bad stuff happens to the heroes I"

"Bad stuff happens to the heroes II"

"Bad stuff happens to the heroes III"

"Bad stuff happens to the heroes IV"

etc.

Sorry, that's not quite true:

"Bad stuff happens to the heroes I"

"Nothing happens I"

"Nothing happens II"

"Bad stuff happens to the heroes II"

"Nothing happens III"

"Nothing happens IV"

:D

On a different note, two three things I noticed:

1- Is it correct that there are 65 shop items cards for Act I but only 48 for Act II? I am not able to count them currently, but the gap seems significant enough and I had the feeling both decks had around the same size?

2- Color of the extra defense dice. If you compare Nerekhall Plate, Obsidian Scalemail and Platemail. And no, it's not an issue with the scanning, my cards have the same color. My players claim the Obsidian Scalemail gives them a black dice and they´re probably right. Can it be confirmed?

3- There's an issue with Pariah from Tristayne Olliven's plot deck. Size is way bigger compared to the other cards.

Edited by Indalecio

In my experience, you can summarize the entire Travel Card Deck with "Nothing happens" .

Really, it feels wasted 90% of the time. Sometimes I'm like "Oh, we almost forgot the travel phase!" and everyone gets excited, everyone draws a card (well, depending on the number of steps) and.. nothing. Nuth-thang.