コード例 #1
0
    def trig(self, char_level, stage_id=None):
        try:
            s = MongoStage.objects.get(id=self.char_id)
            passed_stages = s.stages.keys()
        except DoesNotExist:
            passed_stages = []

        passed_stages.append('0')
        if stage_id:
            passed_stages.append(str(stage_id))

        opened_funcs = []
        for func_id in self.mf.freeze[:]:
            try:
                this_func = FUNCTION_DEFINE[func_id]
            except KeyError:
                self.mf.freeze.remove(func_id)
                continue

            if char_level >= this_func.char_level and str(
                    this_func.stage_id) in passed_stages:
                # OPEN
                self.mf.freeze.remove(func_id)
                opened_funcs.append(func_id)

        self.mf.save()

        f = Formation(self.char_id)
        for of in opened_funcs[:]:
            if of in FUNC_SOCKET_AMOUNT_TABLE:
                opened = f.open_socket(FUNC_SOCKET_AMOUNT_TABLE[of])
                if not opened:
                    opened_funcs.remove(of)

        return opened_funcs
コード例 #2
0
ファイル: functionopen.py プロジェクト: wyrover/sanguo-server
    def trig(self, char_level, stage_id=None):
        try:
            s = MongoStage.objects.get(id=self.char_id)
            passed_stages = s.stages.keys()
        except DoesNotExist:
            passed_stages = []

        passed_stages.append('0')
        if stage_id:
            passed_stages.append(str(stage_id))

        opened_funcs = []
        for func_id in self.mf.freeze[:]:
            try:
                this_func = FUNCTION_DEFINE[func_id]
            except KeyError:
                self.mf.freeze.remove(func_id)
                continue

            if char_level >= this_func.char_level and str(this_func.stage_id) in passed_stages:
                # OPEN
                self.mf.freeze.remove(func_id)
                opened_funcs.append(func_id)


        self.mf.save()

        f = Formation(self.char_id)
        for of in opened_funcs[:]:
            if of in FUNC_SOCKET_AMOUNT_TABLE:
                opened = f.open_socket(FUNC_SOCKET_AMOUNT_TABLE[of])
                if not opened:
                    opened_funcs.remove(of)

        return opened_funcs