Zolin, Blood Priest
Humanoid
monster dropped item rarity +% [4800]
monster slain experience +% [0]
monster slain flask charges granted +% [-50]
SpectreN
AreaThe Cuachic Vault
Tags2HSharpMetal_onhit_audio, fast_movement, human, humanoid, not_str, red_blood, vaal, very_fast_movement
Life
240%
Energy Shield From Life
15%
Evasion
+33%
Resistance
0 30 0 0
Damage
300%
Accuracy
100%
Critical Hits Chance
5%
Critical Damage Bonus
+30%
Attack Distance
4 ~ 14
Attack Time
1.5 Second
Damage Spread
±20%
Experience
300%
Model Size
135%
Type
VaalBloodPriestBoss
Metadata
VaalBloodPriestBoss_
Level
56
Life
7,662
Armour
1,176
Evasion Rating
714
Energy Shield
1,352
Damage
477
Spell Damage
477
Accuracy
1,588
Attack Time
1.5
Experience
37,638
Minion Life
9,419
Minion Energy Shield
1,662
Minion Damage
1,538
Minion Armour
1,176
MeleeAtAnimationSpeedUnique
Attack, RangedAttack, MirageArcherCanUse, Projectile, MeleeSingleTarget, Melee, ProjectilesFromUser
Basic Attack
Base Damage: 381–572
Critical Hit Chance: 5%
Attack Time: 1.5 sec
action attack or cast time uses animation length [1]
monster penalty against minions damage +% final vs player minions [100]
projectile uses contact position [1]
skill can fire wand projectiles [1]
use scaled contact offset [1]
EASVaalBloodPriestBodySwap
Cooldown Time: 10 sec
Cannot be Knocked Back
Cannot be Stunned
action attack or cast time uses animation length [1]
skill cannot be interrupted [1]
EASVaalBloodPriestLifeDrain
Cooldown Time: 7.5 sec
action attack or cast time uses animation length [1]
VaalBloodPriestMiniBossSoulrend
Spell, Area, Duration, Projectile, DamageOverTime, Chaos, Multicastable, Triggerable, Trappable, Mineable, Totemable, DegenOnlySpellDamage, AreaSpell
Cast Time: 1.25 sec
Deals 218.6 Base Physical Damage per second
action attack or cast time uses animation length [1]
active skill area of effect radius +% final [-25]
base is projectile [1]
base skill effect duration [1000]
projectile uses contact position [1]
spell maximum action distance +% [-40]
EASBloodPriestBossTeleport
Cooldown Time: 10 sec
action attack or cast time uses animation length [1]
EASBloodPriestBossVolley
Cooldown Time: 14 sec
action attack or cast time uses animation length [1]
EASBloodPriestBossVolleyEnraged
Cooldown Time: 16 sec
action attack or cast time uses animation length [1]
EAABloodPriestBossSacrifice
Cooldown Time: 22 sec
action attack or cast time uses animation length [1]
MPSBloodPriestBossBloodProj
Spell, Projectile, ProjectilesFromUser, Triggerable, Damage
Critical Hit Chance: 5%
Cast Time: 1 sec
Deals 419.7 to 629.5 Physical Damage
action attack or cast time uses animation length [1]
base is projectile [1]
check for targets between initiator and projectile source [1]
distribute projectiles over contact points [1]
maintain projectile direction when using contact position [1]
monster projectile variation [1416]
projectile uses bearing as firing orientation [1]
projectile uses contact direction [1]
projectile uses contact position [1]
projectiles not offset [2]
projectiles travel at fixed height [1]
use scaled contact offset [1]
MDBloodPriestBossBloodPool
Multicastable, Triggerable
Cooldown Time: 15.5 sec
EGBloodPriestBossSacrifice
Triggerable
MDBloodPriestBossSoulCoreBeam
Multicastable, Triggerable
GSBloodTwinsSoulCoreBeamImpact
Triggerable, Spell, Damage
Critical Hit Chance: 6%
Cast Time: 1 sec
Deals 655.7 to 1967 Lightning Damage
action attack or cast time uses animation length [1]
is area damage [1]
GSBloodPriestTransformBreathe
Triggerable, Spell, Damage
Critical Hit Chance: 6%
Cast Time: 1 sec
Deals 104.9 to 157.4 Fire Damage
action attack or cast time uses animation length [1]
base skill cannot be avoided by dodge roll or blocked [1]
is area damage [1]

Object Type

