private void _GetIsVictimAlterations(IIsVictim isVictim) { if (IsVictimAlterationDict.ContainsKey(isVictim)) { _DamageAlterationsEnumerable = _DamageAlterationsEnumerable.Concat(IsVictimAlterationDict[isVictim]); } }
/// <summary> /// Make sure dictionary entry exists. <para/> /// If it doesn't, initialise it. /// </summary> private void _CheckDictInit(IIsVictim isVictim) { if (!IsVictimAlterationDict.ContainsKey(isVictim)) { IsVictimAlterationDict[isVictim] = new List <IDamageAlteration>(); } }
public void AddAttackAlteration(IIsVictim isVictim, IAttackDataAlteration attackDataAlteration) { if (!IsVictimAlterationsDict.ContainsKey(isVictim)) { IsVictimAlterationsDict[isVictim] = new List <IAttackDataAlteration>(); } IsVictimAlterationsDict[isVictim].Add(attackDataAlteration); }
public void SetAC(IIsVictim isVictim, IACAlterer acAlterer) { if (AC == 0) { Debug.LogError("AC was not set in Inspector"); } acAlterer.AddACMod(isVictim, AC); }
//---------------------------------------------------------------------------- // Add ACMod //---------------------------------------------------------------------------- #region AddACMod public void AddACMod(IIsVictim isVictim, int mod) { if (!ACDict.ContainsKey(isVictim)) { ACDict[isVictim] = mod; } else { ACDict[isVictim] += mod; } }
//---------------------------------------------------------------------------- // AlterDamage //---------------------------------------------------------------------------- #region AlterDamage /// <summary> /// Gets all alterations registered to the hasAttack and isVictim. <para/> /// It then concantenates them, sorts them by operation order, and applies them. /// </summary> public void AlterDamage(IHasAttack hasAttack, IIsVictim isVictim, IAttackData attackData) { _InitialiseDamageAlterationsEnumerable(); _GetHasAttackAlterations(hasAttack); _GetIsVictimAlterations(isVictim); _SortAlterations(); _ApplyAlterations(attackData); }
public void SetAC(IIsVictim isVictim, IACAlterer acAlterer) { Equipment equipment = gameObject.GetComponent <Equipment>(); ArmorObject armorObject = equipment.MyArmor; int mod = armorObject.BaseAC; IHasStats hasStats = gameObject.GetComponent <HasStats>(); int dexMod = hasStats.GetStatMod(StatsType.Dexterity); if (armorObject.HasMaxDexMod && (dexMod > armorObject.MaxDexMod)) { dexMod = armorObject.MaxDexMod; } mod += dexMod; acAlterer.AddACMod(isVictim, mod); }
//---------------------------------------------------------------------------- // GetAc //---------------------------------------------------------------------------- #region GetAC public int GetAC(IIsVictim isVictim) { return(ACDict[isVictim]); }
public void SetIsVictim(IIsVictim victim) { MyIsVictim = victim; }
/// <summary> /// Register a damage alteration for when a character gets attacked. /// </summary> public void RegisterDamageAlteration(IIsVictim isVictim, IDamageAlteration damageAlteration) { _CheckDictInit(isVictim); IsVictimAlterationDict[isVictim].Add(damageAlteration); }