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; }
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); }
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); }
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); }