public void AddEffectPrefabs(TimedPassiveEffect timedPassiveEffect, out DestroyHelper destroyCondition, bool destroyAfterDuration = true) { destroyCondition = null; if (!string.IsNullOrEmpty(timedPassiveEffect.OnActivatePrefab)) { var o = SpawnPrefab(timedPassiveEffect.OnActivatePrefab, CharacterMono.transform.position, Quaternion.identity, CharacterMono.transform); o.GetComponent <DestroyHelper>().Init(DestroyCondition.Time, ImpactPrefabTime); } if (!string.IsNullOrEmpty(timedPassiveEffect.ActivePrefab)) { var o = SpawnPrefab(timedPassiveEffect.ActivePrefab, CharacterMono.transform.position, Quaternion.identity, CharacterMono.transform); var firstCondition = o.GetComponent <DestroyHelper>(); if (destroyAfterDuration) { firstCondition.Init(DestroyCondition.Time, timedPassiveEffect.Duration); var secondCondition = o.AddComponent <DestroyHelper>(); destroyCondition = secondCondition; } else { destroyCondition = firstCondition; } } }
public StatusEffect() { ID = Guid.NewGuid().ToString(); Effect = new TimedPassiveEffect(); Name = "New Status Effect"; DamageOverTime = new DamageOverTime(); CauseSilence = CauseStun = CauseAnimationFreeze = false; Image = new ImageContainer(); HasSkillMeta = false; }
public void AddTimedPassiveEffect(TimedPassiveEffect timedPassiveEffect) { TimedPassiveEffects.Add(timedPassiveEffect); CustomVariableHandler.HandleCvarSetters(timedPassiveEffect.CustomVariableSetters); if (timedPassiveEffect.RemoveStatusEffect) { RemoveStatusEffect(timedPassiveEffect.RemoveStatusEffectID); } DestroyHelper destroyCondition; AddEffectPrefabs(timedPassiveEffect, out destroyCondition); if (destroyCondition != null) { destroyCondition.Init(DestroyCondition.TimedPassiveNotActive, CharacterMono.Controller, timedPassiveEffect.ID); } FullUpdateStats(); }
public void ApplyTimedPassiveEffect(TimedPassiveEffect timedPassiveEffect) { foreach (var ab in timedPassiveEffect.AttributeBuffs) { GetAttributeByID(ab.AttributeID).SkillValue += ab.Amount; } foreach (var stat in timedPassiveEffect.StatisticBuffs) { GetStatByID(stat.StatisticID).SkillValue += stat.Amount; } foreach (var vit in timedPassiveEffect.VitalBuffs) { GetVitalByID(vit.VitalID).SkillValue += vit.Amount; } //skillimmunity/sus if (timedPassiveEffect.AddSkillImmunity) { if (SkillMetaImmunitiesID.FirstOrDefault(s => s.ID == timedPassiveEffect.SkillImmunityID) == null) { SkillMetaImmunitiesID.Add(new SkillImmunity() { ID = timedPassiveEffect.SkillImmunityID }); } } if (timedPassiveEffect.AddSkillSusceptibility) { var existing = SkillMetaSusceptibilities.FirstOrDefault(s => s.ID == timedPassiveEffect.SkillSusceptibilityID); if (existing != null) { existing.AdditionalDamage += timedPassiveEffect.SkillSusceptibilityAmount; } else { var newSus = new SkillMetaSusceptibility { ID = timedPassiveEffect.SkillSusceptibilityID, AdditionalDamage = timedPassiveEffect.SkillSusceptibilityAmount }; SkillMetaSusceptibilities.Add(newSus); } } foreach (var regenBonus in timedPassiveEffect.VitalRegenBonuses) { var existing = VitalRegenBonuses.FirstOrDefault(s => s.VitalID == regenBonus.VitalID); if (existing != null) { existing.RegenBonus += regenBonus.RegenBonus; } else { var newSus = new VitalRegenBonus { VitalID = regenBonus.VitalID, RegenBonus = regenBonus.RegenBonus }; VitalRegenBonuses.Add(newSus); } } foreach (var statusReduc in timedPassiveEffect.StatusDurationReduction) { var existing = StatusReductions.FirstOrDefault(s => s.StatusEffectID == statusReduc.StatusEffectID && s.IsPercentageDecrease == statusReduc.IsPercentageDecrease); if (existing != null) { existing.DecreaseAmount += statusReduc.DecreaseAmount; } else { var newReduc = new ReduceStatusDuration { StatusEffectID = statusReduc.StatusEffectID, IsPercentageDecrease = statusReduc.IsPercentageDecrease, DecreaseAmount = statusReduc.DecreaseAmount }; StatusReductions.Add(newReduc); } } }
private void DeactivatePassive(TimedPassiveEffect passiveEffect) { DeactivatePassive(passiveEffect as PassiveEffect); }
public void RemoveTimedPassiveEffect(TimedPassiveEffect timedEffect) { RemoveTimedPassiveEffect(timedEffect.ID); }