From 81e707989d561fac2a37900cb9412af13dc5afdc Mon Sep 17 00:00:00 2001 From: Mauricio Date: Fri, 12 Mar 2021 18:45:56 -0400 Subject: [PATCH] AO issue part 2: unescaped evidence --- mainmenu.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/mainmenu.py b/mainmenu.py index 7d2ec7f..757b035 100644 --- a/mainmenu.py +++ b/mainmenu.py @@ -7,6 +7,11 @@ AOpath = "base/" AO2XPpath = "AO2XPbase/" #AOpath = "I:/aovanilla1.7.5/client/base/" +def decode_ao_str(text): + return text.replace("", "%").replace("", "#").replace("", "#").replace("", "&").replace("", "$") +def encode_ao_str(text): + return text.replace("%", "").replace("#", "").replace("&", "").replace("$", "") + class PicButton(QtGui.QAbstractButton): def __init__(self, pixmap, parent=None): super(PicButton, self).__init__(parent) @@ -438,6 +443,7 @@ class AOServerInfo(QtCore.QThread): joinooc = [] areas = [[], [], [], []] features = [] + evidence = [] pingtimer = 150 readytick = -1 @@ -566,19 +572,16 @@ class AOServerInfo(QtCore.QThread): del network[0] del network[len(network)-1] if len(network) > 0: - if "" in network[0]: #The Next Chapter actually does this sorcery... - evidence = [evi.split("") for evi in network] - else: - evidence = [evi.split("&") for evi in network] + evidence = [evi.split("&") for evi in network] else: evidence = [] for evi in evidence: - while len(evi) < 3: # new AO 2.9 bug where they never correctly escaped evidence name/desc/image on FantaProtocol... + while len(evi) < 3: # new AO 2.9 bug where they never correctly escaped evidence name/desc/image on FantaProtocol evi += [""] - evi[0] = evi[0].decode("utf-8") - evi[1] = evi[1].decode("utf-8") - evi[2] = evi[2].decode("utf-8") + evi[0] = decode_ao_str(evi[0].decode("utf-8")) + evi[1] = decode_ao_str(evi[1].decode("utf-8")) + evi[2] = decode_ao_str(evi[2].decode("utf-8")) print '[client]', 'received evidence' elif header == 'HP':