SpectreN
AreaVolcanic Warrens, The Khari Crossing, The Galai Gates, The Ziggurat Refuge
Tagsallows_inc_aoe, construct, 火焰, fire_affinity, melee, MonsterBlunt_onhit_audio, not_dex, not_int, physical_affinity, very_slow_movement
Packs
  • Volcanic Warrens: Volcanic Golem
  • The Khari Crossing: Volcanic Golem
  • The Galai Gates: Volcanic Golem
  • The Ziggurat Refuge: Volcanic Golem, Tectonic Golem, 掠虫傀儡
  • 生命
    250%
    [护甲]
    +100%
    抗性
    75 -30 0 0
    伤害
    213%
    命中
    100%
    Critical Hits Chance
    5%
    Critical Damage Bonus
    +30%
    Attack Distance
    6 ~ 17
    攻击间隔
    1.5 Second
    Damage Spread
    ±20%
    经验值
    250%
    Model Size
    110%
    Type
    VolcanicQuakeGolem
    Metadata
    VolcanicQuakeGolem
    等级
    65
    生命
    16,283
    [护甲]
    4,046
    伤害
    452
    法术伤害
    452
    命中
    2,214
    攻击间隔
    1.5
    经验值
    53,768
    召唤物生命
    15,705
    召唤物伤害
    1,766
    召唤物护甲
    8,092
    GAVolcanicGolemMelee
    可触发, 攻击
    Base Damage: 362–543
    暴击几率: 5%
    攻击间隔: 1.5 秒
    物理伤害的 60% 转化为火焰伤害
    is area damage [1]
    voll slam damage +% final at centre [20]
    EAASaltGolemSlamRuckus
    冷却时间: 12 秒
    action attack or cast time uses animation length [1]
    attack maximum action distance + [-4]
    SOVolcanicGolemGroundFissure
    可触发
    action attack or cast time uses animation length [1]
    GAVolcanicGolemEQSmall
    可触发, 攻击
    Base Damage: 362–543
    暴击几率: 5%
    攻击间隔: 1.5 秒
    伤害总降 30%
    物理伤害的 60% 转化为火焰伤害
    is area damage [1]
    voll slam damage +% final at centre [20]
    GAVolcanicGolemEQLarge
    可触发, 攻击
    Base Damage: 362–543
    暴击几率: 5%
    攻击伤害: 250%
    攻击间隔: 1.5 秒
    伤害总降 30%
    攻击伤害总增 150%
    物理伤害的 60% 转化为火焰伤害
    is area damage [1]
    voll slam damage +% final at centre [20]
    GAVolcanicQuakeSlam
    可触发, 攻击
    Base Damage: 362–543
    暴击几率: 5%
    攻击伤害: 160%
    攻击间隔: 1.5 秒
    伤害总降 30%
    攻击伤害总增 60%
    物理伤害的 50% 转化为火焰伤害
    action attack or cast time uses animation length [1]
    is area damage [1]
    GSVolcanicQuakePulse
    可触发, 法术, 伤害
    施放间隔: 5.67 秒
    造成 314.2 - 471.2 火焰伤害
    is area damage [1]
    EAAVolcanicGolemPulse
    冷却时间: 12 秒
    +12 近战打击范围
    action attack or cast time uses animation length [1]
    skill cannot be interrupted [1]
    RattleCageChangeStance
    冷却时间: 25 秒
    skill cannot be interrupted [1]
    GSVolcanicGolemDeathExplode
    可触发, 法术, 伤害
    施放间隔: 1 秒
    造成 558.5 - 837.8 火焰伤害
    始终造成点燃
    is area damage [1]

    Object Type

    Object Type Codes

     
    -- src\Data\Spectres.lua
    minions["Metadata/Monsters/SaltGolem/VolcanicQuakeGolem"] = {
        name = "Volcanic Golem",
        life = 2.5,
        fireResist = 0,
        coldResist = 0,
        lightningResist = 0,
        chaosResist = 0,
        damage = 2.13,
        damageSpread = 0.2,
        attackTime = 1.5,
        attackRange = 17,
        accuracy = 1,
        skillList = {
            "GAVolcanicGolemMelee",
            "GAVolcanicGolemEQSmall",
            "GAVolcanicGolemEQLarge",
            "GAVolcanicQuakeSlam",
            "GSVolcanicQuakePulse",
            "EAAVolcanicGolemPulse",
            "EAASaltGolemSlamRuckus",
            "SOVolcanicGolemGroundFissure",
            "RattleCageChangeStance",
            "GSVolcanicGolemDeathExplode",
        },
        modList = {
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GAVolcanicGolemMelee"] = {
        name = "GAVolcanicGolemMelee",
        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 = {
            "active_skill_base_physical_damage_%_to_convert_to_fire",
            "voll_slam_damage_+%_final_at_centre",
            "is_area_damage",
        },
        levels = {
            [1] = {60, 20, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GAVolcanicGolemEQSmall"] = {
        name = "GAVolcanicGolemEQSmall",
        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 = {
            "active_skill_damage_+%_final",
            "active_skill_base_physical_damage_%_to_convert_to_fire",
            "voll_slam_damage_+%_final_at_centre",
            "is_area_damage",
        },
        levels = {
            [1] = {-30, 60, 20, levelRequirement = 1, statInterpolation = {2},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GAVolcanicGolemEQLarge"] = {
        name = "GAVolcanicGolemEQLarge",
        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 = {
            "active_skill_damage_+%_final",
            "active_skill_base_physical_damage_%_to_convert_to_fire",
            "voll_slam_damage_+%_final_at_centre",
            "is_area_damage",
        },
        levels = {
            [1] = {-30, 60, 20, baseMultiplier = 2.5, levelRequirement = 1, statInterpolation = {2},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GAVolcanicQuakeSlam"] = {
        name = "GAVolcanicQuakeSlam",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Attack] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 3,
        baseFlags = {
            attack = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "active_skill_damage_+%_final",
            "active_skill_base_physical_damage_%_to_convert_to_fire",
            "action_attack_or_cast_time_uses_animation_length",
            "is_area_damage",
        },
        levels = {
            [1] = {-30, 50, baseMultiplier = 1.6, levelRequirement = 1, statInterpolation = {2},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSVolcanicQuakePulse"] = {
        name = "GSVolcanicQuakePulse",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Spell] = true,
            [SkillType.Damage] = true,
        },
        statDescriptionScope = "geometry_spell",
        castTime = 5.67,
        baseFlags = {
            spell = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_fire_damage",
            "spell_maximum_base_fire_damage",
            "is_area_damage",
        },
        levels = {
            [1] = {0.80000001192093, 1.2000000476837, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["EAAVolcanicGolemPulse"] = {
        name = "EAAVolcanicGolemPulse",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 5.67,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "melee_range_+",
            "action_attack_or_cast_time_uses_animation_length",
            "skill_cannot_be_interrupted",
        },
        levels = {
            [1] = {12, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["EAASaltGolemSlamRuckus"] = {
        name = "EAASaltGolemSlamRuckus",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 3,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "attack_maximum_action_distance_+",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {-4, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["SOVolcanicGolemGroundFissure"] = {
        name = "SOVolcanicGolemGroundFissure",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
        },
        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["RattleCageChangeStance"] = {
        name = "RattleCageChangeStance",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 7.4,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "skill_cannot_be_interrupted",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSVolcanicGolemDeathExplode"] = {
        name = "GSVolcanicGolemDeathExplode",
        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",
            "always_ignite",
        },
        levels = {
            [1] = {0.80000001192093, 1.2000000476837, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    
    Volcanic Golem
    Construct
    SpectreN
    Tagsallows_inc_aoe, construct, 火焰, fire_affinity, melee, MonsterBlunt_onhit_audio, not_dex, not_int, physical_affinity, very_slow_movement
    生命
    250%
    [护甲]
    +100%
    抗性
    75 -30 0 0
    伤害
    213%
    命中
    100%
    Critical Hits Chance
    5%
    Critical Damage Bonus
    +30%
    Attack Distance
    6 ~ 17
    攻击间隔
    1.5 Second
    Damage Spread
    ±20%
    经验值
    250%
    Model Size
    110%
    Type
    VolcanicQuakeGolem
    Metadata
    VolcanicQuakeGolemNoEmerge
    等级
    68
    生命
    19,393
    [护甲]
    4,826
    伤害
    497
    法术伤害
    497
    命中
    2,464
    攻击间隔
    1.5
    经验值
    71,585
    召唤物生命
    17,325
    召唤物伤害
    2,063
    召唤物护甲
    9,652
    GAVolcanicGolemMelee
    可触发, 攻击
    Base Damage: 397–596
    暴击几率: 5%
    攻击间隔: 1.5 秒
    物理伤害的 60% 转化为火焰伤害
    is area damage [1]
    voll slam damage +% final at centre [20]
    EAASaltGolemSlamRuckus
    冷却时间: 12 秒
    action attack or cast time uses animation length [1]
    attack maximum action distance + [-4]
    SOVolcanicGolemGroundFissure
    可触发
    action attack or cast time uses animation length [1]
    GAVolcanicGolemEQSmall
    可触发, 攻击
    Base Damage: 397–596
    暴击几率: 5%
    攻击间隔: 1.5 秒
    伤害总降 30%
    物理伤害的 60% 转化为火焰伤害
    is area damage [1]
    voll slam damage +% final at centre [20]
    GAVolcanicGolemEQLarge
    可触发, 攻击
    Base Damage: 397–596
    暴击几率: 5%
    攻击伤害: 250%
    攻击间隔: 1.5 秒
    伤害总降 30%
    攻击伤害总增 150%
    物理伤害的 60% 转化为火焰伤害
    is area damage [1]
    voll slam damage +% final at centre [20]
    GAVolcanicQuakeSlam
    可触发, 攻击
    Base Damage: 397–596
    暴击几率: 5%
    攻击伤害: 160%
    攻击间隔: 1.5 秒
    伤害总降 30%
    攻击伤害总增 60%
    物理伤害的 50% 转化为火焰伤害
    action attack or cast time uses animation length [1]
    is area damage [1]
    GSVolcanicQuakePulse
    可触发, 法术, 伤害
    施放间隔: 5.67 秒
    造成 344.4 - 516.5 火焰伤害
    is area damage [1]
    EAAVolcanicGolemPulse
    冷却时间: 12 秒
    +12 近战打击范围
    action attack or cast time uses animation length [1]
    skill cannot be interrupted [1]
    RattleCageChangeStance
    冷却时间: 25 秒
    skill cannot be interrupted [1]
    GSVolcanicGolemDeathExplode
    可触发, 法术, 伤害
    施放间隔: 1 秒
    造成 612.2 - 918.3 火焰伤害
    始终造成点燃
    is area damage [1]

    Object Type

    Object Type Codes

     
    -- src\Data\Spectres.lua
    minions["Metadata/Monsters/SaltGolem/VolcanicQuakeGolemNoEmerge"] = {
        name = "Volcanic Golem",
        life = 2.5,
        fireResist = 0,
        coldResist = 0,
        lightningResist = 0,
        chaosResist = 0,
        damage = 2.13,
        damageSpread = 0.2,
        attackTime = 1.5,
        attackRange = 17,
        accuracy = 1,
        skillList = {
            "GAVolcanicGolemMelee",
            "GAVolcanicGolemEQSmall",
            "GAVolcanicGolemEQLarge",
            "GAVolcanicQuakeSlam",
            "GSVolcanicQuakePulse",
            "EAAVolcanicGolemPulse",
            "EAASaltGolemSlamRuckus",
            "SOVolcanicGolemGroundFissure",
            "RattleCageChangeStance",
            "GSVolcanicGolemDeathExplode",
        },
        modList = {
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GAVolcanicGolemMelee"] = {
        name = "GAVolcanicGolemMelee",
        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 = {
            "active_skill_base_physical_damage_%_to_convert_to_fire",
            "voll_slam_damage_+%_final_at_centre",
            "is_area_damage",
        },
        levels = {
            [1] = {60, 20, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GAVolcanicGolemEQSmall"] = {
        name = "GAVolcanicGolemEQSmall",
        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 = {
            "active_skill_damage_+%_final",
            "active_skill_base_physical_damage_%_to_convert_to_fire",
            "voll_slam_damage_+%_final_at_centre",
            "is_area_damage",
        },
        levels = {
            [1] = {-30, 60, 20, levelRequirement = 1, statInterpolation = {2},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GAVolcanicGolemEQLarge"] = {
        name = "GAVolcanicGolemEQLarge",
        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 = {
            "active_skill_damage_+%_final",
            "active_skill_base_physical_damage_%_to_convert_to_fire",
            "voll_slam_damage_+%_final_at_centre",
            "is_area_damage",
        },
        levels = {
            [1] = {-30, 60, 20, baseMultiplier = 2.5, levelRequirement = 1, statInterpolation = {2},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GAVolcanicQuakeSlam"] = {
        name = "GAVolcanicQuakeSlam",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Attack] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 3,
        baseFlags = {
            attack = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "active_skill_damage_+%_final",
            "active_skill_base_physical_damage_%_to_convert_to_fire",
            "action_attack_or_cast_time_uses_animation_length",
            "is_area_damage",
        },
        levels = {
            [1] = {-30, 50, baseMultiplier = 1.6, levelRequirement = 1, statInterpolation = {2},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSVolcanicQuakePulse"] = {
        name = "GSVolcanicQuakePulse",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
            [SkillType.Spell] = true,
            [SkillType.Damage] = true,
        },
        statDescriptionScope = "geometry_spell",
        castTime = 5.67,
        baseFlags = {
            spell = true,
            area = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_fire_damage",
            "spell_maximum_base_fire_damage",
            "is_area_damage",
        },
        levels = {
            [1] = {0.80000001192093, 1.2000000476837, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["EAAVolcanicGolemPulse"] = {
        name = "EAAVolcanicGolemPulse",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 5.67,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "melee_range_+",
            "action_attack_or_cast_time_uses_animation_length",
            "skill_cannot_be_interrupted",
        },
        levels = {
            [1] = {12, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["EAASaltGolemSlamRuckus"] = {
        name = "EAASaltGolemSlamRuckus",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 3,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "attack_maximum_action_distance_+",
            "action_attack_or_cast_time_uses_animation_length",
        },
        levels = {
            [1] = {-4, levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["SOVolcanicGolemGroundFissure"] = {
        name = "SOVolcanicGolemGroundFissure",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
            [SkillType.Triggerable] = true,
        },
        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["RattleCageChangeStance"] = {
        name = "RattleCageChangeStance",
        hidden = true,
        color = ,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        skillTypes = {
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 7.4,
        baseFlags = {
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "skill_cannot_be_interrupted",
        },
        levels = {
            [1] = {levelRequirement = 1, statInterpolation = {},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["GSVolcanicGolemDeathExplode"] = {
        name = "GSVolcanicGolemDeathExplode",
        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",
            "always_ignite",
        },
        levels = {
            [1] = {0.80000001192093, 1.2000000476837, levelRequirement = 1, statInterpolation = {3, 3},  cost = { }, },
        },
    }
    
    Edit

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