Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- import io, sys
- from random import randrange
- arguments = [];
- f = open('cards.txt');
- filter = "";
- if len(sys.argv) > 1:
- filter = sys.argv[1];
- else:
- filter = raw_input("Enter short names of sets you want included >>> ")+" ";
- print "";
- writerules = False;
- writeset = False;
- writeurl = False;
- nocommons = False;
- norares = False;
- nomythics = False;
- boosteramount = 1;
- if len(sys.argv) > 2:
- switches = sys.argv[2];
- else:
- switches = raw_input("Enter switches (e.g. -commons) >>> ");
- print "";
- if "rules" in switches:
- writerules = True;
- if "set" in switches:
- writeset = True;
- if "url" in switches:
- writeurl = True;
- if "-commons" in switches:
- nocommons = True;
- if "-rares" in switches:
- norares = True;
- if "-mythics" in switches:
- nomythics = True;
- if "packs=" in switches:
- amnt = switches.split("packs=")[1].split(" ")[0];
- boosteramount = int(amnt);
- cards = []
- rarecards = []
- mythics = []
- lines = f.readlines();
- start = 0;
- end = 0;
- for i in range(0, len(lines)):
- lines[i] = lines[i].replace('\n', '');
- for i in range(0, len(lines)):
- line = lines[i]#.replace('\n', '');
- if line == "":
- end = i;
- rules = lines[start+1:end-1];
- lines[start] = lines[start].replace('\n', '');
- lines[end-1] = lines[end-1].replace('\n', '');
- add = False;
- if filter == "" or filter == " ":
- add = True;
- else:
- for cardset in lines[end-1].split(','):
- if cardset.split('-')[0]+" " in filter:
- add = True;
- if add == True:
- if "-R" in lines[end-1]:
- rarecards.append(
- [lines[start], lines[end-1], rules]);
- elif "-M" in lines[end-1]:
- mythics.append(
- [lines[start], lines[end-1], rules]);
- else:
- cards.append(
- [lines[start], lines[end-1], rules]);
- start = i + 1;
- def countcards():
- count = 0
- for card in cards:
- count = count + len(card[1].split(','));
- for card in rarecards:
- count = count + len(card[1].split(','));
- return count;
- def drawcommon(roll):
- x = 0;
- for card in cards:
- if len(card[1].split(','))+x > roll:
- if card[0] == "":
- continue;
- return card;
- else:
- x = x + len(card[1].split(','));
- def drawrare():
- mythic = randrange(7);
- x = 0;
- if mythic == 0 and len(mythics) > 0:
- #print "Mythic! :D"
- roll = randrange(len(mythics));
- for card in mythics:
- if len(card[1].split(','))+x > roll:
- if card[0] == "":
- continue;
- return card;
- else:
- x = x + len(card[1].split(','));
- else:
- roll = randrange(len(rarecards));
- for card in rarecards:
- if len(card[1].split(','))+x > roll:
- if card[0] == "":
- continue;
- return card;
- else:
- x = x + len(card[1].split(','));
- def drawbooster():
- number = randrange(7);
- foil = False;
- if number == 0:
- foil = True;
- else:
- foil = False;
- commons = []
- rares = []
- boosterlist = []
- if foil == True:
- for i in range(0, 13):
- drawncard = None;
- while drawncard == None:
- drawncard = drawcommon(randrange(len(cards)));
- boosterlist.append(drawncard);
- for i in range(0, 2):
- drawncard = None;
- while drawncard == None:
- drawncard = drawrare();
- if i == 1:
- drawncard[0] = drawncard[0]+"*F*";
- boosterlist.append(drawncard);
- else:
- for i in range(0, 14):
- drawncard = None;
- while drawncard == None:
- drawncard = drawcommon(randrange(len(cards)));
- boosterlist.append(drawncard);
- for i in range(0, 1):
- drawncard = None;
- while drawncard == None:
- drawncard = drawrare();
- boosterlist.append(drawncard);
- for card in boosterlist:
- if not card[0] in cardamountmap:
- cardamountmap[card[0]] = 1;
- else:
- cardamountmap[card[0]] += 1;
- return [boosterlist, foil];
- def printcard(card):
- foil = False;
- if "*F*" in card[0]:
- foil = True;
- card[0] = card[0].replace('*F*', '');
- cardurl = "http://gatherer.wizards.com/Pages/Search/Default.aspx?name=+%5Bjace%5D";
- cardurl = cardurl.replace('jace', card[0].lower());
- cardurl = cardurl.replace(' ', '%20');
- amnt = 1;
- if card[0] in cardamountmap:
- if cardamountmap[card[0]] > 1:
- amnt = cardamountmap[card[0]];
- print ("FOIL: " if False else "")+(str(amnt)+"x " if amnt > 1 else "")+card[0]+(" - "+cardurl if writeurl else "");
- #print ("FOIL: " if foil else "")+(str(amnt)+"x " if amnt > 1 else "")+card[0]+(" - "+cardurl if writeurl else "");
- if writerules == True:
- for line in card[2]:
- print " ",line;
- if writeset == True:
- print card[1];
- print "";
- commons = [];
- rares = [];
- mythicpulls = [];
- cardamountmap = {};
- drawn = 0;
- while drawn < boosteramount:
- booster, foil = drawbooster();
- for card in booster:
- if "-M" in card[1]:
- mythicpulls.append(card);
- elif "-R"in card[1]:
- rares.append(card);
- else:
- commons.append(card);
- drawn = drawn + 1;
- printed = [];
- if len(commons) > 0 and not nocommons:
- print "COMMONS";
- for card in commons:
- if card not in printed:
- printcard(card);
- printed.append(card);
- print "";
- if len(rares) > 0 and not norares:
- print "RARES";
- for card in rares:
- if card not in printed:
- printcard(card);
- printed.append(card);
- print "";
- if len(mythicpulls) > 0:
- print "MYTHICS";
- for card in mythicpulls:
- if card not in printed:
- printcard(card);
- printed.append(card);
- print "";
- print "Drew",boosteramount,"packs.";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement