-- 
-- Generated by dota2-pos5
-- 

--# selene: allow(unscoped_variables)
--# selene: allow(unused_variable)


--- @meta dota2.types

--- @alias CombatAnalyzerQueryID integer

--- @alias CustomGameEventListenerID integer

--- @alias EntityIndex integer

--- @alias EventListenerID integer

--- @alias ParticleID integer

--- @alias PlayerID integer

--- @alias ProjectileID integer

--- @alias SpawnGroupHandle integer

--- @alias ViewerID integer

--- @class LocalTime
--- @field Minutes integer
--- @field Seconds integer
--- @field Hours integer

--- @class CScriptHTTPResponse
--- @field Body string
--- @field Request CScriptHTTPRequest
--- @field StatusCode integer

--- @class ApplyDamageOptions
--- @field victim CDOTA_BaseNPC
--- @field attacker CDOTA_BaseNPC
--- @field damage number
--- @field damage_type DAMAGE_TYPES
--- @field damage_flags DOTADamageFlag_t | nil
--- @field ability CDOTABaseAbility | nil

--- @class CreateIllusionsModifierKeys
--- @field outgoing_damage number | nil
--- @field incoming_damage number | nil
--- @field bounty_base number | nil
--- @field bounty_growth number | nil
--- @field outgoing_damage_structure number | nil
--- @field outgoing_damage_roshan number | nil

--- @class EntityBounds
--- @field Mins Vector
--- @field Maxs Vector

--- @class CombatAnalyzerQueryResult
--- @field query_id CombatAnalyzerQueryID

--- @class ExecuteOrderOptions
--- @field UnitIndex EntityIndex
--- @field OrderType dotaunitorder_t
--- @field TargetIndex EntityIndex | nil Only used when targeting units.
--- @field AbilityIndex EntityIndex | nil Only used when casting abilities.
--- @field Position Vector | nil Only used when targeting the ground.
--- @field Queue boolean | nil Used for queueing up abilities.

--- @class TraceCollideableInputs
--- @field startpos Vector
--- @field endpos Vector
--- @field ent CBaseEntity
--- @field mins any | nil
--- @field maxs any | nil

--- @class TraceCollideableOutputs : TraceCollideableInputs
--- @field hit boolean
--- @field pos Vector
--- @field normal Vector
--- @field fraction number

--- @class TraceHullInputs
--- @field startpos Vector
--- @field endpos Vector
--- @field min any
--- @field max any
--- @field mask any | nil
--- @field ignore any | nil

--- @class TraceHullOutputs : TraceHullInputs
--- @field hit boolean
--- @field startsolid boolean
--- @field pos Vector
--- @field normal Vector
--- @field fraction number
--- @field enthit CBaseEntity | nil

--- @class TraceLineInputs
--- @field startpos Vector
--- @field endpos Vector
--- @field mask any | nil
--- @field ignore any | nil

--- @class TraceLineOutputs : TraceLineInputs
--- @field hit boolean
--- @field startsolid boolean
--- @field pos Vector
--- @field normal Vector
--- @field fraction number
--- @field enthit CBaseEntity | nil

--- @class CreateBaseProjectileOptions
--- @field EffectName string | nil
--- @field Ability CDOTABaseAbility | nil
--- @field Source CDOTA_BaseNPC | nil
--- @field bProvidesVision boolean | nil
--- @field iVisionRadius integer | nil
--- @field iVisionTeamNumber DOTATeam_t | nil
--- @field ExtraData table | nil Extra data associated with projectile instance, that is passed to `OnProjectileThink_ExtraData` and `OnProjectileHit_ExtraData`.

--- @class CreateLinearProjectileOptions : CreateBaseProjectileOptions
--- @field vSpawnOrigin Vector | nil
--- @field vVelocity Vector | nil
--- @field vAcceleration Vector | nil Velocity change per second.
--- @field fMaxSpeed number | nil
--- @field fDistance number | nil
--- @field fStartRadius number | nil
--- @field fEndRadius number | nil
--- @field fExpireTime number | nil
--- @field iUnitTargetTeam DOTA_UNIT_TARGET_TEAM | nil
--- @field iUnitTargetFlags DOTA_UNIT_TARGET_FLAGS | nil
--- @field iUnitTargetType DOTA_UNIT_TARGET_TYPE | nil
--- @field bIgnoreSource boolean | nil
--- @field bHasFrontalCone boolean | nil
--- @field bDrawsOnMinimap boolean | nil @default false
--- @field bVisibleToEnemies boolean | nil Makes it invisible for all teams.

--- @class CreateTrackingProjectileOptions : CreateBaseProjectileOptions
--- @field vSourceLoc Vector | nil
--- @field Target CDOTA_BaseNPC | nil
--- @field iMoveSpeed integer | nil
--- @field flExpireTime number | nil
--- @field bDodgeable boolean | nil
--- @field bIsAttack boolean | nil
--- @field bReplaceExisting boolean | nil When enabled replaces existing projectile from the ability. Does not destroy the particle. @default false
--- @field bIgnoreObstructions boolean | nil
--- @field bSuppressTargetCheck boolean | nil
--- @field iSourceAttachment DOTAProjectileAttachment_t | nil
--- @field bDrawsOnMinimap boolean | nil @default false
--- @field bVisibleToEnemies boolean | nil @default true

