Пример #1
0
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)
Пример #2
0
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)