public void ReactivateEffects(List <string> ListIgnoreSkill = null) { foreach (KeyValuePair <string, List <BaseEffect> > ActiveListEffect in DicActiveEffect) { if (ListIgnoreSkill != null && ListIgnoreSkill.Contains(ActiveListEffect.Key)) { continue; } for (int E = ActiveListEffect.Value.Count - 1; E >= 0; --E) { BaseEffect ActiveEffect = ActiveListEffect.Value[E]; ActiveEffect.ReactivateEffect(); } } }
public BaseEffect Copy() { BaseEffect NewCopy = DoCopy(); NewCopy.Lifetime = 0; NewCopy.IsStacking = IsStacking; NewCopy.MaximumStack = MaximumStack; NewCopy.LifetimeType = LifetimeType; NewCopy.LifetimeTypeValue = LifetimeTypeValue; NewCopy.ListFollowingSkill = new List <BaseAutomaticSkill>(ListFollowingSkill.Count); foreach (BaseAutomaticSkill ActiveFollowingSkill in ListFollowingSkill) { NewCopy.ListFollowingSkill.Add(new BaseAutomaticSkill(ActiveFollowingSkill)); } return(NewCopy); }
public void QuickLoad(BinaryReader BR) { int DicActivePilotEffectCount = BR.ReadInt32(); DicActiveEffect = new Dictionary <string, List <BaseEffect> >(DicActivePilotEffectCount); for (int i = 0; i < DicActivePilotEffectCount; ++i) { string Key = BR.ReadString(); int ListEffectValueCount = BR.ReadInt32(); List <BaseEffect> ListEffect = new List <BaseEffect>(ListEffectValueCount); for (int E = 0; E < ListEffectValueCount; ++E) { ListEffect.Add(BaseEffect.FromFile(BR)); } DicActiveEffect.Add(Key, ListEffect); } }
public void QuickLoad(BinaryReader BR, FormulaParser ActiveParser, Dictionary <string, BaseSkillRequirement> DicRequirement, Dictionary <string, BaseEffect> DicEffect, Dictionary <string, AutomaticSkillTargetType> DicAutomaticSkillTarget) { int DicActivePilotEffectCount = BR.ReadInt32(); DicActiveEffect = new Dictionary <string, List <BaseEffect> >(DicActivePilotEffectCount); for (int i = 0; i < DicActivePilotEffectCount; ++i) { string Key = BR.ReadString(); int ListEffectValueCount = BR.ReadInt32(); List <BaseEffect> ListEffect = new List <BaseEffect>(ListEffectValueCount); for (int E = 0; E < ListEffectValueCount; ++E) { ListEffect.Add(BaseEffect.FromQuickSaveFile(BR, ActiveParser, DicRequirement, DicEffect, DicAutomaticSkillTarget)); } DicActiveEffect.Add(Key, ListEffect); } }
public void CopyMembers(BaseEffect Copy) { Lifetime = Copy.Lifetime; IsStacking = Copy.IsStacking; MaximumStack = Copy.MaximumStack; LifetimeType = Copy.LifetimeType; LifetimeTypeValue = Copy.LifetimeTypeValue; if (Copy.GetType() == GetType()) { DoCopyMembers(Copy); } ListFollowingSkill = new List <BaseAutomaticSkill>(Copy.ListFollowingSkill.Count); foreach (BaseAutomaticSkill ActiveFollowingSkill in Copy.ListFollowingSkill) { ListFollowingSkill.Add(ActiveFollowingSkill); } }
public void UpdateAllEffectsLifetime(string LifetimeType) { foreach (KeyValuePair <string, List <BaseEffect> > ActiveListEffect in DicActiveEffect) { for (int E = ActiveListEffect.Value.Count - 1; E >= 0; --E) { BaseEffect ActiveEffect = ActiveListEffect.Value[E]; if (ActiveEffect.LifetimeType == LifetimeType) { --ActiveEffect.Lifetime; ActiveEffect.ResetState(); if (ActiveEffect.Lifetime == 0) { ActiveListEffect.Value.RemoveAt(E); } } } } }
public BaseSkillActivation(BinaryReader BR, Dictionary <string, BaseSkillRequirement> DicRequirement, Dictionary <string, BaseEffect> DicEffect, Dictionary <string, AutomaticSkillTargetType> DicAutomaticSkillTarget) { ActivationPercentage = BR.ReadByte(); _Weight = BR.ReadInt32(); //Requirements int ListRequirementCount = BR.ReadInt32(); ListRequirement = new List <BaseSkillRequirement>(ListRequirementCount); for (int R = 0; R < ListRequirementCount; R++) { ListRequirement.Add(BaseSkillRequirement.LoadCopy(BR, DicRequirement)); } //Effects. int ListEffectCount = BR.ReadInt32(); ListEffect = new List <BaseEffect>(ListEffectCount); ListEffectTarget = new List <List <string> >(ListEffectCount); ListEffectTargetReal = new List <List <AutomaticSkillTargetType> >(ListEffectCount); for (int E = 0; E < ListEffectCount; E++) { int ListActivationTypesCount = BR.ReadInt32(); List <string> NewListActivationType = new List <string>(ListActivationTypesCount); List <AutomaticSkillTargetType> NewListEffectTargetReal = new List <AutomaticSkillTargetType>(ListActivationTypesCount); for (int A = 0; A < ListActivationTypesCount; A++) { string ListActivationType = BR.ReadString(); NewListActivationType.Add(ListActivationType); NewListEffectTargetReal.Add(DicAutomaticSkillTarget[ListActivationType].Copy()); } ListEffectTarget.Add(NewListActivationType); ListEffectTargetReal.Add(NewListEffectTargetReal); ListEffect.Add(BaseEffect.FromFile(BR, DicRequirement, DicEffect, DicAutomaticSkillTarget)); } }
public void ReloadSkills(Dictionary <string, BaseSkillRequirement> DicRequirement, Dictionary <string, BaseEffect> DicEffect, Dictionary <string, AutomaticSkillTargetType> DicAutomaticSkillTarget) { foreach (BaseSkillLevel ActiveSkillLevel in ListSkillLevel) { foreach (BaseSkillActivation ActiveActivation in ActiveSkillLevel.ListActivation) { for (int R = 0; R < ActiveActivation.ListRequirement.Count; R++) { BaseSkillRequirement NewRequirement = DicRequirement[ActiveActivation.ListRequirement[R].SkillRequirementName].Copy(); NewRequirement.CopyMembers(ActiveActivation.ListRequirement[R]); ActiveActivation.ListRequirement[R] = NewRequirement; } ActiveActivation.ListEffectTargetReal.Clear(); foreach (List <string> ListActiveTarget in ActiveActivation.ListEffectTarget) { List <AutomaticSkillTargetType> NewListEffectTargetReal = new List <AutomaticSkillTargetType>(ListActiveTarget.Count); ActiveActivation.ListEffectTargetReal.Add(NewListEffectTargetReal); foreach (string ActiveTarget in ListActiveTarget) { NewListEffectTargetReal.Add(DicAutomaticSkillTarget[ActiveTarget].Copy()); } } for (int E = 0; E < ActiveActivation.ListEffect.Count; E++) { BaseEffect NewEffect = DicEffect[ActiveActivation.ListEffect[E].EffectTypeName].Copy(); NewEffect.CopyMembers(ActiveActivation.ListEffect[E]); ActiveActivation.ListEffect[E] = NewEffect; foreach (BaseAutomaticSkill ActiveFollowingSkill in ActiveActivation.ListEffect[E].ListFollowingSkill) { ActiveFollowingSkill.ReloadSkills(DicRequirement, DicEffect, DicAutomaticSkillTarget); } } } } }
public abstract void ExecuteAndAddEffectToTarget(BaseEffect ActiveSkillEffect, string SkillName);
public abstract bool CanExecuteEffectOnTarget(BaseEffect ActiveSkillEffect);
protected abstract void DoCopyMembers(BaseEffect Copy);