Пример #1
0
    /// <summary>
    ///     Attack something
    /// </summary>
    /// <param name="defender">The thing that may or may not defend itself</param>
    public void Attack(IAttackable defender)
    {
        _combatData = GetComponent <CombatData>();
        var damage = CombatData.ComputeDamage(_combatData.ToTemporaryCombatData(), defender.ToTemporaryCombatData());

        Debug.Log(String.Format("player inflicts {0} damage on penguin", damage.DefenderDamage.HealthDamage));

        defender.TakeDamage(damage.DefenderDamage);
        TakeDamage(damage.AttackerDamage);
    }
Пример #2
0
    /// <summary>
    ///     Attack something
    /// </summary>
    /// <param name="defender">The thing that may or may not defend itself</param>
    public void Attack(IAttackable defender)
    {
        // TODO this code is currently copypasta from the Player. That definitely needs to be changed.
        _combatData = GetComponent <CombatData>();
        var damage = CombatData.ComputeDamage(_combatData.ToTemporaryCombatData(), defender.ToTemporaryCombatData());

        Debug.Log(string.Format("penguin inflicts {0} damage on player", damage.DefenderDamage.HealthDamage));

        defender.TakeDamage(damage.DefenderDamage);
        TakeDamage(damage.AttackerDamage);
    }
Пример #3
0
 /// <summary>
 ///     Creates a CombatData object from the player
 /// </summary>
 /// <returns>A CombatData representing the player</returns>
 /// <remarks>
 ///     CombatData's deep clone is used to avoid combat changing actual state through an attacker or defender's
 ///     effects/tags. The CombatResult can be extended to include changes to state or long-term effects for the
 ///     player/enemy to suffer.
 /// </remarks>
 public TemporaryCombatData ToTemporaryCombatData()
 {
     _combatData = GetComponent <CombatData>();
     return(_combatData.ToTemporaryCombatData());
 }