package com.dowstats.data.dto.controllers.ability

import com.dowstats.data.dto.controllers.AffectedDataDto
import com.dowstats.data.dto.controllers.ArmorPiercingDto
import com.dowstats.data.dto.controllers.ArmorTypeDto
import com.dowstats.data.dto.controllers.DeathExplosionDto
import com.dowstats.data.dto.controllers.ModifierDto
import com.dowstats.data.dto.controllers.RequirementDto

data class AbilityEnvironmentDto(
    var id: Long,
    var modId: Long,
    var filename: String,
    var name: String?,
    var description: String?,
    var icon: String?,
    var health: Int?,
    var armour: Double?,
    var healthRegeneration: Double?,
    var moveSpeed: Int?,
    var sightRadius: Int?,
    var detectRadius: Int?,
    var lifetime: Double?,
    val armorType: ArmorTypeDto?,
    val armorType2: ArmorTypeDto?,
    val abilities: Set<AbilityShortDto>,
    val deathExplosions: Set<DeathExplosionDto>,
)

data class AbilityDto(
    val id: Long?,
    val modId: Long?,
    val filename: String?,
    val name: String?,
    val description: String?,
    val costRequisition: Double?,
    val costPower: Double?,
    val costFaith: Double?,
    val costSouls: Double?,
    val icon: String?,
    val uiIndexHint: Int,
    val hotkey: String?,
    val childAbility: AbilityDto?,
    val initialDelayTime: Double?,
    val range: Double?,
    val rechargeTime: Double?,
    val rechargeTimerGlobal: Boolean?,
    val refreshTime: Double?,
    val durationTime: Double?,
    val radius: Double?,
    val minDamage: Double?,
    val minDamageValue: Double?,
    val maxDamage: Double?,
    val moraleDamage: Double?,
    val throwForceMin: Double?,
    val throwForceMax: Double?,
    val activation: String?,
    val areaEffect: String?,
    val areaFilter: String?,
    val modifiers: List<ModifierDto>,
    val requirements: RequirementDto?,
    var affectedData: AffectedDataDto,
    val targetFilter: List<ArmorTypeDto>,
    val piercings: List<ArmorPiercingDto>,
    val abilityEnvironment: AbilityEnvironmentDto?,
)