Ulfred, el afligido
Ulfred, the Afflicted
SpectreN
TagsArrow_onhit_audio, fast_movement, human, humanoid, not_int, red_blood
Vida
125%
Armadura
+30%
Evasión
+30%
Resistencia
0 0 0 0
Damage
175%
Precisión
100%
Impactos críticos Chance
5%
Bonificación de daño crítico
+30%
Attack Distance
4 ~ 65
Tiempo de ataque
1.005 Second
Damage Spread
±20%
Experiencia
250%
Model Size
100%
Type
ExileMercenary1
Metadata
ExileMercenary1
Nivel
68
Vida
9,696
Armadura
3,137
Evasión
620
Damage
408
Daño de hechizos
408
Precisión
2,180
Tiempo de ataque
1.005
Experiencia
71,585
Minion Life
8,289
Minion Damage
909
Minion Armour
4,585
MeleeCrossbowRogueExile
Attack, RangedAttack, Projectile, ProjectilesFromUser, Area, CrossbowSkill, Trappable, Totemable, Mineable, UsableWhileMoving
Disparo con ballesta
Base Damage: 326–490
Probabilidad de impacto crítico: 5%
Tiempo de ataque: 1.005 seg
Dispara una saeta con tu ballesta.
action required target facing angle tolerance degrees [90]
action requires aiming stance [1]
active skill crossbow ammo pairing index [1]
base is projectile [1]
can perform skill while moving [1]
cannot cancel skill before contact point [1]
check for targets between initiator and projectile source [1]
crossbow barrage attack time ratio % [10]
crossbow barrage debuff duration ms [300]
crossbow barrage recoil per shot [2]
crossbow barrage total recoil buff count [8]
disable visual hit effect [1]
has modular projectiles enabled [1]
movement speed +% final while performing action [-70]
movement speed acceleration +% per second while performing action [160]
movement speed while performing action locked duration % [60]
projectile uses contact direction [1]
projectile uses contact position [1]
projectiles crossbow barrage [1]
UnloadAmmoRogueExile
CrossbowAmmoSkill, Attack, UsableWhileMoving
Saeta básica
Base Damage: 326–490
Probabilidad de impacto crítico: 5%
Tiempo de ataque: 1.005 seg
Elimina la saeta que tengas activa y recarga cualquier munición.
7 saetas cargadas en cada reserva de saetas
action allowed queue time override ms [1000]
action can be used in aiming stance [1]
active skill crossbow ammo pairing index [1]
base deal no damage [1]
can perform skill while moving [1]
crossbow ammo skill binds default attack [1]
movement speed +% final while performing action [-30]
movement speed acceleration +% per second while performing action [160]
movement speed while performing action locked duration % [60]
RapidShotRogueExileMercenary1
Attack, RangedAttack, Projectile, ProjectilesFromUser, CrossbowSkill, Trappable, Totemable, Mineable, UsableWhileMoving, Fire
Disparo rápido
Base Damage: 326–490
Probabilidad de impacto crítico: 5%
Daño de ataque: 20%
Tiempo de ataque: 1.005 seg
Dispara saetas altamente modificadas que acumulan calor en tu ballesta. Al usar esta habilidad, se produce una acumulación inicial de calor antes de descargar un torrente de saetas ardientes que ganan daño de fuego en función de la cantidad de calor acumulada. El calor también otorga daño adicional a las granadas que disparas, pero se disipa rápidamente cuando no se está acumulando calor. Puedes disparar una gran cantidad de saetas antes de que tengas que recargar.
Inflige un 80% menos de daño de ataques
Convierte el 60% del daño físico en daño de fuego
Empuja a los enemigos
25% más de velocidad de ataque
Calor máximo: 15
Calor máximo:
Los disparos rápidos ganan un 7% del daño como daño de fuego por cada acumulación de calor
Se carga durante el 400% del tiempo de ataque antes de disparar si la usas cuando no tienes calor
Ganas calor 4 veces por segundo mientras disparas
Las granadas ganan el 6% del daño como daño de fuego extra por cada acumulación de calor
action do not face target [1]
action required target facing angle tolerance degrees [60]
action requires aiming stance [1]
active skill crossbow ammo pairing index [12]
active skill facing angle turn duration ms [100]
active skill override turn duration ms [100]
base is projectile [1]
can perform skill while moving [1]
check for targets between initiator and projectile source [1]
crossbow barrage debuff duration ms [300]
crossbow barrage recoil per shot [1]
crossbow barrage total recoil buff count [8]
disable visual hit effect [1]
has modular projectiles enabled [1]
incendiary rapid shot buff decay per stack ms [200]
movement speed +% final while performing action [-70]
movement speed acceleration +% per second while performing action [160]
projectile uses contact direction [1]
projectile uses contact position [1]
projectiles crossbow barrage [1]
rapid shot minimum stacks required to fire [1]
should use additive aiming animation [1]
RapidShotAmmoRogueExileMercenary1
CrossbowAmmoSkill, ReservesManually, Attack, UsableWhileMoving
Cargar disparo rápido
Base Damage: 326–490
Probabilidad de impacto crítico: 5%
Daño de ataque: 120%
Tiempo de ataque: 1.005 seg
Carga tu ballesta con una reserva grande de saetas altamente modificadas que acumulan calor en tu ballesta, antes de descargar un torrente de saetas ardientes que ganan daño de fuego en función de la cantidad de calor acumulada. El calor también otorga daño adicional a las granadas que disparas, pero se disipa rápidamente cuando no se está acumulando calor. Si vuelves a usar esta habilidad, se recarga la reserva de saetas.
Inflige un 20% más de daño de ataques
50% menos de velocidad de recarga
40 saetas cargadas en cada reserva de saetas
action allowed queue time override ms [1000]
action can be used in aiming stance [1]
active skill crossbow ammo pairing index [12]
base deal no damage [1]
can perform skill while moving [1]
display statset hide usage stats [1]
movement speed +% final while performing action [-30]
movement speed acceleration +% per second while performing action [160]
movement speed while performing action locked duration % [60]
ExplosiveShotRogueExileMercenary1
Attack, RangedAttack, Projectile, ProjectilesFromUser, Area, CrossbowSkill, Trappable, Totemable, Mineable, Fire, UsableWhileMoving
Disparo explosivo
Base Damage: 326–490
Probabilidad de impacto crítico: 5%
Daño de ataque: 150%
Tiempo de ataque: 1.005 seg
Dispara una saeta ardiente que explota al chocar. La explosión también hará explotar todas las granadas que estén en su área de efecto.
Inflige un 50% más de daño de ataques
Convierte el 30% del daño físico en daño de fuego
Empuja a los enemigos
action required target facing angle tolerance degrees [90]
action requires aiming stance [1]
active skill crossbow ammo pairing index [10]
base is projectile [1]
base skill show average damage instead of dps [1]
can perform skill while moving [1]
cannot cancel skill before contact point [1]
check for targets between initiator and projectile source [1]
crossbow barrage attack time ratio % [10]
crossbow barrage debuff duration ms [300]
crossbow barrage recoil per shot [2]
crossbow barrage total recoil buff count [8]
disable visual hit effect [1]
has modular projectiles enabled [1]
movement speed +% final while performing action [-70]
movement speed acceleration +% per second while performing action [160]
movement speed while performing action locked duration % [50]
projectile uses contact direction [1]
projectile uses contact position [1]
projectiles crossbow barrage [1]
projectiles fire at ground [1]
should use additive aiming animation [1]
ExplosiveShotAmmoRogueExileMercenary1
CrossbowAmmoSkill, ReservesManually, Attack, UsableWhileMoving
Cargar disparo explosivo
Base Damage: 326–490
Probabilidad de impacto crítico: 5%
Daño de ataque: 120%
Tiempo de ataque: 1.005 seg
Carga tu ballesta con saetas ardientes que explotan al chocar. La explosión también hará explotar todas las granadas que estén en su área de efecto.
Inflige un 20% más de daño de ataques
30% menos de velocidad de recarga
1 saeta cargada en cada reserva de saetas
action allowed queue time override ms [1000]
action can be used in aiming stance [1]
active skill crossbow ammo pairing index [10]
base deal no damage [1]
can perform skill while moving [1]
display statset hide usage stats [1]
movement speed +% final while performing action [-30]
movement speed acceleration +% per second while performing action [160]
movement speed while performing action locked duration % [60]
FragmentationRoundsRogueExileMercenary1
Attack, RangedAttack, Projectile, ProjectilesFromUser, CrossbowSkill, Trappable, Totemable, Mineable, UsableWhileMoving, SkillConsumesFreeze
Saetas de fragmentación
Base Damage: 326–490
Probabilidad de impacto crítico: 5%
Daño de ataque: 20%
Tiempo de ataque: 1.005 seg
Dispara saetas perforantes que se fragmentan durante el vuelo. Las saetas que impactan a un enemigo congelado consumen su congelamiento y provocan una explosión de metralla. Las saetas que impactan a un cristal de hielo lo hacen explotar.
Inflige un 80% menos de daño de ataques
Empuja a los enemigos
Ciega a los enemigos al impactar
No puede congelar
Consume el congelamiento al impactar
Sobrepasa el % de la reducción de daño físico
Dispara 10 saetas por ráfaga
Las saetas perforan 2 objetivos
Varios fragmentos pueden impactar a un mismo objetivo
Si varios fragmentos impactan a un objetivo simultáneamente, combinarán su daño en un solo impacto
action required target facing angle tolerance degrees [90]
action requires aiming stance [1]
active skill crossbow ammo pairing index [11]
active skill projectile speed +% variation final [40]
base is projectile [1]
base skill show average damage instead of dps [1]
can perform skill while moving [1]
cannot cancel skill before contact point [1]
check for targets between initiator and projectile source [1]
destroy frost wall segment on hit [1]
disable visual hit effect [1]
has modular projectiles enabled [1]
movement speed +% final while performing action [-70]
movement speed acceleration +% per second while performing action [160]
movement speed while performing action locked duration % [50]
projectile distance variance [10]
projectile uses contact direction [1]
projectile uses contact position [1]
projectiles normal distribution height mean [3]
projectiles normal distribution height standard deviation [20]
projectiles normal distribution spread standard deviation [8]
should use additive aiming animation [1]
FragmentationRoundsAmmoRogueExileMercenary1
CrossbowAmmoSkill, ReservesManually, Attack, UsableWhileMoving
Cargar saetas de fragmentación
Base Damage: 326–490
Probabilidad de impacto crítico: 5%
Daño de ataque: 120%
Tiempo de ataque: 1.005 seg
Carga tu ballesta con saetas perforantes que se fragmentan durante el vuelo. Las saetas que impactan a un enemigo congelado consumen su congelamiento y provocan una explosión de metralla. Las saetas que impactan a un cristal de hielo lo hacen explotar.
Inflige un 20% más de daño de ataques
1 saeta cargada en cada reserva de saetas
action allowed queue time override ms [1000]
action can be used in aiming stance [1]
active skill crossbow ammo pairing index [11]
base deal no damage [1]
can perform skill while moving [1]
display statset hide usage stats [1]
movement speed +% final while performing action [-30]
movement speed acceleration +% per second while performing action [160]
movement speed while performing action locked duration % [60]
ExplosiveGrenadeRogueExileMercenary1
Attack, RangedAttack, Area, ProjectileNumber, ProjectileSpeed, Cooldown, Grenade, Fire, UsableWhileMoving, DetonatesAfterTime, Projectile
Granada explosiva
Base Damage: 326–490
Probabilidad de impacto crítico: 5%
Daño de ataque: 265%
Tiempo de ataque: 1.005 seg
Tiempo de recarga: 7 seg
Dispara una granada que rebota y provoca una explosión ardiente devastadora cuando se consume su mecha.
El tiempo de detonación es de 3 segundos
Inflige un 165% más de daño de ataques
Convierte el 80% del daño físico en daño de fuego
El radio de la explosión es de 2 metros
action allowed queue time override ms [1000]
action can be used in aiming stance [1]
action required target facing angle tolerance degrees [90]
active skill projectile speed +% variation final if multiple projectiles [15]
ballistic projectiles always bounce [1]
base is projectile [1]
base skill show average damage instead of dps [1]
can perform skill while moving [1]
fixed projectile spread [30]
is area damage [1]
movement speed +% final while performing action [-70]
movement speed acceleration +% per second while performing action [160]
movement speed while performing action locked duration % [60]
projectile ballistic angle from reference event [1]
projectile uses contact direction [1]
projectile uses contact position [1]
projectiles cannot fork [1]
FlashGrenadeRogueExileMercenary1
Attack, RangedAttack, Area, ProjectileNumber, ProjectileSpeed, Cooldown, Grenade, UsableWhileMoving, DetonatesAfterTime, Projectile
Granada aturdidora
Base Damage: 326–490
Probabilidad de impacto crítico: 5%
Daño de ataque: 150%
Tiempo de ataque: 1.005 seg
Tiempo de recarga: 5 seg
Dispara una granada que rebota y provoca una explosión cegadora y aturdidora cuando se consume su mecha. Esta explosión puede cegar tanto a los aliados como a los enemigos.
El tiempo de detonación es de 0.85 segundos
Inflige un 50% más de daño de ataques
500% más de acumulación de aturdimiento
El radio de la explosión es de 2.6 metros
Ciega a los enemigos y aliados
action allowed queue time override ms [1000]
action can be used in aiming stance [1]
action required target facing angle tolerance degrees [90]
active skill projectile speed +% variation final if multiple projectiles [15]
ballistic projectiles always bounce [1]
base is projectile [1]
base skill show average damage instead of dps [1]
can perform skill while moving [1]
disable visual hit effect [1]
fixed projectile spread [30]
is area damage [1]
movement speed +% final while performing action [-70]
movement speed acceleration +% per second while performing action [160]
movement speed while performing action locked duration % [60]
projectile ballistic angle from reference event [1]
projectile uses contact direction [1]
projectile uses contact position [1]
projectiles cannot fork [1]
OilGrenadeRogueExileMercenary1
Attack, RangedAttack, Area, ProjectileNumber, ProjectileSpeed, Cooldown, Duration, Grenade, Fire, UsableWhileMoving, CreatesGroundEffect, DetonatesAfterTime, Projectile
Granada de aceite
Base Damage: 326–490
Probabilidad de impacto crítico: 5%
Tiempo de ataque: 1.005 seg
Tiempo de recarga: 5 seg
Dispara una granada que rebota y que, cuando expira su mecha o impacta a un enemigo, estalla rociando aceite. Esto inflige un daño mínimo pero cubre el suelo y a los enemigos cercanos en aceite. El aceite creado de esta forma se puede quemar con habilidades detonadoras o con el suelo quemado.
El tiempo de detonación es de 1.6 segundos
Cubrir a los enemigos con aceite ralentiza su velocidad de movimiento en un 20%
Cubrir a los enemigos con aceite aplica exposición al fuego, lo que disminuye la resistencia al fuego en un 20%
El suelo aceitoso ralentiza la velocidad de movimiento de los enemigos en un 30%
El suelo aceitoso aplica exposición al fuego a los enemigos, lo que disminuye la resistencia al fuego total en un 20%
El radio del aceite rociado es de 2 metros
La duración del aceite y del suelo aceitoso es de 5 segundos
action allowed queue time override ms [1000]
action can be used in aiming stance [1]
action required target facing angle tolerance degrees [90]
active skill projectile speed +% variation final if multiple projectiles [15]
ballistic projectiles always bounce [1]
base is projectile [1]
base skill show average damage instead of dps [1]
can perform skill while moving [1]
fixed projectile spread [30]
ground oil art variation [2000]
is area damage [1]
movement speed +% final while performing action [-70]
movement speed acceleration +% per second while performing action [160]
movement speed while performing action locked duration % [80]
projectile ballistic angle from reference event [1]
projectile uses contact direction [1]
projectile uses contact position [1]
projectiles cannot fork [1]
DodgeRollRogueExileGeneric
UsableWhileShapeshifted
+3.7 metros a la distancia de esquivar rodando
Inflige un 10% menos de daño de ataques
La velocidad de lanzamiento de hechizos de esta habilidad no se puede modificar
action allowed queue time override ms [100]
action attack or cast time uses animation length [1]
base deal no damage [1]
base skill enabled while mounted [1]
dodge roll additional pushiness modifier [5]
dynamic target updating prioritises movement vector [1]
skill cannot be knocked back [1]
skill is not considered a skill [1]
usable while shapeshifted town or hideout only [1]

