示例#1
0
    IEnumerator ExecuteWithPhases(BuffStats stats, Squad owner)
    {
        //первая фаза

        //добавляем модификатор
        owner.AddStatsModifier(stats.firstPhaseModifyer);

        //ждем вторую фазу
        yield return(new WaitForSeconds(stats.firstPhaseDuration));

        //убираем модификатор
        owner.RemoveStatsModifier(stats.firstPhaseModifyer);

        //вторая фаза

        //если вторая фаза есть вообще
        if (stats.secondPhaseDuration > 0)
        {
            //добавляем модификатор
            owner.AddStatsModifier(stats.secondPhaseModifyer);

            //ждем конца скилла
            yield return(new WaitForSeconds(stats.secondPhaseDuration));

            //убираем модификатор
            owner.RemoveStatsModifier(stats.secondPhaseModifyer);
        }

        coroutines[owner] = null;
    }
示例#2
0
        public BuffStats GetBuffStats(Profile profile)
        {
            using var context = new RPGContext(_options);

            var usersItems = JsonConvert.DeserializeObject <ItemsJson>(profile.ItemJson);

            List <int> idList = new List <int>();

            foreach (var item in usersItems.Robbing)
            {
                if (item.Count > 0)
                {
                    idList.Add(item.Id);
                }
            }

            var itemList = GetRobbingItems(idList);

            BuffStats stats = new BuffStats {
                attack = 1M, defense = 1M
            };

            foreach (var item in itemList)
            {
                stats.attack  += item.AttackBuff * usersItems.Robbing.FirstOrDefault(x => x.Id == item.Id).Count;
                stats.defense += item.DefenseBuff * usersItems.Robbing.FirstOrDefault(x => x.Id == item.Id).Count;
            }

            return(stats);
        }
示例#3
0
    public override object CalcUpgradedStats(List <DSPlayerSkill.SkillUpgrade> upgrades)
    {
        BuffStats newStats = (BuffStats)base.CalcUpgradedStats(upgrades);

        foreach (var upgrade in upgrades)
        {
            if (upgrade.isUpgradeToUnlock && upgrade.level > 0)
            {
                newStats.unlocked = true;
            }
        }

        return(newStats);
    }
示例#4
0
    public override bool Execute(object skillStats)
    {
        var res = base.Execute(skillStats);

        if (res)
        {
            BuffStats stats = new BuffStats();
            try
            {
                stats = (BuffStats)skillStats;
            }
            catch
            {
                Debug.Log("Были переданы статы не того скила... скорее всего... кароче сто то с приведением типа...");
                return(false);
            }

            if (owner != null)
            {
                Coroutine cor = null;
                if (coroutines.ContainsKey(owner))
                {
                    cor = coroutines[owner];
                }
                if (cor != null)
                {
                    owner.StopCoroutine(cor);
                }
                coroutines[owner] = owner.StartCoroutine(ExecuteWithPhases(stats, owner));
            }
            else
            {
                Debug.Log("Без овнера этот скилл не работает...");
                res = false;
            }
        }
        return(res);
    }