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()
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
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
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)
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
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))
def __init__(self, name='', multiplier=1, variance=0.2, buff=Buff()): self.name = name self.buff = buff self.multiplier = multiplier self.variance = variance
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']