Пример #1
0
 def __init__(self, mapName, character):
     self.mapBuilder = MapBuilder(mapName)
     self.locator = Locator(mapName)
     self.trainingCycle = TrainingCycle(character, mapName)
     self.lootCycle = LootCycle(character, mapName)
     self.buff = Buff(character)
     self.startTime = time.time()
Пример #2
0
    def __init__(self, name='', description='', buff=Buff(), cost=0):

        super().__init__(name, description)
        self.type = 'potion'
        self.buff = buff
        self.name = self.name
        self.cost = cost
Пример #3
0
    def activateDo(self,user,target):
        if self.checkTriggers(user,target):
            if self.am == "DAMAGE" or self.am =="HEAL":
                
                user.dealDamage(target,self.heldValue,self.type,metaData = self.metaInfo)
            elif self.am == "BUFF" or self.am == "DEBUFF":
                b = Buff(user,target,self.am)
                b.name = self.metaInfo["moveName"]
                b.duration = self.metaInfo["buffDuration"]
                b.countTrigger = self.metaInfo["countTrigger"]
                b.do = self.metaInfo["do"]
                b.activate = self.metaInfo["act"]
                b.duration = self.metaInfo["buffDuration"]
                b.trigger.append(self.type)
                b.value.append(self.heldValue)
                b.startBuff()

            elif self.am == "Other":
                user.otherAction(target,self.type,self.heldValue)
            elif self.am == "TARGET":
                user.lastTarget.append(target)
def unpack_buffs_into_objects():
    """unpacks buff attributes into objects within a dictionary"""

    buff_output_dictionary = {}

    for buff_key in buff_attribute_dictionary:
        buff_attributes = buff_attribute_dictionary[buff_key]

        buff_output_dictionary[buff_key] = Buff(
            buff_attributes['name'], buff_attributes['effect'],
            buff_attributes['effectiveness'], buff_attributes['duration'])

    return buff_output_dictionary
Пример #5
0
    def load_articraft_effect(self, name):

        path = "./data/articraft_effects.json"

        with open(path, 'r', encoding='UTF-8') as fp:
            data = json.load(fp)
        found = False

        for wp in data:
            if wp == name:
                found = True
                self.equipment.append(data[wp]['name'])
                '''加载激活的buff'''
                for i in data[wp]['special'].keys():
                    if len(data[wp]['special'][i][0]) != 0:
                        self.main_logger.info("加载 2类 {} {} {} ".format(
                            data[wp]['name'], "圣遗物效果",
                            data[wp]['special'][i][2]))
                        self.add_buff(
                            Buff(data[wp]['special'][i][0],
                                 data[wp]['special'][i][1],
                                 "{}_{}".format(data[wp]['name'], "圣遗物效果"),
                                 data[wp]['special'][i][2]))
                        self.buff_stack[-1].logger = self.init_buff_logger(
                            'Buff.' + self.buff_stack[-1].name,
                            './tmp/' + self.buff_stack[-1].name + '_buff.log')
                        self.buff_stack[-1].logger.setLevel(logging.INFO)
                        self.buff_stack[-1].logger.info(
                            self.buff_stack[-1].cmt)
                        self.activated_buff.append(i)

                    else:
                        if len(data[wp]['special'][i][1]) != 0:
                            self.main_logger.info("加载 1类 {} {} {} ".format(
                                data[wp]['name'], "圣遗物效果",
                                data[wp]['special'][i][2]))
                            self.load_att(data[wp]['special'][i][1])
                            self.activated_buff.append(i)
                break
        assert (found)
Пример #6
0
class AutoAttacker:
    mapBuilder: MapBuilder
    locator: Locator
    trainingCycle: TrainingCycle
    lootCycle: LootCycle
    buff: Buff
    startTime: float
    curTime: float

    def __init__(self, mapName, character):
        self.mapBuilder = MapBuilder(mapName)
        self.locator = Locator(mapName)
        self.trainingCycle = TrainingCycle(character, mapName)
        self.lootCycle = LootCycle(character, mapName)
        self.buff = Buff(character)
        self.startTime = time.time()

    # !!! IMPORTANT TO USE 1080p RESOLUTION !!!
    def start(self):
        self.curTime = int(round(time.time() - self.startTime))
        buffTime = self.curTime
        pickupTime = self.curTime
        time.sleep(2)
        plat = None
        while True:
            try:
                res = self.locator.findChar()
            except:
                print('locator could not find character')
                continue
            plat = self.mapBuilder.onWhichPlatform(res[1], res[2], res[3],
                                                   res[4])
            if not plat:
                continue
            buff = pickup = False
            if self.curTime - buffTime > 185:
                buff = True
                buffTime += 185
            if self.curTime - pickupTime > 90:
                pickup = True
                pickupTime += 90
            if buff:
                self.buff.buffUp()
            if pickup:
                self.pickup()
            action = self.trainingCycle.cycle[tuple(plat)]
            KeyController.doCombo(action, 1)
            time.sleep(round(random.uniform(0.8, 0.6), 2))
            self.curTime = int(round(time.time() - self.startTime))

    def pickup(self):
        count = 0
        while count < 2:
            try:
                res = self.locator.findChar()
            except:
                print('locator could not find character in pickup')
                continue
            temp = self.mapBuilder.onWhichPlatform(res[1], res[2], res[3],
                                                   res[4])
            if not temp:
                count -= 1
                continue
            combo = self.lootCycle.cycle[tuple(temp)]
            KeyController.loot(combo, 3)
            count += 1