Object Type

version 2
extends "Metadata/Monsters/RogueExiles/RogueExileBase"

PlayerClass
{
	class = "Mercenary"
}

Object Type Codes

version 2
extends "Metadata/Monsters/RogueExiles/RogueExileBase"

/* ------------------------------------------------------------------------------------------------------------------- */
/* Audio */
/* ------------------------------------------------------------------------------------------------------------------- */

Functions
{
	combat_dialogue = 
	"
	Roll(1, 3,
	{
		PlayTextAudio( RogueExile_Ulfred_CombatGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );
	} );
	" 
	    // this will have a chance to fire instead of the class specific lines when combat first starts
    player_engaged_random = "PlayTextAudio( RogueExile_Ulfred_EngageGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"

    target_fleeing_dialogue = "QueueTextAudio( RogueExile_Sondar_PlayerFlees_Random, 'Metadata/Monsters/RogueExiles/DexInt/ExileMonk1' );"

    on_death = 
    "
	Roll(1, 5,
	{	
    	PlayTextAudio( RogueExile_Ulfred_Death_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );
    } );
    "
}

Brackets
{
	player_engaged_dialogue_StrFour = "PlayTextAudio( RogueExile_Ulfred_EngageGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
	player_engaged_dialogue_StrFourb = "PlayTextAudio( RogueExile_Ulfred_EngageGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
	player_engaged_dialogue_IntFour = "PlayTextAudio( RogueExile_Ulfred_EngageWitch, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
	player_engaged_dialogue_IntFourb = "PlayTextAudio( RogueExile_Ulfred_EngageGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
	player_engaged_dialogue_DexFour = "PlayTextAudio( RogueExile_Ulfred_EngageGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
	player_engaged_dialogue_DexFourb = "PlayTextAudio( RogueExile_Ulfred_EngageGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
	player_engaged_dialogue_StrDexFour = "PlayTextAudio( RogueExile_Ulfred_EngageGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
	player_engaged_dialogue_StrDexFourb = "PlayTextAudio( RogueExile_Ulfred_EngageMerc, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
	player_engaged_dialogue_DexIntFour = "PlayTextAudio( RogueExile_Ulfred_EngageGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
	player_engaged_dialogue_DexIntFourb = "PlayTextAudio( RogueExile_Ulfred_EngageGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
	player_engaged_dialogue_StrIntFour = "PlayTextAudio( RogueExile_Ulfred_EngageGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
	player_engaged_dialogue_StrIntFourb = "PlayTextAudio( RogueExile_Ulfred_EngageGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"

	player_death_dialogue_StrFour = "PlayTextAudio( RogueExile_Ulfred_KillPlayerGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
	player_death_dialogue_StrFourb = "PlayTextAudio( RogueExile_Ulfred_KillPlayerGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
	player_death_dialogue_IntFour = "PlayTextAudio( RogueExile_Ulfred_KillPlayerGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
	player_death_dialogue_IntFourb = "PlayTextAudio( RogueExile_Ulfred_KillPlayerGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
	player_death_dialogue_DexFour = "PlayTextAudio( RogueExile_Ulfred_KillPlayerGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
	player_death_dialogue_DexFourb = "PlayTextAudio( RogueExile_Ulfred_KillPlayerGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
	player_death_dialogue_StrDexFour = "PlayTextAudio( RogueExile_Ulfred_KillPlayerGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
	player_death_dialogue_StrDexFourb = "PlayTextAudio( RogueExile_Ulfred_KillPlayerGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
	player_death_dialogue_DexIntFour = "PlayTextAudio( RogueExile_Ulfred_KillPlayerGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
	player_death_dialogue_DexIntFourb = "PlayTextAudio( RogueExile_Ulfred_KillPlayerGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
	player_death_dialogue_StrIntFour = "PlayTextAudio( RogueExile_Ulfred_KillPlayerGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
	player_death_dialogue_StrIntFourb = "PlayTextAudio( RogueExile_Ulfred_KillPlayerGeneral_Random, 'Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1' );"
} 
-- src\Data\Spectres.lua
minions["Metadata/Monsters/RogueExiles/StrDex/ExileMercenary1"] = {
    name = "Ulfred, the Afflicted",
    life = 1.25,
    fireResist = 0,
    coldResist = 0,
    lightningResist = 0,
    chaosResist = 0,
    damage = 1.75,
    damageSpread = 0.2,
    attackTime = 1.005,
    attackRange = 65,
    accuracy = 1,
    weaponType1 = "Crossbow",
    skillList = {
        "MeleeCrossbowRogueExile",
        "UnloadAmmoRogueExile",
        "DodgeRollRogueExileGeneric",
        "RapidShotRogueExileMercenary1",
        "RapidShotAmmoRogueExileMercenary1",
        "ExplosiveShotRogueExileMercenary1",
        "ExplosiveShotAmmoRogueExileMercenary1",
        "FragmentationRoundsRogueExileMercenary1",
        "FragmentationRoundsAmmoRogueExileMercenary1",
        "ExplosiveGrenadeRogueExileMercenary1",
        "FlashGrenadeRogueExileMercenary1",
        "OilGrenadeRogueExileMercenary1",
    },
    modList = {
    },
}
-- src\Data\Skills\spectre.lua
skills["MeleeCrossbowRogueExile"] = {
    name = "Crossbow Shot",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    description = "Fire a bolt from your crossbow.",
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.RangedAttack] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectilesFromUser] = true,
        [SkillType.Area] = true,
        [SkillType.CrossbowSkill] = true,
        [SkillType.Trappable] = true,
        [SkillType.Totemable] = true,
        [SkillType.Mineable] = true,
        [SkillType.UsableWhileMoving] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
        attack = true,
        area = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_required_target_facing_angle_tolerance_degrees",
        "crossbow_barrage_attack_time_ratio_%",
        "crossbow_barrage_recoil_per_shot",
        "crossbow_barrage_total_recoil_buff_count",
        "crossbow_barrage_debuff_duration_ms",
        "base_knockback_distance",
        "movement_speed_+%_final_while_performing_action",
        "movement_speed_acceleration_+%_per_second_while_performing_action",
        "movement_speed_while_performing_action_locked_duration_%",
        "active_skill_crossbow_ammo_pairing_index",
        "base_is_projectile",
        "has_modular_projectiles_enabled",
        "action_requires_aiming_stance",
        "projectile_uses_contact_position",
        "projectile_uses_contact_direction",
        "check_for_targets_between_initiator_and_projectile_source",
        "projectiles_crossbow_barrage",
        "cannot_cancel_skill_before_contact_point",
        "disable_visual_hit_effect",
        "can_perform_skill_while_moving",
    },
    levels = {
        [1] = {90, 10, 2, 8, 300, 0, -70, 160, 60, 1, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["UnloadAmmoRogueExile"] = {
    name = "Basic Bolt",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    description = "Clear your active Bolt and reload any ammunition.",
    skillTypes = {
        [SkillType.CrossbowAmmoSkill] = true,
        [SkillType.Attack] = true,
        [SkillType.UsableWhileMoving] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 0.5,
    baseFlags = {
        attack = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_allowed_queue_time_override_ms",
        "movement_speed_+%_final_while_performing_action",
        "movement_speed_acceleration_+%_per_second_while_performing_action",
        "movement_speed_while_performing_action_locked_duration_%",
        "base_number_of_crossbow_bolts",
        "active_skill_crossbow_ammo_pairing_index",
        "crossbow_ammo_skill_binds_default_attack",
        "action_can_be_used_in_aiming_stance",
        "can_perform_skill_while_moving",
        "base_deal_no_damage",
    },
    levels = {
        [1] = {1000, -30, 160, 60, 7, 1, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["DodgeRollRogueExileGeneric"] = {
    name = "DodgeRollRogueExileGeneric",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.UsableWhileShapeshifted] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 0.75,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_allowed_queue_time_override_ms",
        "dodge_roll_base_travel_distance",
        "dodge_roll_additional_pushiness_modifier",
        "base_deal_no_damage",
        "skill_cannot_be_knocked_back",
        "spell_cast_time_cannot_be_modified",
        "action_attack_or_cast_time_uses_animation_length",
        "usable_while_shapeshifted_town_or_hideout_only",
        "dynamic_target_updating_prioritises_movement_vector",
        "skill_is_not_considered_a_skill",
        "base_skill_enabled_while_mounted",
    },
    levels = {
        [1] = {100, 37, 5, baseMultiplier = 0.9, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["RapidShotRogueExileMercenary1"] = {
    name = "Rapid Shot",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    description = "Fire heavily modified bolts that cause Heat to build up on your crossbow. Using this skill causes an initial buildup of Heat before unleashing a stream of flaming bolts that gain [Fire] Damage based on your Heat. Heat also grants bonus damage to [Grenade|Grenades] you fire, but dissipates rapidly when not building up. Can fire a large number of bolts before needing to reload.",
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.RangedAttack] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectilesFromUser] = true,
        [SkillType.CrossbowSkill] = true,
        [SkillType.Trappable] = true,
        [SkillType.Totemable] = true,
        [SkillType.Mineable] = true,
        [SkillType.UsableWhileMoving] = true,
        [SkillType.Fire] = true,
    },
    statDescriptionScope = "rapid_shot_incendiary",
    castTime = 1,
    baseFlags = {
        attack = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "rapid_shot_maximum_num_of_stacks",
        "action_required_target_facing_angle_tolerance_degrees",
        "active_skill_base_physical_damage_%_to_convert_to_fire",
        "incendiary_rapid_shot_buff_decay_per_stack_ms",
        "rapid_shot_minimum_stacks_required_to_fire",
        "active_skill_override_turn_duration_ms",
        "active_skill_facing_angle_turn_duration_ms",
        "crossbow_barrage_recoil_per_shot",
        "crossbow_barrage_total_recoil_buff_count",
        "crossbow_barrage_debuff_duration_ms",
        "base_knockback_distance",
        "movement_speed_+%_final_while_performing_action",
        "movement_speed_acceleration_+%_per_second_while_performing_action",
        "rapid_shot_charge_up_time_as_%_of_attack_time",
        "rapid_shot_heat_gained_per_minue_while_performing",
        "rapid_shot_all_damage_%_to_gain_as_fire_per_stack",
        "rapid_shot_next_grenade_all_damage_%_to_gain_as_fire_per_stack",
        "active_skill_crossbow_ammo_pairing_index",
        "active_skill_attack_speed_+%_final",
        "base_is_projectile",
        "has_modular_projectiles_enabled",
        "action_requires_aiming_stance",
        "should_use_additive_aiming_animation",
        "projectile_uses_contact_position",
        "projectile_uses_contact_direction",
        "check_for_targets_between_initiator_and_projectile_source",
        "projectiles_crossbow_barrage",
        "disable_visual_hit_effect",
        "action_do_not_face_target",
        "can_perform_skill_while_moving",
        "quality_display_rapid_shot_maximum_num_of_stacks_is_gem",
    },
    levels = {
        [1] = {15, 60, 60, 200, 1, 100, 100, 1, 8, 300, 30, -70, 160, 400, 240, 7, 6, 12, 25, baseMultiplier = 0.2, levelRequirement = 1, statInterpolation = {1},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["RapidShotAmmoRogueExileMercenary1"] = {
    name = "Load Rapid Shot",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    description = "[Ammunition|Load your Crossbow] with a large clip of heavily modified bolts that cause Heat to build up on your crossbow, before unleashing a stream of flaming bolts that gain [Fire] Damage based on your Heat. Heat also grants bonus damage to [Grenade|Grenades] you fire, but dissipates rapidly when not building up. Using this skill again reloads the clip.",
    skillTypes = {
        [SkillType.CrossbowAmmoSkill] = true,
        [SkillType.ReservesManually] = true,
        [SkillType.Attack] = true,
        [SkillType.UsableWhileMoving] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1.2,
    baseFlags = {
        attack = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "base_number_of_crossbow_bolts",
        "action_allowed_queue_time_override_ms",
        "movement_speed_+%_final_while_performing_action",
        "movement_speed_acceleration_+%_per_second_while_performing_action",
        "movement_speed_while_performing_action_locked_duration_%",
        "active_skill_reload_speed_+%_final",
        "active_skill_crossbow_ammo_pairing_index",
        "action_can_be_used_in_aiming_stance",
        "can_perform_skill_while_moving",
        "base_deal_no_damage",
        "display_statset_hide_usage_stats",
    },
    levels = {
        [1] = {40, 1000, -30, 160, 60, -50, 12, baseMultiplier = 1.2, levelRequirement = 1, statInterpolation = {1},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["ExplosiveShotRogueExileMercenary1"] = {
    name = "Explosive Shot",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    description = "Fire a flaming bolt that explodes on impact. The explosion will cause any [Grenade|Grenades] in its area of effect to also explode.",
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.RangedAttack] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectilesFromUser] = true,
        [SkillType.Area] = true,
        [SkillType.CrossbowSkill] = true,
        [SkillType.Trappable] = true,
        [SkillType.Totemable] = true,
        [SkillType.Mineable] = true,
        [SkillType.Fire] = true,
        [SkillType.UsableWhileMoving] = true,
    },
    statDescriptionScope = "power_shot_incendiary",
    castTime = 1,
    baseFlags = {
        attack = true,
        area = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_required_target_facing_angle_tolerance_degrees",
        "active_skill_base_physical_damage_%_to_convert_to_fire",
        "crossbow_barrage_attack_time_ratio_%",
        "crossbow_barrage_recoil_per_shot",
        "crossbow_barrage_total_recoil_buff_count",
        "crossbow_barrage_debuff_duration_ms",
        "base_knockback_distance",
        "movement_speed_+%_final_while_performing_action",
        "movement_speed_acceleration_+%_per_second_while_performing_action",
        "movement_speed_while_performing_action_locked_duration_%",
        "active_skill_crossbow_ammo_pairing_index",
        "base_is_projectile",
        "has_modular_projectiles_enabled",
        "action_requires_aiming_stance",
        "projectile_uses_contact_position",
        "projectile_uses_contact_direction",
        "check_for_targets_between_initiator_and_projectile_source",
        "projectiles_crossbow_barrage",
        "cannot_cancel_skill_before_contact_point",
        "disable_visual_hit_effect",
        "projectiles_fire_at_ground",
        "can_perform_skill_while_moving",
        "should_use_additive_aiming_animation",
        "base_skill_show_average_damage_instead_of_dps",
    },
    levels = {
        [1] = {90, 30, 10, 2, 8, 300, 400, -70, 160, 50, 10, baseMultiplier = 1.5, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["ExplosiveShotAmmoRogueExileMercenary1"] = {
    name = "Load Explosive Shot",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    description = "[Ammunition|Load your Crossbow] with flaming bolts that explode on impact. The explosion will cause any [Grenade|Grenades] in its area of effect to also explode.",
    skillTypes = {
        [SkillType.CrossbowAmmoSkill] = true,
        [SkillType.ReservesManually] = true,
        [SkillType.Attack] = true,
        [SkillType.UsableWhileMoving] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1.5,
    baseFlags = {
        attack = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "base_number_of_crossbow_bolts",
        "action_allowed_queue_time_override_ms",
        "movement_speed_+%_final_while_performing_action",
        "movement_speed_acceleration_+%_per_second_while_performing_action",
        "movement_speed_while_performing_action_locked_duration_%",
        "active_skill_reload_speed_+%_final",
        "active_skill_crossbow_ammo_pairing_index",
        "action_can_be_used_in_aiming_stance",
        "can_perform_skill_while_moving",
        "base_deal_no_damage",
        "display_statset_hide_usage_stats",
    },
    levels = {
        [1] = {1, 1000, -30, 160, 60, -30, 10, baseMultiplier = 1.2, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["FragmentationRoundsRogueExileMercenary1"] = {
    name = "Fragmentation Rounds",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    description = "Fire [Pierce|Piercing] bolts that fragment in flight. Bolts that hit a [Frozen] enemy [Consume] the [Freeze] and cause an explosion of shrapnel. Bolts that hit an [IceCrystals|Ice Crystal] cause it to explode.",
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.RangedAttack] = true,
        [SkillType.Projectile] = true,
        [SkillType.ProjectilesFromUser] = true,
        [SkillType.CrossbowSkill] = true,
        [SkillType.Trappable] = true,
        [SkillType.Totemable] = true,
        [SkillType.Mineable] = true,
        [SkillType.UsableWhileMoving] = true,
        [SkillType.SkillConsumesFreeze] = true,
    },
    statDescriptionScope = "burst_shot_piercing",
    castTime = 1,
    baseFlags = {
        attack = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "projectiles_normal_distribution_height_mean",
        "projectiles_normal_distribution_height_standard_deviation",
        "projectiles_normal_distribution_spread_standard_deviation",
        "action_required_target_facing_angle_tolerance_degrees",
        "base_number_of_projectiles",
        "projectile_distance_variance",
        "active_skill_projectile_speed_+%_variation_final",
        "active_skill_hit_damage_stun_multiplier_+%_final",
        "enemy_phys_reduction_%_penalty_vs_hit",
        "projectile_base_number_of_targets_to_pierce",
        "base_knockback_distance",
        "movement_speed_+%_final_while_performing_action",
        "movement_speed_acceleration_+%_per_second_while_performing_action",
        "movement_speed_while_performing_action_locked_duration_%",
        "active_skill_crossbow_ammo_pairing_index",
        "global_chance_to_blind_on_hit_%",
        "base_is_projectile",
        "projectiles_can_shotgun",
        "has_modular_projectiles_enabled",
        "action_requires_aiming_stance",
        "should_use_additive_aiming_animation",
        "projectile_uses_contact_position",
        "projectile_uses_contact_direction",
        "check_for_targets_between_initiator_and_projectile_source",
        "cannot_cancel_skill_before_contact_point",
        "destroy_frost_wall_segment_on_hit",
        "disable_visual_hit_effect",
        "can_perform_skill_while_moving",
        "base_skill_show_average_damage_instead_of_dps",
        "base_consume_enemy_freeze_on_hit",
        "never_freeze",
    },
    levels = {
        [1] = {3, 20, 8, 90, 10, 10, 40, 0, 0, 2, 100, -70, 160, 50, 11, 100, baseMultiplier = 0.2, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["FragmentationRoundsAmmoRogueExileMercenary1"] = {
    name = "Load Fragmentation Rounds",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    description = "[Ammunition|Load your Crossbow] with [Pierce|Piercing] bolts that fragment in flight. Bolts that hit a [Frozen] enemy consume the Freeze and cause an explosion of shrapnel. Bolts that hit an [IceCrystals|Ice Crystal] cause it to explode.",
    skillTypes = {
        [SkillType.CrossbowAmmoSkill] = true,
        [SkillType.ReservesManually] = true,
        [SkillType.Attack] = true,
        [SkillType.UsableWhileMoving] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 0.8,
    baseFlags = {
        attack = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "base_number_of_crossbow_bolts",
        "action_allowed_queue_time_override_ms",
        "movement_speed_+%_final_while_performing_action",
        "movement_speed_acceleration_+%_per_second_while_performing_action",
        "movement_speed_while_performing_action_locked_duration_%",
        "active_skill_crossbow_ammo_pairing_index",
        "action_can_be_used_in_aiming_stance",
        "can_perform_skill_while_moving",
        "base_deal_no_damage",
        "display_statset_hide_usage_stats",
    },
    levels = {
        [1] = {1, 1000, -30, 160, 60, 11, baseMultiplier = 1.2, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["ExplosiveGrenadeRogueExileMercenary1"] = {
    name = "Explosive Grenade",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    description = "Fire a bouncing [Grenade] that unleashes a devastating fiery blast when its fuse expires.",
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.RangedAttack] = true,
        [SkillType.Area] = true,
        [SkillType.ProjectileNumber] = true,
        [SkillType.ProjectileSpeed] = true,
        [SkillType.Cooldown] = true,
        [SkillType.Grenade] = true,
        [SkillType.Fire] = true,
        [SkillType.UsableWhileMoving] = true,
        [SkillType.DetonatesAfterTime] = true,
        [SkillType.Projectile] = true,
    },
    statDescriptionScope = "explosive_grenade",
    castTime = 1,
    baseFlags = {
        attack = true,
        area = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "active_skill_base_area_of_effect_radius",
        "action_allowed_queue_time_override_ms",
        "action_required_target_facing_angle_tolerance_degrees",
        "base_skill_detonation_time",
        "active_skill_base_physical_damage_%_to_convert_to_fire",
        "movement_speed_+%_final_while_performing_action",
        "movement_speed_acceleration_+%_per_second_while_performing_action",
        "movement_speed_while_performing_action_locked_duration_%",
        "fixed_projectile_spread",
        "active_skill_projectile_speed_+%_variation_final_if_multiple_projectiles",
        "base_is_projectile",
        "projectile_ballistic_angle_from_reference_event",
        "projectile_uses_contact_position",
        "is_area_damage",
        "action_can_be_used_in_aiming_stance",
        "ballistic_projectiles_always_bounce",
        "can_perform_skill_while_moving",
        "projectile_uses_contact_direction",
        "base_skill_show_average_damage_instead_of_dps",
        "projectiles_cannot_fork",
    },
    levels = {
        [1] = {20, 1000, 90, 3000, 80, -70, 160, 60, 30, 15, baseMultiplier = 2.65, levelRequirement = 1, statInterpolation = {1},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["FlashGrenadeRogueExileMercenary1"] = {
    name = "Flash Grenade",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    description = "Fire a bouncing [Grenade] that unleashes a [Blind|Blinding], [Stun|Stunning] explosion when its fuse expires. This explosion can [Blind|Blind] both [Allies|Allies] and Enemies.",
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.RangedAttack] = true,
        [SkillType.Area] = true,
        [SkillType.ProjectileNumber] = true,
        [SkillType.ProjectileSpeed] = true,
        [SkillType.Cooldown] = true,
        [SkillType.Grenade] = true,
        [SkillType.UsableWhileMoving] = true,
        [SkillType.DetonatesAfterTime] = true,
        [SkillType.Projectile] = true,
    },
    statDescriptionScope = "flash_grenade",
    castTime = 1,
    baseFlags = {
        attack = true,
        area = true,
        projectile = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "active_skill_base_area_of_effect_radius",
        "action_allowed_queue_time_override_ms",
        "action_required_target_facing_angle_tolerance_degrees",
        "base_skill_detonation_time",
        "attacks_chance_to_blind_on_hit_%",
        "active_skill_hit_damage_stun_multiplier_+%_final",
        "movement_speed_+%_final_while_performing_action",
        "movement_speed_acceleration_+%_per_second_while_performing_action",
        "movement_speed_while_performing_action_locked_duration_%",
        "fixed_projectile_spread",
        "active_skill_projectile_speed_+%_variation_final_if_multiple_projectiles",
        "base_is_projectile",
        "projectile_ballistic_angle_from_reference_event",
        "projectile_uses_contact_position",
        "is_area_damage",
        "action_can_be_used_in_aiming_stance",
        "disable_visual_hit_effect",
        "ballistic_projectiles_always_bounce",
        "can_perform_skill_while_moving",
        "projectile_uses_contact_direction",
        "base_skill_show_average_damage_instead_of_dps",
        "projectiles_cannot_fork",
    },
    levels = {
        [1] = {26, 1000, 90, 850, 100, 500, -70, 160, 60, 30, 15, baseMultiplier = 1.5, levelRequirement = 1, statInterpolation = {1},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["OilGrenadeRogueExileMercenary1"] = {
    name = "Oil Grenade",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    description = "Fire a bouncing [Grenade] that bursts in a spray of [Oil] when the fuse expires or when it impacts an Enemy, dealing minimal damage but covering the [OilGround|ground] and nearby enemies in [Oil]. Oil created this way can be [Ignite|Ignited] by [Detonator] Skills or [IgnitedGround|Ignited Ground].",
    skillTypes = {
        [SkillType.Attack] = true,
        [SkillType.RangedAttack] = true,
        [SkillType.Area] = true,
        [SkillType.ProjectileNumber] = true,
        [SkillType.ProjectileSpeed] = true,
        [SkillType.Cooldown] = true,
        [SkillType.Duration] = true,
        [SkillType.Grenade] = true,
        [SkillType.Fire] = true,
        [SkillType.UsableWhileMoving] = true,
        [SkillType.CreatesGroundEffect] = true,
        [SkillType.DetonatesAfterTime] = true,
        [SkillType.Projectile] = true,
    },
    statDescriptionScope = "oil_grenade",
    castTime = 1,
    baseFlags = {
        attack = true,
        area = true,
        projectile = true,
        duration = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "active_skill_base_area_of_effect_radius",
        "action_allowed_queue_time_override_ms",
        "ground_oil_art_variation",
        "action_required_target_facing_angle_tolerance_degrees",
        "base_skill_detonation_time",
        "base_secondary_skill_effect_duration",
        "movement_speed_+%_final_while_performing_action",
        "movement_speed_acceleration_+%_per_second_while_performing_action",
        "movement_speed_while_performing_action_locked_duration_%",
        "skill_base_covered_in_oil_movement_speed_+%_final_to_apply",
        "skill_base_ground_oil_movement_speed_+%_final_to_apply",
        "skill_base_ground_oil_exposure_-_to_total_fire_resistance",
        "skill_base_covered_in_oil_exposure_-_to_total_fire_resistance",
        "fixed_projectile_spread",
        "active_skill_projectile_speed_+%_variation_final_if_multiple_projectiles",
        "base_is_projectile",
        "projectile_ballistic_angle_from_reference_event",
        "projectile_uses_contact_position",
        "is_area_damage",
        "action_can_be_used_in_aiming_stance",
        "ballistic_projectiles_always_bounce",
        "can_perform_skill_while_moving",
        "projectile_uses_contact_direction",
        "base_skill_show_average_damage_instead_of_dps",
        "projectiles_cannot_fork",
    },
    levels = {
        [1] = {20, 1000, 2000, 90, 1600, 5000, -70, 160, 80, -20, -30, 20, 20, 30, 15, levelRequirement = 1, statInterpolation = {1},  cost = { }, },
    },
}
Edit

Wikis Content is available under CC BY-NC-SA 3.0 unless otherwise noted.