public void RemoveTimedPassiveEffect(string id) { var timedEffect = TimedPassiveEffects.FirstOrDefault(s => s.ID == id); if (timedEffect != null) { TimedPassiveEffects.RemoveAll(s => s.ID == timedEffect.ID); CustomVariableHandler.HandleCvarSetters(timedEffect.CustomVariableSettersOnDisable); DeactivatePassive(timedEffect); } }
public void RemoveFriendlyAura(string auraId) { var effect = FriendlyAuras.FirstOrDefault(e => e.AuraEffect.SkillId == auraId); if (effect != null) { FriendlyAuras.Remove(effect); CustomVariableHandler.HandleCvarSetters(effect.AuraEffect.PassiveEffect.CustomVariableSettersOnDisable); DeactivatePassive(effect.AuraEffect.PassiveEffect); } }
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 bool ToggleAura(AuraSkill auraskill, bool onlyTurnOn = false) { var aura = GeneralMethods.CopyObject(auraskill.AuraEffect); var foundAura = AuraEffects.FirstOrDefault(a => a.SkillId == aura.SkillId); var auraIsActive = foundAura != null; bool active; if (!auraIsActive) { AuraEffects.Add(aura); var foundFriendlyAura = FriendlyAuras.FirstOrDefault(a => a.AuraEffect.SkillId == aura.SkillId); if (foundFriendlyAura != null) { RemoveFriendlyAura(foundFriendlyAura); } CustomVariableHandler.HandleCvarSetters(aura.PassiveEffect.CustomVariableSetters); active = true; DestroyHelper destroyCondition; AddEffectPrefabs(aura.PassiveEffect, out destroyCondition); if (destroyCondition != null) { destroyCondition.Init(DestroyCondition.AuraEffectNotActive, CharacterMono.Controller, aura.SkillId); } } else { if (!onlyTurnOn) { RemoveAuraEffect(aura); active = false; } else { active = true; } } FullUpdateStats(); return(active); }
public bool ToggleTalent(Talent talent) { bool active; if (!talent.IsActive) { talent.IsActive = true; CustomVariableHandler.HandleCvarSetters(talent.TalentEffect.Effect.CustomVariableSetters); active = true; } else { talent.IsActive = false; CustomVariableHandler.HandleCvarSetters(talent.TalentEffect.Effect.CustomVariableSettersOnDisable); DeactivatePassive(talent.TalentEffect.Effect); active = false; } FullUpdateStats(); return(active); }
public bool AddFriendlyAura(BaseCharacterMono source, AuraEffect auraEffect) { var aura = GeneralMethods.CopyObject(auraEffect); var foundFriendlyAura = FriendlyAuras.FirstOrDefault(a => a.AuraEffect.SkillId == aura.SkillId); var foundSelfAura = AuraEffects.FirstOrDefault(a => a.SkillId == aura.SkillId); var canAddAura = foundFriendlyAura == null && foundSelfAura == null; bool active; if (canAddAura) { var friendlyAura = new FriendlyAura { SourceCharacter = source, AuraEffect = aura }; FriendlyAuras.Add(friendlyAura); CustomVariableHandler.HandleCvarSetters(aura.PassiveEffect.CustomVariableSetters); active = true; DestroyHelper destroyCondition; AddEffectPrefabs(aura.PassiveEffect, out destroyCondition, false); if (destroyCondition != null) { destroyCondition.Init(DestroyCondition.FriendlyAuraNotAvailable, CharacterMono.Controller, aura.SkillId); } FullUpdateStats(); } else { active = true; } return(active); }
public void AddStatusEffect(StatusEffect statusEffect) { //todo: if in status reductions we have this status, reduce status.duration by amt if status has duration StatusEffects.Add(statusEffect); CustomVariableHandler.HandleCvarSetters(statusEffect.Effect.CustomVariableSetters); DestroyHelper destroyCondition; AddEffectPrefabs(statusEffect.Effect, out destroyCondition); if (destroyCondition != null) { destroyCondition.Init(DestroyCondition.StatusEffectNotActive, CharacterMono.Controller, statusEffect.ID); } if (statusEffect.Effect.RemoveStatusEffect) { RemoveStatusEffect(statusEffect.Effect.RemoveStatusEffectID); } for (int index = 0; index < StatusEffects.Count; index++) { var statusEff = StatusEffects[index]; if (statusEff.Effect.CanBeCancelled) { if (statusEff.Effect.CancellingStatusEffectID == statusEffect.ID) { RemoveStatusEffect(statusEff); index--; } } } for (int index = 0; index < AuraEffects.Count; index++) { var auraEffect = AuraEffects[index]; if (auraEffect.PassiveEffect.CanBeCancelled) { if (auraEffect.PassiveEffect.CancellingStatusEffectID == statusEffect.ID) { RemoveAuraEffect(auraEffect); index--; } } } for (int index = 0; index < TimedPassiveEffects.Count; index++) { var timedPassiveEffect = TimedPassiveEffects[index]; if (timedPassiveEffect.CanBeCancelled) { if (timedPassiveEffect.CancellingStatusEffectID == statusEffect.ID) { RemoveTimedPassiveEffect(timedPassiveEffect); index--; } } } FullUpdateStats(); }