/*
 * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\DragonSkillResponseDto.cs
 * Created: 2025-10-23
 * Last Modified: 2025-10-23
 * Description: Response DTO for dragon skill operations and effects
 * Last Edit Notes: Individual file implementation for dragon skill results
 */

namespace ShadowedRealms.Shared.DTOs.Combat
{
    /// <summary>
    /// Response DTO for dragon skill operations and effects
    /// </summary>
    public class DragonSkillResponseDto
    {
        /// <summary>
        /// Player ID who owns the dragon
        /// </summary>
        public int PlayerId { get; set; }

        /// <summary>
        /// Dragon unique identifier
        /// </summary>
        public int DragonId { get; set; }

        /// <summary>
        /// Skill that was activated or queried
        /// </summary>
        public string SkillName { get; set; } = string.Empty;

        /// <summary>
        /// Current skill level and progression
        /// </summary>
        public Dictionary<string, int> SkillProgression { get; set; } = new();

        /// <summary>
        /// Skill effects and bonuses applied
        /// </summary>
        public Dictionary<string, decimal> SkillEffects { get; set; } = new();

        /// <summary>
        /// Duration of skill effects
        /// </summary>
        public Dictionary<string, TimeSpan> EffectDurations { get; set; } = new();

        /// <summary>
        /// Resource costs for skill activation
        /// </summary>
        public Dictionary<string, long> SkillCosts { get; set; } = new();

        /// <summary>
        /// Cooldown period before skill can be used again
        /// </summary>
        public TimeSpan SkillCooldown { get; set; }

        /// <summary>
        /// Next available use time
        /// </summary>
        public DateTime? NextAvailableTime { get; set; }

        /// <summary>
        /// Combat bonuses provided by the skill
        /// </summary>
        public Dictionary<string, decimal> CombatBonuses { get; set; } = new();

        /// <summary>
        /// Skill-based alternatives to premium features
        /// </summary>
        public List<Dictionary<string, object>> SkillAlternatives { get; set; } = new();

        /// <summary>
        /// Experience gained from skill usage
        /// </summary>
        public long SkillExperience { get; set; }

        /// <summary>
        /// Whether skill activation was successful
        /// </summary>
        public bool ActivationSuccess { get; set; }

        /// <summary>
        /// When skill was activated or queried
        /// </summary>
        public DateTime SkillTime { get; set; }

        /// <summary>
        /// Additional skill-related data and analytics
        /// </summary>
        public Dictionary<string, object> SkillMetadata { get; set; } = new();
    }
}