version 2
extends "Metadata/Monsters/Monster"
extends "Metadata/Monsters/BossBase"

StateMachine
{
	define_shared_state =
	"
		invisible;
		elemental = 1;
	"
}

Object Type Codes

version 2
extends "Metadata/Monsters/Monster"
extends "Metadata/Monsters/BossBase"

StateMachine
{
	on_state_invisible_1 = "AddEffectPack( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/BloodPriestess/epks/teleport/quick_step_out.epk' );"
	on_state_invisible_0 = "RemoveEffectPack( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/BloodPriestess/epks/teleport/quick_step_out.epk' );AddEffectPack( 'Metadata/Effects/Spells/monsters_effects/Act3_FOUR/BloodPriestess/epks/teleport/quick_step_in.epk' );"
}
-- src\Data\Spectres.lua
minions["Metadata/Monsters/VaalMonsters/Living/BloodPriests/VaalBloodPriestBoss_"] = {
    name = "Zolin, Blood Priest",
    life = 2.4,
    energyShield = 0.15,
    fireResist = 0,
    coldResist = 0,
    lightningResist = 0,
    chaosResist = 0,
    damage = 3,
    damageSpread = 0.2,
    attackTime = 1.5,
    attackRange = 14,
    accuracy = 1,
    weaponType1 = "Dagger",
    skillList = {
        "MeleeAtAnimationSpeedUnique",
        "MPSBloodPriestBossBloodProj",
        "GSBloodTwinsSoulCoreBeamImpact",
        "GSBloodPriestTransformBreathe",
        "EASVaalBloodPriestBodySwap",
        "EASVaalBloodPriestLifeDrain",
        "EASBloodPriestBossVolley",
        "EASBloodPriestBossVolleyEnraged",
        "EAABloodPriestBossSacrifice",
        "EASBloodPriestBossTeleport",
        "MDBloodPriestBossBloodPool",
        "MDBloodPriestBossSoulCoreBeam",
        "EGBloodPriestBossSacrifice",
        "VaalBloodPriestMiniBossSoulrend",
    },
    modList = {
    },
}
-- src\Data\Skills\spectre.lua
skills["MeleeAtAnimationSpeedUnique"] = {
    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 = {
        "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
        "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] = {100, levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MPSBloodPriestBossBloodProj"] = {
    name = "MPSBloodPriestBossBloodProj",
    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_physical_damage",
        "spell_maximum_base_physical_damage",
        "monster_projectile_variation",
        "base_is_projectile",
        "action_attack_or_cast_time_uses_animation_length",
        "check_for_targets_between_initiator_and_projectile_source",
        "projectile_uses_contact_position",
        "maintain_projectile_direction_when_using_contact_position",
        "use_scaled_contact_offset",
        "projectile_uses_contact_direction",
        "projectiles_not_offset",
        "distribute_projectiles_over_contact_points",
        "projectile_uses_bearing_as_firing_orientation",
        "projectiles_travel_at_fixed_height",
        "projectiles_not_offset",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, 1416, critChance = 5, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSBloodTwinsSoulCoreBeamImpact"] = {
    name = "GSBloodTwinsSoulCoreBeamImpact",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Spell] = true,
        [SkillType.Damage] = true,
    },
    statDescriptionScope = "geometry_spell",
    castTime = 1,
    baseFlags = {
        spell = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_lightning_damage",
        "spell_maximum_base_lightning_damage",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {0.5, 1.5, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["GSBloodPriestTransformBreathe"] = {
    name = "GSBloodPriestTransformBreathe",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
        [SkillType.Spell] = true,
        [SkillType.Damage] = true,
    },
    statDescriptionScope = "geometry_spell",
    castTime = 1,
    baseFlags = {
        spell = true,
        area = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "spell_minimum_base_fire_damage",
        "spell_maximum_base_fire_damage",
        "is_area_damage",
        "action_attack_or_cast_time_uses_animation_length",
        "base_skill_cannot_be_avoided_by_dodge_roll_or_blocked",
    },
    levels = {
        [1] = {0.80000001192093, 1.2000000476837, critChance = 6, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EASVaalBloodPriestBodySwap"] = {
    name = "EASVaalBloodPriestBodySwap",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "base_cannot_be_stunned",
        "cannot_be_knocked_back",
        "skill_cannot_be_interrupted",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EASVaalBloodPriestLifeDrain"] = {
    name = "EASVaalBloodPriestLifeDrain",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 2,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EASBloodPriestBossVolley"] = {
    name = "EASBloodPriestBossVolley",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EASBloodPriestBossVolleyEnraged"] = {
    name = "EASBloodPriestBossVolleyEnraged",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EAABloodPriestBossSacrifice"] = {
    name = "EAABloodPriestBossSacrifice",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EASBloodPriestBossTeleport"] = {
    name = "EASBloodPriestBossTeleport",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MDBloodPriestBossBloodPool"] = {
    name = "MDBloodPriestBossBloodPool",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Multicastable] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["MDBloodPriestBossSoulCoreBeam"] = {
    name = "MDBloodPriestBossSoulCoreBeam",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Multicastable] = true,
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["EGBloodPriestBossSacrifice"] = {
    name = "EGBloodPriestBossSacrifice",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Triggerable] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1,
    baseFlags = {
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
    },
    levels = {
        [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
    },
}
-- src\Data\Skills\spectre.lua
skills["VaalBloodPriestMiniBossSoulrend"] = {
    name = "VaalBloodPriestMiniBossSoulrend",
    hidden = true,
    color = ,
    baseEffectiveness = 0,
    incrementalEffectiveness = 0,
    skillTypes = {
        [SkillType.Spell] = true,
        [SkillType.Area] = true,
        [SkillType.Duration] = true,
        [SkillType.Projectile] = true,
        [SkillType.DamageOverTime] = true,
        [SkillType.Chaos] = true,
        [SkillType.Multicastable] = true,
        [SkillType.Triggerable] = true,
        [SkillType.Trappable] = true,
        [SkillType.Mineable] = true,
        [SkillType.Totemable] = true,
        [SkillType.DegenOnlySpellDamage] = true,
        [SkillType.AreaSpell] = true,
    },
    statDescriptionScope = "skill_stat_descriptions",
    castTime = 1.25,
    baseFlags = {
        area = true,
        spell = true,
        projectile = true,
        duration = true,
    },
    baseMods = {
    },
    qualityStats = {
    },
    stats = {
        "base_physical_damage_to_deal_per_minute",
        "base_skill_effect_duration",
        "active_skill_area_of_effect_radius_+%_final",
        "spell_maximum_action_distance_+%",
        "base_is_projectile",
        "projectile_uses_contact_position",
        "action_attack_or_cast_time_uses_animation_length",
    },
    levels = {
        [1] = {1, 1000, -25, -40, levelRequirement = 1, statInterpolation = {3},  cost = { }, },
    },
}
monster dropped item rarity +% [4800]
monster slain experience +% [0]
FamilyMonsterActBoss
DomainsMonster (3)
GenerationTypeUnique (3)
Req. level1
Stats
  • monster slain experience +% Min: 0 Max: 0 Global
  • monster dropped item rarity +% Min: 4800 Max: 4800 Global
  • monster slain flask charges granted +% [-50]
    FamilyMonsterSlainFlaskCharges
    DomainsMonster (3)
    GenerationTypeUnique (3)
    Req. level1
    Stats
  • monster slain flask charges granted +% Min: -50 Max: -50 Global
  • Craft Tagsflask
    Zolin, Blood Priest Text Audio /79
    Name
    Bathe in a pool of your doom!

    BloodPriest_BloodPoolRandom
    Bathe in a pool of your doom!

    BloodPriest_BloodPool2
    Bathe in a pool of your doom!

    BloodPriest_BloodPool3
    Drown in the horror of your choice!
    BloodPriest_BloodPool4
    Drown in the horror of your choice!
    BloodPriest_BloodPool5
    Reverence of a time long forgotten!

    BloodPriest_BloodPool6
    Reverence of a time long forgotten!

    BloodPriest_BloodPool7
    Reverence of a time long forgotten!

    BloodPriest_BloodPool8
    Coiling misery!
    BloodPriest_BloodVolleyRandom
    Coiling misery!
    BloodPriest_BloodVolley2
    Coiling misery!
    BloodPriest_BloodVolley3
    Visceral torment!
    BloodPriest_BloodVolley4
    Visceral torment!
    BloodPriest_BloodVolley5
    Lineage of the Vaal!
    BloodPriest_BloodVolleyEnrageRandom
    Lineage of the Vaal!
    BloodPriest_BloodVolleyEnrage2
    Lineage of the Vaal!
    BloodPriest_BloodVolleyEnrage3
    Chaos unleashed!
    BloodPriest_BloodVolleyEnrage4
    Chaos unleashed!
    BloodPriest_BloodVolleyEnrage5
    Chaos unleashed!
    BloodPriest_BloodVolleyEnrage6
    Enough, we submit!
    BloodPriest_Defeat
    What nonsense do you speak?
    BloodPriest_EmergeA
    You dare open our Vault?
    BloodPriest_EmergeB
    Come sister, let us bathe in their blood.
    BloodPriest_EmergeC
    Ugh... you vile dog!
    BloodPriest_KnockdownRandom
    Ugh... you vile dog!
    BloodPriest_Knockdown2
    Ugh... how dare you!
    BloodPriest_Knockdown3
    Ugh... how dare you!
    BloodPriest_Knockdown4
    Ugh... how dare you!
    BloodPriest_Knockdown5
    You... got lucky.
    BloodPriest_Knockdown6
    You... got lucky.
    BloodPriest_Knockdown7
    We live for one another!
    BloodPriest_LifeDrainRandom
    We live for one another!
    BloodPriest_LifeDrain2
    We live for one another!
    BloodPriest_LifeDrain3
    Pact... of blood!
    BloodPriest_LifeDrain4
    Pact... of blood!
    BloodPriest_LifeDrain5
    Pact... of blood!
    BloodPriest_LifeDrain6
    Loyal transfusion!
    BloodPriest_LifeDrain7
    Loyal transfusion!
    BloodPriest_LifeDrain8
    Loyal transfusion!
    BloodPriest_LifeDrain9
    No sacrifice is too great!
    BloodPriest_SoulRendRandom
    No sacrifice is too great!
    BloodPriest_SoulRend2
    You are too slow!
    BloodPriest_TeleportRandom
    Cuachic manuevere!
    BloodPriest_Teleport2
    Cuachic manuevere!
    BloodPriest_Teleport3
    Cuachic manuevere!
    BloodPriest_Teleport4
    Our sacrifice is long remembered!
    BloodPriest_TeleportSacrificeRandom
    The power of sacrifice!
    BloodPriest_TeleportSacrifice2
    We stand the test of time!
    BloodPriest_TeleportSacrifice3
    We stand the test of time!
    BloodPriest_TeleportSacrifice4
    We stand the test of time!
    BloodPriest_TeleportSacrifice5
    I will avenge you sister!
    BloodPriestMAP_ZelinaDefeatRandom
    I will avenge you sister!
    BloodPriestMAP_ZelinaDefeat2
    I will avenge you sister!
    BloodPriestMAP_ZelinaDefeat3
    Stay strong, Zelina!
    BloodPriest_ZelinaDefeat4
    Stay strong, Zelina!
    BloodPriest_ZelinaDefeat5
    {Tlaxye' le Vaal!}
    BloodPriest_ChantARandom
    {Tlaxye' le Vaal!}
    BloodPriest_ChantA2
    {Tlaxye' le Vaal!}
    BloodPriest_ChantA3
    {Atziri le'itzil!}
    BloodPriest_ChantBRandom
    {Atziri le'itzil!}
    BloodPriest_ChantB2
    {Atziri le'itzil!}
    BloodPriest_ChantB3
    {Gyan'uks ko'janti!}
    BloodPriest_ChantCRandom
    {Gyan'uks ko'janti!}
    BloodPriest_ChantC2
    {Gyan'uks ko'janti!}
    BloodPriest_ChantC3
    {A'te ik'el!}
    BloodPriest_ChantDRandom
    {A'te ik'el!}
    BloodPriest_ChantD2
    {A'te ik'el!}
    BloodPriest_ChantD3
    {Tzokan'te ik'el!}
    BloodPriest_ChantERandom
    {Tzokan'te ik'el!}
    BloodPriest_ChantE2
    {Tzokan'te ik'el!}
    BloodPriest_ChantE3
    {Yatle yutsal!}
    BloodPriest_ChantFRandom
    {Yatle yutsal!}
    BloodPriest_ChantF2
    {Yatle yutsal!}
    BloodPriest_ChantF3
    {Tlayeb kifba!}
    BloodPriest_ChantGRandom
    {Tlayeb kifba!}
    BloodPriest_ChantG2
    {Tlayeb kifba!}
    BloodPriest_ChantG3
    {A'te yuquia!}
    BloodPriest_ChantHRandom
    {A'te yuquia!}
    BloodPriest_ChantH2
    {A'te yuquia!}
    BloodPriest_ChantH3
    Edit

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