예제 #1
0
        public override void AddCooldown(Spell spell, Item casterItem)
        {
            bool flag   = casterItem != null && casterItem.Template.UseSpell != null;
            int  millis = 0;

            if (flag)
            {
                millis = casterItem.Template.UseSpell.Cooldown;
            }
            if (millis == 0)
            {
                millis = spell.GetCooldown(this.Owner);
            }
            if (millis <= 0)
            {
                return;
            }
            SpellIdCooldown spellIdCooldown = new SpellIdCooldown()
            {
                SpellId = spell.Id,
                Until   = DateTime.Now + TimeSpan.FromMilliseconds((double)millis)
            };

            if (flag)
            {
                spellIdCooldown.ItemId = casterItem.Template.Id;
            }
            this.m_idCooldowns.Add((ISpellIdCooldown)spellIdCooldown);
            this.OwnerChar.Map.CallDelayed(500,
                                           (Action)(() => Asda2SpellHandler.SendSetSkillCooldownResponse(this.OwnerChar, spell)));
            this.OwnerChar.Map.CallDelayed(millis,
                                           (Action)(() => Asda2SpellHandler.SendClearCoolDown(this.OwnerChar, spell.RealId)));
        }
예제 #2
0
        public override void AddCooldown(Spell spell, Item casterItem)
        {
            var itemSpell = casterItem != null && casterItem.Template.UseSpell != null;

            var cd = 0;

            if (itemSpell)
            {
                cd = casterItem.Template.UseSpell.Cooldown;
            }
            if (cd == 0)
            {
                cd = spell.GetCooldown(Owner);
            }


            if (cd > 0)
            {
                var idCooldown = new SpellIdCooldown
                {
                    SpellId = spell.Id,
                    Until   = (DateTime.Now + TimeSpan.FromMilliseconds(cd))
                };

                if (itemSpell)
                {
                    idCooldown.ItemId = casterItem.Template.Id;
                }
                m_idCooldowns.Add(idCooldown);

                OwnerChar.Map.CallDelayed(500, () => Asda2SpellHandler.SendSetSkillCooldownResponse(OwnerChar, spell));
                OwnerChar.Map.CallDelayed(cd, () => Asda2SpellHandler.SendClearCoolDown(OwnerChar, spell.RealId));
            }
        }