diff options
author | Administrator <admin@themanaworld.org> | 2022-06-16 21:15:18 +0000 |
---|---|---|
committer | Administrator <admin@themanaworld.org> | 2022-06-16 21:15:18 +0000 |
commit | 20fb6a861f453781f03e0bec96dbc9a4d61f2521 (patch) | |
tree | 9f909bd9535653a18cbb239ea2dd225110b7f7cb | |
parent | b309d6e3b682142e76ddcb635fe107f737c8edd0 (diff) | |
parent | f30f61adfa3701d60ea4e4d9bc9d1b51b603ffea (diff) | |
download | renpy-20fb6a861f453781f03e0bec96dbc9a4d61f2521.tar.gz renpy-20fb6a861f453781f03e0bec96dbc9a4d61f2521.tar.bz2 renpy-20fb6a861f453781f03e0bec96dbc9a4d61f2521.tar.xz renpy-20fb6a861f453781f03e0bec96dbc9a4d61f2521.zip |
Merge branch 'renpy8' into 'master'
Adds support to Ren'Py 8, which uses a Python 3 backend.
Renpy 8 still isn't officially released and wasn't extensively tested.
We advise to clear persistent data before trying this out. Do note that while Ren'Py 8 can parse Ren'Py 7 persistent data, the same is not true backwards!!
See merge request launcher/renpy!2
-rw-r--r-- | game/client.rpy | 2 | ||||
-rw-r--r-- | game/core.rpy | 17 | ||||
-rw-r--r-- | game/screens.rpy | 3 | ||||
-rw-r--r-- | game/vault.rpy | 15 |
4 files changed, 29 insertions, 8 deletions
diff --git a/game/client.rpy b/game/client.rpy index 4c80ad7..771318f 100644 --- a/game/client.rpy +++ b/game/client.rpy @@ -112,6 +112,8 @@ init 2 python: else: app=CMD(OPT, PWD) + if not LEGACY: + app=app.returncode ## Determine error messages if app == 7: stdout("[CLIENT] Mirror Lake triggered.") diff --git a/game/core.rpy b/game/core.rpy index 90ba8eb..b4bbbf6 100644 --- a/game/core.rpy +++ b/game/core.rpy @@ -23,12 +23,18 @@ init -3 python: # Ren'Py should come with Python 2.7.10 (2710), but just in case # After all, I only tested with 2.7.10, 2.7.13 and 2.7.15 - if (PYTHON_VERSION < 2700 or PYTHON_VERSION > 3000): + if (PYTHON_VERSION < 2700): + raise KeyboardInterrupt("Unsupported Python version: %d" % PYTHON_VERSION) + elif (PYTHON_VERSION > 3000): + # This is Python 3.x execute=subprocess.run - # FIXME: check must be set and True - raise Exception("WARNING: Python version is not 2.7\nStrange bugs may happen on your client.\n\nClick on \"Ignore\" to continue.\nClick on \"Quit\" to exit.") + LEGACY = False + print("Python 3.x detected! Version is %d. Compatibility mode enabled!" % PYTHON_VERSION) else: + # This is Python 2.7 execute=subprocess.call + LEGACY = True + print("Python 2.7 detected! Setting legacy mode... (ver: %d)" % PYTHON_VERSION) ############################################################################# # Functions @@ -150,7 +156,10 @@ init -3 python: ############################################################################# ## Conditional imports if persistent.steam: - import _renpysteam as steam + try: + import _renpysteam as steam + except: + persistent.steam = False ############################################################################# # ["themanaworld.org", "germantmw.de", "moubootaurlegends.org"] diff --git a/game/screens.rpy b/game/screens.rpy index 298eac5..0ea46e1 100644 --- a/game/screens.rpy +++ b/game/screens.rpy @@ -686,7 +686,8 @@ screen preferences(): action SetVariable("persistent.evol2cli", "manaverse") textbutton _("ManaPlus"): action SetVariable("persistent.evol2cli", "manaplus") - textbutton _("Built-In"): + if not LEGACY: + textbutton _("Built-In"): action SetVariable("persistent.evol2cli", "builtin") diff --git a/game/vault.rpy b/game/vault.rpy index 17678ee..bbe9fc3 100644 --- a/game/vault.rpy +++ b/game/vault.rpy @@ -54,7 +54,10 @@ init python: self.variable = str(persistent.email) uedit[key] = str(self.variable) if (persistent.passd is not None and self.variable == "***"): - self.variable = str(bytearray((x ^ (persistent.rhash/mp.sub) for x in bytearray(persistent.passd, 'utf-8')))) + if LEGACY: + self.variable = str(bytearray((x ^ int(persistent.rhash/mp.sub) for x in bytearray(persistent.passd, 'utf-8')))) + else: + self.variable = bytearray((x ^ int(persistent.rhash/mp.sub) for x in persistent.passd)).decode('utf-8') uedit[key] = str(self.variable) def get_text(self): @@ -181,7 +184,10 @@ label register_vault: key = base64.b32decode(persistent.totp.encode('utf-8'), True) msg = struct.pack(">Q", int(time.time()/30)) h = hmac.new(key, msg, hashlib.sha1).digest() - o = ord(h[19]) & 15 + if LEGACY: + o = ord(h[19]) & 15 + else: + o = (h[19] & 15) _return = (struct.unpack(">I", h[o:o+4])[0] & 0x7fffffff) % 1000000 _return = "%06d" % _return print("TOTP: %s" % _return) @@ -206,7 +212,10 @@ label register_vault: $ hsh = renpy.random.randint(11, 127) $ mp.sub = renpy.random.randint(127, 16777215) $ persistent.rhash = int(hsh)*mp.sub - $ persistent.passd = str(bytearray(x ^ hsh for x in bytearray(password, 'utf-8'))) + if LEGACY: + $ persistent.passd = str(bytearray(x ^ int(hsh) for x in bytearray(password, 'utf-8'))) + else: + $ persistent.passd = bytearray(ord(x) ^ int(hsh) for x in password) $ mp.save() # Wait for Vault to confirm. |