|
|
@@ -342,8 +342,10 @@ class Campaign: |
|
|
|
self.params = None |
|
|
|
self.characters = None |
|
|
|
self.art = None |
|
|
|
self.masterpassword = pw |
|
|
|
self.decode_key(pw) |
|
|
|
else: |
|
|
|
self.masterpassword = None |
|
|
|
self.create_campaign(n, makeChars) |
|
|
|
|
|
|
|
def create_campaign(self, n, makeChars): |
|
|
@@ -457,49 +459,28 @@ class Campaign: |
|
|
|
"gadget": bin(chct.gadget["id"])[2:] |
|
|
|
} |
|
|
|
i += 1 |
|
|
|
# print(chars) |
|
|
|
l1 = lpad(l1, 7) |
|
|
|
# print(f"Len(l1) = {len(l1)}") |
|
|
|
l2 = lpad(l2, 7) |
|
|
|
# print(f"Len(l2) = {len(l2)}") |
|
|
|
ms = lpad(ms, 7) |
|
|
|
# print(f"Len(ms) = {len(ms)}") |
|
|
|
pb1 = lpad(pb1, 7) |
|
|
|
# print(f"Len(pb1) = {len(pb1)}") |
|
|
|
pb2 = lpad(pb2, 7) |
|
|
|
# print(f"Len(pb2) = {len(pb2)}") |
|
|
|
pbname = lpad(pbname, 40, "1") |
|
|
|
# print(f"Len(pbname) = {len(pbname)}") |
|
|
|
n1 = lpad(n1, 7) |
|
|
|
# print(f"Len(n1) = {len(n1)}") |
|
|
|
n2 = lpad(n2, 7) |
|
|
|
# print(f"Len(n2) = {len(n2)}") |
|
|
|
gq = lpad(gq, 7) |
|
|
|
# print(f"Len(gq) = {len(gq)}") |
|
|
|
bq = lpad(bq, 7) |
|
|
|
# print(f"Len(bq) = {len(bq)}") |
|
|
|
self.key += l1 + l2 + lb + op + ms + pb1 + pbname + pb2 + n1 + n2 + gq + bq |
|
|
|
for k,chct in chars.items(): |
|
|
|
chct["name"] = lpad(chct["name"], 40, "1") |
|
|
|
# print(f"Len(chct.name) = {len(chct['name'])}") |
|
|
|
chct["career"] = lpad(chct["career"], 7) |
|
|
|
# print(f"Len(chct.career) = {len(chct['career'])}") |
|
|
|
chct["order"] = lpad(chct["order"],3) |
|
|
|
# print(f"Len(chct.order) = {len(chct['order'])}") |
|
|
|
chct["chaos"] = lpad(chct["chaos"], 3) |
|
|
|
# print(f"Len(chct.chaos) = {len(chct['chaos'])}") |
|
|
|
chct["body"] = lpad(chct["body"], 3) |
|
|
|
# print(f"Len(chct.body) = {len(chct['body'])}") |
|
|
|
chct["brains"] = lpad(chct["brains"], 3) |
|
|
|
# print(f"Len(chct.brains) = {len(chct['brains'])}") |
|
|
|
chct["gadget"] = lpad(chct["gadget"], 7) |
|
|
|
# print(f"Len(chct.gadget) = {len(chct['gadget'])}") |
|
|
|
self.key += chct["name"] + chct["career"] + chct["order"] + chct["chaos"] + chct["body"] + chct["brains"] + chct["gadget"] |
|
|
|
# print(len(self.key)) |
|
|
|
while len(self.key) < 509: |
|
|
|
self.key = self.key + "0" |
|
|
|
# print(len(self.key)) |
|
|
|
print(self.key) |
|
|
|
self.okey = "" |
|
|
|
letters = [] |
|
|
|
letter = [] |
|
|
@@ -517,7 +498,6 @@ class Campaign: |
|
|
|
word = [] |
|
|
|
words.append("".join(word)) |
|
|
|
self.password = " ".join(words) |
|
|
|
# print(self.password) |
|
|
|
return self.password |
|
|
|
|
|
|
|
def decode_key(self, pw): |
|
|
@@ -729,8 +709,6 @@ class Campaign: |
|
|
|
# Character 6 gadget: 7 bits |
|
|
|
i,j = j,j+7 |
|
|
|
outkey["char6gad"] = int(self.newBitfield[i:j], 2) |
|
|
|
#print(self.newBitfield) |
|
|
|
#print(outkey) |
|
|
|
self.ship = Ship(Ship.NAME1[outkey["sname1"]], Ship.NAME2[outkey["sname2"]], Ship.GQUAL[outkey["gqual"]], Ship.BQUAL[outkey["bqual"]]) |
|
|
|
self.params = Plot(loc_desc=Plot.loc1[outkey["loc1"]], locIndex=outkey["loc2"], battlefield=outkey["battlefield"], location=None, missIndex=outkey["miss"], oops=outkey["oops"], mission=None, probIndex=outkey["prob1"], problem=None, probName=self.decode_name(outkey["prob1name"]), secProblem=outkey["prob2"], thirdProblem=None) |
|
|
|
self.art = "an" if self.params.loc_desc[0] in ["a","e","i","o","u"] else "a" |
|
|
@@ -739,10 +717,7 @@ class Campaign: |
|
|
|
keys = [f"char{q}name", f"char{q}career", f"char{q}ord", f"char{q}cha", f"char{q}bod", f"char{q}bra", f"char{q}gad"] |
|
|
|
c = Character(name=self.decode_name(outkey[keys[0]]), career=outkey[keys[1]], stats=[outkey[keys[2]], outkey[keys[3]], outkey[keys[4]], outkey[keys[5]]], gadget=outkey[keys[6]]) |
|
|
|
self.characters.append(c) |
|
|
|
#self.ship.print() |
|
|
|
# self.print_params() |
|
|
|
# self.print_chars() |
|
|
|
return self.newBitfield |
|
|
|
#return self.newBitfield |
|
|
|
|
|
|
|
def encode_name(self, name): |
|
|
|
field = "".join([lpad(bin(Campaign.NAMELETS.index(c.lower()))[2:], 5) for c in name]) |
|
|
@@ -760,7 +735,6 @@ class Campaign: |
|
|
|
return name |
|
|
|
|
|
|
|
def print_params(self, endc=" ", html=False): |
|
|
|
# print(len(Plot.miss)) |
|
|
|
st = ["Order:", "Chaos:", "Brains:", "Body:"] |
|
|
|
cst = ", ".join([" ".join(y) for y in list(zip(st, [str(x) for x in self.params.problem["stats"]]))]) |
|
|
|
if self.params.oops == 1: |
|
|
@@ -856,7 +830,10 @@ class Campaign: |
|
|
|
print(f"</div>\n<br clear='all'>\n") |
|
|
|
|
|
|
|
def print_password(self, html=False): |
|
|
|
pw = self.generate_key() |
|
|
|
if self.masterpassword: |
|
|
|
pw = self.masterpassword |
|
|
|
else: |
|
|
|
pw = self.generate_key() |
|
|
|
if html: |
|
|
|
out = ( |
|
|
|
f"<div id='password'>" |
|
|
@@ -865,15 +842,13 @@ class Campaign: |
|
|
|
f"</div>" |
|
|
|
) |
|
|
|
print(out) |
|
|
|
print(f"<br clear='all'>\n") |
|
|
|
else: |
|
|
|
print(f"Password: {pw}") |
|
|
|
|
|
|
|
def decode(self, pwd): |
|
|
|
pass |
|
|
|
|
|
|
|
class Password: |
|
|
|
pass |
|
|
|
|
|
|
|
def lpad(s, n, c="0"): |
|
|
|
while len(s) < n: |
|
|
|
s = c + s |
|
|
@@ -890,11 +865,8 @@ if __name__ == "__main__": |
|
|
|
group.add_argument("-pw", "--password", help="print the campaign defined by the submitted password", type=str, nargs="?", const=1, metavar="PW") |
|
|
|
parser.add_argument("--html", help="print in HTML instead of plain text", action="store_true") |
|
|
|
args = parser.parse_args() |
|
|
|
# print(args) |
|
|
|
html = True if args.html else False |
|
|
|
if args.password: |
|
|
|
#pw = Password(args.password) |
|
|
|
# print(pw.newBitfield) |
|
|
|
cmp = Campaign(fromPW = True, pw=args.password) |
|
|
|
cmp.print_params(html=html) |
|
|
|
cmp.print_chars(html=html) |