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>();
     }
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 5
0
        //----------------------------------------------------------------------------
        //             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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        //----------------------------------------------------------------------------
        //             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);
        }