コード例 #1
0
        /// <summary>
        /// La creatura attacca un'altra creatura
        /// Restituisce i dati relativi all'attacco cioè:
        /// Risultati, danno effettuati e danni subiti -> AttackResult struct
        /// </summary>
        public override AttackResult Attack(Creature other)
        {
            AttackResult result;

            if (base.IsDead || base.IsUnconscious || other.IsDead || other.IsUnconscious)
            {
                result = new AttackResult(Results.Failed, 0, 0);
            }
            else
            {
                int res = other.Parry(Fate.Next(0, Strenght + 1), CriticalHit(), this);
                if (res > 0)
                {
                    result = new AttackResult(Results.Success, res, 0);

                    //se il guerriero uccide la creatura nemica aumenta l'esperienza
                    //e riceve la metà dei soldi che possedeva l'altra creatura (li ruba in fretta)
                    if (other.IsDead || other.IsUnconscious)
                    {
                        _level.GainExperience(10 * other.Level);
                        if (_level.LevelUp())
                        {
                            LevelUpCharacteristic();
                        }

                        _money += (other.Money / 2);
                    }
                }
                else if (res < 0)
                {
                    result = new AttackResult(Results.ParryAndRiposte, 0, res * (-1));
                }
                else
                {
                    result = new AttackResult(Results.Parry, 0, 0);
                }

                _weapon.ReduceIntegrity();
                if (_weapon.Integrity <= (int)(0.15f * _weapon.InitialIntegrity) &&
                    _money >= _weapon.CostForRepair)
                {
                    _money -= _weapon.CostForRepair;
                    _weapon.Repair();
                }
            }

            return(result);
        }
コード例 #2
0
        /// <summary>
        /// La creatura attacca un'altra creatura
        /// Restituisce i dati relativi all'attacco cioè:
        /// Risultati, danno effettuati e danni subiti -> AttackResult struct
        /// </summary>
        public override AttackResult Attack(Creature other)
        {
            AttackResult result;

            if (base.IsDead || base.IsUnconscious || other.IsDead || other.IsUnconscious)
            {
                result = new AttackResult(Results.Failed, 0, 0);
            }
            else
            {
                int res = other.Parry(Fate.Next(0, Strenght + 1), CriticalHit(), this);
                if (res > 0)
                {
                    result = new AttackResult(Results.Success, res, 0);
                    //se il goblin uccide la creatura nemica aumenta l'esperienza
                    //e ruba tutti i soldi che possedeva l'altra creatura
                    if (other.IsDead || other.IsUnconscious)
                    {
                        _level.GainExperience(10 * other.Level);
                        if (_level.LevelUp())
                        {
                            LevelUpCharacteristic();
                        }

                        _money += (other.Money);
                    }
                }
                else if (res < 0)
                {
                    result = new AttackResult(Results.ParryAndRiposte, 0, res * (-1));
                }
                else
                {
                    result = new AttackResult(Results.Parry, 0, 0);
                }
            }

            return(result);
        }
コード例 #3
0
 /// <summary>
 /// Metodo per controllare se si verifica un colpo critico oppure no,
 /// Di default un goblin ha il 2% di chance di effettuare un colpo critico
 /// </summary>
 protected override int CriticalHit( )
 {
     return(Fate.Next(0, 101) < _criticalHitChances ? 2 : 1);
 }