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); }
public void RemoveStatus(UnitStatus pStatus) { if (mStatuses.Contains(pStatus)) { mStatuses.Remove(pStatus); UnitUpdated?.Invoke(this, null); } }
public void Update(UnitRecord unitRecord) { // referential integrity: //GetStackById(unitRecord.StackId.Value); _gameConfigCache.GetUnitConfigById(unitRecord.UnitTypeId.Value); Units.Update(unitRecord); UnitUpdated?.Invoke(this, unitRecord); }
public virtual void Heal(int pDamage) { if (pDamage == 0) { return; } mCurrentHealth = Math.Min(CurrentHealth + pDamage, MaxHealth); UnitUpdated?.Invoke(this, null); }
public virtual bool ApplyStatus(UnitStatus pStatus) { if (!CanApplyStatus(pStatus)) { return(false); } mStatuses.Add(pStatus); UnitUpdated?.Invoke(this, null); return(true); }
public void ApplyShield() { mHasShield = true; UnitUpdated?.Invoke(this, null); }