Exemple #1
0
def is_process_finished(craft: Craft) -> bool:
    """
    判断作业部分是否差一个制作完成
    :param craft:生产数据
    """
    temp = craft.clone()  # 创建数据副本
    temp.effects.clear()  # 清除状态
    temp.status = Manager.mStatus.DEFAULT_STATUS()  # 重设球色
    return temp.use_skill('制作').is_finished()  # 获取打一个制作后的数据是否满作业
Exemple #2
0
def progess_skill(craft: Craft, skill: str) -> str:
    """
    对于作业类技能先模拟是否会搓爆,是的话打一个确认
    :param craft:  生产数据
    :param skill: 技能名
    :return: 决定使用的技能
    """
    temp = craft.clone().use_skill(skill)  # 创建数据副本并且使用技能
    if temp.is_finished():  # 判断是否满作业
        return '最终确认'
    else:
        return skill
 def is_finished(self, craft: Craft, prev_skill: str = None) -> bool:
     """
     接口,用于判断本stage是否负责下一步判断
     :param craft: 生产数据
     :param prev_skill: 上一个使用的技能名字
     """
     if self.process_calc_base is None:  # 算一下记分用的系数
         temp = Craft(craft.recipe, craft.player)
         temp.add_effect('崇敬', 9)
         temp.merge_effects()
         self.process_calc_base = temp.use_skill('高速制作').current_progress // 2
     return is_process_finished(craft) and is_inner_quiet_finished(craft)  # 需要推满作业+內静八层进下一个stage
Exemple #4
0
    def deal(self, craft: Craft, prev_skill: str = None) -> str:
        """
        接口,用于获取下一步的解
        :param craft: 生产数据
        :param prev_skill: 上一个使用的技能名字
        :return: 下一步的建议技能
        """
        process_finish = is_process_finished(craft)

        #####
        # 一些计数的逻辑
        #####
        if prev_skill == '高速制作:fail':
            self.count += 1
        elif prev_skill == '专心加工:fail':
            self.count2 += 1
        elif prev_skill == '设计变动':
            self.blueprint_used += 1

        #####
        # 分数太低或者內静没了建议倒掉
        #####
        s = self.score(craft)
        if s < 400 or craft.effects['内静'].param < 2:
            return 'terminate'

        # if self.count > 4 or self.count2 > 2 or craft.current_cp < 300:
        #     return 'terminate'

        #####
        # 紫球处理
        #####
        if craft.status == "長持続":
            if not process_finish and '崇敬' not in craft.effects: return '崇敬'
            if craft.current_cp > 400:
                if '俭约' not in craft.effects: return '俭约'
                if '掌握' not in craft.effects: return '掌握'

        #####
        # 红球处理
        #####
        if craft.status == "高品质":
            if craft.current_durability > 10:
                if craft.effects['内静'].param < 9:
                    return '集中加工'
                else:
                    return progess_skill(craft, '集中制作')
            return '秘诀'

        empty_dur = craft.recipe.max_durability - craft.current_durability  # 消耗了多少耐久(用于判断精修一类)

        #####
        # 绿球处理
        #####
        if craft.status == "高效" and craft.current_cp >= 400:
            if '掌握' not in craft.effects: return '掌握'
            if empty_dur >= 30: return '精修'
            if '俭约' not in craft.effects: return '长期俭约'  # 这玩意我犹豫了很久加不加进去

        #####
        # 关于是否使用图纸的判断(仅仅在白球触发)
        # 计算“那些球色现在有用”,如果超过三个的话就刷球
        # 一般开场就消耗完三张了(笑
        #####
        if craft.status == "通常" and self.blueprint - self.blueprint_used and self.blueprint_used < 3:
            need_cnt = 0
            if not process_finish and '崇敬' in craft.effects and not is_process_finished(
                    craft.clone().use_skill('高速制作')):
                need_cnt += 1
            if empty_dur >= 35 or ('掌握' not in craft.effects
                                   and empty_dur >= 5):
                need_cnt += 1
            if craft.effects['内静'].param < 9 and craft.current_durability > 10:
                need_cnt += 1
            if not process_finish and '崇敬' not in craft.effects:
                need_cnt += 1
            if need_cnt > 2:
                return '设计变动'

        #####
        # 耐久不足以使用下一个作业技能就打精修
        # 考虑过低于等于11就打,但是嘛(
        #####
        if craft.current_durability <= craft.get_skill_durability('制作'):
            return '精修'

        #####
        # 关于“其余”的处理
        # 如果深蓝球或者在崇敬就尝试推作业(会算一下不用高速的话就模范或者xxx)
        # 內静的话赌一下专心有助于提高分数!
        # 可以用俭约补最后几层的话还是俭约补吧,仓促太难了
        #####
        if not process_finish and (craft.status == "高進捗"
                                   or '崇敬' in craft.effects):
            for s in '制作', '模范制作', '高速制作':
                if is_process_finished(craft.clone().use_skill(s)):
                    return progess_skill(craft, s)
            return progess_skill(craft, '高速制作')
        if craft.effects['内静'].param < 8:
            if craft.effects['内静'].param < 5:
                return '专心加工'
            return "仓促" if '俭约' in craft.effects else '俭约加工'
        else:
            return '崇敬'