Advertisement
illlitr8

Untitled

Jan 23rd, 2013
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.30 KB | None | 0 0
  1. #!/usr/bin/python
  2.  
  3. import io, sys
  4. from random import randrange
  5.  
  6. arguments = [];
  7.  
  8.  
  9. f = open('cards.txt');
  10. filter = "";
  11. if len(sys.argv) > 1:
  12. filter = sys.argv[1];
  13. else:
  14. filter = raw_input("Enter short names of sets you want included >>> ")+" ";
  15. print "";
  16.  
  17. writerules = False;
  18. writeset = False;
  19. writeurl = False;
  20. nocommons = False;
  21. norares = False;
  22. nomythics = False;
  23. boosteramount = 1;
  24. if len(sys.argv) > 2:
  25. switches = sys.argv[2];
  26. else:
  27. switches = raw_input("Enter switches (e.g. -commons) >>> ");
  28. print "";
  29.  
  30. if "rules" in switches:
  31. writerules = True;
  32. if "set" in switches:
  33. writeset = True;
  34. if "url" in switches:
  35. writeurl = True;
  36. if "-commons" in switches:
  37. nocommons = True;
  38. if "-rares" in switches:
  39. norares = True;
  40. if "-mythics" in switches:
  41. nomythics = True;
  42. if "packs=" in switches:
  43. amnt = switches.split("packs=")[1].split(" ")[0];
  44. boosteramount = int(amnt);
  45.  
  46. cards = []
  47. rarecards = []
  48. mythics = []
  49.  
  50. lines = f.readlines();
  51. start = 0;
  52. end = 0;
  53.  
  54. for i in range(0, len(lines)):
  55. lines[i] = lines[i].replace('\n', '');
  56.  
  57. for i in range(0, len(lines)):
  58. line = lines[i]#.replace('\n', '');
  59. if line == "":
  60. end = i;
  61. rules = lines[start+1:end-1];
  62. lines[start] = lines[start].replace('\n', '');
  63. lines[end-1] = lines[end-1].replace('\n', '');
  64.  
  65. add = False;
  66. if filter == "" or filter == " ":
  67. add = True;
  68. else:
  69. for cardset in lines[end-1].split(','):
  70. if cardset.split('-')[0]+" " in filter:
  71. add = True;
  72.  
  73. if add == True:
  74. if "-R" in lines[end-1]:
  75. rarecards.append(
  76. [lines[start], lines[end-1], rules]);
  77. elif "-M" in lines[end-1]:
  78. mythics.append(
  79. [lines[start], lines[end-1], rules]);
  80. else:
  81. cards.append(
  82. [lines[start], lines[end-1], rules]);
  83. start = i + 1;
  84.  
  85. def countcards():
  86. count = 0
  87. for card in cards:
  88. count = count + len(card[1].split(','));
  89. for card in rarecards:
  90. count = count + len(card[1].split(','));
  91. return count;
  92.  
  93. def drawcommon(roll):
  94. x = 0;
  95. for card in cards:
  96. if len(card[1].split(','))+x > roll:
  97. if card[0] == "":
  98. continue;
  99. return card;
  100. else:
  101. x = x + len(card[1].split(','));
  102.  
  103. def drawrare():
  104. mythic = randrange(7);
  105. x = 0;
  106. if mythic == 0 and len(mythics) > 0:
  107. #print "Mythic! :D"
  108. roll = randrange(len(mythics));
  109. for card in mythics:
  110. if len(card[1].split(','))+x > roll:
  111. if card[0] == "":
  112. continue;
  113. return card;
  114. else:
  115. x = x + len(card[1].split(','));
  116. else:
  117. roll = randrange(len(rarecards));
  118. for card in rarecards:
  119. if len(card[1].split(','))+x > roll:
  120. if card[0] == "":
  121. continue;
  122. return card;
  123. else:
  124. x = x + len(card[1].split(','));
  125.  
  126. def drawbooster():
  127. number = randrange(7);
  128. foil = False;
  129. if number == 0:
  130. foil = True;
  131. else:
  132. foil = False;
  133. commons = []
  134. rares = []
  135. boosterlist = []
  136. if foil == True:
  137. for i in range(0, 13):
  138. drawncard = None;
  139. while drawncard == None:
  140. drawncard = drawcommon(randrange(len(cards)));
  141. boosterlist.append(drawncard);
  142.  
  143. for i in range(0, 2):
  144. drawncard = None;
  145. while drawncard == None:
  146. drawncard = drawrare();
  147. if i == 1:
  148. drawncard[0] = drawncard[0]+"*F*";
  149. boosterlist.append(drawncard);
  150. else:
  151. for i in range(0, 14):
  152. drawncard = None;
  153. while drawncard == None:
  154. drawncard = drawcommon(randrange(len(cards)));
  155. boosterlist.append(drawncard);
  156.  
  157. for i in range(0, 1):
  158. drawncard = None;
  159. while drawncard == None:
  160. drawncard = drawrare();
  161. boosterlist.append(drawncard);
  162.  
  163. for card in boosterlist:
  164. if not card[0] in cardamountmap:
  165. cardamountmap[card[0]] = 1;
  166. else:
  167. cardamountmap[card[0]] += 1;
  168.  
  169. return [boosterlist, foil];
  170.  
  171. def printcard(card):
  172. foil = False;
  173. if "*F*" in card[0]:
  174. foil = True;
  175. card[0] = card[0].replace('*F*', '');
  176.  
  177. cardurl = "http://gatherer.wizards.com/Pages/Search/Default.aspx?name=+%5Bjace%5D";
  178. cardurl = cardurl.replace('jace', card[0].lower());
  179. cardurl = cardurl.replace(' ', '%20');
  180. amnt = 1;
  181. if card[0] in cardamountmap:
  182. if cardamountmap[card[0]] > 1:
  183. amnt = cardamountmap[card[0]];
  184. print ("FOIL: " if False else "")+(str(amnt)+"x " if amnt > 1 else "")+card[0]+(" - "+cardurl if writeurl else "");
  185. #print ("FOIL: " if foil else "")+(str(amnt)+"x " if amnt > 1 else "")+card[0]+(" - "+cardurl if writeurl else "");
  186.  
  187. if writerules == True:
  188. for line in card[2]:
  189. print " ",line;
  190.  
  191. if writeset == True:
  192. print card[1];
  193.  
  194. print "";
  195.  
  196. commons = [];
  197. rares = [];
  198. mythicpulls = [];
  199. cardamountmap = {};
  200.  
  201. drawn = 0;
  202. while drawn < boosteramount:
  203. booster, foil = drawbooster();
  204. for card in booster:
  205. if "-M" in card[1]:
  206. mythicpulls.append(card);
  207. elif "-R"in card[1]:
  208. rares.append(card);
  209. else:
  210. commons.append(card);
  211.  
  212. drawn = drawn + 1;
  213.  
  214. printed = [];
  215.  
  216. if len(commons) > 0 and not nocommons:
  217. print "COMMONS";
  218. for card in commons:
  219. if card not in printed:
  220. printcard(card);
  221. printed.append(card);
  222. print "";
  223.  
  224. if len(rares) > 0 and not norares:
  225. print "RARES";
  226. for card in rares:
  227. if card not in printed:
  228. printcard(card);
  229. printed.append(card);
  230. print "";
  231.  
  232. if len(mythicpulls) > 0:
  233. print "MYTHICS";
  234. for card in mythicpulls:
  235. if card not in printed:
  236. printcard(card);
  237. printed.append(card);
  238. print "";
  239.  
  240. print "Drew",boosteramount,"packs.";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement