Esempio n. 1
0
 public virtual int Damage(int pDamage, DamageType pType)
 {
     if (pDamage == 0)
     {
         return(0);
     }
     if (pType == DamageType.Direct || pType == DamageType.DirectEnemy)
     {
         if (pType == DamageType.DirectEnemy && mTeam == Team.Enemy)
         {
             pDamage += Location.PlayArea.GetVekHormoneDamage();
         }
         if (IsArmored)
         {
             --pDamage;
         }
         if (mStatuses.Contains(UnitStatus.ACID))
         {
             pDamage *= 2;
         }
     }
     if (mHasShield)
     {
         mHasShield = false;
         UnitUpdated?.Invoke(this, null);
         return(-999);
     }
     mCurrentHealth -= pDamage;
     UnitUpdated?.Invoke(this, null);
     return(pDamage);
 }
Esempio n. 2
0
 public void RemoveStatus(UnitStatus pStatus)
 {
     if (mStatuses.Contains(pStatus))
     {
         mStatuses.Remove(pStatus);
         UnitUpdated?.Invoke(this, null);
     }
 }
Esempio n. 3
0
        public void Update(UnitRecord unitRecord)
        {
            // referential integrity:
            //GetStackById(unitRecord.StackId.Value);
            _gameConfigCache.GetUnitConfigById(unitRecord.UnitTypeId.Value);

            Units.Update(unitRecord);
            UnitUpdated?.Invoke(this, unitRecord);
        }
Esempio n. 4
0
 public virtual void Heal(int pDamage)
 {
     if (pDamage == 0)
     {
         return;
     }
     mCurrentHealth = Math.Min(CurrentHealth + pDamage, MaxHealth);
     UnitUpdated?.Invoke(this, null);
 }
Esempio n. 5
0
 public virtual bool ApplyStatus(UnitStatus pStatus)
 {
     if (!CanApplyStatus(pStatus))
     {
         return(false);
     }
     mStatuses.Add(pStatus);
     UnitUpdated?.Invoke(this, null);
     return(true);
 }
Esempio n. 6
0
 public void ApplyShield()
 {
     mHasShield = true;
     UnitUpdated?.Invoke(this, null);
 }