From e053c56a88fabe35d05307e1d8b5c56e9a65c6dc Mon Sep 17 00:00:00 2001 From: Louis Burke Date: Sun, 14 Apr 2019 14:06:11 -0400 Subject: [PATCH] Added more cards. --- Makefile | 14 ++--- cards.sql | 126 ++++++++++++++++++++++++++++---------- ideas | 8 +++ iditacard.cls | 2 +- scripts/generate_cards.sh | 2 +- scripts/list_cards.sql | 21 ------- 6 files changed, 109 insertions(+), 64 deletions(-) delete mode 100644 scripts/list_cards.sql diff --git a/Makefile b/Makefile index 9e444a9..3084ae1 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: setup all clean check printrun cardrun +.PHONY: all clean check printrun cardrun decks .PRECIOUS: %.pdf %.png GENERATED_DIR?=generated @@ -31,10 +31,6 @@ RAW_DECK_LIST=$(shell ./scripts/decklist.sh) DECK_LIST=$(RAW_DECK_LIST:%=$(GENERATED_DIR)/%) DECK_DEPENDENCIES=$(DECK_LIST:%=%.d) -setup: $(SENTINEL) - ./scripts/generate_cards.sh $(GENERATED_DIR) - touch $(SENTINEL) - $(SENTINEL): cards.sql ./scripts/generate_cards.sh $(GENERATED_DIR) touch $@ @@ -43,10 +39,10 @@ $(SENTINEL): cards.sql echo -n 'outputs/$*.pdf:' > $@ tr '\n' ' ' < $< >> $@ echo -e '\n\tpdfunite $$+ $$@' >> $@ - cat $< | sort | uniq -c | sed -e 's@\([[:digit:]]\+\) \(.\+/\)*\(.\+\).pdf@export: outputs/$*/\3[\1].png@' >> $@ - cat $< | sort | uniq -c | sed -e 's@\([[:digit:]]\+\) \(.\+/\)*\(.\+\).pdf@outputs/$*/\3[\1].png: \2\3[\1].png; cp \2\3[\1].png outputs/$*/\3[\1].png@' >> $@ - mkdir -p outputs/$* - echo 'decks: outputs/$*.pdf' >> $@ + cat $< | sort | uniq -c | sed -e 's@ *\([[:digit:]]\+\) \(.\+/\)*\(.\+\).pdf@export: outputs/$*/\3[\1].png@' >> $@ + cat $< | sort | uniq -c | sed -e 's@ *\([[:digit:]]\+\) \(.\+/\)*\(.\+\).pdf@outputs/$*/\3[\1].png: \2\3[\1].png; cp \2\3[\1].png outputs/$*/\3[\1].png@' >> $@ + mkdir -p outputs/$(*D) + echo 'decks: outputs/$(*F).pdf' >> $@ Makefile.deps: $(DECK_DEPENDENCIES) $(SENTINEL) cat $^ > $@ diff --git a/cards.sql b/cards.sql index cc4adec..7c3eb74 100644 --- a/cards.sql +++ b/cards.sql @@ -43,10 +43,8 @@ INSERT INTO Effects VALUES(20,'Double the final distance','\doubledistance'); INSERT INTO Effects VALUES(21,'Damage Effect','\damagetext'); INSERT INTO Effects VALUES(22,'Counts as 2 dogs.','\istwodogs'); INSERT INTO Effects VALUES(23,'Your other dogs have +1 speed','\otherdogshave{\speed{1}}'); -INSERT INTO Effects VALUES(24,'Can hold more attachments','\canholdattachments{#}'); -INSERT INTO Effects VALUES(25,'Turn Draw','\turndraw{#}'); -CREATE TABLE Cards (id INTEGER PRIMARY KEY, Name TEXT, Energy TEXT, Health TEXT, Risk TEXT, Flavour TEXT, Image TEXT, Type INTEGER REFERENCES Types (id)); +CREATE TABLE Cards (id INTEGER PRIMARY KEY, Name TEXT, Energy TEXT, Health TEXT, Risk TEXT, Flavour TEXT, Image TEXT, Typename INTEGER REFERENCES Types (id)); INSERT INTO Cards VALUES(1,'A Hat',2,2,0,'I bet its a valve hat.','hat',1); INSERT INTO Cards VALUES(2,'Dog Chow',1,3,0,'A hungry dog is a slow dog.','dog_chow',1); INSERT INTO Cards VALUES(3,'Good Dog',3,3,0,'Good boy.','good_dog',2); @@ -79,19 +77,26 @@ INSERT INTO Cards VALUES(101,'Squirrel',2,2,1,'Dogs \emph{hate} squirrels.','squ INSERT INTO Cards VALUES(102,'Tiara',2,2,1,'Makes the dog feel special.','tiara',1); INSERT INTO Cards VALUES(103,'Bear',2,2,2,'In hindsight, not the best idea.','bear',2); INSERT INTO Cards VALUES(104,'Big Dog',2,2,0,'He''s not red though.','big_dog',2); -INSERT INTO Cards VALUES(105,'Cat',1,1,0,'They say a cat has nine lives.','cat',2); -INSERT INTO Cards VALUES(106,'Chihuahua',1,1,2,'OMG shut up!','chihuahua',2); -INSERT INTO Cards VALUES(107,'Greyhound',0,0,2,'What happens when you mix the colours on a husky? You get a grey hound.','greyhound',2); -INSERT INTO Cards VALUES(108,'Lazy Dog',3,3,0,'Let''s go for a walk!','lazy_dog',2); -INSERT INTO Cards VALUES(109,'Malamute',4,4,1,'A common sled hauling breed.','malamute',2); -INSERT INTO Cards VALUES(110,'Polar Bear',1,1,1,'Do not go near a polar bear.','polar_bear',2); -INSERT INTO Cards VALUES(111,'Problem Dog',1,1,1,'I swear, if you weren''t so fast.','problem_dog',2); -INSERT INTO Cards VALUES(112,'Retriever',2,2,1,'Fetch!','retriever',2); --- TODO: Be more stringent with which cards get included... --- Likely removal candidates: --- Polar Bear (can just be bear) --- Cat --- Malamute (maybe give it a different ability) [reduce ability count] +INSERT INTO Cards VALUES(105,'Greyhound',0,0,2,'What happens when you mix the colours on a husky? You get a grey hound.','greyhound',2); +INSERT INTO Cards VALUES(106,'Malamute',2,2,1,'A common sled hauling breed.','malamute',2); +INSERT INTO Cards VALUES(107,'Problem Dog',1,1,1,'I swear, if you weren''t so fast.','problem_dog',2); +INSERT INTO Cards VALUES(108,'Bison',2,0,1,'It''s very lean.','bison',3); +INSERT INTO Cards VALUES(109,'Poutine',0,2,0,'The great Canadian carb!','poutine',3); +INSERT INTO Cards VALUES(110,'Venison',0,2,0,'Better than breakfast.','venison',3); +INSERT INTO Cards VALUES(111,'Steak',0,0,0,'Well aren''t you fancy.','steak',3); +INSERT INTO Cards VALUES(112,'Jerky',1,1,0,'Watch your sodium!','jerky',3); +INSERT INTO Cards VALUES(113,'Midnight Sun',1,1,1,'Strange things are done in the midnight sun.','midnight_sun',4); +INSERT INTO Cards VALUES(114,'Push',1,0,0,'Not a full mush, but still putting in some effort.','push',4); +INSERT INTO Cards VALUES(115,'Slow and Steady',0,0,0,'Maybe a bit too slow.','slow_and_steady',4); +INSERT INTO Cards VALUES(116,'Band Aid',0,0,0,'Not much.','band_aid',5); +INSERT INTO Cards VALUES(117,'Bandage',1,0,0,'Make sure you wrap it tight.','bandage',5); +INSERT INTO Cards VALUES(118,'Brandy',0,0,1,'Brought by a St. Bernard.','brandy',5); +INSERT INTO Cards VALUES(119,'Caffeine',0,2,0,'The greatest addiction ever.','caffeine',5); +INSERT INTO Cards VALUES(120,'Improvise',0,0,0,'MacGyver of the north.','improvise',6); +INSERT INTO Cards VALUES(121,'Makeshift Sled',1,1,0,'Rickety, but it''ll hold.','makeshift_sled',6); +INSERT INTO Cards VALUES(122,'Salvage',1,1,0,'Take the good with the bad.','salvage',6); +INSERT INTO Cards VALUES(123,'Antique Sled',0,5,0,'Withstood the test of time.','antique_sled',6); +INSERT INTO Cards VALUES(124,'Rush',0,3,1,'Hurry up!','rush',6); CREATE TABLE Card_Effects (Card INTEGER REFERENCES Cards (id), Effect INTEGER REFERENCES Effects (id), Amount INTEGER); INSERT INTO Card_Effects VALUES(1,1,1); @@ -145,18 +150,37 @@ INSERT INTO Card_Effects VALUES(102,7,1); INSERT INTO Card_Effects VALUES(102,1,1); INSERT INTO Card_Effects VALUES(103,7,5); INSERT INTO Card_Effects VALUES(104,7,3); -INSERT INTO Card_Effects VALUES(105,10,1); -INSERT INTO Card_Effects VALUES(106,23,1); +INSERT INTO Card_Effects VALUES(105,7,3); +INSERT INTO Card_Effects VALUES(105,16,1); +INSERT INTO Card_Effects VALUES(106,1,2); INSERT INTO Card_Effects VALUES(107,7,3); -INSERT INTO Card_Effects VALUES(107,16,1); -INSERT INTO Card_Effects VALUES(108,7,-1); -INSERT INTO Card_Effects VALUES(108,24,2); -INSERT INTO Card_Effects VALUES(109,25,1); -INSERT INTO Card_Effects VALUES(110,7,3); -INSERT INTO Card_Effects VALUES(110,19,1); -INSERT INTO Card_Effects VALUES(111,7,3); -INSERT INTO Card_Effects VALUES(111,1,-1); -INSERT INTO Card_Effects VALUES(112,1,2); +INSERT INTO Card_Effects VALUES(107,1,-1); +INSERT INTO Card_Effects VALUES(108,2,5); +INSERT INTO Card_Effects VALUES(109,2,1); +INSERT INTO Card_Effects VALUES(109,18,1); +INSERT INTO Card_Effects VALUES(110,2,3); +INSERT INTO Card_Effects VALUES(111,2,1); +INSERT INTO Card_Effects VALUES(112,2,3); +INSERT INTO Card_Effects VALUES(113,8,10); +INSERT INTO Card_Effects VALUES(114,8,5); +INSERT INTO Card_Effects VALUES(115,8,0); +INSERT INTO Card_Effects VALUES(115,2,1); +INSERT INTO Card_Effects VALUES(116,5,1); +INSERT INTO Card_Effects VALUES(116,6,1); +INSERT INTO Card_Effects VALUES(117,5,1); +INSERT INTO Card_Effects VALUES(117,6,5); +INSERT INTO Card_Effects VALUES(118,5,1); +INSERT INTO Card_Effects VALUES(118,6,5); +INSERT INTO Card_Effects VALUES(119,5,1); +INSERT INTO Card_Effects VALUES(119,6,2); +INSERT INTO Card_Effects VALUES(119,2,1); +INSERT INTO Card_Effects VALUES(120,4,1); +INSERT INTO Card_Effects VALUES(121,3,2); +INSERT INTO Card_Effects VALUES(121,4,6); +INSERT INTO Card_Effects VALUES(122,3,3); +INSERT INTO Card_Effects VALUES(122,4,2); +INSERT INTO Card_Effects VALUES(123,3,2); +INSERT INTO Card_Effects VALUES(123,4,8); CREATE TABLE Deck_Cards (Deck INTEGER REFERENCES Decks (id), Card INTEGER REFERENCES Cards (id), Amount INTEGER); INSERT INTO Deck_Cards VALUES(1,1,1); @@ -228,17 +252,55 @@ INSERT INTO Deck_Cards VALUES(20,29,1); INSERT INTO Deck_Cards VALUES(20,30,1); INSERT INTO Deck_Cards VALUES(20,31,1); INSERT INTO Deck_Cards VALUES(21,40,26); -INSERT INTO Deck_Cards VALUES(10,105,2); + +INSERT INTO Deck_Cards VALUES(10,106,2); INSERT INTO Deck_Cards VALUES(10,108,2); INSERT INTO Deck_Cards VALUES(10,109,2); +INSERT INTO Deck_Cards VALUES(10,110,2); +INSERT INTO Deck_Cards VALUES(10,111,2); INSERT INTO Deck_Cards VALUES(10,112,2); -INSERT INTO Deck_Cards VALUES(11,100,4); +INSERT INTO Deck_Cards VALUES(10,116,2); +INSERT INTO Deck_Cards VALUES(10,117,2); +INSERT INTO Deck_Cards VALUES(10,118,2); +INSERT INTO Deck_Cards VALUES(10,119,2); +INSERT INTO Deck_Cards VALUES(11,120,2); +INSERT INTO Deck_Cards VALUES(10,121,2); +INSERT INTO Deck_Cards VALUES(10,122,2); +INSERT INTO Deck_Cards VALUES(10,123,2); + +INSERT INTO Deck_Cards VALUES(11,100,2); INSERT INTO Deck_Cards VALUES(11,101,2); INSERT INTO Deck_Cards VALUES(11,102,2); INSERT INTO Deck_Cards VALUES(11,103,2); INSERT INTO Deck_Cards VALUES(11,104,2); -INSERT INTO Deck_Cards VALUES(11,106,2); +INSERT INTO Deck_Cards VALUES(11,105,2); INSERT INTO Deck_Cards VALUES(11,107,2); -INSERT INTO Deck_Cards VALUES(11,110,2); -INSERT INTO Deck_Cards VALUES(11,111,2); +INSERT INTO Deck_Cards VALUES(11,113,2); +INSERT INTO Deck_Cards VALUES(11,114,2); +INSERT INTO Deck_Cards VALUES(11,115,2); +-- 2 more movements (or 1 movement, 1 dog) + + +CREATE VIEW Card_List AS +SELECT + Cards.Name AS 'Card Name', + Cards.Energy AS 'Energy Cost', + Cards.Health AS 'Health Cost', + Cards.Risk AS 'Risk', + Cards.Flavour AS 'Flavour', + Cards.Image AS 'Image', + Types.Name AS 'Type', + group_concat(replace(Effects.Command,'#',Card_Effects.Amount), '\\') AS 'Effect(s)', + Decks.Name AS 'In Deck', + Deck_Cards.Amount AS 'Count' +FROM Cards + JOIN Types ON Types.id = Cards.Typename + CROSS JOIN Card_Effects ON Card_Effects.Card = Cards.id + JOIN Effects ON Effects.id = Card_Effects.Effect + CROSS JOIN Deck_Cards ON Deck_Cards.Card = Cards.id + JOIN Decks ON Deck_Cards.Deck = Decks.id +GROUP BY + Cards.id, + Decks.id +ORDER BY Cards.Name; COMMIT; diff --git a/ideas b/ideas index 369e0d4..e21e989 100644 --- a/ideas +++ b/ideas @@ -1,3 +1,11 @@ +Automatic move by "0" each day unless: + - new day + - hypothermia + - starvation +If *both* hypo and starve, then move by "-0"! +Two-day duration for effects of sleds and personals (add, then take [if still there] - check balance of starter cards [how hard is it to get nothing?]). + + Kill -> Sacrifice for *own* dogs. More compact symbols for destroy/take. Maybe X Y and X Y? Maybe undo icons for some things, follow the 5 second rule as per diff --git a/iditacard.cls b/iditacard.cls index 7afafb0..ea3c2f5 100644 --- a/iditacard.cls +++ b/iditacard.cls @@ -114,7 +114,7 @@ \newcommand{\supply}[1]{Add \ifnum 1=#1 a card \else #1 cards \fi to the supply} %-- \newcommand{\take}[1]{\ifnum 0<#1 Take \ifnum 1=#1 a card \else #1 cards \fi from the supply\fi} %-- \newcommand{\see}[1]{Look at the top \ifnum 1=#1 card \else #1 cards \fi of your deck} % TODO: Eye icon %-- -\newcommand{\destroy}[1]{\ifnum 0<#1 Destroy up to #1 of them\fi discard as many as you want and shuffle the rest back into your deck} % TODO: Trash icon %-- +\newcommand{\destroy}[1]{\ifnum 0<#1 Destroy up to #1 of them\fi discard as many as you want and shuffle the rest back into your deck} % TODO: Trash icon %-- I THINK THIS IS THE RIGHT EFFECT THOUGH \newcommand{\speed}[1]{Speed #1} %-- \newcommand{\move}[1]{Move #1\,mym} % TODO: SIify mym %-- \newcommand{\discardonkill}{Discarded when killed} diff --git a/scripts/generate_cards.sh b/scripts/generate_cards.sh index b3ed11b..1ccb306 100755 --- a/scripts/generate_cards.sh +++ b/scripts/generate_cards.sh @@ -4,7 +4,7 @@ PARENT_DIR="${1:-cards}" mkdir -p "$PARENT_DIR" -sqlite3 -init cards.sql < scripts/list_cards.sql | \ +echo "SELECT * FROM Card_List;" | sqlite3 -init cards.sql | \ while IFS="|" read -r name energy health risk flavour image typename effects deckname cardcount; do case $cardcount in 1) rarity=legendary ;; diff --git a/scripts/list_cards.sql b/scripts/list_cards.sql deleted file mode 100644 index 1695039..0000000 --- a/scripts/list_cards.sql +++ /dev/null @@ -1,21 +0,0 @@ -SELECT - Cards.Name, - Cards.Energy, - Cards.Health, - Cards.Risk, - Cards.Flavour, - Cards.Image, - Types.Name, - group_concat(replace(Effects.Command,'#',Card_Effects.Amount), '\\'), - Decks.Name, - Deck_Cards.Amount -FROM Cards - JOIN Types ON Types.id = Cards.Type - CROSS JOIN Card_Effects ON Card_Effects.Card = Cards.id - JOIN Effects ON Effects.id = Card_Effects.Effect - CROSS JOIN Deck_Cards ON Deck_Cards.Card = Cards.id - JOIN Decks ON Deck_Cards.Deck = Decks.id -GROUP BY - Cards.id, - Decks.id -ORDER BY Cards.Name;