Eternal Knight
Undead
100% Chance to Block Attack Damage
+25% to maximum Block chance
SpectreY
AreaMausoleum of the Praetor, Tomb of the Consort, Holten, Epitaph, The Ziggurat Refuge
Tags2HSharpMetal_onhit_audio, allows_additional_projectiles, allows_inc_aoe, bones, humanoid, melee, monster_blocks_damage, not_dex, not_int, physical_affinity, skeleton, undead, very_slow_movement
Packs
  • Mausoleum of the Praetor: Lightning Wraith, Eternal Knight, Risen Rattler
  • Mausoleum of the Praetor, Tomb of the Consort, Holten: Eternal Knight, Risen Rattler, Risen Rattler, Risen Rattler
  • The Ziggurat Refuge: Eternal Knight, Risen Rattler, Risen Rattler
  • Life
    225%
    Armour
    +80%
    Resistance
    0 0 0 0
    Damage
    225%
    Accuracy
    100%
    5%
    Attack Distance
    5 ~ 15
    Attack Time
    1.5 Second
    Damage Spread
    ±20%
    Experience
    225%
    Model Size
    100%
    Type
    SkeletalKnight
    Metadata
    SkeletalKnight
    Level
    65
    Life
    14,654
    Armour
    3,641
    Evasion Rating
    663
    Damage
    478
    Spell Damage
    478
    Accuracy
    2,214
    Attack Time
    1.5
    Experience
    48,391
    Minion Life
    14,135
    Minion Damage
    1,865
    Minion Armour
    6,878
    MeleeAtAnimationSpeed
    Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
    Basic Attack
    Base Damage: 382–573
    Critical Hit Chance: 5%
    Attack Time: 1.5 sec
    action attack or cast time uses animation length [1]
    projectile uses contact position [1]
    skill can fire wand projectiles [1]
    use scaled contact offset [1]
    SkeletalKnightCleave
    Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
    Basic Attack
    Base Damage: 382–573
    Critical Hit Chance: 5%
    Attack Time: 1.5 sec
    Cooldown Time: 1.5 sec
    action attack or cast time uses animation length [1]
    projectile uses contact position [1]
    skill can fire wand projectiles [1]
    use scaled contact offset [1]
    GASkeletalKnightShieldBash
    Triggerable, Attack
    Base Damage: 382–573
    Critical Hit Chance: 5%
    Attack Damage: 125%
    Attack Time: 1.5 sec
    Cooldown Time: 6.5 sec
    Deals 25% more Attack Damage
    action attack or cast time uses animation length [1]
    is area damage [1]
    MPSSkeletalKnightShieldProjectile
    Spell, Projectile, ProjectilesFromUser, Triggerable, Damage
    Critical Hit Chance: 5%
    Cast Time: 1 sec
    Cooldown Time: 0.5 sec
    Deals 122.2 to 183.3 Physical Damage
    Deals 122.2 to 183.3 Fire Damage
    action attack or cast time uses animation length [1]
    base is projectile [1]
    maintain projectile direction when using contact position [1]
    monster projectile variation [1111]
    projectile spread radius [3]
    projectile uses contact position [1]
    spell maximum action distance +% [-30]
    GASkeletalKnightShieldBashImpact
    Triggerable, Attack
    Base Damage: 382–573
    Critical Hit Chance: 5%
    Attack Damage: 125%
    Attack Time: 1.5 sec
    Deals 25% more Attack Damage
    action attack or cast time uses animation length [1]
    is area damage [1]

    Object Type

    version 2
    extends "Metadata/Monsters/Monster"
    
    Transitionable
    {
    	
    }
    
    Actor
    {
    	basic_action = "Emerge"
    	basic_action = "Revive"
    }
    
    
    StateMachine
    {
    	define_shared_state = "ghostflame;"
    }
    
    Stats
    {
    	set_base_heavy_stun_duration_ms = 2950
    }

    Object Type Codes

    version 2
    extends "Metadata/Monsters/Monster"
    
    Transitionable
    {
    
    	on_transition =
    	"
    		Roll( 1, 2, { PlayEffect( 'Metadata/Monsters/SkeletalKnight/SkeletalKnightAggroAudio.ao' ); } );
    	"
    }
    
    Animated
    {
    
    	preload_animated_object = "Metadata/Monsters/SkeletalKnight/SkeletalKnightAggroAudio.ao"
    
    }
    
    StateMachine
    {
    	on_or_create_state_ghostflame_0 = "RemoveEffectPack( 'Metadata/Effects/Spells/monsters_effects/Act1_FOUR/SkeletalKnight/epk/ghostflame_energy.epk' );"
    	on_or_create_state_ghostflame_1 = "AddEffectPack( 'Metadata/Effects/Spells/monsters_effects/Act1_FOUR/SkeletalKnight/epk/ghostflame_energy.epk' );"
    }
    
    Life
    {
    	on_death = "SetLightState( on_death, 1.25 );"
    	on_spawned_dead = "SetLightState( on_death );"
    	on_revive = "SetLightState( alive, 1.5 );"
    }
    
    Functions
    {
    	blocked = "AddEffectPackToVisualSlotAttachedObject( BlockedHitSkeletalKnight, OffHand );"
    }
    -- src\Data\Spectres.lua
    minions["Metadata/Monsters/SkeletalKnight/SkeletalKnight"] = {
        name = "Eternal Knight",
        life = 2.25,
        fireResist = 0,
        coldResist = 0,
        lightningResist = 0,
        chaosResist = 0,
        damage = 2.25,
        damageSpread = 0.2,
        attackTime = 1.5,
        attackRange = 15,
        accuracy = 1,
        weaponType2 = "Shield",
        skillList = {
            "MeleeAtAnimationSpeed",
            "MPSSkeletalKnightShieldProjectile",
            "GASkeletalKnightShieldBash",
            "GASkeletalKnightShieldBashImpact",
            "SkeletalKnightCleave",
        },
        modList = {
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MeleeAtAnimationSpeed"] = {
        name = "Basic Attack",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.RangedAttack] = true,
            [SkillType.MirageArcherCanUse] = true,
            [SkillType.Projectile] = true,
            [SkillType.MeleeSingleTarget] = true,
            [SkillType.Melee] = true,
            [SkillType.ProjectilesFromUser] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            melee = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "skill_can_fire_arrows",
            "skill_can_fire_wand_projectiles",
            "action_attack_or_cast_time_uses_animation_length",
            "projectile_uses_contact_position",
            "use_scaled_contact_offset",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MPSSkeletalKnightShieldProjectile"] = {
        name = "MPSSkeletalKnightShieldProjectile",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Spell] = true,
            [SkillType.Projectile] = true,
            [SkillType.ProjectilesFromUser] = true,
            [SkillType.Triggerable] = true,
            [SkillType.Damage] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            spell = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_fire_damage",
            "spell_maximum_base_fire_damage",
            "spell_minimum_base_physical_damage",
            "spell_maximum_base_physical_damage",
            "monster_projectile_variation",
            "spell_maximum_action_distance_+%",
            "projectile_spread_radius",
            "base_is_projectile",
            "projectile_uses_contact_position",
            "maintain_projectile_direction_when_using_contact_position",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {0.40000000596046, 0.60000002384186, 0.40000000596046, 0.60000002384186, 1111, -30, 3, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3, 3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GASkeletalKnightShieldBash"] = {
        name = "GASkeletalKnightShieldBash",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Attack] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {baseMultiplier = 1.25, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GASkeletalKnightShieldBashImpact"] = {
        name = "GASkeletalKnightShieldBashImpact",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Attack] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {baseMultiplier = 1.25, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["SkeletalKnightCleave"] = {
        name = "Basic Attack",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.RangedAttack] = true,
            [SkillType.MirageArcherCanUse] = true,
            [SkillType.Projectile] = true,
            [SkillType.MeleeSingleTarget] = true,
            [SkillType.Melee] = true,
            [SkillType.ProjectilesFromUser] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            melee = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "skill_can_fire_arrows",
            "skill_can_fire_wand_projectiles",
            "action_attack_or_cast_time_uses_animation_length",
            "projectile_uses_contact_position",
            "use_scaled_contact_offset",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    
    100% Chance to Block Attack Damage
    +25% to maximum Block chance
    FamilyMonsterBlock
    DomainsMonster (3)
    GenerationTypeUnique (3)
    Req. level1
    Stats
  • monster base block % Min: 100 Max: 100 Global
  • additional maximum block % Min: 25 Max: 25 Global
  • Craft Tagsblock
    keyval
    Stats.item_drop_slots1
    Stats.energy_shield_recharge_rate_per_minute_%750
    Stats.base_maximum_mana200
    Stats.maximum_physical_damage_reduction_%75
    Stats.base_maximum_all_resistances_%75
    Stats.monster_base_flask_charges_percent_of_monster_power50
    Stats.base_critical_hit_damage_bonus30
    Stats.max_endurance_charges3
    Stats.max_frenzy_charges3
    Stats.max_power_charges3
    Stats.object_inherent_base_maximum_block_%_from_ot50
    Stats.movement_velocity_cap128
    Stats.max_azurite_debuff_stacks10
    Stats.ignore_skill_weapon_restrictions1
    Stats.melee_hit_damage_stun_multiplier_+%_final_from_ot33
    Stats.physical_hit_damage_stun_multiplier_+%_final_from_ot100
    Stats.scale_melee_range_to_actor_scale1
    Stats.use_melee_pattern_range1
    Stats.melee_swing_not_scaled_by_area_modifiers1
    Stats.actor_scale_+%_limit200
    Stats.base_heavy_stun_duration_ms2950
    Stats.melee_defer_damage_prediction1
    Stats.poise_decay_delay_ms8000
    Stats.poise_decay_%_per_second5
    Stats.base_block_angle_degrees180
    Stats.action_attack_or_cast_time_uses_animation_length1
    Stats.slow_potency_+%_final_per_additional_player-10
    Stats.check_for_targets_between_initiator_and_projectile_source1
    Stats.maximum_life_+%_final_per_additional_player50
    Stats.maximum_energy_shield_+%_final_per_additional_player50
    Stats.poise_threshold_+%_final_per_additional_player50
    Stats.stun_base_duration_override_ms500
    Stats.bleeding_moving_damage_%_of_base_override200
    ObjectMagicProperties.stat_description_listMetadata/StatDescriptions/monster_stat_descriptions.csd
    Positioned.blockingtrue
    Positioned.team0
    Positioned.serialise_collidabletrue
    BaseEvents.server_onlytrue
    Actor.basic_actionMove, MoveForced, MoveToFormation, Flee, StrafeLeft, StrafeRight, StrafeRandom, Advance, DoNothing, MonsterPickup, MinionInteraction, Emerge, Revive
    Actor.slow_animations_go_to_idlefalse
    StateMachine.define_shared_stateghostflame;
    Eternal Knight
    Undead
    100% Chance to Block Attack Damage
    +25% to maximum Block chance
    SpectreN
    Tags2HSharpMetal_onhit_audio, allows_additional_projectiles, allows_inc_aoe, bones, humanoid, melee, monster_blocks_damage, not_dex, not_int, physical_affinity, quest_null_monster_mods, skeleton, undead, very_slow_movement
    Life
    225%
    Armour
    +80%
    Resistance
    0 0 0 0
    Damage
    225%
    Accuracy
    100%
    5%
    Attack Distance
    5 ~ 15
    Attack Time
    1.5 Second
    Damage Spread
    ±20%
    Experience
    225%
    Model Size
    100%
    Type
    SkeletalKnight
    Metadata
    SkeletalKnightLandmark
    Level
    68
    Life
    17,453
    Armour
    4,343
    Evasion Rating
    708
    Damage
    525
    Spell Damage
    525
    Accuracy
    2,464
    Attack Time
    1.5
    Experience
    64,427
    Minion Life
    15,593
    Minion Damage
    2,180
    Minion Armour
    8,204
    MeleeAtAnimationSpeed
    Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
    Basic Attack
    Base Damage: 420–629
    Critical Hit Chance: 5%
    Attack Time: 1.5 sec
    action attack or cast time uses animation length [1]
    projectile uses contact position [1]
    skill can fire wand projectiles [1]
    use scaled contact offset [1]
    SkeletalKnightCleave
    Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
    Basic Attack
    Base Damage: 420–629
    Critical Hit Chance: 5%
    Attack Time: 1.5 sec
    Cooldown Time: 1.5 sec
    action attack or cast time uses animation length [1]
    projectile uses contact position [1]
    skill can fire wand projectiles [1]
    use scaled contact offset [1]
    GASkeletalKnightShieldBash
    Triggerable, Attack
    Base Damage: 420–629
    Critical Hit Chance: 5%
    Attack Damage: 125%
    Attack Time: 1.5 sec
    Cooldown Time: 6.5 sec
    Deals 25% more Attack Damage
    action attack or cast time uses animation length [1]
    is area damage [1]
    MPSSkeletalKnightShieldProjectile
    Spell, Projectile, ProjectilesFromUser, Triggerable, Damage
    Critical Hit Chance: 5%
    Cast Time: 1 sec
    Cooldown Time: 0.5 sec
    Deals 133.9 to 200.9 Physical Damage
    Deals 133.9 to 200.9 Fire Damage
    action attack or cast time uses animation length [1]
    base is projectile [1]
    maintain projectile direction when using contact position [1]
    monster projectile variation [1111]
    projectile spread radius [3]
    projectile uses contact position [1]
    spell maximum action distance +% [-30]
    GASkeletalKnightShieldBashImpact
    Triggerable, Attack
    Base Damage: 420–629
    Critical Hit Chance: 5%
    Attack Damage: 125%
    Attack Time: 1.5 sec
    Deals 25% more Attack Damage
    action attack or cast time uses animation length [1]
    is area damage [1]

    Object Type

    version 2
    extends "Metadata/Monsters/Monster"
    
    Transitionable
    {
    	
    }
    
    Actor
    {
    	basic_action = "Emerge"
    	basic_action = "Revive"
    }
    
    
    StateMachine
    {
    	define_shared_state = "ghostflame;"
    }
    
    Stats
    {
    	set_base_heavy_stun_duration_ms = 2950
    }

    Object Type Codes

    version 2
    extends "Metadata/Monsters/Monster"
    
    Transitionable
    {
    
    	on_transition =
    	"
    		Roll( 1, 2, { PlayEffect( 'Metadata/Monsters/SkeletalKnight/SkeletalKnightAggroAudio.ao' ); } );
    	"
    }
    
    Animated
    {
    
    	preload_animated_object = "Metadata/Monsters/SkeletalKnight/SkeletalKnightAggroAudio.ao"
    
    }
    
    StateMachine
    {
    	on_or_create_state_ghostflame_0 = "RemoveEffectPack( 'Metadata/Effects/Spells/monsters_effects/Act1_FOUR/SkeletalKnight/epk/ghostflame_energy.epk' );"
    	on_or_create_state_ghostflame_1 = "AddEffectPack( 'Metadata/Effects/Spells/monsters_effects/Act1_FOUR/SkeletalKnight/epk/ghostflame_energy.epk' );"
    }
    
    Life
    {
    	on_death = "SetLightState( on_death, 1.25 );"
    	on_spawned_dead = "SetLightState( on_death );"
    	on_revive = "SetLightState( alive, 1.5 );"
    }
    
    Functions
    {
    	blocked = "AddEffectPackToVisualSlotAttachedObject( BlockedHitSkeletalKnight, OffHand );"
    }
    -- src\Data\Spectres.lua
    minions["Metadata/Monsters/SkeletalKnight/SkeletalKnightLandmark"] = {
        name = "Eternal Knight",
        life = 2.25,
        fireResist = 0,
        coldResist = 0,
        lightningResist = 0,
        chaosResist = 0,
        damage = 2.25,
        damageSpread = 0.2,
        attackTime = 1.5,
        attackRange = 15,
        accuracy = 1,
        weaponType2 = "Shield",
        skillList = {
            "MeleeAtAnimationSpeed",
            "MPSSkeletalKnightShieldProjectile",
            "GASkeletalKnightShieldBash",
            "GASkeletalKnightShieldBashImpact",
            "SkeletalKnightCleave",
        },
        modList = {
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MeleeAtAnimationSpeed"] = {
        name = "Basic Attack",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.RangedAttack] = true,
            [SkillType.MirageArcherCanUse] = true,
            [SkillType.Projectile] = true,
            [SkillType.MeleeSingleTarget] = true,
            [SkillType.Melee] = true,
            [SkillType.ProjectilesFromUser] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            melee = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "skill_can_fire_arrows",
            "skill_can_fire_wand_projectiles",
            "action_attack_or_cast_time_uses_animation_length",
            "projectile_uses_contact_position",
            "use_scaled_contact_offset",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MPSSkeletalKnightShieldProjectile"] = {
        name = "MPSSkeletalKnightShieldProjectile",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Spell] = true,
            [SkillType.Projectile] = true,
            [SkillType.ProjectilesFromUser] = true,
            [SkillType.Triggerable] = true,
            [SkillType.Damage] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            spell = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_fire_damage",
            "spell_maximum_base_fire_damage",
            "spell_minimum_base_physical_damage",
            "spell_maximum_base_physical_damage",
            "monster_projectile_variation",
            "spell_maximum_action_distance_+%",
            "projectile_spread_radius",
            "base_is_projectile",
            "projectile_uses_contact_position",
            "maintain_projectile_direction_when_using_contact_position",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {0.40000000596046, 0.60000002384186, 0.40000000596046, 0.60000002384186, 1111, -30, 3, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3, 3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GASkeletalKnightShieldBash"] = {
        name = "GASkeletalKnightShieldBash",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Attack] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {baseMultiplier = 1.25, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GASkeletalKnightShieldBashImpact"] = {
        name = "GASkeletalKnightShieldBashImpact",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Attack] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {baseMultiplier = 1.25, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["SkeletalKnightCleave"] = {
        name = "Basic Attack",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.RangedAttack] = true,
            [SkillType.MirageArcherCanUse] = true,
            [SkillType.Projectile] = true,
            [SkillType.MeleeSingleTarget] = true,
            [SkillType.Melee] = true,
            [SkillType.ProjectilesFromUser] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            melee = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "skill_can_fire_arrows",
            "skill_can_fire_wand_projectiles",
            "action_attack_or_cast_time_uses_animation_length",
            "projectile_uses_contact_position",
            "use_scaled_contact_offset",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    
    100% Chance to Block Attack Damage
    +25% to maximum Block chance
    FamilyMonsterBlock
    DomainsMonster (3)
    GenerationTypeUnique (3)
    Req. level1
    Stats
  • monster base block % Min: 100 Max: 100 Global
  • additional maximum block % Min: 25 Max: 25 Global
  • Craft Tagsblock
    Eternal Knight
    Undead
    100% Chance to Block Attack Damage
    +25% to maximum Block chance
    monster slain flask charges granted +% [300]
    SpectreY
    Tags2HSharpMetal_onhit_audio, allows_additional_projectiles, allows_inc_aoe, bones, humanoid, melee, monster_blocks_damage, not_dex, not_int, physical_affinity, skeleton, undead, very_slow_movement
    Life
    225%
    Armour
    +80%
    Resistance
    0 0 0 0
    Damage
    225%
    Accuracy
    100%
    5%
    Attack Distance
    5 ~ 15
    Attack Time
    1.5 Second
    Damage Spread
    ±20%
    Experience
    225%
    Model Size
    100%
    Type
    SkeletalKnight
    Metadata
    SkeletalKnightBossMinion
    Level
    68
    Life
    17,453
    Armour
    4,343
    Evasion Rating
    708
    Damage
    525
    Spell Damage
    525
    Accuracy
    2,464
    Attack Time
    1.5
    Experience
    64,427
    Minion Life
    15,593
    Minion Damage
    2,180
    Minion Armour
    8,204
    MeleeAtAnimationSpeed
    Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
    Basic Attack
    Base Damage: 420–629
    Critical Hit Chance: 5%
    Attack Time: 1.5 sec
    action attack or cast time uses animation length [1]
    projectile uses contact position [1]
    skill can fire wand projectiles [1]
    use scaled contact offset [1]
    SkeletalKnightCleave
    Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
    Basic Attack
    Base Damage: 420–629
    Critical Hit Chance: 5%
    Attack Time: 1.5 sec
    Cooldown Time: 1.5 sec
    action attack or cast time uses animation length [1]
    projectile uses contact position [1]
    skill can fire wand projectiles [1]
    use scaled contact offset [1]
    GASkeletalKnightShieldBash
    Triggerable, Attack
    Base Damage: 420–629
    Critical Hit Chance: 5%
    Attack Damage: 125%
    Attack Time: 1.5 sec
    Cooldown Time: 6.5 sec
    Deals 25% more Attack Damage
    action attack or cast time uses animation length [1]
    is area damage [1]
    MPSSkeletalKnightShieldProjectile
    Spell, Projectile, ProjectilesFromUser, Triggerable, Damage
    Critical Hit Chance: 5%
    Cast Time: 1 sec
    Cooldown Time: 0.5 sec
    Deals 133.9 to 200.9 Physical Damage
    Deals 133.9 to 200.9 Fire Damage
    action attack or cast time uses animation length [1]
    base is projectile [1]
    maintain projectile direction when using contact position [1]
    monster projectile variation [1111]
    projectile spread radius [3]
    projectile uses contact position [1]
    spell maximum action distance +% [-30]
    GASkeletalKnightShieldBashImpact
    Triggerable, Attack
    Base Damage: 420–629
    Critical Hit Chance: 5%
    Attack Damage: 125%
    Attack Time: 1.5 sec
    Deals 25% more Attack Damage
    action attack or cast time uses animation length [1]
    is area damage [1]

    Object Type

    version 2
    extends "Metadata/Monsters/SkeletalKnight/SkeletalKnight"
    
    Positioned
    {
    	collision_hull_type = "projectile"
    	force_placement = true
    }
    
    StateMachine
    {
    	define_shared_state = "make_walk;"
    	on_or_create_state_make_walk_1 = "OverrideBaseHullType( walk );"
    }

    Object Type Codes

    version 2
    extends "Metadata/Monsters/SkeletalKnight/SkeletalKnight"
    -- src\Data\Spectres.lua
    minions["Metadata/Monsters/SkeletalKnight/SkeletalKnightBossMinion"] = {
        name = "Eternal Knight",
        life = 2.25,
        fireResist = 0,
        coldResist = 0,
        lightningResist = 0,
        chaosResist = 0,
        damage = 2.25,
        damageSpread = 0.2,
        attackTime = 1.5,
        attackRange = 15,
        accuracy = 1,
        weaponType2 = "Shield",
        skillList = {
            "MeleeAtAnimationSpeed",
            "MPSSkeletalKnightShieldProjectile",
            "GASkeletalKnightShieldBash",
            "GASkeletalKnightShieldBashImpact",
            "SkeletalKnightCleave",
        },
        modList = {
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MeleeAtAnimationSpeed"] = {
        name = "Basic Attack",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.RangedAttack] = true,
            [SkillType.MirageArcherCanUse] = true,
            [SkillType.Projectile] = true,
            [SkillType.MeleeSingleTarget] = true,
            [SkillType.Melee] = true,
            [SkillType.ProjectilesFromUser] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            melee = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "skill_can_fire_arrows",
            "skill_can_fire_wand_projectiles",
            "action_attack_or_cast_time_uses_animation_length",
            "projectile_uses_contact_position",
            "use_scaled_contact_offset",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MPSSkeletalKnightShieldProjectile"] = {
        name = "MPSSkeletalKnightShieldProjectile",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Spell] = true,
            [SkillType.Projectile] = true,
            [SkillType.ProjectilesFromUser] = true,
            [SkillType.Triggerable] = true,
            [SkillType.Damage] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            spell = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_fire_damage",
            "spell_maximum_base_fire_damage",
            "spell_minimum_base_physical_damage",
            "spell_maximum_base_physical_damage",
            "monster_projectile_variation",
            "spell_maximum_action_distance_+%",
            "projectile_spread_radius",
            "base_is_projectile",
            "projectile_uses_contact_position",
            "maintain_projectile_direction_when_using_contact_position",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {0.40000000596046, 0.60000002384186, 0.40000000596046, 0.60000002384186, 1111, -30, 3, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3, 3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GASkeletalKnightShieldBash"] = {
        name = "GASkeletalKnightShieldBash",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Attack] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {baseMultiplier = 1.25, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GASkeletalKnightShieldBashImpact"] = {
        name = "GASkeletalKnightShieldBashImpact",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Attack] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {baseMultiplier = 1.25, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["SkeletalKnightCleave"] = {
        name = "Basic Attack",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.RangedAttack] = true,
            [SkillType.MirageArcherCanUse] = true,
            [SkillType.Projectile] = true,
            [SkillType.MeleeSingleTarget] = true,
            [SkillType.Melee] = true,
            [SkillType.ProjectilesFromUser] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            melee = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "skill_can_fire_arrows",
            "skill_can_fire_wand_projectiles",
            "action_attack_or_cast_time_uses_animation_length",
            "projectile_uses_contact_position",
            "use_scaled_contact_offset",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    
    100% Chance to Block Attack Damage
    +25% to maximum Block chance
    FamilyMonsterBlock
    DomainsMonster (3)
    GenerationTypeUnique (3)
    Req. level1
    Stats
  • monster base block % Min: 100 Max: 100 Global
  • additional maximum block % Min: 25 Max: 25 Global
  • Craft Tagsblock
    monster slain flask charges granted +% [300]
    FamilyMonsterSlainFlaskCharges
    DomainsMonster (3)
    GenerationTypeUnique (3)
    Req. level1
    Stats
  • monster slain flask charges granted +% Min: 300 Max: 300 Global
  • Craft Tagsflask
    keyval
    Stats.item_drop_slots1
    Stats.energy_shield_recharge_rate_per_minute_%750
    Stats.base_maximum_mana200
    Stats.maximum_physical_damage_reduction_%75
    Stats.base_maximum_all_resistances_%75
    Stats.monster_base_flask_charges_percent_of_monster_power50
    Stats.base_critical_hit_damage_bonus30
    Stats.max_endurance_charges3
    Stats.max_frenzy_charges3
    Stats.max_power_charges3
    Stats.object_inherent_base_maximum_block_%_from_ot50
    Stats.movement_velocity_cap128
    Stats.max_azurite_debuff_stacks10
    Stats.ignore_skill_weapon_restrictions1
    Stats.melee_hit_damage_stun_multiplier_+%_final_from_ot33
    Stats.physical_hit_damage_stun_multiplier_+%_final_from_ot100
    Stats.scale_melee_range_to_actor_scale1
    Stats.use_melee_pattern_range1
    Stats.melee_swing_not_scaled_by_area_modifiers1
    Stats.actor_scale_+%_limit200
    Stats.base_heavy_stun_duration_ms2950
    Stats.melee_defer_damage_prediction1
    Stats.poise_decay_delay_ms8000
    Stats.poise_decay_%_per_second5
    Stats.base_block_angle_degrees180
    Stats.action_attack_or_cast_time_uses_animation_length1
    Stats.slow_potency_+%_final_per_additional_player-10
    Stats.check_for_targets_between_initiator_and_projectile_source1
    Stats.maximum_life_+%_final_per_additional_player50
    Stats.maximum_energy_shield_+%_final_per_additional_player50
    Stats.poise_threshold_+%_final_per_additional_player50
    Stats.stun_base_duration_override_ms500
    Stats.bleeding_moving_damage_%_of_base_override200
    ObjectMagicProperties.stat_description_listMetadata/StatDescriptions/monster_stat_descriptions.csd
    Positioned.blockingtrue
    Positioned.team0
    Positioned.serialise_collidabletrue
    Positioned.collision_hull_typeprojectile
    Positioned.force_placementtrue
    BaseEvents.server_onlytrue
    Actor.basic_actionMove, MoveForced, MoveToFormation, Flee, StrafeLeft, StrafeRight, StrafeRandom, Advance, DoNothing, MonsterPickup, MinionInteraction, Emerge, Revive
    Actor.slow_animations_go_to_idlefalse
    StateMachine.define_shared_stateghostflame;, make_walk;
    StateMachine.on_or_create_state_make_walk_1OverrideBaseHullType( walk );
    Eternal Knight
    Undead
    100% Chance to Block Attack Damage
    +25% to maximum Block chance
    SpectreN
    Tags2HSharpMetal_onhit_audio, allows_additional_projectiles, allows_inc_aoe, bones, humanoid, melee, monster_blocks_damage, not_dex, not_int, physical_affinity, skeleton, undead, very_slow_movement
    Packs
  • Eternal Knight, Risen Rattler, Risen Rattler, Risen Rattler
  • Life
    225%
    Armour
    +80%
    Resistance
    0 0 0 0
    Damage
    225%
    Accuracy
    100%
    5%
    Attack Distance
    5 ~ 15
    Attack Time
    1.5 Second
    Damage Spread
    ±20%
    Experience
    225%
    Model Size
    100%
    Type
    SkeletalKnight
    Metadata
    SkeletalKnightStrongbox
    Level
    68
    Life
    17,453
    Armour
    4,343
    Evasion Rating
    708
    Damage
    525
    Spell Damage
    525
    Accuracy
    2,464
    Attack Time
    1.5
    Experience
    64,427
    Minion Life
    15,593
    Minion Damage
    2,180
    Minion Armour
    8,204
    MeleeAtAnimationSpeed
    Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
    Basic Attack
    Base Damage: 420–629
    Critical Hit Chance: 5%
    Attack Time: 1.5 sec
    action attack or cast time uses animation length [1]
    projectile uses contact position [1]
    skill can fire wand projectiles [1]
    use scaled contact offset [1]
    SkeletalKnightCleave
    Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
    Basic Attack
    Base Damage: 420–629
    Critical Hit Chance: 5%
    Attack Time: 1.5 sec
    Cooldown Time: 1.5 sec
    action attack or cast time uses animation length [1]
    projectile uses contact position [1]
    skill can fire wand projectiles [1]
    use scaled contact offset [1]
    GASkeletalKnightShieldBash
    Triggerable, Attack
    Base Damage: 420–629
    Critical Hit Chance: 5%
    Attack Damage: 125%
    Attack Time: 1.5 sec
    Cooldown Time: 6.5 sec
    Deals 25% more Attack Damage
    action attack or cast time uses animation length [1]
    is area damage [1]
    MPSSkeletalKnightShieldProjectile
    Spell, Projectile, ProjectilesFromUser, Triggerable, Damage
    Critical Hit Chance: 5%
    Cast Time: 1 sec
    Cooldown Time: 0.5 sec
    Deals 133.9 to 200.9 Physical Damage
    Deals 133.9 to 200.9 Fire Damage
    action attack or cast time uses animation length [1]
    base is projectile [1]
    maintain projectile direction when using contact position [1]
    monster projectile variation [1111]
    projectile spread radius [3]
    projectile uses contact position [1]
    spell maximum action distance +% [-30]
    GASkeletalKnightShieldBashImpact
    Triggerable, Attack
    Base Damage: 420–629
    Critical Hit Chance: 5%
    Attack Damage: 125%
    Attack Time: 1.5 sec
    Deals 25% more Attack Damage
    action attack or cast time uses animation length [1]
    is area damage [1]

    Object Type

    version 2
    extends "Metadata/Monsters/Monster"
    
    Transitionable
    {
    	
    }
    
    Actor
    {
    	basic_action = "Emerge"
    	basic_action = "Revive"
    }
    
    
    StateMachine
    {
    	define_shared_state = "ghostflame;"
    }
    
    Stats
    {
    	set_base_heavy_stun_duration_ms = 2950
    }

    Object Type Codes

    version 2
    extends "Metadata/Monsters/Monster"
    
    Transitionable
    {
    
    	on_transition =
    	"
    		Roll( 1, 2, { PlayEffect( 'Metadata/Monsters/SkeletalKnight/SkeletalKnightAggroAudio.ao' ); } );
    	"
    }
    
    Animated
    {
    
    	preload_animated_object = "Metadata/Monsters/SkeletalKnight/SkeletalKnightAggroAudio.ao"
    
    }
    
    StateMachine
    {
    	on_or_create_state_ghostflame_0 = "RemoveEffectPack( 'Metadata/Effects/Spells/monsters_effects/Act1_FOUR/SkeletalKnight/epk/ghostflame_energy.epk' );"
    	on_or_create_state_ghostflame_1 = "AddEffectPack( 'Metadata/Effects/Spells/monsters_effects/Act1_FOUR/SkeletalKnight/epk/ghostflame_energy.epk' );"
    }
    
    Life
    {
    	on_death = "SetLightState( on_death, 1.25 );"
    	on_spawned_dead = "SetLightState( on_death );"
    	on_revive = "SetLightState( alive, 1.5 );"
    }
    
    Functions
    {
    	blocked = "AddEffectPackToVisualSlotAttachedObject( BlockedHitSkeletalKnight, OffHand );"
    }
    -- src\Data\Spectres.lua
    minions["Metadata/Monsters/SkeletalKnight/SkeletalKnightStrongbox"] = {
        name = "Eternal Knight",
        life = 2.25,
        fireResist = 0,
        coldResist = 0,
        lightningResist = 0,
        chaosResist = 0,
        damage = 2.25,
        damageSpread = 0.2,
        attackTime = 1.5,
        attackRange = 15,
        accuracy = 1,
        weaponType2 = "Shield",
        skillList = {
            "MeleeAtAnimationSpeed",
            "MPSSkeletalKnightShieldProjectile",
            "GASkeletalKnightShieldBash",
            "GASkeletalKnightShieldBashImpact",
            "SkeletalKnightCleave",
        },
        modList = {
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MeleeAtAnimationSpeed"] = {
        name = "Basic Attack",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.RangedAttack] = true,
            [SkillType.MirageArcherCanUse] = true,
            [SkillType.Projectile] = true,
            [SkillType.MeleeSingleTarget] = true,
            [SkillType.Melee] = true,
            [SkillType.ProjectilesFromUser] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            melee = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "skill_can_fire_arrows",
            "skill_can_fire_wand_projectiles",
            "action_attack_or_cast_time_uses_animation_length",
            "projectile_uses_contact_position",
            "use_scaled_contact_offset",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MPSSkeletalKnightShieldProjectile"] = {
        name = "MPSSkeletalKnightShieldProjectile",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Spell] = true,
            [SkillType.Projectile] = true,
            [SkillType.ProjectilesFromUser] = true,
            [SkillType.Triggerable] = true,
            [SkillType.Damage] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            spell = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_fire_damage",
            "spell_maximum_base_fire_damage",
            "spell_minimum_base_physical_damage",
            "spell_maximum_base_physical_damage",
            "monster_projectile_variation",
            "spell_maximum_action_distance_+%",
            "projectile_spread_radius",
            "base_is_projectile",
            "projectile_uses_contact_position",
            "maintain_projectile_direction_when_using_contact_position",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {0.40000000596046, 0.60000002384186, 0.40000000596046, 0.60000002384186, 1111, -30, 3, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3, 3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GASkeletalKnightShieldBash"] = {
        name = "GASkeletalKnightShieldBash",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Attack] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {baseMultiplier = 1.25, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GASkeletalKnightShieldBashImpact"] = {
        name = "GASkeletalKnightShieldBashImpact",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Attack] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "is_area_damage",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {baseMultiplier = 1.25, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["SkeletalKnightCleave"] = {
        name = "Basic Attack",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.RangedAttack] = true,
            [SkillType.MirageArcherCanUse] = true,
            [SkillType.Projectile] = true,
            [SkillType.MeleeSingleTarget] = true,
            [SkillType.Melee] = true,
            [SkillType.ProjectilesFromUser] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            melee = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "skill_can_fire_arrows",
            "skill_can_fire_wand_projectiles",
            "action_attack_or_cast_time_uses_animation_length",
            "projectile_uses_contact_position",
            "use_scaled_contact_offset",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    
    100% Chance to Block Attack Damage
    +25% to maximum Block chance
    FamilyMonsterBlock
    DomainsMonster (3)
    GenerationTypeUnique (3)
    Req. level1
    Stats
  • monster base block % Min: 100 Max: 100 Global
  • additional maximum block % Min: 25 Max: 25 Global
  • Craft Tagsblock
    Edit

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