Beispiel #1
0
 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
Beispiel #2
0
 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()
Beispiel #3
0
 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),
         )
Beispiel #4
0
 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
Beispiel #5
0
 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