/// <summary> /// Перегружаем оператор сложения /// </summary> /// <param name="s1"></param> /// <param name="s2"></param> /// <returns>Возвращает сумму статов</returns> public static PlayerStates operator +(PlayerStates s1, PlayerStates s2) { PlayerStates result = new PlayerStates() { maxHealth = s1.maxHealth + s2.maxHealth, health = s1.health + s2.health, maxEnergy = s1.maxEnergy + s2.maxEnergy, energy = s1.energy + s2.energy, maxMana = s1.maxMana + s2.maxMana, mana = s1.mana + s2.mana, damageMelee = s1.damageMelee + s2.damageMelee, damageRanged = s1.damageRanged + s2.damageRanged, damageMagic = s1.damageMagic + s2.damageMagic, criticalDamageMelee = s1.criticalDamageMelee + s2.criticalDamageMelee, criticalDamageRanged = s1.criticalDamageRanged + s2.criticalDamageRanged, criticalDamageMagic = s1.criticalDamageMagic + s2.criticalDamageMagic, chanceCriticalDamageMelee = s1.chanceCriticalDamageMelee + s2.chanceCriticalDamageMelee, chanceCriticalDamageRanged = s1.chanceCriticalDamageRanged + s2.chanceCriticalDamageRanged, chanceCriticalDamageMagic = s1.chanceCriticalDamageMagic + s2.chanceCriticalDamageMagic, protectionMelee = s1.protectionMelee + s2.protectionMelee, protectionRanged = s1.protectionRanged + s2.protectionRanged, protectionMagic = s1.protectionMagic + s2.protectionMagic }; if (result.health > result.maxHealth) result.health = result.maxHealth; if (result.mana > result.maxMana) result.mana = result.maxMana; if (result.energy > result.maxEnergy) result.energy = result.maxEnergy; return result; }
//private float timeStamp; void Start() { states = new PlayerStates(); damage = new PlayerStates(); specifications = new PlayerSpecifications(); specifications.strength = 3; specifications.stamina = 4; specifications.intelligence = 0; specifications.agility = 4; damage.health = 50f; // урон в 2 ед. states.damageMelee = 2f; states.chanceCriticalDamageMelee = 0.05f; states.criticalDamageMelee = 0.2f; states.health = 30f; states.maxHealth = 30f; base.OnStart(); }
/// <summary> /// Возвращает полученный и "усвоенный" урон /// </summary> /// <param name="defenderStates">Статы защищающейся стороны</param> /// <param name="defenderSpecifications">навыки защищающейся стороны</param> /// <param name="damage">урон-по умолчанию, который сторона получает</param> /// <returns>Возвращает полученный урон</returns> public static PlayerStates doProtection(PlayerStates defenderStates, PlayerSpecifications defenderSpecifications, PlayerStates damage) { return damage; }
/// <summary> /// Урон, который посылает атакующая сторона /// </summary> /// <param name="attackerStates">статы атакующей стороны</param> /// <param name="attackerSpecifications">характеристики атакующей стороны</param> /// <param name="defaultAttack">значение атаки-по умолчанию предмета</param> /// <returns>Возвращает наносимый урон</returns> public static PlayerStates createDamage(PlayerStates attackerStates, PlayerSpecifications attackerSpecifications, PlayerStates defaultAttack) { return defaultAttack; }
/// <summary> /// Наносит урон this /// </summary> /// <param name="value">Значение наносимого урона</param> public override void getDamage(PlayerStates value) { states -= AttackCalculator.doProtection(getStates(),getSpecifications(),value); // пытаемся защититься нанесённому урону }
/// <summary> /// Увеличивает текущие статы AI на набор value /// </summary> /// <param name="value">набор статов, изменяющих значение</param> public abstract void getDamage(PlayerStates value);