class Gala_Cat_Sith(DragonBase): ele = 'shadow' att = 128 a = [] dragonform = { 'act': 'c3 s', 'dx1.dmg': 3.00, 'dx1.startup': 18 / 60.0, # c1 frames 'dx1.hit': 1, 'dx2.dmg': 3.60, 'dx2.startup': 55 / 60.0, # c2 frames 'dx2.hit': 1, 'dx3.dmg': 4.50, 'dx3.startup': 43 / 60.0, # c3 frames 'dx3.recovery': 56 / 60.0, # recovery 'dx3.hit': 1, 'ds.dmg': 7.744, 'ds.recovery': 90 / 60, 'ds.hit': 32, } def oninit(self, adv): super().oninit(adv) from core.advbase import Event, SingleActionBuff Event('dragon_end').listener(self.shift_end_trickery) self.trickery = 15 self.threshold = 25 self.trickery_buff = SingleActionBuff('d_trickery_buff', 1.80, 1,'s', 'buff', end_proc=self.check_trickery) self.check_trickery() if adv.condition('always connect hits'): self.dmg_proc_o = adv.dmg_proc self.thit = 0 def dmg_proc(name, amount): n_thit = adv.hits // self.threshold if n_thit > self.thit: self.add_trickery(n_thit-self.thit) self.thit = n_thit self.dmg_proc_o(name, amount) adv.dmg_proc = dmg_proc def add_trickery(self, t): from core.log import log log('debug', 'trickery', f'+{t}', self.trickery, self.adv.hits) self.trickery = min(self.trickery+t, 15) self.check_trickery() def check_trickery(self, e=None): from core.log import log if self.trickery > 0 and not self.trickery_buff.get(): self.trickery -= 1 log('debug', 'trickery', 'consume', self.trickery) self.trickery_buff.on() def shift_end_trickery(self, e): self.add_trickery(8)
class Gala_Cat_Sith(DragonBase): ele = 'shadow' att = 128 a = [] dragonform = { 'act': 'c3-s', 'dx1.dmg': 3.00, 'dx1.startup': 18 / 60.0, # c1 frames 'dx1.hit': 1, 'dx2.dmg': 3.60, 'dx2.startup': 55 / 60.0, # c2 frames 'dx2.hit': 1, 'dx3.dmg': 4.50, 'dx3.startup': 43 / 60.0, # c3 frames 'dx3.recovery': 56 / 60.0, # recovery 'dx3.hit': 1, 'ds.dmg': 7.744, 'ds.recovery': 90 / 60, 'ds.hit': 32, } def oninit(self, adv): super().oninit(adv) from core.advbase import Event, SingleActionBuff Event('dragon_end').listener(self.shift_end_trickery) self.max_trickery = 14 # 1 trickery is in the buff at all times self.adv.trickery = self.max_trickery self.threshold = 25 self.trickery_buff = SingleActionBuff('d_trickery_buff', 1.80, 1,'s', 'buff').on() self.check_trickery() if adv.condition('always connect hits'): add_combo_o = adv.add_combo thit = 0 def add_combo(name='#'): self.add_combo_o(name) n_thit = adv.hits // self.threshold if n_thit > self.thit: add_trickery(1) thit = n_thit else: n_thit = 0 self.check_trickery() adv.add_combo = add_combo def add_trickery(self, t): from core.log import log log('debug', 'trickery', f'+{t}', self.adv.trickery, self.adv.hits) self.adv.trickery = min(self.adv.trickery+t, self.max_trickery) def check_trickery(self, e=None): from core.log import log if self.adv.trickery > 0 and not self.trickery_buff.get(): self.adv.trickery -= 1 log('debug', 'trickery', 'consume', self.adv.trickery) self.trickery_buff.on() def shift_end_trickery(self, e): if not self.adv.dragonform.is_dragondrive: self.add_trickery(8)