def __call__(self): if not self.check(dryrun=False): return False if self.is_dragondrive: self.act_list = ['end'] if self.dragondrive_buff.get(): self.d_dragondrive_end('<turn off>') return True else: log('cast', 'dragondrive', self.name, f'base duration {self.dragon_gauge/self.drain:.4}s') self.dragondrive_timer.on(self.dragon_gauge/self.drain) self.dragondrive_buff.on() else: log('cast', 'dshift', self.name) if len(self.act_list) == 0: self.parse_act(self.conf.act) self.dragon_gauge -= self.shift_cost if self.off_ele_mod is not None: self.off_ele_mod.on() if self.shift_spd_mod is not None: self.shift_spd_mod.on() self.pause_auto_gauge() self.shift_count += 1 self.status = Action.STARTUP self._setdoing() g_logs.log_shift_dmg(True) self.shift_start_time = now() self.shift_end_timer.on(self.dtime()) self.reset_allow_end() self.shift_event() self.d_act_start('dshift') return True
def d_shift_end(self, t): if self.action_timer is not None: self.action_timer.off() self.action_timer = None duration = now()-self.shift_start_time shift_dmg = g_logs.shift_dmg g_logs.log_shift_dmg(False) count = self.clear_delayed() if count > 0: log('cancel', self.c_act_name, f'by shift end', f'lost {count} hit{"s" if count > 1 else ""}') log(self.name, '{:.2f}dmg / {:.2f}s, {:.2f} dps'.format(shift_dmg, duration, shift_dmg/duration), ' '.join(self.act_sum)) self.act_sum = [] self.act_list = [] if self.off_ele_mod is not None: self.off_ele_mod.off() if self.shift_spd_mod is not None: self.shift_spd_mod.off() self.ds_reset() if not self.is_dragondrive: self.shift_silence = True Timer(self.end_silence).on(10) self.dragon_gauge_pause_timer = Timer(self.resume_auto_gauge).on(self.dragon_gauge_timer_diff) self.status = Action.OFF self._setprev() # turn self from doing to prev self._static.doing = self.nop self.end_event() self.idle_event()
def d_shift_partial_end(self): if not self.is_dragondrive and self.status != Action.OFF: duration = now() - self.shift_start_time shift_dmg = g_logs.shift_dmg g_logs.log_shift_dmg(False) log( self.name, "{:.2f}dmg / {:.2f}s, {:.2f} dps".format( shift_dmg, duration, shift_dmg / duration), " ".join(self.act_sum), )
def d_shift_end(self, t): if self.action_timer is not None: self.action_timer.off() self.action_timer = None if not self.is_dragondrive and self.prev_act != "ds" and self.skill_use_final > 0: self.skill_use_final -= 1 self.d_act_start("ds_final") self.act_list = ["end"] return False duration = now() - self.shift_start_time shift_dmg = g_logs.shift_dmg g_logs.log_shift_dmg(False) count = self.clear_delayed() if count > 0: log( "cancel", self.c_act_name, f"by shift end", f'lost {count} hit{"s" if count > 1 else ""}', ) log( self.name, "{:.2f}dmg / {:.2f}s, {:.2f} dps".format(shift_dmg, duration, shift_dmg / duration), " ".join(self.act_sum), ) self.act_sum = [] self.act_list = [] if self.off_ele: self.adv.element = self.adv.slots.c.ele if self.shift_spd_mod is not None: self.shift_spd_mod.off() self.ds_reset() if not self.is_dragondrive: self.shift_silence = True Timer(self.end_silence).on(10) self.dragon_gauge_pause_timer = Timer(self.resume_auto_gauge).on( self.dragon_gauge_timer_diff) self.status = Action.OFF self._setprev() # turn self from doing to prev self._static.doing = self.nop if not self.is_dragondrive: self.end_event() self.idle_event() return True
def __call__(self): if not self.check(dryrun=False): return False if self.is_dragondrive: self.act_list = ["end"] if self.dragondrive_buff.get(): self.d_dragondrive_end("<turn off>") return True else: log( "cast", "dragondrive", self.name, f"base duration {self.dragon_gauge/self.drain:.4}s", ) self.dragondrive_timer.on(self.dragon_gauge / self.drain) self.dragondrive_buff.on() else: log("cast", "dshift", self.name) if len(self.act_list) == 0: self.parse_act(self.conf.act) self.dragon_gauge -= self.shift_cost if self.off_ele: self.adv.element = self.adv.slots.d.ele if self.shift_spd_mod is not None: self.shift_spd_mod.on() self.pause_auto_gauge() self.shift_count += 1 self.status = Action.STARTUP self._setdoing() g_logs.log_shift_dmg(True) self.shift_start_time = now() self.shift_end_timer.on(self.dtime()) self.reset_allow_end() self.shift_event() self.d_act_start("dshift") return True