Klapperndes Experiment
Untot
monster no map drops [1]
stance movement speed +% final [-59]
stance movement speed +% final [11]
Clattering Experiment
SpectreY
Spectre OverrideMetadata/Monsters/LeagueHeist/Science/ProjectSkeletonRangedSpectre
Tagsbone_armour, bones, chaos_affinity, has_bow, humanoid, no_pantheon_mod, not_int, not_str, physical_affinity, puncturing_weapon, ranged, skeleton, slow_movement, undead
Packs
  • Ratterndes Experiment, Ratterndes Experiment, Klapperndes Experiment
  • Pestbeule, Ratterndes Experiment, Klapperndes Experiment
  • Leben
    325%
    Ausweichen
    +50%
    Ailment Threshold
    325%
    Widerstand
    0 0 40 0
    Damage
    143%
    Genauigkeit
    100%
    Kritische Trefferchance
    +5%
    Multiplikator für kritischen Treffer
    +130%
    Attack Distance
    6 ~ 60
    Attack Time
    1.5 Second
    Damage Spread
    ±20%
    Erfahrung
    130%
    Model Size
    100%
    Type
    HeistProjectSkeletonRanged
    Metadata
    ProjectSkeletonRanged
    Stufe
    68
    Leben
    20,908
    Rüstung
    28,790
    Ausweichen
    7,109
    Energieschild
    0
    Damage
    534
    Zauberschaden
    534
    Genauigkeit
    290
    Attack Time
    1.5
    Erfahrung
    13,332
    Ailment Threshold
    20,908
    Chill
    66
    Shock
    66
    Brittle
    374
    Scorch
    66
    Sap
    183
    HeistSkeletonBasicAttack
    Attack, RangedAttack, MirageArcherCanUse, Projectile, ProjectilesFromUser, Damage, Triggerable
    Base Damage: 427–641
    Kritische Trefferchance: 5%
    Attack Time: 1.5 Sek.
    base is projectile [1]
    monster projectile variation [128]
    projectile uses contact position [1]
    HeistSkeletonCausticArrow
    Attack, RangedAttack, MirageArcherCanUse, Projectile, ProjectilesFromUser, Area, Duration, Trappable, Mineable, Totemable, DamageOverTime, Chaos, Triggerable
    Ätzender Pfeil
    Base Damage: 427–641
    Kritische Trefferchance: 5%
    Angriffsschaden: 70%
    Attack Time: 1.5 Sek.
    Abklingzeit: 8 Sek.
    Feuert einen Pfeil ab, der beim Einschlag in einem Bereich Chaosschaden verursacht und ätzenden Boden erzeugt. Gegner, die auf diesem Boden stehen, erleiden Chaosschaden über Zeit.
    Verursacht 188.2 Basis-Chaosschaden pro Sekunde
    Verursacht 30% weniger Angriffsschaden
    Basisdauer beträgt 4 Sekunden
    Modifikatoren für Projektilschaden gelten für den 'Schaden über Zeit'-Effekt dieser Fertigkeit
    Verursacht 25% Eures physischen Schadens als extra Chaosschaden
    active skill area of effect radius +% final [-30]
    caustic arrow explode on hit base area of effect radius [12]
    ground caustic art variation [9]
    skill can fire arrows [1]
    supress muzzle flash [1]
    HeistSkeletonSnipe
    Attack, Projectile
    Base Damage: 427–641
    Kritische Trefferchance: 5%
    Attack Time: 1.5 Sek.
    Abklingzeit: 8 Sek.
    25% des physischen Schadens werden in Chaosschaden umgewandelt
    base is projectile [1]
    HeistSnipeAttachedPoisonGas
    Spell, Area, Damage, Triggerable, Duration, AreaSpell
    Zauberzeit: 1 Sek.
    Verursacht 420.2 Basis-Chaosschaden pro Sekunde
    Basisdauer beträgt 2 Sekunden
    active skill area of effect radius +% final [-50]
    ground caustic art variation [9]
    ChangeToStance1Heist
    skill cannot be interrupted [1]
    skill cannot be stunned [1]
    EASHeistUndeadAtFormationMarker
    Spell
    Zauberzeit: 0.3 Sek.
    Abklingzeit: 5 Sek.

    Object Type

    version 2
    extends "Metadata/Monsters/LeagueHeist/HeistSummonedMonsterBase"

    Object Type Codes

    version 2
    extends "Metadata/Monsters/LeagueHeist/HeistSummonedMonsterBase"
    
    StateMachine
    {
    	define_state = "arrow_visible = 1;"
    	on_state_arrow_visible_0 = "DetachAllOfType( Metadata/Monsters/LeagueHeist/Science/attachments/CrossbowBolt.ao );"
    	on_state_arrow_visible_1 = "AddAttached( Metadata/Monsters/LeagueHeist/Science/attachments/CrossbowBolt.ao, weapon_string_jntBnd );"
    }
    
    Animated
    {
    	on_event_remove_arrow = "SetStateTo( arrow_visible, 0 );"
    	on_event_add_arrow = "SetStateTo( arrow_visible, 1 );"
    }
    
    Life
    {
    	on_death = "DetachAllOfType( Metadata/Monsters/LeagueHeist/Science/attachments/CrossbowBolt.ao );"
    }
    -- src\Data\Spectres.lua
    minions["Metadata/Monsters/LeagueHeist/Science/ProjectSkeletonRanged"] = {
        name = "Clattering Experiment",
        life = 3.25,
        fireResist = 0,
        coldResist = 0,
        lightningResist = 40,
        chaosResist = 0,
        damage = 1.43,
        damageSpread = 0.2,
        attackTime = 1.5,
        attackRange = 60,
        accuracy = 1,
        weaponType1 = "Bow",
        skillList = {
            "HeistSkeletonCausticArrow",
            "HeistSkeletonBasicAttack",
            "HeistSnipeAttachedPoisonGas",
            "EASHeistUndeadAtFormationMarker",
            "HeistSkeletonSnipe",
            "ChangeToStance1Heist",
        },
        modList = {
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["HeistSkeletonCausticArrow"] = {
        name = "Caustic Arrow",
        hidden = true,
        color = "2",
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        description = "Fires an arrow which deals chaos damage in an area on impact, and spreads caustic ground. Enemies standing on the caustic ground take chaos damage over time.",
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.RangedAttack] = true,
            [SkillType.MirageArcherCanUse] = true,
            [SkillType.Projectile] = true,
            [SkillType.ProjectilesFromUser] = true,
            [SkillType.Area] = true,
            [SkillType.Duration] = true,
            [SkillType.Trappable] = true,
            [SkillType.Mineable] = true,
            [SkillType.Totemable] = true,
            [SkillType.DamageOverTime] = true,
            [SkillType.Chaos] = true,
            [SkillType.Triggerable] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            area = true,
            projectile = true,
            duration = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "base_chaos_damage_to_deal_per_minute",
            "base_skill_effect_duration",
            "physical_damage_%_to_add_as_chaos",
            "ground_caustic_art_variation",
            "caustic_arrow_explode_on_hit_base_area_of_effect_radius",
            "active_skill_area_of_effect_radius_+%_final",
            "projectile_damage_modifiers_apply_to_skill_dot",
            "supress_muzzle_flash",
            "skill_can_fire_arrows",
        },
        levels = {
            [1] = {1.3500000238419, 4000, 25, 9, 12, -30, baseMultiplier = 0.7, levelRequirement = 0, statInterpolation = {3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["HeistSkeletonBasicAttack"] = {
        name = "HeistSkeletonBasicAttack",
        hidden = true,
        color = 4,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.RangedAttack] = true,
            [SkillType.MirageArcherCanUse] = true,
            [SkillType.Projectile] = true,
            [SkillType.ProjectilesFromUser] = true,
            [SkillType.Damage] = true,
            [SkillType.Triggerable] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1.5,
        baseFlags = {
            attack = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "monster_projectile_variation",
            "base_is_projectile",
            "projectile_uses_contact_position",
        },
        levels = {
            [1] = {128, levelRequirement = 0, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["HeistSnipeAttachedPoisonGas"] = {
        name = "HeistSnipeAttachedPoisonGas",
        hidden = true,
        color = 4,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Spell] = true,
            [SkillType.Area] = true,
            [SkillType.Damage] = true,
            [SkillType.Triggerable] = true,
            [SkillType.Duration] = true,
            [SkillType.AreaSpell] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            area = true,
            spell = true,
            duration = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "base_chaos_damage_to_deal_per_minute",
            "ground_caustic_art_variation",
            "base_skill_effect_duration",
            "active_skill_area_of_effect_radius_+%_final",
        },
        levels = {
            [1] = {3, 9, 2000, -50, levelRequirement = 1, statInterpolation = {3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["EASHeistUndeadAtFormationMarker"] = {
        name = "EASHeistUndeadAtFormationMarker",
        hidden = true,
        color = 4,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Spell] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 0.3,
        baseFlags = {
            spell = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
        },
        levels = {
            [1] = {levelRequirement = 0, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["HeistSkeletonSnipe"] = {
        name = "HeistSkeletonSnipe",
        hidden = true,
        color = 4,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.Projectile] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "skill_physical_damage_%_to_convert_to_chaos",
            "base_is_projectile",
        },
        levels = {
            [1] = {25, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["ChangeToStance1Heist"] = {
        name = "ChangeToStance1Heist",
        hidden = true,
        color = 4,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "skill_cannot_be_interrupted",
            "skill_cannot_be_stunned",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    
    monster no map drops [1]
    IdMonsterNoMapDrops
    FamilyMonsterNoMapDrops
    DomainsMonster (3)
    GenerationTypeEinzigartig (3)
    Req. level1
    Stats
  • monster no map drops Min: 1 Max: 1 Global
  • IdNothing
    FamilyNothing
    DomainsMonster (3)
    GenerationTypeEinzigartig (3)
    Req. level1
    stance movement speed +% final [-59]
    IdStanceHeistScienceUndeadWalk
    FamilyStance
    DomainsMonster (3)
    GenerationTypeEinzigartig (3)
    Req. level1
    Stats
  • stance movement speed +% final Min: -59 Max: -59 Global
  • Craft Tagsspeed
    stance movement speed +% final [11]
    IdStanceHeistScienceUndeadJog
    FamilyStance
    DomainsMonster (3)
    GenerationTypeEinzigartig (3)
    Req. level1
    Stats
  • stance movement speed +% final Min: 11 Max: 11 Global
  • Craft Tagsspeed
    Klapperndes Experiment
    Untot
    stance movement speed +% final [-59]
    stance movement speed +% final [11]
    Clattering Experiment
    SpectreY
    Tagsbone_armour, bones, chaos_affinity, has_bow, humanoid, no_pantheon_mod, not_int, not_str, physical_affinity, puncturing_weapon, ranged, skeleton, slow_movement, undead
    Packs
  • Fleischskulpteur, Leichennäherin, Fanatischer Verwüster, Pestbeule, Ratterndes Experiment, Ratterndes Experiment, Ratterndes Experiment, Klapperndes Experiment, Heretniker, Nekrowissenschaftler, Leitender Heretniker, Leitender Nekrowissenschaftler
  • Leben
    325%
    Ausweichen
    +50%
    Ailment Threshold
    325%
    Widerstand
    0 0 40 0
    Damage
    143%
    Genauigkeit
    100%
    Kritische Trefferchance
    +5%
    Multiplikator für kritischen Treffer
    +130%
    Attack Distance
    6 ~ 60
    Attack Time
    1.5 Second
    Damage Spread
    ±20%
    Erfahrung
    130%
    Model Size
    100%
    Type
    HeistProjectSkeletonRanged
    Metadata
    ProjectSkeletonRangedSpectre
    Stufe
    68
    Leben
    20,908
    Rüstung
    28,790
    Ausweichen
    7,109
    Energieschild
    0
    Damage
    534
    Zauberschaden
    534
    Genauigkeit
    290
    Attack Time
    1.5
    Erfahrung
    13,332
    Ailment Threshold
    20,908
    Chill
    66
    Shock
    66
    Brittle
    374
    Scorch
    66
    Sap
    183
    HeistSkeletonBasicAttack
    Attack, RangedAttack, MirageArcherCanUse, Projectile, ProjectilesFromUser, Damage, Triggerable
    Base Damage: 427–641
    Kritische Trefferchance: 5%
    Attack Time: 1.5 Sek.
    base is projectile [1]
    monster projectile variation [128]
    projectile uses contact position [1]
    HeistSkeletonCausticArrow
    Attack, RangedAttack, MirageArcherCanUse, Projectile, ProjectilesFromUser, Area, Duration, Trappable, Mineable, Totemable, DamageOverTime, Chaos, Triggerable
    Ätzender Pfeil
    Base Damage: 427–641
    Kritische Trefferchance: 5%
    Angriffsschaden: 70%
    Attack Time: 1.5 Sek.
    Abklingzeit: 8 Sek.
    Feuert einen Pfeil ab, der beim Einschlag in einem Bereich Chaosschaden verursacht und ätzenden Boden erzeugt. Gegner, die auf diesem Boden stehen, erleiden Chaosschaden über Zeit.
    Verursacht 188.2 Basis-Chaosschaden pro Sekunde
    Verursacht 30% weniger Angriffsschaden
    Basisdauer beträgt 4 Sekunden
    Modifikatoren für Projektilschaden gelten für den 'Schaden über Zeit'-Effekt dieser Fertigkeit
    Verursacht 25% Eures physischen Schadens als extra Chaosschaden
    active skill area of effect radius +% final [-30]
    caustic arrow explode on hit base area of effect radius [12]
    ground caustic art variation [9]
    skill can fire arrows [1]
    supress muzzle flash [1]
    HeistSkeletonSnipe
    Attack, Projectile
    Base Damage: 427–641
    Kritische Trefferchance: 5%
    Attack Time: 1.5 Sek.
    Abklingzeit: 8 Sek.
    25% des physischen Schadens werden in Chaosschaden umgewandelt
    base is projectile [1]
    HeistSnipeAttachedPoisonGas
    Spell, Area, Damage, Triggerable, Duration, AreaSpell
    Zauberzeit: 1 Sek.
    Verursacht 420.2 Basis-Chaosschaden pro Sekunde
    Basisdauer beträgt 2 Sekunden
    active skill area of effect radius +% final [-50]
    ground caustic art variation [9]
    ChangeToStance1Heist
    skill cannot be interrupted [1]
    skill cannot be stunned [1]

    Object Type

    version 2
    extends "Metadata/Monsters/LeagueHeist/HeistMonsterSpectreBase"

    Object Type Codes

    version 2
    extends "Metadata/Monsters/LeagueHeist/HeistMonsterSpectreBase"
    
    StateMachine
    {
    	define_state = "arrow_visible = 1;"
    	on_state_arrow_visible_0 = "DetachAllOfType( Metadata/Monsters/LeagueHeist/Science/attachments/CrossbowBolt.ao );"
    	on_state_arrow_visible_1 = "AddAttached( Metadata/Monsters/LeagueHeist/Science/attachments/CrossbowBolt.ao, weapon_string_jntBnd );"
    }
    
    Animated
    {
    	on_event_remove_arrow = "SetStateTo( arrow_visible, 0 );"
    	on_event_add_arrow = "SetStateTo( arrow_visible, 1 );"
    }
    
    Life
    {
    	on_death = "DetachAllOfType( Metadata/Monsters/LeagueHeist/Science/attachments/CrossbowBolt.ao );"
    }
    -- src\Data\Spectres.lua
    minions["Metadata/Monsters/LeagueHeist/Science/ProjectSkeletonRangedSpectre"] = {
        name = "Clattering Experiment",
        life = 3.25,
        fireResist = 0,
        coldResist = 0,
        lightningResist = 40,
        chaosResist = 0,
        damage = 1.43,
        damageSpread = 0.2,
        attackTime = 1.5,
        attackRange = 60,
        accuracy = 1,
        weaponType1 = "Bow",
        skillList = {
            "HeistSkeletonCausticArrow",
            "HeistSkeletonBasicAttack",
            "HeistSnipeAttachedPoisonGas",
            "HeistSkeletonSnipe",
            "ChangeToStance1Heist",
        },
        modList = {
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["HeistSkeletonCausticArrow"] = {
        name = "Caustic Arrow",
        hidden = true,
        color = "2",
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        description = "Fires an arrow which deals chaos damage in an area on impact, and spreads caustic ground. Enemies standing on the caustic ground take chaos damage over time.",
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.RangedAttack] = true,
            [SkillType.MirageArcherCanUse] = true,
            [SkillType.Projectile] = true,
            [SkillType.ProjectilesFromUser] = true,
            [SkillType.Area] = true,
            [SkillType.Duration] = true,
            [SkillType.Trappable] = true,
            [SkillType.Mineable] = true,
            [SkillType.Totemable] = true,
            [SkillType.DamageOverTime] = true,
            [SkillType.Chaos] = true,
            [SkillType.Triggerable] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            area = true,
            projectile = true,
            duration = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "base_chaos_damage_to_deal_per_minute",
            "base_skill_effect_duration",
            "physical_damage_%_to_add_as_chaos",
            "ground_caustic_art_variation",
            "caustic_arrow_explode_on_hit_base_area_of_effect_radius",
            "active_skill_area_of_effect_radius_+%_final",
            "projectile_damage_modifiers_apply_to_skill_dot",
            "supress_muzzle_flash",
            "skill_can_fire_arrows",
        },
        levels = {
            [1] = {1.3500000238419, 4000, 25, 9, 12, -30, baseMultiplier = 0.7, levelRequirement = 0, statInterpolation = {3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["HeistSkeletonBasicAttack"] = {
        name = "HeistSkeletonBasicAttack",
        hidden = true,
        color = 4,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.RangedAttack] = true,
            [SkillType.MirageArcherCanUse] = true,
            [SkillType.Projectile] = true,
            [SkillType.ProjectilesFromUser] = true,
            [SkillType.Damage] = true,
            [SkillType.Triggerable] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1.5,
        baseFlags = {
            attack = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "monster_projectile_variation",
            "base_is_projectile",
            "projectile_uses_contact_position",
        },
        levels = {
            [1] = {128, levelRequirement = 0, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["HeistSnipeAttachedPoisonGas"] = {
        name = "HeistSnipeAttachedPoisonGas",
        hidden = true,
        color = 4,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Spell] = true,
            [SkillType.Area] = true,
            [SkillType.Damage] = true,
            [SkillType.Triggerable] = true,
            [SkillType.Duration] = true,
            [SkillType.AreaSpell] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            area = true,
            spell = true,
            duration = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "base_chaos_damage_to_deal_per_minute",
            "ground_caustic_art_variation",
            "base_skill_effect_duration",
            "active_skill_area_of_effect_radius_+%_final",
        },
        levels = {
            [1] = {3, 9, 2000, -50, levelRequirement = 1, statInterpolation = {3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["HeistSkeletonSnipe"] = {
        name = "HeistSkeletonSnipe",
        hidden = true,
        color = 4,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.Projectile] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
            attack = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "skill_physical_damage_%_to_convert_to_chaos",
            "base_is_projectile",
        },
        levels = {
            [1] = {25, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["ChangeToStance1Heist"] = {
        name = "ChangeToStance1Heist",
        hidden = true,
        color = 4,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 1,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "skill_cannot_be_interrupted",
            "skill_cannot_be_stunned",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    
    IdNothing
    FamilyNothing
    DomainsMonster (3)
    GenerationTypeEinzigartig (3)
    Req. level1
    stance movement speed +% final [-59]
    IdStanceHeistScienceUndeadWalk
    FamilyStance
    DomainsMonster (3)
    GenerationTypeEinzigartig (3)
    Req. level1
    Stats
  • stance movement speed +% final Min: -59 Max: -59 Global
  • Craft Tagsspeed
    stance movement speed +% final [11]
    IdStanceHeistScienceUndeadJog
    FamilyStance
    DomainsMonster (3)
    GenerationTypeEinzigartig (3)
    Req. level1
    Stats
  • stance movement speed +% final Min: 11 Max: 11 Global
  • Craft Tagsspeed
    Edit

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