Пример #1
0
Файл: shadow.py Проект: pfleg/dl
    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
Пример #2
0
Файл: water.py Проект: zzysan/dl
class Siren(DragonBase):
    ele = 'water'
    att = 125
    a = [('s', 0.9), ('a', 0.2)]
    dragonform = {
        'act': 'c3 s',
        'dx1.dmg': 2.30,
        'dx1.startup': 26 / 60.0,  # c1 frames
        'dx1.hit': 1,
        'dx2.dmg': 2.53,
        'dx2.startup': 38 / 60.0,  # c2 frames
        'dx2.hit': 1,
        'dx3.dmg': 4.03,
        'dx3.startup': 38 / 60.0,  # c3 frames
        'dx3.recovery': 49 / 60.0,  # recovery
        'dx3.hit': 1,
        'ds.recovery': 178 / 60,  # skill frames
        'ds.hit': -1,
        'dodge.startup': 42 / 60,  # dodge frames
    }

    def oninit(self, adv):
        super().oninit(adv)
        from core.advbase import SingleActionBuff
        self.ds_buff = SingleActionBuff('d_sd_buff', 0.40, 1, 's', 'buff')

    def ds_proc(self):
        dmg = self.adv.dmg_make('ds', 5.00, 's')
        self.ds_buff.on(1)
        return dmg
Пример #3
0
Файл: wind.py Проект: zzysan/dl
class Vayu(DragonBase):
    ele = 'wind'
    att = 127
    a = [('s', 0.9), ('a', 0.2)]
    dragonform = {
        'act': 'c3 s',

        'dx1.dmg': 2.08,
        'dx1.startup': (16+19) / 60.0, # c1 frames
        'dx1.hit': 2,

        'dx2.dmg': 2.26,
        'dx2.startup': 34 / 60.0, # c2 frames
        'dx2.hit': 1,

        'dx3.dmg': 3.69,
        'dx3.startup': 79 / 60.0, # c3 frames
        'dx3.recovery': 80 / 60.0, # dodge frames, real recovery 80
        'dx3.hit': 1,

        'ds.recovery': 100 / 60, # skill frames
        'ds.hit': 1,
    }

    def oninit(self, adv):
        super().oninit(adv)
        from core.advbase import SingleActionBuff
        self.ds_buff = SingleActionBuff('d_sd_buff',0.40,1,'s','buff')

    def ds_proc(self):
        dmg = self.adv.dmg_make('ds',8.96,'s')
        self.ds_buff.on(1)
        return dmg
Пример #4
0
class Konohana_Sakuya(DragonBase):
    ele = 'flame'
    att = 121
    a = [('s', 0.9), ('a', 0.2)]
    dragonform = {
        'act': 'c3-s',
        'dx1.dmg': 2.08,
        'dx1.startup': 25 / 60.0,  # c1 frames
        'dx2.startup': 40 / 60.0,  # c2 frames
        'dx1.hit': 1,
        'dx2.dmg': 2.29,
        'dx3.startup': 48 / 60.0,  # c3 frames
        'dx2.hit': 1,
        'dx3.dmg': 3.99,
        'dx3.recovery': 69 / 60.0,  # recovery
        'dx3.hit': 3,
        'ds.recovery': 167 / 60,  # skill frames
        'ds.hit': -1,
    }

    def oninit(self, adv):
        super().oninit(adv)
        from core.advbase import SingleActionBuff
        self.ds_buff = SingleActionBuff('d_sd_buff', 0.40, 1, 's', 'buff')

    def ds_proc(self):
        dmg = self.adv.dmg_make('ds', 6.60, 's')
        self.ds_buff.on(1)
        return dmg
Пример #5
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)
Пример #6
0
class Chelsea(adv.chelsea.Chelsea):
    comment = 'roll fs; only use s1 3 times to proc RO at'
    conf = adv.chelsea.Chelsea.conf.copy()
    conf['slots.d'] = Dreadking_Rathalos()
    conf['slots.a'] = The_Lurker_in_the_Woods() + Dear_Diary()
    conf['acl'] = """
        `s3,not self.s3_buff
        `s2,fsc
        `s1,fsc and self.hp < 30 and self.ro_charges > 0
        `dodge, fsc
        `fs
    """
    coab = ['Blade', 'Grace', 'Hunter_Berserker']

    def init(self):
        self.slots.c.coabs['Hunter_Berserker'] = [None, 'sword']

    def prerun(self):
        super().prerun()
        self.ro_charges = 3 if isinstance(self.slots.a.a2, Dear_Diary) else 0

        self.zerk_chain = None
        if 'Hunter_Berserker' in self.coab_list:
            self.zerk_chain = SingleActionBuff('zerk_chain', 0.20, 1, 'fs',
                                               'buff')

    def dmg_before(self, name):
        hpold = self.hp
        super().dmg_before(name)
        if self.ro_charges > 0 and hpold > 30 and self.hp < 30:
            Selfbuff('resilient_offense', 0.10, -1).on()
            self.comment += ' {}s'.format(round(now()))
            self.ro_charges -= 1
        if self.hp < 100 and self.zerk_chain is not None:
            self.zerk_chain.on()
Пример #7
0
    def prerun(self):
        super().prerun()
        self.ro_charges = 3 if isinstance(self.slots.a.a2, Dear_Diary) else 0

        self.zerk_chain = None
        if 'Hunter_Berserker' in self.coab_list:
            self.zerk_chain = SingleActionBuff('zerk_chain', 0.20, 1, 'fs', 'buff')
Пример #8
0
    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
Пример #9
0
Файл: water.py Проект: zzysan/dl
 def oninit(self, adv):
     super().oninit(adv)
     from core.advbase import SingleActionBuff
     self.ds_buff = SingleActionBuff('d_sd_buff', 0.40, 1, 's', 'buff')
Пример #10
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)