Ejemplo n.º 1
0
def fixFix(fileName):
    """Search and replace change on scripts and dialog scripts.
    Strips spaces from around fix (->) operator."""
    rePointer = re.compile(r' -> ?', re.M)
    init(2)
    fileInfo = mosh.modInfos[fileName]
    #--Fix scripts
    if True:
        fileRep = mosh.FileRep(fileInfo)
        fileRep.loadUI(factory={'SCPT': mosh.Scpt})
        for script in fileRep.indexed['SCPT'].values():
            oldCode = script.sctx.data
            if rePointer.search(oldCode):
                newCode = rePointer.sub('->', oldCode)
                script.setCode(newCode)
                print script.id
        fileRep.safeSave()
    #--Fix dialog scripts
    if True:
        fileDials = mosh.FileDials(fileInfo)
        fileDials.load()
        for dial in fileDials.dials:
            for info in dial.infos:
                for record in info.records:
                    if record.name != 'BNAM': continue
                    if rePointer.search(record.data):
                        print dial.id
                        print ' ', info.text
                        print ' ', record.data
                        print
                        record.setData(rePointer.sub('->', record.data))
                        info.setChanged()
                        break
        fileDials.safeSave()
Ejemplo n.º 2
0
def temp(fileName):
    init(2)
    fileInfo = mosh.modInfos[fileName]
    fileDials = mosh.FileDials(fileInfo)
    fileDials.load(factory={'INFO': mosh.Info})
    #--Replacement defs
    repls = {
        'activator': 'init',
        'allowBack': 'back',
        'aShort': 's01',
        'bShort': 's02',
    }
    replKeys = set(repls.keys())
    reRepls = re.compile(r'\b(' + ('|'.join(replKeys)) + r')\b')
    reStartScript = re.compile('^startScript', re.I + re.M)

    def doRepl(mo):
        return repls[mo.group(0)]

    #--Loop over dials
    for dial in fileDials.dials:
        print dial.id
        for info in dial.infos:
            #--Change id?
            if info.spId == 'wr_mysMenu_s':
                info.spId = 'wr_mysCre'
                info.setChanged()
            elif info.spId == 'wr_bookMenu_s':
                info.spId = 'wr_bookCre'
                info.setChanged()
            #--Change tests?
            if info.spId in ('wr_mysCre', 'wr_bookCre'):
                #--Test vars
                for index, test in enumerate(info.tests):
                    if not test:
                        pass
                    elif test.text.lower() == 'modder':
                        if test.value == 0 and test.oper == 0:
                            test.text = 'menu'
                            test.value = -1
                            print ' modder >> menu'
                        else:
                            info.tests[index] = 0
                            print ' modder X'
                    elif test.text in replKeys:
                        print '', test.text, repls[test.text]
                        test.text = repls[test.text]
                #--Result
                if info.script:
                    newScript = reRepls.sub(doRepl, info.script)
                    newScript = reStartScript.sub('player->startScript',
                                                  newScript)
                    if newScript != info.script:
                        info.script = newScript
                        print ' script subbed'
                info.setChanged()
    fileDials.safeSave()