Exemplo n.º 1
0
        public async Task ClearBuffByEffect(SkillStates effect)
        {
            var rem = _buffs.Where(x => x.State == effect);

            _buffs = _buffs.Except(rem).ToList();
            await DelBuff(rem.First());
        }
Exemplo n.º 2
0
    public virtual void Interrupt()
    {
        if (state != SkillStates.casting)
        {
            return;
        }

        charges--;
        castTimer      = 0;
        preparingTimer = 0;

        if (isCanceled && freeCancel)
        {
            cooldownTimer = 0;
        }
        else
        {
            cooldownTimer = cooldown;
        }

        isCanceled = false;
        isExpired  = false;
        state      = SkillStates.idling;

        if (isOccupying && caster.isBusy)
        {
            caster.isBusy = false;
        }

        onInterrupted.Invoke(delayMoving);
    }
Exemplo n.º 3
0
        public async Task DelBuff(SkillStates effect)
        {
            var m = new SViewSkillState(0, (ushort)Player.Session.ID, (byte)effect);

            await Player.Session.SendAsync(m);

            await Player.SendV2Message(m);
        }
Exemplo n.º 4
0
        public override string ToString()
        {
            ElementData    element    = DataManager.Instance.GetElement(Element);
            string         type       = Text.FormatKey("MENU_SKILLS_ELEMENT", element.Name.ToLocal());
            string         category   = Text.FormatKey("MENU_SKILLS_CATEGORY", Category.ToLocal());
            BasePowerState powerState = SkillStates.GetWithDefault <BasePowerState>();
            string         power      = Text.FormatKey("MENU_SKILLS_POWER", (powerState != null ? powerState.Power.ToString() : "---"));
            string         acc        = Text.FormatKey("MENU_SKILLS_HIT_RATE", (HitRate > -1 ? HitRate + "%" : "---"));

            return(type + ",  " + category + "\n" + power + ", " + acc);
        }
Exemplo n.º 5
0
    private IEnumerator StartCooldown()
    {
        State = SkillStates.ON_COOLDOWN;
        ResetCoolDown();

        while (TimeBeforeAvailability <= _CooldownTime)
        {
            TimeBeforeAvailability += 0.25f;
            yield return(new WaitForSeconds(0.25f));
        }

        OnSkillCooldownCompleteEvent.Invoke();
        State = SkillStates.AVAILABLE;
    }
Exemplo n.º 6
0
 protected void Activate()
 {
     //Debug.Log($"{name} IS ACTIVATED");
     if (prepareTime > 0)
     {
         state          = SkillStates.preparing;
         preparingTimer = prepareTime;
         RequestAnimation(animationTagDelay);
     }
     else
     {
         BeginScenario();
     }
 }
Exemplo n.º 7
0
    protected virtual void BeginScenario()
    {
        state = SkillStates.casting;

        if (requireStop)
        {
            caster.Stop();
        }

        if (isOccupying)
        {
            caster.isBusy = true;
        }

        castTimer = 0;
    }
Exemplo n.º 8
0
 protected virtual void Start()
 {
     State     = SkillStates.AVAILABLE;
     _Animator = GetComponent <Animator>();
     TimeBeforeAvailability = _CooldownTime;
 }
Exemplo n.º 9
0
        public async void SetBuff(SkillStates effect, TimeSpan time, Character source = null)
        {
            if (_buffs.Any(x => x.State == effect))
            {
                return;
            }

            var buff = new Buff {
                State = effect, EndAt = DateTimeOffset.Now.Add(time), Source = source
            };
            var @char = Player?.Character ?? null;

            switch (effect)
            {
            case SkillStates.ShadowPhantom:
                if (@char == null)
                {
                    break;
                }
                buff.AttackAdd  = @char.Level / 3 + 45;
                buff.DefenseAdd = @char.Level / 3 + 50;
                break;

            case SkillStates.SoulBarrier:
                buff.DefenseAddRate = 10 + source.AgilityTotal / 50 + source.EnergyTotal / 200;
                break;

            case SkillStates.Defense:
                buff.DefenseAdd = source.EnergyTotal / 8;
                break;

            case SkillStates.Attack:
                buff.AttackAdd = source.EnergyTotal / 7;
                break;

            case SkillStates.SwellLife:
                buff.LifeAdd         = 12 + source.EnergyTotal / 10 + source.VitalityTotal / 100;
                Character.MaxHealth += buff.LifeAdd;
                break;

            case SkillStates.HAttackPower:
                buff.AttackAdd = 25;
                break;

            case SkillStates.HAttackSpeed:
                break;

            case SkillStates.HDefensePower:
                buff.DefenseAdd = 100;
                break;

            case SkillStates.HMaxLife:
                buff.LifeAdd = 500;
                break;

            case SkillStates.HMaxMana:
                buff.ManaAdd = 500;
                break;

            case SkillStates.Poison:
                buff.PoisonDamage = 12 + source.EnergyTotal / 10;
                break;
            }

            _buffs.Add(buff);
            if (Monster != null)
            {
                var m2 = new SViewSkillState(1, Monster.Index, (byte)effect);

                await Monster.ViewPort.Select(x => x.Session).SendAsync(m2);

                return;
            }
            var m = new SViewSkillState(1, (ushort)Player.Session.ID, (byte)effect);

            await Player.Session.SendAsync(m);

            await Player.SendV2Message(m);
        }
Exemplo n.º 10
0
 public bool BufActive(SkillStates effect)
 {
     return(_buffs.Any(x => x.State == effect));
 }
Exemplo n.º 11
0
        public async void SetBuff(SkillStates effect, TimeSpan time, Character source = null)
        {
            if (_buffs.Any(x => x.State == effect))
            {
                return;
            }

            var buff = new Buff {
                State = effect, EndAt = DateTimeOffset.Now.Add(time),
            };
            var @char = Player.Character;

            switch (effect)
            {
            case SkillStates.ShadowPhantom:
                buff.AttackAdd  = @char.Level / 3 + 45;
                buff.DefenseAdd = @char.Level / 3 + 50;
                break;

            case SkillStates.SoulBarrier:
                buff.DefenseAddRate = 10 + source.AgilityTotal / 50 + source.EnergyTotal / 200;
                break;

            case SkillStates.Defense:
                buff.DefenseAdd = source.EnergyTotal / 8;
                break;

            case SkillStates.Attack:
                buff.AttackAdd = source.EnergyTotal / 7;
                break;

            case SkillStates.SwellLife:
                buff.LifeAdd = 0;
                break;

            case SkillStates.HAttackPower:
                buff.AttackAdd = 25;
                break;

            case SkillStates.HAttackSpeed:
                break;

            case SkillStates.HDefensePower:
                buff.DefenseAdd = 100;
                break;

            case SkillStates.HMaxLife:
                buff.LifeAdd = 500;
                break;

            case SkillStates.HMaxMana:
                buff.ManaAdd = 500;
                break;
            }

            _buffs.Add(buff);

            var m = new SViewSkillState(1, (ushort)Player.Session.ID, (byte)effect);

            await Player.Session.SendAsync(m);

            await Player.SendV2Message(m);
        }