丧神者
人形
区域: InvasionBoss
获得额外冰霜伤害, 其数值等同于物理伤害的 25%
monster casts ice spear text [1]
掉落的物品数量提高 300%
掉落的物品稀有度提高 800%
monster additional quantity of dropped items in cruel +% [300]
monster additional quantity of dropped items in merciless +% [600]
monster additional rarity of dropped items in cruel +% [300]
monster additional rarity of dropped items in merciless +% [600]
monster no map drops [1]
monster is invasion boss [1]
level 33 or lower damage +% final [-20]
level 33 or lower life +% final [-20]
Graveblood
幽魂N
地区InvasionBoss
End Game生命上限提高 50%
标签bludgeoning_weapon, 施法, cold_affinity, cursing_monster, has_one_hand_mace, has_one_handed_melee, human, humanoid, invasion_boss, light_armour, medium_height, melee, not_int, not_str, physical_affinity, ranged, red_blood, very_fast_movement
Packs
  • InvasionBoss: 丧神者, 食人族
  • 生命
    220%
    闪避值
    +15%
    异常状态临界值
    220%
    抗性
    30 30 30 20
    伤害
    160%
    命中
    100%
    暴击几率
    +5%
    暴击伤害
    +130%
    攻击距离
    4 ~ 12
    攻击间隔
    1.995 秒
    伤害分布
    ±20%
    经验值
    200%
    Model Size
    130%
    类型
    CannibalMaleBossInvasion
    Metadata
    CannibalMaleBossInvasion
    等级
    68
    生命
    14,153
    护甲
    28,790
    闪避值
    5,450
    能量护盾
    0
    伤害
    598
    法术伤害
    598
    命中
    290
    攻击间隔
    1.995
    经验值
    20,510
    异常状态临界值
    14,153
    冰缓
    45
    Shock
    45
    Brittle
    253
    Scorch
    45
    Sap
    124
    MeleeAtAnimationSpeedUnique
    攻击, 范围攻击, 技能可幻影射手, 投射物, 近战单一目标, 攻击可重复, 近战, 玩家投射物
    普通攻击
    基本伤害: 478–717
    暴击几率: 5%
    攻击间隔: 1.995 秒
    对你的敌人无情痛击。
    action attack or cast time uses animation length [1]
    projectile uses contact position [1]
    skill can fire arrows [1]
    skill can fire wand projectiles [1]
    use scaled contact offset [1]
    MonsterUpheavalInvasion
    法术, 伤害, 范围, 陷阱技能, 图腾技能, 地雷技能, 法术可重复, 可触发, 冰冷, 物理, 可齐射, 范围法术
    冰川之刺
    暴击几率: 6%
    伤害效用: 80%
    施放间隔: 0.8 秒
    从地面的一系列爆发中冒出冰结之刺,每一次都对该区域内的敌人造成伤害。
    造成 46.23 - 71.12 物理伤害
    造成 85.35 - 129.8 冰霜伤害
    施法速度加快 40%
    导致 +11 次爆发
    active skill area of effect radius +% final [12]
    is area damage [1]
    CannibalBossIceSpearInvasion
    法术, 投射物, 玩家投射物, 伤害, 陷阱技能, 图腾技能, 地雷技能, 法术可重复, 可触发, 冰冷, 可齐射
    冰矛
    暴击几率: 7%
    施放间隔: 0.85 秒
    冷却时间: 6 秒
    快速接连射出寒冰碎片,飞行较短距离后变为第二形态,加快飞行速度并能穿透敌人。
    造成 131.7 - 197.5 冰霜伤害
    技能可重复施放 4
    额外发射 3 个投射物
    施法速度加快 100%
    第二型态的暴击率提高 600%
    base is projectile [1]
    monster reverse point blank damage -% at minimum range [30]
    spell maximum action distance +% [-25]
    IceNovaOnDamageTakenInvasion
    法术, 伤害, 范围, 陷阱技能, 图腾技能, 地雷技能, 法术可重复, 可触发, 冰冷, 可齐射, 范围法术, 新星
    冰霜新星
    暴击几率: 5%
    施放间隔: 0.8 秒
    冷却时间: 3 秒
    从施法者散发出一圈寒冰之环。
    造成 625.7 - 977.6 冰霜伤害
    总共受到 35 点击中伤害时触发被辅助的法术
    基础范围为 2.6
    active skill area of effect radius +% final [246]
    cast on damage taken also tracks dot [1]
    is area damage [1]
    monster penalty against minions damage +% final vs player minions [-25]
    MonsterFrostbite
    法术, 范围, 持续时间, 陷阱技能, 图腾技能, 地雷技能, 法术可重复, 可触发, 冰冷, 可秘能爆发, 附加诅咒, 可齐射, 范围法术, InstantNoRepeatWhenHeld, InstantShiftAttackForLeftMouse, Hex
    冻伤
    施放间隔: 0.5 秒
    冷却时间: 10 秒
    诅咒一片区域的所有目标,降低它们的冰霜抗性,并使它们被击中时有几率被冻结。
    基础持续时间为 6
    被诅咒的敌人的冰霜抗性 -30%
    对抗被诅咒的敌人时,击中的冻结几率 +25%
    active skill area of effect radius +% final [9]

    Object Type

    version 2
    extends "Metadata/Monsters/Cannibal/Cannibal"
    
    Monster
    {
    	flip_enabled = false
    }

    Object Type Codes

    version 2
    extends "Metadata/Monsters/Cannibal/Cannibal"
    -- src\Data\Spectres.lua
    minions["Metadata/Monsters/Cannibal/CannibalMaleBossInvasion"] = {
        name = "Graveblood",
        life = 2.2,
        fireResist = 30,
        coldResist = 30,
        lightningResist = 30,
        chaosResist = 20,
        damage = 1.6,
        damageSpread = 0.2,
        attackTime = 1.995,
        attackRange = 12,
        accuracy = 1,
        weaponType1 = "One Hand Mace",
        skillList = {
            "IceNovaOnDamageTakenInvasion",
            "MeleeAtAnimationSpeedUnique",
            "CannibalBossIceSpearInvasion",
            "MonsterFrostbite",
            "MonsterUpheavalInvasion",
        },
        modList = {
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["IceNovaOnDamageTakenInvasion"] = {
        name = "Ice Nova",
        hidden = true,
        color = "3",
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        description = "A circle of ice expands from the caster.",
        skillTypes = {
            [SkillType.Spell] = true,
            [SkillType.Damage] = true,
            [SkillType.Area] = true,
            [SkillType.Trappable] = true,
            [SkillType.Totemable] = true,
            [SkillType.Mineable] = true,
            [SkillType.Multicastable] = true,
            [SkillType.Triggerable] = true,
            [SkillType.Cold] = true,
            [SkillType.CanRapidFire] = true,
            [SkillType.AreaSpell] = true,
            [SkillType.Nova] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 0.8,
        baseFlags = {
            area = true,
            spell = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_cold_damage",
            "spell_maximum_base_cold_damage",
            "active_skill_area_of_effect_radius_+%_final",
            "active_skill_base_area_of_effect_radius",
            "cast_on_damage_taken_%",
            "cast_on_damage_taken_threshold",
            "monster_penalty_against_minions_damage_+%_final_vs_player_minions",
            "is_area_damage",
            "cast_on_damage_taken_also_tracks_dot",
        },
        levels = {
            [1] = {0.80000001192093, 1.25, 108, 26, 100, 35, -25, levelRequirement = 4, statInterpolation = {3, 3, 1},  cost = { }, },
            [2] = {0.80000001192093, 1.25, 108, 26, 100, 35, -25, levelRequirement = 6, statInterpolation = {3, 3, 1},  cost = { }, },
            [3] = {0.80000001192093, 1.25, 108, 26, 100, 35, -25, levelRequirement = 9, statInterpolation = {3, 3, 1},  cost = { }, },
            [4] = {0.80000001192093, 1.25, 108, 26, 100, 35, -25, levelRequirement = 13, statInterpolation = {3, 3, 1},  cost = { }, },
            [5] = {0.80000001192093, 1.25, 108, 26, 100, 35, -25, levelRequirement = 17, statInterpolation = {3, 3, 1},  cost = { }, },
            [6] = {0.80000001192093, 1.25, 108, 26, 100, 35, -25, levelRequirement = 20, statInterpolation = {3, 3, 1},  cost = { }, },
            [7] = {0.80000001192093, 1.25, 108, 26, 100, 35, -25, levelRequirement = 23, statInterpolation = {3, 3, 1},  cost = { }, },
            [8] = {0.80000001192093, 1.25, 108, 26, 100, 35, -25, levelRequirement = 27, statInterpolation = {3, 3, 1},  cost = { }, },
            [9] = {0.80000001192093, 1.25, 108, 26, 100, 35, -25, levelRequirement = 30, statInterpolation = {3, 3, 1},  cost = { }, },
            [10] = {0.80000001192093, 1.25, 108, 26, 100, 35, -25, levelRequirement = 33, statInterpolation = {3, 3, 1},  cost = { }, },
            [11] = {0.80000001192093, 1.25, 154, 26, 100, 35, -25, levelRequirement = 36, statInterpolation = {3, 3, 1},  cost = { }, },
            [12] = {0.80000001192093, 1.25, 154, 26, 100, 35, -25, critChance = 5, levelRequirement = 39, statInterpolation = {3, 3, 1},  cost = { }, },
            [13] = {0.80000001192093, 1.25, 154, 26, 100, 35, -25, critChance = 5, levelRequirement = 42, statInterpolation = {3, 3, 1},  cost = { }, },
            [14] = {0.80000001192093, 1.25, 154, 26, 100, 35, -25, critChance = 5, levelRequirement = 46, statInterpolation = {3, 3, 1},  cost = { }, },
            [15] = {0.80000001192093, 1.25, 154, 26, 100, 35, -25, critChance = 5, levelRequirement = 49, statInterpolation = {3, 3, 1},  cost = { }, },
            [16] = {0.80000001192093, 1.25, 154, 26, 100, 35, -25, critChance = 5, levelRequirement = 51, statInterpolation = {3, 3, 1},  cost = { }, },
            [17] = {0.80000001192093, 1.25, 246, 26, 100, 35, -25, critChance = 5, levelRequirement = 56, statInterpolation = {3, 3, 1},  cost = { }, },
            [18] = {0.80000001192093, 1.25, 246, 26, 100, 35, -25, critChance = 5, levelRequirement = 60, statInterpolation = {3, 3, 1},  cost = { }, },
            [19] = {0.80000001192093, 1.25, 246, 26, 100, 35, -25, critChance = 5, levelRequirement = 63, statInterpolation = {3, 3, 1},  cost = { }, },
            [20] = {0.80000001192093, 1.25, 246, 26, 100, 35, -25, critChance = 5, levelRequirement = 64, statInterpolation = {3, 3, 1},  cost = { }, },
            [21] = {0.80000001192093, 1.25, 246, 26, 100, 35, -25, critChance = 5, levelRequirement = 65, statInterpolation = {3, 3, 1},  cost = { }, },
            [22] = {0.80000001192093, 1.25, 246, 26, 100, 35, -25, critChance = 5, levelRequirement = 66, statInterpolation = {3, 3, 1},  cost = { }, },
            [23] = {0.80000001192093, 1.25, 246, 26, 100, 35, -25, critChance = 5, levelRequirement = 67, statInterpolation = {3, 3, 1},  cost = { }, },
            [24] = {0.80000001192093, 1.25, 246, 26, 100, 35, -25, critChance = 5, levelRequirement = 68, statInterpolation = {3, 3, 1},  cost = { }, },
            [25] = {0.80000001192093, 1.25, 246, 26, 100, 35, -25, critChance = 5, levelRequirement = 69, statInterpolation = {3, 3, 1},  cost = { }, },
            [26] = {0.80000001192093, 1.25, 246, 26, 100, 35, -25, critChance = 5, levelRequirement = 70, statInterpolation = {3, 3, 1},  cost = { }, },
            [27] = {0.80000001192093, 1.25, 246, 26, 100, 35, -25, critChance = 5, levelRequirement = 71, statInterpolation = {3, 3, 1},  cost = { }, },
            [28] = {0.80000001192093, 1.25, 246, 26, 100, 35, -25, critChance = 5, levelRequirement = 72, statInterpolation = {3, 3, 1},  cost = { }, },
            [29] = {0.80000001192093, 1.25, 246, 26, 100, 35, -25, critChance = 5, levelRequirement = 73, statInterpolation = {3, 3, 1},  cost = { }, },
            [30] = {0.80000001192093, 1.25, 246, 26, 100, 35, -25, critChance = 5, levelRequirement = 74, statInterpolation = {3, 3, 1},  cost = { }, },
            [31] = {0.80000001192093, 1.25, 246, 26, 100, 35, -25, critChance = 5, levelRequirement = 75, statInterpolation = {3, 3, 1},  cost = { }, },
            [32] = {0.80000001192093, 1.25, 246, 26, 100, 35, -25, critChance = 5, levelRequirement = 76, statInterpolation = {3, 3, 1},  cost = { }, },
            [33] = {0.80000001192093, 1.25, 246, 26, 100, 35, -25, critChance = 5, levelRequirement = 77, statInterpolation = {3, 3, 1},  cost = { }, },
            [34] = {0.80000001192093, 1.25, 246, 26, 100, 35, -25, critChance = 5, levelRequirement = 78, statInterpolation = {3, 3, 1},  cost = { }, },
            [35] = {0.80000001192093, 1.25, 246, 26, 100, 35, -25, critChance = 5, levelRequirement = 79, statInterpolation = {3, 3, 1},  cost = { }, },
            [36] = {0.80000001192093, 1.25, 246, 26, 100, 35, -25, critChance = 5, levelRequirement = 80, statInterpolation = {3, 3, 1},  cost = { }, },
            [37] = {0.80000001192093, 1.25, 246, 26, 100, 35, -25, critChance = 5, levelRequirement = 81, statInterpolation = {3, 3, 1},  cost = { }, },
            [38] = {0.80000001192093, 1.25, 246, 26, 100, 35, -25, critChance = 5, levelRequirement = 82, statInterpolation = {3, 3, 1},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MeleeAtAnimationSpeedUnique"] = {
        name = "Default Attack",
        hidden = true,
        color = 4,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        description = "Strike your foes down with a powerful blow.",
        skillTypes = {
            [SkillType.Attack] = true,
            [SkillType.RangedAttack] = true,
            [SkillType.MirageArcherCanUse] = true,
            [SkillType.Projectile] = true,
            [SkillType.MeleeSingleTarget] = true,
            [SkillType.Multistrikeable] = 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["CannibalBossIceSpearInvasion"] = {
        name = "Ice Spear",
        hidden = true,
        color = 4,
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        description = "Launches shards of ice in rapid succession. After travelling a short distance they change to a second form, which moves much faster and pierces through enemies.",
        skillTypes = {
            [SkillType.Spell] = true,
            [SkillType.Projectile] = true,
            [SkillType.ProjectilesFromUser] = true,
            [SkillType.Damage] = true,
            [SkillType.Trappable] = true,
            [SkillType.Totemable] = true,
            [SkillType.Mineable] = true,
            [SkillType.Multicastable] = true,
            [SkillType.Triggerable] = true,
            [SkillType.Cold] = true,
            [SkillType.CanRapidFire] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 0.85,
        baseFlags = {
            spell = true,
            projectile = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_cold_damage",
            "spell_maximum_base_cold_damage",
            "number_of_additional_projectiles",
            "base_cast_speed_+%",
            "skill_repeat_count",
            "spell_maximum_action_distance_+%",
            "ice_spear_second_form_critical_strike_chance_+%",
            "monster_reverse_point_blank_damage_-%_at_minimum_range",
            "base_is_projectile",
        },
        levels = {
            [1] = {0.80000001192093, 1.2000000476837, 0, 0, 0, -25, 600, 30, levelRequirement = 4, statInterpolation = {3, 3, 1, 1, 1},  cost = { }, },
            [2] = {0.80000001192093, 1.2000000476837, 0, 20, 0, -25, 600, 30, critChance = 7, levelRequirement = 37, statInterpolation = {3, 3, 1, 1, 1},  cost = { }, },
            [3] = {0.80000001192093, 1.2000000476837, 3, 20, 0, -25, 600, 30, critChance = 7, levelRequirement = 40, statInterpolation = {3, 3, 1, 1, 1},  cost = { }, },
            [4] = {0.80000001192093, 1.2000000476837, 3, 100, 4, -25, 600, 30, critChance = 7, levelRequirement = 54, statInterpolation = {3, 3, 1, 1, 1},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MonsterFrostbite"] = {
        name = "Frostbite",
        hidden = true,
        color = "3",
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        description = "Curses all targets in an area, lowering their cold resistance and giving them a chance to be frozen when hit.",
        skillTypes = {
            [SkillType.Spell] = true,
            [SkillType.Area] = true,
            [SkillType.Duration] = true,
            [SkillType.Trappable] = true,
            [SkillType.Totemable] = true,
            [SkillType.Mineable] = true,
            [SkillType.Multicastable] = true,
            [SkillType.Triggerable] = true,
            [SkillType.Cold] = true,
            [SkillType.Cascadable] = true,
            [SkillType.AppliesCurse] = true,
            [SkillType.CanRapidFire] = true,
            [SkillType.AreaSpell] = true,
            [SkillType.InstantNoRepeatWhenHeld] = true,
            [SkillType.InstantShiftAttackForLeftMouse] = true,
            [SkillType.Hex] = true,
        },
        statDescriptionScope = "curse_skill_stat_descriptions",
        castTime = 0.5,
        baseFlags = {
            area = true,
            spell = true,
            duration = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "base_cold_damage_resistance_%",
            "base_skill_effect_duration",
            "chance_to_be_frozen_%",
            "active_skill_area_of_effect_radius_+%_final",
        },
        levels = {
            [1] = {-20, 6000, 25, 9, levelRequirement = 10, statInterpolation = {1},  cost = { }, },
            [2] = {-25, 6000, 25, 9, levelRequirement = 41, statInterpolation = {1},  cost = { }, },
            [3] = {-30, 6000, 25, 9, levelRequirement = 58, statInterpolation = {1},  cost = { }, },
            [4] = {-40, 6000, 25, 9, levelRequirement = 71, statInterpolation = {1},  cost = { }, },
        },
    }
    -- src\Data\Skills\spectre.lua
    skills["MonsterUpheavalInvasion"] = {
        name = "Glacial Cascade",
        hidden = true,
        color = "3",
        baseEffectiveness = 0,
        incrementalEffectiveness = 0,
        description = "Icicles emerge from the ground in a series of small bursts, each damaging enemies caught in the area.",
        skillTypes = {
            [SkillType.Spell] = true,
            [SkillType.Damage] = true,
            [SkillType.Area] = true,
            [SkillType.Trappable] = true,
            [SkillType.Totemable] = true,
            [SkillType.Mineable] = true,
            [SkillType.Multicastable] = true,
            [SkillType.Triggerable] = true,
            [SkillType.Cold] = true,
            [SkillType.Physical] = true,
            [SkillType.CanRapidFire] = true,
            [SkillType.AreaSpell] = true,
        },
        statDescriptionScope = "skill_stat_descriptions",
        castTime = 0.8,
        baseFlags = {
            area = true,
            spell = true,
        },
        baseMods = {
        },
        qualityStats = {
        },
        stats = {
            "spell_minimum_base_physical_damage",
            "spell_maximum_base_physical_damage",
            "spell_minimum_base_cold_damage",
            "spell_maximum_base_cold_damage",
            "upheaval_number_of_spikes",
            "base_cast_speed_+%",
            "active_skill_area_of_effect_radius_+%_final",
            "is_area_damage",
        },
        levels = {
            [1] = {0.25999999046326, 0.40000000596046, 0.47999998927116, 0.73000001907349, 6, 0, -34, levelRequirement = 4, statInterpolation = {3, 3, 3, 3, 1, 1, 1},  cost = { }, },
            [2] = {0.25999999046326, 0.40000000596046, 0.47999998927116, 0.73000001907349, 8, 20, -11, critChance = 6, levelRequirement = 36, statInterpolation = {3, 3, 3, 3, 1, 1, 1},  cost = { }, },
            [3] = {0.25999999046326, 0.40000000596046, 0.47999998927116, 0.73000001907349, 11, 40, 12, critChance = 6, levelRequirement = 56, statInterpolation = {3, 3, 3, 3, 1, 1, 1},  cost = { }, },
        },
    }
    
    获得额外冰霜伤害, 其数值等同于物理伤害的 25%
    IdMonsterImplicitCold1
    FamilyColdDamageAsPortionOfDamage
    Domains怪物 (3)
    GenerationType传奇 (3)
    Req. level1
    Stats
  • physical damage % to add as cold Min: 25 Max: 25 全域
  • Craft Tagsphysical_damage elemental_damage damage physical elemental cold
    monster casts ice spear text [1]
    IdMonsterCastsIceSpearText
    FamilyMonsterCastsIceSpearText
    Domains怪物 (3)
    GenerationType传奇 (3)
    Req. level1
    Stats
  • monster casts ice spear text Min: 1 Max: 1 全域
  • 掉落的物品数量提高 300%
    掉落的物品稀有度提高 800%
    IdMonsterInvasionBoss
    FamilyMonsterInvasionBoss
    Domains怪物 (3)
    GenerationType传奇 (3)
    Req. level1
    Stats
  • monster dropped item rarity +% Min: 800 Max: 800 全域
  • monster dropped item quantity +% Min: 300 Max: 300 全域
  • monster additional quantity of dropped items in cruel +% [300]
    monster additional quantity of dropped items in merciless +% [600]
    monster additional rarity of dropped items in cruel +% [300]
    monster additional rarity of dropped items in merciless +% [600]
    IdMonsterInvasionMercilessDrops1
    FamilyMonsterMercilessDrops
    Domains怪物 (3)
    GenerationType传奇 (3)
    Req. level1
    Stats
  • monster additional rarity of dropped items in cruel +% Min: 300 Max: 300 全域
  • monster additional quantity of dropped items in cruel +% Min: 300 Max: 300 全域
  • monster additional rarity of dropped items in merciless +% Min: 600 Max: 600 全域
  • monster additional quantity of dropped items in merciless +% Min: 600 Max: 600 全域
  • monster no map drops [1]
    IdMonsterNoMapDrops
    FamilyMonsterNoMapDrops
    Domains怪物 (3)
    GenerationType传奇 (3)
    Req. level1
    Stats
  • monster no map drops Min: 1 Max: 1 全域
  • monster is invasion boss [1]
    IdIsInvasionBoss
    FamilyMonsterIsInvasionBoss
    Domains怪物 (3)
    GenerationType传奇 (3)
    Req. level1
    Stats
  • monster is invasion boss Min: 1 Max: 1 全域
  • level 33 or lower damage +% final [-20]
    level 33 or lower life +% final [-20]
    IdMonsterLifeAndDamageLessBelowLevel33
    FamilyMoreLifeBelowLevelThreshold
    Domains怪物 (3)
    GenerationType传奇 (3)
    Req. level1
    Stats
  • level 33 or lower life +% final Min: -20 Max: -20 全域
  • level 33 or lower damage +% final Min: -20 Max: -20 全域
  • Craft Tagsresource life damage
    Edit

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