Пример #7
0
        wall.draw(screen)

    buff_time += seconds
    if buff_time >= buff_time_when:
        buff_time = 0
        buff_time_when = random.randint(1, 10)
        buff_x, buff_y = 0, 0
        wrong = False
        while not wrong:
            buff_x = random.randint(0, size_w / wallprob.size)
            buff_y = random.randint(0, size_h / wallprob.size)
            for wall in walls:
                if wall.x != buff_x * wallprob.size and wall.y != buff_y * wallprob.size:
                    wrong = True

        buffs.append(Buff(buff_x * wallprob.size, buff_y * wallprob.size))

    for buff in buffs:
        buff.draw(screen)

    for tank in tanks:
        if tank.buff == True and tank.buff_time <= 5:
            tank.speed = 400
            tank.buff_time += seconds
        else:
            tank.buff = False
            tank.buff_time = 0
            tank.speed = 200

    ######tests######
    screen.blit(tank1_sprite, (0, 0))
Пример #8
0
    def __init__(self, name='', multiplier=1, variance=0.2, buff=Buff()):

        self.name = name
        self.buff = buff
        self.multiplier = multiplier
        self.variance = variance
Пример #9
0
    def load_from_json(self, path):
        buff_name = {
            'c1': '1命',
            'c2': '2命',
            'c4': '4命',
            'c6': '6命',
            'q': '元素爆发',
            'e': '元素战技'
        }
        skill_name = ['n', 'ratio', 'time', 'cd', 'ele', 'reset_a']
        atk_name = ['a', 'e', 'q']

        for i in range(1, self.constellation + 1):
            self.activated_buff.append("c" + str(i))
        with open(path, 'r', encoding='UTF-8') as fp:
            data = json.load(fp)

        self.name = data['name']
        self.elem_class = data['elem_class']

        self.health[0] = data['basic_health']
        self.defense[0] = data['basic_defense']
        self.attack[0] = data['basic_attack']
        self.load_att(data['break_thru'])
        '''3命,5命对应技能等级+3'''
        if 'c3' in self.activated_buff:
            self.skill_level[atk_name.index('e')] += 3
        if 'c5' in self.activated_buff:
            self.skill_level[atk_name.index('q')] += 3
        '''从 json文件中读取信息,建立self.skill信息'''
        for i in atk_name:
            tmp2 = []
            for j in range(data[i]['n']):
                tmp2.append(
                    data[i]['ratio_' +
                            str(j + 1)][self.skill_level[atk_name.index(i)] -
                                        1])
            self.skill[i] = [
                data[i]['n'],
                tuple(tmp2),
                tuple(data[i]['time']), data[i]['cooldown'],
                data[i]['atk_type'], data[i]['reset_a']
            ]
        '''加载激活的buff'''
        for i in data['skills'].keys():
            if i in self.activated_buff:
                if len(data['skills'][i][0]) != 0:
                    self.main_logger.info("加载 2类 {} {} {} ".format(
                        self.name, buff_name[i], data['skills'][i][2]))
                    self.add_buff(
                        Buff(data['skills'][i][0], data['skills'][i][1],
                             "{}_{}".format(self.name, buff_name[i]),
                             data['skills'][i][2]))
                else:
                    self.main_logger.info("加载 1类 {} {} {} ".format(
                        self.name, buff_name[i], data['skills'][i][2]))
                    self.load_att(data['skills'][i][1])
        '''buff logger初始化'''
        # 初始删除所有log
        #--------------
        directory = "./tmp"
        files_in_directory = os.listdir(directory)
        filtered_files = [
            file for file in files_in_directory if file.endswith(".log")
        ]
        for file in filtered_files:
            path_to_file = os.path.join(directory, file)
            os.remove(path_to_file)
        #----------
        self.init_buff_logger
        for i in self.buff_stack:

            i.logger = self.init_buff_logger('Buff.' + i.name,
                                             './tmp/' + i.name + '_buff.log')
            # i.logger.setLevel(logging.DEBUG)
            i.logger.setLevel(logging.INFO)
            i.logger.info(i.cmt)

        self.dlogger = self.init_buff_logger('Dmg', './tmp/damage.log')
        self.dlogger.setLevel(logging.DEBUG)
        '''改变相应的控制开关'''
        for i in data['switch']:
            # if j in self.activated_buff:
            t = data['switch'][i]
            self.skill[t[0]][skill_name.index(t[1])] = self.switch(
                self.skill[t[0]][skill_name.index(t[1])])
        '''可累积e次数的设定'''
        self.multiple_e = data['multiple_e']
        if self.multiple_e > 1:
            self.e_save = [0.0] * (self.multiple_e - 1)
        self.guarantee_gap = data["guarantee_gap"]
        self.action_seq = data['attack_seq']