====== Make Your Own Trope Cards ======
If you want to make your own Trope Cards, then this page contains instructions on what you’ll need and how to do it.
There is also some more technical information at the bottom which will explain how the spreadsheet works and acts as a tutorial for the various functions, which should give you some scope for designing your own or changing up the formatting even if you're not familiar with Excel at all.
//(These instructions are quite basic in places: I wanted to make them accessible anyone, and so they’re aimed at the non-crafty, non-Excel Whizz layperson.)//
===== What You’ll Need ====
* The Trope Card spreadsheet, which can downloaded **{{:tropes:trope_card_spreadsheet.xlsx|here}}**. This works in Excel for Office 365 on Windows 10 as of March 2020, but should be generally okay across versions with a little bit of tweaking.
* The following fonts:
* **[[https://fonts.google.com/specimen/IM+Fell+Double+Pica|IM FELL Double Pica]]**
* **[[https://fonts.google.com/specimen/IM+Fell+Double+Pica+SC|IM FELL Double Pica SC]]**
* **[[http://fontsgeek.com/fonts/Hoefler-Text-Ornaments-Regular|Hoefler Text Ornaments]]**
* A colour printer.
* A laminator that can handle 250 micron pouches. I used **[[https://www.amazon.co.uk/gp/aw/d/B00KGSQ190|this one]]**.
* Some 98mm × 67mm (badge size) laminating pouches at 250 micron thickness, such as **[[https://www.amazon.co.uk/gp/product/B000I5ZNWW|these]]**.
* A paper guillotine (though scissors would work).
* A pair of scissors (optional).
===== Instructions =====
==== Selecting which Cards you want to Make ====
Firstly, you will need to select which Tropes you want to make in the spreadsheet. Go to the ‘**Information**’ **sheet**. In the ‘**Code**’ **column** there will be a two letter, three digit code for each Card. Copy the code for the first Card that you want to make((Unless it is a Metatrope, in which case special rules apply – see below.)), and go to the ‘**Card List**’ **sheet**. In the column marked ‘**List Here**’, paste the code at the top (in cell **B2**). The name of the Card should appear next to it (and, in rare cases, a custom formatting prompt). If you then go to the ‘**Cards**’ sheet, the Card that you selected will now have appeared in the top left of the first page of the sheet.
As you continue to add codes to the list, the Cards will successively appear left-to-right, top-to-bottom on the ‘**Cards**’ sheet. After 8 codes have been listed, the Cards will start appearing on the second page, and so on. The pages are listed next to the list so that you can easily know how many pages to print. The ‘**Cards**’ sheet is 10 pages long (for a **maximum of 80 Cards** at 8 to a page).
**Metatrope** Codes should be listed where it says ‘**List Metatropes Here**’. The sheet will warn you if you put a Metatrope code in the main list or a non-Metatrope code in the Metatrope list. As you list Metatropes, they will appear on the ‘**Metatrope Cards**’ sheet instead – the reason for this is that their formatting is somewhat different from other Cards. This sheet is only 2 pages long (for a **maximum of 16 Cards**).
Certain Cards require a little more tweaking:
* Some Cards have titles that are too long for the standard template. The sheet will warn you if this is the case by telling you what font size should be used in the title cell on the ‘**Cards**’ sheet for that Card. By default, this is size 18.
* **Rank ? Cards**, on the other hand, require the font size of the rank cell on the ‘Cards’ sheet to be size 36 – again, the sheet will warn you of this. By default, this is size 28.
* Make sure to change the formatting back to normal afterwards, to prevent future Cards coming out wrong (especially important with rank, which will get cut off for ranks III or IV at size 36).
(Just ignore the ‘**Images**’ sheet, by the way: it exists purely for technical reasons.)
==== Making the Cards ====
Now that you’ve selected which Cards you want to make, print however many pages you need to. Once finished, flip the paper in your printer and go to the ‘**Card Backs**’ sheet. This is only **1 page** (8 Cards) long, though as they’re all identical just print however many copies you need((I experimented with making the ‘**Cards**’ spreadsheet two-sided by incorporating the two, and found my printer didn’t line up the two sides very well when doing automatic duplex. On the other hand, manually doing two-sided printing like this was far more exact 🤷♀️ YMMV.)).
Once printed on both sides, hold the sheet up to the light on the back side to check that the black outline on the front is more than covered((It’s oversized by a few millimetres and so will mask small errors, though in my experience they’re rarely perfectly aligned. Once your printer’s done a few sheets with no issues just assume it’s fine – literally no-one will care.)).
The black border is punctuated by white crosses, which are cutting aids. Use the guillotine((Or, if you’re truly masochistic, scissors.)) to cut between them in a straight line – though it usually takes a few goes to work out exactly where your guillotine’s cutting line is((I find placing the Card 0.5-1mm above the edge of the blade is ideal.)). Starting around the edges gives the minimum number of cuts((11.)).
Once you have your pile of paper Cards, put the first in a pouch so that it lines up and then run it through the laminator((You should be able to have 2 on the go at once, if you alternate sides – the time it takes to put a Card in a pouch and put it in is about half the time it takes for a Card to laminate (30s).)).
And that’s it! __You have your very own Trope Cards__.
The small pouches mean that the occasional Card will get stuck inside the laminator and crumpled up: use one blade of a pair of scissors to fish it out, though be careful not to cut the Card((Or it will get stuck forever and ruin your laminator. rip.)). Running them through several times after this sort of works, but they'll always be a bit squiffy: it's usually easiest to just make a new Card.
==== Adding New Cards ====
If you just want to add your own Trope Cards using the pre-existing format, then the process is very simple. On the ‘**Information**’ sheet, add the new Card’s name, suit, rank, flavour text and quote in the relevant columns, and then assign a code to it (e.g. **Blah**). If you then type ‘**Blah**’ into the list on the ‘**Card List**’ sheet then it will appear, fully formatted, in the ‘**Cards**’ sheet – no further work necessary. The sheet will automatically know if you’ve decided to make a Metatrope, too, and will correct you if necessary.
However, there are a number of style guidelines to follow if you want to keep any new Cards in keeping with the canon ones:
The **codes** are arbitrary, with the two letters corresponding to the suit and the numbers counting upwards from 001 once the Cards have been put in alphabetical order by suit (i.e. Am001 is the first Armament alphabetically). Over the course of the game, the Cards were re-coded every time a new one was added. To do this, sort the Cards by name and then by suit – then select the first two codes in the suit and drag down to redistribute the codes for the whole suit. This makes it easy to see what code you need at a glance.
Capitalise every word in the **title** unless it's an article((e.g. a, an, the etc.)), conjunction((e.g. and, but, for etc.)) or preposition((e.g. at, by, from, with etc.)).
Don’t try to add any new **suits**, as it won’t work.
**Ranks** should be in Roman numerals, though watch out for the font size if you go higher than VI.
**Flavour text** can’t be longer than around 195 characters (or 4 lines on the Card), and should be descriptive without being a dictionary definition.
**Quotes** have a few, and are easiest to write out in Word before copying and pasting:
* They can’t be longer than around 295 characters (or 5 lines on the Card).
* The quote itself should be punctuated by separate opening and closing quotation marks (i.e. “ ”) rather than straight quotation marks (i.e. " ") or they will both display as closing marks on the Card and it looks //weird// and //wrong//.
* The quote should start new lines where appropriate (e.g. a new person speaking or a new line of the song). Where multiple people are speaking, use separate sets of quotation marks.
* The citation follows the format ‘Speaker/Singer (Work)’ (e.g. ‘Rose Lalonde (Homestuck)’), including songs from films and musicals, though if it is a standalone song it should follow ‘Song (Band/Singer)’ (e.g. ‘Poison (Alice Cooper)’). Generic quotes from famous people or things are occasionally used without an associated Work (e.g. ‘Alexa’). There is no full-stop after the citation.
* The Speaker/Singer will be the character where possible, though otherwise the author. If multiple characters are speaking, list them in order (e.g. ‘Ken the Nibblonian and Leela (Futurama)’).
* Where a character is quoting someone else, use single quotation marks (i.e. ‘ ’) for their own quote, and double quotation marks (i.e. “ ”) for their overall quote.
* Where the quote involves characters speaking //and// prose from the author which names the characters, cite the author and follow the same quotation mark rules, putting the whole quote in double quotation marks.
* Follow initials with full-stops, and include diacritics where necessary.
This all sounds complicated, but becomes intuitive pretty quickly.
**Metatropes** follow slightly different rules:
The **flavour text** box contains a formula, starting with ‘Take N Tropes’. This is then followed by ‘The resulting Trope(s)…’ specifiying how the input Tropes are converted into the output Tropes.
Rather than having a **quote**, they show how many Cards should be input and how many are output using the 🂠 character with the → character between them. If the input or output number is arbitrary, use ‘🂠 🂠 …’ on that side of the formula.
===== How the Spreadsheet Works =====
**This section is for if you want to muck around with the formatting or are just interested in how the spreadsheet was put together, though isn't necessary for making or designing your own Trope Cards.**
You're welcome to use it to design your own cards for another game etc.
This is really only aimed at people who are not familiar with programming but are familiar with Excel basics, to enable them to pick things up in this specific context. As such, __I have assumed no advanced knowledge of Excel or any knowledge of programming logic whatsoever__. Feel free to skip around if you already know things.
**VLOOKUP** is used to pull through info from the ‘**Information**’ sheet for most cells. **Conditional formatting** is used for the colour of the Cards, with some fudging due to VLOOKUP limitations. The suit images on the Cards rely on **dynamic images** on each Card that incorporate the **INDEX** and **MATCH** functions to pull through the correct image, because VLOOKUP also doesn't support images.
==== The Basic Info ====
These are the default settings of the spreadsheet:
* The cells on the ‘**Cards**’ and ‘**Metatrope Cards**’ sheets are exactly the right size for **98mm × 67mm** laminating pouches. They are **353 × 238** pixels, and as long as you stick to that it shouldn't matter if you change the sizes of specific cells.
* There is also an **8 pixel border** around each page (which is filled in on the ‘**Card Backs**’ sheet for wiggle room).
* The page margins are set to **1.4** at the top and bottom, and **0.9** at the left and right. You may need to adjust them, and if so make sure that columns **A** to **L** are on page **1**, **M** to **X** are on page **2** etc.
* Card cell dimensions and formatting:
* **Title**: ‘IM FELL Double Pica SC’ font; centred text; size 18; 225 × 60 pixels.
* **Rank**: ‘IM FELL Double Pica SC’ font; centred text; size 28; 59 × 60 pixels.
* **Suit**: empty, but overlayed with an image which is 82 × 60 pixels; 59 × 60 pixels.
* **Flavour text**: ‘IM FELL Double Pica’ font; aligned left; size 11; 343 × 84 pixels.
* **Quote**: ‘IM FELL Double Pica Roman’ font; centred text in italics; size 8.5; 343 × 84 pixels.
* **Metatrope Quote**: ‘IM FELL Double Pica Roman’ font; centred text; size 28; 343 × 84 pixels.
* The five suit symbols and some of the design on the card backs are from the font ‘Hoefler Text Ornaments’, though the suit symbols on the ‘**Cards**’, ‘**Metatrope Cards**’ and ‘**Images**’ sheets are saved as images.
* These images are overlayed over the suit cells with 84 × 62 **dynamic images**. This was placed by eye in a place that looked right for the first Card, and then copied and pasted across all Cards so that they are all identical. The master images are in the ‘**Images**’ sheet, and are embedded 165 × 165 images resized to fit neatly into 82 × 60 pixel cells((No, I don't know why this discrepancy made for the best results either.)). Changing the size of the master images or the cells //will// affect the Cards for that suit.
* The table on the ‘**Information**’ sheet is effectively infinite in length((Unless you need more than 1,048,576 types of Card, in which case tough luck.)).
* The number of Cards supported by the ‘**Cards**’ and ‘**Metatrope Cards**’ sheets are not hard limits, but are time-consuming to increase. See below.
* Adding a new suit is __not trivial__. See below.
* **Metatropes** require their own sheet because of formatting differences that cannot be resolved through conditional formatting.
==== Cell Merging ====
The Card format relies on certain rows and columns being merged across certain cells. This is useful for when you want certain cells to spread across multiple rows or columns.
To do this, select the cells you want to merge and select ‘**Merge & Centre**’ on the ‘**Home**’ ribbon, then ‘**Merge & Centre**’ again on the dropdown. To unmerge, select the cell and do the same thing. I wouldn't recommend this unless you're completely changing around the formatting.
==== The VLOOKUP Function ====
Put simply, the spreadsheet works by taking the code put into the ‘**Card List**’ sheet, looking up the corresponding data in the ‘**Information**’ sheet and then modifying the relevant card on the ‘**Cards**’ sheet accordingly.
The primary way in which it does this is by using the **VLOOKUP** function. This function has four parameters in the following format:
‘**VLOOKUP**(**value**,**table**,**index_number**,**approximate_match**)’
When run, Excel will take the ‘**value**’, then look for it in the first column of the specified ‘**table**’ and look across that row to the Nth column of the table specified by the ‘**index_number**’. It will then output what is in that cell. ‘**approximate_match**’ isn’t important, but should always be marked as ‘**FALSE**’((‘**approximate_match**’ tells the function that if no exact match can be found for the ‘**value**’ in the ‘**table**’ that the function should round down to the next exact value. This isn’t helpful here, as the values involved are the codes, and we need to know if there’s been a typo, for example. If the ‘**approximate_match**’ is omitted the value will default to ‘**TRUE**’, and so we always need to mark it as ‘**FALSE**’.)).
If you look at the rank, title, flavour text and quote cells for each of the Cards on the ‘Card’ sheet, you will see that – among other things – the **VLOOKUP** function is used. To take an example, the flavour text cell of the first Card (**C4**) contains:
‘**VLOOKUP**(**'Card List'!B2**,**Table1[#All]**,**5**,**FALSE**)’
* The ‘**value**’ is specified as ‘**'Card List'!B2**’, and will be taken as whatever value is put into that cell. The ‘**'Card List'!**’ prefix means that the cell is **B2 on the ‘Card List’ sheet** and not the ‘Cards’ sheet. This is the first cell of the ‘List Here’ column for the Card codes. Let’s assume the code ‘**ND088**’ has been entered.
* The ‘**table**’ is specified as ‘**Table1[#All]**’. **Table1** is the large table on the ‘Information’ sheet containing the information for every Card, and the **[#All]** suffix means **VLOOKUP** should look at the entire table. Therefore, the function will take the first code entered on the main list in ‘Card List’ (**ND088**), and look down the first column of the **Table1** for the matching code. ‘**ND088**’ is in the row for the Card ‘**Revenge!**’.
* The ‘**index_number**’ is specified as ‘**5**’. This means that once the function has found a matching code for ‘**ND088**’, it will look across to the value in the **fifth column of that row**. It will then output that value. This is the ‘Flavour Text’ column, which means it will output ‘**Preparation instructions: serve cold.**’
* We can safely ignore the ‘**approximate_value**’ entry as ‘**FALSE**’ – though it does still need to be there.
The process is essentially identical for Metatropes, though **VLOOKUP** is pointed to use the codes listed in ‘**List Metatropes Here**’ on the ‘**Card List**’ sheet instead. This is why Metatropes contain 🂠 formulae in the ‘**Quote**’ column.
Though **VLOOKUP** is the main function used by the title, rank, flavour text and quote cells, some other functions are also used by the spreadsheet
==== The IF Function ====
The **IF** function states that if a certain condition is met do one thing, otherwise do something else. It has three parameters in the following format:
‘**IF**(**logical_test**,**value_if_true**,**value_if_false**)’
When run, Excel will run the ‘**logical_test**’, which is a formula, output ‘**value_if_true**’ if the formula is true, and output ‘**value_if_false**’ if the formula is false.
This is used in quite a few places across the spreadsheet. One easy-to-understand example is where the ‘**Card List**’ sheet warns you if you have input a code that should be in the other list. In cell **I2**, where the warning appears for cell **G2**, part of the formula is:
‘**IF**(**VLOOKUP**(G2,Table1[#All],3,FALSE**)="Metatrope"**,**"","Wrong List"**)’
This formula nests **VLOOKUP** inside the **IF** clause, meaning that the **VLOOKUP** function is part of the ‘**logical_test**’ parameter.
* The ‘**logical_test**’ first calculates the output of the **VLOOKUP** function when a code has been entered into cell //G2// (and because the input is on the same sheet no cell prefix is necessary). The function is pointed to the //third column// of //Table1//, which is the ‘**Suit**’ column. The **VLOOKUP** function is then followed by ‘**="Metatrope"**’. In other words, the suit that that **VLOOKUP** has output is checked against the value ‘**Metatrope**’. Using the //‘ND088’// example, the formula would simplify to:
‘**IF**(**"Narrative Device"="Metatrope"**,**""**,**"Wrong List"**)’
* The ‘**value_if_true**’ is **""**. Quotes mean Excel should output the text between them, and so two quotes next to each other tell it that it should output nothing. In other words, the cell should remain empty if the code refers to a Metatrope.
* The ‘**value_if_false**’ is **"Wrong List"**. The cell will state ‘Wrong List’ if the code of a Card that is not a Metatrope is put into that list.
Clearly, a Narrative Device is not a Metatrope, and so using //‘ND088’// would cause this formula to output ‘**Wrong List**’. Using //‘Mt003’// would have caused it to output nothing (i.e. entering the code for a Metatrope on that list is fine).
**IF** clauses can be nested. What this means is that one or both of the outputs can //themselves// be **IF** clauses (and, inversely, can be part of the initial formula). This is also used in cell **I2** where the formula begins:
‘=**IF**(**G2=0**,**""**,**IF(VLOOKUP(…**’
Cell **I2** will always **check first whether G2 has the value of 0** (which is the default if the cell is empty). If it does, **I2** will output **""** (i.e. nothing), and will only move onto the **second IF clause containing the VLOOKUP function** if the cell contains another value (i.e. if **G2=0** is false). This is essentially a check that asks ‘has a value been entered?’ If this first check were omitted, the **VLOOKUP** check would find an empty row in **Table1** and output ‘**0**’, which is not equal to ‘**Metatrope**’, thereby causing the second **IF** function to output ‘**Wrong List**’. This is obviously something we don't want to happen as it would spam the ‘**Card List**’ sheet for every cell in the list with no entry.
Nested **IF** clauses are used much more extensively in checks against the main list (e.g. cell **D2**). These are mostly to warn for any formatting changes that are required for specific Cards. They are also used to list the names of the Cards, as well as on the ‘**Cards**’ and ‘**Metatrope Cards**’ sheets for further warnings.
The most important thing to remember is the formatting of the **IF** clauses in the formula: nested **IF** clauses will only trigger if a parent **IF** clause triggers them. For example, if would have been useless checking ‘**G2=0**’ //after// running **VLOOKUP** and receiving the output ‘**Wrong List**’((If you hate yourself, you can nest up to 64 IF clauses – though I wish you luck in understanding where something has gone wrong if you run into problems after you’ve shoved all of them into the formula bar.)).
==== The AND, OR, XOR and NOT Functions ====
These are functions that check whether formulae are true or false. **AND**, **OR** and **XOR** can contain as many formula parameters as you wish((255. Just don't.)), while **NOT** can only contain one.
The **AND** and **OR** functions are very intuitive, and output ‘**TRUE**’ or ‘**FALSE**’ depending on the formulae contained within them. They follow the following format:
‘**AND**(**logical1**,**logical2**,…)’((‘Logical **AND**’ (i.e. all of them must be true).))
‘**OR**(**logical1**,**logical2**,…)’((‘Logical **OR**’ (i.e. one or more of them must be true).))
**AND** will output ‘**TRUE**’ if and only if //all// of the formulae are true, whereas **OR** will output ‘**TRUE**’ if at least //one// of the formulae are true. As a corollary, **AND** will output ‘**FALSE**’ if at least //one// of the formulae are false, whereas **OR** will output ‘**FALSE**’ if and only if //all// of the formulae are false. For example, ‘**AND**(**B2=0**,**B3=0**,**B4=0**)’ would output ‘**TRUE**’ if and only if the first three entries on the main list were blank, whereas ‘**OR**(**B2=0**,**B3=0**,**B4=0**)’ would output ‘**TRUE**’ if at least one of them were blank.
The **XOR** function follows the following format:
‘**XOR**(**logical1**,**logical2**,…)’((‘Logical **XOR**’ (i.e. one or other but not both of them must be true).))
Another name for **XOR** is the ‘**exclusive OR**’, and when it contains two formulae it will output ‘**TRUE**’ if and only if //one// of the formulae are true. If both or neither are true then it will output ‘**FALSE**’. Inputting more than two formulae causes it to output ‘**TRUE**’ if and only if an //odd// number of formulae are true, and ‘**FALSE**’ if and only if an //even// number of formulae are true. For example, ‘**XOR**(**B2=0**,**B3=0**)’ would output ‘**TRUE**’ if either **B2** //or// **B3** were blank, but ‘**FALSE**’ if both or neither were.
The **NOT** function outputs ‘**TRUE**’ or ‘**FALSE**’ follows the following format:
‘**NOT**(**logical**)’((‘Logical **NOT**’ (i.e. it must be false).))
It will output ‘**TRUE**’ if the formula is false, and ‘**FALSE**’ if the formula is true. This is useful when you want to say ‘anything but X is acceptable’. For example, in cell **D5** on the ‘**Metatrope Cards**’ sheet ‘**NOT**(**C2="Metatrope"**)’ outputs ‘**TRUE**’ if cell **C2** contains any value other than ‘**Metatrope**’.
**NOT** can be combined with **AND**, **OR** and **XOR** to complete the set of basic logical functions:
‘**NOT**(**OR**(**logical1**,**logical2**,…))’((‘Logical **NOR**’ (i.e. none of them can be true).)) will output ‘**TRUE**’ if and only if //all// of the formulae are false, and ‘**FALSE**’ if at least //one// of the formulae are true.
‘**NOT**(**AND**(**logical1**,**logical2**,…))’((‘Logical **NAND**’ (i.e. not all of them can be true).)) will output ‘**TRUE**’ if at least //one// of the formulae are false, and ‘**FALSE**’ if and only if //all// of the formulae are true.
‘**NOT**(**XOR**(**logical1**,**logical2**,…))’((‘Logical **XNOR**’ (i.e. both functions must be either true or false).)) will output ‘**TRUE**’ if and only if and //even// number of formulae are true (with 2 inputs, both or neither), and ‘**FALSE**’ if and only if an //odd// number of formulae are true (with 2 inputs, only 1 of them).
They can also be combined in various ways. For example, ‘**AND**(**OR**(**logical1**,**logical2**),**logical3**)’ gives ‘**TRUE**’ if and only if ‘**logical3**’ is true, but also requires only one of ‘**logical1**’ or ‘**logical2**’ to be true.
These are extremely useful when working out what conditions should satisfy or trigger an **IF** clause, and are useful in simplifying a lot of formulae that would otherwise be extremely cumbersome((Though watch out: if one of those conditions is incalculable (e.g. a **VLOOKUP** function with no //specified value// will return an error), Excel will return the whole formula as an error even if one of the other conditions should automatically mark that part of it as ‘**TRUE**’ or ‘**FALSE**’ (such as that **VLOOKUP** function pointed at an empty cell being included in an **OR** function, with the other formula checking whether that cell is empty).)).
==== Conditional Formatting ====
The colour of the Cards comes from **conditional formatting**. Essentially, Excel will change the format of a cell (such as its colour) based on various specified rules. By default, the cells for each Card are white. If you select all of the cells for a particular card on the ‘**Cards**’ sheet, not including the black border, then press ‘**Conditional Formatting**’ on the ‘**Home**’ ribbon followed by ‘**Manage Rules…**’ you should see four rules for that Card in the Conditional Formatting Rules Manager. For the first Card it will say it applies to ‘**=$C$3:$E$5**’, meaning all cells ranging from **C3** to **E5**. Just ignore the **$** characters((These are placed in front of column and row signifiers to create absolute references. In other words, they will not adapt when the formula is copied to a new cell, such as through copy and paste or dragging the cell down to apply the formula to a number of cells (i.e. for the warning cells for on the ‘**Card Lists**’ sheet). I used absolute references here because, for reasons I can't understand, copying and pasting Cards to expand the sheet caused //more// confusion with the conditional formatting rules, rather than less.)).
If you double click one of the rules it will bring up the ‘**Edit Formatting Window**’ The window will show ‘**Use a formula to determine which cells to format**’ highlighted, meaning that the formatting of the cells is determined by a formula. For the Object suit rule for the first Card, the formula will be ‘**=$C$2="Object"**’. In other words, cell **C2** must contain the text ‘**Object**’. **C2** is the top part of the black border of the Card.
This cell contains a **VLOOKUP** function that pulls through the suit of the specified Card. This is in black text on a black background, and is done because I simply couldn’t get Excel to allow **VLOOKUP** in conditional formatting at all((I think this is a known bug.)). Each of the four rules for each Card check for this value, and one of the rules should output ‘**TRUE**’ for any given Card, given each Card is in one of the four suits (ignoring Metatropes for the time being).
On that window, if you click ‘**Format…**’, go to the ‘**Fill**’ tab and click the ‘**Fill Effects…**’ button you can see the specified effect, which is a two colour downward gradient between a dark and a light shade of the same colour. This effect is applied //per cell// and not per Card.
The ‘**Metatrope Cards**’ sheet works in a very similar way, though with only one rule per Card. The reason for not having the effect applied at all times on that sheet is because it makes it easier to work with.
==== Suit Images ====
The images for each suit rely on **dynamic images** overlaying the Cards. For some reason, when you select a dynamic image you cannot simply enter a formula into the formula bar, but instead must create a new “**Name**” in the **Name Manager** which refers to a specific formula and then point the image to that instead((Yes, it’s stupid.)). Each Card has its own dynamic image, and each dynamic image therefore requires its own formula; there are 96 in total saved in the spreadsheet.
The **Name Manager** can be found on the ‘**Formulas**’ ribbon. When clicked, you will see a list of names that all follow the format ‘**SuitLookup__N__**’. These count up in order from 1 to 80 for each Card on the ‘**Cards**’ sheet, with ‘**SuitLookup__N__MT**’ functions counting up from 1 to 16 for each Card on the ‘**Metatrope Cards**’ sheet.
If you click on ‘**SuitLookup1**’, referring to the first Card, it will refer to:
‘=**INDEX**(Images!$B$2:$B$6,**MATCH**(Cards!$C$2,Images!$A$2:$A$6,0))’
If you click off the **Name Manager** and select the image on the first Card you will see ‘**=SuitLookup1**’ in the formula bar. In essence, it is a custom function equal to the formula above.
The **INDEX** and **MATCH** functions are reasonably similar to the **VLOOKUP** function, though not the same. The **INDEX** function specifies the value in the Nth row in a given range. It follows the following format:
‘**INDEX**(**array**,**row_num**)’((It can also contain two further parameters, ‘**col_num**’ and ‘**area_num**’, but these are optional and not used in the spreadsheet.))
The ‘**array**’ refers to a range of cells, while ‘**row_num**’ specifies which row the output should be taken from. As an example, it could be:
‘**INDEX**(**Images!$B$2:$B$6**,**2**)’
The ‘**array**’ is **cells B2 to B6 on the ‘Images’ sheet**, and the ‘**row_num**’ is **2**, meaning the **second row in that range**. The function would therefore output the value of **B3** in the ‘**Images**’ sheet, which is the **image of the sun**((The optional ‘**col_num**’ would specify which column in the range to use, while ‘**area_num**’ is necessary if ‘**array**’ covers multiple ranges of cells.)). This differs from **VLOOKUP**, which instead looks for the row which contains a //specified value// in the first column of a //table// (i.e. a code), and then outputting the value in a //specified column//.
In the real example, the row is defined by the **MATCH** function nested inside the **INDEX** function.
The **MATCH** function works by outputting which position a given value holds in a range of cells((In effect, the inverse of the **INDEX** function.)). It follows the following format:
‘**MATCH**(**lookup_value**,**lookup_array**,**match_type**)’
The ‘**lookup_value**’ is the given value, the ‘**lookup_array**’ is a range of cells, and the ‘**match_type**’ states how the function should operate if it does not find an exact match. In the formula above it is:
‘**MATCH**(**Cards!$C$2**,**Images!$A$2:$A$6**,**0**)’
The ‘**lookup_value**’ is **cell C2 in the ‘Cards’ sheet** (i.e. the suit of the first Card). The formula then takes this suit and checks for what order it comes in the range of values in **A2 to A6 on the ‘Images’ sheet**. The ‘**0**’ for the ‘**match_type**’ means only an exact match is acceptable((This is an optional parameter that defaults to ‘**1**’. ‘**1**’ means ‘round down to the nearest exact match if an exact value cannot be found’, while ‘**-1**’ means ‘round up’ in the same scenario. Neither of these make sense to use, and could cause unintended results.)).
Taking these two together, if the suit were ‘**Object**’, the **MATCH** function would see ‘**Object**’ on the ‘**Cards**’ sheet, **check the range A2 to A6 on the ‘Images’ sheet** for an **exact match** and find that ‘**Object**’ appeared in the **fifth row**. It would therefore output **5**. The main formula would therefore simplify to:
‘=**INDEX**(**Images!$B$2:$B$6**,**5**)’
This means that the function checks for the **fifth row** of the range **B2 to B6 on the ‘Images’ sheet** and outputs what it finds. This is the **image of the ship**.
Therefore, the image on the first Card which is defined by the formula ‘**=SuitLookup1**’ would become the image of the ship.
You may be wondering why I didn't use **VLOOKUP**. Unfortunately, it doesn't work with images.
==== Expanding the Spreadsheet ====
If you want to increase the number of pages that can be printed at once, you will need to manually copy the formatting for the Cards. From my experience, most of this cannot be done automatically and so it’s a huge faff. This includes manually creating new “**Names**” for each Card on the **Name Manager**, and sorting out the **conditional formatting** rules (which do not play nicely with copy and paste).
In addition, you will need to extend the lists on the ‘**Card List**’ sheet, including dragging down columns **C**, **D**, **H** and **I** so that the sheet works correctly with the expanded lists.
If you want to create any new Cards that require custom formatting changes for that Card, the functions in those columns can be amended to account for the new Card by nesting a new **IF** clause or using the **OR** function to check for that Card if its special requirements are identical to a pre-existing Card. **Conditional formatting** has serious limitations on what it can change, and so you may need to create a new sheet if your Card requires certain changes such as text size, cell size, cell merging etc. This is why Metatropes have their own sheet.
If you want to create a new suit, this is doable using **conditional formatting** and the **Name Manager**, but will require a large number of modifications to the existing functions, and the addition of a new 82 × 60 image on the ‘**Images**’ sheet.
===== Questions =====
If you have any questions about this, or just want some help, please feel free to drop me an email on my personal address at **[[jc@jecarter.co.uk]]** and I'll do my best to assist.