--- @class AbilityTuningValueFilterEvent
--- @field entindex_caster_const EntityIndex
--- @field entindex_ability_const EntityIndex
--- @field value_name_const string
--- @field value integer

--- @class BountyRunePickupFilterEvent
--- @field player_id_const PlayerID
--- @field xp_bounty integer
--- @field gold_bounty integer

--- @class DamageFilterEvent
--- @field entindex_attacker_const EntityIndex
--- @field entindex_victim_const EntityIndex
--- @field entindex_inflictor_const EntityIndex | nil
--- @field damagetype_const DAMAGE_TYPES
--- @field damage number

--- @class ExecuteOrderFilterEvent
--- @field units { [string]: EntityIndex }
--- @field entindex_target EntityIndex
--- @field entindex_ability EntityIndex
--- @field issuer_player_id_const PlayerID
--- @field sequence_number_const integer
--- @field queue 0 | 1
--- @field order_type dotaunitorder_t
--- @field position_x number
--- @field position_y number
--- @field position_z number
--- @field shop_item_name string

--- @class HealingFilterEvent
--- @field entindex_target_const EntityIndex
--- @field entindex_inflictor_const EntityIndex | nil
--- @field entindex_healer_const EntityIndex | nil
--- @field heal integer

--- @class ItemAddedToInventoryFilterEvent
--- @field inventory_parent_entindex_const EntityIndex
--- @field item_parent_entindex_const EntityIndex
--- @field item_entindex_const EntityIndex
--- @field suggested_slot -1 | DOTAScriptInventorySlot_t

--- @class ModifierGainedFilterEvent
--- @field entindex_caster_const EntityIndex
--- @field entindex_parent_const EntityIndex
--- @field entindex_ability_const EntityIndex
--- @field name_const string
--- @field duration integer -1 means forever. All other values less or equal to 0 would be equal to 1 frame.

--- @class ModifyExperienceFilterEvent
--- @field hero_entindex_const EntityIndex
--- @field player_id_const PlayerID
--- @field reason_const EDOTA_ModifyXP_Reason
--- @field experience integer

--- @class ModifyGoldFilterEvent
--- @field player_id_const PlayerID
--- @field reason_const EDOTA_ModifyGold_Reason
--- @field reliable 0 | 1
--- @field gold integer

--- @class RuneSpawnFilterEvent
--- @field spawner_entindex_const EntityIndex
--- @field rune_type DOTA_RUNES

--- @class TrackingProjectileFilterEvent
--- @field entindex_source_const EntityIndex
--- @field entindex_target_const EntityIndex
--- @field entindex_ability_const EntityIndex
--- @field is_attack 0 | 1
--- @field dodgeable 0 | 1
--- @field max_impact_time integer
--- @field move_speed integer
--- @field expire_time integer

--- @class ModifierAttackEvent
--- @field attacker CDOTA_BaseNPC
--- @field damage number
--- @field damage_type DAMAGE_TYPES
--- @field damage_category DamageCategory_t
--- @field damage_flags DOTADamageFlag_t
--- @field inflictor CDOTABaseAbility | nil
--- @field original_damage number
--- @field ranged_attack boolean
--- @field target CDOTA_BaseNPC
--- @field no_attack_cooldown boolean
--- @field record integer
--- @field fail_type attackfail
--- @field report_max boolean | nil

--- @class ModifierInstanceEvent
--- @field attacker CDOTA_BaseNPC
--- @field damage number
--- @field damage_type DAMAGE_TYPES
--- @field damage_category DamageCategory_t
--- @field damage_flags DOTADamageFlag_t
--- @field inflictor CDOTABaseAbility | nil
--- @field original_damage number
--- @field ranged_attack boolean
--- @field unit CDOTA_BaseNPC
--- @field no_attack_cooldown boolean
--- @field record integer
--- @field fail_type attackfail

--- @class ModifierUnitEvent
--- @field new_pos Vector
--- @field order_type dotaunitorder_t
--- @field unit CDOTA_BaseNPC

--- @class ModifierAbilityEvent : ModifierUnitEvent
--- @field ability CDOTABaseAbility
--- @field target CDOTA_BaseNPC | nil

--- @class ModifierOverrideAbilitySpecialEvent
--- @field ability CDOTABaseAbility
--- @field ability_special_value string
--- @field ability_special_level integer

--- @class ModifierAddedEvent
--- @field unit CDOTA_BaseNPC
--- @field added_buff CDOTA_Buff

--- @class ModifierHealEvent : ModifierUnitEvent
--- @field gain integer

--- @class SpawnEntityFromTableOptions
--- @field origin string | Vector | nil
--- @field angles string | QAngle | nil
--- @field scales string | Vector | nil
--- @field targetname string | nil
--- @field vscripts string | nil

--- @class CreateUnitFromTableOptions : SpawnEntityFromTableOptions
--- @field MapUnitName string
--- @field teamnumber DOTATeam_t | nil
--- @field modelscale integer | nil
--- @field initial_waypoint string | nil targetname of path_corner or path_track
--- @field EnableAutoStyles string | nil
--- @field rendercolor string | nil RGB, example: "255 255 255"
--- @field skin integer | nil
--- @field NeverMoveToClearSpace boolean | nil


